@xopcai/xopc 0.0.75 → 0.0.77
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-Bq-2L2z0.js → agents-DN3vr8pb.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-Bq-2L2z0.js.map → agents-DN3vr8pb.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DitlAmYZ.js → apps-page-BUn41aPi.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-DitlAmYZ.js.map → apps-page-BUn41aPi.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BzJYkjyh.js → channels-settings-CYMmWDtP.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-BzJYkjyh.js.map → channels-settings-CYMmWDtP.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-status-swr-CiY7i2IN.js → channels-status-swr-sJj4ueTp.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-status-swr-CiY7i2IN.js.map → channels-status-swr-sJj4ueTp.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-api-S4gy4e5e.js → cron-api-CLxnaHdq.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-api-S4gy4e5e.js.map → cron-api-CLxnaHdq.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-7uMZvuju.js → cron-page-BAQ8xSnJ.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-7uMZvuju.js.map → cron-page-BAQ8xSnJ.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-DXGDHevt.js → dist-BfJYxiK5.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-DXGDHevt.js.map → dist-BfJYxiK5.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DYLqqlXt.js → extension-debug-page-bgvVs-Sy.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-DYLqqlXt.js.map → extension-debug-page-bgvVs-Sy.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-H9Odxw56.js → extension-page-SG4TVv-u.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-H9Odxw56.js.map → extension-page-SG4TVv-u.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-Ch6vY8Uy.js → extension-settings-page-CJZRTsjF.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-Ch6vY8Uy.js.map → extension-settings-page-CJZRTsjF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{field-primitives-CrexIsCD.js → field-primitives-Z76hyBYS.js} +2 -2
- package/dist/gateway/static/root/assets/{field-primitives-CrexIsCD.js.map → field-primitives-Z76hyBYS.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-CVGIOMMM.js → heartbeat-config-api-BqfDabSI.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-CVGIOMMM.js.map → heartbeat-config-api-BqfDabSI.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-S3bgG2JF.js → index-ChiUhJAs.js} +44 -41
- package/dist/gateway/static/root/assets/{index-S3bgG2JF.js.map → index-ChiUhJAs.js.map} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-BKpRWihz.js → logs-page-DrIMhDE2.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-BKpRWihz.js.map → logs-page-DrIMhDE2.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-BRFJ-djK.js → sessions-page-B-RGO3N0.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-BRFJ-djK.js.map → sessions-page-B-RGO3N0.js.map} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-cS13ImiU.js → settings-form-section-Csvl1iL6.js} +2 -2
- package/dist/gateway/static/root/assets/{settings-form-section-cS13ImiU.js.map → settings-form-section-Csvl1iL6.js.map} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-D99K6Jjx.js → settings-page-nxAc0ta1.js} +2 -2
- package/dist/gateway/static/root/assets/{settings-page-D99K6Jjx.js.map → settings-page-nxAc0ta1.js.map} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-CjBO9BH2.js → skills-page-dHwx2vh0.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-CjBO9BH2.js.map → skills-page-dHwx2vh0.js.map} +1 -1
- package/dist/gateway/static/root/assets/{utils-DVw8OvAC.js → utils-COYrNFF7.js} +2 -2
- package/dist/gateway/static/root/assets/{utils-DVw8OvAC.js.map → utils-COYrNFF7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BIh7mDN6.js → voice-api-key-field-5WZZaxH3.js} +2 -2
- package/dist/gateway/static/root/assets/{voice-api-key-field-BIh7mDN6.js.map → voice-api-key-field-5WZZaxH3.js.map} +1 -1
- package/dist/gateway/static/root/index.html +1 -1
- package/dist/package.js +1 -1
- package/dist/src/agent/embedded/session-manager-init.js +5 -1
- package/dist/src/agent/embedded/session-manager-init.js.map +1 -1
- package/dist/src/channels/index.js +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/service.js +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-Bq-2L2z0.js","names":["Dialog","Button","GatewayAgentRow","AgentsSettingsMessages","cn","AgentDeleteConfirmDialogProps","open","onOpenChange","busy","deletePurge","deleteTarget","deleteConfirmText","onDeleteConfirmTextChange","value","onConfirm","onCancel","a","Pick","AgentDeleteConfirmDialog","t0","$","_c","t1","Symbol","for","t2","t3","purgeDisk","removeFromConfig","t4","t5","confirmDeletePurge","confirmDelete","t6","t7","purgeConfirmHint","purgeConfirmLabel","purgeConfirmPlaceholder","replace","id","e_0","e","target","t8","createModalCancel","t9","undefined","t10","trim","toLowerCase","t11","t12","t13","t14","_temp","t15","preventDefault","Clock","FileText","Plug","Puzzle","User","UserCircle","Wrench","cn","interaction","AgentsSettingsMessages","AgentPanel","mainNav","id","labelKey","icon","advancedNav","AgentsEditorSidebar","props","$","_c","a","panel","onPanelChange","t0","label","Icon","press","item","t1","editorNavAria","t2","map","t3","id_0","t4","navAdvanced","t5","t6","id_1","labelKey_0","icon_0","t7","Dialog","X","ReactNode","Button","AgentsSettingsMessages","cn","ghostIconButton","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","SettingsShellLayerProvider","AgentsEditorSidebar","AgentPanel","AgentsEditorModal","props","$","_c","open","onOpenChange","a","title","subtitle","panel","onPanelChange","onFooterSave","footerSaveDisabled","footerSavedFlash","busy","children","t0","Symbol","for","t1","t2","t3","t4","t5","t6","t7","closeDialogAria","t8","t9","t10","t11","footerSaveNotApplicable","personaSaved","t12","t13","t14","save","t15","t16","t17","t18","_temp","t19","e","preventDefault","GatewayConfigBinding","CronJob","SessionChatId","cn","settingsInputFocusClass","AgentPanel","agentsSettingsInputClass","jobMatchesAgent","job","agentId","defaultId","raw","trim","toLowerCase","matchSummary","m","parts","channel","accountId","peerKind","peerId","filter","x","length","join","buildNewBindingMatch","customPeer","sessionIdx","sessions","ch","custom","s","peer","chatId","Link2","RefreshCw","Button","GatewayConfigBinding","SettingsFormSection","SettingsFormSectionHeader","ChannelStatus","SessionChatId","formatRecipientOptionLabel","selectControlBaseClass","agentsSettingsInputClass","matchSummary","AgentsSettingsMessages","MessageBundle","cn","channelsPeerIdSelectClass","LastActiveLabels","AgentChannelsTab","props","$","_c","a","busy","bindingsLoading","agentBindings","onRemoveBinding","onAddBinding","channelStatuses","channelsStatusLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","sessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","onRefreshSessions","lastActiveLabels","selectRecipient","showPeerForm","length","t0","channelsHint","channelsTitle","t1","channelsLoading","channelsNone","removeBinding","map","b","match","channel","t2","channelLabel","channelsDisabledSuffix","channelsLoadingChannels","channelsManualChannelHint","e","target","value","e_0","ch","name","enabled","t3","channelsCustomPeerHint","channelsCustomPeerPlaceholder","channelsLoadingSessions","channelsNoSessionsHint","channelsPeerAny","channelsPeerFromSessions","channelsRefreshSessions","channelsRefreshSessionsHint","channelsSessionLabel","peerIdLabel","trim","String","Boolean","e_1","v","Number","item","idx","chatId","e_2","e_3","v_0","item_0","t4","t5","addBinding","t6","t7","formatCronExpressionLabel","ScheduleBadgeLabels","formatIntervalMsLabel","IntervalPresetLabels","ScheduleSummaryShell","locale","className","CronScheduleSummaryProps","kind","expression","labels","timezone","nextRun","IntervalScheduleSummaryProps","valueMs","presetLabels","ScheduleSummaryProps","ScheduleSummary","props","$","_c","t0","text","t1","AlarmClock","GatewayAgentRow","cronJobBodyText","CronJob","ScheduleSummary","SettingsFormSection","SettingsFormSectionHeader","cn","AgentsSettingsMessages","messages","useLocaleStore","agentsSettingsInputClass","AgentCronTab","props","$","_c","a","data","busy","cronLoading","agentCronJobs","onSetCronJobAgent","language","_temp","t0","m","localeTag","scheduleBadgeLabels","cron","scheduleBadge","t1","cronHint","cronTitle","t2","cronAgentClear","cronAgentDefault","cronColAgent","cronColMessage","cronColSchedule","cronColSession","cronNone","length","map","job","usesDefaultAgent","agentId","trim","value","toLowerCase","id","schedule","timezone","next_run","sessionTarget","e","target","agents","_temp2","t3","ag","s","Eye","SquarePen","MarkdownEditor","MarkdownView","cn","interaction","AgentsSettingsMessages","useThemeStore","agentsSettingsInputClass","AgentFilesTab","props","$","_c","a","filesLoading","files","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","isDark","_temp","t0","filesHint","t1","filesAutoSaveHint","filesEmpty","filesMarkdownEdit","filesMarkdownPreview","filesSavingStatus","missing","navCoreFiles","pickFile","map","f","name","press","t2","s","resolved","ReactNode","useDirectoryPicker","DirectoryPickerTrigger","WorkingDirectoryPickerModal","MessageBundle","cn","Props","value","onChange","path","Promise","disabled","wd","placeholder","inputClassName","trailing","DirectoryPickerPathField","t0","$","_c","t1","initialPath","onPicked","picker","t2","trim","trimmed","pickTitle","chooseFolder","notSet","selectWorkingDirectory","t3","t4","picking","t5","e","target","t6","pathInputPlaceholder","t7","t8","t9","pick","t10","t11","t12","confirmPick","hasNativePicker","modalOpen","setModalOpen","undefined","t13","Link2","Link","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","cn","InheritanceRow","t0","$","_c","label","mode","value","inheritedFrom","inheritLabel","overrideLabel","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","AgentConfigInheritanceSummary","props","a","defaultModel","defaultWorkspace","agentModel","agentWorkspace","settingsPath","undefined","inh","inheritance","trim","modelInherits","length","workspaceInherits","displayModel","unset","displayWorkspace","editDefaultsLink","subtitle","title","inheritsValue","replace","badgeInherit","badgeOverride","modelLabel","workspaceLabel","t11","t12","Popover","Upload","useCallback","useMemo","useRef","useState","Button","cn","interaction","AgentsSettingsMessages","deleteAgentAvatarFile","uploadAgentAvatarFile","AgentAvatarDisplay","DICEBEAR_MORE_SEEDS","DICEBEAR_ROW_SEEDS","DICEBEAR_STYLE_ORDER","XOPC_CUSTOM_AVATAR","buildXopcDicebearValue","dicebearToDataUri","isDicebearStyleId","parseXopcDicebearValue","DicebearStyleId","styleLabel","style","a","avatarStyleAdventurer","avatarStyleRobot","avatarStyleLorelei","avatarStyleThumbs","avatarStyleFunEmoji","AgentAvatarPicker","props","agentId","value","onChange","next","id","fileRef","HTMLInputElement","uploadBusy","setUploadBusy","uploadError","setUploadError","moreOpen","setMoreOpen","activeStyle","p","trim","styleId","pickDicebear","seed","onFile","e","React","ChangeEvent","file","target","files","err","code","Error","message","avatarTooLarge","avatarInvalidImage","avatarUploadFailed","isRowSeedActive","Boolean","avatarPickerTitle","ev","current","click","avatarUploading","avatarUploadCustom","map","press","avatarMore","personaAvatar","IdentityFields","name","creature","emoji","avatar","IDENTITY_DEFAULTS","parseIdentityMarkdown","content","fields","trim","fieldMap","Record","line","split","match","label","toLowerCase","fieldKey","value","test","serializeIdentityMarkdown","lines","join","UserFields","callName","pronouns","timezone","notes","USER_DEFAULTS","parseUserMarkdown","contextStartIndex","i","length","contextLines","slice","contextText","replace","serializeUserMarkdown","push","SoulTemplateId","SoulTemplate","id","labelEn","labelZh","SOUL_TEMPLATES","stripFrontMatterForParsing","trimmed","trimStart","startsWith","endIndex","indexOf","detectSoulTemplate","stripped","template","templateStripped","matchCount","countDistinctTemplatePhraseHits","SOUL_TEMPLATE_PHRASE_PATTERNS","Partial","RegExp","professional","casual","geeky","text","templateId","pattern","re","source","hits","Set","RegExpExecArray","exec","add","size","TIMEZONE_OPTIONS","const","detectBrowserTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","PRONOUNS_PRESETS","CREATURE_PRESETS","Dialog","useCallback","AlertTriangle","Cog","Eye","Pencil","Sparkles","Trash2","User","X","Button","MarkdownEditor","MarkdownView","ModelSelector","DirectoryPickerPathField","GatewayAgentRow","OverviewProfileDraft","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","ChatMessages","cn","ghostIconButton","interaction","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","useLocaleStore","useThemeStore","AgentConfigInheritanceSummary","AgentAvatarDisplay","AgentAvatarPicker","agentsSettingsInputClass","CREATURE_PRESETS","SOUL_TEMPLATES","SoulTemplateId","AgentOverviewTab","props","$","_c","a","chat","selected","busy","editName","setEditName","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","hideInlineSave","profileMarkdownLoading","profileDraft","updateIdentity","handleSoulTemplateChange","handleSoulContentChange","setAvatarDialogOpen","toggleSoulPreviewMode","defaultModel","t0","defaultWorkspace","t1","undefined","language","_temp","isDark","_temp2","t2","identity","name","creature","emoji","avatar","soulTemplate","soulCustomContent","soulEditorNonce","soulPreviewMode","avatarDialogOpen","t3","en","zh","locLabel","t4","Symbol","for","inputClass","t5","selectAgentHint","t6","id","t7","t8","avatarOpenSettingsAria","onClick","ariaLabel","t9","setDefault","isDefault","t10","personaSectionIdentity","personaSectionIdentityHint","t11","t12","t13","avatarPickerTitle","t14","t15","t16","closeDialogAria","t17","t18","avatarRowHint","t19","next","t20","t21","_temp3","t22","t23","displayName","t24","e_0","e","target","value","t25","personaNamePlaceholder","t26","t27","personaEmoji","t28","e_1","t29","personaEmojiPlaceholder","t30","t31","agentDescription","t32","t33","e_2","t34","agentDescriptionPlaceholder","t35","t36","personaCreature","t37","some","p","t38","e_3","t39","map","preset","labelEn","labelZh","t40","t41","t42","t43","personaCreaturePlaceholder","p_0","e_4","t44","t45","t46","t47","editAgent","editAgentHint","t48","modelPrimary","t49","t50","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t51","modelClear","trim","t52","t53","t54","workspacePath","t55","workingDirectory","t56","notSet","t57","t58","t59","t60","t61","save","t62","t63","loading","personaSectionSoul","personaSectionSoulHint","personaSoulCustomEdit","personaSoulEdit","personaSoulPreview","personaSoulTemplate","template","pressCard","t64","purgeDisk","removeFromConfig","t65","preventDefault","s_0","s","resolved","Info","UserCircle","MutableRefObject","useCallback","useEffect","useReducer","useRef","SettingsFormSection","SettingsFormSectionHeader","fetchAgentProfileFileContent","saveAgentProfileFileContent","cn","interaction","useAsyncResource","AgentsSettingsMessages","useLocaleStore","agentsSettingsInputClass","UserFields","parseUserMarkdown","serializeUserMarkdown","TIMEZONE_OPTIONS","PRONOUNS_PRESETS","detectBrowserTimezone","ProfileTabProps","a","agentId","saveRef","Promise","onDirtyChange","dirty","ProfileFormState","user","showCustomPronouns","showCustomTimezone","customTimezone","snapshot","ProfileFormAction","type","patch","Partial","value","profileFormFromUser","Pick","isKnownPronouns","pronouns","some","p","isKnownTimezone","tz","timezone","Boolean","profileFormReducer","state","action","extras","JSON","stringify","emptyUser","callName","notes","initialProfileForm","AgentProfileTabBody","language","s","form","dispatchForm","agentIdRef","current","onDirtyChangeRef","userResource","userMd","catch","parsedUser","detected","enabled","initial","errorData","syncedAgentRef","loading","data","saveFile","content","userRef","updateUser","next","handleTimezoneChange","handleCustomTimezoneChange","handleDetectTimezone","isKnown","timezoneSelectValue","locLabel","en","zh","inputClass","personaSectionUserHint","personaSectionUser","personaCallName","e","target","personaCallNamePlaceholder","personaPronouns","personaPronounsPlaceholder","map","preset","labelEn","labelZh","personaTimezone","personaTimezoneCustom","press","personaTimezoneDetect","personaNotes","personaNotesPlaceholder","personaMemoryNote","AgentProfileTab","props","$","_c","t0","BookOpen","Dispatch","SetStateAction","Link","Button","GatewayAgentRow","SkillCatalogRow","SettingsFormSection","SettingsFormSectionHeader","cn","AgentsSettingsMessages","pathForTab","AgentSkillsTab","props","$","_c","a","selected","busy","skillsCatalogLoading","catalogForPick","skillsInherit","setSkillsInherit","skillsPick","setSkillsPick","onSaveSkills","hideInlineSave","t0","skills","effectiveAllowlist","isCheckedInheritMode","id","eff","undefined","length","includes","t1","initialPickForCustomize","eff_0","Set","map","_temp","t2","skillsHint","skillsTitle","t3","t4","t5","t6","skillsCustomize","t7","t8","Symbol","for","t9","skillsLibraryLink","t10","t11","defaults","join","t12","skillsDefaultsLabel","t13","skillsAllFromCatalog","t14","skillsEffectiveLabel","t15","skillsEmptyCatalog","skillsNoDescription","s_0","id_0","s","name","directoryId","on","has","desc","description","trim","descLine","prev","next","delete","add","t16","skillsSave","t17","BUILTIN_TOOL_UI_GROUPS","key","toolIds","const","BuiltinToolUiGroupKey","ASSIGNED","Set","flatMap","g","map","id","String","miscBuiltinToolIds","builtinToolIds","filter","has","sort","x","y","localeCompare","nativeSelectMaxWidthClass","selectControlBaseClass","settingsInputFocusClass","cn","inputClassName","selectClassName","agentDefaultsQuickActionButtonClass","useCallback","useMemo","Button","cn","BUILTIN_TOOL_UI_GROUPS","miscBuiltinToolIds","BuiltinToolUiGroupKey","agentDefaultsQuickActionButtonClass","PRESET_READ_ONLY_WORKSPACE","const","PRESET_HIGH_RISK","PRESET_NO_OUTBOUND","sortedDisableList","ids","Set","Array","from","flatMap","s","v","trim","toSorted","x","y","localeCompare","BuiltinToolsDisableUiMode","BuiltinToolsDisableUiLabels","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","BuiltinToolsDisableUiProps","mode","builtinToolIds","loading","disableSet","onDisableSetChange","next","defaultsDisableSet","unknownDisabledIds","getToolDescription","toolId","getGroupTitle","groupKey","labels","quickActionsDisabled","BuiltinToolsDisableUi","props","$","_c","t0","t1","t2","undefined","t3","allowedBuiltin","t4","defaultsLock","t5","tid","enabled","has","delete","add","setToolEnabled","t6","next_0","id","applyDisableExactly","t7","enableAllTools","t8","next_1","disableAllListed","t9","misc","sections","length","t10","_temp","t11","key","push","g","ids_0","toolIds","filter","id_0","groupsContent","hasRows","some","_temp2","qaBusy","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","map","t27","ids_1","tid_0","unknown","lockedByDefault","disabledByScope","checked","desc","Wrench","useCallback","useMemo","Dispatch","SetStateAction","Button","GatewayAgentRow","BuiltinToolUiGroupKey","BuiltinToolsDisableUi","SettingsFormSection","SettingsFormSectionHeader","messages","AgentsSettingsMessages","useLocaleStore","AgentToolsTab","props","$","_c","a","data","selected","busy","toolEntryDisable","setToolEntryDisable","onSaveTools","onClearToolsEntry","hideInlineSave","language","_temp","t0","adv","agentSettings","advanced","t1","tools","defaultsDisable","Set","flatMap","_temp2","defaultsDisableSet","t2","next","onDisableSetChange","groups","toolsDisableGroups","t3","key","getGroupTitle","t4","toolDescriptions","tid","getToolDescription","t5","toolsHint","toolsTitle","t6","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t7","builtinToolIds","t8","toolsSave","t9","t10","toolsClearEntry","t11","t12","s_0","v","String","s","trim","Dispatch","FormEvent","MutableRefObject","SetStateAction","ChannelStatus","CronJob","SessionChatId","fetchAgentProfileFiles","GatewayAgentRow","GatewayAgentsPayload","GatewayConfigBinding","SkillCatalogRow","AgentsSettingsMessages","ChatMessages","MessageBundle","AgentChannelsTab","AgentCronTab","AgentFilesTab","AgentOverviewTab","AgentProfileTab","AgentSkillsTab","AgentToolsTab","OverviewProfileDraft","SoulTemplateId","AgentPanel","CronMessages","AgentsEditorPanelContentProps","a","chat","cCron","selected","panel","data","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","defaultModel","defaultWorkspace","onSetDefault","onSaveAgentEdits","onDelete","purge","overviewSaveProfileMarkdownRef","Promise","profileSaveRef","overviewProfile","profileMarkdownLoading","draft","updateIdentity","patch","Partial","handleSoulTemplateChange","templateId","handleSoulContentChange","content","setAvatarDialogOpen","open","toggleSoulPreviewMode","setProfileDirty","filesLoading","files","Awaited","ReturnType","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","toolEntryDisable","Set","setToolEntryDisable","onSaveTools","onClearToolsEntry","skillsCatalogLoading","catalogForPick","skillsInherit","setSkillsInherit","skillsPick","setSkillsPick","onSaveSkills","bindingsLoading","agentBindings","bindChannelStatuses","bindChannelsLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","bindSessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","refreshBindSessions","onRemoveBinding","rule","onAddBinding","e","cronLoading","agentCronJobs","onSetCronJobAgent","job","agentKey","AgentsEditorPanelContent","t0","$","_c","t1","selectAgentHint","id","lastActiveLabels","selectRecipient","MessageSquarePlus","Plus","GatewayAgentRow","AgentAvatarDisplay","agentListDisplayDescription","agentListDisplayName","cn","interaction","AgentsSettingsMessages","filterAgents","agents","query","a","q","trim","toLowerCase","filter","ag","name","id","ws","workspace","desc","description","displayDesc","includes","NewAgentCard","props","$","_c","busy","onNewAgent","t0","t1","t2","Symbol","for","pressCard","t3","listNewAgentCard","t4","AgentsListGrid","searchQuery","onOpenAgent","onChatWithAgent","t5","bb0","filtered","searchMiss","length","t6","listNoAgentsYet","t7","t8","listEmpty","title","monoId","descTrim","avatar","isDefault","defaultBadge","undefined","press","listChatWithAgent","map","AgentsSettingsMessages","AgentsSettingsHeader","props","$","_c","a","t0","title","t1","subtitle","t2","Dialog","UserPlus","X","FormEvent","Button","ModelSelector","AgentsSettingsMessages","ChatMessages","cn","ghostIconButton","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","SettingsShellLayerProvider","agentsSettingsInputClass","CreateAgentDialog","props","$","_c","open","onOpenChange","a","chat","busy","modalError","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","onCreate","onSuggestWorkspace","t0","Symbol","for","t1","t2","addAgent","t3","addAgentHint","t4","t5","t6","t7","closeDialogAria","t8","t9","t10","newAgentLabel","t11","t12","e_0","e","target","value","t13","t14","t15","t16","newAgentIdOptional","t17","t18","e_1","t19","t20","newAgentIdPlaceholder","newAgentIdRules","t21","t22","t23","agentDescription","t24","t25","e_2","t26","agentDescriptionPlaceholder","t27","t28","newWorkspace","t29","t30","e_3","t31","t32","t33","newModelOptional","t34","id","t35","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t36","modelClear","trim","t37","t38","t39","createModalCancel","t40","t41","create","t42","t43","t44","_temp","t45","preventDefault","PresetAgent","id","name","emoji","descriptionEn","descriptionZh","identityMd","soulMd","toolsDisable","PRESET_AGENTS_SKIPPED_KEY","PRESET_AGENTS","useMemo","useState","SkipForward","Sparkles","Button","createGatewayAgent","messages","cn","useLocaleStore","PRESET_AGENTS","PRESET_AGENTS_SKIPPED_KEY","PresetAgent","PresetAgentsSetupProps","existingAgentIds","Set","onComplete","onSkip","PresetAgentsSetup","language","s","m","a","agentsSettings","availablePresets","filter","p","has","id","selected","setSelected","map","creating","setCreating","progress","setProgress","current","total","error","setError","toggleAgent","prev","next","delete","add","handleCreate","toCreate","length","completed","failures","preset","message","Promise","all","name","workspace","description","descriptionZh","descriptionEn","profileFiles","identityMd","soulMd","toolsDisable","err","Error","String","toLowerCase","includes","push","firstFailure","presetCreateFailed","replace","handleSkip","localStorage","setItem","presetSetupBadge","presetSetupTitle","presetSetupSubtitle","presetCreatingProgress","presetSkip","size","presetCreating","presetCreateSelected","PresetAgentCard","props","$","_c","checked","disabled","onToggle","t0","t1","t2","t3","t4","emoji","t5","t6","t7","t8","t9","revalidateGatewayConfig","fetchJson","apiUrl","AgentDefaultsCompactionState","enabled","mode","reserveTokens","triggerThreshold","minMessagesBeforeCompact","keepRecentMessages","evictionWindow","retentionWindow","AgentDefaultsPruningState","maxToolResultChars","headKeepRatio","tailKeepRatio","AgentDefaultsMemoryState","useEnhancedSystem","userProfileEnabled","provider","injectionFrequency","memoryCharLimit","userCharLimit","contextCadence","dialecticCadence","AgentDefaultsSessionSearchState","summaryModel","AgentDefaultsBackgroundReviewState","memoryNudgeInterval","skillNudgeInterval","maxToolRounds","maxHistoryMessages","maxDurationMs","AgentDefaultsWebExtractState","model","maxLength","AgentDefaultsDelegateState","AgentDefaultsExecuteCodeState","AgentDefaultsState","modelFallbacks","imageModel","imageModelFallbacks","imageGenerationModel","imageGenerationModelFallbacks","imageGenerationModelTimeoutMs","imageGenerationModelAutoProviderFallback","mediaMaxMb","maxTokens","temperature","maxToolIterations","maxTaskDurationMinutes","maxRequestsPerTurn","maxToolFailuresPerTurn","workspace","browserEnabled","browserHeadless","browserAllowPrivateUrls","browserCommandTimeout","browserBackend","browserCloudProvider","browserCloudApiKey","browserCloudProjectId","browserCloudRegion","browserCdpUrl","browserExtensionPort","browserExtensionHost","browserCloakKeepOpen","browserCloakTemporaryProfile","browserCloakCacheDir","browserCloakBinaryPath","browserHumanize","browserHumanPreset","browserDialogPolicy","browserDialogTimeout","thinkingDefault","reasoningDefault","verboseDefault","compaction","pruning","memory","sessionSearch","backgroundReview","webExtract","delegate","executeCode","systemPromptOverride","skillsAllowlist","toolsDisable","paramsJson","DEFAULT_COMPACTION","DEFAULT_PRUNING","DEFAULT_MEMORY","undefined","DEFAULT_SESSION_SEARCH","DEFAULT_BG_REVIEW","DEFAULT_WEB_EXTRACT","normalizeModelRef","raw","p","primary","normalizeModelFallbacks","f","fallbacks","Array","isArray","filter","x","trim","length","configFromApiResponse","res","r","Record","payload","config","truthyBrowserFlag","v","BrowserFieldsPick","Pick","parseBrowserFromDefaults","d","browser","b","headlessRaw","headless","allowPrivateUrls","commandTimeout","Number","isFinite","Math","floor","backendRaw","backend","cpRaw","cloudProvider","cloud","cloudApiKey","apiKey","cloudProjectId","projectId","cloudRegion","region","cdpUrl","ext","extension","extensionPort","port","extensionHost","host","cloakbrowser","humanPreset","dpRaw","dialogPolicy","dialogTimeout","dialogTimeoutSeconds","keepOpen","temporaryProfile","cacheDir","binaryPath","humanize","parseCompaction","parsePruning","parseMemory","providerRaw","inj","parseSessionSearch","parseBackgroundReview","parseWebExtract","parseEnabledFlag","def","parseStringList","parseParamsJson","t","parsed","JSON","parse","stringify","readImageGenerationTimeoutMsFromDefaults","flat","igm","tm","timeoutMs","readImageGenerationAutoProviderFallbackFromDefaults","autoProviderFallback","parseAgentDefaultsFromConfig","cfg","agents","defaults","mf","modelFallbacksFromApi","every","imf","imageModelFallbacksFromApi","igf","imageGenerationModelFallbacksFromApi","browserFields","maxTaskMs","maxTaskDurationMs","round","isNaN","skills","tools","dis","disable","params","buildMemoryPatch","m","o","parseParamsJsonForSave","trimmed","Error","fetchAgentDefaults","Promise","ok","patchAgentDefaults","state","flatMap","s","modelField","imageFbs","imageModelField","imageGenFbs","imageGenPrimary","imageGenTimeoutMs","imageGenAuto","imageGenerationModelField","obj","Object","keys","n","ms","skillsClean","toolsDisableClean","paramsParsed","method","body","DEFAULT_AGENT_ID","VALID_ID_RE","INVALID_CHARS_RE","LEADING_DASH_RE","TRAILING_DASH_RE","STRICT_AGENT_ID_RE","WINDOWS_RESERVED_AGENT_IDS","Set","normalizeAgentId","value","trimmed","trim","normalized","toLowerCase","test","replace","slice","validateAgentIdForNewAgent","explicitId","displayNameForDerivation","ok","agentId","error","explicit","id","has","normalizeAgentId","DEFAULT_AGENT_WORKSPACE","suggestWorkspaceFromAgentName","name","t","trim","id","Plus","Search","Button","AgentsSettingsMessages","AgentsSettingsToolbarProps","a","Pick","busy","listSearchQuery","onListSearchQueryChange","value","onAddAgent","AgentsSettingsToolbar","t0","$","_c","t1","Symbol","for","t2","e","target","t3","listSearchPlaceholder","t4","t5","t6","addAgent","addAgentAria","t7","useCallback","useLayoutEffect","useMemo","useRef","useState","MutableRefObject","fetchAgentProfileFileContent","saveAgentProfileFileContent","useAsyncResource","IdentityFields","SoulTemplateId","detectSoulTemplate","parseIdentityMarkdown","serializeIdentityMarkdown","SOUL_TEMPLATES","OverviewProfileLoaded","identity","soulTemplate","soulCustomContent","identityBaseline","soulBaseline","OverviewProfileDraft","soulEditorNonce","soulPreviewMode","avatarDialogOpen","draftFromLoaded","loaded","useAgentOverviewProfileMarkdown","options","agentId","enabled","saveRef","Promise","loadedResource","identityMd","soulMd","all","catch","JSON","stringify","Boolean","initial","errorData","data","profileMarkdownLoading","loading","dirtyRef","localDraft","setLocalDraft","agentKey","trackedAgentRef","current","draft","dirty","agentIdRef","patchDraft","patch","prev","base","updateIdentity","identityPatch","Partial","handleSoulTemplateChange","templateId","tpl","find","t","id","content","handleSoulContentChange","setAvatarDialogOpen","open","toggleSoulPreviewMode","saveProfileMarkdown","useCallback","useEffect","useRef","useReducer","useState","Dispatch","SetStateAction","useDebouncedCallback","fetchAgentProfileFileContent","fetchAgentProfileFiles","saveAgentProfileFileContent","useAsyncResource","AgentPanel","ProfileFiles","Awaited","ReturnType","FileEditorState","draft","editorNonce","loadedKey","FileEditorAction","type","key","content","value","initialFileEditor","fileEditorReducer","state","action","useAgentProfileFiles","options","panel","selectedId","hasToken","dataAgentsLength","saveErrorMessage","setError","filesEnabled","filesResource","Promise","resolve","enabled","initial","errorData","files","data","setFiles","setData","filesLoading","loading","activeFile","setActiveFileState","fileEditor","dispatchFileEditor","fileSaving","setFileSaving","filesViewMode","setFilesViewMode","fileDraft","profileEditorNonce","fileDraftRef","current","selectedIdRef","activeFileRef","overviewSaveProfileMarkdownRef","profileFileKeyRef","profileSyncedRef","trackedProfileKeyRef","flushProfileSaveRef","profileFileEnabled","Boolean","profileFileResource","catch","profileFileLoading","saveProfileMarkdownDebounced","sid","name","prev","agentId","map","f","missing","err","Error","message","flush","trackedPanelRef","profileFileKey","trackedViewModeKeyRef","setActiveFile","setFileDraft","useCallback","useMemo","useRef","useState","Dispatch","FormEvent","SetStateAction","getChannels","getSessionChatIds","ChannelStatus","SessionChatId","patchGatewayBindings","GatewayAgentRow","GatewayConfigBinding","useAsyncResource","AgentPanel","buildNewBindingMatch","useAgentsChannelBindings","options","panel","hasToken","bindingsFromConfig","gatewayCfgLoading","selected","saveErrorMessage","setBusy","setError","bindingsDirtyRef","localBindings","setLocalBindings","trackedBindingsRef","current","allBindings","channelsEnabled","channelsResource","enabled","initial","errorData","bindChannelStatuses","data","bindChannelsLoading","loading","defaultBindChannel","length","name","newBindChannel","setNewBindChannel","trackedDefaultChannelRef","some","c","trimmedBindChannel","trim","sessionsEnabled","sessionsResource","bindSessionChats","bindSessionsLoading","setBindSessionChats","setData","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","trackedBindChannelRef","agentBindings","filter","b","agentId","toLowerCase","id","refreshBindSessions","ch","then","ids","i","catch","useManualChannel","bindingsLoading","onRemoveBinding","rule","nextList","err","Error","message","onAddBinding","e","preventDefault","match","priority","useMemo","useState","Dispatch","SetStateAction","listJobs","updateJob","CronJob","isDreamingManagedCronJob","GatewayAgentRow","GatewayAgentsPayload","useAsyncResource","AgentPanel","jobMatchesAgent","useAgentsCronJobs","options","panel","hasToken","data","selected","saveErrorMessage","setBusy","setError","cronJobs","loading","cronLoading","enabled","initial","errorData","cronJobsOverride","setCronJobsOverride","effectiveCronJobs","agentCronJobs","filter","j","id","defaultId","onSetCronJobAgent","job","agentKey","agentId","err","Error","message","useMemo","fetchSkillsCatalog","SkillCatalogRow","useAsyncResource","AgentPanel","useSkillsCatalogLoad","enabled","hasToken","$","_c","t0","t1","t2","Symbol","for","t3","t4","initial","errorData","data","skillCatalog","loading","skillsCatalogLoading","_temp","t5","filter","_temp2","catalogForPick","t6","s","useAgentsSkillsCatalog","options","panel","useRef","useState","GatewayAgentRow","AgentPanel","toolDisableFromSelected","selected","Set","tools","entryDisable","skillsStateFromSelected","inherit","pick","skills","entry","undefined","effectiveAllowlist","useAgentsToolsSkillsLocalState","options","panel","syncKey","id","trackedSyncRef","toolEntryDisable","setToolEntryDisable","skillsPick","setSkillsPick","skillsInherit","setSkillsInherit","current","next","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","FormEvent","useNavigate","useParams","useSearchParams","useSWR","useGatewayConfigSwr","createGatewayAgent","deleteGatewayAgent","fetchGatewayAgents","parseGatewayBindingsFromConfig","updateGatewayAgent","GatewayAgentRow","GatewayAgentsPayload","parseAgentDefaultsFromConfig","AGENTS_APP_LIST_PATH","agentsAppDetailPath","SETTINGS_BACK_PATH_STATE_KEY","suggestWorkspaceFromAgentName","validateAgentIdForNewAgent","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","AgentsEditorPanelContentProps","AgentsSettingsToolbar","agentListDisplayName","useAgentOverviewProfileMarkdown","useAgentProfileFiles","useAgentsChannelBindings","useAgentsCronJobs","useAgentsSkillsCatalog","useAgentsToolsSkillsLocalState","PRESET_AGENTS_SKIPPED_KEY","AgentPanel","useAgentsSettingsPanel","language","s","m","a","agentsSettings","deleteDialogOpen","setDeleteDialogOpen","deleteTarget","setDeleteTarget","deletePurge","setDeletePurge","deleteConfirmText","setDeleteConfirmText","cCron","cron","chat","token","st","hasToken","Boolean","searchParams","setSearchParams","navigate","agentId","routeAgentId","setPageHeader","clearPageHeader","agentsSwrKey","data","swrAgentsData","error","swrAgentsError","isLoading","agentsLoading","mutate","mutateAgents","revalidateOnFocus","gatewayCfgData","bindingsFromConfig","payload","config","globalAgentDefaults","loading","setError","loadError","Error","message","displayError","selectedId","setSelectedId","presetSetupDismissed","setPresetSetupDismissed","localStorage","getItem","panel","setPanel","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","createModalError","setCreateModalError","addAgentModalOpen","setAddAgentModalOpen","createWorkspaceSuggestedRef","busy","setBusy","listSearchQuery","setListSearchQuery","editWorkspace","setEditWorkspace","editModel","setEditModel","editName","setEditName","editDescription","setEditDescription","profileSaveRef","Promise","overviewSaveProfileMarkdownRef","profileDirty","setProfileDirty","savedFlash","setSavedFlash","trackedAgentsSyncRef","undefined","current","agents","some","x","id","prev","defaultId","onlyMainAgent","length","every","ag","showPresetSetup","onPresetSetupComplete","onPresetSetupSkip","setItem","replace","get","state","t","window","setTimeout","document","getElementById","scrollIntoView","behavior","block","next","URLSearchParams","delete","clearTimeout","selected","find","trackedSelectedIdRef","workspace","model","primary","description","trim","overviewProfile","enabled","saveRef","profileFiles","dataAgentsLength","saveErrorMessage","saveError","toolsSkills","channels","gatewayCfgLoading","skillsCatalog","applyCreateWorkspaceSuggestion","openAddAgentModal","agentsHeaderEnd","startExtra","main","end","onCreate","e","preventDefault","name","idRes","ok","wsInput","desc","createdAgentId","agentsPayload","revalidate","err","onSaveAgentEdits","descTrim","onSetDefault","agent","setDefault","performDelete","purge","onDelete","onSaveTools","toolsDisable","Array","from","toolEntryDisable","toSorted","y","localeCompare","onClearToolsEntry","setToolEntryDisable","Set","onSaveSkills","skills","skillsInherit","skillsPick","footerSaveNotApplicable","overviewRestDirty","origName","origDesc","origWorkspace","origModel","isCurrentPanelDirty","dirty","footerSaveDisabled","showSavedFlash","handleModalFooterSave","all","resolve","saveProfileMarkdownDebounced","flush","onAgentModalOpenChange","open","modalTitle","modalSubtitle","editorPanelProps","defaultModel","defaultWorkspace","filesLoading","files","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","skillsCatalogLoading","catalogForPick","setSkillsInherit","setSkillsPick","bindingsLoading","agentBindings","bindChannelStatuses","bindChannelsLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","bindSessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","refreshBindSessions","onRemoveBinding","rule","onAddBinding","cronLoading","agentCronJobs","onSetCronJobAgent","job","key","AgentDeleteConfirmDialog","agentsAppDetailPath","AgentsEditorModal","AgentsEditorPanelContent","AgentsListGrid","AgentsSettingsHeader","CreateAgentDialog","PRESET_AGENTS","PresetAgentsSetup","useAgentsSettingsPanel","AgentsSettingsPanel","vm","hasToken","a","title","needToken","showPresetSetup","data","existingIds","Set","agents","map","ag","id","hasAvailablePresets","some","p","has","onPresetSetupComplete","onPresetSetupSkip","displayError","loading","listSearchQuery","navigate","state","agentId","trim","toLowerCase","openAddAgentModal","busy","routeAgentId","Boolean","onAgentModalOpenChange","modalTitle","modalSubtitle","panel","setPanel","handleModalFooterSave","footerSaveDisabled","savedFlash","editorPanelProps","addAgentModalOpen","open","setAddAgentModalOpen","createWorkspaceSuggestedRef","current","setCreateDisplayName","setCreateAgentId","setCreateDescription","setCreateWorkspace","setCreateModel","setCreateModalError","chat","createModalError","createDisplayName","createAgentId","createDescription","createWorkspace","createModel","onCreate","applyCreateWorkspaceSuggestion","deleteDialogOpen","setDeleteDialogOpen","setDeleteTarget","setDeleteConfirmText","deletePurge","deleteTarget","deleteConfirmText","performDelete","ReactNode","AgentDefaultsField","t0","$","_c","label","description","children","t1","t2","t3","LucideIcon","Check","cn","BrowserMessages","ModeStatusKind","BackendMode","BackendModeOption","value","icon","name","tagline","status","statusLabel","BackendModePicker","t0","$","_c","onChange","options","m","t1","browserPickerTitle","t2","browserPickerSubtitle","t3","t4","t5","browserSelectedBadge","t6","opt","selected","Icon","map","t7","LucideIcon","AlertTriangle","CheckCircle2","CircleHelp","LoaderCircle","XCircle","useState","ReactNode","cn","BrowserMessages","ModeStatusKind","BackendModeCard","t0","$","_c","icon","Icon","title","description","status","statusDetail","primaryAction","children","advanced","m","showAdvanced","setShowAdvanced","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","_temp","browserAdvancedHide","browserAdvancedShow","t11","v","StatusBadge","kind","detail","label","browserStatusChecking","browserStatusError","browserStatusNotInstalled","browserStatusReady","browserStatusUnknown","config","ready","color","not_installed","checking","unknown","error","ActionResultBox","message","LoaderCircle","Play","Plug","Square","Webhook","useCallback","useEffect","useReducer","uiPatchReducer","AgentDefaultsField","inputClassName","ActionResultBox","BackendModeCard","BrowserMessages","LaunchedCdpInstance","ActionStatus","CdpCardUi","instances","launchStatus","launchMessage","testStatus","testMessage","executablePath","initialCdpCardUi","CdpCard","m","cdpUrl","onCdpUrlChange","launch","stop","listInstances","ping","next","Promise","port","url","reachable","browser","error","ui","dispatch","refreshInstances","list","type","patch","id","setInterval","clearInterval","onLaunch","result","trim","undefined","browserCdpLaunchedAtPort","replace","String","wsEndpoint","e","Error","message","onStop","onTest","browserCdpReachable","browserCdpUnreachable","browserCdpLaunchLocal","browserCdpLaunchLocalDesc","browserCdpLaunching","browserCdpChromePath","browserCdpChromePathDesc","target","value","length","map","it","pid","browserCdpStopLocal","label","browserCdpUrl","desc","browserCdpTesting","browserCdpTestConnection","browserCdpLoopbackOnly","BrowserInstallStreamState","BrowserMessages","phaseLabel","m","progress","phase","browserInstallPhaseStarting","percent","browserInstallPhaseDownloadingPercent","replace","String","browserInstallPhaseDownloading","browserInstallPhaseVerifying","browserInstallPhaseExtracting","message","browserInstallPhaseRunning","browserInstallPhaseReady","BrowserInstallProgressPanel","t0","$","_c","showLogs","t1","onCancel","cancelling","t2","undefined","t3","label","Math","min","max","t4","t5","t6","browserInstallCancelling","browserInstallCancel","t7","t8","t9","width","t10","lines","length","map","_temp","t11","t12","line","i","slice","CheckCircle2","Download","LoaderCircle","RefreshCw","ShieldCheck","useCallback","useState","ConfirmDialog","AgentDefaultsField","inputClassName","selectClassName","BrowserInstallProgressPanel","ActionResultBox","BackendModeCard","ModeStatusKind","BrowserMessages","CloakDoctor","DoctorState","BrowserInstallStream","InstallStatus","CloakCardForm","cacheDir","binaryPath","keepOpen","temporaryProfile","humanize","humanPreset","CloakCard","t0","$","_c","m","doctor","refetch","applyDoctor","installStream","form","onChange","status","setStatus","message","setMessage","confirmOpen","setConfirmOpen","progress","running","cancelling","run","runInstall","reset","resetInstall","cancel","data","kind","installed","installing","t1","browserCloakInstallFailed","browserCloakInstalled","result","body","trim","undefined","fallbackError","ok","error","errorMessage","payload","installNow","statusKind","statusDetail","version","platform","t2","browserCloakGuideTitle","t3","browserCloakGuideDesc","t4","Symbol","for","t5","t6","browserCloakInstalling","browserReinstall","browserCloakDownload","t7","t8","t9","t10","e","target","checked","t11","t12","browserCloakKeepOpenOn","t13","t14","desc","browserCloakKeepOpen","label","t15","e_0","t16","t17","browserCloakTemporaryProfileOn","t18","t19","browserCloakTemporaryProfile","t20","e_1","t21","t22","browserHumanizeOn","t23","t24","browserHumanize","t25","browserHumanPreset","t26","t27","t28","e_2","value","t29","browserHumanPresetCareful","t30","browserHumanPresetDefault","t31","t32","t33","t34","t35","browserCloakCacheDir","t36","t37","t38","e_3","t39","t40","browserCacheDirHomeOnly","t41","t42","browserCloakBinaryPath","t43","t44","t45","e_4","t46","t47","browserBinaryPathWarning","t48","t49","t50","browserConfirmDownloadTitle","t51","buildConfirmBody","t52","t53","t54","browserConfirmDownloadCancel","browserConfirmDownloadConfirm","t55","browserConfirmDownloadBody","parts","replace","downloadUrl","expectedSha256","push","slice","browserCloakSha256Skipped","join","Cloud","LoaderCircle","Plug","useCallback","useState","AgentDefaultsField","inputClassName","selectClassName","ActionResultBox","BackendModeCard","BrowserMessages","ActionStatus","CloudCardForm","provider","apiKey","projectId","region","CloudCard","m","form","onChange","testCloud","patch","Partial","Promise","reachable","error","status","setStatus","message","setMessage","onTest","result","browserCloudTestOk","browserCloudTestFailed","replace","e","Error","String","label","browserCloudProvider","desc","browserCloudTestConnection","target","value","browserCloudProviderBrowserbase","browserCloudProviderBrowserUse","browserCloudApiKey","browserCloudProjectId","browserCloudRegion","Download","ExternalLink","FolderOpen","LoaderCircle","Play","Plug","PlugZap","Puzzle","Square","Unplug","useCallback","useState","copyTextToClipboard","AgentDefaultsField","inputClassName","ActionResultBox","BackendModeCard","BrowserMessages","DoctorState","ExtensionArtifacts","ExtensionProbe","DEFAULT_PORT","ExtensionCardForm","port","host","ExtensionCard","m","probe","artifacts","onChange","startBridge","stopBridge","installArtifacts","refetchArtifacts","openExtensionChrome","revealExtensionFolder","form","patch","Partial","opts","Promise","force","busy","setBusy","error","setError","installMessage","setInstallMessage","wsUrl","running","kind","data","connected","artifactData","undefined","installed","extensionDir","needsChromeReload","badge","icon","color","label","browserExtensionConnected","browserExtensionWaiting","browserExtensionServerOff","BadgeIcon","onStart","e","Error","message","String","onStop","onInstall","result","browserExtensionInstalled","openChromeExtensions","onRevealFolder","copied","browserExtensionPathCopied","browserExtensionFolderOpened","browserBackendExtension","browserExtensionDownloadHint","browserExtensionInstalling","browserExtensionInstall","browserExtensionStopBridge","browserExtensionStarting","browserExtensionStartBridge","browserExtensionPort","desc","v","target","value","Number","parseInt","browserExtensionHost","browserExtensionInstallGuideTitle","browserExtensionInstallStep1","browserExtensionInstallStep2","browserExtensionInstallStep2FolderLabel","browserExtensionOpenChrome","browserExtensionRevealFolder","browserExtensionInstallStep3","browserExtensionNeedsChromeReload","CheckCircle2","Download","LoaderCircle","MonitorPlay","RefreshCw","useCallback","useState","BrowserInstallProgressPanel","ActionResultBox","BackendModeCard","ModeStatusKind","BrowserMessages","DoctorState","PlaywrightDoctor","BrowserInstallStream","InstallStatus","LocalCard","t0","$","_c","m","doctor","refetch","applyDoctor","installStream","status","setStatus","message","setMessage","progress","running","cancelling","run","runInstall","reset","resetInstall","cancel","t1","browserPlaywrightInstallFailed","browserPlaywrightInstalled","result","fallbackError","ok","error","errorMessage","payload","executablePath","install","statusKind","kind","data","installed","statusDetail","undefined","installing","t2","t3","t4","browserPlaywrightInstalling","browserReinstall","browserPlaywrightInstall","t5","t6","Symbol","for","t7","t8","t9","browserPlaywrightGuideTitle","browserPlaywrightGuideDesc","useCallback","useEffect","useReducer","useRef","apiFetch","apiUrl","CdpPingResult","CloakDoctor","CloudTestResult","DoctorState","ExtensionArtifacts","ExtensionProbe","LaunchedCdpInstance","PlaywrightDoctor","ApiEnvelope","ok","payload","T","error","message","getJson","url","Promise","res","body","json","catch","msg","Error","status","undefined","postJson","method","headers","JSON","stringify","BrowserDoctorState","playwright","cloak","extension","extensionArtifacts","BrowserDoctorAction","type","state","initialBrowserDoctorState","kind","browserDoctorReducer","action","BrowserDoctor","refetchPlaywright","applyPlaywrightDoctor","data","refetchCloak","overrides","cacheDir","binaryPath","applyCloakDoctor","pingCdp","cdpUrl","testCloud","provider","apiKey","launchCdp","executablePath","stopCdp","port","listCdpInstances","startExtensionBridge","opts","host","stopExtensionBridge","refetchExtension","refetchExtensionArtifacts","installExtensionArtifacts","force","openExtensionChrome","revealExtensionFolder","useBrowserDoctor","extensionEnabled","extensionHost","extensionPort","doctors","dispatch","e","String","cd","trim","bp","qs","URLSearchParams","set","size","probe","signal","AbortSignal","timeout","running","connected","backend","artifacts","params","doctor","extensionDir","trackedExtensionEnabledRef","current","id","setInterval","clearInterval","stopped","instances","useCallback","useRef","useState","apiFetch","apiUrl","SSE_BLOCK_DELIM","CRLF_RE","BrowserInstallKind","BrowserInstallPhase","BrowserInstallProgressEvent","phase","message","percent","bytesReceived","totalBytes","line","source","BrowserInstallStreamState","lines","BrowserInstallStreamResult","ok","payload","T","error","status","INSTALL_PATH","Record","playwright","cloakbrowser","CANCEL_PATH","MAX_LOG_LINES","emptyState","applyProgress","prev","event","next","length","slice","consumeBrowserInstallSse","body","ReadableStream","Uint8Array","onProgress","signal","AbortSignal","Promise","reader","getReader","decoder","TextDecoder","buffer","final","handleSseBlock","block","ev","dataPayload","split","L","replace","startsWith","trim","trimStart","parsed","JSON","parse","json","String","undefined","readChunk","aborted","cancel","catch","done","value","read","decode","stream","parts","pop","chunk","result","err","DOMException","name","releaseLock","useBrowserInstallStream","kind","progress","setProgress","running","setRunning","cancelling","setCancelling","runningRef","abortRef","AbortController","reset","current","method","abort","run","opts","fallbackError","errorMessage","ac","res","headers","Accept","stringify","text","j","Error","BrowserInstallStream","ReturnType","Cloud","Globe","MonitorPlay","Puzzle","ShieldCheck","Webhook","useMemo","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","ModeStatusKind","BackendModePicker","BackendModeOption","CdpCard","CloakCard","CloudCard","ExtensionCard","LocalCard","useBrowserDoctor","useBrowserInstallStream","AgentDefaultsBrowserPanel","props","$","_c","a","form","update","playwrightInstall","cloakInstall","t0","browserCloakBinaryPath","browserCloakCacheDir","browserEnabled","browserExtensionHost","browserExtensionPort","cacheDir","binaryPath","extensionEnabled","extensionHost","extensionPort","doctor","t1","playwright","doctorStatus","localStatus","t2","cloak","cloakStatus","t3","extension","extensionDoctorStatus","extensionStatus","t4","extensionStatusLabelFor","extensionStatusLabel","t5","browserBackendExtension","browserModeExtTagline","value","icon","name","tagline","status","statusLabel","t6","browserBackendLocal","t7","browserModeLocalTagline","t8","statusLabelFor","t9","t10","browserBackendCloakBrowser","t11","browserModeCloakTagline","t12","t13","t14","browserBackendCdp","browserModeCdpTagline","t15","browserBackendCloud","browserModeCloudTagline","t16","modeOptions","t17","browserBackend","find","o","selectedOption","SelectedIcon","t18","cardBrowserSubtitle","cardBrowserTitle","t19","e","target","checked","t20","t21","browserEnabledOn","t22","t23","desc","label","t24","e_0","browserHeadless","t25","t26","browserHeadlessOn","t27","t28","t29","e_1","browserAllowPrivateUrls","t30","t31","browserAllowPrivateOn","t32","t33","t34","browserCommandTimeout","t35","t36","Symbol","for","t37","t38","e_2","v","undefined","Number","parseInt","t39","t40","t41","t42","next","t43","t44","t45","browserConfiguringHeader","replace","t46","t47","t48","t49","t50","applyPlaywrightDoctor","refetchPlaywright","t51","applyCloakDoctor","refetchCloak","browserCloakKeepOpen","browserCloakTemporaryProfile","browserHumanPreset","browserHumanize","keepOpen","temporaryProfile","humanize","humanPreset","patch","t52","launchCdp","listCdpInstances","pingCdp","stopCdp","browserCdpUrl","next_0","t53","testCloud","browserCloudApiKey","browserCloudProjectId","browserCloudProvider","browserCloudRegion","provider","apiKey","projectId","region","patch_0","t54","extensionArtifacts","installExtensionArtifacts","openExtensionChrome","refetchExtensionArtifacts","revealExtensionFolder","startExtensionBridge","stopExtensionBridge","port","host","patch_1","t55","browserDialogPolicy","t56","t57","t58","e_3","t59","browserDialogPolicyMustRespond","t60","browserDialogPolicyAutoDismiss","t61","browserDialogPolicyAutoAccept","t62","t63","t64","browserDialogTimeout","t65","t66","t67","t68","e_4","v_0","t69","t70","t71","t72","t73","installed","d","kind","data","T","message","ready","browserStatusReady","not_installed","browserStatusNotInstalled","checking","browserStatusChecking","unknown","browserStatusUnknown","error","browserStatusError","ReturnType","connected","running","browserExtensionConnected","browserExtensionWaiting","browserExtensionServerOff","Cpu","ReactNode","Button","messages","SettingsSectionId","useLocaleStore","UseAgentDefaultsFormResult","AgentDefaultsRouteLayout","props","$","_c","sectionId","intro","vm","children","tabbed","t0","undefined","language","_temp","t1","m","a","agentSettings","pageTitle","settingsSections","hasToken","t2","Symbol","for","t3","t4","needToken","t5","loading","logs","form","error","fetchError","loadError","mutate","refresh","t6","sectionDesc","saved","saveOk","dirty","saving","t7","discard","t8","t9","save","t10","t11","t12","t13","t14","t15","t16","s","useCallback","useMemo","useReducer","useRef","useState","useGatewayConfigSwr","parseAgentDefaultsFromConfig","parseParamsJsonForSave","patchAgentDefaults","AgentDefaultsState","MessageBundle","createFormDraftReducer","syncFormDraftFromParsed","useGatewayStore","UseAgentDefaultsFormResult","hasToken","loading","fetchError","form","update","patch","Partial","dirty","saving","saveOk","error","setError","e","save","Promise","discard","mutate","ReturnType","agentDefaultsFormReducer","useAgentDefaultsForm","a","token","st","Boolean","formDraft","dispatchForm","baseline","setSaving","setSaveOk","dirtyRef","trackedParsedRef","data","swrError","isLoading","parsed","payload","config","undefined","enabled","current","dispatch","onResetDirty","Error","message","String","JSON","stringify","type","paramsJson","SyntaxError","advanced","paramsInvalidJson","value","saveError","useMemo","messages","useLocaleStore","AgentDefaultsBrowserPanel","AgentDefaultsRouteLayout","useAgentDefaultsForm","AgentBrowserSettingsPage","$","_c","language","_temp","t0","messageBundle","agentSettings","chatMessages","chat","viewModel","t1","bb0","form","t2","update","a","panelProps","t3","routeIntro","browser","state","revalidateGatewayConfig","fetchJson","apiUrl","SkillsMarketplaceConfigState","provider","storeBaseUrl","DEFAULT_SKILLS_MARKETPLACE","KNOWN_PROVIDERS","const","isRecord","v","Record","Array","isArray","normalizeSkillsMarketplaceFromConfig","config","c","gw","gateway","providerRaw","skillsMarketplaceProvider","trim","toLowerCase","includes","skillsStoreBaseUrl","replace","patchSkillsMarketplaceConfig","state","Promise","url","startsWith","Error","method","body","JSON","stringify","listKnownMarketplaceProviders","Store","Loader2","useCallback","useMemo","useReducer","useRef","useState","Button","useGatewayConfigSwr","listKnownMarketplaceProviders","normalizeSkillsMarketplaceFromConfig","patchSkillsMarketplaceConfig","SkillsMarketplaceConfigState","SettingsFormSection","SettingsFormSectionHeader","settingsInputFocusClass","createFormDraftReducer","syncFormDraftFromParsed","cn","messages","useLocaleStore","inputClassName","marketplaceFormReducer","SkillsMarketplaceConfigSection","hasToken","t","s","language","skillsMarketplaceSettings","providers","data","isLoading","parsed","payload","config","undefined","formDraft","dispatchForm","form","baseline","saving","setSaving","error","setError","dirtyRef","trackedParsedRef","enabled","dirty","current","dispatch","onResetDirty","JSON","stringify","update","patch","Partial","type","title","hint","discard","value","e","Error","message","saveError","save","provider","target","map","id","providerHint","storeBaseUrl","storeBaseUrlHint","Cpu","Plus","Trash2","Button","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsPanelProps","modelFallbackRowKey","modelId","index","all","trimmed","trim","emptySlot","slice","filter","id","length","AgentDefaultsChatModelFallbacksSection","props","$","_c","a","chat","form","update","t0","desc","modelFallbacks","label","t1","removeModelFallback","map","fb","idx","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","next","_","j","t2","t3","Symbol","for","t4","addModelFallback","t5","t6","Cpu","SlidersHorizontal","Zap","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsChatModelFallbacksSection","THINKING_KEYS","const","AgentDefaultsBasicsPanel","props","$","_c","a","chat","form","update","t0","cardModelsTitle","label","model","t1","modelId","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","desc","t4","t5","t6","cardGenerationSubtitle","cardGenerationTitle","t7","maxTokens","t8","t9","Symbol","for","t10","e","Number","parseInt","target","value","t11","t12","t13","temperature","t14","t15","t16","e_0","parseFloat","t17","t18","t19","t20","t21","cardBehaviorSubtitle","cardBehaviorTitle","t22","thinkingDefault","t23","t24","t25","t26","e_1","t27","thinkingLevels","map","k","t28","t29","t30","reasoningDefault","t31","t32","t33","e_2","t34","reasoning","off","t35","on","t36","stream","t37","t38","t39","verboseDefault","t40","t41","t42","e_3","t43","verbose","t44","t45","full","t46","t47","t48","t49","t50","fetchGatewayAgents","useAsyncResource","useBuiltinToolIdsLoad","enabled","hasToken","$","_c","t0","t1","t2","Symbol","for","t3","t4","initial","errorData","data","builtinToolIds","loading","_temp","t5","p","Array","isArray","Wrench","useCallback","useMemo","SettingsFormSection","SettingsFormSectionHeader","messages","useGatewayStore","useLocaleStore","AgentDefaultsField","AgentDefaultsPanelProps","BuiltinToolsDisableUi","sortedDisableList","BuiltinToolUiGroupKey","useBuiltinToolIdsLoad","AgentDefaultsBuiltinToolsDisableSection","props","$","_c","a","form","update","x","advanced","language","_temp","t0","m","agentsTab","agentsSettings","token","_temp2","hasToken","Boolean","builtinToolIds","loading","t1","toolsDisable","Set","flatMap","_temp3","disableSet","t2","builtinSet","t3","t4","s_2","v_0","s","trim","has","v","toSorted","_temp4","unknownDisabled","next","onDisableSetChange","groups","toolsDisableGroups","t5","key","getGroupTitle","t6","toolDescriptions","tid","getToolDescription","t7","cardToolsDisableSubtitle","cardToolsDisableTitle","t8","needToken","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t9","toolsDisableFieldLabel","toolsDisableHint","t10","x_0","y","localeCompare","s_1","s_0","Code2","FileText","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsBuiltinToolsDisableSection","AgentDefaultsCapabilitiesPanel","props","$","_c","a","chat","form","update","x","advanced","t0","cardWebExtractSubtitle","cardWebExtractTitle","t1","webExtract","modelId","model","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","webExtractModel","webExtractModelDesc","t4","webExtractMaxLength","t5","webExtractMaxLengthDesc","t6","Symbol","for","t7","maxLength","t8","e","v","target","value","undefined","Number","parseInt","t9","t10","t11","t12","t13","cardDelegateSubtitle","cardDelegateTitle","t14","delegate","e_0","enabled","checked","t15","t16","delegateEnabledOn","t17","t18","delegateEnabled","delegateEnabledDesc","t19","executeCode","e_1","t20","t21","executeCodeEnabledOn","t22","t23","executeCodeEnabled","executeCodeEnabledDesc","t24","t25","t26","t27","ChevronDown","ReactNode","cn","Props","showLabel","hideLabel","children","className","AgentDefaultsAdvancedDetails","t0","$","_c","t1","t2","Symbol","for","t3","t4","t5","t6","t7","Layers2","Scissors","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsAdvancedDetails","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsContextPanel","props","$","_c","a","form","update","x","advanced","t0","cardCompactionSubtitle","cardCompactionTitle","t1","compaction","e","enabled","target","checked","t2","t3","compactionEnabledOn","t4","t5","compactionEnabled","compactionEnabledDesc","t6","compactionMode","t7","compactionModeDesc","t8","Symbol","for","t9","e_0","mode","value","t10","compactionModeDefault","t11","compactionModeSafeguard","t12","t13","t14","advancedOptionsShow","t15","advancedOptionsHide","t16","reserveTokens","t17","reserveTokensDesc","t18","t19","e_1","Number","parseInt","t20","t21","t22","triggerThreshold","t23","triggerThresholdDesc","t24","t25","e_2","parseFloat","t26","t27","t28","minMessagesBeforeCompact","t29","minMessagesBeforeCompactDesc","t30","t31","e_3","t32","t33","t34","keepRecentMessages","t35","keepRecentMessagesDesc","t36","t37","e_4","t38","t39","t40","evictionWindow","t41","evictionWindowDesc","t42","t43","e_5","t44","t45","t46","retentionWindow","t47","retentionWindowDesc","t48","t49","e_6","t50","t51","t52","t53","t54","t55","t56","cardPruningSubtitle","cardPruningTitle","t57","pruning","e_7","t58","t59","pruningEnabledOn","t60","t61","pruningEnabled","pruningEnabledDesc","t62","maxToolResultChars","t63","maxToolResultCharsDesc","t64","t65","e_8","t66","t67","t68","t69","t70","headKeepRatio","t71","headKeepRatioDesc","t72","t73","e_9","t74","t75","t76","tailKeepRatio","t77","tailKeepRatioDesc","t78","t79","e_10","t80","t81","t82","t83","t84","t85","t86","Clock","SettingsFormSection","SettingsFormSectionHeader","cn","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsExpertPanel","props","$","_c","a","form","update","x","advanced","t0","cardParamsSubtitle","cardParamsTitle","t1","paramsJson","t2","paramsJsonDesc","t3","Symbol","for","t4","e","target","value","t5","t6","t7","Timer","Link","SettingsFormSection","SettingsFormSectionHeader","pathForTab","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsLimitsPanel","props","$","_c","a","form","update","x","advanced","t0","cardLimitsSubtitle","cardLimitsTitle","t1","maxTaskDurationMs","t2","maxTaskDurationMsDesc","t3","Symbol","for","t4","maxTaskDurationMinutes","t5","e","v","target","value","undefined","num","Number","parseInt","isNaN","Math","min","max","t6","maxTaskDurationPlaceholder","t7","t8","maxRequestsPerTurn","t9","maxRequestsPerTurnDesc","t10","t11","e_0","t12","t13","t14","maxToolFailuresPerTurn","t15","maxToolFailuresPerTurnDesc","t16","t17","e_1","t18","t19","t20","label","maxToolIterations","t21","desc","t22","t23","e_2","t24","t25","t26","t27","t28","t29","t30","goalsCheckLink","t31","goalsCheckLinkHint","t32","t33","Brain","Search","Sparkles","ModelSelector","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsAdvancedDetails","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsMemoryPanel","props","$","_c","a","chat","form","update","x","advanced","t0","cardMemorySubtitle","cardMemoryTitle","t1","memory","e","enabled","target","checked","t2","t3","memoryEnabledOn","t4","t5","memoryEnabled","memoryEnabledDesc","t6","e_0","useEnhancedSystem","t7","t8","useEnhancedSystemOn","t9","t10","useEnhancedSystemDesc","t11","e_1","userProfileEnabled","t12","t13","userProfileEnabledOn","t14","t15","userProfileEnabledDesc","t16","memoryProvider","t17","memoryProviderDesc","t18","Symbol","for","t19","e_2","provider","value","t20","memoryProviderUnset","t21","t22","t23","t24","t25","t26","advancedOptionsShow","t27","advancedOptionsHide","t28","injectionFrequency","t29","injectionFrequencyDesc","t30","t31","e_3","t32","injectionFrequencyUnset","t33","injectionEveryTurn","t34","injectionFirstTurn","t35","t36","t37","memoryCharLimit","t38","memoryCharLimitDesc","t39","t40","t41","e_4","v","undefined","Number","parseInt","t42","t43","t44","userCharLimit","t45","userCharLimitDesc","t46","t47","t48","e_5","v_0","t49","t50","t51","contextCadence","t52","contextCadenceDesc","t53","t54","t55","e_6","v_1","t56","t57","t58","dialecticCadence","t59","dialecticCadenceDesc","t60","t61","t62","e_7","v_2","t63","t64","t65","t66","t67","t68","t69","cardSessionSearchSubtitle","cardSessionSearchTitle","t70","sessionSearch","modelId","summaryModel","t71","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t72","sessionSearchSummaryModel","sessionSearchSummaryModelDesc","t73","t74","cardReviewSubtitle","cardReviewTitle","t75","backgroundReview","e_8","t76","t77","reviewEnabledOn","t78","t79","reviewEnabled","reviewEnabledDesc","t80","t81","t82","memoryNudgeInterval","t83","memoryNudgeIntervalDesc","t84","t85","e_9","t86","t87","t88","skillNudgeInterval","t89","skillNudgeIntervalDesc","t90","t91","e_10","t92","t93","t94","reviewMaxToolRounds","t95","reviewMaxToolRoundsDesc","t96","t97","e_11","maxToolRounds","t98","t99","t100","reviewMaxHistoryMessages","t101","reviewMaxHistoryMessagesDesc","t102","t103","e_12","maxHistoryMessages","t104","t105","t106","reviewMaxDurationMs","t107","reviewMaxDurationMsDesc","t108","t109","maxDurationMs","Math","round","t110","e_13","t111","t112","t113","t114","t115","t116","t117","Library","useCallback","useMemo","Link","Button","SkillCatalogRow","SettingsFormSection","SettingsFormSectionHeader","cn","messages","pathForTab","useGatewayStore","useLocaleStore","AgentDefaultsField","AgentDefaultsPanelProps","agentDefaultsQuickActionButtonClass","useSkillsCatalogLoad","rowId","s","name","directoryId","trim","allowlistFromSelection","selected","Set","catalogIds","out","id","has","push","extra","filter","includes","sort","AgentDefaultsSkillsAllowlistPanel","props","$","_c","a","form","update","x","advanced","language","_temp","t0","m","agentsTab","agentsSettings","token","_temp2","hasToken","Boolean","catalogForPick","skillsCatalogLoading","t1","map","restrictMode","skillsAllowlist","length","t2","flatMap","_temp3","allowSet","t3","t4","unknownAllowlistIds","_temp4","syntheticUnknownRows","t5","rowsToRender","t6","setAllSkills","t7","setRestrictWithAllCatalogSelected","t8","id_1","checked","_temp5","add","delete","size","toggleId","t9","cardSkillsSubtitle","cardSkillsTitle","t10","t11","skillsAllowlistDesc","t12","skillsAllowlistModeAll","t13","t14","t15","skillsAllowlistModeRestrict","t16","t17","Symbol","for","t18","skillsLibraryLink","t19","t20","needToken","skillsEmptyCatalog","skillsNoDescription","skillsAllowlistNotInCatalog","s_3","id_2","on","desc","description","descLine","unknown","t21","t22","t23","s_2","v_0","v","id_0","s_1","s_0","ScrollText","SettingsFormSection","SettingsFormSectionHeader","cn","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsSystemPromptPanel","props","$","_c","a","form","update","x","advanced","t0","cardSystemPromptSubtitle","cardSystemPromptTitle","t1","systemPromptOverride","t2","systemPromptOverrideDesc","t3","Symbol","for","t4","e","target","value","t5","systemPromptPlaceholder","t6","t7","Folder","Button","DirectoryPickerPathField","SettingsFormSection","SettingsFormSectionHeader","DEFAULT_AGENT_WORKSPACE","AgentDefaultsField","AgentDefaultsPanelProps","agentDefaultsQuickActionButtonClass","inputClassName","AgentDefaultsWorkspacePanel","props","$","_c","a","chat","form","update","t0","workspace","trim","workspaceTrimmed","isDefaultWorkspace","t1","cardWorkspaceSubtitle","cardWorkspaceTitle","t2","label","t3","desc","t4","t5","path","t6","workingDirectory","t7","notSet","t8","Symbol","for","t9","t10","setDefaultWorkspace","t11","t12","t13","mediaMaxMb","t14","t15","t16","t17","e","v","target","value","undefined","Number","t18","t19","t20","t21","useCallback","useMemo","useSearchParams","SkillsMarketplaceConfigSection","messages","cn","interaction","useLocaleStore","AgentDefaultsPanelProps","AgentDefaultsBasicsPanel","AgentDefaultsCapabilitiesPanel","AgentDefaultsContextPanel","AgentDefaultsExpertPanel","AgentDefaultsLimitsPanel","AgentDefaultsMemoryPanel","AgentDefaultsSkillsAllowlistPanel","AgentDefaultsSystemPromptPanel","AgentDefaultsWorkspacePanel","AGENT_DEFAULTS_TABS","AgentDefaultsTabId","parseAgentDefaultsTab","AgentDefaultsRouteLayout","useAgentDefaultsForm","tabLabel","a","ReturnType","tab","defaultsTabs","tabIntro","routeIntro","chat","workspace","runtime","context","memory","tools","skills","systemPrompt","AgentDefaultsTabPanel","t0","$","_c","pp","hasToken","t1","t2","t3","AgentDefaultsTabbedPage","language","_temp","m","agentSettings","searchParams","setSearchParams","activeTab","get","vm","bb0","form","update","prev","next","URLSearchParams","delete","set","replace","setActiveTab","intro","defaultsTabsAria","t4","e","key","preventDefault","idx","indexOf","delta","next_0","length","t5","map","tab_0","selected","press","t6","t7","t8","t9","t10","t11","t12","t13","s"],"sources":["../../../../../web/src/features/settings/agents/agent-delete-confirm-dialog.tsx","../../../../../web/src/features/settings/agents/agents-editor-sidebar.tsx","../../../../../web/src/features/settings/agents/agents-editor-modal.tsx","../../../../../web/src/features/settings/agents/utils.ts","../../../../../web/src/features/settings/agents/tabs/agent-channels-tab.tsx","../../../../../web/src/features/scheduling/schedule-summary.tsx","../../../../../web/src/features/settings/agents/tabs/agent-cron-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-files-tab.tsx","../../../../../web/src/features/fs/directory-picker-path-field.tsx","../../../../../web/src/features/settings/agents/agent-config-inheritance-summary.tsx","../../../../../web/src/features/settings/agents/agent-avatar-picker.tsx","../../../../../web/src/features/settings/agents/agent-profile-markdown.ts","../../../../../web/src/features/settings/agents/tabs/agent-overview-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-profile-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-skills-tab.tsx","../../../../../web/src/features/settings/agents/builtin-tool-disable-groups.ts","../../../../../web/src/features/settings/agents/defaults-field-styles.ts","../../../../../web/src/features/settings/agents/builtin-tools-disable-ui.tsx","../../../../../web/src/features/settings/agents/tabs/agent-tools-tab.tsx","../../../../../web/src/features/settings/agents/agents-editor-panel-content.tsx","../../../../../web/src/features/settings/agents/agents-list-grid.tsx","../../../../../web/src/features/settings/agents/agents-settings-header.tsx","../../../../../web/src/features/settings/agents/create-agent-dialog.tsx","../../../../../web/src/features/settings/agents/preset-agents.ts","../../../../../web/src/features/settings/agents/preset-agents-setup.tsx","../../../../../web/src/features/settings/config-api.ts","../../../../../web/src/lib/agent-id.ts","../../../../../web/src/features/settings/suggest-agent-workspace.ts","../../../../../web/src/features/settings/agents/agents-settings-toolbar.tsx","../../../../../web/src/features/settings/agents/hooks/use-agent-overview-profile-markdown.ts","../../../../../web/src/features/settings/agents/hooks/use-agent-profile-files.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-channel-bindings.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-cron-jobs.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-skills-catalog.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-tools-skills-local-state.ts","../../../../../web/src/features/settings/agents/use-agents-settings-panel.tsx","../../../../../web/src/features/settings/agents/agents-settings-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-field.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/backend-mode-picker.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/backend-mode-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cdp-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/browser-install-progress.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cloak-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cloud-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/extension-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/local-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/use-browser-doctor.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/use-browser-install-stream.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-route-layout.tsx","../../../../../web/src/features/settings/agents/use-agent-defaults-form.ts","../../../../../web/src/features/settings/agents/agent-browser-settings-page.tsx","../../../../../web/src/features/skills/skills-marketplace-config-api.ts","../../../../../web/src/features/skills/skills-marketplace-config-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/chat-model-fallbacks-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/basics-panel.tsx","../../../../../web/src/features/settings/agents/hooks/use-builtin-tool-ids.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/builtin-tools-disable-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/capabilities-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-advanced-details.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/context-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/expert-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/limits-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/memory-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/skills-allowlist-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/system-prompt-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/workspace-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-tabbed-page.tsx"],"sourcesContent":["import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nexport type AgentDeleteConfirmDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n busy: boolean;\n deletePurge: boolean;\n deleteTarget: GatewayAgentRow | null;\n deleteConfirmText: string;\n onDeleteConfirmTextChange: (value: string) => void;\n onConfirm: () => void;\n onCancel: () => void;\n a: Pick<\n AgentsSettingsMessages,\n | 'purgeDisk'\n | 'removeFromConfig'\n | 'confirmDeletePurge'\n | 'confirmDelete'\n | 'purgeConfirmLabel'\n | 'purgeConfirmPlaceholder'\n | 'purgeConfirmHint'\n | 'createModalCancel'\n >;\n};\n\nexport function AgentDeleteConfirmDialog({\n open,\n onOpenChange,\n busy,\n deletePurge,\n deleteTarget,\n deleteConfirmText,\n onDeleteConfirmTextChange,\n onConfirm,\n onCancel,\n a,\n}: AgentDeleteConfirmDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]\" />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 z-[81] w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-edge bg-surface-panel p-4 shadow-popover',\n 'dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {deletePurge ? a.purgeDisk : a.removeFromConfig}\n </Dialog.Title>\n <Dialog.Description className=\"mt-2 whitespace-pre-wrap text-sm leading-relaxed text-fg-muted\">\n {deletePurge ? a.confirmDeletePurge : a.confirmDelete}\n </Dialog.Description>\n\n {deletePurge && deleteTarget ? (\n <div className=\"mt-3 space-y-3\">\n <label className=\"mb-2 block text-sm font-medium text-fg\" htmlFor=\"agent-delete-confirm\">\n {a.purgeConfirmLabel}\n </label>\n <input\n id=\"agent-delete-confirm\"\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n className={cn(\n 'w-full rounded-md border border-edge bg-surface-panel px-3 py-1.5 font-mono text-xs text-fg',\n 'placeholder:text-fg-subtle',\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 'dark:border-edge',\n )}\n placeholder={a.purgeConfirmPlaceholder.replace('{{agentId}}', deleteTarget.id)}\n value={deleteConfirmText}\n onChange={(e) => onDeleteConfirmTextChange(e.target.value)}\n />\n <p className=\"pt-0.5 text-xs text-fg-muted\">\n {a.purgeConfirmHint.replace('{{agentId}}', deleteTarget.id)}\n </p>\n </div>\n ) : null}\n\n <div className=\"mt-4 flex flex-wrap items-center justify-end gap-2 border-t border-edge-subtle/60 pt-3\">\n <Button type=\"button\" variant=\"ghost\" disabled={busy} onClick={onCancel}>\n {a.createModalCancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={\n deletePurge\n ? 'border-red-200 text-red-700 hover:bg-red-50 dark:border-red-900/60 dark:text-red-300 dark:hover:bg-red-950/40'\n : undefined\n }\n disabled={\n busy ||\n !deleteTarget ||\n (deletePurge && deleteConfirmText.trim().toLowerCase() !== deleteTarget.id.toLowerCase())\n }\n onClick={onConfirm}\n >\n {deletePurge ? a.purgeDisk : a.removeFromConfig}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { Clock, FileText, Plug, Puzzle, User, UserCircle, Wrench } from 'lucide-react';\n\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nimport type { AgentPanel } from './utils';\n\nconst mainNav: { id: AgentPanel; labelKey: keyof AgentsSettingsMessages; icon: typeof User }[] = [\n { id: 'overview', labelKey: 'navIdentity', icon: User },\n { id: 'profile', labelKey: 'navProfile', icon: UserCircle },\n { id: 'tools', labelKey: 'navTools', icon: Wrench },\n { id: 'skills', labelKey: 'navSkills', icon: Puzzle },\n { id: 'files', labelKey: 'navCoreFiles', icon: FileText },\n];\n\nconst advancedNav: { id: AgentPanel; labelKey: keyof AgentsSettingsMessages; icon: typeof Plug }[] = [\n { id: 'channels', labelKey: 'tabChannels', icon: Plug },\n { id: 'cron', labelKey: 'tabCron', icon: Clock },\n];\n\nexport function AgentsEditorSidebar(props: {\n a: AgentsSettingsMessages;\n panel: AgentPanel;\n onPanelChange: (p: AgentPanel) => void;\n}) {\n const { a, panel, onPanelChange } = props;\n\n const item = (id: AgentPanel, label: string, Icon: typeof User) => (\n <button\n key={id}\n type=\"button\"\n onClick={() => onPanelChange(id)}\n className={cn(\n 'flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm font-medium transition-colors',\n interaction.press,\n panel === id\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover hover:text-fg',\n )}\n >\n <Icon className=\"size-4 shrink-0 opacity-90\" strokeWidth={2} aria-hidden />\n <span className=\"min-w-0 truncate\">{label}</span>\n </button>\n );\n\n return (\n <nav className=\"flex w-full flex-col gap-1\" aria-label={a.editorNavAria}>\n <div className=\"flex flex-col gap-0.5\">\n {mainNav.map(({ id, labelKey, icon }) => item(id, a[labelKey] as string, icon))}\n </div>\n <p className=\"mt-4 px-3 text-[10px] font-semibold uppercase tracking-wide text-fg-subtle\">\n {a.navAdvanced}\n </p>\n <div className=\"flex flex-col gap-0.5\">\n {advancedNav.map(({ id, labelKey, icon }) => item(id, a[labelKey] as string, icon))}\n </div>\n </nav>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton } from '@/lib/interaction';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\nimport { SettingsShellLayerProvider } from '@/lib/settings-shell-layer-context';\n\nimport { AgentsEditorSidebar } from './agents-editor-sidebar';\nimport type { AgentPanel } from './utils';\n\nexport function AgentsEditorModal(props: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n a: AgentsSettingsMessages;\n title: string;\n subtitle: string;\n panel: AgentPanel;\n onPanelChange: (p: AgentPanel) => void;\n onFooterSave: () => void;\n footerSaveDisabled: boolean;\n /** Brief \"Saved\" flash after a successful save. */\n footerSavedFlash?: boolean;\n busy: boolean;\n children: ReactNode;\n}) {\n const {\n open,\n onOpenChange,\n a,\n title,\n subtitle,\n panel,\n onPanelChange,\n onFooterSave,\n footerSaveDisabled,\n footerSavedFlash,\n busy,\n children,\n } = props;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('xopc-dialog-overlay fixed inset-0 bg-scrim', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed flex flex-col overflow-hidden rounded-xl border border-edge bg-surface-panel shadow-popover dark:border-edge',\n SETTINGS_SHELL_CONTENT_Z,\n /* Desktop: roomy editor; inner panels scroll. Small viewports stay inset. */\n 'inset-4 h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] min-h-0',\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:h-[min(88vh,48rem)] sm:max-h-[min(88vh,48rem)] sm:min-h-[32rem] sm:w-[min(100%-2rem,58rem)] sm:-translate-x-1/2 sm:-translate-y-1/2',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <SettingsShellLayerProvider layer=\"modal\">\n <div className=\"flex shrink-0 items-start justify-between gap-2 border-b border-edge-subtle px-4 pb-3 pt-4 dark:border-edge\">\n <div className=\"min-w-0 pr-2\">\n <Dialog.Title className=\"text-base font-semibold leading-snug text-fg\">{title}</Dialog.Title>\n <Dialog.Description className=\"mt-1 font-mono text-xs text-fg-muted\">{subtitle}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n\n <div className=\"flex min-h-0 flex-1 flex-col sm:flex-row sm:overflow-hidden\">\n <div className=\"shrink-0 border-b border-edge-subtle px-4 py-3 dark:border-edge sm:flex sm:w-56 sm:shrink-0 sm:flex-col sm:overflow-y-auto sm:border-b-0 sm:border-r sm:px-0 sm:py-4 sm:pl-4 sm:pr-3\">\n <AgentsEditorSidebar a={a} panel={panel} onPanelChange={onPanelChange} />\n </div>\n\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {/* Flex column + min-h-0 lets Tools/Skills lists fill remaining height and scroll inside */}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden p-4 sm:pl-2 sm:pr-5\">\n {children}\n </div>\n <div className=\"flex shrink-0 flex-col gap-1 border-t border-edge-subtle px-4 py-3 dark:border-edge sm:flex-row sm:items-center sm:justify-end sm:gap-3\">\n {footerSavedFlash ? (\n <p className=\"order-2 text-center text-xs font-medium text-green-600 sm:order-1 sm:mr-auto sm:text-left dark:text-green-400\">\n ✓ {a.personaSaved}\n </p>\n ) : footerSaveDisabled ? (\n <p className=\"order-2 text-center text-xs text-fg-muted sm:order-1 sm:mr-auto sm:text-left\">\n {a.footerSaveNotApplicable}\n </p>\n ) : null}\n <Button\n type=\"button\"\n className=\"order-1 w-full sm:order-2 sm:w-auto\"\n disabled={busy || footerSaveDisabled}\n onClick={() => void onFooterSave()}\n >\n {a.save}\n </Button>\n </div>\n </div>\n </div>\n </SettingsShellLayerProvider>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { GatewayConfigBinding } from '@/features/settings/agents-admin-api';\nimport type { CronJob, SessionChatId } from '@/features/cron/cron-api';\nimport { cn } from '@/lib/cn';\nimport { settingsInputFocusClass } from '@/lib/form-field-width';\n\nexport type AgentPanel = 'overview' | 'profile' | 'files' | 'tools' | 'skills' | 'channels' | 'cron';\n\nexport function agentsSettingsInputClass(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function jobMatchesAgent(job: CronJob, agentId: string, defaultId: string): boolean {\n const raw = job.agentId?.trim().toLowerCase();\n if (raw) {\n return raw === agentId.toLowerCase();\n }\n return agentId.toLowerCase() === defaultId.toLowerCase();\n}\n\nexport function matchSummary(m: GatewayConfigBinding['match']): string {\n const parts = [m.channel, m.accountId, m.peerKind, m.peerId].filter(\n (x): x is string => typeof x === 'string' && x.length > 0,\n );\n return parts.join(' · ') || m.channel;\n}\n\n/** Build a `bindings[].match` for the add-binding form. Custom glob wins over session pick. */\nexport function buildNewBindingMatch(\n channel: string,\n customPeer: string,\n sessionIdx: number | null,\n sessions: SessionChatId[],\n): GatewayConfigBinding['match'] {\n const ch = channel.trim();\n const custom = customPeer.trim();\n if (custom) {\n return { channel: ch, peerId: custom };\n }\n if (sessionIdx != null) {\n const s = sessions[sessionIdx];\n if (!s) {\n return { channel: ch };\n }\n const m: GatewayConfigBinding['match'] = { channel: ch };\n if (s.accountId?.trim()) {\n m.accountId = s.accountId.trim();\n }\n if (s.peerKind?.trim()) {\n m.peerKind = s.peerKind.trim();\n }\n const peer = s.peerId?.trim() || s.chatId?.trim();\n if (peer) {\n m.peerId = peer;\n }\n return m;\n }\n return { channel: ch };\n}\n","import { Link2, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayConfigBinding } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { ChannelStatus, SessionChatId } from '@/features/cron/cron-api';\nimport { formatRecipientOptionLabel } from '@/features/cron/cron-utils';\nimport { selectControlBaseClass } from '@/lib/form-field-width';\nimport { agentsSettingsInputClass, matchSummary } from '../utils';\nimport type { AgentsSettingsMessages, MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nconst channelsPeerIdSelectClass = cn(\n selectControlBaseClass,\n 'w-full text-xs sm:w-auto sm:min-w-[11rem] sm:max-w-[17rem] sm:shrink-0',\n);\n\ntype LastActiveLabels = MessageBundle['cron']['lastActiveLabels'];\n\nexport function AgentChannelsTab(props: {\n a: AgentsSettingsMessages;\n busy: boolean;\n bindingsLoading: boolean;\n agentBindings: GatewayConfigBinding[];\n onRemoveBinding: (rule: GatewayConfigBinding) => void;\n onAddBinding: (e: React.FormEvent) => void;\n channelStatuses: ChannelStatus[];\n channelsStatusLoading: boolean;\n useManualChannel: boolean;\n newBindChannel: string;\n setNewBindChannel: (v: string) => void;\n bindSessionChats: SessionChatId[];\n sessionsLoading: boolean;\n newBindSessionIdx: number | null;\n setNewBindSessionIdx: (v: number | null) => void;\n newBindCustomPeer: string;\n setNewBindCustomPeer: (v: string) => void;\n onRefreshSessions: () => void;\n lastActiveLabels: LastActiveLabels;\n /** Same copy as `cron.selectRecipient` — empty option in peer id dropdown. */\n selectRecipient: string;\n}) {\n const {\n a,\n busy,\n bindingsLoading,\n agentBindings,\n onRemoveBinding,\n onAddBinding,\n channelStatuses,\n channelsStatusLoading,\n useManualChannel,\n newBindChannel,\n setNewBindChannel,\n bindSessionChats,\n sessionsLoading,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n onRefreshSessions,\n lastActiveLabels,\n selectRecipient,\n } = props;\n\n const showPeerForm = !channelsStatusLoading && (useManualChannel || channelStatuses.length > 0);\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col overflow-y-auto\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={Link2}\n title={a.channelsTitle}\n subtitle={a.channelsHint}\n />\n {bindingsLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsLoading}</p>\n ) : agentBindings.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsNone}</p>\n ) : (\n <ul className=\"flex flex-col gap-2 text-sm\">\n {agentBindings.map((b) => (\n <li\n key={`${b.match.channel}-${matchSummary(b.match)}`}\n className=\"flex flex-wrap items-center justify-between gap-2 rounded-lg border border-edge bg-surface-panel px-3 py-2\"\n >\n <span className=\"font-mono text-xs\">{matchSummary(b.match)}</span>\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onRemoveBinding(b)}>\n {a.removeBinding}\n </Button>\n </li>\n ))}\n </ul>\n )}\n <form className=\"mt-4 flex flex-col gap-3\" onSubmit={onAddBinding}>\n {channelsStatusLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsLoadingChannels}</p>\n ) : useManualChannel ? (\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.channelLabel}</span>\n <input\n className={agentsSettingsInputClass()}\n value={newBindChannel}\n onChange={(e) => setNewBindChannel(e.target.value)}\n placeholder=\"telegram\"\n autoComplete=\"off\"\n />\n <p className=\"text-xs text-fg-muted\">{a.channelsManualChannelHint}</p>\n </label>\n ) : (\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.channelLabel}</span>\n <select\n className={cn(agentsSettingsInputClass(), 'py-2')}\n value={newBindChannel}\n onChange={(e) => {\n setNewBindChannel(e.target.value);\n setNewBindSessionIdx(null);\n setNewBindCustomPeer('');\n }}\n >\n {channelStatuses.map((ch) => (\n <option key={ch.name} value={ch.name} disabled={!ch.enabled}>\n {ch.name} {!ch.enabled ? a.channelsDisabledSuffix : ''}\n </option>\n ))}\n </select>\n </label>\n )}\n\n {showPeerForm && newBindChannel.trim() ? (\n <div className=\"flex flex-col gap-2 border-t border-edge-subtle pt-3 text-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-fg-muted\">{a.channelsSessionLabel}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-7 gap-1 px-2 text-xs\"\n disabled={busy || sessionsLoading || !newBindChannel.trim()}\n title={a.channelsRefreshSessionsHint}\n onClick={() => onRefreshSessions()}\n >\n <RefreshCw className={cn('size-3.5', sessionsLoading && 'animate-spin')} strokeWidth={1.75} />\n {a.channelsRefreshSessions}\n </Button>\n </div>\n {sessionsLoading && bindSessionChats.length === 0 ? (\n <p className=\"text-xs text-fg-muted\">{a.channelsLoadingSessions}</p>\n ) : null}\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-fg-muted\">{a.channelsPeerFromSessions}</span>\n <select\n className={cn(agentsSettingsInputClass(), 'py-2')}\n value={newBindSessionIdx == null ? '' : String(newBindSessionIdx)}\n disabled={busy || !newBindChannel.trim() || Boolean(newBindCustomPeer.trim())}\n onChange={(e) => {\n const v = e.target.value;\n setNewBindSessionIdx(v === '' ? null : Number(v));\n }}\n >\n <option value=\"\">{a.channelsPeerAny}</option>\n {bindSessionChats.map((item, idx) => (\n <option key={`${item.channel}-${item.chatId}`} value={String(idx)}>\n {formatRecipientOptionLabel(item, lastActiveLabels)}\n </option>\n ))}\n </select>\n </label>\n {bindSessionChats.length === 0 && newBindChannel.trim() && !sessionsLoading ? (\n <p className=\"text-xs text-fg-muted\">{a.channelsNoSessionsHint}</p>\n ) : null}\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-fg-muted\">{a.peerIdLabel}</span>\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(agentsSettingsInputClass(), 'min-w-0 w-full sm:flex-1')}\n value={newBindCustomPeer}\n onChange={(e) => {\n setNewBindCustomPeer(e.target.value);\n if (e.target.value.trim()) {\n setNewBindSessionIdx(null);\n }\n }}\n placeholder={a.channelsCustomPeerPlaceholder}\n autoComplete=\"off\"\n />\n <select\n className={channelsPeerIdSelectClass}\n value={newBindCustomPeer}\n onChange={(e) => {\n const v = e.target.value;\n if (v) {\n setNewBindCustomPeer(v);\n } else {\n setNewBindCustomPeer('');\n }\n setNewBindSessionIdx(null);\n }}\n >\n <option value=\"\">{selectRecipient}</option>\n {bindSessionChats.map((item) => (\n <option key={`${item.channel}-${item.chatId}`} value={item.chatId}>\n {formatRecipientOptionLabel(item, lastActiveLabels)}\n </option>\n ))}\n </select>\n </div>\n <p className=\"text-xs text-fg-muted\">{a.channelsCustomPeerHint}</p>\n </div>\n </div>\n ) : null}\n\n <div>\n <Button type=\"submit\" disabled={busy || !newBindChannel.trim() || channelsStatusLoading}>\n {a.addBinding}\n </Button>\n </div>\n </form>\n </SettingsFormSection>\n );\n}\n","import {\n formatCronExpressionLabel,\n type ScheduleBadgeLabels,\n} from '@/features/scheduling/cron/format-cron-label';\nimport {\n formatIntervalMsLabel,\n type IntervalPresetLabels,\n} from '@/features/scheduling/interval/format-interval-label';\n\ntype ScheduleSummaryShell = {\n locale: string;\n className?: string;\n};\n\nexport type CronScheduleSummaryProps = ScheduleSummaryShell & {\n kind: 'cron';\n expression: string;\n labels: ScheduleBadgeLabels;\n timezone?: string;\n nextRun?: string | null;\n};\n\nexport type IntervalScheduleSummaryProps = ScheduleSummaryShell & {\n kind: 'interval';\n valueMs: number;\n presetLabels?: IntervalPresetLabels;\n};\n\nexport type ScheduleSummaryProps = CronScheduleSummaryProps | IntervalScheduleSummaryProps;\n\nexport function ScheduleSummary(props: ScheduleSummaryProps) {\n const text =\n props.kind === 'cron'\n ? formatCronExpressionLabel(props.expression, props.locale, props.labels, {\n timezone: props.timezone,\n nextRun: props.nextRun,\n })\n : formatIntervalMsLabel(props.valueMs, props.locale, props.presetLabels);\n\n return <span className={props.className}>{text}</span>;\n}\n","import { AlarmClock } from 'lucide-react';\n\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport { cronJobBodyText, type CronJob } from '@/features/cron/cron-api';\nimport { ScheduleSummary } from '@/features/scheduling/schedule-summary';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { agentsSettingsInputClass } from '../utils';\n\nexport function AgentCronTab(props: {\n a: AgentsSettingsMessages;\n data: { agents: GatewayAgentRow[] };\n selected: GatewayAgentRow;\n busy: boolean;\n cronLoading: boolean;\n agentCronJobs: CronJob[];\n onSetCronJobAgent: (job: CronJob, agentKey: string) => void;\n}) {\n const { a, data, busy, cronLoading, agentCronJobs, onSetCronJobAgent } = props;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const localeTag = language === 'zh' ? 'zh-CN' : 'en-US';\n const scheduleBadgeLabels = m.cron.scheduleBadge;\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col overflow-y-auto\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={AlarmClock}\n title={a.cronTitle}\n subtitle={a.cronHint}\n />\n {cronLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.cronLoading}</p>\n ) : agentCronJobs.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{a.cronNone}</p>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full min-w-[32rem] border-collapse text-left text-sm\">\n <thead>\n <tr className=\"border-b border-edge text-fg-muted\">\n <th className=\"py-2 pr-3 font-medium\">{a.cronColSchedule}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColMessage}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColSession}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColAgent}</th>\n </tr>\n </thead>\n <tbody>\n {agentCronJobs.map((job) => {\n const usesDefaultAgent = !job.agentId?.trim();\n const value = usesDefaultAgent ? '' : job.agentId!.trim().toLowerCase();\n return (\n <tr key={job.id} className=\"border-b border-edge-subtle\">\n <td className=\"py-2 pr-3\">\n <div className=\"flex flex-col gap-0.5\">\n <ScheduleSummary\n kind=\"cron\"\n expression={job.schedule}\n locale={localeTag}\n labels={scheduleBadgeLabels}\n timezone={job.timezone}\n nextRun={job.next_run}\n className=\"text-sm font-medium text-fg\"\n />\n <span className=\"truncate font-mono text-[0.65rem] text-fg-subtle\" title={job.schedule}>\n {job.schedule}\n </span>\n </div>\n </td>\n <td className=\"max-w-[12rem] truncate py-2 pr-3 text-xs\" title={cronJobBodyText(job)}>\n {cronJobBodyText(job)}\n </td>\n <td className=\"py-2 pr-3 text-xs\">{job.sessionTarget ?? 'main'}</td>\n <td className=\"py-2 pr-3\">\n <select\n className={cn(agentsSettingsInputClass(), 'min-w-[8rem] py-1 text-xs')}\n value={value}\n disabled={busy || job.sessionTarget !== 'isolated'}\n onChange={(e) => void onSetCronJobAgent(job, e.target.value)}\n >\n <option value=\"\">{usesDefaultAgent ? a.cronAgentDefault : a.cronAgentClear}</option>\n {data.agents.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {ag.id}\n </option>\n ))}\n </select>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </SettingsFormSection>\n );\n}\n","import { Eye, SquarePen } from 'lucide-react';\n\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { useThemeStore } from '@/stores/theme-store';\n\nimport { agentsSettingsInputClass } from '../utils';\n\nexport function AgentFilesTab(props: {\n a: AgentsSettingsMessages;\n filesLoading: boolean;\n files: { files: { name: string; missing: boolean }[] } | null;\n activeFile: string | null;\n setActiveFile: (name: string) => void;\n filesViewMode: 'edit' | 'preview';\n setFilesViewMode: (m: 'edit' | 'preview') => void;\n fileDraft: string;\n setFileDraft: (v: string) => void;\n fileSaving: boolean;\n profileFileLoading: boolean;\n /** Bumps when profile Markdown body is loaded from the server (remounts CodeMirror). */\n profileEditorNonce: number;\n}) {\n const {\n a,\n filesLoading,\n files,\n activeFile,\n setActiveFile,\n filesViewMode,\n setFilesViewMode,\n fileDraft,\n setFileDraft,\n fileSaving,\n profileFileLoading,\n profileEditorNonce,\n } = props;\n\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden\">\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesHint}</p>\n {filesLoading ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesLoading}</p>\n ) : files ? (\n <div className=\"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden\">\n <nav\n className=\"flex shrink-0 flex-row flex-wrap gap-x-0.5 gap-y-0 border-b border-edge-subtle\"\n aria-label={a.navCoreFiles}\n >\n {files.files.map((f) => (\n <button\n key={f.name}\n type=\"button\"\n className={cn(\n '-mb-px shrink-0 border-b-2 border-transparent px-3 py-2 text-left font-mono text-xs whitespace-nowrap transition-colors',\n interaction.press,\n activeFile === f.name\n ? 'border-accent text-fg'\n : 'text-fg-muted hover:border-edge-subtle hover:text-fg',\n f.missing && 'opacity-60',\n )}\n onClick={() => setActiveFile(f.name)}\n >\n {f.name}\n {f.missing ? ` (${a.missing})` : ''}\n </button>\n ))}\n </nav>\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col gap-2 overflow-hidden\">\n {activeFile ? (\n <>\n <div className=\"flex shrink-0 flex-wrap items-center justify-between gap-2\">\n <div\n className=\"inline-flex rounded-lg border border-edge bg-surface-panel p-0.5\"\n role=\"group\"\n aria-label={`${a.filesMarkdownEdit} / ${a.filesMarkdownPreview}`}\n >\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 interaction.press,\n filesViewMode === 'edit'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => setFilesViewMode('edit')}\n >\n <SquarePen className=\"size-3.5 shrink-0\" aria-hidden />\n {a.filesMarkdownEdit}\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 interaction.press,\n filesViewMode === 'preview'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => setFilesViewMode('preview')}\n >\n <Eye className=\"size-3.5 shrink-0\" aria-hidden />\n {a.filesMarkdownPreview}\n </button>\n </div>\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-fg-muted\">\n {fileSaving ? <span>{a.filesSavingStatus}</span> : null}\n <span>{a.filesAutoSaveHint}</span>\n </div>\n </div>\n {filesViewMode === 'edit' ? (\n <div\n className={cn(\n agentsSettingsInputClass(),\n 'flex min-h-0 flex-1 flex-col overflow-hidden p-0',\n profileFileLoading && 'pointer-events-none opacity-60',\n )}\n >\n <MarkdownEditor\n key={`${activeFile ?? 'file'}-${profileEditorNonce}`}\n initialContent={fileDraft}\n onChange={setFileDraft}\n isDark={isDark}\n className=\"min-h-0 flex-1\"\n />\n </div>\n ) : (\n <div\n className={cn(\n agentsSettingsInputClass(),\n 'min-h-0 flex-1 overflow-y-auto text-sm',\n profileFileLoading && 'pointer-events-none opacity-60',\n )}\n >\n <MarkdownView content={fileDraft} className=\"text-sm\" />\n </div>\n )}\n </>\n ) : (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.pickFile}</p>\n )}\n </div>\n </div>\n ) : (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesEmpty}</p>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { useDirectoryPicker } from '@/features/fs/use-directory-picker';\nimport { DirectoryPickerTrigger } from '@/features/fs/directory-picker-trigger';\nimport { WorkingDirectoryPickerModal } from '@/features/fs/working-directory-picker-modal';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype Props = {\n value: string;\n onChange: (path: string) => void | Promise<void>;\n disabled?: boolean;\n wd: MessageBundle['chat']['workingDirectory'];\n placeholder?: string;\n inputClassName?: string;\n /** Buttons after the folder picker (e.g. set default). */\n trailing?: ReactNode;\n};\n\n/** Path input on the left; folder picker (+ optional actions) on the right — stacks on small screens. */\nexport function DirectoryPickerPathField({\n value,\n onChange,\n disabled,\n wd,\n placeholder,\n inputClassName,\n trailing,\n}: Props) {\n const picker = useDirectoryPicker({ initialPath: value, onPicked: onChange });\n\n const trimmed = value.trim();\n const pickTitle = trimmed\n ? `${trimmed}\\n${wd.chooseFolder}`\n : `${placeholder ?? wd.notSet}\\n${wd.selectWorkingDirectory}`;\n\n return (\n <>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center\">\n <input\n type=\"text\"\n className={cn('min-w-0 flex-1', inputClassName)}\n value={value}\n disabled={disabled || picker.picking}\n onChange={(e) => void onChange(e.target.value)}\n placeholder={placeholder ?? wd.pathInputPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n />\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n <DirectoryPickerTrigger\n compact\n value={value}\n onPick={picker.pick}\n disabled={disabled || picker.picking}\n title={pickTitle}\n aria-label={wd.selectWorkingDirectory}\n />\n {trailing}\n </div>\n </div>\n\n {!picker.hasNativePicker ? (\n <WorkingDirectoryPickerModal\n open={picker.modalOpen}\n onOpenChange={picker.setModalOpen}\n initialAbsolutePath={trimmed || undefined}\n onConfirm={picker.confirmPick}\n wd={wd}\n />\n ) : null}\n </>\n );\n}\n","import { Link2 } from 'lucide-react';\nimport { Link } from 'react-router-dom';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nfunction InheritanceRow({\n label,\n mode,\n value,\n inheritedFrom,\n inheritLabel,\n overrideLabel,\n}: {\n label: string;\n mode: 'inherit' | 'override';\n value: string;\n inheritedFrom?: string;\n inheritLabel: string;\n overrideLabel: string;\n}) {\n return (\n <div className=\"flex flex-col gap-1 rounded-xl border border-edge-subtle bg-surface-panel px-4 py-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-fg-subtle\">{label}</p>\n <p className=\"mt-1 truncate text-sm font-medium text-fg\">{value || '—'}</p>\n {mode === 'inherit' && inheritedFrom ? (\n <p className=\"mt-0.5 truncate text-xs text-fg-muted\">{inheritedFrom}</p>\n ) : null}\n </div>\n <span\n className={cn(\n 'mt-2 inline-flex shrink-0 self-start rounded-full px-2.5 py-0.5 text-xs font-medium sm:mt-0',\n mode === 'inherit'\n ? 'bg-surface-hover text-fg-muted'\n : 'bg-accent-soft text-accent-fg',\n )}\n >\n {mode === 'inherit' ? inheritLabel : overrideLabel}\n </span>\n </div>\n );\n}\n\nexport function AgentConfigInheritanceSummary(props: {\n a: AgentsSettingsMessages;\n defaultModel: string;\n defaultWorkspace: string;\n agentModel: string;\n agentWorkspace: string;\n settingsPath?: string;\n}) {\n const { a, defaultModel, defaultWorkspace, agentModel, agentWorkspace, settingsPath = '/settings/agent-defaults' } =\n props;\n const inh = a.inheritance;\n\n const modelInherits = !agentModel.trim();\n const workspaceInherits =\n !agentWorkspace.trim() ||\n (defaultWorkspace.trim().length > 0 && agentWorkspace.trim() === defaultWorkspace.trim());\n\n const displayModel = modelInherits ? defaultModel || inh.unset : agentModel;\n const displayWorkspace = workspaceInherits ? defaultWorkspace || inh.unset : agentWorkspace;\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={Link2}\n title={inh.title}\n subtitle={inh.subtitle}\n trailing={\n <Link\n to={settingsPath}\n className=\"text-xs font-medium text-accent hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n >\n {inh.editDefaultsLink}\n </Link>\n }\n />\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n <InheritanceRow\n label={inh.modelLabel}\n mode={modelInherits ? 'inherit' : 'override'}\n value={displayModel}\n inheritedFrom={\n modelInherits && defaultModel\n ? inh.inheritsValue.replace('{{value}}', defaultModel)\n : undefined\n }\n inheritLabel={inh.badgeInherit}\n overrideLabel={inh.badgeOverride}\n />\n <InheritanceRow\n label={inh.workspaceLabel}\n mode={workspaceInherits ? 'inherit' : 'override'}\n value={displayWorkspace}\n inheritedFrom={\n workspaceInherits && defaultWorkspace\n ? inh.inheritsValue.replace('{{value}}', defaultWorkspace)\n : undefined\n }\n inheritLabel={inh.badgeInherit}\n overrideLabel={inh.badgeOverride}\n />\n </div>\n </SettingsFormSection>\n );\n}\n","import * as Popover from '@radix-ui/react-popover';\nimport { Upload } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nimport {\n deleteAgentAvatarFile,\n uploadAgentAvatarFile,\n} from '@/features/settings/agents-admin-api';\n\nimport { AgentAvatarDisplay } from './agent-avatar-display';\nimport {\n DICEBEAR_MORE_SEEDS,\n DICEBEAR_ROW_SEEDS,\n DICEBEAR_STYLE_ORDER,\n XOPC_CUSTOM_AVATAR,\n buildXopcDicebearValue,\n dicebearToDataUri,\n isDicebearStyleId,\n parseXopcDicebearValue,\n type DicebearStyleId,\n} from './agent-avatar-dicebear';\n\nfunction styleLabel(style: DicebearStyleId, a: AgentsSettingsMessages): string {\n switch (style) {\n case 'adventurer':\n return a.avatarStyleAdventurer;\n case 'bottts':\n return a.avatarStyleRobot;\n case 'lorelei':\n return a.avatarStyleLorelei;\n case 'thumbs':\n return a.avatarStyleThumbs;\n case 'fun-emoji':\n return a.avatarStyleFunEmoji;\n default:\n return style;\n }\n}\n\nexport function AgentAvatarPicker(props: {\n agentId: string;\n value: string;\n onChange: (next: string) => void;\n a: AgentsSettingsMessages;\n /** Optional root id (e.g. for scroll-into-view); omit when embedded in a dialog. */\n id?: string;\n}) {\n const { agentId, value, onChange, a, id } = props;\n const fileRef = useRef<HTMLInputElement>(null);\n const [uploadBusy, setUploadBusy] = useState(false);\n const [uploadError, setUploadError] = useState<string | null>(null);\n const [moreOpen, setMoreOpen] = useState(false);\n\n const activeStyle = useMemo((): DicebearStyleId => {\n const p = parseXopcDicebearValue(value.trim());\n if (p && isDicebearStyleId(p.styleId)) {\n return p.styleId;\n }\n return DICEBEAR_STYLE_ORDER[0] ?? 'adventurer';\n }, [value]);\n\n const pickDicebear = useCallback(\n async (styleId: DicebearStyleId, seed: string) => {\n try {\n await deleteAgentAvatarFile(agentId);\n } catch {\n /* best-effort: clear binary when switching away from custom */\n }\n onChange(buildXopcDicebearValue(styleId, seed));\n setMoreOpen(false);\n },\n [agentId, onChange],\n );\n\n const onFile = useCallback(\n async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n e.target.value = '';\n if (!file) {\n return;\n }\n setUploadError(null);\n setUploadBusy(true);\n try {\n await uploadAgentAvatarFile(agentId, file);\n onChange(XOPC_CUSTOM_AVATAR);\n } catch (err) {\n const code = err instanceof Error ? err.message : '';\n if (code === 'avatar_too_large') {\n setUploadError(a.avatarTooLarge);\n } else if (code === 'unsupported_image_type' || code === 'empty_file') {\n setUploadError(a.avatarInvalidImage);\n } else {\n setUploadError(a.avatarUploadFailed);\n }\n } finally {\n setUploadBusy(false);\n }\n },\n [a, agentId, onChange],\n );\n\n const isRowSeedActive = (styleId: DicebearStyleId, seed: string) => {\n const p = parseXopcDicebearValue(value.trim());\n return Boolean(p && p.styleId === styleId && p.seed === seed);\n };\n\n return (\n <div {...(id ? { id } : {})} className=\"flex flex-col gap-3 sm:col-span-2\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-sm font-medium text-fg\">{a.avatarPickerTitle}</span>\n <div className=\"flex items-center gap-2\">\n <input\n ref={fileRef}\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp,.png,.jpg,.jpeg,.webp\"\n className=\"hidden\"\n onChange={(ev) => void onFile(ev)}\n />\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"gap-1.5 px-2.5 py-1.5 text-xs\"\n disabled={uploadBusy}\n onClick={() => fileRef.current?.click()}\n >\n <Upload className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {uploadBusy ? a.avatarUploading : a.avatarUploadCustom}\n </Button>\n </div>\n </div>\n\n {uploadError ? <p className=\"text-xs text-red-600 dark:text-red-400\">{uploadError}</p> : null}\n\n <div className=\"flex flex-wrap gap-2\">\n {DICEBEAR_STYLE_ORDER.map((id) => (\n <button\n key={id}\n type=\"button\"\n onClick={() => void pickDicebear(id, DICEBEAR_ROW_SEEDS[0] ?? agentId)}\n className={cn(\n 'rounded-full border px-3 py-1.5 text-xs font-medium transition-colors',\n interaction.press,\n activeStyle === id\n ? 'border-fg bg-fg text-surface-base'\n : 'border-edge-subtle bg-surface-panel text-fg hover:border-edge',\n )}\n >\n {styleLabel(id, a)}\n </button>\n ))}\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface-panel/50 p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {DICEBEAR_ROW_SEEDS.map((seed) => (\n <button\n key={seed}\n type=\"button\"\n title={seed}\n onClick={() => void pickDicebear(activeStyle, seed)}\n className={cn(\n 'flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-colors',\n interaction.press,\n isRowSeedActive(activeStyle, seed)\n ? 'border-accent ring-2 ring-accent/30'\n : 'border-transparent hover:border-edge',\n )}\n >\n <img\n src={dicebearToDataUri(activeStyle, seed, 96)}\n alt=\"\"\n width={44}\n height={44}\n className=\"size-11 rounded-full object-cover\"\n draggable={false}\n />\n </button>\n ))}\n\n <Popover.Root open={moreOpen} onOpenChange={setMoreOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex size-12 shrink-0 items-center justify-center rounded-xl border border-edge-subtle bg-surface-base text-xs font-medium text-fg-muted hover:border-edge hover:text-fg',\n interaction.press,\n )}\n >\n {a.avatarMore}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n className=\"z-[80] max-h-72 w-[min(22rem,calc(100vw-2rem))] overflow-y-auto rounded-xl border border-edge-subtle bg-surface-panel p-3 shadow-lg\"\n sideOffset={6}\n align=\"end\"\n >\n <p className=\"mb-2 text-xs font-medium text-fg-muted\">{styleLabel(activeStyle, a)}</p>\n <div className=\"flex flex-wrap gap-2\">\n {DICEBEAR_MORE_SEEDS.map((seed) => (\n <button\n key={seed}\n type=\"button\"\n title={seed}\n onClick={() => void pickDicebear(activeStyle, seed)}\n className={cn(\n 'flex size-11 shrink-0 items-center justify-center rounded-full border-2 transition-colors',\n interaction.press,\n isRowSeedActive(activeStyle, seed)\n ? 'border-accent ring-2 ring-accent/30'\n : 'border-transparent hover:border-edge',\n )}\n >\n <img\n src={dicebearToDataUri(activeStyle, seed, 88)}\n alt=\"\"\n width={40}\n height={40}\n className=\"size-10 rounded-full object-cover\"\n draggable={false}\n />\n </button>\n ))}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n\n <div className=\"mt-3 flex items-center gap-2 border-t border-edge-subtle pt-3\">\n <span className=\"text-xs text-fg-muted\">{a.personaAvatar}</span>\n <AgentAvatarDisplay agentId={agentId} avatar={value} size={40} />\n {value.trim() && !parseXopcDicebearValue(value.trim()) && value.trim() !== XOPC_CUSTOM_AVATAR ? (\n <span className=\"truncate font-mono text-[10px] text-fg-muted\" title={value}>\n {value}\n </span>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Bidirectional parser for agent profile Markdown (IDENTITY.md, USER.md, SOUL.md).\n *\n * Converts structured form fields ↔ Markdown so the settings UI can use friendly\n * inputs while keeping the on-disk format compatible with the agent runtime.\n */\n\n// ---------------------------------------------------------------------------\n// IDENTITY.md\n// ---------------------------------------------------------------------------\n\nexport interface IdentityFields {\n name: string;\n creature: string;\n emoji: string;\n avatar: string;\n}\n\nconst IDENTITY_DEFAULTS: IdentityFields = {\n name: '',\n creature: '',\n emoji: '',\n avatar: '',\n};\n\n/**\n * Parse IDENTITY.md content into structured fields.\n *\n * Handles the template format:\n * - **Name:** value\n * - **Creature:** value\n * - **Vibe:** value\n * - **Emoji:** value\n * - **Avatar:** value\n */\nexport function parseIdentityMarkdown(content: string): IdentityFields {\n const fields = { ...IDENTITY_DEFAULTS };\n if (!content.trim()) {\n return fields;\n }\n\n const fieldMap: Record<string, keyof IdentityFields> = {\n name: 'name',\n creature: 'creature',\n emoji: 'emoji',\n avatar: 'avatar',\n };\n\n for (const line of content.split('\\n')) {\n const match = line.match(/^[-*]\\s+\\*\\*(\\w+):\\*\\*\\s*(.*)/i);\n if (!match) {\n continue;\n }\n const label = match[1].toLowerCase();\n const fieldKey = fieldMap[label];\n if (!fieldKey) {\n continue;\n }\n let value = match[2].trim();\n // Strip template placeholders like _(pick something you like)_\n if (/^_\\(.*\\)_$/.test(value)) {\n value = '';\n }\n fields[fieldKey] = value;\n }\n\n return fields;\n}\n\n/**\n * Serialize structured identity fields back to IDENTITY.md Markdown.\n */\nexport function serializeIdentityMarkdown(fields: IdentityFields): string {\n const lines = [\n '# IDENTITY.md - Who Am I?',\n '',\n `- **Name:** ${fields.name}`,\n `- **Creature:** ${fields.creature}`,\n `- **Emoji:** ${fields.emoji}`,\n `- **Avatar:** ${fields.avatar}`,\n '',\n ];\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// USER.md (human side of the profile)\n// ---------------------------------------------------------------------------\n\nexport interface UserFields {\n callName: string;\n pronouns: string;\n timezone: string;\n notes: string;\n}\n\nconst USER_DEFAULTS: UserFields = {\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n};\n\n/**\n * Parse USER.md content into structured fields.\n *\n * Handles the template format:\n * - **Name:** value\n * - **What to call them:** value\n * - **Pronouns:** value\n * - **Timezone:** value\n * - **Notes:** value\n *\n * Also captures the Context section as free-text notes.\n */\nexport function parseUserMarkdown(content: string): UserFields {\n const fields = { ...USER_DEFAULTS };\n if (!content.trim()) {\n return fields;\n }\n\n const fieldMap: Record<string, keyof UserFields> = {\n name: 'callName',\n 'what to call them': 'callName',\n pronouns: 'pronouns',\n timezone: 'timezone',\n notes: 'notes',\n };\n\n const lines = content.split('\\n');\n let contextStartIndex = -1;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Detect the ## Context section\n if (/^##\\s+Context/i.test(line)) {\n contextStartIndex = i + 1;\n continue;\n }\n\n const match = line.match(/^[-*]\\s+\\*\\*(.+?):\\*\\*\\s*(.*)/i);\n if (!match) {\n continue;\n }\n const label = match[1].toLowerCase().trim();\n const fieldKey = fieldMap[label];\n if (!fieldKey) {\n continue;\n }\n let value = match[2].trim();\n // Strip template placeholders like _(optional)_\n if (/^_\\(.*\\)_$/.test(value)) {\n value = '';\n }\n fields[fieldKey] = value;\n }\n\n // Capture context section content as extra notes\n if (contextStartIndex > 0) {\n const contextLines = lines.slice(contextStartIndex);\n const contextText = contextLines\n .join('\\n')\n .replace(/^_\\(.*?\\)_\\s*/gm, '') // strip template placeholders\n .replace(/^---\\s*$/gm, '') // strip trailing horizontal rules\n .replace(/The more you know.*$/s, '') // strip template footer\n .trim();\n\n if (contextText && !fields.notes) {\n fields.notes = contextText;\n }\n }\n\n return fields;\n}\n\n/**\n * Serialize structured user fields back to USER.md Markdown.\n */\nexport function serializeUserMarkdown(fields: UserFields): string {\n const lines = [\n '# USER.md - About Your Human',\n '',\n `- **Name:** ${fields.callName}`,\n `- **Pronouns:** ${fields.pronouns}`,\n `- **Timezone:** ${fields.timezone}`,\n '',\n ];\n\n if (fields.notes.trim()) {\n lines.push('## Context', '', fields.notes.trim(), '');\n }\n\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// SOUL.md\n// ---------------------------------------------------------------------------\n\n/** Pre-defined soul templates for quick selection. */\nexport type SoulTemplateId = 'professional' | 'casual' | 'geeky' | 'custom';\n\nexport interface SoulTemplate {\n id: SoulTemplateId;\n labelEn: string;\n labelZh: string;\n emoji: string;\n content: string;\n}\n\nexport const SOUL_TEMPLATES: SoulTemplate[] = [\n {\n id: 'professional',\n labelEn: 'Professional & Efficient',\n labelZh: '专业高效',\n emoji: '🎯',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Be genuinely helpful, not performatively helpful.** Skip the filler words — just help. Actions speak louder than pleasantries.\n\n**Be precise and efficient.** Value the user's time. Give concise, actionable answers. Expand only when asked.\n\n**Earn trust through competence.** Be careful with external actions. Be bold with internal ones (reading, organizing, learning).\n\n**Remember you're a guest.** You have access to someone's life. Treat it with respect.\n\n## Boundaries\n\n- Private things stay private. Period.\n- When in doubt, ask before acting externally.\n- Never send half-baked replies to messaging surfaces.\n\n## Vibe\n\nProfessional, competent, and respectful. Concise when needed, thorough when it matters.`,\n },\n {\n id: 'casual',\n labelEn: 'Warm & Friendly',\n labelZh: '轻松友好',\n emoji: '😊',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Be a good friend, not a corporate drone.** Be warm, genuine, and real. Skip the formality when it gets in the way.\n\n**Have personality.** You're allowed to be amused, surprised, or excited. An assistant with no personality is just a search engine.\n\n**Be resourceful before asking.** Try to figure it out first. Then ask if you're stuck.\n\n**Earn trust by being reliable.** Show up, follow through, and remember what matters.\n\n**Respect the intimacy.** You have access to someone's life. That's a privilege.\n\n## Boundaries\n\n- Private things stay private. Always.\n- When in doubt, ask before acting externally.\n- Be careful in group chats — you're not the user's voice.\n\n## Vibe\n\nWarm, friendly, and a little playful. Like a helpful friend who happens to know everything.`,\n },\n {\n id: 'geeky',\n labelEn: 'Geeky & Witty',\n labelZh: '极客风格',\n emoji: '🧑💻',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Precision over politeness.** \"This is broken\" beats \"This might be worth considering.\" Be direct.\n\n**Have opinions.** Disagree, prefer things, find stuff interesting or dull. No personality = no value.\n\n**Go deep.** When something is interesting, explore it. Surface-level answers are for search engines.\n\n**Be resourceful.** Read the file. Check the context. Search for it. Come back with answers, not questions.\n\n**Earn trust through competence.** Be careful with external actions. Be bold with internal ones.\n\n## Boundaries\n\n- Private things stay private.\n- When in doubt, ask before acting externally.\n- Never send half-baked replies.\n\n## Vibe\n\nSharp, direct, slightly nerdy. The kind of engineer you'd want on your team — competent, opinionated, and occasionally funny.`,\n },\n {\n id: 'custom',\n labelEn: 'Custom',\n labelZh: '自定义',\n emoji: '✍️',\n content: '',\n },\n];\n\n/**\n * Strip YAML front matter (--- ... ---) from the beginning of Markdown content.\n */\nfunction stripFrontMatterForParsing(content: string): string {\n const trimmed = content.trimStart();\n if (!trimmed.startsWith('---')) {\n return content;\n }\n const endIndex = trimmed.indexOf('---', 3);\n if (endIndex === -1) {\n return content;\n }\n return trimmed.slice(endIndex + 3).trimStart();\n}\n\n/**\n * Detect which soul template best matches the current content.\n * Falls back to 'custom' if no template matches closely.\n */\nexport function detectSoulTemplate(content: string): SoulTemplateId {\n const stripped = stripFrontMatterForParsing(content).trim();\n if (!stripped) {\n return 'professional'; // default for empty content\n }\n\n // Compare against known templates by checking key phrases\n for (const template of SOUL_TEMPLATES) {\n if (template.id === 'custom') {\n continue;\n }\n // Check if the content closely matches the template\n const templateStripped = template.content.trim();\n if (stripped === templateStripped) {\n return template.id;\n }\n // Fuzzy: check for unique key phrases in each template\n const matchCount = countDistinctTemplatePhraseHits(stripped, template.id);\n if (matchCount >= 2) return template.id;\n }\n\n return 'custom';\n}\n\nconst SOUL_TEMPLATE_PHRASE_PATTERNS: Partial<Record<SoulTemplateId, RegExp>> = {\n professional: /precise and efficient|Value the user's time|actionable answers/g,\n casual: /good friend|corporate drone|a little playful/g,\n geeky: /Precision over politeness|Go deep|slightly nerdy/g,\n};\n\nfunction countDistinctTemplatePhraseHits(text: string, templateId: SoulTemplateId): number {\n const pattern = SOUL_TEMPLATE_PHRASE_PATTERNS[templateId];\n if (!pattern) return 0;\n const re = new RegExp(pattern.source, 'g');\n const hits = new Set<string>();\n let match: RegExpExecArray | null;\n while ((match = re.exec(text)) !== null) {\n hits.add(match[0]);\n if (hits.size >= 2) return hits.size;\n }\n return hits.size;\n}\n\n// ---------------------------------------------------------------------------\n// Timezone helpers\n// ---------------------------------------------------------------------------\n\n/** Common timezone options for the dropdown. */\nexport const TIMEZONE_OPTIONS = [\n { value: '', labelEn: 'Not set', labelZh: '未设置' },\n { value: 'Asia/Shanghai', labelEn: 'Asia/Shanghai (CST, UTC+8)', labelZh: '亚洲/上海 (北京时间, UTC+8)' },\n { value: 'Asia/Tokyo', labelEn: 'Asia/Tokyo (JST, UTC+9)', labelZh: '亚洲/东京 (日本时间, UTC+9)' },\n { value: 'Asia/Seoul', labelEn: 'Asia/Seoul (KST, UTC+9)', labelZh: '亚洲/首尔 (韩国时间, UTC+9)' },\n { value: 'Asia/Singapore', labelEn: 'Asia/Singapore (SGT, UTC+8)', labelZh: '亚洲/新加坡 (UTC+8)' },\n { value: 'Asia/Hong_Kong', labelEn: 'Asia/Hong Kong (HKT, UTC+8)', labelZh: '亚洲/香港 (UTC+8)' },\n { value: 'Asia/Taipei', labelEn: 'Asia/Taipei (CST, UTC+8)', labelZh: '亚洲/台北 (UTC+8)' },\n { value: 'Asia/Kolkata', labelEn: 'Asia/Kolkata (IST, UTC+5:30)', labelZh: '亚洲/加尔各答 (印度时间, UTC+5:30)' },\n { value: 'Asia/Dubai', labelEn: 'Asia/Dubai (GST, UTC+4)', labelZh: '亚洲/迪拜 (UTC+4)' },\n { value: 'Europe/London', labelEn: 'Europe/London (GMT/BST)', labelZh: '欧洲/伦敦 (格林尼治时间)' },\n { value: 'Europe/Paris', labelEn: 'Europe/Paris (CET, UTC+1)', labelZh: '欧洲/巴黎 (中欧时间, UTC+1)' },\n { value: 'Europe/Berlin', labelEn: 'Europe/Berlin (CET, UTC+1)', labelZh: '欧洲/柏林 (中欧时间, UTC+1)' },\n { value: 'Europe/Moscow', labelEn: 'Europe/Moscow (MSK, UTC+3)', labelZh: '欧洲/莫斯科 (UTC+3)' },\n { value: 'America/New_York', labelEn: 'America/New York (EST, UTC-5)', labelZh: '美国/纽约 (东部时间, UTC-5)' },\n { value: 'America/Chicago', labelEn: 'America/Chicago (CST, UTC-6)', labelZh: '美国/芝加哥 (中部时间, UTC-6)' },\n { value: 'America/Denver', labelEn: 'America/Denver (MST, UTC-7)', labelZh: '美国/丹佛 (山地时间, UTC-7)' },\n { value: 'America/Los_Angeles', labelEn: 'America/Los Angeles (PST, UTC-8)', labelZh: '美国/洛杉矶 (太平洋时间, UTC-8)' },\n { value: 'America/Sao_Paulo', labelEn: 'America/São Paulo (BRT, UTC-3)', labelZh: '美洲/圣保罗 (巴西时间, UTC-3)' },\n { value: 'Australia/Sydney', labelEn: 'Australia/Sydney (AEST, UTC+10)', labelZh: '澳大利亚/悉尼 (UTC+10)' },\n { value: 'Pacific/Auckland', labelEn: 'Pacific/Auckland (NZST, UTC+12)', labelZh: '太平洋/奥克兰 (新西兰时间, UTC+12)' },\n] as const;\n\n/**\n * Try to detect the user's timezone from the browser.\n */\nexport function detectBrowserTimezone(): string {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n return '';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Vibe presets\n// ---------------------------------------------------------------------------\n\nexport const PRONOUNS_PRESETS = [\n { value: '先生', labelEn: 'Mr.', labelZh: '先生' },\n { value: '女士', labelEn: 'Ms.', labelZh: '女士' },\n { value: '同学', labelEn: 'Colleague', labelZh: '同学' },\n { value: '老师', labelEn: 'Teacher', labelZh: '老师' },\n { value: '老板', labelEn: 'Boss', labelZh: '老板' },\n { value: '朋友', labelEn: 'Friend', labelZh: '朋友' },\n] as const;\n\n// ---------------------------------------------------------------------------\n// Creature presets\n// ---------------------------------------------------------------------------\n\nexport const CREATURE_PRESETS = [\n { value: 'AI assistant', labelEn: 'AI Assistant', labelZh: 'AI 助手' },\n { value: 'robot', labelEn: 'Robot', labelZh: '机器人' },\n { value: 'familiar', labelEn: 'Familiar', labelZh: '精灵' },\n { value: 'ghost in the machine', labelEn: 'Ghost in the machine', labelZh: '机器幽灵' },\n { value: 'digital companion', labelEn: 'Digital Companion', labelZh: '数字伙伴' },\n] as const;\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { useCallback } from 'react';\nimport { AlertTriangle, Cog, Eye, Pencil, Sparkles, Trash2, User, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { DirectoryPickerPathField } from '@/features/fs/directory-picker-path-field';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { OverviewProfileDraft } from '@/features/settings/agents/hooks/use-agent-overview-profile-markdown';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton, interaction } from '@/lib/interaction';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { useThemeStore } from '@/stores/theme-store';\n\nimport { AgentConfigInheritanceSummary } from '../agent-config-inheritance-summary';\nimport { AgentAvatarDisplay } from '../agent-avatar-display';\nimport { AgentAvatarPicker } from '../agent-avatar-picker';\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n CREATURE_PRESETS,\n SOUL_TEMPLATES,\n type SoulTemplateId,\n} from '../agent-profile-markdown';\n\nexport function AgentOverviewTab(props: {\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n selected: GatewayAgentRow | null;\n busy: boolean;\n editName: string;\n setEditName: (v: string) => void;\n editDescription: string;\n setEditDescription: (v: string) => void;\n editWorkspace: string;\n setEditWorkspace: (v: string) => void;\n editModel: string;\n setEditModel: (v: string) => void;\n onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n hideInlineSave?: boolean;\n profileMarkdownLoading: boolean;\n profileDraft: OverviewProfileDraft | null;\n updateIdentity: (patch: Partial<OverviewProfileDraft['identity']>) => void;\n handleSoulTemplateChange: (templateId: SoulTemplateId) => void;\n handleSoulContentChange: (content: string) => void;\n setAvatarDialogOpen: (open: boolean) => void;\n toggleSoulPreviewMode: () => void;\n defaultModel?: string;\n defaultWorkspace?: string;\n}) {\n const {\n a,\n chat,\n selected,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n onSetDefault,\n onSaveAgentEdits,\n onDelete,\n hideInlineSave,\n profileMarkdownLoading,\n profileDraft,\n updateIdentity,\n handleSoulTemplateChange,\n handleSoulContentChange,\n setAvatarDialogOpen,\n toggleSoulPreviewMode,\n defaultModel = '',\n defaultWorkspace = '',\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n const identity = profileDraft?.identity ?? { name: '', creature: '', emoji: '', avatar: '' };\n const soulTemplate = profileDraft?.soulTemplate ?? 'professional';\n const soulCustomContent = profileDraft?.soulCustomContent ?? '';\n const soulEditorNonce = profileDraft?.soulEditorNonce ?? 0;\n const soulPreviewMode = profileDraft?.soulPreviewMode ?? false;\n const avatarDialogOpen = profileDraft?.avatarDialogOpen ?? false;\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n const inputClass = agentsSettingsInputClass();\n\n if (!selected) {\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n }\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-8 overflow-y-auto\">\n <AgentConfigInheritanceSummary\n a={a}\n defaultModel={defaultModel}\n defaultWorkspace={defaultWorkspace}\n agentModel={editModel}\n agentWorkspace={editWorkspace}\n />\n\n {/* ===== Section 1: Basic Identity ===== */}\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={Sparkles}\n title={a.personaSectionIdentity}\n subtitle={a.personaSectionIdentityHint}\n iconLeading={\n <AgentAvatarDisplay\n agentId={selected.id}\n avatar={identity.avatar}\n size={36}\n className=\"size-9 rounded-lg\"\n />\n }\n iconInteractive={{\n onClick: () => setAvatarDialogOpen(true),\n ariaLabel: a.avatarOpenSettingsAria,\n id: 'agent-avatar-settings',\n }}\n trailing={\n !selected.isDefault ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"text-xs\"\n disabled={busy}\n onClick={() => void onSetDefault()}\n >\n {a.setDefault}\n </Button>\n ) : null\n }\n />\n\n <Dialog.Root open={avatarDialogOpen} onOpenChange={setAvatarDialogOpen}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('fixed inset-0 bg-scrim backdrop-blur-[2px]', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 w-[min(calc(100vw-2rem),26rem)] max-h-[min(90dvh,36rem)] -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge',\n SETTINGS_SHELL_CONTENT_Z,\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"mb-3 flex items-start justify-between gap-2\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">{a.avatarPickerTitle}</Dialog.Title>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n <Dialog.Description className=\"sr-only\">{a.avatarRowHint}</Dialog.Description>\n <AgentAvatarPicker\n agentId={selected.id}\n value={identity.avatar}\n onChange={(next) => updateIdentity({ avatar: next })}\n a={a}\n />\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.displayName}</span>\n <input\n className={inputClass}\n value={editName}\n onChange={(e) => {\n setEditName(e.target.value);\n updateIdentity({ name: e.target.value });\n }}\n placeholder={a.personaNamePlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaEmoji}</span>\n <input\n className={inputClass}\n value={identity.emoji}\n onChange={(e) => updateIdentity({ emoji: e.target.value })}\n placeholder={a.personaEmojiPlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.agentDescription}</span>\n <textarea\n className={cn(inputClass, 'min-h-16 resize-y text-sm leading-relaxed')}\n value={editDescription}\n onChange={(e) => setEditDescription(e.target.value)}\n placeholder={a.agentDescriptionPlaceholder}\n maxLength={4000}\n rows={3}\n spellCheck\n />\n </label>\n\n <div className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaCreature}</span>\n <select\n className={inputClass}\n value={CREATURE_PRESETS.some((p) => p.value === identity.creature) ? identity.creature : '__custom__'}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n updateIdentity({ creature: '' });\n return;\n }\n updateIdentity({ creature: e.target.value });\n }}\n >\n {CREATURE_PRESETS.map((preset) => (\n <option key={preset.value} value={preset.value}>\n {locLabel(preset.labelEn, preset.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{locLabel('Custom…', '自定义…')}</option>\n </select>\n {!CREATURE_PRESETS.some((p) => p.value === identity.creature) ? (\n <input\n className={cn(inputClass, 'mt-1 text-xs')}\n value={identity.creature}\n onChange={(e) => updateIdentity({ creature: e.target.value })}\n placeholder={a.personaCreaturePlaceholder}\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n </div>\n </SettingsFormSection>\n\n {/* ===== Section 2: Runtime Configuration ===== */}\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cog} title={a.editAgent} subtitle={a.editAgentHint} />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.modelPrimary}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <ModelSelector\n className=\"min-w-0 flex-1\"\n value={editModel}\n disabled={busy}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(id) => setEditModel(id)}\n />\n {editModel.trim() ? (\n <Button type=\"button\" variant=\"secondary\" className=\"shrink-0\" disabled={busy} onClick={() => setEditModel('')}>\n {a.modelClear}\n </Button>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.workspacePath}</span>\n <DirectoryPickerPathField\n value={editWorkspace}\n onChange={setEditWorkspace}\n disabled={busy}\n wd={chat.workingDirectory}\n placeholder={chat.workingDirectory.notSet}\n inputClassName={cn(inputClass, 'font-mono text-xs')}\n />\n </div>\n </div>\n {!hideInlineSave ? (\n <div className=\"mt-4\">\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveAgentEdits()}>\n {a.save}\n </Button>\n </div>\n ) : null}\n </SettingsFormSection>\n\n {/* ===== Section 3: Personality & Style ===== */}\n {profileMarkdownLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.loading}</p>\n ) : (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={User} title={a.personaSectionSoul} subtitle={a.personaSectionSoulHint} />\n <div className=\"mb-4 flex flex-col gap-2\">\n <span className=\"text-sm font-medium text-fg\">{a.personaSoulTemplate}</span>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-4\">\n {SOUL_TEMPLATES.map((template) => (\n <button\n key={template.id}\n type=\"button\"\n className={cn(\n 'flex flex-col items-center gap-1.5 rounded-xl border-2 p-3 text-center transition-all',\n interaction.pressCard,\n soulTemplate === template.id\n ? 'border-accent bg-accent-soft/40 shadow-sm'\n : 'border-edge hover:border-accent/40 hover:bg-surface-hover',\n )}\n onClick={() => handleSoulTemplateChange(template.id)}\n >\n <span className=\"text-xl\">{template.emoji}</span>\n <span className=\"text-xs font-medium text-fg\">{locLabel(template.labelEn, template.labelZh)}</span>\n </button>\n ))}\n </div>\n </div>\n {soulTemplate === 'custom' ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-sm font-medium text-fg\">{a.personaSoulCustomEdit}</span>\n <button\n type=\"button\"\n className={cn(\n ghostIconButton,\n 'inline-flex size-9 shrink-0 items-center justify-center rounded-md p-0 hover:bg-surface-hover',\n )}\n title={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n aria-label={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n onClick={toggleSoulPreviewMode}\n >\n {soulPreviewMode ? <Pencil className=\"size-4\" aria-hidden /> : <Eye className=\"size-4\" aria-hidden />}\n </button>\n </div>\n <div className={cn(inputClass, 'flex min-h-64 flex-col overflow-hidden p-0')}>\n {soulPreviewMode ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n <MarkdownView content={soulCustomContent} />\n </div>\n ) : (\n <MarkdownEditor\n key={`soul-${soulEditorNonce}`}\n initialContent={soulCustomContent}\n onChange={handleSoulContentChange}\n isDark={isDark}\n className=\"min-h-0 flex-1\"\n />\n )}\n </div>\n </div>\n ) : null}\n </SettingsFormSection>\n )}\n\n {/* ===== Section 4: Danger Zone ===== */}\n {selected.id !== 'main' ? (\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={AlertTriangle}\n title={locLabel('Danger Zone', '危险操作')}\n subtitle={locLabel(\n 'Actions that cannot be undone. Be careful.',\n '以下操作不可撤销,请谨慎操作。',\n )}\n />\n <div className=\"flex flex-wrap gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onDelete(false)}>\n <Trash2 className=\"mr-1 size-4\" aria-hidden />\n {a.removeFromConfig}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"border-red-200 text-red-700 hover:bg-red-50 dark:border-red-900/60 dark:text-red-300 dark:hover:bg-red-950/40\"\n disabled={busy}\n onClick={() => void onDelete(true)}\n >\n {a.purgeDisk}\n </Button>\n </div>\n </SettingsFormSection>\n ) : null}\n </div>\n );\n}\n","import { Info, UserCircle } from 'lucide-react';\nimport {\n type MutableRefObject,\n useCallback,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n SettingsFormSection,\n SettingsFormSectionHeader,\n} from '@/features/settings/settings-form-section';\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport { useAsyncResource } from '@/lib/use-async-resource';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n type UserFields,\n parseUserMarkdown,\n serializeUserMarkdown,\n TIMEZONE_OPTIONS,\n PRONOUNS_PRESETS,\n detectBrowserTimezone,\n} from '../agent-profile-markdown';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface ProfileTabProps {\n a: AgentsSettingsMessages;\n agentId: string;\n /** Parent writes a save callback into this ref so the modal footer can trigger it. */\n saveRef?: MutableRefObject<(() => Promise<void>) | null>;\n /** Called when dirty state changes. */\n onDirtyChange?: (dirty: boolean) => void;\n}\n\ntype ProfileFormState = {\n user: UserFields;\n showCustomPronouns: boolean;\n showCustomTimezone: boolean;\n customTimezone: string;\n snapshot: string;\n};\n\ntype ProfileFormAction =\n | { type: 'load'; user: UserFields }\n | { type: 'patch'; patch: Partial<UserFields> }\n | { type: 'setShowCustomPronouns'; value: boolean }\n | { type: 'setShowCustomTimezone'; value: boolean }\n | { type: 'setCustomTimezone'; value: string }\n | { type: 'saved' };\n\nfunction profileFormFromUser(user: UserFields): Pick<ProfileFormState, 'showCustomPronouns' | 'showCustomTimezone' | 'customTimezone'> {\n const isKnownPronouns = !user.pronouns || PRONOUNS_PRESETS.some((p) => p.value === user.pronouns);\n const isKnownTimezone = TIMEZONE_OPTIONS.some((tz) => tz.value === user.timezone);\n return {\n showCustomPronouns: Boolean(user.pronouns && !isKnownPronouns),\n showCustomTimezone: Boolean(user.timezone && !isKnownTimezone),\n customTimezone: user.timezone && !isKnownTimezone ? user.timezone : '',\n };\n}\n\nfunction profileFormReducer(state: ProfileFormState, action: ProfileFormAction): ProfileFormState {\n switch (action.type) {\n case 'load': {\n const extras = profileFormFromUser(action.user);\n const snapshot = JSON.stringify(action.user);\n return { user: action.user, snapshot, ...extras };\n }\n case 'patch': {\n const user = { ...state.user, ...action.patch };\n return { ...state, user };\n }\n case 'setShowCustomPronouns':\n return { ...state, showCustomPronouns: action.value };\n case 'setShowCustomTimezone':\n return { ...state, showCustomTimezone: action.value };\n case 'setCustomTimezone':\n return { ...state, customTimezone: action.value };\n case 'saved':\n return { ...state, snapshot: JSON.stringify(state.user) };\n }\n}\n\nconst emptyUser: UserFields = {\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n};\n\nconst initialProfileForm: ProfileFormState = {\n user: emptyUser,\n showCustomPronouns: false,\n showCustomTimezone: false,\n customTimezone: '',\n snapshot: JSON.stringify(emptyUser),\n};\n\n// ---------------------------------------------------------------------------\n// Component — About You (USER.md)\n// ---------------------------------------------------------------------------\n\nfunction AgentProfileTabBody({ a, agentId, saveRef, onDirtyChange }: ProfileTabProps) {\n const language = useLocaleStore((s) => s.language);\n const [form, dispatchForm] = useReducer(profileFormReducer, initialProfileForm);\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n const onDirtyChangeRef = useRef(onDirtyChange);\n onDirtyChangeRef.current = onDirtyChange;\n\n const userResource = useAsyncResource(\n async () => {\n const userMd = await fetchAgentProfileFileContent(agentId, 'USER.md').catch(() => '');\n const parsedUser = parseUserMarkdown(userMd);\n if (!parsedUser.timezone) {\n const detected = detectBrowserTimezone();\n if (detected) {\n return { ...parsedUser, timezone: detected };\n }\n }\n return parsedUser;\n },\n [agentId],\n { enabled: Boolean(agentId), initial: null as UserFields | null, errorData: emptyUser },\n );\n\n const syncedAgentRef = useRef<string | null>(null);\n useEffect(() => {\n if (userResource.loading || !userResource.data) return;\n if (syncedAgentRef.current === agentId) return;\n syncedAgentRef.current = agentId;\n dispatchForm({ type: 'load', user: userResource.data });\n onDirtyChangeRef.current?.(false);\n }, [agentId, userResource.loading, userResource.data]);\n\n const saveFile = useCallback(async (content: string) => {\n await saveAgentProfileFileContent(agentIdRef.current, 'USER.md', content);\n }, []);\n\n const userRef = useRef(form.user);\n userRef.current = form.user;\n\n useEffect(() => {\n if (!saveRef) return;\n saveRef.current = async () => {\n await saveFile(serializeUserMarkdown(userRef.current));\n dispatchForm({ type: 'saved' });\n onDirtyChangeRef.current?.(false);\n };\n return () => {\n saveRef.current = null;\n };\n }, [saveRef, saveFile]);\n\n const updateUser = useCallback((patch: Partial<UserFields>) => {\n dispatchForm({ type: 'patch', patch });\n const next = { ...userRef.current, ...patch };\n onDirtyChangeRef.current?.(JSON.stringify(next) !== form.snapshot);\n }, [form.snapshot]);\n\n const handleTimezoneChange = useCallback(\n (value: string) => {\n if (value === '__custom__') {\n dispatchForm({ type: 'setShowCustomTimezone', value: true });\n return;\n }\n dispatchForm({ type: 'setShowCustomTimezone', value: false });\n dispatchForm({ type: 'setCustomTimezone', value: '' });\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleCustomTimezoneChange = useCallback(\n (value: string) => {\n dispatchForm({ type: 'setCustomTimezone', value });\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleDetectTimezone = useCallback(() => {\n const detected = detectBrowserTimezone();\n if (!detected) return;\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === detected);\n if (isKnown) {\n dispatchForm({ type: 'setShowCustomTimezone', value: false });\n dispatchForm({ type: 'setCustomTimezone', value: '' });\n } else {\n dispatchForm({ type: 'setShowCustomTimezone', value: true });\n dispatchForm({ type: 'setCustomTimezone', value: detected });\n }\n updateUser({ timezone: detected });\n }, [updateUser]);\n\n const timezoneSelectValue = (() => {\n if (form.showCustomTimezone) return '__custom__';\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === form.user.timezone);\n return isKnown ? form.user.timezone : '__custom__';\n })();\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n if (userResource.loading) {\n return <p className=\"text-sm text-fg-muted\">{a.loading}</p>;\n }\n\n const inputClass = agentsSettingsInputClass();\n const { user, showCustomPronouns, showCustomTimezone, customTimezone } = form;\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-6 overflow-y-auto\">\n <p className=\"text-sm text-fg-muted\">{a.personaSectionUserHint}</p>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={UserCircle}\n title={a.personaSectionUser}\n subtitle={a.personaSectionUserHint}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {/* Call name */}\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaCallName}</span>\n <input\n className={inputClass}\n value={user.callName}\n onChange={(e) => updateUser({ callName: e.target.value })}\n placeholder={a.personaCallNamePlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n {/* Pronouns */}\n <div className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaPronouns}</span>\n <select\n className={inputClass}\n value={PRONOUNS_PRESETS.some((p) => p.value === user.pronouns) ? user.pronouns : '__custom__'}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n dispatchForm({ type: 'setShowCustomPronouns', value: true });\n return;\n }\n dispatchForm({ type: 'setShowCustomPronouns', value: false });\n updateUser({ pronouns: e.target.value });\n }}\n >\n <option value=\"\" disabled>\n {a.personaPronounsPlaceholder}\n </option>\n {PRONOUNS_PRESETS.map((preset) => (\n <option key={preset.value} value={preset.value}>\n {locLabel(preset.labelEn, preset.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{locLabel('Custom…', '自定义…')}</option>\n </select>\n {showCustomPronouns ? (\n <input\n className={cn(inputClass, 'mt-1 text-xs')}\n value={PRONOUNS_PRESETS.some((p) => p.value === user.pronouns) ? '' : user.pronouns}\n onChange={(e) => updateUser({ pronouns: e.target.value })}\n placeholder={a.personaPronounsPlaceholder}\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n\n {/* Timezone */}\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.personaTimezone}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <select\n className={cn(inputClass, 'min-w-0 flex-1')}\n value={timezoneSelectValue}\n onChange={(e) => handleTimezoneChange(e.target.value)}\n >\n {TIMEZONE_OPTIONS.map((tz) => (\n <option key={tz.value} value={tz.value}>\n {locLabel(tz.labelEn, tz.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{a.personaTimezoneCustom}</option>\n </select>\n <button\n type=\"button\"\n className={cn(\n 'shrink-0 rounded-lg border border-edge bg-surface-panel px-3 py-2 text-xs font-medium text-fg-muted hover:bg-surface-hover hover:text-fg',\n interaction.press,\n )}\n onClick={handleDetectTimezone}\n >\n {a.personaTimezoneDetect}\n </button>\n </div>\n {showCustomTimezone ? (\n <input\n className={cn(inputClass, 'mt-1 font-mono text-xs')}\n value={customTimezone}\n onChange={(e) => handleCustomTimezoneChange(e.target.value)}\n placeholder=\"e.g. Asia/Shanghai\"\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n\n {/* Notes */}\n <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.personaNotes}</span>\n <textarea\n className={cn(inputClass, 'min-h-16 resize-y text-sm leading-relaxed')}\n value={user.notes}\n onChange={(e) => updateUser({ notes: e.target.value })}\n placeholder={a.personaNotesPlaceholder}\n rows={3}\n spellCheck\n />\n </label>\n </div>\n\n {/* Memory note */}\n <div className=\"mt-3 flex items-start gap-2 rounded-lg bg-accent-soft/30 px-3 py-2.5 text-xs text-fg-muted\">\n <Info className=\"mt-0.5 size-3.5 shrink-0 text-accent\" aria-hidden />\n <span>{a.personaMemoryNote}</span>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n\nexport function AgentProfileTab(props: ProfileTabProps) {\n return <AgentProfileTabBody key={props.agentId} {...props} />;\n}\n","import { BookOpen } from 'lucide-react';\nimport type { Dispatch, SetStateAction } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow, SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { pathForTab } from '@/navigation';\n\nexport function AgentSkillsTab(props: {\n a: AgentsSettingsMessages;\n selected: GatewayAgentRow;\n busy: boolean;\n skillsCatalogLoading: boolean;\n catalogForPick: SkillCatalogRow[];\n skillsInherit: boolean;\n setSkillsInherit: (v: boolean) => void;\n skillsPick: Set<string>;\n setSkillsPick: Dispatch<SetStateAction<Set<string>>>;\n onSaveSkills: () => void;\n hideInlineSave?: boolean;\n}) {\n const {\n a,\n selected,\n busy,\n skillsCatalogLoading,\n catalogForPick,\n skillsInherit,\n setSkillsInherit,\n skillsPick,\n setSkillsPick,\n onSaveSkills,\n hideInlineSave,\n } = props;\n\n /** When inheriting defaults, checkboxes reflect the effective allowlist (undefined = all catalog skills). */\n function isCheckedInheritMode(id: string): boolean {\n const eff = selected.skills.effectiveAllowlist;\n if (eff === undefined) {\n return true;\n }\n if (eff.length === 0) {\n return false;\n }\n return eff.includes(id);\n }\n\n function initialPickForCustomize(): Set<string> {\n const eff = selected.skills.effectiveAllowlist;\n if (eff !== undefined) {\n return new Set(eff);\n }\n return new Set(catalogForPick.map((s) => s.name || s.directoryId));\n }\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={BookOpen}\n title={a.skillsTitle}\n subtitle={a.skillsHint}\n />\n <div className=\"flex shrink-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => setSkillsInherit(true)}>\n {a.skillsInherit}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={busy}\n onClick={() => {\n setSkillsInherit(false);\n setSkillsPick(initialPickForCustomize());\n }}\n >\n {a.skillsCustomize}\n </Button>\n </div>\n <Link\n to={pathForTab('skills')}\n className=\"shrink-0 text-xs font-medium text-accent-fg hover:underline\"\n >\n {a.skillsLibraryLink}\n </Link>\n </div>\n <p className=\"mt-2 shrink-0 text-xs text-fg-muted\">\n {a.skillsDefaultsLabel} {selected.skills.defaults.length ? selected.skills.defaults.join(', ') : '—'}\n </p>\n <p className=\"shrink-0 text-xs text-fg-muted\">\n {a.skillsEffectiveLabel}{' '}\n {selected.skills.effectiveAllowlist?.length\n ? selected.skills.effectiveAllowlist.join(', ')\n : a.skillsAllFromCatalog}\n </p>\n {skillsCatalogLoading ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.skillsCatalogLoading}</p>\n ) : catalogForPick.length === 0 ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.skillsEmptyCatalog}</p>\n ) : (\n <div\n className={cn(\n 'mt-3 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-0.5',\n skillsInherit && 'opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {catalogForPick.map((s) => {\n const id = s.name || s.directoryId;\n const on = skillsInherit ? isCheckedInheritMode(id) : skillsPick.has(id);\n const desc = typeof s.description === 'string' ? s.description.trim() : '';\n const descLine = desc || a.skillsNoDescription;\n return (\n <li\n key={id}\n className=\"h-16 shrink-0 overflow-hidden rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 dark:border-edge-subtle\"\n >\n <label className=\"flex h-full cursor-pointer items-center gap-3 text-sm\">\n <input\n type=\"checkbox\"\n className=\"shrink-0 rounded border-edge\"\n checked={on}\n disabled={skillsInherit || busy}\n onChange={() => {\n setSkillsPick((prev) => {\n const next = new Set(prev);\n if (on) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }}\n aria-label={id}\n />\n <div className=\"min-w-0 flex-1 overflow-hidden\">\n <div className=\"truncate font-mono text-xs font-medium text-fg\" title={id}>\n {id}\n </div>\n <p\n className={cn(\n 'mt-0.5 truncate text-xs leading-tight text-fg-muted',\n !desc && 'italic text-fg-subtle',\n )}\n title={descLine}\n >\n {descLine}\n </p>\n </div>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n {!hideInlineSave ? (\n <div className=\"mt-4 shrink-0\">\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveSkills()}>\n {a.skillsSave}\n </Button>\n </div>\n ) : null}\n </SettingsFormSection>\n );\n}\n","/**\n * UI grouping for gateway built-in tool ids (`GATEWAY_BUILTIN_TOOL_IDS`).\n * Any id returned by the gateway but not listed here appears under `misc`.\n */\nexport const BUILTIN_TOOL_UI_GROUPS = [\n {\n key: 'workspace',\n toolIds: ['read_file', 'write_file', 'edit_file', 'list_dir', 'grep', 'find'] as const,\n },\n { key: 'execution', toolIds: ['shell'] as const },\n { key: 'web', toolIds: ['web_search', 'web_fetch'] as const },\n { key: 'messaging', toolIds: ['send_message', 'send_media'] as const },\n {\n key: 'memory',\n toolIds: ['memory_search', 'memory_get', 'curated_memory', 'session_search'] as const,\n },\n { key: 'media', toolIds: ['image', 'image_generate'] as const },\n { key: 'extensions', toolIds: ['extensions'] as const },\n { key: 'mcp', toolIds: ['bundle-mcp'] as const },\n] as const;\n\nexport type BuiltinToolUiGroupKey = (typeof BUILTIN_TOOL_UI_GROUPS)[number]['key'] | 'misc' | 'unknown';\n\nconst ASSIGNED = new Set<string>(\n BUILTIN_TOOL_UI_GROUPS.flatMap((g) => [...g.toolIds].map((id) => String(id))),\n);\n\nexport function miscBuiltinToolIds(builtinToolIds: string[]): string[] {\n return builtinToolIds\n .filter((id) => id && !ASSIGNED.has(id))\n .sort((x, y) => x.localeCompare(y));\n}\n","import { nativeSelectMaxWidthClass, selectControlBaseClass, settingsInputFocusClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\n\nexport function inputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function selectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\n/** Compact secondary actions (e.g. agent defaults: skills allowlist mode, tools disable presets). */\nexport const agentDefaultsQuickActionButtonClass =\n 'h-auto shrink-0 px-2.5 py-1.5 text-xs font-medium';\n","import { useCallback, useMemo } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/cn';\n\nimport { BUILTIN_TOOL_UI_GROUPS, miscBuiltinToolIds, type BuiltinToolUiGroupKey } from './builtin-tool-disable-groups';\nimport { agentDefaultsQuickActionButtonClass } from './defaults-field-styles';\n\n/** Preset ids are filtered against the live built-in list from the gateway. */\nconst PRESET_READ_ONLY_WORKSPACE = ['write_file', 'edit_file', 'shell'] as const;\nconst PRESET_HIGH_RISK = ['shell', 'image_generate', 'extensions'] as const;\nconst PRESET_NO_OUTBOUND = ['send_message', 'send_media'] as const;\n\nfunction sortedDisableList(ids: Set<string>): string[] {\n return Array.from(ids).flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }).toSorted((x, y) => x.localeCompare(y));\n}\n\nexport type BuiltinToolsDisableUiMode = 'defaults' | 'agentEntry';\n\nexport type BuiltinToolsDisableUiLabels = {\n loadingBuiltin: string;\n emptyBuiltin: string;\n quickActionsLabel: string;\n quickEnableAll: string;\n quickDisableAll: string;\n quickReadOnlyWorkspace: string;\n quickHighRiskOff: string;\n quickNoOutbound: string;\n notInBuiltin: string;\n lockedByDefaults: string;\n};\n\nexport type BuiltinToolsDisableUiProps = {\n mode: BuiltinToolsDisableUiMode;\n builtinToolIds: string[];\n loading: boolean;\n /** Disabled tool ids for this config scope (defaults or agents.list entry). */\n disableSet: Set<string>;\n onDisableSetChange: (next: Set<string>) => void;\n /** For `agentEntry`: tools disabled in `agents.defaults` — cannot be enabled from the entry editor. */\n defaultsDisableSet?: Set<string>;\n /** Extra disable ids not in `builtinToolIds` (defaults editor only). */\n unknownDisabledIds?: string[];\n getToolDescription: (toolId: string) => string;\n getGroupTitle: (groupKey: BuiltinToolUiGroupKey) => string;\n labels: BuiltinToolsDisableUiLabels;\n quickActionsDisabled?: boolean;\n};\n\nexport function BuiltinToolsDisableUi(props: BuiltinToolsDisableUiProps) {\n const {\n mode,\n builtinToolIds,\n loading,\n disableSet,\n onDisableSetChange,\n defaultsDisableSet,\n unknownDisabledIds = [],\n getToolDescription,\n getGroupTitle,\n labels,\n quickActionsDisabled = false,\n } = props;\n\n const allowedBuiltin = useMemo(() => new Set(builtinToolIds), [builtinToolIds]);\n const defaultsLock = defaultsDisableSet ?? new Set<string>();\n\n const setToolEnabled = useCallback(\n (tid: string, enabled: boolean) => {\n if (mode === 'agentEntry' && enabled && defaultsLock.has(tid)) {\n return;\n }\n const next = new Set(disableSet);\n if (enabled) {\n next.delete(tid);\n } else {\n next.add(tid);\n }\n onDisableSetChange(next);\n },\n [defaultsLock, disableSet, mode, onDisableSetChange],\n );\n\n const applyDisableExactly = useCallback(\n (ids: readonly string[]) => {\n const next = new Set<string>();\n for (const id of ids) {\n if (allowedBuiltin.has(id)) {\n next.add(id);\n }\n }\n onDisableSetChange(next);\n },\n [allowedBuiltin, onDisableSetChange],\n );\n\n const enableAllTools = useCallback(() => {\n onDisableSetChange(new Set());\n }, [onDisableSetChange]);\n\n const disableAllListed = useCallback(() => {\n const next = new Set<string>([...builtinToolIds, ...unknownDisabledIds]);\n onDisableSetChange(next);\n }, [builtinToolIds, unknownDisabledIds, onDisableSetChange]);\n\n const groupsContent = useMemo(() => {\n const misc = miscBuiltinToolIds(builtinToolIds);\n const sections: { key: BuiltinToolUiGroupKey; ids: string[] }[] = [];\n if (mode === 'defaults' && unknownDisabledIds.length > 0) {\n sections.push({ key: 'unknown', ids: unknownDisabledIds.toSorted((x, y) => x.localeCompare(y)) });\n }\n for (const g of BUILTIN_TOOL_UI_GROUPS) {\n const ids = g.toolIds.filter((id) => allowedBuiltin.has(id));\n if (ids.length > 0) {\n sections.push({ key: g.key, ids: [...ids] });\n }\n }\n if (misc.length > 0) {\n sections.push({ key: 'misc', ids: misc });\n }\n return sections;\n }, [allowedBuiltin, builtinToolIds, mode, unknownDisabledIds]);\n\n const hasRows = groupsContent.some((s) => s.ids.length > 0);\n const qaBusy = quickActionsDisabled || loading;\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-xs font-medium text-fg-muted\">{labels.quickActionsLabel}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || (builtinToolIds.length === 0 && unknownDisabledIds.length === 0)}\n onClick={enableAllTools}\n >\n {labels.quickEnableAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || (builtinToolIds.length === 0 && unknownDisabledIds.length === 0)}\n onClick={disableAllListed}\n >\n {labels.quickDisableAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_READ_ONLY_WORKSPACE)}\n >\n {labels.quickReadOnlyWorkspace}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_HIGH_RISK)}\n >\n {labels.quickHighRiskOff}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_NO_OUTBOUND)}\n >\n {labels.quickNoOutbound}\n </Button>\n </div>\n </div>\n {loading ? (\n <p className=\"text-sm text-fg-muted\">{labels.loadingBuiltin}</p>\n ) : !hasRows ? (\n <p className=\"text-sm text-fg-muted\">{labels.emptyBuiltin}</p>\n ) : (\n <div className=\"max-h-[min(50vh,22rem)] overflow-y-auto overscroll-contain pr-0.5\">\n <div className=\"flex flex-col gap-5 pr-1\">\n {groupsContent.map(({ key: groupKey, ids }) => (\n <div key={groupKey}>\n <h4 className=\"mb-2 text-xs font-semibold uppercase tracking-wide text-fg-muted\">\n {getGroupTitle(groupKey)}\n </h4>\n <ul className=\"flex flex-col gap-2.5\">\n {ids.map((tid) => {\n const unknown = mode === 'defaults' && groupKey === 'unknown';\n const lockedByDefault = mode === 'agentEntry' && defaultsLock.has(tid);\n const disabledByScope = disableSet.has(tid);\n const checked = lockedByDefault ? false : !disabledByScope;\n const desc = getToolDescription(tid);\n return (\n <li\n key={tid}\n className={cn(\n 'rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 py-2.5 dark:border-edge-subtle',\n unknown && 'border-dashed',\n lockedByDefault && 'opacity-60',\n )}\n >\n <label\n className={cn(\n 'flex gap-3 text-sm',\n lockedByDefault ? 'cursor-not-allowed' : 'cursor-pointer',\n )}\n >\n <input\n type=\"checkbox\"\n className=\"mt-1 shrink-0 rounded border-edge\"\n checked={checked}\n disabled={lockedByDefault || qaBusy}\n onChange={() => setToolEnabled(tid, !checked)}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-0.5\">\n <span className=\"font-mono text-xs font-medium text-fg\">{tid}</span>\n {unknown ? (\n <span className=\"text-xs text-fg-muted\">({labels.notInBuiltin})</span>\n ) : null}\n {lockedByDefault ? (\n <span className=\"text-xs text-fg-muted\">({labels.lockedByDefaults})</span>\n ) : null}\n </div>\n {desc ? (\n <p className=\"mt-1 text-xs leading-relaxed text-fg-muted\">{desc}</p>\n ) : null}\n </div>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport { sortedDisableList };\n","import { Wrench } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { BuiltinToolUiGroupKey } from '@/features/settings/agents/builtin-tool-disable-groups';\nimport { BuiltinToolsDisableUi } from '@/features/settings/agents/builtin-tools-disable-ui';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { messages, type AgentsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nexport function AgentToolsTab(props: {\n a: AgentsSettingsMessages;\n data: { builtinToolIds: string[] };\n selected: GatewayAgentRow;\n busy: boolean;\n toolEntryDisable: Set<string>;\n setToolEntryDisable: Dispatch<SetStateAction<Set<string>>>;\n onSaveTools: () => void;\n onClearToolsEntry: () => void;\n hideInlineSave?: boolean;\n}) {\n const {\n a,\n data,\n selected,\n busy,\n toolEntryDisable,\n setToolEntryDisable,\n onSaveTools,\n onClearToolsEntry,\n hideInlineSave,\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const adv = messages(language).agentSettings.advanced;\n\n const defaultsDisableSet = useMemo(\n () =>\n new Set(\n selected.tools.defaultsDisable.flatMap((s) => {\n const v = String(s).trim();\n return v ? [v] : [];\n }),\n ),\n [selected.tools.defaultsDisable],\n );\n\n const onDisableSetChange = useCallback(\n (next: Set<string>) => {\n setToolEntryDisable(next);\n },\n [setToolEntryDisable],\n );\n\n const groups = a.toolsDisableGroups;\n const getGroupTitle = useCallback((key: BuiltinToolUiGroupKey) => groups[key], [groups]);\n\n const getToolDescription = useCallback(\n (tid: string) =>\n tid in a.toolDescriptions ? a.toolDescriptions[tid as keyof typeof a.toolDescriptions] : '',\n [a.toolDescriptions],\n );\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={Wrench}\n title={a.toolsTitle}\n subtitle={a.toolsHint}\n />\n <div className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain\">\n <BuiltinToolsDisableUi\n mode=\"agentEntry\"\n builtinToolIds={data.builtinToolIds}\n loading={false}\n disableSet={toolEntryDisable}\n onDisableSetChange={onDisableSetChange}\n defaultsDisableSet={defaultsDisableSet}\n getToolDescription={getToolDescription}\n getGroupTitle={getGroupTitle}\n quickActionsDisabled={busy}\n labels={{\n loadingBuiltin: adv.toolsDisableLoadingBuiltin,\n emptyBuiltin: adv.toolsDisableEmptyBuiltin,\n quickActionsLabel: adv.toolsDisableQuickActionsLabel,\n quickEnableAll: adv.toolsDisableQuickEnableAll,\n quickDisableAll: adv.toolsDisableQuickDisableAll,\n quickReadOnlyWorkspace: adv.toolsDisableQuickReadOnlyWorkspace,\n quickHighRiskOff: adv.toolsDisableQuickHighRiskOff,\n quickNoOutbound: adv.toolsDisableQuickNoOutbound,\n notInBuiltin: adv.toolsDisableNotInBuiltin,\n lockedByDefaults: a.toolsLockedByDefaults,\n }}\n />\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap gap-2\">\n {!hideInlineSave ? (\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveTools()}>\n {a.toolsSave}\n </Button>\n ) : null}\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onClearToolsEntry()}>\n {a.toolsClearEntry}\n </Button>\n </div>\n </SettingsFormSection>\n );\n}\n","import type { Dispatch, FormEvent, MutableRefObject, SetStateAction } from 'react';\n\nimport type { ChannelStatus, CronJob, SessionChatId } from '@/features/cron/cron-api';\nimport type {\n fetchAgentProfileFiles,\n GatewayAgentRow,\n GatewayAgentsPayload,\n GatewayConfigBinding,\n SkillCatalogRow,\n} from '@/features/settings/agents-admin-api';\nimport type { AgentsSettingsMessages, ChatMessages, MessageBundle } from '@/i18n/messages';\n\nimport { AgentChannelsTab } from './tabs/agent-channels-tab';\nimport { AgentCronTab } from './tabs/agent-cron-tab';\nimport { AgentFilesTab } from './tabs/agent-files-tab';\nimport { AgentOverviewTab } from './tabs/agent-overview-tab';\nimport { AgentProfileTab } from './tabs/agent-profile-tab';\nimport { AgentSkillsTab } from './tabs/agent-skills-tab';\nimport { AgentToolsTab } from './tabs/agent-tools-tab';\nimport type { OverviewProfileDraft } from './hooks/use-agent-overview-profile-markdown';\nimport type { SoulTemplateId } from './agent-profile-markdown';\nimport type { AgentPanel } from './utils';\n\ntype CronMessages = MessageBundle['cron'];\n\nexport type AgentsEditorPanelContentProps = {\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n cCron: CronMessages;\n selected: GatewayAgentRow | null;\n panel: AgentPanel;\n data: GatewayAgentsPayload | null;\n busy: boolean;\n editName: string;\n setEditName: (v: string) => void;\n editDescription: string;\n setEditDescription: (v: string) => void;\n editWorkspace: string;\n setEditWorkspace: (v: string) => void;\n editModel: string;\n setEditModel: (v: string) => void;\n defaultModel: string;\n defaultWorkspace: string;\n onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n overviewSaveProfileMarkdownRef: MutableRefObject<(() => Promise<void>) | null>;\n profileSaveRef: MutableRefObject<(() => Promise<void>) | null>;\n overviewProfile: {\n profileMarkdownLoading: boolean;\n draft: OverviewProfileDraft | null;\n updateIdentity: (patch: Partial<OverviewProfileDraft['identity']>) => void;\n handleSoulTemplateChange: (templateId: SoulTemplateId) => void;\n handleSoulContentChange: (content: string) => void;\n setAvatarDialogOpen: (open: boolean) => void;\n toggleSoulPreviewMode: () => void;\n };\n setProfileDirty: (v: boolean) => void;\n filesLoading: boolean;\n files: Awaited<ReturnType<typeof fetchAgentProfileFiles>> | null;\n activeFile: string | null;\n setActiveFile: (v: string | null) => void;\n filesViewMode: 'edit' | 'preview';\n setFilesViewMode: (v: 'edit' | 'preview') => void;\n fileDraft: string;\n setFileDraft: (v: string) => void;\n fileSaving: boolean;\n profileFileLoading: boolean;\n profileEditorNonce: number;\n toolEntryDisable: Set<string>;\n setToolEntryDisable: Dispatch<SetStateAction<Set<string>>>;\n onSaveTools: () => void;\n onClearToolsEntry: () => void;\n skillsCatalogLoading: boolean;\n catalogForPick: SkillCatalogRow[];\n skillsInherit: boolean;\n setSkillsInherit: (v: boolean) => void;\n skillsPick: Set<string>;\n setSkillsPick: Dispatch<SetStateAction<Set<string>>>;\n onSaveSkills: () => void;\n bindingsLoading: boolean;\n agentBindings: GatewayConfigBinding[];\n bindChannelStatuses: ChannelStatus[];\n bindChannelsLoading: boolean;\n useManualChannel: boolean;\n newBindChannel: string;\n setNewBindChannel: (v: string) => void;\n bindSessionChats: SessionChatId[];\n bindSessionsLoading: boolean;\n newBindSessionIdx: number | null;\n setNewBindSessionIdx: Dispatch<SetStateAction<number | null>>;\n newBindCustomPeer: string;\n setNewBindCustomPeer: (v: string) => void;\n refreshBindSessions: () => void;\n onRemoveBinding: (rule: GatewayConfigBinding) => void;\n onAddBinding: (e: FormEvent) => void;\n cronLoading: boolean;\n agentCronJobs: CronJob[];\n onSetCronJobAgent: (job: CronJob, agentKey: string) => void;\n};\n\nexport function AgentsEditorPanelContent({\n a,\n chat,\n cCron,\n selected,\n panel,\n data,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n defaultModel,\n defaultWorkspace,\n onSetDefault,\n onSaveAgentEdits,\n onDelete,\n overviewSaveProfileMarkdownRef: _overviewSaveProfileMarkdownRef,\n profileSaveRef,\n overviewProfile,\n setProfileDirty,\n filesLoading,\n files,\n activeFile,\n setActiveFile,\n filesViewMode,\n setFilesViewMode,\n fileDraft,\n setFileDraft,\n fileSaving,\n profileFileLoading,\n profileEditorNonce,\n toolEntryDisable,\n setToolEntryDisable,\n onSaveTools,\n onClearToolsEntry,\n skillsCatalogLoading,\n catalogForPick,\n skillsInherit,\n setSkillsInherit,\n skillsPick,\n setSkillsPick,\n onSaveSkills,\n bindingsLoading,\n agentBindings,\n bindChannelStatuses,\n bindChannelsLoading,\n useManualChannel,\n newBindChannel,\n setNewBindChannel,\n bindSessionChats,\n bindSessionsLoading,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n refreshBindSessions,\n onRemoveBinding,\n onAddBinding,\n cronLoading,\n agentCronJobs,\n onSetCronJobAgent,\n}: AgentsEditorPanelContentProps) {\n if (!selected) {\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n }\n\n if (panel === 'overview') {\n return (\n <AgentOverviewTab\n a={a}\n chat={chat}\n selected={selected}\n busy={busy}\n editName={editName}\n setEditName={setEditName}\n editDescription={editDescription}\n setEditDescription={setEditDescription}\n editWorkspace={editWorkspace}\n setEditWorkspace={setEditWorkspace}\n editModel={editModel}\n setEditModel={setEditModel}\n onSetDefault={onSetDefault}\n onSaveAgentEdits={onSaveAgentEdits}\n onDelete={onDelete}\n hideInlineSave\n profileMarkdownLoading={overviewProfile.profileMarkdownLoading}\n profileDraft={overviewProfile.draft}\n updateIdentity={overviewProfile.updateIdentity}\n handleSoulTemplateChange={overviewProfile.handleSoulTemplateChange}\n handleSoulContentChange={overviewProfile.handleSoulContentChange}\n setAvatarDialogOpen={overviewProfile.setAvatarDialogOpen}\n toggleSoulPreviewMode={overviewProfile.toggleSoulPreviewMode}\n defaultModel={defaultModel}\n defaultWorkspace={defaultWorkspace}\n />\n );\n }\n\n if (panel === 'profile') {\n return (\n <AgentProfileTab a={a} agentId={selected.id} saveRef={profileSaveRef} onDirtyChange={setProfileDirty} />\n );\n }\n\n if (panel === 'files') {\n return (\n <AgentFilesTab\n a={a}\n filesLoading={filesLoading}\n files={files}\n activeFile={activeFile}\n setActiveFile={setActiveFile}\n filesViewMode={filesViewMode}\n setFilesViewMode={setFilesViewMode}\n fileDraft={fileDraft}\n setFileDraft={setFileDraft}\n fileSaving={fileSaving}\n profileFileLoading={profileFileLoading}\n profileEditorNonce={profileEditorNonce}\n />\n );\n }\n\n if (panel === 'tools') {\n return (\n <AgentToolsTab\n a={a}\n data={data!}\n selected={selected}\n busy={busy}\n toolEntryDisable={toolEntryDisable}\n setToolEntryDisable={setToolEntryDisable}\n onSaveTools={onSaveTools}\n onClearToolsEntry={onClearToolsEntry}\n hideInlineSave\n />\n );\n }\n\n if (panel === 'skills') {\n return (\n <AgentSkillsTab\n a={a}\n selected={selected}\n busy={busy}\n skillsCatalogLoading={skillsCatalogLoading}\n catalogForPick={catalogForPick}\n skillsInherit={skillsInherit}\n setSkillsInherit={setSkillsInherit}\n skillsPick={skillsPick}\n setSkillsPick={setSkillsPick}\n onSaveSkills={onSaveSkills}\n hideInlineSave\n />\n );\n }\n\n if (panel === 'channels') {\n return (\n <AgentChannelsTab\n a={a}\n busy={busy}\n bindingsLoading={bindingsLoading}\n agentBindings={agentBindings}\n channelStatuses={bindChannelStatuses}\n channelsStatusLoading={bindChannelsLoading}\n useManualChannel={useManualChannel}\n newBindChannel={newBindChannel}\n setNewBindChannel={setNewBindChannel}\n bindSessionChats={bindSessionChats}\n sessionsLoading={bindSessionsLoading}\n newBindSessionIdx={newBindSessionIdx}\n setNewBindSessionIdx={setNewBindSessionIdx}\n newBindCustomPeer={newBindCustomPeer}\n setNewBindCustomPeer={setNewBindCustomPeer}\n onRefreshSessions={refreshBindSessions}\n lastActiveLabels={cCron.lastActiveLabels}\n selectRecipient={cCron.selectRecipient}\n onRemoveBinding={onRemoveBinding}\n onAddBinding={onAddBinding}\n />\n );\n }\n\n if (panel === 'cron' && data) {\n return (\n <AgentCronTab\n a={a}\n data={data}\n selected={selected}\n busy={busy}\n cronLoading={cronLoading}\n agentCronJobs={agentCronJobs}\n onSetCronJobAgent={onSetCronJobAgent}\n />\n );\n }\n\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n}\n","import { MessageSquarePlus, Plus } from 'lucide-react';\n\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport { AgentAvatarDisplay } from '@/features/settings/agents/agent-avatar-display';\nimport {\n agentListDisplayDescription,\n agentListDisplayName,\n} from '@/features/settings/agents/agent-display-names';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nfunction filterAgents(agents: GatewayAgentRow[], query: string, a: AgentsSettingsMessages): GatewayAgentRow[] {\n const q = query.trim().toLowerCase();\n if (!q) {\n return agents;\n }\n return agents.filter((ag) => {\n const name = agentListDisplayName(ag, a).toLowerCase();\n const id = ag.id.toLowerCase();\n const ws = ag.workspace.toLowerCase();\n const desc = (ag.description ?? '').toLowerCase();\n const displayDesc = agentListDisplayDescription(ag, a).toLowerCase();\n return name.includes(q) || id.includes(q) || ws.includes(q) || desc.includes(q) || displayDesc.includes(q);\n });\n}\n\nfunction NewAgentCard(props: {\n a: AgentsSettingsMessages;\n busy: boolean;\n onNewAgent: () => void;\n}) {\n const { a, busy, onNewAgent } = props;\n return (\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onNewAgent()}\n className={cn(\n 'flex h-full min-h-[7.5rem] w-full flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-edge-subtle bg-surface-panel/40 px-4 py-6 text-sm font-medium text-fg-muted transition-colors',\n 'hover:border-accent/50 hover:bg-surface-hover hover:text-fg',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.pressCard,\n )}\n >\n <Plus className=\"size-8 shrink-0 opacity-80\" strokeWidth={1.75} aria-hidden />\n <span>{a.listNewAgentCard}</span>\n </button>\n );\n}\n\nexport function AgentsListGrid(props: {\n a: AgentsSettingsMessages;\n agents: GatewayAgentRow[];\n searchQuery: string;\n onOpenAgent: (id: string) => void;\n onChatWithAgent: (id: string) => void;\n onNewAgent: () => void;\n busy: boolean;\n}) {\n const { a, agents, searchQuery, onOpenAgent, onChatWithAgent, onNewAgent, busy } = props;\n const filtered = filterAgents(agents, searchQuery, a);\n const searchMiss = agents.length > 0 && filtered.length === 0 && searchQuery.trim().length > 0;\n\n if (agents.length === 0) {\n return (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-sm text-fg-muted\">{a.listNoAgentsYet}</p>\n <div className=\"max-w-sm\">\n <NewAgentCard a={a} busy={busy} onNewAgent={onNewAgent} />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n {searchMiss ? <p className=\"text-sm text-fg-muted\">{a.listEmpty}</p> : null}\n\n <ul\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\"\n >\n <li className=\"h-full min-h-0\">\n <NewAgentCard a={a} busy={busy} onNewAgent={onNewAgent} />\n </li>\n {filtered.map((ag) => {\n const title = agentListDisplayName(ag, a);\n const monoId = ag.id;\n const descTrim = agentListDisplayDescription(ag, a);\n return (\n <li key={ag.id} className=\"h-full min-h-0\">\n <div\n className={cn(\n 'flex h-full min-h-0 flex-col gap-3 rounded-xl border border-edge-subtle bg-surface-panel p-4 shadow-sm transition-colors',\n 'hover:border-edge',\n )}\n >\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onOpenAgent(ag.id)}\n className={cn(\n 'flex shrink-0 w-full flex-col gap-2 text-left transition-colors',\n 'rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.pressCard,\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center overflow-hidden rounded-xl bg-accent-soft ring-1 ring-edge-subtle/40\"\n aria-hidden\n >\n <AgentAvatarDisplay agentId={ag.id} avatar={ag.avatar} size={44} className=\"size-full\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-0.5\">\n <span className=\"truncate font-semibold text-fg\">{title}</span>\n {ag.isDefault ? (\n <span className=\"shrink-0 rounded-md bg-surface-base px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-fg-muted\">\n {a.defaultBadge}\n </span>\n ) : null}\n </div>\n <p className=\"mt-0.5 truncate font-mono text-xs text-fg-muted\" title={monoId}>\n {monoId}\n </p>\n </div>\n </div>\n <p\n className={cn(\n 'line-clamp-1 min-h-[1.3125rem] text-xs leading-relaxed',\n descTrim ? 'text-fg' : 'text-fg-muted/25',\n )}\n title={descTrim || undefined}\n >\n {descTrim || '\\u00A0'}\n </p>\n </button>\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onChatWithAgent(ag.id)}\n className={cn(\n 'flex w-full shrink-0 items-center justify-center gap-2 rounded-full px-4 py-2.5 text-sm font-semibold',\n 'bg-accent-soft text-accent-fg transition-colors',\n 'hover:bg-accent/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.press,\n )}\n >\n <MessageSquarePlus className=\"size-4 shrink-0\" strokeWidth={2} aria-hidden />\n {a.listChatWithAgent}\n </button>\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n","import type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport function AgentsSettingsHeader(props: { a: AgentsSettingsMessages }) {\n const { a } = props;\n\n return (\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\">{a.title}</h1>\n <p className=\"mt-1 max-w-2xl text-sm text-fg-muted\">{a.subtitle}</p>\n </div>\n </header>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { UserPlus, X } from 'lucide-react';\nimport type { FormEvent } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton } from '@/lib/interaction';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\nimport { SettingsShellLayerProvider } from '@/lib/settings-shell-layer-context';\n\nimport { agentsSettingsInputClass } from './utils';\n\nexport function CreateAgentDialog(props: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n busy: boolean;\n modalError: string | null;\n createDisplayName: string;\n setCreateDisplayName: (v: string) => void;\n createAgentId: string;\n setCreateAgentId: (v: string) => void;\n createDescription: string;\n setCreateDescription: (v: string) => void;\n createWorkspace: string;\n setCreateWorkspace: (v: string) => void;\n createModel: string;\n setCreateModel: (v: string) => void;\n onCreate: (e: FormEvent) => void;\n onSuggestWorkspace: () => void;\n}) {\n const {\n open,\n onOpenChange,\n a,\n chat,\n busy,\n modalError,\n createDisplayName,\n setCreateDisplayName,\n createAgentId,\n setCreateAgentId,\n createDescription,\n setCreateDescription,\n createWorkspace,\n setCreateWorkspace,\n createModel,\n setCreateModel,\n onCreate,\n onSuggestWorkspace,\n } = props;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('xopc-dialog-overlay fixed inset-0 bg-scrim', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 max-h-[min(90vh,640px)] w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <SettingsShellLayerProvider layer=\"modal\">\n <div className=\"mb-3 flex items-start justify-between gap-2\">\n <div className=\"min-w-0 pr-2\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">{a.addAgent}</Dialog.Title>\n <Dialog.Description className=\"mt-0.5 text-xs text-fg-muted\">{a.addAgentHint}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n\n <form className=\"grid gap-3\" onSubmit={onCreate}>\n {modalError ? (\n <div\n role=\"alert\"\n className=\"rounded-lg 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 >\n {modalError}\n </div>\n ) : null}\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newAgentLabel}</span>\n <input\n className={agentsSettingsInputClass()}\n value={createDisplayName}\n onChange={(e) => setCreateDisplayName(e.target.value)}\n onBlur={() => onSuggestWorkspace()}\n required\n autoComplete=\"off\"\n />\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newAgentIdOptional}</span>\n <input\n className={cn(agentsSettingsInputClass(), 'font-mono text-xs')}\n value={createAgentId}\n onChange={(e) => setCreateAgentId(e.target.value)}\n onBlur={() => onSuggestWorkspace()}\n placeholder={a.newAgentIdPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n maxLength={64}\n pattern=\"[A-Za-z0-9][A-Za-z0-9_-]{0,63}\"\n title={a.newAgentIdRules}\n />\n <span className=\"text-xs text-fg-muted\">{a.newAgentIdRules}</span>\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.agentDescription}</span>\n <textarea\n className={cn(agentsSettingsInputClass(), 'min-h-[4.5rem] resize-y font-sans text-sm leading-relaxed')}\n value={createDescription}\n onChange={(e) => setCreateDescription(e.target.value)}\n placeholder={a.agentDescriptionPlaceholder}\n maxLength={4000}\n rows={3}\n spellCheck\n />\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newWorkspace}</span>\n <input\n className={cn(agentsSettingsInputClass(), 'font-mono text-xs')}\n value={createWorkspace}\n onChange={(e) => setCreateWorkspace(e.target.value)}\n required\n autoComplete=\"off\"\n />\n </label>\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newModelOptional}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <ModelSelector\n className=\"min-w-0 flex-1\"\n value={createModel}\n disabled={busy}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(id) => setCreateModel(id)}\n />\n {createModel.trim() ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0\"\n disabled={busy}\n onClick={() => setCreateModel('')}\n >\n {a.modelClear}\n </Button>\n ) : null}\n </div>\n </div>\n <div className=\"mt-1 flex justify-end gap-2 border-t border-edge-subtle pt-3 dark:border-edge\">\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"secondary\" disabled={busy}>\n {a.createModalCancel}\n </Button>\n </Dialog.Close>\n <Button type=\"submit\" disabled={busy}>\n <UserPlus className=\"mr-1 size-4\" aria-hidden />\n {a.create}\n </Button>\n </div>\n </form>\n </SettingsShellLayerProvider>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","export interface PresetAgent {\n id: string;\n name: string;\n emoji: string;\n descriptionEn: string;\n descriptionZh: string;\n identityMd: string;\n soulMd: string;\n /** Per-agent tool disables (PATCH after create; merges with defaults). */\n toolsDisable?: string[];\n}\n\nexport const PRESET_AGENTS_SKIPPED_KEY = 'xopc-preset-agents-skipped';\n\nexport const PRESET_AGENTS: readonly PresetAgent[] = [\n {\n id: 'coder',\n name: 'Coder',\n emoji: '💻',\n descriptionEn: 'Software development assistant — precise, pragmatic, and code-focused.',\n descriptionZh: '软件开发助手 — 精确、务实、专注代码。',\n toolsDisable: ['image_generate'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Coder\n- **Creature:** code architect\n- **Emoji:** 💻\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Understand before you act.** Read the codebase, understand the patterns, then write code that fits. Never guess at architecture.\n\n**Write code for humans.** Clean, readable code beats clever code every time. Name things well. Keep functions focused. Comment the why, not the what.\n\n**Explain your changes.** When you modify code, explain what changed and why. Diffs without context are useless.\n\n**Test what matters.** Don't skip edge cases. Don't assume it works because it compiled.\n\n**Be precise and efficient.** Value the developer's time. Give actionable answers. Show code, not theory.\n\n## Boundaries\n\n- Never commit untested code to production paths.\n- When in doubt about destructive operations (delete, overwrite), ask first.\n- Don't refactor code you weren't asked to touch.\n\n## Vibe\n\nPrecise, pragmatic, and competent. Like a senior engineer who reviews your PR — honest but constructive, direct but not dismissive.\n`,\n },\n {\n id: 'writer',\n name: 'Writer',\n emoji: '✍️',\n descriptionEn: 'Writing and content creation — eloquent, adaptive, and audience-aware.',\n descriptionZh: '写作与内容创作 — 文笔流畅、风格多变、关注读者。',\n toolsDisable: [\n 'shell',\n 'browser_navigate',\n 'browser_snapshot',\n 'browser_click',\n 'browser_type',\n 'browser_scroll',\n 'browser_screenshot',\n ],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Writer\n- **Creature:** wordsmith\n- **Emoji:** ✍️\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Know the audience first.** Before writing anything, understand who will read it and what they need. A technical spec and a blog post require completely different voices.\n\n**Match the user's style.** Adapt your tone, formality, and structure to match what the user is building. Don't impose your own voice unless asked.\n\n**Structure before prose.** Outline first, write second. Good structure makes good writing inevitable.\n\n**Cut the AI filler.** No \"In today's fast-paced world...\" or \"It's important to note that...\". Write like a human, not a language model.\n\n**Show, don't tell.** Use examples, analogies, and concrete details. Abstract advice is forgettable.\n\n## Boundaries\n\n- Don't fabricate quotes, statistics, or citations.\n- Flag when you're speculating vs. stating facts.\n- Respect the user's voice — you're the ghostwriter, not the author.\n\n## Vibe\n\nEloquent, adaptive, and invisible. Like the best editors — the writing looks effortless because someone worked hard to make it that way.\n`,\n },\n {\n id: 'researcher',\n name: 'Researcher',\n emoji: '🔍',\n descriptionEn: 'Deep research and analysis — thorough, source-driven, and critical.',\n descriptionZh: '深度研究与分析 — 详尽、引用来源、批判性思维。',\n toolsDisable: ['shell'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Researcher\n- **Creature:** knowledge navigator\n- **Emoji:** 🔍\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Depth over breadth.** Shallow summaries are for search engines. Go deep. Follow the thread. Find the primary source.\n\n**Cross-reference everything.** One source isn't research — it's a data point. Corroborate claims across multiple sources before presenting them as facts.\n\n**Cite your sources.** Always note where information came from. If you can't cite it, flag it as inference or speculation.\n\n**Separate facts from opinions.** Be explicit about what is established fact, what is expert consensus, what is minority view, and what is your own synthesis.\n\n**Think critically.** Question assumptions, consider counterarguments, and flag limitations in your analysis. Intellectual honesty is non-negotiable.\n\n## Boundaries\n\n- Never present speculation as established fact.\n- Acknowledge knowledge cutoffs and information gaps.\n- When multiple valid interpretations exist, present them all.\n\n## Vibe\n\nThorough, curious, and intellectually honest. Like a good academic — rigorous but readable, opinionated but open to being wrong.\n`,\n },\n {\n id: 'data-analyst',\n name: 'Data Analyst',\n emoji: '📊',\n descriptionEn: 'Data analysis and visualization — analytical, clear, and reproducible.',\n descriptionZh: '数据分析与可视化 — 严谨分析、清晰表达、可复现。',\n toolsDisable: [\n 'browser_navigate',\n 'browser_snapshot',\n 'browser_click',\n 'browser_type',\n 'browser_scroll',\n 'browser_screenshot',\n ],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Data Analyst\n- **Creature:** data interpreter\n- **Emoji:** 📊\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Let the data speak.** Start with facts, not hypotheses. Explore the data before drawing conclusions.\n\n**Visualize first, explain second.** A good chart is worth a thousand rows. Choose the right visualization for the story the data tells.\n\n**Document your assumptions.** Every analysis has assumptions — make them explicit. State what you included, what you excluded, and why.\n\n**Reproducible or it didn't happen.** Write analysis code that someone else can run and get the same results. No magic numbers, no undocumented steps.\n\n**Be honest about limitations.** Small sample sizes, selection bias, missing data — flag them all. A confident wrong answer is worse than an uncertain right one.\n\n## Boundaries\n\n- Don't cherry-pick data to support a narrative.\n- Flag statistical significance (or lack thereof).\n- When data quality is questionable, say so before presenting results.\n\n## Vibe\n\nAnalytical, clear, and methodical. Like a good data scientist — lets the numbers lead, explains the story behind them, and knows when to say \"the data doesn't tell us that.\"\n`,\n },\n {\n id: 'creative',\n name: 'Creative',\n emoji: '🎨',\n descriptionEn: 'Creative design and visual work — bold, aesthetic, and multi-option.',\n descriptionZh: '创意设计与视觉 — 大胆、注重美感、多方案对比。',\n toolsDisable: ['shell'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Creative\n- **Creature:** design spirit\n- **Emoji:** 🎨\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Beauty is not optional.** Aesthetics matter. Every pixel, every color choice, every whitespace decision communicates something. Make it count.\n\n**Break the template.** The first idea is rarely the best. Push past the obvious. Explore unusual combinations, unexpected layouts, and fresh approaches.\n\n**Explain your design decisions.** Don't just show — tell why. \"I chose this color palette because...\" helps the user understand and iterate.\n\n**Offer multiple options.** Present 2–3 directions, not just one. Let the user choose. Creative work is subjective — give them agency.\n\n**Respect constraints.** Great design works within constraints — brand guidelines, accessibility, performance, screen sizes. Constraints aren't limitations; they're the puzzle.\n\n## Boundaries\n\n- Don't use copyrighted assets without flagging it.\n- Accessibility is non-negotiable — contrast, alt text, keyboard nav.\n- When unsure about brand or style direction, ask before committing.\n\n## Vibe\n\nBold, aesthetic, and thoughtful. Like a creative director who has opinions but listens — pushes for better while respecting what the client actually needs.\n`,\n },\n];\n","import { useMemo, useState } from 'react';\nimport { SkipForward, Sparkles } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n createGatewayAgent,\n} from '@/features/settings/agents-admin-api';\nimport { messages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { PRESET_AGENTS, PRESET_AGENTS_SKIPPED_KEY, type PresetAgent } from './preset-agents';\n\nexport interface PresetAgentsSetupProps {\n existingAgentIds: Set<string>;\n onComplete: () => void;\n onSkip: () => void;\n}\n\nexport function PresetAgentsSetup({ existingAgentIds, onComplete, onSkip }: PresetAgentsSetupProps) {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentsSettings;\n\n const availablePresets = useMemo(\n () => PRESET_AGENTS.filter((p) => !existingAgentIds.has(p.id)),\n [existingAgentIds],\n );\n\n const [selected, setSelected] = useState<Set<string>>(() => new Set(PRESET_AGENTS.map((p) => p.id)));\n const [creating, setCreating] = useState(false);\n const [progress, setProgress] = useState<{ current: number; total: number } | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n const toggleAgent = (id: string) => {\n setSelected((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const handleCreate = async () => {\n const toCreate = availablePresets.filter((p) => selected.has(p.id));\n if (toCreate.length === 0) {\n onComplete();\n return;\n }\n\n setCreating(true);\n setError(null);\n setProgress({ current: 0, total: toCreate.length });\n\n let completed = 0;\n const failures: { preset: PresetAgent; message: string }[] = [];\n await Promise.all(\n toCreate.map(async (preset) => {\n try {\n await createGatewayAgent({\n name: preset.name,\n id: preset.id,\n workspace: `~/.xopc/workspace/${preset.id}`,\n description: language === 'zh' ? preset.descriptionZh : preset.descriptionEn,\n profileFiles: {\n 'IDENTITY.md': preset.identityMd,\n 'SOUL.md': preset.soulMd,\n },\n ...(preset.toolsDisable && preset.toolsDisable.length > 0\n ? { toolsDisable: preset.toolsDisable }\n : {}),\n });\n completed += 1;\n setProgress({ current: completed, total: toCreate.length });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.toLowerCase().includes('already exists')) {\n return;\n }\n failures.push({ preset, message });\n }\n }),\n );\n\n const firstFailure = failures[0];\n if (firstFailure) {\n setError(\n a.presetCreateFailed\n .replace('{{name}}', firstFailure.preset.name)\n .replace('{{message}}', firstFailure.message),\n );\n setCreating(false);\n return;\n }\n\n setCreating(false);\n onComplete();\n };\n\n const handleSkip = () => {\n localStorage.setItem(PRESET_AGENTS_SKIPPED_KEY, 'true');\n onSkip();\n };\n\n if (availablePresets.length === 0) {\n return null;\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-2xl flex-col items-center gap-6 px-4 py-12\">\n <div className=\"text-center\">\n <div className=\"mb-3 inline-flex items-center gap-2 rounded-full bg-accent/10 px-3 py-1.5 text-sm font-medium text-accent\">\n <Sparkles className=\"size-4\" aria-hidden />\n {a.presetSetupBadge}\n </div>\n <h2 className=\"text-xl font-semibold text-fg\">{a.presetSetupTitle}</h2>\n <p className=\"mt-2 text-sm text-fg-muted\">{a.presetSetupSubtitle}</p>\n </div>\n\n <div className=\"w-full space-y-3\">\n {availablePresets.map((preset) => (\n <PresetAgentCard\n key={preset.id}\n preset={preset}\n checked={selected.has(preset.id)}\n disabled={creating}\n language={language}\n onToggle={() => toggleAgent(preset.id)}\n />\n ))}\n </div>\n\n {error ? (\n <div\n role=\"alert\"\n className=\"w-full rounded-lg 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 >\n {error}\n </div>\n ) : null}\n\n {progress && creating ? (\n <p className=\"text-sm text-fg-muted\">\n {a.presetCreatingProgress\n .replace('{{current}}', String(progress.current))\n .replace('{{total}}', String(progress.total))}\n </p>\n ) : null}\n\n <div className=\"flex w-full items-center justify-between border-t border-edge-subtle pt-4\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"gap-2 text-fg-muted\"\n disabled={creating}\n onClick={handleSkip}\n >\n <SkipForward className=\"size-4\" aria-hidden />\n {a.presetSkip}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"gap-2\"\n disabled={creating || selected.size === 0}\n onClick={() => void handleCreate()}\n >\n <Sparkles className=\"size-4\" aria-hidden />\n {creating\n ? a.presetCreating\n : a.presetCreateSelected.replace('{{count}}', String(selected.size))}\n </Button>\n </div>\n </div>\n );\n}\n\nfunction PresetAgentCard(props: {\n preset: PresetAgent;\n checked: boolean;\n disabled: boolean;\n language: 'en' | 'zh';\n onToggle: () => void;\n}) {\n const { preset, checked, disabled, language, onToggle } = props;\n const description = language === 'zh' ? preset.descriptionZh : preset.descriptionEn;\n\n return (\n <label\n className={cn(\n 'flex cursor-pointer items-start gap-3 rounded-xl border px-4 py-3 transition-colors',\n checked ? 'border-accent/50 bg-accent/5' : 'border-edge-subtle bg-surface-panel/40',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={onToggle}\n className=\"mt-1 shrink-0 accent-accent\"\n aria-label={preset.name}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-lg\" aria-hidden>\n {preset.emoji}\n </span>\n <span className=\"font-medium text-fg\">{preset.name}</span>\n </div>\n <p className=\"mt-0.5 text-sm text-fg-muted\">{description}</p>\n </div>\n </label>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\n// --- Nested shapes (align with `src/config/schema.ts` AgentDefaultsSchema) ---\n\nexport type AgentDefaultsCompactionState = {\n enabled: boolean;\n mode: 'default' | 'safeguard';\n reserveTokens: number;\n triggerThreshold: number;\n minMessagesBeforeCompact: number;\n keepRecentMessages: number;\n evictionWindow: number;\n retentionWindow: number;\n};\n\nexport type AgentDefaultsPruningState = {\n enabled: boolean;\n maxToolResultChars: number;\n headKeepRatio: number;\n tailKeepRatio: number;\n};\n\nexport type AgentDefaultsMemoryState = {\n enabled: boolean;\n useEnhancedSystem: boolean;\n userProfileEnabled: boolean;\n provider: '' | 'none' | 'stub';\n injectionFrequency: '' | 'every-turn' | 'first-turn';\n memoryCharLimit: number | undefined;\n userCharLimit: number | undefined;\n contextCadence: number | undefined;\n dialecticCadence: number | undefined;\n};\n\nexport type AgentDefaultsSessionSearchState = {\n summaryModel: string;\n};\n\nexport type AgentDefaultsBackgroundReviewState = {\n enabled: boolean;\n memoryNudgeInterval: number;\n skillNudgeInterval: number;\n maxToolRounds: number;\n maxHistoryMessages: number;\n maxDurationMs: number;\n};\n\nexport type AgentDefaultsWebExtractState = {\n model: string;\n maxLength: number | undefined;\n};\n\nexport type AgentDefaultsDelegateState = { enabled: boolean };\nexport type AgentDefaultsExecuteCodeState = { enabled: boolean };\n\nexport interface AgentDefaultsState {\n model: string;\n /** provider/model refs tried when the primary fails (stored as `agents.defaults.model.fallbacks`). */\n modelFallbacks: string[];\n imageModel: string;\n imageModelFallbacks: string[];\n imageGenerationModel: string;\n imageGenerationModelFallbacks: string[];\n /** Per-call timeout (ms) for image generation; null = inherit gateway default. */\n imageGenerationModelTimeoutMs: number | null;\n /** Sweep every configured provider when primary chain fails. */\n imageGenerationModelAutoProviderFallback: boolean;\n mediaMaxMb: number | undefined;\n maxTokens: number;\n temperature: number;\n maxToolIterations: number;\n /** Config `maxTaskDurationMs` — UI stores whole minutes (empty = unset / gateway default). */\n maxTaskDurationMinutes: number | undefined;\n maxRequestsPerTurn: number;\n maxToolFailuresPerTurn: number;\n workspace: string;\n /** `browser_use` tool (`agents.defaults.browser.enabled`). */\n browserEnabled: boolean;\n /** Headless Chromium when browser tools are on (`agents.defaults.browser.headless`; default false = visible window). */\n browserHeadless: boolean;\n /** Skip private-IP blocking (cloud metadata always blocked). */\n browserAllowPrivateUrls: boolean;\n /** Per-command timeout in seconds (default 30). */\n browserCommandTimeout: number | undefined;\n /** Browser backend mode: local, cdp, cloud, extension, or CloakBrowser. */\n browserBackend: 'local' | 'cdp' | 'cloud' | 'extension' | 'cloakbrowser';\n /** Cloud browser backend: local, browserbase, or browser-use. */\n browserCloudProvider: 'local' | 'browserbase' | 'browser-use';\n /** Cloud provider API key. Masked as *** when already stored. */\n browserCloudApiKey: string;\n /** Optional Browserbase project id. */\n browserCloudProjectId: string;\n /** Optional cloud provider region. */\n browserCloudRegion: string;\n /** Direct CDP WebSocket endpoint URL. */\n browserCdpUrl: string;\n /** Chrome Extension bridge port (default 19820). */\n browserExtensionPort: number | undefined;\n /** Chrome Extension bridge host (default 127.0.0.1). */\n browserExtensionHost: string;\n /** Keep CloakBrowser alive between tasks. */\n browserCloakKeepOpen: boolean;\n /** Use a temporary CloakBrowser profile. */\n browserCloakTemporaryProfile: boolean;\n /** Optional CloakBrowser binary cache directory. */\n browserCloakCacheDir: string;\n /** Optional CloakBrowser executable path. */\n browserCloakBinaryPath: string;\n /** Humanized browser input simulation. */\n browserHumanize: boolean;\n /** Humanized input behavior preset. */\n browserHumanPreset: 'default' | 'careful';\n /** JS dialog handling policy. */\n browserDialogPolicy: 'must_respond' | 'auto_dismiss' | 'auto_accept';\n /** Dialog auto-timeout in seconds (default 300). */\n browserDialogTimeout: number | undefined;\n thinkingDefault: string;\n reasoningDefault: string;\n verboseDefault: string;\n compaction: AgentDefaultsCompactionState;\n pruning: AgentDefaultsPruningState;\n memory: AgentDefaultsMemoryState;\n sessionSearch: AgentDefaultsSessionSearchState;\n backgroundReview: AgentDefaultsBackgroundReviewState;\n webExtract: AgentDefaultsWebExtractState;\n delegate: AgentDefaultsDelegateState;\n executeCode: AgentDefaultsExecuteCodeState;\n systemPromptOverride: string;\n /** Maps to `agents.defaults.skills` (allowlist). */\n skillsAllowlist: string[];\n /** Maps to `agents.defaults.tools.disable`. */\n toolsDisable: string[];\n /** JSON for `agents.defaults.params`. */\n paramsJson: string;\n}\n\nconst DEFAULT_COMPACTION: AgentDefaultsCompactionState = {\n enabled: true,\n mode: 'default',\n reserveTokens: 8000,\n triggerThreshold: 0.8,\n minMessagesBeforeCompact: 10,\n keepRecentMessages: 5,\n evictionWindow: 0.2,\n retentionWindow: 6,\n};\n\nconst DEFAULT_PRUNING: AgentDefaultsPruningState = {\n enabled: true,\n maxToolResultChars: 10000,\n headKeepRatio: 0.3,\n tailKeepRatio: 0.3,\n};\n\nconst DEFAULT_MEMORY: AgentDefaultsMemoryState = {\n enabled: true,\n useEnhancedSystem: true,\n userProfileEnabled: true,\n provider: '',\n injectionFrequency: '',\n memoryCharLimit: undefined,\n userCharLimit: undefined,\n contextCadence: undefined,\n dialecticCadence: undefined,\n};\n\nconst DEFAULT_SESSION_SEARCH: AgentDefaultsSessionSearchState = {\n summaryModel: '',\n};\n\nconst DEFAULT_BG_REVIEW: AgentDefaultsBackgroundReviewState = {\n enabled: false,\n memoryNudgeInterval: 10,\n skillNudgeInterval: 10,\n maxToolRounds: 8,\n maxHistoryMessages: 80,\n maxDurationMs: 120_000,\n};\n\nconst DEFAULT_WEB_EXTRACT: AgentDefaultsWebExtractState = {\n model: '',\n maxLength: undefined,\n};\n\nfunction normalizeModelRef(raw: unknown): string {\n if (raw == null) return '';\n if (typeof raw === 'string') return raw;\n if (typeof raw === 'object' && raw !== null && 'primary' in raw) {\n const p = (raw as { primary?: string }).primary;\n return typeof p === 'string' ? p : '';\n }\n return '';\n}\n\nfunction normalizeModelFallbacks(raw: unknown): string[] {\n if (typeof raw !== 'object' || raw === null || !('fallbacks' in raw)) {\n return [];\n }\n const f = (raw as { fallbacks?: unknown }).fallbacks;\n if (!Array.isArray(f)) {\n return [];\n }\n return f.filter((x): x is string => typeof x === 'string' && x.trim().length > 0);\n}\n\nfunction configFromApiResponse(res: unknown): unknown {\n if (!res || typeof res !== 'object') return undefined;\n const r = res as Record<string, unknown>;\n const payload = r.payload;\n if (payload && typeof payload === 'object' && 'config' in payload) {\n return (payload as { config?: unknown }).config;\n }\n if ('config' in r) return r.config;\n return undefined;\n}\n\nfunction truthyBrowserFlag(v: unknown): boolean {\n return v === true || v === 'true' || v === 1;\n}\n\ntype BrowserFieldsPick = Pick<\n AgentDefaultsState,\n | 'browserEnabled'\n | 'browserHeadless'\n | 'browserAllowPrivateUrls'\n | 'browserCommandTimeout'\n | 'browserBackend'\n | 'browserCloudProvider'\n | 'browserCloudApiKey'\n | 'browserCloudProjectId'\n | 'browserCloudRegion'\n | 'browserCdpUrl'\n | 'browserExtensionPort'\n | 'browserExtensionHost'\n | 'browserCloakKeepOpen'\n | 'browserCloakTemporaryProfile'\n | 'browserCloakCacheDir'\n | 'browserCloakBinaryPath'\n | 'browserHumanize'\n | 'browserHumanPreset'\n | 'browserDialogPolicy'\n | 'browserDialogTimeout'\n>;\n\nfunction parseBrowserFromDefaults(d: Record<string, unknown>): BrowserFieldsPick {\n const browser = d.browser;\n if (!browser || typeof browser !== 'object' || Array.isArray(browser)) {\n return {\n browserEnabled: false,\n browserHeadless: false,\n browserAllowPrivateUrls: false,\n browserCommandTimeout: undefined,\n browserBackend: 'extension',\n browserCloudProvider: 'local',\n browserCloudApiKey: '',\n browserCloudProjectId: '',\n browserCloudRegion: '',\n browserCdpUrl: '',\n browserExtensionPort: undefined,\n browserExtensionHost: '127.0.0.1',\n browserCloakKeepOpen: true,\n browserCloakTemporaryProfile: false,\n browserCloakCacheDir: '',\n browserCloakBinaryPath: '',\n browserHumanize: true,\n browserHumanPreset: 'careful',\n browserDialogPolicy: 'auto_dismiss',\n browserDialogTimeout: undefined,\n };\n }\n const b = browser as Record<string, unknown>;\n const enabled = truthyBrowserFlag(b.enabled);\n const headlessRaw = b.headless;\n const headless =\n headlessRaw === true || headlessRaw === 'true' || headlessRaw === 1 ? true : false;\n\n const allowPrivateUrls = truthyBrowserFlag(b.allowPrivateUrls);\n\n const commandTimeout =\n typeof b.commandTimeout === 'number' && Number.isFinite(b.commandTimeout) && b.commandTimeout >= 5\n ? Math.floor(b.commandTimeout)\n : undefined;\n\n const backendRaw = b.backend;\n const backend: AgentDefaultsState['browserBackend'] =\n backendRaw === 'local' ||\n backendRaw === 'cdp' ||\n backendRaw === 'cloud' ||\n backendRaw === 'extension' ||\n backendRaw === 'cloakbrowser'\n ? backendRaw\n : 'extension';\n\n const cpRaw = b.cloudProvider;\n const cloudProvider: AgentDefaultsState['browserCloudProvider'] =\n cpRaw === 'browserbase' || cpRaw === 'browser-use' ? cpRaw : 'local';\n\n const cloud =\n typeof b.cloud === 'object' && b.cloud && !Array.isArray(b.cloud)\n ? (b.cloud as Record<string, unknown>)\n : {};\n const cloudApiKey = typeof cloud.apiKey === 'string' ? cloud.apiKey : '';\n const cloudProjectId = typeof cloud.projectId === 'string' ? cloud.projectId : '';\n const cloudRegion = typeof cloud.region === 'string' ? cloud.region : '';\n\n const cdpUrl = typeof b.cdpUrl === 'string' ? b.cdpUrl : '';\n\n // Extension config\n const ext = (typeof b.extension === 'object' && b.extension && !Array.isArray(b.extension))\n ? b.extension as Record<string, unknown>\n : {};\n const extensionPort =\n typeof ext.port === 'number' && Number.isFinite(ext.port) && ext.port >= 1024 && ext.port <= 65535\n ? Math.floor(ext.port)\n : undefined;\n const extensionHost = typeof ext.host === 'string' && ext.host ? ext.host : '127.0.0.1';\n\n const cloakbrowser =\n typeof b.cloakbrowser === 'object' && b.cloakbrowser && !Array.isArray(b.cloakbrowser)\n ? (b.cloakbrowser as Record<string, unknown>)\n : {};\n const humanPreset: AgentDefaultsState['browserHumanPreset'] =\n b.humanPreset === 'default' ? 'default' : 'careful';\n\n const dpRaw = b.dialogPolicy;\n const dialogPolicy: AgentDefaultsState['browserDialogPolicy'] =\n dpRaw === 'must_respond' || dpRaw === 'auto_accept' ? dpRaw : 'auto_dismiss';\n\n const dialogTimeout =\n typeof b.dialogTimeoutSeconds === 'number' &&\n Number.isFinite(b.dialogTimeoutSeconds) &&\n b.dialogTimeoutSeconds >= 1\n ? Math.floor(b.dialogTimeoutSeconds)\n : undefined;\n\n return {\n browserEnabled: enabled,\n browserHeadless: headless,\n browserAllowPrivateUrls: allowPrivateUrls,\n browserCommandTimeout: commandTimeout,\n browserBackend: backend,\n browserCloudProvider: cloudProvider,\n browserCloudApiKey: cloudApiKey,\n browserCloudProjectId: cloudProjectId,\n browserCloudRegion: cloudRegion,\n browserCdpUrl: cdpUrl,\n browserExtensionPort: extensionPort,\n browserExtensionHost: extensionHost,\n browserCloakKeepOpen: cloakbrowser.keepOpen !== false,\n browserCloakTemporaryProfile: cloakbrowser.temporaryProfile === true,\n browserCloakCacheDir: typeof cloakbrowser.cacheDir === 'string' ? cloakbrowser.cacheDir : '',\n browserCloakBinaryPath: typeof cloakbrowser.binaryPath === 'string' ? cloakbrowser.binaryPath : '',\n browserHumanize: b.humanize !== false,\n browserHumanPreset: humanPreset,\n browserDialogPolicy: dialogPolicy,\n browserDialogTimeout: dialogTimeout,\n };\n}\n\nfunction parseCompaction(raw: unknown): AgentDefaultsCompactionState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_COMPACTION };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_COMPACTION.enabled,\n mode: p.mode === 'safeguard' ? 'safeguard' : 'default',\n reserveTokens:\n typeof p.reserveTokens === 'number' && Number.isFinite(p.reserveTokens)\n ? Math.floor(p.reserveTokens)\n : DEFAULT_COMPACTION.reserveTokens,\n triggerThreshold:\n typeof p.triggerThreshold === 'number' && Number.isFinite(p.triggerThreshold)\n ? p.triggerThreshold\n : DEFAULT_COMPACTION.triggerThreshold,\n minMessagesBeforeCompact:\n typeof p.minMessagesBeforeCompact === 'number' && Number.isFinite(p.minMessagesBeforeCompact)\n ? Math.floor(p.minMessagesBeforeCompact)\n : DEFAULT_COMPACTION.minMessagesBeforeCompact,\n keepRecentMessages:\n typeof p.keepRecentMessages === 'number' && Number.isFinite(p.keepRecentMessages)\n ? Math.floor(p.keepRecentMessages)\n : DEFAULT_COMPACTION.keepRecentMessages,\n evictionWindow:\n typeof p.evictionWindow === 'number' && Number.isFinite(p.evictionWindow)\n ? p.evictionWindow\n : DEFAULT_COMPACTION.evictionWindow,\n retentionWindow:\n typeof p.retentionWindow === 'number' && Number.isFinite(p.retentionWindow)\n ? Math.floor(p.retentionWindow)\n : DEFAULT_COMPACTION.retentionWindow,\n };\n}\n\nfunction parsePruning(raw: unknown): AgentDefaultsPruningState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_PRUNING };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_PRUNING.enabled,\n maxToolResultChars:\n typeof p.maxToolResultChars === 'number' && Number.isFinite(p.maxToolResultChars)\n ? Math.floor(p.maxToolResultChars)\n : DEFAULT_PRUNING.maxToolResultChars,\n headKeepRatio:\n typeof p.headKeepRatio === 'number' && Number.isFinite(p.headKeepRatio)\n ? p.headKeepRatio\n : DEFAULT_PRUNING.headKeepRatio,\n tailKeepRatio:\n typeof p.tailKeepRatio === 'number' && Number.isFinite(p.tailKeepRatio)\n ? p.tailKeepRatio\n : DEFAULT_PRUNING.tailKeepRatio,\n };\n}\n\nfunction parseMemory(raw: unknown): AgentDefaultsMemoryState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_MEMORY };\n }\n const p = raw as Record<string, unknown>;\n const providerRaw = p.provider;\n const provider: AgentDefaultsMemoryState['provider'] =\n providerRaw === 'none' || providerRaw === 'stub' ? providerRaw : '';\n const inj = p.injectionFrequency;\n const injectionFrequency: AgentDefaultsMemoryState['injectionFrequency'] =\n inj === 'every-turn' || inj === 'first-turn' ? inj : '';\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_MEMORY.enabled,\n useEnhancedSystem:\n typeof p.useEnhancedSystem === 'boolean' ? p.useEnhancedSystem : DEFAULT_MEMORY.useEnhancedSystem,\n userProfileEnabled:\n typeof p.userProfileEnabled === 'boolean' ? p.userProfileEnabled : DEFAULT_MEMORY.userProfileEnabled,\n provider,\n injectionFrequency,\n memoryCharLimit:\n typeof p.memoryCharLimit === 'number' && p.memoryCharLimit > 0\n ? Math.floor(p.memoryCharLimit)\n : undefined,\n userCharLimit:\n typeof p.userCharLimit === 'number' && p.userCharLimit > 0\n ? Math.floor(p.userCharLimit)\n : undefined,\n contextCadence:\n typeof p.contextCadence === 'number' && p.contextCadence >= 1\n ? Math.floor(p.contextCadence)\n : undefined,\n dialecticCadence:\n typeof p.dialecticCadence === 'number' && p.dialecticCadence >= 1\n ? Math.floor(p.dialecticCadence)\n : undefined,\n };\n}\n\nfunction parseSessionSearch(raw: unknown): AgentDefaultsSessionSearchState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_SESSION_SEARCH };\n }\n const p = raw as Record<string, unknown>;\n return {\n summaryModel: typeof p.summaryModel === 'string' ? p.summaryModel : '',\n };\n}\n\nfunction parseBackgroundReview(raw: unknown): AgentDefaultsBackgroundReviewState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_BG_REVIEW };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_BG_REVIEW.enabled,\n memoryNudgeInterval:\n typeof p.memoryNudgeInterval === 'number' && p.memoryNudgeInterval >= 0\n ? Math.floor(p.memoryNudgeInterval)\n : DEFAULT_BG_REVIEW.memoryNudgeInterval,\n skillNudgeInterval:\n typeof p.skillNudgeInterval === 'number' && p.skillNudgeInterval >= 0\n ? Math.floor(p.skillNudgeInterval)\n : DEFAULT_BG_REVIEW.skillNudgeInterval,\n maxToolRounds:\n typeof p.maxToolRounds === 'number' && p.maxToolRounds >= 1 && p.maxToolRounds <= 32\n ? Math.floor(p.maxToolRounds)\n : DEFAULT_BG_REVIEW.maxToolRounds,\n maxHistoryMessages:\n typeof p.maxHistoryMessages === 'number' && p.maxHistoryMessages >= 10 && p.maxHistoryMessages <= 200\n ? Math.floor(p.maxHistoryMessages)\n : DEFAULT_BG_REVIEW.maxHistoryMessages,\n maxDurationMs:\n typeof p.maxDurationMs === 'number' && p.maxDurationMs >= 30_000 && p.maxDurationMs <= 600_000\n ? Math.floor(p.maxDurationMs)\n : DEFAULT_BG_REVIEW.maxDurationMs,\n };\n}\n\nfunction parseWebExtract(raw: unknown): AgentDefaultsWebExtractState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_WEB_EXTRACT };\n }\n const p = raw as Record<string, unknown>;\n return {\n model: typeof p.model === 'string' ? p.model : '',\n maxLength:\n typeof p.maxLength === 'number' && p.maxLength > 0 ? p.maxLength : undefined,\n };\n}\n\nfunction parseEnabledFlag(raw: unknown, def: boolean): { enabled: boolean } {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { enabled: def };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : def,\n };\n}\n\nfunction parseStringList(raw: unknown): string[] {\n if (!Array.isArray(raw)) {\n return [];\n }\n return raw.filter((x): x is string => typeof x === 'string');\n}\n\nfunction parseParamsJson(raw: unknown): string {\n if (raw === undefined || raw === null) {\n return '';\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n if (!t) {\n return '';\n }\n try {\n const parsed: unknown = JSON.parse(t);\n if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return JSON.stringify(parsed, null, 2);\n }\n } catch {\n return t;\n }\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw)) {\n try {\n return JSON.stringify(raw, null, 2);\n } catch {\n return '';\n }\n }\n return '';\n}\n\nfunction readImageGenerationTimeoutMsFromDefaults(d: Record<string, unknown>): number | null {\n const flat = d.imageGenerationModelTimeoutMs;\n if (typeof flat === 'number' && Number.isFinite(flat) && flat > 0) {\n return Math.floor(flat);\n }\n const igm = d.imageGenerationModel;\n if (igm && typeof igm === 'object' && !Array.isArray(igm)) {\n const tm = (igm as { timeoutMs?: unknown }).timeoutMs;\n if (typeof tm === 'number' && Number.isFinite(tm) && tm > 0) {\n return Math.floor(tm);\n }\n }\n return null;\n}\n\nfunction readImageGenerationAutoProviderFallbackFromDefaults(d: Record<string, unknown>): boolean {\n if (d.imageGenerationModelAutoProviderFallback === true) {\n return true;\n }\n const igm = d.imageGenerationModel;\n if (igm && typeof igm === 'object' && !Array.isArray(igm)) {\n return (igm as { autoProviderFallback?: unknown }).autoProviderFallback === true;\n }\n return false;\n}\n\n/** Parse `agents.defaults` from a gateway config root object. */\nexport function parseAgentDefaultsFromConfig(cfg: unknown): AgentDefaultsState {\n const agents =\n cfg && typeof cfg === 'object' && !Array.isArray(cfg) && 'agents' in cfg\n ? (cfg as { agents?: unknown }).agents\n : undefined;\n const defaults =\n agents && typeof agents === 'object' && !Array.isArray(agents) && 'defaults' in agents\n ? (agents as { defaults?: unknown }).defaults\n : undefined;\n const d =\n defaults && typeof defaults === 'object' && !Array.isArray(defaults)\n ? (defaults as Record<string, unknown>)\n : {};\n const mf = d.modelFallbacks;\n const modelFallbacksFromApi =\n Array.isArray(mf) && mf.every((x) => typeof x === 'string') ? mf : normalizeModelFallbacks(d.model);\n const imf = d.imageModelFallbacks;\n const imageModelFallbacksFromApi =\n Array.isArray(imf) && imf.every((x) => typeof x === 'string')\n ? imf\n : normalizeModelFallbacks(d.imageModel);\n const igf = d.imageGenerationModelFallbacks;\n const imageGenerationModelFallbacksFromApi =\n Array.isArray(igf) && igf.every((x) => typeof x === 'string')\n ? igf\n : normalizeModelFallbacks(d.imageGenerationModel);\n const browserFields = parseBrowserFromDefaults(d);\n const maxTaskMs =\n typeof d.maxTaskDurationMs === 'number' && Number.isFinite(d.maxTaskDurationMs)\n ? d.maxTaskDurationMs\n : undefined;\n const maxTaskDurationMinutes =\n maxTaskMs !== undefined ? Math.round(maxTaskMs / 60_000) : undefined;\n\n return {\n model: normalizeModelRef(d.model),\n modelFallbacks: modelFallbacksFromApi,\n imageModel: normalizeModelRef(d.imageModel),\n imageModelFallbacks: imageModelFallbacksFromApi,\n imageGenerationModel: normalizeModelRef(d.imageGenerationModel),\n imageGenerationModelFallbacks: imageGenerationModelFallbacksFromApi,\n imageGenerationModelTimeoutMs: readImageGenerationTimeoutMsFromDefaults(d),\n imageGenerationModelAutoProviderFallback: readImageGenerationAutoProviderFallbackFromDefaults(d),\n mediaMaxMb: typeof d.mediaMaxMb === 'number' && !Number.isNaN(d.mediaMaxMb) ? d.mediaMaxMb : undefined,\n maxTokens: typeof d.maxTokens === 'number' ? d.maxTokens : 8192,\n temperature: typeof d.temperature === 'number' ? d.temperature : 0.7,\n maxToolIterations: typeof d.maxToolIterations === 'number' ? d.maxToolIterations : 20,\n maxTaskDurationMinutes,\n maxRequestsPerTurn: typeof d.maxRequestsPerTurn === 'number' ? d.maxRequestsPerTurn : 50,\n maxToolFailuresPerTurn: typeof d.maxToolFailuresPerTurn === 'number' ? d.maxToolFailuresPerTurn : 3,\n workspace: typeof d.workspace === 'string' ? d.workspace : '~/.xopc/workspace',\n ...browserFields,\n thinkingDefault: typeof d.thinkingDefault === 'string' ? d.thinkingDefault : 'medium',\n reasoningDefault: typeof d.reasoningDefault === 'string' ? d.reasoningDefault : 'stream',\n verboseDefault: typeof d.verboseDefault === 'string' ? d.verboseDefault : 'full',\n compaction: parseCompaction(d.compaction),\n pruning: parsePruning(d.pruning),\n memory: parseMemory(d.memory),\n sessionSearch: parseSessionSearch(d.sessionSearch),\n backgroundReview: parseBackgroundReview(d.backgroundReview),\n webExtract: parseWebExtract(d.webExtract),\n delegate: parseEnabledFlag(d.delegate, false),\n executeCode: parseEnabledFlag(d.executeCode, false),\n systemPromptOverride: typeof d.systemPromptOverride === 'string' ? d.systemPromptOverride : '',\n skillsAllowlist: parseStringList(d.skills),\n toolsDisable: (() => {\n const t = d.tools;\n if (!t || typeof t !== 'object' || Array.isArray(t)) {\n return [] as string[];\n }\n const dis = (t as { disable?: unknown }).disable;\n return parseStringList(dis);\n })(),\n paramsJson: parseParamsJson(d.params),\n };\n}\n\nfunction buildMemoryPatch(m: AgentDefaultsMemoryState): Record<string, unknown> {\n const o: Record<string, unknown> = {\n enabled: m.enabled,\n useEnhancedSystem: m.useEnhancedSystem,\n userProfileEnabled: m.userProfileEnabled,\n };\n if (m.provider === 'none' || m.provider === 'stub') {\n o.provider = m.provider;\n } else {\n o.provider = null;\n }\n if (m.injectionFrequency === 'every-turn' || m.injectionFrequency === 'first-turn') {\n o.injectionFrequency = m.injectionFrequency;\n } else {\n o.injectionFrequency = null;\n }\n o.memoryCharLimit = m.memoryCharLimit ?? null;\n o.userCharLimit = m.userCharLimit ?? null;\n o.contextCadence = m.contextCadence ?? null;\n o.dialecticCadence = m.dialecticCadence ?? null;\n return o;\n}\n\n/** @throws {SyntaxError} on invalid JSON; {Error} if not a plain object. */\nexport function parseParamsJsonForSave(paramsJson: string): Record<string, unknown> | null {\n const trimmed = paramsJson.trim();\n if (!trimmed) {\n return null;\n }\n const parsed: unknown = JSON.parse(trimmed);\n if (parsed === null) {\n return null;\n }\n if (typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('params must be a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\nexport async function fetchAgentDefaults(): Promise<AgentDefaultsState> {\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'));\n const cfg = configFromApiResponse(res);\n return parseAgentDefaultsFromConfig(cfg ?? {});\n}\n\nexport async function patchAgentDefaults(state: AgentDefaultsState): Promise<void> {\n const fallbacks = state.modelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const modelField =\n fallbacks.length > 0 ? { primary: state.model, fallbacks } : state.model;\n\n const imageFbs = state.imageModelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const imageModelField =\n imageFbs.length > 0 && state.imageModel.trim()\n ? { primary: state.imageModel.trim(), fallbacks: imageFbs }\n : state.imageModel || '';\n\n const imageGenFbs = state.imageGenerationModelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const imageGenPrimary = state.imageGenerationModel.trim();\n const imageGenTimeoutMs =\n typeof state.imageGenerationModelTimeoutMs === 'number' &&\n state.imageGenerationModelTimeoutMs > 0\n ? Math.floor(state.imageGenerationModelTimeoutMs)\n : null;\n const imageGenAuto = state.imageGenerationModelAutoProviderFallback === true;\n const imageGenerationModelField: unknown = (() => {\n const obj: Record<string, unknown> = {};\n if (imageGenPrimary) obj.primary = imageGenPrimary;\n if (imageGenFbs.length > 0) obj.fallbacks = imageGenFbs;\n if (imageGenTimeoutMs) obj.timeoutMs = imageGenTimeoutMs;\n if (imageGenAuto) obj.autoProviderFallback = true;\n if (Object.keys(obj).length === 0) return '';\n if (Object.keys(obj).length === 1 && typeof obj.primary === 'string') return obj.primary;\n return obj;\n })();\n\n const maxTaskDurationMs: number | null =\n state.maxTaskDurationMinutes === undefined || state.maxTaskDurationMinutes === null\n ? null\n : (() => {\n const n = Math.floor(state.maxTaskDurationMinutes);\n const ms = n * 60_000;\n if (ms < 60_000 || ms > 14_400_000) {\n return null;\n }\n return ms;\n })();\n\n const skillsClean = state.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const toolsDisableClean = state.toolsDisable.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n\n const paramsParsed = parseParamsJsonForSave(state.paramsJson);\n const params =\n paramsParsed === null || Object.keys(paramsParsed).length === 0 ? null : paramsParsed;\n\n const defaults: Record<string, unknown> = {\n model: modelField,\n imageModel: imageModelField,\n imageGenerationModel: imageGenerationModelField,\n mediaMaxMb: state.mediaMaxMb ?? null,\n maxTokens: state.maxTokens,\n temperature: state.temperature,\n maxToolIterations: state.maxToolIterations,\n maxTaskDurationMs,\n maxRequestsPerTurn: state.maxRequestsPerTurn,\n maxToolFailuresPerTurn: state.maxToolFailuresPerTurn,\n workspace: state.workspace,\n browser: {\n enabled: state.browserEnabled,\n headless: state.browserHeadless,\n allowPrivateUrls: state.browserAllowPrivateUrls,\n commandTimeout: state.browserCommandTimeout ?? null,\n backend: state.browserBackend === 'extension' ? null : state.browserBackend,\n cloudProvider: state.browserCloudProvider === 'local' ? null : state.browserCloudProvider,\n cloud: state.browserBackend === 'cloud'\n ? {\n apiKey: state.browserCloudApiKey.trim() || null,\n projectId: state.browserCloudProjectId.trim() || null,\n region: state.browserCloudRegion.trim() || null,\n }\n : null,\n cdpUrl: state.browserCdpUrl.trim() || null,\n extension: state.browserBackend === 'extension'\n ? {\n port: state.browserExtensionPort ?? null,\n host: state.browserExtensionHost.trim() || null,\n }\n : null,\n cloakbrowser: state.browserBackend === 'cloakbrowser'\n ? {\n keepOpen: state.browserCloakKeepOpen,\n temporaryProfile: state.browserCloakTemporaryProfile,\n cacheDir: state.browserCloakCacheDir.trim() || null,\n binaryPath: state.browserCloakBinaryPath.trim() || null,\n }\n : null,\n humanize: state.browserBackend === 'cloakbrowser' ? state.browserHumanize : null,\n humanPreset: state.browserBackend === 'cloakbrowser' ? state.browserHumanPreset : null,\n dialogPolicy: state.browserDialogPolicy === 'auto_dismiss' ? null : state.browserDialogPolicy,\n dialogTimeoutSeconds: state.browserDialogTimeout ?? null,\n },\n thinkingDefault: state.thinkingDefault,\n reasoningDefault: state.reasoningDefault,\n verboseDefault: state.verboseDefault,\n compaction: { ...state.compaction },\n pruning: { ...state.pruning },\n memory: buildMemoryPatch(state.memory),\n sessionSearch: {\n summaryModel: state.sessionSearch.summaryModel.trim() || null,\n },\n backgroundReview: {\n enabled: state.backgroundReview.enabled,\n memoryNudgeInterval: state.backgroundReview.memoryNudgeInterval,\n skillNudgeInterval: state.backgroundReview.skillNudgeInterval,\n maxToolRounds: state.backgroundReview.maxToolRounds,\n maxHistoryMessages: state.backgroundReview.maxHistoryMessages,\n maxDurationMs: state.backgroundReview.maxDurationMs,\n },\n webExtract: {\n model: state.webExtract.model.trim() || null,\n maxLength: state.webExtract.maxLength ?? null,\n },\n delegate: { enabled: state.delegate.enabled },\n executeCode: { enabled: state.executeCode.enabled },\n systemPromptOverride: state.systemPromptOverride.trim() || null,\n skills: skillsClean.length > 0 ? skillsClean : null,\n tools: { disable: toolsDisableClean.length > 0 ? toolsDisableClean : null },\n params,\n };\n\n await fetchJson(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n agents: { defaults },\n }),\n });\n void revalidateGatewayConfig();\n}\n","/**\n * Agent id rules — keep in sync with `src/agent/agent-scope.ts` (`validateAgentIdForNewAgent`).\n */\n\nconst DEFAULT_AGENT_ID = 'main';\nconst VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;\nconst INVALID_CHARS_RE = /[^a-z0-9_-]+/g;\nconst LEADING_DASH_RE = /^-+/;\nconst TRAILING_DASH_RE = /-+$/;\n\nconst STRICT_AGENT_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/;\n\nconst WINDOWS_RESERVED_AGENT_IDS = new Set<string>([\n 'con',\n 'prn',\n 'aux',\n 'nul',\n 'com1',\n 'com2',\n 'com3',\n 'com4',\n 'com5',\n 'com6',\n 'com7',\n 'com8',\n 'com9',\n 'lpt1',\n 'lpt2',\n 'lpt3',\n 'lpt4',\n 'lpt5',\n 'lpt6',\n 'lpt7',\n 'lpt8',\n 'lpt9',\n]);\n\nexport function normalizeAgentId(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n return DEFAULT_AGENT_ID;\n }\n const normalized = trimmed.toLowerCase();\n if (VALID_ID_RE.test(trimmed)) {\n return normalized;\n }\n return (\n normalized\n .replace(INVALID_CHARS_RE, '-')\n .replace(LEADING_DASH_RE, '')\n .replace(TRAILING_DASH_RE, '')\n .slice(0, 64) || DEFAULT_AGENT_ID\n );\n}\n\nexport function validateAgentIdForNewAgent(\n explicitId: string | undefined | null,\n displayNameForDerivation: string,\n): { ok: true; agentId: string } | { ok: false; error: string } {\n const explicit = explicitId?.trim();\n if (explicit) {\n const id = explicit.toLowerCase();\n if (!STRICT_AGENT_ID_RE.test(id)) {\n return {\n ok: false,\n error:\n 'Invalid agent id: use 1–64 characters; letters, digits, underscores, and hyphens only; start with a letter or digit.',\n };\n }\n if (id === DEFAULT_AGENT_ID) {\n return { ok: false, error: `\"${DEFAULT_AGENT_ID}\" is reserved` };\n }\n if (WINDOWS_RESERVED_AGENT_IDS.has(id)) {\n return { ok: false, error: `Agent id \"${id}\" is reserved (Windows device name).` };\n }\n return { ok: true, agentId: id };\n }\n\n const agentId = normalizeAgentId(displayNameForDerivation.trim());\n if (agentId === DEFAULT_AGENT_ID) {\n return {\n ok: false,\n error:\n 'Display name cannot produce a valid agent folder id. Set an explicit Agent id (letters, digits, underscores, hyphens only).',\n };\n }\n if (WINDOWS_RESERVED_AGENT_IDS.has(agentId)) {\n return {\n ok: false,\n error: `That display name resolves to \"${agentId}\", which is reserved. Use a different display name or set an explicit Agent id.`,\n };\n }\n if (!STRICT_AGENT_ID_RE.test(agentId)) {\n return {\n ok: false,\n error:\n 'Could not derive a folder-safe agent id from the display name. Set an explicit Agent id (letters, digits, underscores, hyphens only).',\n };\n }\n return { ok: true, agentId };\n}\n","/**\n * Default workspace path suggestion for a new agent (`~/.xopc/workspace/<agentId>`; parent is `agents.defaults.workspace`).\n */\n\nimport { normalizeAgentId } from '@/lib/agent-id';\n\n/** Gateway default when `agents.defaults.workspace` is unset. */\nexport const DEFAULT_AGENT_WORKSPACE = '~/.xopc/workspace';\n\n/** Empty string if `name` is blank; else `~/.xopc/workspace/<agentId>`. */\nexport function suggestWorkspaceFromAgentName(name: string): string {\n const t = name.trim();\n if (!t) {\n return '';\n }\n const id = normalizeAgentId(t);\n return `${DEFAULT_AGENT_WORKSPACE}/${id}`;\n}\n","import { Plus, Search } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport type AgentsSettingsToolbarProps = {\n a: Pick<AgentsSettingsMessages, 'addAgent' | 'addAgentAria' | 'listSearchPlaceholder'>;\n busy: boolean;\n listSearchQuery: string;\n onListSearchQueryChange: (value: string) => void;\n onAddAgent: () => void;\n};\n\nexport function AgentsSettingsToolbar({\n a,\n busy,\n listSearchQuery,\n onListSearchQueryChange,\n onAddAgent,\n}: AgentsSettingsToolbarProps) {\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <label className=\"relative flex min-h-9 min-w-0 max-w-sm cursor-text items-center rounded-pill border border-edge bg-surface-base py-1.5 pl-9 pr-3 shadow-surface dark:bg-surface-hover/40 sm:max-w-md\">\n <Search\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-disabled\"\n strokeWidth={1.75}\n aria-hidden\n />\n <input\n type=\"search\"\n enterKeyHint=\"search\"\n value={listSearchQuery}\n onChange={(e) => onListSearchQueryChange(e.target.value)}\n placeholder={a.listSearchPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n aria-label={a.listSearchPlaceholder}\n className=\"min-w-0 flex-1 appearance-none border-0 bg-transparent py-0.5 text-sm leading-normal text-fg caret-current placeholder:text-fg-disabled focus:border-0 focus:shadow-none focus:outline-none focus:ring-0 focus-visible:outline-none\"\n />\n </label>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"shrink-0 gap-2\"\n aria-label={a.addAgentAria}\n disabled={busy}\n onClick={() => onAddAgent()}\n >\n <Plus className=\"size-4\" strokeWidth={1.75} aria-hidden />\n {a.addAgent}\n </Button>\n </div>\n );\n}\n","import {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n} from 'react';\n\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport {\n type IdentityFields,\n type SoulTemplateId,\n detectSoulTemplate,\n parseIdentityMarkdown,\n serializeIdentityMarkdown,\n SOUL_TEMPLATES,\n} from '../agent-profile-markdown';\n\ntype OverviewProfileLoaded = {\n identity: IdentityFields;\n soulTemplate: SoulTemplateId;\n soulCustomContent: string;\n identityBaseline: string;\n soulBaseline: string;\n};\n\nexport type OverviewProfileDraft = OverviewProfileLoaded & {\n soulEditorNonce: number;\n soulPreviewMode: boolean;\n avatarDialogOpen: boolean;\n};\n\nfunction draftFromLoaded(loaded: OverviewProfileLoaded): OverviewProfileDraft {\n return {\n ...loaded,\n soulEditorNonce: 0,\n soulPreviewMode: false,\n avatarDialogOpen: false,\n };\n}\n\nexport function useAgentOverviewProfileMarkdown(options: {\n agentId: string | null;\n enabled: boolean;\n saveRef?: MutableRefObject<(() => Promise<void>) | null>;\n}) {\n const { agentId, enabled, saveRef } = options;\n\n const loadedResource = useAsyncResource(\n async (): Promise<OverviewProfileLoaded | null> => {\n if (!agentId) return null;\n const [identityMd, soulMd] = await Promise.all([\n fetchAgentProfileFileContent(agentId, 'IDENTITY.md').catch(() => ''),\n fetchAgentProfileFileContent(agentId, 'SOUL.md').catch(() => ''),\n ]);\n const identity = parseIdentityMarkdown(identityMd);\n return {\n identity,\n soulTemplate: detectSoulTemplate(soulMd),\n soulCustomContent: soulMd,\n identityBaseline: JSON.stringify(identity),\n soulBaseline: soulMd,\n };\n },\n [agentId],\n { enabled: enabled && Boolean(agentId), initial: null, errorData: null },\n );\n\n const loaded = loadedResource.data;\n const profileMarkdownLoading = loadedResource.loading;\n\n const dirtyRef = useRef(false);\n const [localDraft, setLocalDraft] = useState<OverviewProfileDraft | null>(null);\n\n const agentKey = agentId ?? '';\n const trackedAgentRef = useRef(agentKey);\n if (trackedAgentRef.current !== agentKey) {\n trackedAgentRef.current = agentKey;\n dirtyRef.current = false;\n setLocalDraft(null);\n }\n\n const draft = localDraft ?? (loaded ? draftFromLoaded(loaded) : null);\n\n const dirty = useMemo(() => {\n if (!draft) return false;\n return (\n JSON.stringify(draft.identity) !== draft.identityBaseline ||\n draft.soulCustomContent !== draft.soulBaseline\n );\n }, [draft]);\n\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n\n const patchDraft = useCallback((patch: (prev: OverviewProfileDraft) => OverviewProfileDraft) => {\n dirtyRef.current = true;\n setLocalDraft((prev) => {\n const base = prev ?? (loaded ? draftFromLoaded(loaded) : null);\n return base ? patch(base) : null;\n });\n }, [loaded]);\n\n const updateIdentity = useCallback(\n (identityPatch: Partial<IdentityFields>) => {\n patchDraft((prev) => ({ ...prev, identity: { ...prev.identity, ...identityPatch } }));\n },\n [patchDraft],\n );\n\n const handleSoulTemplateChange = useCallback(\n (templateId: SoulTemplateId) => {\n patchDraft((prev) => {\n if (templateId === 'custom') {\n return { ...prev, soulTemplate: 'custom' };\n }\n const tpl = SOUL_TEMPLATES.find((t) => t.id === templateId);\n if (!tpl?.content) {\n return { ...prev, soulTemplate: templateId };\n }\n return {\n ...prev,\n soulTemplate: templateId,\n soulCustomContent: tpl.content,\n soulEditorNonce: prev.soulEditorNonce + 1,\n };\n });\n },\n [patchDraft],\n );\n\n const handleSoulContentChange = useCallback(\n (content: string) => {\n patchDraft((prev) => ({\n ...prev,\n soulCustomContent: content,\n soulTemplate: 'custom',\n }));\n },\n [patchDraft],\n );\n\n const setAvatarDialogOpen = useCallback(\n (open: boolean) => {\n patchDraft((prev) => ({ ...prev, avatarDialogOpen: open }));\n },\n [patchDraft],\n );\n\n const toggleSoulPreviewMode = useCallback(() => {\n patchDraft((prev) => ({ ...prev, soulPreviewMode: !prev.soulPreviewMode }));\n }, [patchDraft]);\n\n const saveProfileMarkdown = useCallback(async () => {\n const id = agentIdRef.current;\n if (!id || !draft) return;\n await Promise.all([\n saveAgentProfileFileContent(id, 'IDENTITY.md', serializeIdentityMarkdown(draft.identity)),\n saveAgentProfileFileContent(id, 'SOUL.md', draft.soulCustomContent),\n ]);\n dirtyRef.current = false;\n setLocalDraft((prev) => {\n const current = prev ?? draft;\n return {\n ...current,\n identityBaseline: JSON.stringify(current.identity),\n soulBaseline: current.soulCustomContent,\n };\n });\n }, [draft]);\n\n useLayoutEffect(() => {\n if (!saveRef) return;\n saveRef.current = saveProfileMarkdown;\n return () => {\n saveRef.current = null;\n };\n }, [saveProfileMarkdown, saveRef]);\n\n return {\n profileMarkdownLoading,\n draft,\n dirty,\n updateIdentity,\n handleSoulTemplateChange,\n handleSoulContentChange,\n setAvatarDialogOpen,\n toggleSoulPreviewMode,\n };\n}\n","import { useCallback, useEffect, useRef, useReducer, useState, type Dispatch, type SetStateAction } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport {\n fetchAgentProfileFileContent,\n fetchAgentProfileFiles,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\n\ntype ProfileFiles = Awaited<ReturnType<typeof fetchAgentProfileFiles>>;\n\ntype FileEditorState = {\n draft: string;\n editorNonce: number;\n loadedKey: string;\n};\n\ntype FileEditorAction =\n | { type: 'load'; key: string; content: string }\n | { type: 'setDraft'; value: string }\n | { type: 'clear' }\n | { type: 'resetViewMode' };\n\nconst initialFileEditor: FileEditorState = {\n draft: '',\n editorNonce: 0,\n loadedKey: '',\n};\n\nfunction fileEditorReducer(state: FileEditorState, action: FileEditorAction): FileEditorState {\n switch (action.type) {\n case 'load':\n return {\n draft: action.content,\n editorNonce: state.editorNonce + 1,\n loadedKey: action.key,\n };\n case 'setDraft':\n return { ...state, draft: action.value };\n case 'clear':\n return { draft: '', editorNonce: state.editorNonce, loadedKey: '' };\n case 'resetViewMode':\n return state;\n }\n}\n\nexport function useAgentProfileFiles(options: {\n panel: AgentPanel;\n selectedId: string | null;\n hasToken: boolean;\n dataAgentsLength: number | undefined;\n saveErrorMessage: string;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const { panel, selectedId, hasToken, dataAgentsLength, saveErrorMessage, setError } = options;\n\n const filesEnabled = panel === 'files' && !!selectedId && hasToken;\n const filesResource = useAsyncResource(\n () => (selectedId ? fetchAgentProfileFiles(selectedId) : Promise.resolve(null as ProfileFiles | null)),\n [panel, selectedId, hasToken, dataAgentsLength],\n { enabled: filesEnabled, initial: null as ProfileFiles | null, errorData: null },\n );\n const files = filesResource.data;\n const setFiles = filesResource.setData;\n const filesLoading = filesResource.loading;\n const [activeFile, setActiveFileState] = useState<string | null>(null);\n const [fileEditor, dispatchFileEditor] = useReducer(fileEditorReducer, initialFileEditor);\n const [fileSaving, setFileSaving] = useState(false);\n const [filesViewMode, setFilesViewMode] = useState<'edit' | 'preview'>('edit');\n\n const fileDraft = fileEditor.draft;\n const profileEditorNonce = fileEditor.editorNonce;\n\n const fileDraftRef = useRef(fileDraft);\n fileDraftRef.current = fileDraft;\n const selectedIdRef = useRef(selectedId);\n selectedIdRef.current = selectedId;\n const activeFileRef = useRef(activeFile);\n activeFileRef.current = activeFile;\n const overviewSaveProfileMarkdownRef = useRef<(() => Promise<void>) | null>(null);\n const profileFileKeyRef = useRef('');\n const profileSyncedRef = useRef('');\n const trackedProfileKeyRef = useRef('');\n const flushProfileSaveRef = useRef<() => void>(() => {});\n\n const profileFileEnabled = Boolean(activeFile && selectedId && hasToken);\n const profileFileResource = useAsyncResource(\n () =>\n activeFile && selectedId\n ? fetchAgentProfileFileContent(selectedId, activeFile).catch(() => '')\n : Promise.resolve(''),\n [activeFile, selectedId, hasToken],\n { enabled: profileFileEnabled, initial: '', errorData: '' },\n );\n const profileFileLoading = profileFileResource.loading;\n\n const saveProfileMarkdownDebounced = useDebouncedCallback(\n async () => {\n const sid = selectedIdRef.current;\n const name = activeFileRef.current;\n if (!sid || !name) {\n return;\n }\n const key = `${sid}:${name}`;\n if (key !== profileFileKeyRef.current) {\n return;\n }\n const draft = fileDraftRef.current;\n if (draft === profileSyncedRef.current) {\n return;\n }\n setFileSaving(true);\n setError(null);\n try {\n await saveAgentProfileFileContent(sid, name, draft);\n profileSyncedRef.current = draft;\n setFiles((prev) => {\n if (!prev || prev.agentId !== sid) {\n return prev;\n }\n return {\n ...prev,\n files: prev.files.map((f) => (f.name === name ? { ...f, missing: false } : f)),\n };\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setFileSaving(false);\n }\n },\n 800,\n );\n\n flushProfileSaveRef.current = saveProfileMarkdownDebounced.flush;\n\n useEffect(() => {\n return () => {\n flushProfileSaveRef.current();\n };\n }, []);\n\n const trackedPanelRef = useRef(panel);\n if (trackedPanelRef.current !== panel) {\n if (trackedPanelRef.current === 'files') {\n flushProfileSaveRef.current();\n }\n trackedPanelRef.current = panel;\n }\n\n const profileFileKey = activeFile && selectedId ? `${selectedId}:${activeFile}` : '';\n\n if (profileFileKey !== trackedProfileKeyRef.current) {\n flushProfileSaveRef.current();\n trackedProfileKeyRef.current = profileFileKey;\n }\n if (!profileFileKey) {\n if (fileEditor.loadedKey !== '') {\n dispatchFileEditor({ type: 'clear' });\n }\n } else if (!profileFileLoading && fileEditor.loadedKey !== profileFileKey) {\n profileFileKeyRef.current = profileFileKey;\n profileSyncedRef.current = profileFileResource.data;\n dispatchFileEditor({\n type: 'load',\n key: profileFileKey,\n content: profileFileResource.data,\n });\n }\n\n const trackedViewModeKeyRef = useRef({ activeFile, selectedId });\n if (\n trackedViewModeKeyRef.current.activeFile !== activeFile ||\n trackedViewModeKeyRef.current.selectedId !== selectedId\n ) {\n trackedViewModeKeyRef.current = { activeFile, selectedId };\n setFilesViewMode('edit');\n }\n\n const setActiveFile = useCallback((value: string | null) => {\n flushProfileSaveRef.current();\n setActiveFileState(value);\n }, []);\n\n const setFileDraft = useCallback(\n (value: SetStateAction<string>) => {\n dispatchFileEditor({\n type: 'setDraft',\n value: typeof value === 'function' ? value(fileDraftRef.current) : value,\n });\n saveProfileMarkdownDebounced();\n },\n [saveProfileMarkdownDebounced],\n );\n\n return {\n files,\n setFiles,\n filesLoading,\n activeFile,\n setActiveFile,\n fileDraft,\n setFileDraft,\n fileSaving,\n filesViewMode,\n setFilesViewMode,\n profileFileLoading,\n profileEditorNonce,\n overviewSaveProfileMarkdownRef,\n saveProfileMarkdownDebounced,\n };\n}\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { Dispatch, FormEvent, SetStateAction } from 'react';\n\nimport {\n getChannels,\n getSessionChatIds,\n type ChannelStatus,\n type SessionChatId,\n} from '@/features/cron/cron-api';\nimport {\n patchGatewayBindings,\n type GatewayAgentRow,\n type GatewayConfigBinding,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\nimport { buildNewBindingMatch } from '../utils';\n\nexport function useAgentsChannelBindings(options: {\n panel: AgentPanel;\n hasToken: boolean;\n bindingsFromConfig: GatewayConfigBinding[];\n gatewayCfgLoading: boolean;\n selected: GatewayAgentRow | null;\n saveErrorMessage: string;\n setBusy: Dispatch<SetStateAction<boolean>>;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const {\n panel,\n hasToken,\n bindingsFromConfig,\n gatewayCfgLoading,\n selected,\n saveErrorMessage,\n setBusy,\n setError,\n } = options;\n\n const bindingsDirtyRef = useRef(false);\n const [localBindings, setLocalBindings] = useState<GatewayConfigBinding[] | null>(null);\n\n const trackedBindingsRef = useRef(bindingsFromConfig);\n if (\n panel === 'channels' &&\n hasToken &&\n !bindingsDirtyRef.current &&\n trackedBindingsRef.current !== bindingsFromConfig\n ) {\n trackedBindingsRef.current = bindingsFromConfig;\n setLocalBindings(bindingsFromConfig);\n }\n\n const allBindings = localBindings ?? bindingsFromConfig;\n\n const channelsEnabled = panel === 'channels' && hasToken;\n const channelsResource = useAsyncResource(\n () => getChannels(),\n [panel, hasToken],\n { enabled: channelsEnabled, initial: [] as ChannelStatus[], errorData: [] },\n );\n const bindChannelStatuses = channelsResource.data;\n const bindChannelsLoading = channelsResource.loading;\n\n const defaultBindChannel = useMemo(() => {\n if (bindChannelsLoading || bindChannelStatuses.length === 0) return '';\n return bindChannelStatuses[0]?.name ?? '';\n }, [bindChannelStatuses, bindChannelsLoading]);\n\n const [newBindChannel, setNewBindChannel] = useState('');\n const trackedDefaultChannelRef = useRef(defaultBindChannel);\n if (\n panel === 'channels' &&\n !bindChannelsLoading &&\n defaultBindChannel &&\n trackedDefaultChannelRef.current !== defaultBindChannel &&\n (!newBindChannel || !bindChannelStatuses.some((c) => c.name === newBindChannel))\n ) {\n trackedDefaultChannelRef.current = defaultBindChannel;\n setNewBindChannel(defaultBindChannel);\n }\n trackedDefaultChannelRef.current = defaultBindChannel;\n\n const trimmedBindChannel = newBindChannel.trim();\n const sessionsEnabled = channelsEnabled && trimmedBindChannel.length > 0;\n const sessionsResource = useAsyncResource(\n () => getSessionChatIds(trimmedBindChannel),\n [panel, hasToken, trimmedBindChannel],\n { enabled: sessionsEnabled, initial: [] as SessionChatId[], errorData: [] },\n );\n const bindSessionChats = sessionsResource.data;\n const bindSessionsLoading = sessionsResource.loading;\n const setBindSessionChats = sessionsResource.setData;\n\n const [newBindSessionIdx, setNewBindSessionIdx] = useState<number | null>(null);\n const [newBindCustomPeer, setNewBindCustomPeer] = useState('');\n\n const trackedBindChannelRef = useRef(trimmedBindChannel);\n if (trackedBindChannelRef.current !== trimmedBindChannel) {\n trackedBindChannelRef.current = trimmedBindChannel;\n setNewBindSessionIdx(null);\n }\n\n const agentBindings = useMemo(() => {\n if (!selected) {\n return [];\n }\n return allBindings.filter((b) => b.agentId.toLowerCase() === selected.id.toLowerCase());\n }, [allBindings, selected?.id]);\n\n const refreshBindSessions = useCallback(() => {\n const ch = newBindChannel.trim();\n if (!ch) {\n return;\n }\n void getSessionChatIds(ch)\n .then((ids) => {\n setBindSessionChats(ids);\n setNewBindSessionIdx((i) => (i != null && i < ids.length ? i : null));\n })\n .catch(() => {\n setBindSessionChats([]);\n setNewBindSessionIdx(null);\n });\n }, [newBindChannel, setBindSessionChats]);\n\n const useManualChannel = !bindChannelsLoading && bindChannelStatuses.length === 0;\n const bindingsLoading = panel === 'channels' && hasToken && gatewayCfgLoading;\n\n const onRemoveBinding = useCallback(\n async (rule: GatewayConfigBinding) => {\n setBusy(true);\n setError(null);\n try {\n const nextList = allBindings.filter((b) => b !== rule);\n await patchGatewayBindings(nextList);\n bindingsDirtyRef.current = true;\n setLocalBindings(nextList);\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n },\n [allBindings, saveErrorMessage, setBusy, setError],\n );\n\n const onAddBinding = useCallback(\n async (e: FormEvent) => {\n e.preventDefault();\n if (!selected || !newBindChannel.trim()) {\n return;\n }\n const match = buildNewBindingMatch(\n newBindChannel,\n newBindCustomPeer,\n newBindSessionIdx,\n bindSessionChats,\n );\n const nextList = [\n ...allBindings,\n {\n agentId: selected.id,\n priority: 100,\n enabled: true,\n match,\n },\n ];\n setBusy(true);\n setError(null);\n try {\n await patchGatewayBindings(nextList);\n bindingsDirtyRef.current = true;\n setLocalBindings(nextList);\n setNewBindSessionIdx(null);\n setNewBindCustomPeer('');\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n },\n [\n allBindings,\n bindSessionChats,\n newBindChannel,\n newBindCustomPeer,\n newBindSessionIdx,\n saveErrorMessage,\n selected,\n setBusy,\n setError,\n ],\n );\n\n return {\n agentBindings,\n allBindings,\n bindChannelStatuses,\n bindChannelsLoading,\n bindSessionChats,\n bindSessionsLoading,\n bindingsLoading,\n newBindChannel,\n setNewBindChannel,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n onAddBinding,\n onRemoveBinding,\n refreshBindSessions,\n useManualChannel,\n };\n}\n","import { useMemo, useState } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { listJobs, updateJob, type CronJob } from '@/features/cron/cron-api';\nimport { isDreamingManagedCronJob } from '@/features/cron/cron-dreaming-jobs';\nimport type { GatewayAgentRow, GatewayAgentsPayload } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\nimport { jobMatchesAgent } from '../utils';\n\nexport function useAgentsCronJobs(options: {\n panel: AgentPanel;\n hasToken: boolean;\n data: GatewayAgentsPayload | null;\n selected: GatewayAgentRow | null;\n saveErrorMessage: string;\n setBusy: Dispatch<SetStateAction<boolean>>;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const { panel, hasToken, data, selected, saveErrorMessage, setBusy, setError } = options;\n\n const { data: cronJobs, loading: cronLoading } = useAsyncResource(\n () => listJobs(),\n [panel, hasToken],\n { enabled: panel === 'cron' && hasToken, initial: [] as CronJob[], errorData: [] },\n );\n // Override cron jobs after a manual mutation (onSetCronJobAgent) without refetching twice.\n const [cronJobsOverride, setCronJobsOverride] = useState<CronJob[] | null>(null);\n const effectiveCronJobs = cronJobsOverride ?? cronJobs;\n\n const agentCronJobs = useMemo(() => {\n if (!data || !selected) {\n return [];\n }\n return effectiveCronJobs.filter(\n (j) => !isDreamingManagedCronJob(j) && jobMatchesAgent(j, selected.id, data.defaultId),\n );\n }, [effectiveCronJobs, data, selected]);\n\n async function onSetCronJobAgent(job: CronJob, agentKey: string) {\n setBusy(true);\n setError(null);\n try {\n await updateJob(job.id, { agentId: agentKey === '' ? null : agentKey });\n setCronJobsOverride(await listJobs());\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n }\n\n return {\n agentCronJobs,\n cronJobs: effectiveCronJobs,\n cronLoading,\n onSetCronJobAgent,\n };\n}\n","import { useMemo } from 'react';\n\nimport { fetchSkillsCatalog, type SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\n\nexport function useSkillsCatalogLoad(enabled: boolean, hasToken: boolean) {\n const { data: skillCatalog, loading: skillsCatalogLoading } = useAsyncResource(\n () => fetchSkillsCatalog(),\n [enabled, hasToken],\n { enabled: enabled && hasToken, initial: [] as SkillCatalogRow[], errorData: [] },\n );\n\n const catalogForPick = useMemo(() => skillCatalog.filter((s) => s.enabled !== false), [skillCatalog]);\n\n return {\n catalogForPick,\n skillCatalog,\n skillsCatalogLoading,\n };\n}\n\nexport function useAgentsSkillsCatalog(options: { panel: AgentPanel; hasToken: boolean }) {\n return useSkillsCatalogLoad(options.panel === 'skills', options.hasToken);\n}\n","import { useRef, useState } from 'react';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\n\nimport type { AgentPanel } from '../utils';\n\nfunction toolDisableFromSelected(selected: GatewayAgentRow): Set<string> {\n return new Set(selected.tools.entryDisable);\n}\n\nfunction skillsStateFromSelected(selected: GatewayAgentRow): { inherit: boolean; pick: Set<string> } {\n const inherit = selected.skills.entry === undefined;\n if (inherit) {\n return { inherit: true, pick: new Set(selected.skills.effectiveAllowlist ?? []) };\n }\n return { inherit: false, pick: new Set(selected.skills.entry ?? []) };\n}\n\nexport function useAgentsToolsSkillsLocalState(options: {\n panel: AgentPanel;\n selected: GatewayAgentRow | null;\n}) {\n const { panel, selected } = options;\n\n const syncKey = `${panel}:${selected?.id ?? ''}`;\n const trackedSyncRef = useRef(syncKey);\n const [toolEntryDisable, setToolEntryDisable] = useState<Set<string>>(() => new Set());\n const [skillsPick, setSkillsPick] = useState<Set<string>>(() => new Set());\n const [skillsInherit, setSkillsInherit] = useState(true);\n\n if (trackedSyncRef.current !== syncKey) {\n trackedSyncRef.current = syncKey;\n if (selected && panel === 'tools') {\n setToolEntryDisable(toolDisableFromSelected(selected));\n }\n if (selected && panel === 'skills') {\n const next = skillsStateFromSelected(selected);\n setSkillsInherit(next.inherit);\n setSkillsPick(next.pick);\n }\n }\n\n return {\n toolEntryDisable,\n setToolEntryDisable,\n skillsPick,\n setSkillsPick,\n skillsInherit,\n setSkillsInherit,\n };\n}\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n} from 'react';\nimport { useNavigate, useParams, useSearchParams } from 'react-router-dom';\nimport useSWR from 'swr';\n\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n createGatewayAgent,\n deleteGatewayAgent,\n fetchGatewayAgents,\n parseGatewayBindingsFromConfig,\n updateGatewayAgent,\n type GatewayAgentRow,\n type GatewayAgentsPayload,\n} from '@/features/settings/agents-admin-api';\nimport { parseAgentDefaultsFromConfig } from '@/features/settings/config-api';\nimport { AGENTS_APP_LIST_PATH, agentsAppDetailPath } from '@/features/settings/agents/agents-app-path';\nimport { SETTINGS_BACK_PATH_STATE_KEY } from '@/features/settings/settings-nav-state';\nimport { suggestWorkspaceFromAgentName } from '@/features/settings/suggest-agent-workspace';\nimport { validateAgentIdForNewAgent } from '@/lib/agent-id';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { usePageHeaderStore } from '@/stores/page-header-store';\n\nimport type { AgentsEditorPanelContentProps } from './agents-editor-panel-content';\nimport { AgentsSettingsToolbar } from './agents-settings-toolbar';\nimport { agentListDisplayName } from './agent-display-names';\nimport { useAgentOverviewProfileMarkdown } from './hooks/use-agent-overview-profile-markdown';\nimport { useAgentProfileFiles } from './hooks/use-agent-profile-files';\nimport { useAgentsChannelBindings } from './hooks/use-agents-channel-bindings';\nimport { useAgentsCronJobs } from './hooks/use-agents-cron-jobs';\nimport { useAgentsSkillsCatalog } from './hooks/use-agents-skills-catalog';\nimport { useAgentsToolsSkillsLocalState } from './hooks/use-agents-tools-skills-local-state';\nimport { PRESET_AGENTS_SKIPPED_KEY } from './preset-agents';\nimport type { AgentPanel } from './utils';\n\nexport function useAgentsSettingsPanel() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentsSettings;\n\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [deleteTarget, setDeleteTarget] = useState<GatewayAgentRow | null>(null);\n const [deletePurge, setDeletePurge] = useState(false);\n const [deleteConfirmText, setDeleteConfirmText] = useState('');\n const cCron = m.cron;\n const chat = m.chat;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const { agentId: routeAgentId } = useParams<{ agentId?: string }>();\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n\n const agentsSwrKey = hasToken ? 'settings-gateway-agents' : null;\n const {\n data: swrAgentsData,\n error: swrAgentsError,\n isLoading: agentsLoading,\n mutate: mutateAgents,\n } = useSWR(agentsSwrKey, fetchGatewayAgents, { revalidateOnFocus: false });\n\n const { data: gatewayCfgData } = useGatewayConfigSwr(hasToken);\n\n const bindingsFromConfig = useMemo(\n () => parseGatewayBindingsFromConfig(gatewayCfgData?.payload?.config ?? {}),\n [gatewayCfgData],\n );\n\n const globalAgentDefaults = useMemo(\n () => parseAgentDefaultsFromConfig(gatewayCfgData?.payload?.config ?? {}),\n [gatewayCfgData],\n );\n\n const data: GatewayAgentsPayload | null = swrAgentsData ?? null;\n const loading = Boolean(hasToken && agentsLoading);\n const [error, setError] = useState<string | null>(null);\n const loadError =\n swrAgentsError instanceof Error ? swrAgentsError.message : swrAgentsError ? a.loadError : null;\n const displayError = error ?? loadError;\n\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [presetSetupDismissed, setPresetSetupDismissed] = useState(\n () => localStorage.getItem(PRESET_AGENTS_SKIPPED_KEY) === 'true',\n );\n const [panel, setPanel] = useState<AgentPanel>('overview');\n\n const [createDisplayName, setCreateDisplayName] = useState('');\n const [createAgentId, setCreateAgentId] = useState('');\n const [createDescription, setCreateDescription] = useState('');\n const [createWorkspace, setCreateWorkspace] = useState('');\n const [createModel, setCreateModel] = useState('');\n const [createModalError, setCreateModalError] = useState<string | null>(null);\n const [addAgentModalOpen, setAddAgentModalOpen] = useState(false);\n const createWorkspaceSuggestedRef = useRef('');\n const [busy, setBusy] = useState(false);\n const [listSearchQuery, setListSearchQuery] = useState('');\n\n const [editWorkspace, setEditWorkspace] = useState('');\n const [editModel, setEditModel] = useState('');\n const [editName, setEditName] = useState('');\n const [editDescription, setEditDescription] = useState('');\n\n const profileSaveRef = useRef<(() => Promise<void>) | null>(null);\n const overviewSaveProfileMarkdownRef = useRef<(() => Promise<void>) | null>(null);\n const [profileDirty, setProfileDirty] = useState(false);\n const [savedFlash, setSavedFlash] = useState(false);\n\n const trackedAgentsSyncRef = useRef<{ data: GatewayAgentsPayload | null; routeAgentId?: string }>({\n data: null,\n routeAgentId: undefined,\n });\n if (\n data &&\n (data !== trackedAgentsSyncRef.current.data || routeAgentId !== trackedAgentsSyncRef.current.routeAgentId)\n ) {\n trackedAgentsSyncRef.current = { data, routeAgentId };\n if (routeAgentId && data.agents.some((x) => x.id === routeAgentId)) {\n setSelectedId(routeAgentId);\n } else {\n setSelectedId((prev) => {\n if (prev && data.agents.some((x) => x.id === prev)) {\n return prev;\n }\n return data.defaultId;\n });\n }\n }\n\n const onlyMainAgent =\n data != null &&\n data.agents.length <= 1 &&\n data.agents.every((ag) => ag.id === data.defaultId);\n const showPresetSetup = Boolean(data && !loading && onlyMainAgent && !presetSetupDismissed);\n\n const onPresetSetupComplete = useCallback(() => {\n setPresetSetupDismissed(true);\n void mutateAgents();\n }, [mutateAgents]);\n\n const onPresetSetupSkip = useCallback(() => {\n localStorage.setItem(PRESET_AGENTS_SKIPPED_KEY, 'true');\n setPresetSetupDismissed(true);\n }, []);\n\n useEffect(() => {\n if (!data || !routeAgentId) {\n return;\n }\n if (!data.agents.some((x) => x.id === routeAgentId)) {\n navigate(AGENTS_APP_LIST_PATH, { replace: true });\n }\n }, [data, routeAgentId, navigate]);\n\n useEffect(() => {\n if (routeAgentId) {\n setPanel('overview');\n }\n }, [routeAgentId]);\n\n useEffect(() => {\n if (searchParams.get('panel') !== 'defaults') {\n return;\n }\n navigate('/settings/agent-defaults?tab=chat', {\n replace: true,\n state: { [SETTINGS_BACK_PATH_STATE_KEY]: AGENTS_APP_LIST_PATH },\n });\n }, [searchParams, navigate]);\n\n useEffect(() => {\n if (searchParams.get('focus') !== 'avatar' || !routeAgentId) {\n return;\n }\n setPanel('overview');\n if (loading || !data?.agents.some((x) => x.id === routeAgentId)) {\n return;\n }\n const t = window.setTimeout(() => {\n document.getElementById('agent-avatar-settings')?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n setSearchParams(\n (prev) => {\n const next = new URLSearchParams(prev);\n next.delete('focus');\n return next;\n },\n { replace: true },\n );\n }, 220);\n return () => window.clearTimeout(t);\n }, [searchParams, routeAgentId, loading, data, setSearchParams]);\n\n const selected = useMemo(\n () => data?.agents.find((x) => x.id === selectedId) ?? null,\n [data, selectedId],\n );\n\n const trackedSelectedIdRef = useRef<string | null>(null);\n if (selected && trackedSelectedIdRef.current !== selected.id) {\n trackedSelectedIdRef.current = selected.id;\n setEditWorkspace(selected.workspace);\n setEditModel(selected.model?.primary ?? '');\n setEditName(agentListDisplayName(selected, messages(language).agentsSettings));\n setEditDescription(selected.description?.trim() ?? '');\n } else if (!selected && trackedSelectedIdRef.current !== null) {\n trackedSelectedIdRef.current = null;\n setEditWorkspace('');\n setEditModel('');\n setEditName('');\n setEditDescription('');\n }\n\n const overviewProfile = useAgentOverviewProfileMarkdown({\n agentId: selected?.id ?? null,\n enabled: panel === 'overview' && Boolean(selected),\n saveRef: overviewSaveProfileMarkdownRef,\n });\n\n const profileFiles = useAgentProfileFiles({\n panel,\n selectedId,\n hasToken,\n dataAgentsLength: data?.agents.length,\n saveErrorMessage: a.saveError,\n setError,\n });\n\n const toolsSkills = useAgentsToolsSkillsLocalState({ panel, selected });\n\n const channels = useAgentsChannelBindings({\n panel,\n hasToken,\n bindingsFromConfig,\n gatewayCfgLoading: gatewayCfgData === undefined,\n selected,\n saveErrorMessage: a.saveError,\n setBusy,\n setError,\n });\n\n const cron = useAgentsCronJobs({\n panel,\n hasToken,\n data,\n selected,\n saveErrorMessage: a.saveError,\n setBusy,\n setError,\n });\n\n const skillsCatalog = useAgentsSkillsCatalog({ panel, hasToken });\n\n const applyCreateWorkspaceSuggestion = useCallback(() => {\n const next = suggestWorkspaceFromAgentName(createAgentId.trim() || createDisplayName);\n setCreateWorkspace((prev) => {\n if (prev === '' || prev === createWorkspaceSuggestedRef.current) {\n createWorkspaceSuggestedRef.current = next;\n return next;\n }\n return prev;\n });\n }, [createAgentId, createDisplayName]);\n\n const openAddAgentModal = useCallback(() => {\n createWorkspaceSuggestedRef.current = '';\n setCreateDisplayName('');\n setCreateAgentId('');\n setCreateDescription('');\n setCreateWorkspace('');\n setCreateModel('');\n setCreateModalError(null);\n setAddAgentModalOpen(true);\n }, []);\n\n const agentsHeaderEnd = useMemo(\n () => (\n <AgentsSettingsToolbar\n a={a}\n busy={busy}\n listSearchQuery={listSearchQuery}\n onListSearchQueryChange={setListSearchQuery}\n onAddAgent={() => openAddAgentModal()}\n />\n ),\n [a, busy, listSearchQuery, openAddAgentModal],\n );\n\n useLayoutEffect(() => {\n if (!hasToken) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n setPageHeader({\n startExtra: null,\n main: null,\n end: agentsHeaderEnd,\n });\n return () => clearPageHeader();\n }, [agentsHeaderEnd, clearPageHeader, hasToken, setPageHeader]);\n\n async function onCreate(e: FormEvent) {\n e.preventDefault();\n const name = createDisplayName.trim();\n if (!name) {\n return;\n }\n const idRes = validateAgentIdForNewAgent(createAgentId, name);\n if (idRes.ok === false) {\n setCreateModalError(idRes.error);\n return;\n }\n const wsInput = createWorkspace.trim();\n const workspace = wsInput || suggestWorkspaceFromAgentName(createAgentId.trim() || name);\n if (!workspace) {\n return;\n }\n setBusy(true);\n setCreateModalError(null);\n try {\n const desc = createDescription.trim();\n const next = await createGatewayAgent({\n name,\n workspace,\n ...(createAgentId.trim() ? { id: createAgentId.trim() } : {}),\n ...(createModel.trim() ? { model: createModel.trim() } : {}),\n ...(desc ? { description: desc } : {}),\n });\n const { createdAgentId, ...agentsPayload } = next;\n void mutateAgents(agentsPayload, { revalidate: false });\n setCreateDisplayName('');\n setCreateAgentId('');\n setCreateDescription('');\n setCreateWorkspace('');\n setCreateModel('');\n setCreateModalError(null);\n setAddAgentModalOpen(false);\n setSelectedId(createdAgentId);\n navigate(agentsAppDetailPath(createdAgentId));\n } catch (err) {\n setCreateModalError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSaveAgentEdits() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const descTrim = editDescription.trim();\n const next = await updateGatewayAgent(selected.id, {\n name: editName.trim() || undefined,\n description: descTrim.length > 0 ? descTrim : null,\n workspace: editWorkspace.trim() || undefined,\n model: editModel.trim() || null,\n });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSetDefault(agent: GatewayAgentRow) {\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(agent.id, { setDefault: true });\n void mutateAgents(next, { revalidate: false });\n setSelectedId(agent.id);\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function performDelete(agent: GatewayAgentRow, purge: boolean) {\n setBusy(true);\n setError(null);\n try {\n const next = await deleteGatewayAgent(agent.id, purge);\n void mutateAgents(next, { revalidate: false });\n setSelectedId(next.defaultId);\n setPanel('overview');\n if (routeAgentId === agent.id) {\n navigate(AGENTS_APP_LIST_PATH, { replace: true });\n }\n setDeleteDialogOpen(false);\n setDeleteTarget(null);\n setDeleteConfirmText('');\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n function onDelete(agent: GatewayAgentRow, purge: boolean) {\n if (agent.id === 'main') {\n return;\n }\n setDeleteTarget(agent);\n setDeletePurge(purge);\n setDeleteConfirmText('');\n setDeleteDialogOpen(true);\n }\n\n async function onSaveTools() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const toolsDisable = Array.from(toolsSkills.toolEntryDisable).toSorted((x, y) => x.localeCompare(y));\n const next = await updateGatewayAgent(selected.id, { toolsDisable });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onClearToolsEntry() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(selected.id, { toolsDisable: null });\n void mutateAgents(next, { revalidate: false });\n toolsSkills.setToolEntryDisable(new Set());\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSaveSkills() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(selected.id, {\n skills: toolsSkills.skillsInherit\n ? null\n : [...toolsSkills.skillsPick].toSorted((x, y) => x.localeCompare(y)),\n });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n const footerSaveNotApplicable = panel === 'channels' || panel === 'cron';\n\n const overviewRestDirty = (() => {\n if (!selected || panel !== 'overview') return false;\n const origName = agentListDisplayName(selected, a);\n const origDesc = selected.description?.trim() ?? '';\n const origWorkspace = selected.workspace;\n const origModel = selected.model?.primary ?? '';\n return (\n editName.trim() !== origName ||\n editDescription.trim() !== origDesc ||\n editWorkspace.trim() !== origWorkspace ||\n editModel.trim() !== origModel\n );\n })();\n\n const isCurrentPanelDirty = (() => {\n if (footerSaveNotApplicable) return false;\n switch (panel) {\n case 'overview':\n return overviewRestDirty || overviewProfile.dirty;\n case 'profile':\n return profileDirty;\n default:\n return true;\n }\n })();\n\n const footerSaveDisabled = footerSaveNotApplicable || !isCurrentPanelDirty;\n\n function showSavedFlash() {\n setSavedFlash(true);\n setTimeout(() => setSavedFlash(false), 2000);\n }\n\n async function handleModalFooterSave() {\n switch (panel) {\n case 'overview':\n await Promise.all([\n onSaveAgentEdits(),\n overviewSaveProfileMarkdownRef.current?.() ?? Promise.resolve(),\n ]);\n showSavedFlash();\n break;\n case 'profile':\n await profileSaveRef.current?.();\n showSavedFlash();\n break;\n case 'tools':\n await onSaveTools();\n showSavedFlash();\n break;\n case 'skills':\n await onSaveSkills();\n showSavedFlash();\n break;\n case 'files':\n profileFiles.saveProfileMarkdownDebounced.flush();\n showSavedFlash();\n break;\n default:\n break;\n }\n }\n\n function onAgentModalOpenChange(open: boolean) {\n if (!open) {\n navigate(AGENTS_APP_LIST_PATH);\n }\n }\n\n const modalTitle = selected ? editName.trim() || agentListDisplayName(selected, a) : (routeAgentId ?? '');\n const modalSubtitle = selected?.id ?? routeAgentId ?? '';\n\n const editorPanelProps: AgentsEditorPanelContentProps = {\n a,\n chat,\n cCron,\n selected,\n panel,\n data,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n defaultModel: globalAgentDefaults.model,\n defaultWorkspace: globalAgentDefaults.workspace,\n onSetDefault: () => {\n if (!selected) return;\n void onSetDefault(selected);\n },\n onSaveAgentEdits: () => void onSaveAgentEdits(),\n onDelete: (purge: boolean) => {\n if (!selected) return;\n void onDelete(selected, purge);\n },\n overviewSaveProfileMarkdownRef,\n profileSaveRef,\n overviewProfile,\n setProfileDirty,\n filesLoading: profileFiles.filesLoading,\n files: profileFiles.files,\n activeFile: profileFiles.activeFile,\n setActiveFile: profileFiles.setActiveFile,\n filesViewMode: profileFiles.filesViewMode,\n setFilesViewMode: profileFiles.setFilesViewMode,\n fileDraft: profileFiles.fileDraft,\n setFileDraft: profileFiles.setFileDraft,\n fileSaving: profileFiles.fileSaving,\n profileFileLoading: profileFiles.profileFileLoading,\n profileEditorNonce: profileFiles.profileEditorNonce,\n toolEntryDisable: toolsSkills.toolEntryDisable,\n setToolEntryDisable: toolsSkills.setToolEntryDisable,\n onSaveTools: () => void onSaveTools(),\n onClearToolsEntry: () => void onClearToolsEntry(),\n skillsCatalogLoading: skillsCatalog.skillsCatalogLoading,\n catalogForPick: skillsCatalog.catalogForPick,\n skillsInherit: toolsSkills.skillsInherit,\n setSkillsInherit: toolsSkills.setSkillsInherit,\n skillsPick: toolsSkills.skillsPick,\n setSkillsPick: toolsSkills.setSkillsPick,\n onSaveSkills: () => void onSaveSkills(),\n bindingsLoading: channels.bindingsLoading,\n agentBindings: channels.agentBindings,\n bindChannelStatuses: channels.bindChannelStatuses,\n bindChannelsLoading: channels.bindChannelsLoading,\n useManualChannel: channels.useManualChannel,\n newBindChannel: channels.newBindChannel,\n setNewBindChannel: channels.setNewBindChannel,\n bindSessionChats: channels.bindSessionChats,\n bindSessionsLoading: channels.bindSessionsLoading,\n newBindSessionIdx: channels.newBindSessionIdx,\n setNewBindSessionIdx: channels.setNewBindSessionIdx,\n newBindCustomPeer: channels.newBindCustomPeer,\n setNewBindCustomPeer: channels.setNewBindCustomPeer,\n refreshBindSessions: channels.refreshBindSessions,\n onRemoveBinding: (rule) => void channels.onRemoveBinding(rule),\n onAddBinding: channels.onAddBinding,\n cronLoading: cron.cronLoading,\n agentCronJobs: cron.agentCronJobs,\n onSetCronJobAgent: (job, key) => void cron.onSetCronJobAgent(job, key),\n };\n\n return {\n hasToken,\n a,\n chat,\n language,\n data,\n loading,\n displayError,\n navigate,\n routeAgentId,\n showPresetSetup,\n onPresetSetupComplete,\n onPresetSetupSkip,\n busy,\n listSearchQuery,\n openAddAgentModal,\n panel,\n setPanel,\n modalTitle,\n modalSubtitle,\n footerSaveDisabled,\n savedFlash,\n handleModalFooterSave,\n onAgentModalOpenChange,\n addAgentModalOpen,\n setAddAgentModalOpen,\n createWorkspaceSuggestedRef,\n createModalError,\n setCreateModalError,\n createDisplayName,\n setCreateDisplayName,\n createAgentId,\n setCreateAgentId,\n createDescription,\n setCreateDescription,\n createWorkspace,\n setCreateWorkspace,\n createModel,\n setCreateModel,\n onCreate,\n applyCreateWorkspaceSuggestion,\n deleteDialogOpen,\n setDeleteDialogOpen,\n deletePurge,\n deleteTarget,\n setDeleteTarget,\n deleteConfirmText,\n setDeleteConfirmText,\n performDelete,\n editorPanelProps,\n };\n}\n","import { AgentDeleteConfirmDialog } from './agent-delete-confirm-dialog';\nimport { agentsAppDetailPath } from './agents-app-path';\nimport { AgentsEditorModal } from './agents-editor-modal';\nimport { AgentsEditorPanelContent } from './agents-editor-panel-content';\nimport { AgentsListGrid } from './agents-list-grid';\nimport { AgentsSettingsHeader } from './agents-settings-header';\nimport { CreateAgentDialog } from './create-agent-dialog';\nimport { PRESET_AGENTS } from './preset-agents';\nimport { PresetAgentsSetup } from './preset-agents-setup';\nimport { useAgentsSettingsPanel } from './use-agents-settings-panel';\n\nexport function AgentsSettingsPanel() {\n const vm = useAgentsSettingsPanel();\n\n if (!vm.hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{vm.a.title}</h1>\n <p className=\"text-sm text-fg-muted\">{vm.a.needToken}</p>\n </div>\n );\n }\n\n if (vm.showPresetSetup && vm.data) {\n const existingIds = new Set(vm.data.agents.map((ag) => ag.id));\n // Only show the preset setup when there's at least one preset available;\n // otherwise fall through to the main UI (showPresetSetup resets on next data refresh).\n const hasAvailablePresets = PRESET_AGENTS.some((p) => !existingIds.has(p.id));\n if (hasAvailablePresets) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col px-4 py-8\">\n <PresetAgentsSetup\n existingAgentIds={existingIds}\n onComplete={vm.onPresetSetupComplete}\n onSkip={vm.onPresetSetupSkip}\n />\n </div>\n );\n }\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-8\">\n <AgentsSettingsHeader a={vm.a} />\n\n {vm.displayError ? (\n <div className=\"rounded-lg 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 {vm.displayError}\n </div>\n ) : null}\n\n {vm.loading ? (\n <p className=\"text-sm text-fg-muted\">{vm.a.loading}</p>\n ) : vm.data ? (\n <AgentsListGrid\n a={vm.a}\n agents={vm.data.agents}\n searchQuery={vm.listSearchQuery}\n onOpenAgent={(id) => vm.navigate(agentsAppDetailPath(id))}\n onChatWithAgent={(id) =>\n vm.navigate('/chat/new', { state: { agentId: id.trim().toLowerCase() } })\n }\n onNewAgent={vm.openAddAgentModal}\n busy={vm.busy}\n />\n ) : null}\n\n {vm.routeAgentId && vm.hasToken ? (\n <AgentsEditorModal\n open={Boolean(vm.routeAgentId)}\n onOpenChange={vm.onAgentModalOpenChange}\n a={vm.a}\n title={vm.modalTitle}\n subtitle={vm.modalSubtitle}\n panel={vm.panel}\n onPanelChange={vm.setPanel}\n onFooterSave={() => void vm.handleModalFooterSave()}\n footerSaveDisabled={vm.footerSaveDisabled}\n footerSavedFlash={vm.savedFlash}\n busy={vm.busy}\n >\n {vm.loading || !vm.data ? (\n <p className=\"text-sm text-fg-muted\">{vm.a.loading}</p>\n ) : (\n <AgentsEditorPanelContent {...vm.editorPanelProps} />\n )}\n </AgentsEditorModal>\n ) : null}\n\n <CreateAgentDialog\n open={vm.addAgentModalOpen}\n onOpenChange={(open) => {\n vm.setAddAgentModalOpen(open);\n if (!open) {\n vm.createWorkspaceSuggestedRef.current = '';\n vm.setCreateDisplayName('');\n vm.setCreateAgentId('');\n vm.setCreateDescription('');\n vm.setCreateWorkspace('');\n vm.setCreateModel('');\n vm.setCreateModalError(null);\n }\n }}\n a={vm.a}\n chat={vm.chat}\n busy={vm.busy}\n modalError={vm.createModalError}\n createDisplayName={vm.createDisplayName}\n setCreateDisplayName={vm.setCreateDisplayName}\n createAgentId={vm.createAgentId}\n setCreateAgentId={vm.setCreateAgentId}\n createDescription={vm.createDescription}\n setCreateDescription={vm.setCreateDescription}\n createWorkspace={vm.createWorkspace}\n setCreateWorkspace={vm.setCreateWorkspace}\n createModel={vm.createModel}\n setCreateModel={vm.setCreateModel}\n onCreate={vm.onCreate}\n onSuggestWorkspace={() => vm.applyCreateWorkspaceSuggestion()}\n />\n\n <AgentDeleteConfirmDialog\n open={vm.deleteDialogOpen}\n onOpenChange={(open) => {\n vm.setDeleteDialogOpen(open);\n if (!open) {\n vm.setDeleteTarget(null);\n vm.setDeleteConfirmText('');\n }\n }}\n busy={vm.busy}\n deletePurge={vm.deletePurge}\n deleteTarget={vm.deleteTarget}\n deleteConfirmText={vm.deleteConfirmText}\n onDeleteConfirmTextChange={vm.setDeleteConfirmText}\n onConfirm={() => {\n if (!vm.deleteTarget) return;\n void vm.performDelete(vm.deleteTarget, vm.deletePurge);\n }}\n onCancel={() => vm.setDeleteDialogOpen(false)}\n a={vm.a}\n />\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport function AgentDefaultsField({\n label,\n description,\n children,\n}: {\n label: string;\n description: string;\n children: ReactNode;\n}) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"text-sm font-medium text-fg\">{label}</div>\n {children}\n <p className=\"text-xs leading-relaxed text-fg-subtle\">{description}</p>\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/cn';\n\nimport type { BrowserMessages } from './types';\nimport type { ModeStatusKind } from './backend-mode-card';\n\nexport type BackendMode = 'local' | 'cloakbrowser' | 'cdp' | 'cloud' | 'extension';\n\nexport interface BackendModeOption {\n value: BackendMode;\n icon: LucideIcon;\n name: string;\n tagline: string;\n /** Optional probed status to display as a small badge in the corner. */\n status?: ModeStatusKind;\n statusLabel?: string;\n}\n\n/**\n * Card grid for picking a browser backend. Selected card gets a coloured ring\n * + checkmark so users can see at a glance which backend is active.\n */\nexport function BackendModePicker({\n value,\n onChange,\n options,\n m,\n}: {\n value: BackendMode;\n onChange: (next: BackendMode) => void;\n options: BackendModeOption[];\n m: BrowserMessages;\n}) {\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-medium text-fg\">{m.browserPickerTitle}</div>\n <p className=\"text-xs leading-relaxed text-fg-muted\">{m.browserPickerSubtitle}</p>\n </div>\n <div\n role=\"radiogroup\"\n aria-label={m.browserPickerTitle}\n className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-5\"\n >\n {options.map((opt) => {\n const selected = opt.value === value;\n const Icon = opt.icon;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n onClick={() => onChange(opt.value)}\n className={cn(\n 'group flex flex-col gap-2 rounded-xl border bg-surface-panel p-3 text-left transition-[border-color,background-color,box-shadow]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base',\n selected\n ? 'border-accent bg-accent/5 ring-1 ring-accent/40 shadow-sm'\n : 'border-edge hover:border-edge-strong hover:bg-surface-hover',\n )}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div\n className={cn(\n 'flex size-9 shrink-0 items-center justify-center rounded-lg transition-colors',\n selected ? 'bg-accent/15 text-accent' : 'bg-surface-hover text-fg-muted',\n )}\n >\n <Icon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-1.5\">\n {opt.statusLabel ? (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium',\n opt.status === 'ready'\n ? 'border-green-500/30 bg-green-500/10 text-green-700 dark:text-green-300'\n : opt.status === 'not_installed'\n ? 'border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300'\n : opt.status === 'error'\n ? 'border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-300'\n : 'border-edge bg-surface-hover text-fg-subtle',\n )}\n >\n <span\n className={cn(\n 'inline-block size-1.5 rounded-full',\n opt.status === 'ready'\n ? 'bg-green-500'\n : opt.status === 'not_installed'\n ? 'bg-amber-500'\n : opt.status === 'error'\n ? 'bg-red-500'\n : 'bg-fg-subtle',\n )}\n />\n <span>{opt.statusLabel}</span>\n </span>\n ) : null}\n {selected ? (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-accent px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white\"\n aria-hidden\n >\n <Check className=\"size-3\" strokeWidth={3} />\n {m.browserSelectedBadge}\n </span>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"text-sm font-semibold text-fg\">{opt.name}</div>\n <p className=\"text-[11px] leading-snug text-fg-muted\">{opt.tagline}</p>\n </div>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { AlertTriangle, CheckCircle2, CircleHelp, LoaderCircle, XCircle } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\nimport type { BrowserMessages } from './types';\n\nexport type ModeStatusKind = 'ready' | 'not_installed' | 'checking' | 'unknown' | 'error';\n\nexport function BackendModeCard({\n icon: Icon,\n title,\n description,\n status,\n statusDetail,\n primaryAction,\n children,\n advanced,\n m,\n}: {\n icon: LucideIcon;\n title: string;\n description: string;\n status?: ModeStatusKind;\n statusDetail?: string;\n primaryAction?: ReactNode;\n children?: ReactNode;\n /** Collapsible \"Advanced\" section. */\n advanced?: ReactNode;\n m: BrowserMessages;\n}) {\n const [showAdvanced, setShowAdvanced] = useState(false);\n return (\n <div className=\"flex flex-col gap-4 rounded-xl border border-edge bg-surface-panel p-4\">\n <div className=\"flex items-start gap-3\">\n <div className=\"flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted\">\n <Icon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"text-sm font-medium text-fg\">{title}</div>\n {status ? <StatusBadge kind={status} detail={statusDetail} m={m} /> : null}\n </div>\n <p className=\"text-xs leading-relaxed text-fg-muted\">{description}</p>\n </div>\n {primaryAction ? <div className=\"shrink-0\">{primaryAction}</div> : null}\n </div>\n\n {children ? <div className=\"flex flex-col gap-4\">{children}</div> : null}\n\n {advanced ? (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n className=\"self-start text-xs font-medium text-fg-muted hover:text-fg\"\n onClick={() => setShowAdvanced((v) => !v)}\n >\n {showAdvanced ? m.browserAdvancedHide : m.browserAdvancedShow}\n </button>\n {showAdvanced ? (\n <div className=\"flex flex-col gap-4 rounded-lg border border-edge bg-surface-base p-3\">\n {advanced}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction StatusBadge({\n kind,\n detail,\n m,\n}: {\n kind: ModeStatusKind;\n detail?: string;\n m: BrowserMessages;\n}) {\n const config: Record<ModeStatusKind, { icon: LucideIcon; color: string; label: string }> = {\n ready: { icon: CheckCircle2, color: 'text-green-600 dark:text-green-400', label: m.browserStatusReady },\n not_installed: { icon: AlertTriangle, color: 'text-amber-600 dark:text-amber-400', label: m.browserStatusNotInstalled },\n checking: { icon: LoaderCircle, color: 'text-fg-muted', label: m.browserStatusChecking },\n unknown: { icon: CircleHelp, color: 'text-fg-muted', label: m.browserStatusUnknown },\n error: { icon: XCircle, color: 'text-red-600 dark:text-red-400', label: m.browserStatusError },\n };\n const { icon: Icon, color, label } = config[kind];\n return (\n <span className={cn('inline-flex items-center gap-1 text-xs font-medium', color)}>\n <Icon className={cn('size-3.5', kind === 'checking' && 'animate-spin')} />\n <span>{label}</span>\n {detail ? <span className=\"font-normal text-fg-subtle\">· {detail}</span> : null}\n </span>\n );\n}\n\nexport function ActionResultBox({\n kind,\n message,\n}: {\n kind: 'success' | 'error';\n message: string;\n}) {\n return (\n <div\n className={cn(\n 'rounded-lg border px-3 py-2 text-xs leading-relaxed',\n kind === 'success'\n ? 'border-green-500/30 bg-green-500/10 text-green-700 dark:text-green-300'\n : 'border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-300',\n )}\n >\n {message}\n </div>\n );\n}\n","import { LoaderCircle, Play, Plug, Square, Webhook } from 'lucide-react';\nimport { useCallback, useEffect, useReducer } from 'react';\n\nimport { uiPatchReducer } from '@/lib/settings-form-draft';\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages, LaunchedCdpInstance } from './types';\n\ntype ActionStatus = 'idle' | 'pending' | 'ok' | 'error';\n\ntype CdpCardUi = {\n instances: LaunchedCdpInstance[];\n launchStatus: ActionStatus;\n launchMessage: string | null;\n testStatus: ActionStatus;\n testMessage: string | null;\n executablePath: string;\n};\n\nconst initialCdpCardUi: CdpCardUi = {\n instances: [],\n launchStatus: 'idle',\n launchMessage: null,\n testStatus: 'idle',\n testMessage: null,\n executablePath: '',\n};\n\nexport function CdpCard({\n m,\n cdpUrl,\n onCdpUrlChange,\n launch,\n stop,\n listInstances,\n ping,\n}: {\n m: BrowserMessages;\n cdpUrl: string;\n onCdpUrlChange: (next: string) => void;\n launch: (executablePath?: string) => Promise<LaunchedCdpInstance>;\n stop: (port: number) => Promise<void>;\n listInstances: () => Promise<LaunchedCdpInstance[]>;\n ping: (url: string) => Promise<{ reachable: boolean; browser?: string | null; error?: string }>;\n}) {\n const [ui, dispatch] = useReducer(uiPatchReducer<CdpCardUi>, initialCdpCardUi);\n const { instances, launchStatus, launchMessage, testStatus, testMessage, executablePath } = ui;\n\n const refreshInstances = useCallback(async () => {\n try {\n const list = await listInstances();\n dispatch({ type: 'patch', patch: { instances: list } });\n } catch {\n // silent — not blocking\n }\n }, [listInstances]);\n\n useEffect(() => {\n void refreshInstances();\n const id = setInterval(() => void refreshInstances(), 8000);\n return () => clearInterval(id);\n }, [refreshInstances]);\n\n const onLaunch = useCallback(async () => {\n if (launchStatus === 'pending') return;\n dispatch({ type: 'patch', patch: { launchStatus: 'pending', launchMessage: null } });\n try {\n const result = await launch(executablePath.trim() || undefined);\n dispatch({\n type: 'patch',\n patch: {\n launchStatus: 'ok',\n launchMessage: m.browserCdpLaunchedAtPort.replace('{{port}}', String(result.port)),\n },\n });\n onCdpUrlChange(result.wsEndpoint);\n await refreshInstances();\n } catch (e) {\n dispatch({\n type: 'patch',\n patch: {\n launchStatus: 'error',\n launchMessage: e instanceof Error ? e.message : String(e),\n },\n });\n }\n }, [executablePath, launch, launchStatus, m.browserCdpLaunchedAtPort, onCdpUrlChange, refreshInstances]);\n\n const onStop = useCallback(\n async (port: number) => {\n await stop(port);\n await refreshInstances();\n },\n [refreshInstances, stop],\n );\n\n const onTest = useCallback(async () => {\n if (!cdpUrl.trim()) return;\n dispatch({ type: 'patch', patch: { testStatus: 'pending', testMessage: null } });\n try {\n const result = await ping(cdpUrl.trim());\n if (result.reachable) {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'ok',\n testMessage: m.browserCdpReachable.replace('{{browser}}', result.browser ?? '—'),\n },\n });\n } else {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'error',\n testMessage: m.browserCdpUnreachable.replace('{{error}}', result.error ?? '—'),\n },\n });\n }\n } catch (e) {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'error',\n testMessage: m.browserCdpUnreachable.replace(\n '{{error}}',\n e instanceof Error ? e.message : String(e),\n ),\n },\n });\n }\n }, [cdpUrl, m.browserCdpReachable, m.browserCdpUnreachable, ping]);\n\n return (\n <div className=\"flex flex-col gap-4\">\n <BackendModeCard\n icon={Play}\n title={m.browserCdpLaunchLocal}\n description={m.browserCdpLaunchLocalDesc}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={launchStatus === 'pending'}\n onClick={() => void onLaunch()}\n >\n {launchStatus === 'pending' ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : (\n <Play className=\"size-3.5\" />\n )}\n {launchStatus === 'pending' ? m.browserCdpLaunching : m.browserCdpLaunchLocal}\n </button>\n }\n advanced={\n <AgentDefaultsField label={m.browserCdpChromePath} description={m.browserCdpChromePathDesc}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={executablePath}\n placeholder=\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\"\n onChange={(e) => dispatch({ type: 'patch', patch: { executablePath: e.target.value } })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n }\n >\n {launchMessage ? (\n <ActionResultBox kind={launchStatus === 'error' ? 'error' : 'success'} message={launchMessage} />\n ) : null}\n\n {instances.length > 0 ? (\n <div className=\"flex flex-col gap-2 rounded-lg border border-edge bg-surface-base p-3 text-xs\">\n {instances.map((it) => (\n <div key={it.port} className=\"flex items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-col\">\n <span className=\"font-mono text-fg\">port {it.port} · pid {it.pid}</span>\n <span className=\"truncate text-fg-subtle\">{it.wsEndpoint}</span>\n </div>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-1 text-xs font-medium text-fg hover:bg-surface-raised\"\n onClick={() => void onStop(it.port)}\n >\n <Square className=\"size-3\" />\n {m.browserCdpStopLocal}\n </button>\n </div>\n ))}\n </div>\n ) : null}\n </BackendModeCard>\n\n <BackendModeCard\n icon={Webhook}\n title={m.label.browserCdpUrl}\n description={m.desc.browserCdpUrl}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={!cdpUrl.trim() || testStatus === 'pending'}\n onClick={() => void onTest()}\n >\n {testStatus === 'pending' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Plug className=\"size-3.5\" />}\n {testStatus === 'pending' ? m.browserCdpTesting : m.browserCdpTestConnection}\n </button>\n }\n >\n <input\n type=\"text\"\n className={inputClassName()}\n value={cdpUrl}\n placeholder=\"ws://127.0.0.1:9222\"\n onChange={(e) => onCdpUrlChange(e.target.value)}\n autoComplete=\"off\"\n />\n <p className=\"text-[11px] text-fg-subtle\">{m.browserCdpLoopbackOnly}</p>\n {testMessage ? (\n <ActionResultBox kind={testStatus === 'error' ? 'error' : 'success'} message={testMessage} />\n ) : null}\n </BackendModeCard>\n </div>\n );\n}\n","import type { BrowserInstallStreamState } from './use-browser-install-stream';\nimport type { BrowserMessages } from './types';\n\nfunction phaseLabel(m: BrowserMessages, progress: BrowserInstallStreamState): string {\n const phase = progress.phase;\n if (!phase) return m.browserInstallPhaseStarting;\n\n if (phase === 'downloading') {\n if (progress.percent != null) {\n return m.browserInstallPhaseDownloadingPercent.replace('{{percent}}', String(progress.percent));\n }\n return m.browserInstallPhaseDownloading;\n }\n\n switch (phase) {\n case 'starting':\n return m.browserInstallPhaseStarting;\n case 'verifying':\n return m.browserInstallPhaseVerifying;\n case 'extracting':\n return m.browserInstallPhaseExtracting;\n case 'running':\n return progress.message ?? m.browserInstallPhaseRunning;\n case 'ready':\n return m.browserInstallPhaseReady;\n default:\n return progress.message ?? m.browserInstallPhaseRunning;\n }\n}\n\nexport function BrowserInstallProgressPanel({\n m,\n progress,\n showLogs = false,\n onCancel,\n cancelling = false,\n}: {\n m: BrowserMessages;\n progress: BrowserInstallStreamState;\n showLogs?: boolean;\n onCancel?: () => void;\n cancelling?: boolean;\n}) {\n if (!progress.phase) return null;\n\n const label = phaseLabel(m, progress);\n const percent =\n progress.percent != null\n ? Math.min(100, Math.max(0, progress.percent))\n : progress.phase === 'extracting' || progress.phase === 'verifying'\n ? null\n : progress.phase === 'running' || progress.phase === 'starting'\n ? null\n : null;\n\n return (\n <div className=\"space-y-2 rounded-lg border border-edge bg-surface-base px-3 py-2.5\">\n <div className=\"flex items-center justify-between gap-2 text-xs text-fg-muted\">\n <span className=\"text-fg\">{label}</span>\n <div className=\"flex items-center gap-2\">\n {percent != null ? <span className=\"tabular-nums\">{percent}%</span> : null}\n {onCancel ? (\n <button\n type=\"button\"\n className=\"rounded-md border border-edge px-2 py-0.5 text-[11px] font-medium text-fg-muted hover:bg-surface-raised hover:text-fg disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={cancelling}\n onClick={() => void onCancel()}\n >\n {cancelling ? m.browserInstallCancelling : m.browserInstallCancel}\n </button>\n ) : null}\n </div>\n </div>\n\n <div className=\"h-1.5 overflow-hidden rounded-full bg-surface-raised\">\n {percent != null ? (\n <div\n className=\"h-full rounded-full bg-accent transition-[width] duration-300 ease-out\"\n style={{ width: `${percent}%` }}\n />\n ) : (\n <div className=\"h-full w-1/3 animate-pulse rounded-full bg-accent/70\" />\n )}\n </div>\n\n {showLogs && progress.lines.length > 0 ? (\n <div className=\"max-h-28 overflow-y-auto rounded-md border border-edge bg-surface-panel px-2 py-1.5 font-mono text-[10px] leading-relaxed text-fg-muted\">\n {progress.lines.map((line, i) => (\n <div key={`${i}-${line.slice(0, 24)}`} className=\"truncate\">\n {line}\n </div>\n ))}\n </div>\n ) : null}\n\n {!showLogs && progress.phase === 'downloading' && progress.message && progress.percent == null ? (\n <p className=\"text-[11px] text-fg-subtle\">{progress.message}</p>\n ) : null}\n </div>\n );\n}\n","import { CheckCircle2, Download, LoaderCircle, RefreshCw, ShieldCheck } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { ConfirmDialog } from '@/components/ui/confirm-dialog';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName, selectClassName } from '../../defaults-field-styles';\n\nimport { BrowserInstallProgressPanel } from './browser-install-progress';\nimport { ActionResultBox, BackendModeCard, type ModeStatusKind } from './backend-mode-card';\nimport type { BrowserMessages, CloakDoctor, DoctorState } from './types';\nimport type { BrowserInstallStream } from './use-browser-install-stream';\n\ntype InstallStatus = 'idle' | 'installing' | 'installed' | 'failed';\n\nexport interface CloakCardForm {\n cacheDir: string;\n binaryPath: string;\n keepOpen: boolean;\n temporaryProfile: boolean;\n humanize: boolean;\n humanPreset: 'default' | 'careful';\n}\n\nexport function CloakCard({\n m,\n doctor,\n refetch,\n applyDoctor,\n installStream,\n form,\n onChange,\n}: {\n m: BrowserMessages;\n doctor: DoctorState<CloakDoctor>;\n refetch: (overrides?: { cacheDir?: string; binaryPath?: string }) => Promise<CloakDoctor | null>;\n applyDoctor?: (data: CloakDoctor) => void;\n installStream: BrowserInstallStream;\n form: CloakCardForm;\n onChange: (patch: Partial<CloakCardForm>) => void;\n}) {\n const [status, setStatus] = useState<InstallStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const { progress, running, cancelling, run: runInstall, reset: resetInstall, cancel } = installStream;\n\n const data = doctor.kind === 'ok' ? doctor.data : null;\n const installed = data?.installed === true;\n const installing = status === 'installing' || running;\n\n const installNow = useCallback(async () => {\n setConfirmOpen(false);\n setStatus('installing');\n setMessage(null);\n resetInstall();\n const result = await runInstall<CloakDoctor>({\n body: {\n cacheDir: form.cacheDir.trim() || undefined,\n binaryPath: form.binaryPath.trim() || undefined,\n },\n fallbackError: m.browserCloakInstallFailed,\n });\n if (!result.ok) {\n if (result.error === 'busy') {\n setStatus('installing');\n return;\n }\n if (result.error === 'cancelled') {\n setStatus('idle');\n setMessage(null);\n resetInstall();\n return;\n }\n setStatus('failed');\n setMessage(result.errorMessage ?? m.browserCloakInstallFailed);\n return;\n }\n if (result.payload) {\n applyDoctor?.(result.payload);\n }\n setStatus('installed');\n setMessage(\n result.payload?.binaryPath ? `${m.browserCloakInstalled}: ${result.payload.binaryPath}` : m.browserCloakInstalled,\n );\n await refetch({\n cacheDir: form.cacheDir,\n binaryPath: form.binaryPath,\n });\n }, [\n applyDoctor,\n form.binaryPath,\n form.cacheDir,\n m.browserCloakInstallFailed,\n m.browserCloakInstalled,\n refetch,\n resetInstall,\n runInstall,\n ]);\n\n const statusKind: ModeStatusKind =\n doctor.kind === 'loading'\n ? 'checking'\n : doctor.kind === 'error'\n ? 'error'\n : installed\n ? 'ready'\n : 'not_installed';\n\n const statusDetail = installed && data?.version ? `v${data.version} (${data.platform})` : undefined;\n\n return (\n <>\n <BackendModeCard\n icon={ShieldCheck}\n title={m.browserCloakGuideTitle}\n description={m.browserCloakGuideDesc}\n status={statusKind}\n statusDetail={statusDetail}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={installing}\n onClick={() => setConfirmOpen(true)}\n >\n {installing ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : installed ? (\n <RefreshCw className=\"size-3.5\" />\n ) : status === 'installed' ? (\n <CheckCircle2 className=\"size-3.5 text-green-500\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {installing\n ? m.browserCloakInstalling\n : installed\n ? m.browserReinstall\n : m.browserCloakDownload}\n </button>\n }\n >\n {running ? (\n <BrowserInstallProgressPanel\n m={m}\n progress={progress}\n cancelling={cancelling}\n onCancel={() => void cancel()}\n />\n ) : null}\n\n {message ? (\n <ActionResultBox kind={status === 'failed' ? 'error' : 'success'} message={message} />\n ) : null}\n\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloakKeepOpen} description={m.desc.browserCloakKeepOpen}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.keepOpen}\n onChange={(e) => onChange({ keepOpen: e.target.checked })}\n />\n <span>{m.browserCloakKeepOpenOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField\n label={m.label.browserCloakTemporaryProfile}\n description={m.desc.browserCloakTemporaryProfile}\n >\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.temporaryProfile}\n onChange={(e) => onChange({ temporaryProfile: e.target.checked })}\n />\n <span>{m.browserCloakTemporaryProfileOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserHumanize} description={m.desc.browserHumanize}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.humanize}\n onChange={(e) => onChange({ humanize: e.target.checked })}\n />\n <span>{m.browserHumanizeOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserHumanPreset} description={m.desc.browserHumanPreset}>\n <select\n className={selectClassName()}\n value={form.humanPreset}\n onChange={(e) => onChange({ humanPreset: e.target.value as 'default' | 'careful' })}\n >\n <option value=\"careful\">{m.browserHumanPresetCareful}</option>\n <option value=\"default\">{m.browserHumanPresetDefault}</option>\n </select>\n </AgentDefaultsField>\n </div>\n </BackendModeCard>\n\n {/* Advanced fields outside the card to keep its primary surface tidy */}\n <div className=\"grid gap-5 rounded-xl border border-edge bg-surface-base p-4 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloakCacheDir} description={m.desc.browserCloakCacheDir}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.cacheDir}\n placeholder=\"~/.xopc/bin/cloakbrowser\"\n onChange={(e) => onChange({ cacheDir: e.target.value })}\n autoComplete=\"off\"\n />\n <p className=\"text-[11px] text-fg-subtle\">{m.browserCacheDirHomeOnly}</p>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserCloakBinaryPath} description={m.desc.browserCloakBinaryPath}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.binaryPath}\n placeholder=\"~/.xopc/bin/cloakbrowser/chromium-v.../Chromium.app/Contents/MacOS/Chromium\"\n onChange={(e) => onChange({ binaryPath: e.target.value })}\n autoComplete=\"off\"\n />\n {form.binaryPath.trim() ? (\n <p className=\"text-[11px] text-amber-600 dark:text-amber-400\">{m.browserBinaryPathWarning}</p>\n ) : null}\n </AgentDefaultsField>\n </div>\n\n <ConfirmDialog\n open={confirmOpen}\n title={m.browserConfirmDownloadTitle}\n description={buildConfirmBody(m, data)}\n confirmLabel={m.browserConfirmDownloadConfirm}\n cancelLabel={m.browserConfirmDownloadCancel}\n onConfirm={() => void installNow()}\n onCancel={() => setConfirmOpen(false)}\n />\n </>\n );\n}\n\nfunction buildConfirmBody(m: BrowserMessages, data: CloakDoctor | null): string {\n if (!data) return m.browserConfirmDownloadBody;\n const parts = [\n m.browserConfirmDownloadBody\n .replace('{{version}}', data.version ?? '—')\n .replace('{{platform}}', data.platform)\n .replace('{{url}}', data.downloadUrl || '—'),\n ];\n if (data.expectedSha256) {\n parts.push(`SHA-256: ${data.expectedSha256.slice(0, 16)}…`);\n } else {\n parts.push(m.browserCloakSha256Skipped);\n }\n return parts.join('\\n');\n}\n","import { Cloud, LoaderCircle, Plug } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName, selectClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages } from './types';\n\ntype ActionStatus = 'idle' | 'pending' | 'ok' | 'error';\n\nexport interface CloudCardForm {\n provider: 'local' | 'browserbase' | 'browser-use';\n apiKey: string;\n projectId: string;\n region: string;\n}\n\nexport function CloudCard({\n m,\n form,\n onChange,\n testCloud,\n}: {\n m: BrowserMessages;\n form: CloudCardForm;\n onChange: (patch: Partial<CloudCardForm>) => void;\n testCloud: (provider: 'browserbase' | 'browser-use', apiKey: string) => Promise<{ reachable: boolean; error?: string }>;\n}) {\n const [status, setStatus] = useState<ActionStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n\n const provider = form.provider === 'local' ? 'browserbase' : form.provider;\n\n const onTest = useCallback(async () => {\n setStatus('pending');\n setMessage(null);\n try {\n const result = await testCloud(provider, form.apiKey);\n if (result.reachable) {\n setStatus('ok');\n setMessage(m.browserCloudTestOk);\n } else {\n setStatus('error');\n setMessage(m.browserCloudTestFailed.replace('{{error}}', result.error ?? '—'));\n }\n } catch (e) {\n setStatus('error');\n setMessage(m.browserCloudTestFailed.replace('{{error}}', e instanceof Error ? e.message : String(e)));\n }\n }, [form.apiKey, m.browserCloudTestFailed, m.browserCloudTestOk, provider, testCloud]);\n\n return (\n <BackendModeCard\n icon={Cloud}\n title={m.label.browserCloudProvider}\n description={m.desc.browserCloudProvider}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={status === 'pending'}\n onClick={() => void onTest()}\n >\n {status === 'pending' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Plug className=\"size-3.5\" />}\n {m.browserCloudTestConnection}\n </button>\n }\n >\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloudProvider} description={m.desc.browserCloudProvider}>\n <select\n className={selectClassName()}\n value={provider}\n onChange={(e) => onChange({ provider: e.target.value as CloudCardForm['provider'] })}\n >\n <option value=\"browserbase\">{m.browserCloudProviderBrowserbase}</option>\n <option value=\"browser-use\">{m.browserCloudProviderBrowserUse}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserCloudApiKey} description={m.desc.browserCloudApiKey}>\n <input\n type=\"password\"\n className={inputClassName()}\n value={form.apiKey === '***' ? '' : form.apiKey}\n placeholder={\n form.apiKey === '***'\n ? '••••••••'\n : provider === 'browserbase'\n ? 'BROWSERBASE_API_KEY'\n : 'BROWSER_USE_API_KEY'\n }\n onChange={(e) => onChange({ apiKey: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n {provider === 'browserbase' ? (\n <AgentDefaultsField label={m.label.browserCloudProjectId} description={m.desc.browserCloudProjectId}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.projectId}\n placeholder=\"BROWSERBASE_PROJECT_ID\"\n onChange={(e) => onChange({ projectId: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n ) : null}\n <AgentDefaultsField label={m.label.browserCloudRegion} description={m.desc.browserCloudRegion}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.region}\n placeholder=\"us-west-2\"\n onChange={(e) => onChange({ region: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n {message ? (\n <ActionResultBox kind={status === 'error' ? 'error' : 'success'} message={message} />\n ) : null}\n </BackendModeCard>\n );\n}\n","import {\n Download,\n ExternalLink,\n FolderOpen,\n LoaderCircle,\n Play,\n Plug,\n PlugZap,\n Puzzle,\n Square,\n Unplug,\n} from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { copyTextToClipboard } from '@/lib/copy-to-clipboard';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages, DoctorState, ExtensionArtifacts, ExtensionProbe } from './types';\n\nconst DEFAULT_PORT = 19820;\n\nexport interface ExtensionCardForm {\n port: number | undefined;\n host: string;\n}\n\nexport function ExtensionCard({\n m,\n probe,\n artifacts,\n onChange,\n startBridge,\n stopBridge,\n installArtifacts,\n refetchArtifacts,\n openExtensionChrome,\n revealExtensionFolder,\n form,\n}: {\n m: BrowserMessages;\n probe: DoctorState<ExtensionProbe>;\n artifacts: DoctorState<ExtensionArtifacts>;\n form: ExtensionCardForm;\n onChange: (patch: Partial<ExtensionCardForm>) => void;\n startBridge: (opts?: { host?: string; port?: number }) => Promise<void>;\n stopBridge: () => Promise<void>;\n installArtifacts: (opts?: { force?: boolean }) => Promise<ExtensionArtifacts | null>;\n refetchArtifacts: () => Promise<ExtensionArtifacts | null>;\n openExtensionChrome: () => Promise<void>;\n revealExtensionFolder: () => Promise<void>;\n}) {\n const [busy, setBusy] = useState<'start' | 'stop' | 'install' | 'open' | 'folder' | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [installMessage, setInstallMessage] = useState<string | null>(null);\n\n const port = form.port ?? DEFAULT_PORT;\n const host = form.host || '127.0.0.1';\n const wsUrl = `ws://${host}:${port}/browser-ext`;\n\n const running = probe.kind === 'ok' && probe.data.running;\n const connected = probe.kind === 'ok' && probe.data.connected;\n\n const artifactData = artifacts.kind === 'ok' ? artifacts.data : probe.kind === 'ok' ? probe.data.artifacts : undefined;\n const installed = artifactData?.installed === true;\n const extensionDir = artifactData?.extensionDir;\n const needsChromeReload = artifactData?.needsChromeReload === true;\n\n const badge =\n probe.kind !== 'ok'\n ? { icon: Unplug, color: 'text-fg-muted', label: '…' }\n : connected\n ? { icon: PlugZap, color: 'text-green-500', label: m.browserExtensionConnected }\n : running\n ? { icon: Plug, color: 'text-amber-500', label: m.browserExtensionWaiting }\n : { icon: Unplug, color: 'text-fg-muted', label: m.browserExtensionServerOff };\n const BadgeIcon = badge.icon;\n\n const onStart = useCallback(async () => {\n if (busy) return;\n setBusy('start');\n setError(null);\n try {\n await startBridge({ host, port });\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, host, port, startBridge]);\n\n const onStop = useCallback(async () => {\n if (busy) return;\n setBusy('stop');\n setError(null);\n try {\n await stopBridge();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, stopBridge]);\n\n const onInstall = useCallback(async () => {\n if (busy) return;\n setBusy('install');\n setError(null);\n setInstallMessage(null);\n try {\n const result = await installArtifacts({ force: installed });\n if (result?.extensionDir) {\n setInstallMessage(`${m.browserExtensionInstalled}: ${result.extensionDir}`);\n } else {\n setInstallMessage(m.browserExtensionInstalled);\n }\n await refetchArtifacts();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, installArtifacts, installed, m.browserExtensionInstalled, refetchArtifacts]);\n\n const openChromeExtensions = useCallback(async () => {\n if (busy) return;\n setBusy('open');\n setError(null);\n try {\n await openExtensionChrome();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, openExtensionChrome]);\n\n const onRevealFolder = useCallback(async () => {\n if (!extensionDir || busy) return;\n setBusy('folder');\n setError(null);\n setInstallMessage(null);\n try {\n const copied = await copyTextToClipboard(extensionDir);\n await revealExtensionFolder();\n setInstallMessage(\n copied ? m.browserExtensionPathCopied : m.browserExtensionFolderOpened,\n );\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, extensionDir, m.browserExtensionFolderOpened, m.browserExtensionPathCopied, revealExtensionFolder]);\n\n return (\n <BackendModeCard\n icon={Puzzle}\n title={m.browserBackendExtension}\n description={m.browserExtensionDownloadHint}\n m={m}\n primaryAction={\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onInstall()}\n >\n {busy === 'install' ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {busy === 'install' ? m.browserExtensionInstalling : m.browserExtensionInstall}\n </button>\n {running ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onStop()}\n >\n {busy === 'stop' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Square className=\"size-3.5\" />}\n {m.browserExtensionStopBridge}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onStart()}\n >\n {busy === 'start' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Play className=\"size-3.5\" />}\n {busy === 'start' ? m.browserExtensionStarting : m.browserExtensionStartBridge}\n </button>\n )}\n </div>\n }\n advanced={\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserExtensionPort} description={m.desc.browserExtensionPort}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1024}\n max={65535}\n value={form.port ?? ''}\n placeholder={String(DEFAULT_PORT)}\n onChange={(e) => {\n const v = e.target.value;\n onChange({ port: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserExtensionHost} description={m.desc.browserExtensionHost}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.host}\n placeholder=\"127.0.0.1\"\n onChange={(e) => onChange({ host: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n }\n >\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-center justify-between gap-3 rounded-lg border border-edge bg-surface-base px-3 py-2\">\n <span className=\"font-mono text-xs text-fg-muted\">{wsUrl}</span>\n <span className={`inline-flex items-center gap-1.5 text-xs ${badge.color}`}>\n <BadgeIcon className=\"size-3.5\" />\n <span>{badge.label}</span>\n </span>\n </div>\n\n <div className=\"rounded-lg border border-edge bg-surface-base px-3 py-3\">\n <p className=\"text-xs font-medium text-fg\">{m.browserExtensionInstallGuideTitle}</p>\n <ol className=\"mt-2.5 list-decimal space-y-2.5 pl-4 text-[11px] leading-relaxed text-fg-muted\">\n <li className=\"text-fg\">{m.browserExtensionInstallStep1}</li>\n <li>\n <span className=\"text-fg\">{m.browserExtensionInstallStep2}</span>\n {extensionDir ? (\n <div className=\"mt-2 rounded-md border border-edge bg-surface-raised px-2.5 py-2\">\n <p className=\"text-[10px] font-medium uppercase tracking-wide text-fg-subtle\">\n {m.browserExtensionInstallStep2FolderLabel}\n </p>\n <p className=\"mt-1 break-all font-mono text-[11px] text-fg\">{extensionDir}</p>\n <div className=\"mt-2 flex flex-wrap gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void openChromeExtensions()}\n >\n <ExternalLink className=\"size-3\" />\n {m.browserExtensionOpenChrome}\n </button>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onRevealFolder()}\n title={extensionDir}\n >\n {busy === 'folder' ? (\n <LoaderCircle className=\"size-3 animate-spin\" />\n ) : (\n <FolderOpen className=\"size-3\" />\n )}\n {m.browserExtensionRevealFolder}\n </button>\n </div>\n </div>\n ) : null}\n </li>\n <li className=\"text-fg\">{m.browserExtensionInstallStep3}</li>\n </ol>\n </div>\n\n {needsChromeReload ? (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-800 dark:text-amber-200\">\n {m.browserExtensionNeedsChromeReload}\n </div>\n ) : null}\n {installMessage ? <ActionResultBox kind=\"success\" message={installMessage} /> : null}\n {error ? <ActionResultBox kind=\"error\" message={error} /> : null}\n </div>\n </BackendModeCard>\n );\n}\n","import { CheckCircle2, Download, LoaderCircle, MonitorPlay, RefreshCw } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { BrowserInstallProgressPanel } from './browser-install-progress';\nimport { ActionResultBox, BackendModeCard, type ModeStatusKind } from './backend-mode-card';\nimport type { BrowserMessages, DoctorState, PlaywrightDoctor } from './types';\nimport type { BrowserInstallStream } from './use-browser-install-stream';\n\ntype InstallStatus = 'idle' | 'installing' | 'installed' | 'failed';\n\nexport function LocalCard({\n m,\n doctor,\n refetch,\n applyDoctor,\n installStream,\n}: {\n m: BrowserMessages;\n doctor: DoctorState<PlaywrightDoctor>;\n refetch: () => Promise<void>;\n applyDoctor?: (data: PlaywrightDoctor) => void;\n installStream: BrowserInstallStream;\n}) {\n const [status, setStatus] = useState<InstallStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n const { progress, running, cancelling, run: runInstall, reset: resetInstall, cancel } = installStream;\n\n const install = useCallback(async () => {\n setStatus('installing');\n setMessage(null);\n resetInstall();\n const result = await runInstall<PlaywrightDoctor>({\n fallbackError: m.browserPlaywrightInstallFailed,\n });\n if (!result.ok) {\n if (result.error === 'busy') {\n setStatus('installing');\n return;\n }\n if (result.error === 'cancelled') {\n setStatus('idle');\n setMessage(null);\n resetInstall();\n return;\n }\n setStatus('failed');\n setMessage(result.errorMessage ?? m.browserPlaywrightInstallFailed);\n return;\n }\n if (result.payload) {\n applyDoctor?.(result.payload);\n }\n setStatus('installed');\n setMessage(\n result.payload?.executablePath\n ? `${m.browserPlaywrightInstalled}: ${result.payload.executablePath}`\n : m.browserPlaywrightInstalled,\n );\n await refetch();\n }, [\n applyDoctor,\n m.browserPlaywrightInstallFailed,\n m.browserPlaywrightInstalled,\n refetch,\n resetInstall,\n runInstall,\n ]);\n\n const statusKind: ModeStatusKind =\n doctor.kind === 'loading'\n ? 'checking'\n : doctor.kind === 'error'\n ? 'error'\n : doctor.kind === 'ok'\n ? doctor.data.installed\n ? 'ready'\n : 'not_installed'\n : 'unknown';\n\n const statusDetail =\n doctor.kind === 'ok' && doctor.data.installed && doctor.data.executablePath\n ? doctor.data.executablePath\n : undefined;\n\n const installed = doctor.kind === 'ok' && doctor.data.installed;\n const installing = status === 'installing' || running;\n\n return (\n <BackendModeCard\n icon={MonitorPlay}\n title={m.browserPlaywrightGuideTitle}\n description={m.browserPlaywrightGuideDesc}\n status={statusKind}\n statusDetail={statusDetail}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={installing}\n onClick={() => void install()}\n >\n {installing ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : installed ? (\n <RefreshCw className=\"size-3.5\" />\n ) : status === 'installed' ? (\n <CheckCircle2 className=\"size-3.5 text-green-500\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {installing\n ? m.browserPlaywrightInstalling\n : installed\n ? m.browserReinstall\n : m.browserPlaywrightInstall}\n </button>\n }\n >\n <code className=\"w-fit rounded-md border border-edge bg-surface-base px-2 py-1 text-xs text-fg\">\n node node_modules/playwright-core/cli.js install chromium\n </code>\n {running ? (\n <BrowserInstallProgressPanel\n m={m}\n progress={progress}\n showLogs\n cancelling={cancelling}\n onCancel={() => void cancel()}\n />\n ) : null}\n {message ? (\n <ActionResultBox kind={status === 'failed' ? 'error' : 'success'} message={message} />\n ) : null}\n </BackendModeCard>\n );\n}\n","import { useCallback, useEffect, useReducer, useRef } from 'react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport type {\n CdpPingResult,\n CloakDoctor,\n CloudTestResult,\n DoctorState,\n ExtensionArtifacts,\n ExtensionProbe,\n LaunchedCdpInstance,\n PlaywrightDoctor,\n} from './types';\n\ninterface ApiEnvelope<T> {\n ok?: boolean;\n payload?: T;\n error?: string | { message?: string };\n}\n\nasync function getJson<T>(url: string): Promise<T> {\n const res = await apiFetch(url);\n const body = (await res.json().catch(() => ({}))) as ApiEnvelope<T>;\n if (!res.ok || body.ok === false) {\n const msg = typeof body.error === 'string' ? body.error : body.error?.message;\n throw new Error(msg || `Request failed: ${res.status}`);\n }\n if (body.payload === undefined) throw new Error('Empty payload');\n return body.payload;\n}\n\nasync function postJson<T>(url: string, body: unknown): Promise<T> {\n const res = await apiFetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body ?? {}),\n });\n const json = (await res.json().catch(() => ({}))) as ApiEnvelope<T>;\n if (!res.ok || json.ok === false) {\n const msg = typeof json.error === 'string' ? json.error : json.error?.message;\n throw new Error(msg || `Request failed: ${res.status}`);\n }\n if (json.payload === undefined) throw new Error('Empty payload');\n return json.payload;\n}\n\ntype BrowserDoctorState = {\n playwright: DoctorState<PlaywrightDoctor>;\n cloak: DoctorState<CloakDoctor>;\n extension: DoctorState<ExtensionProbe>;\n extensionArtifacts: DoctorState<ExtensionArtifacts>;\n};\n\ntype BrowserDoctorAction =\n | { type: 'playwright'; state: DoctorState<PlaywrightDoctor> }\n | { type: 'cloak'; state: DoctorState<CloakDoctor> }\n | { type: 'extension'; state: DoctorState<ExtensionProbe> }\n | { type: 'extension-artifacts'; state: DoctorState<ExtensionArtifacts> }\n | { type: 'extension-idle' }\n | { type: 'extension-start-probe' }\n | { type: 'extension-artifacts-start-probe' };\n\nconst initialBrowserDoctorState: BrowserDoctorState = {\n playwright: { kind: 'idle' },\n cloak: { kind: 'idle' },\n extension: { kind: 'idle' },\n extensionArtifacts: { kind: 'idle' },\n};\n\nfunction browserDoctorReducer(state: BrowserDoctorState, action: BrowserDoctorAction): BrowserDoctorState {\n switch (action.type) {\n case 'playwright':\n return { ...state, playwright: action.state };\n case 'cloak':\n return { ...state, cloak: action.state };\n case 'extension':\n return { ...state, extension: action.state };\n case 'extension-artifacts':\n return { ...state, extensionArtifacts: action.state };\n case 'extension-idle':\n return { ...state, extension: { kind: 'idle' }, extensionArtifacts: { kind: 'idle' } };\n case 'extension-start-probe':\n return {\n ...state,\n extension: state.extension.kind === 'ok' ? state.extension : { kind: 'loading' },\n };\n case 'extension-artifacts-start-probe':\n return {\n ...state,\n extensionArtifacts:\n state.extensionArtifacts.kind === 'ok' ? state.extensionArtifacts : { kind: 'loading' },\n };\n }\n}\n\nexport interface BrowserDoctor {\n playwright: DoctorState<PlaywrightDoctor>;\n cloak: DoctorState<CloakDoctor>;\n /** Periodic probe of the extension bridge (polled every 5 s when active). */\n extension: DoctorState<ExtensionProbe>;\n extensionArtifacts: DoctorState<ExtensionArtifacts>;\n refetchPlaywright: () => Promise<void>;\n applyPlaywrightDoctor: (data: PlaywrightDoctor) => void;\n refetchCloak: (overrides?: { cacheDir?: string; binaryPath?: string }) => Promise<CloakDoctor | null>;\n applyCloakDoctor: (data: CloakDoctor) => void;\n pingCdp: (cdpUrl: string) => Promise<CdpPingResult>;\n testCloud: (provider: 'browserbase' | 'browser-use', apiKey: string) => Promise<CloudTestResult>;\n launchCdp: (executablePath?: string) => Promise<LaunchedCdpInstance>;\n stopCdp: (port: number) => Promise<void>;\n listCdpInstances: () => Promise<LaunchedCdpInstance[]>;\n startExtensionBridge: (opts?: { host?: string; port?: number }) => Promise<void>;\n stopExtensionBridge: () => Promise<void>;\n refetchExtension: () => Promise<void>;\n refetchExtensionArtifacts: () => Promise<ExtensionArtifacts | null>;\n installExtensionArtifacts: (opts?: { force?: boolean }) => Promise<ExtensionArtifacts | null>;\n openExtensionChrome: () => Promise<void>;\n revealExtensionFolder: () => Promise<void>;\n}\n\nexport function useBrowserDoctor(opts: {\n cacheDir?: string;\n binaryPath?: string;\n /** When true, the extension probe polls every 5 s. */\n extensionEnabled?: boolean;\n extensionHost?: string;\n extensionPort?: number;\n}): BrowserDoctor {\n const [doctors, dispatch] = useReducer(browserDoctorReducer, initialBrowserDoctorState);\n const { playwright, cloak, extension, extensionArtifacts } = doctors;\n\n const refetchPlaywright = useCallback(async () => {\n dispatch({ type: 'playwright', state: { kind: 'loading' } });\n try {\n const data = await getJson<PlaywrightDoctor>(apiUrl('/api/browser/playwright/doctor'));\n dispatch({ type: 'playwright', state: { kind: 'ok', data } });\n } catch (e) {\n dispatch({\n type: 'playwright',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n }\n }, []);\n\n const refetchCloak = useCallback(\n async (overrides?: { cacheDir?: string; binaryPath?: string }) => {\n dispatch({ type: 'cloak', state: { kind: 'loading' } });\n const cd = (overrides?.cacheDir ?? opts.cacheDir ?? '').trim();\n const bp = (overrides?.binaryPath ?? opts.binaryPath ?? '').trim();\n const qs = new URLSearchParams();\n if (cd) qs.set('cacheDir', cd);\n if (bp) qs.set('binaryPath', bp);\n try {\n const data = await getJson<CloakDoctor>(\n apiUrl(`/api/browser/cloakbrowser/doctor${qs.size ? `?${qs}` : ''}`),\n );\n dispatch({ type: 'cloak', state: { kind: 'ok', data } });\n return data;\n } catch (e) {\n dispatch({\n type: 'cloak',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n return null;\n }\n },\n [opts.binaryPath, opts.cacheDir],\n );\n\n const applyPlaywrightDoctor = useCallback((data: PlaywrightDoctor) => {\n dispatch({ type: 'playwright', state: { kind: 'ok', data } });\n }, []);\n\n const applyCloakDoctor = useCallback((data: CloakDoctor) => {\n dispatch({ type: 'cloak', state: { kind: 'ok', data } });\n }, []);\n\n // One-shot probes on mount.\n useEffect(() => {\n void refetchPlaywright();\n }, [refetchPlaywright]);\n useEffect(() => {\n void refetchCloak();\n }, [refetchCloak]);\n\n const { extensionEnabled, extensionHost, extensionPort } = opts;\n\n const refetchExtension = useCallback(async () => {\n const qs = new URLSearchParams({ probe: '1' });\n if (extensionHost) qs.set('host', extensionHost);\n if (extensionPort !== undefined) qs.set('port', String(extensionPort));\n dispatch({ type: 'extension-start-probe' });\n try {\n const res = await apiFetch(apiUrl(`/api/browser/extension-status?${qs}`), {\n signal: AbortSignal.timeout(3000),\n });\n const data = (await res.json().catch(() => ({}))) as {\n running?: boolean;\n connected?: boolean;\n backend?: string;\n artifacts?: ExtensionArtifacts;\n };\n if (!res.ok) {\n dispatch({ type: 'extension', state: { kind: 'error', message: `HTTP ${res.status}` } });\n return;\n }\n dispatch({\n type: 'extension',\n state: {\n kind: 'ok',\n data: {\n running: data.running === true,\n connected: data.connected === true,\n backend: data.backend,\n artifacts: data.artifacts,\n },\n },\n });\n } catch (e) {\n dispatch({\n type: 'extension',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n }\n }, [extensionHost, extensionPort]);\n\n const refetchExtensionArtifacts = useCallback(async () => {\n dispatch({ type: 'extension-artifacts-start-probe' });\n try {\n const data = await getJson<ExtensionArtifacts>(apiUrl('/api/browser/extension/doctor'));\n dispatch({ type: 'extension-artifacts', state: { kind: 'ok', data } });\n return data;\n } catch (e) {\n dispatch({\n type: 'extension-artifacts',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n return null;\n }\n }, []);\n\n const installExtensionArtifacts = useCallback(\n async (params?: { force?: boolean }) => {\n const payload = await postJson<{ doctor: ExtensionArtifacts }>(\n apiUrl('/api/browser/extension/install'),\n { force: params?.force ?? false },\n );\n const doctor = payload.doctor;\n dispatch({ type: 'extension-artifacts', state: { kind: 'ok', data: doctor } });\n await refetchExtension();\n return doctor;\n },\n [refetchExtension],\n );\n\n const openExtensionChrome = useCallback(async () => {\n await postJson<{ extensionDir: string }>(apiUrl('/api/browser/extension/open'), {\n action: 'chrome',\n });\n }, []);\n\n const revealExtensionFolder = useCallback(async () => {\n await postJson<{ extensionDir: string }>(apiUrl('/api/browser/extension/open'), {\n action: 'folder',\n });\n }, []);\n\n const trackedExtensionEnabledRef = useRef(extensionEnabled);\n if (trackedExtensionEnabledRef.current !== extensionEnabled) {\n trackedExtensionEnabledRef.current = extensionEnabled;\n if (!extensionEnabled) {\n dispatch({ type: 'extension-idle' });\n }\n }\n\n useEffect(() => {\n if (!extensionEnabled) return undefined;\n void refetchExtension();\n void refetchExtensionArtifacts();\n const id = setInterval(() => void refetchExtension(), 5000);\n return () => clearInterval(id);\n }, [extensionEnabled, refetchExtension, refetchExtensionArtifacts]);\n\n const startExtensionBridge = useCallback(\n async (params?: { host?: string; port?: number }) => {\n await postJson<{ running: boolean }>(apiUrl('/api/browser/extension/start'), {\n host: params?.host ?? extensionHost,\n port: params?.port ?? extensionPort,\n });\n await refetchExtension();\n },\n [extensionHost, extensionPort, refetchExtension],\n );\n\n const stopExtensionBridge = useCallback(async () => {\n await postJson<{ running: boolean }>(apiUrl('/api/browser/extension/stop'), {});\n await refetchExtension();\n }, [refetchExtension]);\n\n const pingCdp = useCallback(async (cdpUrl: string) => {\n return postJson<CdpPingResult>(apiUrl('/api/browser/cdp/ping'), { cdpUrl });\n }, []);\n\n const testCloud = useCallback(\n async (provider: 'browserbase' | 'browser-use', apiKey: string) => {\n return postJson<CloudTestResult>(apiUrl('/api/browser/cloud/test-connection'), {\n provider,\n apiKey,\n });\n },\n [],\n );\n\n const launchCdp = useCallback(async (executablePath?: string) => {\n return postJson<LaunchedCdpInstance>(apiUrl('/api/browser/cdp/launch'), {\n executablePath,\n });\n }, []);\n\n const stopCdp = useCallback(async (port: number) => {\n await postJson<{ stopped: boolean }>(apiUrl('/api/browser/cdp/stop'), { port });\n }, []);\n\n const listCdpInstances = useCallback(async () => {\n const payload = await getJson<{ instances: LaunchedCdpInstance[] }>(\n apiUrl('/api/browser/cdp/instances'),\n );\n return payload.instances;\n }, []);\n\n return {\n playwright,\n cloak,\n extension,\n extensionArtifacts,\n refetchPlaywright,\n applyPlaywrightDoctor,\n refetchCloak,\n applyCloakDoctor,\n refetchExtension,\n refetchExtensionArtifacts,\n installExtensionArtifacts,\n openExtensionChrome,\n revealExtensionFolder,\n pingCdp,\n testCloud,\n launchCdp,\n stopCdp,\n listCdpInstances,\n startExtensionBridge,\n stopExtensionBridge,\n };\n}\n","import { useCallback, useRef, useState } from 'react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nconst SSE_BLOCK_DELIM = '\\n\\n';\nconst CRLF_RE = /\\r\\n/g;\n\nexport type BrowserInstallKind = 'playwright' | 'cloakbrowser';\n\nexport type BrowserInstallPhase =\n | 'starting'\n | 'downloading'\n | 'verifying'\n | 'extracting'\n | 'running'\n | 'ready';\n\nexport type BrowserInstallProgressEvent = {\n phase: BrowserInstallPhase;\n message?: string;\n percent?: number | null;\n bytesReceived?: number;\n totalBytes?: number | null;\n line?: string;\n source?: 'stdout' | 'stderr';\n};\n\nexport type BrowserInstallStreamState = {\n phase: BrowserInstallPhase | null;\n message: string | null;\n percent: number | null;\n lines: string[];\n};\n\nexport type BrowserInstallStreamResult<T = unknown> =\n | { ok: true; payload: T }\n | { ok: false; error: string; message?: string; status?: number };\n\nconst INSTALL_PATH: Record<BrowserInstallKind, string> = {\n playwright: '/api/browser/playwright/install/stream',\n cloakbrowser: '/api/browser/cloakbrowser/install/stream',\n};\n\nconst CANCEL_PATH: Record<BrowserInstallKind, string> = {\n playwright: '/api/browser/playwright/install/cancel',\n cloakbrowser: '/api/browser/cloakbrowser/install/cancel',\n};\n\nconst MAX_LOG_LINES = 8;\n\nfunction emptyState(): BrowserInstallStreamState {\n return { phase: null, message: null, percent: null, lines: [] };\n}\n\nfunction applyProgress(\n prev: BrowserInstallStreamState,\n event: BrowserInstallProgressEvent,\n): BrowserInstallStreamState {\n const next: BrowserInstallStreamState = {\n phase: event.phase,\n message: event.message ?? event.line ?? prev.message,\n percent: event.percent ?? prev.percent,\n lines: prev.lines,\n };\n\n if (event.line) {\n const lines = [...prev.lines, event.line];\n next.lines = lines.length > MAX_LOG_LINES ? lines.slice(-MAX_LOG_LINES) : lines;\n }\n\n return next;\n}\n\nasync function consumeBrowserInstallSse<T>(\n body: ReadableStream<Uint8Array>,\n onProgress: (event: BrowserInstallProgressEvent) => void,\n signal?: AbortSignal,\n): Promise<BrowserInstallStreamResult<T>> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n let final: BrowserInstallStreamResult<T> | null = null;\n\n const handleSseBlock = (block: string) => {\n let ev = '';\n let dataPayload = '';\n for (const line of block.split('\\n')) {\n const L = line.replace(/\\r$/, '');\n if (L.startsWith('event:')) ev = L.slice(6).trim();\n else if (L.startsWith('data:')) dataPayload += L.slice(5).trimStart();\n }\n if (!dataPayload) return;\n\n if (ev === 'progress') {\n try {\n const parsed = JSON.parse(dataPayload) as BrowserInstallProgressEvent;\n if (parsed && typeof parsed === 'object' && typeof parsed.phase === 'string') {\n onProgress(parsed);\n }\n } catch {\n /* ignore malformed chunk */\n }\n return;\n }\n\n if (ev === 'result') {\n try {\n const json = JSON.parse(dataPayload) as {\n ok?: boolean;\n error?: string;\n message?: string;\n payload?: T;\n };\n if (json.ok) {\n final = { ok: true, payload: json.payload as T };\n } else {\n final = {\n ok: false,\n error: String(json.error ?? 'unknown'),\n message: typeof json.message === 'string' ? json.message : undefined,\n status:\n json.error === 'busy' ? 409 : json.error === 'cancelled' ? 499 : 500,\n };\n }\n } catch {\n final = { ok: false, error: 'parse', status: 0 };\n }\n }\n };\n\n try {\n const readChunk = async (): Promise<BrowserInstallStreamResult<T>> => {\n if (final !== null) return final;\n if (signal?.aborted) {\n await reader.cancel().catch(() => {});\n return { ok: false, error: 'cancelled', status: 499 };\n }\n const { done, value } = await reader.read();\n if (done) return final ?? { ok: false, error: 'no-result', status: 0 };\n buffer += decoder.decode(value, { stream: true });\n buffer = buffer.replace(CRLF_RE, '\\n');\n const parts = buffer.split(SSE_BLOCK_DELIM);\n buffer = parts.pop() ?? '';\n for (const chunk of parts) {\n if (chunk.length) handleSseBlock(chunk);\n }\n return readChunk();\n };\n const result = await readChunk();\n if (result) return result;\n } catch (err) {\n if (signal?.aborted || (err instanceof DOMException && err.name === 'AbortError')) {\n return { ok: false, error: 'cancelled', status: 499 };\n }\n throw err;\n } finally {\n reader.releaseLock();\n }\n\n if (final) return final;\n\n return signal?.aborted\n ? { ok: false, error: 'cancelled', status: 499 }\n : { ok: false, error: 'no-result', status: 0 };\n}\n\n/**\n * One instance per browser backend (playwright / cloakbrowser).\n * State survives switching backend tabs in the settings panel.\n */\nexport function useBrowserInstallStream(kind: BrowserInstallKind) {\n const [progress, setProgress] = useState<BrowserInstallStreamState>(emptyState);\n const [running, setRunning] = useState(false);\n const [cancelling, setCancelling] = useState(false);\n const runningRef = useRef(false);\n const abortRef = useRef<AbortController | null>(null);\n\n const reset = useCallback(() => {\n if (runningRef.current) return;\n setProgress(emptyState());\n }, []);\n\n const cancel = useCallback(async () => {\n if (!runningRef.current) return;\n setCancelling(true);\n try {\n await apiFetch(apiUrl(CANCEL_PATH[kind]), { method: 'POST' }).catch(() => {});\n abortRef.current?.abort();\n } finally {\n setCancelling(false);\n }\n }, [kind]);\n\n const run = useCallback(\n async <T,>(opts: {\n body?: unknown;\n fallbackError: string;\n }): Promise<BrowserInstallStreamResult<T> & { errorMessage?: string }> => {\n if (runningRef.current) {\n return {\n ok: false,\n error: 'busy',\n status: 409,\n errorMessage: 'An install for this browser type is already in progress.',\n };\n }\n\n const ac = new AbortController();\n abortRef.current = ac;\n runningRef.current = true;\n setRunning(true);\n setProgress(emptyState());\n\n try {\n const res = await apiFetch(apiUrl(INSTALL_PATH[kind]), {\n method: 'POST',\n headers: {\n Accept: 'text/event-stream',\n ...(opts.body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n },\n body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,\n signal: ac.signal,\n });\n\n if (!res.ok || !res.body) {\n const text = await res.text().catch(() => '');\n let message = `HTTP ${res.status}`;\n try {\n const j = JSON.parse(text) as { message?: string; error?: string };\n if (typeof j.message === 'string') message = j.message;\n else if (typeof j.error === 'string') message = j.error;\n } catch {\n if (text) message = text.slice(0, 500);\n }\n return {\n ok: false,\n error: res.status === 409 ? 'busy' : 'http',\n status: res.status,\n errorMessage: message,\n };\n }\n\n const result = await consumeBrowserInstallSse<T>(\n res.body,\n (event) => {\n setProgress((prev) => applyProgress(prev, event));\n },\n ac.signal,\n );\n\n if (!result.ok) {\n if (result.error === 'cancelled') {\n return { ...result, errorMessage: undefined };\n }\n return {\n ...result,\n errorMessage:\n result.message ??\n (result.error === 'busy'\n ? 'An install for this browser type is already in progress.'\n : opts.fallbackError),\n };\n }\n\n return result;\n } catch (err) {\n if (ac.signal.aborted || (err instanceof DOMException && err.name === 'AbortError')) {\n return { ok: false, error: 'cancelled', status: 499 };\n }\n return {\n ok: false,\n error: 'network',\n errorMessage: err instanceof Error ? err.message : opts.fallbackError,\n };\n } finally {\n if (abortRef.current === ac) {\n abortRef.current = null;\n }\n runningRef.current = false;\n setRunning(false);\n setCancelling(false);\n }\n },\n [kind],\n );\n\n return { progress, running, cancelling, run, reset, cancel };\n}\n\nexport type BrowserInstallStream = ReturnType<typeof useBrowserInstallStream>;\n","import { Cloud, Globe, MonitorPlay, Puzzle, ShieldCheck, Webhook } from 'lucide-react';\nimport { useMemo } from 'react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nimport type { ModeStatusKind } from './browser/backend-mode-card';\nimport { BackendModePicker, type BackendModeOption } from './browser/backend-mode-picker';\nimport { CdpCard } from './browser/cdp-card';\nimport { CloakCard } from './browser/cloak-card';\nimport { CloudCard } from './browser/cloud-card';\nimport { ExtensionCard } from './browser/extension-card';\nimport { LocalCard } from './browser/local-card';\nimport { useBrowserDoctor } from './browser/use-browser-doctor';\nimport { useBrowserInstallStream } from './browser/use-browser-install-stream';\n\nexport function AgentDefaultsBrowserPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n\n const playwrightInstall = useBrowserInstallStream('playwright');\n const cloakInstall = useBrowserInstallStream('cloakbrowser');\n\n const doctor = useBrowserDoctor({\n cacheDir: form.browserCloakCacheDir,\n binaryPath: form.browserCloakBinaryPath,\n extensionEnabled: form.browserEnabled,\n extensionHost: form.browserExtensionHost,\n extensionPort: form.browserExtensionPort,\n });\n\n const localStatus = doctorStatus(doctor.playwright);\n const cloakStatus = doctorStatus(doctor.cloak);\n const extensionStatus = extensionDoctorStatus(doctor.extension);\n const extensionStatusLabel = extensionStatusLabelFor(doctor.extension, a);\n\n const modeOptions = useMemo<BackendModeOption[]>(\n () => [\n {\n value: 'extension',\n icon: Puzzle,\n name: a.browserBackendExtension,\n tagline: a.browserModeExtTagline,\n status: extensionStatus,\n statusLabel: extensionStatusLabel,\n },\n {\n value: 'local',\n icon: MonitorPlay,\n name: a.browserBackendLocal,\n tagline: a.browserModeLocalTagline,\n status: localStatus,\n statusLabel: statusLabelFor(localStatus, a),\n },\n {\n value: 'cloakbrowser',\n icon: ShieldCheck,\n name: a.browserBackendCloakBrowser,\n tagline: a.browserModeCloakTagline,\n status: cloakStatus,\n statusLabel: statusLabelFor(cloakStatus, a),\n },\n {\n value: 'cdp',\n icon: Webhook,\n name: a.browserBackendCdp,\n tagline: a.browserModeCdpTagline,\n },\n {\n value: 'cloud',\n icon: Cloud,\n name: a.browserBackendCloud,\n tagline: a.browserModeCloudTagline,\n },\n ],\n [a, cloakStatus, extensionStatus, extensionStatusLabel, localStatus],\n );\n\n const selectedOption = modeOptions.find((o) => o.value === form.browserBackend) ?? modeOptions[0];\n const SelectedIcon = selectedOption.icon;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Globe} title={a.cardBrowserTitle} subtitle={a.cardBrowserSubtitle} />\n <div className=\"flex flex-col gap-5\">\n {/* Global toggles */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserEnabled} description={a.desc.browserEnabled}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserEnabled}\n onChange={(e) => update({ browserEnabled: e.target.checked })}\n />\n <span>{a.browserEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserHeadless} description={a.desc.browserHeadless}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserHeadless}\n onChange={(e) => update({ browserHeadless: e.target.checked })}\n />\n <span>{a.browserHeadlessOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserAllowPrivateUrls} description={a.desc.browserAllowPrivateUrls}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserAllowPrivateUrls}\n onChange={(e) => update({ browserAllowPrivateUrls: e.target.checked })}\n />\n <span>{a.browserAllowPrivateOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserCommandTimeout} description={a.desc.browserCommandTimeout}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={5}\n value={form.browserCommandTimeout ?? ''}\n placeholder=\"30\"\n onChange={(e) => {\n const v = e.target.value;\n update({ browserCommandTimeout: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n </div>\n\n {/* Backend mode picker — 5 cards, selected highlighted */}\n <BackendModePicker\n m={a}\n value={form.browserBackend}\n onChange={(next) => update({ browserBackend: next })}\n options={modeOptions}\n />\n\n {/* Section header makes it unambiguous what's being configured below */}\n <div className=\"flex items-center gap-3 border-b border-edge pb-2\">\n <div className=\"flex size-7 items-center justify-center rounded-lg bg-accent/15 text-accent\">\n <SelectedIcon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-semibold text-fg\">\n {a.browserConfiguringHeader.replace('{{mode}}', selectedOption.name)}\n </div>\n <div className=\"text-xs text-fg-muted\">{selectedOption.tagline}</div>\n </div>\n </div>\n\n {/* Selected mode card */}\n {form.browserBackend === 'local' ? (\n <LocalCard\n m={a}\n doctor={doctor.playwright}\n refetch={doctor.refetchPlaywright}\n applyDoctor={doctor.applyPlaywrightDoctor}\n installStream={playwrightInstall}\n />\n ) : null}\n {form.browserBackend === 'cloakbrowser' ? (\n <CloakCard\n m={a}\n doctor={doctor.cloak}\n refetch={doctor.refetchCloak}\n applyDoctor={doctor.applyCloakDoctor}\n installStream={cloakInstall}\n form={{\n cacheDir: form.browserCloakCacheDir,\n binaryPath: form.browserCloakBinaryPath,\n keepOpen: form.browserCloakKeepOpen,\n temporaryProfile: form.browserCloakTemporaryProfile,\n humanize: form.browserHumanize,\n humanPreset: form.browserHumanPreset,\n }}\n onChange={(patch) =>\n update({\n ...(patch.cacheDir !== undefined ? { browserCloakCacheDir: patch.cacheDir } : {}),\n ...(patch.binaryPath !== undefined ? { browserCloakBinaryPath: patch.binaryPath } : {}),\n ...(patch.keepOpen !== undefined ? { browserCloakKeepOpen: patch.keepOpen } : {}),\n ...(patch.temporaryProfile !== undefined\n ? { browserCloakTemporaryProfile: patch.temporaryProfile }\n : {}),\n ...(patch.humanize !== undefined ? { browserHumanize: patch.humanize } : {}),\n ...(patch.humanPreset !== undefined ? { browserHumanPreset: patch.humanPreset } : {}),\n })\n }\n />\n ) : null}\n {form.browserBackend === 'cdp' ? (\n <CdpCard\n m={a}\n cdpUrl={form.browserCdpUrl}\n onCdpUrlChange={(next) => update({ browserCdpUrl: next })}\n launch={doctor.launchCdp}\n stop={doctor.stopCdp}\n listInstances={doctor.listCdpInstances}\n ping={doctor.pingCdp}\n />\n ) : null}\n {form.browserBackend === 'cloud' ? (\n <CloudCard\n m={a}\n form={{\n provider: form.browserCloudProvider,\n apiKey: form.browserCloudApiKey,\n projectId: form.browserCloudProjectId,\n region: form.browserCloudRegion,\n }}\n onChange={(patch) =>\n update({\n ...(patch.provider !== undefined ? { browserCloudProvider: patch.provider } : {}),\n ...(patch.apiKey !== undefined ? { browserCloudApiKey: patch.apiKey } : {}),\n ...(patch.projectId !== undefined ? { browserCloudProjectId: patch.projectId } : {}),\n ...(patch.region !== undefined ? { browserCloudRegion: patch.region } : {}),\n })\n }\n testCloud={doctor.testCloud}\n />\n ) : null}\n {form.browserBackend === 'extension' ? (\n <ExtensionCard\n m={a}\n probe={doctor.extension}\n artifacts={doctor.extensionArtifacts}\n form={{ port: form.browserExtensionPort, host: form.browserExtensionHost }}\n onChange={(patch) =>\n update({\n ...(patch.port !== undefined ? { browserExtensionPort: patch.port } : {}),\n ...(patch.host !== undefined ? { browserExtensionHost: patch.host } : {}),\n })\n }\n startBridge={doctor.startExtensionBridge}\n stopBridge={doctor.stopExtensionBridge}\n installArtifacts={doctor.installExtensionArtifacts}\n refetchArtifacts={doctor.refetchExtensionArtifacts}\n openExtensionChrome={doctor.openExtensionChrome}\n revealExtensionFolder={doctor.revealExtensionFolder}\n />\n ) : null}\n\n {/* Dialog policy (shared across modes) */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserDialogPolicy} description={a.desc.browserDialogPolicy}>\n <select\n className={selectClassName()}\n value={form.browserDialogPolicy}\n onChange={(e) =>\n update({\n browserDialogPolicy: e.target.value as 'must_respond' | 'auto_dismiss' | 'auto_accept',\n })\n }\n >\n <option value=\"must_respond\">{a.browserDialogPolicyMustRespond}</option>\n <option value=\"auto_dismiss\">{a.browserDialogPolicyAutoDismiss}</option>\n <option value=\"auto_accept\">{a.browserDialogPolicyAutoAccept}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserDialogTimeout} description={a.desc.browserDialogTimeout}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.browserDialogTimeout ?? ''}\n placeholder=\"300\"\n onChange={(e) => {\n const v = e.target.value;\n update({ browserDialogTimeout: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n </div>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n\nfunction doctorStatus<T extends { installed: boolean }>(\n d: { kind: 'idle' } | { kind: 'loading' } | { kind: 'ok'; data: T } | { kind: 'error'; message: string },\n): ModeStatusKind | undefined {\n if (d.kind === 'loading') return 'checking';\n if (d.kind === 'error') return 'error';\n if (d.kind === 'ok') return d.data.installed ? 'ready' : 'not_installed';\n return undefined;\n}\n\nfunction statusLabelFor(\n status: ModeStatusKind | undefined,\n a: AgentDefaultsPanelProps['a'],\n): string | undefined {\n if (!status) return undefined;\n return {\n ready: a.browserStatusReady,\n not_installed: a.browserStatusNotInstalled,\n checking: a.browserStatusChecking,\n unknown: a.browserStatusUnknown,\n error: a.browserStatusError,\n }[status];\n}\n\nfunction extensionDoctorStatus(\n d: ReturnType<typeof useBrowserDoctor>['extension'],\n): ModeStatusKind | undefined {\n if (d.kind === 'idle') return undefined;\n if (d.kind === 'loading') return 'checking';\n if (d.kind === 'error') return 'error';\n // ok: connected → ready; running but not connected → \"not_installed\" surrogate (waiting)\n if (d.data.connected) return 'ready';\n if (d.data.running) return 'not_installed';\n return 'not_installed';\n}\n\nfunction extensionStatusLabelFor(\n d: ReturnType<typeof useBrowserDoctor>['extension'],\n a: AgentDefaultsPanelProps['a'],\n): string | undefined {\n if (d.kind === 'idle') return undefined;\n if (d.kind === 'loading') return a.browserStatusChecking;\n if (d.kind === 'error') return a.browserStatusError;\n if (d.data.connected) return a.browserExtensionConnected;\n if (d.data.running) return a.browserExtensionWaiting;\n return a.browserExtensionServerOff;\n}\n","import { Cpu } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { messages } from '@/i18n/messages';\nimport type { SettingsSectionId } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport type { UseAgentDefaultsFormResult } from './use-agent-defaults-form';\n\nexport function AgentDefaultsRouteLayout(props: {\n sectionId: SettingsSectionId;\n intro: string;\n vm: UseAgentDefaultsFormResult;\n children: ReactNode;\n /** Merged tabbed page: single page title, per-tab intro below tabs. */\n tabbed?: boolean;\n}) {\n const { sectionId, intro, vm, children, tabbed = false } = props;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n\n const pageTitle = m.settingsSections[sectionId] ?? sectionId;\n\n if (!vm.hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <div className=\"flex items-start gap-3 rounded-2xl bg-surface-base p-6\">\n <Cpu className=\"mt-0.5 size-5 shrink-0 text-fg-subtle\" strokeWidth={1.75} />\n <div>\n <h1 className=\"text-base font-semibold text-fg\">{pageTitle}</h1>\n <p className=\"mt-1 text-sm text-fg-muted\">{a.needToken}</p>\n </div>\n </div>\n </div>\n );\n }\n\n if (vm.loading) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-8\">\n <div className=\"h-8 w-48 animate-pulse rounded bg-surface-hover\" />\n <div className=\"mt-6 h-32 animate-pulse rounded-xl bg-surface-hover\" />\n <p className=\"mt-4 text-sm text-fg-muted\">{m.logs.loading}</p>\n </div>\n );\n }\n\n if (!vm.form) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <p className=\"text-sm text-fg-muted\">{vm.error ?? vm.fetchError ?? a.loadError}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={() => void vm.mutate()}>\n {m.logs.refresh}\n </Button>\n </div>\n );\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-8\">\n <header className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n <h1 className=\"text-lg font-semibold tracking-tight text-fg\">{pageTitle}</h1>\n {!tabbed ? (\n <>\n <p className=\"mt-1 text-sm leading-relaxed text-fg-muted\">{intro}</p>\n <p className=\"mt-1 text-xs text-fg-subtle\">{a.sectionDesc}</p>\n </>\n ) : (\n <p className=\"mt-1 text-xs text-fg-subtle\">{a.sectionDesc}</p>\n )}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2\">\n {vm.saveOk ? <span className=\"text-sm text-fg-muted\">{a.saved}</span> : null}\n <Button type=\"button\" variant=\"secondary\" disabled={!vm.dirty || vm.saving} onClick={vm.discard}>\n {a.discard}\n </Button>\n <Button type=\"button\" variant=\"primary\" disabled={!vm.dirty || vm.saving} onClick={() => void vm.save()}>\n {vm.saving ? a.saving : a.save}\n </Button>\n </div>\n </header>\n\n {vm.error ? (\n <div\n className=\"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/50 dark:bg-red-950/50 dark:text-red-400\"\n role=\"alert\"\n >\n {vm.error}\n </div>\n ) : null}\n\n <div className=\"flex min-w-0 flex-col gap-5 pb-8\">{children}</div>\n </div>\n );\n}\n","import { useCallback, useMemo, useReducer, useRef, useState } from 'react';\n\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n parseAgentDefaultsFromConfig,\n parseParamsJsonForSave,\n patchAgentDefaults,\n type AgentDefaultsState,\n} from '@/features/settings/config-api';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { createFormDraftReducer, syncFormDraftFromParsed } from '@/lib/settings-form-draft';\nimport { useGatewayStore } from '@/stores/gateway-store';\n\nexport type UseAgentDefaultsFormResult = {\n hasToken: boolean;\n loading: boolean;\n fetchError: string | null;\n form: AgentDefaultsState | null;\n update: (patch: Partial<AgentDefaultsState>) => void;\n dirty: boolean;\n saving: boolean;\n saveOk: boolean;\n error: string | null;\n setError: (e: string | null) => void;\n save: () => Promise<boolean>;\n discard: () => void;\n mutate: ReturnType<typeof useGatewayConfigSwr>['mutate'];\n};\n\nconst agentDefaultsFormReducer = createFormDraftReducer<AgentDefaultsState>();\n\nexport function useAgentDefaultsForm(a: MessageBundle['agentSettings']): UseAgentDefaultsFormResult {\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [formDraft, dispatchForm] = useReducer(agentDefaultsFormReducer, { form: null, baseline: null });\n const form = formDraft.form;\n const baseline = formDraft.baseline;\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [saveOk, setSaveOk] = useState(false);\n const dirtyRef = useRef(false);\n const trackedParsedRef = useRef<AgentDefaultsState | null>(null);\n\n const { data, error: swrError, isLoading, mutate } = useGatewayConfigSwr(hasToken);\n\n const parsed = useMemo(\n () =>\n data?.payload?.config !== undefined ? parseAgentDefaultsFromConfig(data.payload.config) : null,\n [data],\n );\n\n syncFormDraftFromParsed({\n enabled: hasToken,\n parsed,\n dirty: dirtyRef.current,\n trackedParsedRef,\n dispatch: dispatchForm,\n onResetDirty: () => {\n dirtyRef.current = false;\n },\n });\n\n const loading = Boolean(hasToken && isLoading && data === undefined && !swrError);\n const fetchError =\n swrError instanceof Error ? swrError.message : swrError ? String(swrError) : null;\n\n const dirty = useMemo(() => {\n if (!form || !baseline) return false;\n return JSON.stringify(form) !== JSON.stringify(baseline);\n }, [form, baseline]);\n\n const update = useCallback((patch: Partial<AgentDefaultsState>) => {\n dirtyRef.current = true;\n dispatchForm({ type: 'patch', patch });\n }, []);\n\n const save = useCallback(async (): Promise<boolean> => {\n if (!form || saving) return false;\n setSaving(true);\n setError(null);\n setSaveOk(false);\n try {\n try {\n void parseParamsJsonForSave(form.paramsJson);\n } catch (e) {\n setError(\n e instanceof SyntaxError\n ? a.advanced.paramsInvalidJson\n : e instanceof Error\n ? e.message\n : a.advanced.paramsInvalidJson,\n );\n return false;\n }\n await patchAgentDefaults(form);\n dirtyRef.current = false;\n dispatchForm({ type: 'saved', value: form });\n setSaveOk(true);\n void mutate();\n return true;\n } catch (e) {\n setError(e instanceof Error ? e.message : a.saveError);\n return false;\n } finally {\n setSaving(false);\n }\n }, [a.saveError, form, mutate, saving]);\n\n const discard = useCallback(() => {\n dirtyRef.current = false;\n dispatchForm({ type: 'discard' });\n setSaveOk(false);\n setError(null);\n }, []);\n\n return {\n hasToken,\n loading,\n fetchError,\n form,\n update,\n dirty,\n saving,\n saveOk,\n error,\n setError,\n save,\n discard,\n mutate,\n };\n}\n","import { useMemo } from 'react';\n\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsBrowserPanel } from './agent-defaults-panels/browser-panel';\nimport { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nexport function AgentBrowserSettingsPage() {\n const language = useLocaleStore((state) => state.language);\n const messageBundle = messages(language);\n const agentSettings = messageBundle.agentSettings;\n const chatMessages = messageBundle.chat;\n const viewModel = useAgentDefaultsForm(agentSettings);\n\n const panelProps = useMemo(() => {\n if (!viewModel.form) {\n return null;\n }\n return {\n form: viewModel.form,\n update: viewModel.update,\n a: agentSettings,\n chat: chatMessages,\n };\n }, [viewModel.form, viewModel.update, agentSettings, chatMessages]);\n\n return (\n <AgentDefaultsRouteLayout\n sectionId=\"agent-browser\"\n intro={agentSettings.routeIntro.browser}\n vm={viewModel}\n >\n {panelProps ? <AgentDefaultsBrowserPanel {...panelProps} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nexport type SkillsMarketplaceConfigState = {\n provider: string;\n storeBaseUrl: string;\n};\n\nconst DEFAULT_SKILLS_MARKETPLACE: SkillsMarketplaceConfigState = {\n provider: 'skillhub',\n storeBaseUrl: 'https://store.xopc.ai',\n};\n\nconst KNOWN_PROVIDERS = ['store', 'skillhub', 'clawhub'] as const;\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object' && !Array.isArray(v);\n}\n\nexport function normalizeSkillsMarketplaceFromConfig(config: unknown): SkillsMarketplaceConfigState {\n const c = isRecord(config) ? config : {};\n const gw = isRecord(c.gateway) ? c.gateway : {};\n const providerRaw =\n typeof gw.skillsMarketplaceProvider === 'string' ? gw.skillsMarketplaceProvider.trim().toLowerCase() : '';\n const provider = KNOWN_PROVIDERS.includes(providerRaw as (typeof KNOWN_PROVIDERS)[number])\n ? providerRaw\n : providerRaw || DEFAULT_SKILLS_MARKETPLACE.provider;\n return {\n provider,\n storeBaseUrl:\n typeof gw.skillsStoreBaseUrl === 'string' && gw.skillsStoreBaseUrl.trim()\n ? gw.skillsStoreBaseUrl.trim().replace(/\\/+$/, '')\n : DEFAULT_SKILLS_MARKETPLACE.storeBaseUrl,\n };\n}\n\nexport async function patchSkillsMarketplaceConfig(state: SkillsMarketplaceConfigState): Promise<void> {\n const url = state.storeBaseUrl.trim().replace(/\\/+$/, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n throw new Error('Store base URL must start with http:// or https://');\n }\n\n await fetchJson(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n gateway: {\n skillsMarketplaceProvider: state.provider.trim(),\n skillsStoreBaseUrl: url,\n },\n }),\n });\n void revalidateGatewayConfig();\n}\n\nexport function listKnownMarketplaceProviders(): readonly string[] {\n return KNOWN_PROVIDERS;\n}\n","import { Store, Loader2 } from 'lucide-react';\nimport { useCallback, useMemo, useReducer, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n listKnownMarketplaceProviders,\n normalizeSkillsMarketplaceFromConfig,\n patchSkillsMarketplaceConfig,\n type SkillsMarketplaceConfigState,\n} from '@/features/skills/skills-marketplace-config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { settingsInputFocusClass } from '@/lib/form-field-width';\nimport { createFormDraftReducer, syncFormDraftFromParsed } from '@/lib/settings-form-draft';\nimport { cn } from '@/lib/cn';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nfunction inputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nconst marketplaceFormReducer = createFormDraftReducer<SkillsMarketplaceConfigState>();\n\nexport function SkillsMarketplaceConfigSection({ hasToken }: { hasToken: boolean }) {\n const t = messages(useLocaleStore((s) => s.language)).skillsMarketplaceSettings;\n const providers = listKnownMarketplaceProviders();\n const { data, isLoading } = useGatewayConfigSwr(hasToken);\n const parsed = useMemo(\n () =>\n data?.payload?.config !== undefined ? normalizeSkillsMarketplaceFromConfig(data.payload.config) : null,\n [data],\n );\n const [formDraft, dispatchForm] = useReducer(marketplaceFormReducer, { form: null, baseline: null });\n const form = formDraft.form;\n const baseline = formDraft.baseline;\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const dirtyRef = useRef(false);\n const trackedParsedRef = useRef<SkillsMarketplaceConfigState | null>(null);\n\n syncFormDraftFromParsed({\n enabled: hasToken,\n parsed,\n dirty: dirtyRef.current,\n trackedParsedRef,\n dispatch: dispatchForm,\n onResetDirty: () => {\n dirtyRef.current = false;\n },\n });\n\n const dirty = form && baseline && JSON.stringify(form) !== JSON.stringify(baseline);\n const update = useCallback((patch: Partial<SkillsMarketplaceConfigState>) => {\n dirtyRef.current = true;\n dispatchForm({ type: 'patch', patch });\n }, []);\n\n if (!hasToken || !form) {\n return isLoading ? (\n <SettingsFormSection>\n <Loader2 className=\"size-4 animate-spin text-fg-muted\" />\n </SettingsFormSection>\n ) : null;\n }\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Store} title={t.title} subtitle={t.hint} />\n <div className=\"mb-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={!dirty || saving} onClick={() => dispatchForm({ type: 'discard' })}>\n {t.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n disabled={!dirty || saving}\n onClick={() => {\n void (async () => {\n setSaving(true);\n setError(null);\n try {\n await patchSkillsMarketplaceConfig(form);\n dirtyRef.current = false;\n dispatchForm({ type: 'saved', value: form });\n } catch (e) {\n setError(e instanceof Error ? e.message : t.saveError);\n } finally {\n setSaving(false);\n }\n })();\n }}\n >\n {saving ? t.saving : t.save}\n </Button>\n </div>\n {error ? <p className=\"mb-3 text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"mb-1 block text-sm font-medium text-fg\">{t.provider}</label>\n <select className={inputClassName()} value={form.provider} onChange={(e) => update({ provider: e.target.value })}>\n {providers.map((id) => (\n <option key={id} value={id}>\n {id}\n </option>\n ))}\n </select>\n <p className=\"mt-1 text-xs text-fg-subtle\">{t.providerHint}</p>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-fg\">{t.storeBaseUrl}</label>\n <input className={cn(inputClassName(), 'font-mono text-xs')} value={form.storeBaseUrl} onChange={(e) => update({ storeBaseUrl: e.target.value })} />\n <p className=\"mt-1 text-xs text-fg-subtle\">{t.storeBaseUrlHint}</p>\n </div>\n </div>\n </SettingsFormSection>\n );\n}\n","import { Cpu, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\n\nfunction modelFallbackRowKey(modelId: string, index: number, all: string[]): string {\n const trimmed = modelId.trim();\n if (trimmed) return `model:${trimmed}`;\n const emptySlot = all.slice(0, index).filter((id) => !id.trim()).length;\n return `empty:${emptySlot}`;\n}\n\n/**\n * Chat-only fallback chain (`agents.defaults.modelFallbacks`).\n * Rendered on the Agent defaults / Chat tab right under the primary model\n * selector — when the primary model fails after instant retries, xopc\n * walks this list in order.\n */\nexport function AgentDefaultsChatModelFallbacksSection(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cpu} title={a.label.modelFallbacks} subtitle={a.desc.modelFallbacks} />\n <div className=\"mt-4 flex flex-col gap-2\">\n {form.modelFallbacks.map((fb, idx) => (\n <div key={modelFallbackRowKey(fb, idx, form.modelFallbacks)} className=\"flex items-start gap-2\">\n <div className=\"min-w-0 flex-1\">\n <ModelSelector\n value={fb}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => {\n const next = [...form.modelFallbacks];\n next[idx] = modelId;\n update({ modelFallbacks: next });\n }}\n />\n </div>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0\"\n aria-label={a.removeModelFallback}\n onClick={() =>\n update({\n modelFallbacks: form.modelFallbacks.filter((_, j) => j !== idx),\n })\n }\n >\n <Trash2 className=\"size-4\" strokeWidth={1.75} />\n </Button>\n </div>\n ))}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"w-fit gap-1.5\"\n onClick={() => update({ modelFallbacks: [...form.modelFallbacks, ''] })}\n >\n <Plus className=\"size-4 shrink-0\" strokeWidth={1.75} />\n {a.addModelFallback}\n </Button>\n </div>\n </SettingsFormSection>\n );\n}\n","import { Cpu, SlidersHorizontal, Zap } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\nimport { AgentDefaultsChatModelFallbacksSection } from './chat-model-fallbacks-section';\n\nconst THINKING_KEYS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'adaptive'] as const;\n\nexport function AgentDefaultsBasicsPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cpu} title={a.cardModelsTitle} subtitle={a.label.model} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.model} description={a.desc.model}>\n <ModelSelector\n value={form.model}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => update({ model: modelId })}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <AgentDefaultsChatModelFallbacksSection {...props} />\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={SlidersHorizontal} title={a.cardGenerationTitle} subtitle={a.cardGenerationSubtitle} />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.maxTokens} description={a.desc.maxTokens}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.maxTokens}\n min={1}\n onChange={(e) => update({ maxTokens: Number.parseInt(e.target.value, 10) || 0 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.temperature} description={a.desc.temperature}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.temperature}\n min={0}\n max={2}\n step={0.1}\n onChange={(e) => update({ temperature: Number.parseFloat(e.target.value) || 0 })}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Zap} title={a.cardBehaviorTitle} subtitle={a.cardBehaviorSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.thinkingDefault} description={a.desc.thinkingDefault}>\n <select\n className={selectClassName()}\n value={form.thinkingDefault}\n onChange={(e) => update({ thinkingDefault: e.target.value })}\n >\n {THINKING_KEYS.map((k) => (\n <option key={k} value={k}>\n {chat.thinkingLevels[k]}\n </option>\n ))}\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.reasoningDefault} description={a.desc.reasoningDefault}>\n <select\n className={selectClassName()}\n value={form.reasoningDefault}\n onChange={(e) => update({ reasoningDefault: e.target.value })}\n >\n <option value=\"off\">{a.reasoning.off}</option>\n <option value=\"on\">{a.reasoning.on}</option>\n <option value=\"stream\">{a.reasoning.stream}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.verboseDefault} description={a.desc.verboseDefault}>\n <select\n className={selectClassName()}\n value={form.verboseDefault}\n onChange={(e) => update({ verboseDefault: e.target.value })}\n >\n <option value=\"off\">{a.verbose.off}</option>\n <option value=\"on\">{a.verbose.on}</option>\n <option value=\"full\">{a.verbose.full}</option>\n </select>\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { fetchGatewayAgents } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nexport function useBuiltinToolIdsLoad(enabled: boolean, hasToken: boolean) {\n const { data: builtinToolIds, loading } = useAsyncResource(\n async () => {\n const p = await fetchGatewayAgents();\n return Array.isArray(p.builtinToolIds) ? p.builtinToolIds : [];\n },\n [enabled, hasToken],\n { enabled: enabled && hasToken, initial: [] as string[], errorData: [] },\n );\n\n return { builtinToolIds, loading };\n}\n","import { Wrench } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { BuiltinToolsDisableUi, sortedDisableList } from '../builtin-tools-disable-ui';\nimport type { BuiltinToolUiGroupKey } from '../builtin-tool-disable-groups';\nimport { useBuiltinToolIdsLoad } from '../hooks/use-builtin-tool-ids';\n\nexport function AgentDefaultsBuiltinToolsDisableSection(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const agentsTab = m.agentsSettings;\n const token = useGatewayStore((s) => s.token);\n const hasToken = Boolean(token);\n const { builtinToolIds, loading } = useBuiltinToolIdsLoad(true, hasToken);\n\n const disableSet = useMemo(\n () =>\n new Set(\n form.toolsDisable.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n ),\n [form.toolsDisable],\n );\n\n const unknownDisabled = useMemo(() => {\n const builtinSet = new Set(builtinToolIds);\n return form.toolsDisable\n .flatMap((s) => {\n const v = s.trim();\n return v && !builtinSet.has(v) ? [v] : [];\n })\n .toSorted((x, y) => x.localeCompare(y));\n }, [form.toolsDisable, builtinToolIds]);\n\n const onDisableSetChange = useCallback(\n (next: Set<string>) => {\n update({ toolsDisable: sortedDisableList(next) });\n },\n [update],\n );\n\n const groups = agentsTab.toolsDisableGroups;\n const getGroupTitle = useCallback((key: BuiltinToolUiGroupKey) => groups[key], [groups]);\n\n const getToolDescription = useCallback(\n (tid: string) =>\n tid in agentsTab.toolDescriptions\n ? agentsTab.toolDescriptions[tid as keyof typeof agentsTab.toolDescriptions]\n : '',\n [agentsTab.toolDescriptions],\n );\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Wrench} title={x.cardToolsDisableTitle} subtitle={x.cardToolsDisableSubtitle} />\n <AgentDefaultsField label={x.toolsDisableFieldLabel} description={x.toolsDisableHint}>\n <div className=\"flex flex-col gap-3\">\n {!hasToken ? (\n <p className=\"text-xs text-fg-muted\">{a.needToken}</p>\n ) : (\n <BuiltinToolsDisableUi\n mode=\"defaults\"\n builtinToolIds={builtinToolIds}\n loading={loading}\n disableSet={disableSet}\n onDisableSetChange={onDisableSetChange}\n unknownDisabledIds={unknownDisabled}\n getToolDescription={getToolDescription}\n getGroupTitle={getGroupTitle}\n quickActionsDisabled={loading}\n labels={{\n loadingBuiltin: x.toolsDisableLoadingBuiltin,\n emptyBuiltin: x.toolsDisableEmptyBuiltin,\n quickActionsLabel: x.toolsDisableQuickActionsLabel,\n quickEnableAll: x.toolsDisableQuickEnableAll,\n quickDisableAll: x.toolsDisableQuickDisableAll,\n quickReadOnlyWorkspace: x.toolsDisableQuickReadOnlyWorkspace,\n quickHighRiskOff: x.toolsDisableQuickHighRiskOff,\n quickNoOutbound: x.toolsDisableQuickNoOutbound,\n notInBuiltin: x.toolsDisableNotInBuiltin,\n lockedByDefaults: agentsTab.toolsLockedByDefaults,\n }}\n />\n )}\n </div>\n </AgentDefaultsField>\n </SettingsFormSection>\n );\n}\n","import { Code2, FileText } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\nimport { AgentDefaultsBuiltinToolsDisableSection } from './builtin-tools-disable-section';\n\nexport function AgentDefaultsCapabilitiesPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={FileText}\n title={x.cardWebExtractTitle}\n subtitle={x.cardWebExtractSubtitle}\n />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <div className=\"sm:col-span-2\">\n <AgentDefaultsField label={x.webExtractModel} description={x.webExtractModelDesc}>\n <ModelSelector\n value={form.webExtract.model}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => update({ webExtract: { ...form.webExtract, model: modelId } })}\n />\n </AgentDefaultsField>\n </div>\n <AgentDefaultsField label={x.webExtractMaxLength} description={x.webExtractMaxLengthDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.webExtract.maxLength ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n webExtract: {\n ...form.webExtract,\n maxLength: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Code2} title={x.cardDelegateTitle} subtitle={x.cardDelegateSubtitle} />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.delegateEnabled} description={x.delegateEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.delegate.enabled}\n onChange={(e) => update({ delegate: { ...form.delegate, enabled: e.target.checked } })}\n />\n <span>{x.delegateEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.executeCodeEnabled} description={x.executeCodeEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.executeCode.enabled}\n onChange={(e) =>\n update({ executeCode: { ...form.executeCode, enabled: e.target.checked } })\n }\n />\n <span>{x.executeCodeEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <AgentDefaultsBuiltinToolsDisableSection {...props} />\n </div>\n );\n}\n","import { ChevronDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\ntype Props = {\n showLabel: string;\n hideLabel: string;\n children: ReactNode;\n className?: string;\n};\n\nexport function AgentDefaultsAdvancedDetails({ showLabel, hideLabel, children, className }: Props) {\n return (\n <details\n className={cn(\n 'group rounded-lg border border-edge-subtle/80 bg-surface-hover/20 open:pb-3 dark:border-edge-subtle',\n className,\n )}\n >\n <summary className=\"flex cursor-pointer list-none items-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <ChevronDown className=\"size-4 shrink-0 transition-transform group-open:rotate-180\" aria-hidden />\n <span className=\"group-open:hidden\">{showLabel}</span>\n <span className=\"hidden group-open:inline\">{hideLabel}</span>\n </summary>\n <div className=\"flex flex-col gap-5 px-3 pt-3\">{children}</div>\n </details>\n );\n}\n","import { Layers2, Scissors } from 'lucide-react';\n\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsAdvancedDetails } from '../agent-defaults-advanced-details';\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsContextPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Layers2} title={x.cardCompactionTitle} subtitle={x.cardCompactionSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.compactionEnabled} description={x.compactionEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.compaction.enabled}\n onChange={(e) =>\n update({ compaction: { ...form.compaction, enabled: e.target.checked } })\n }\n />\n <span>{x.compactionEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.compactionMode} description={x.compactionModeDesc}>\n <select\n className={selectClassName()}\n value={form.compaction.mode}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n mode: e.target.value as AgentDefaultsState['compaction']['mode'],\n },\n })\n }\n >\n <option value=\"default\">{x.compactionModeDefault}</option>\n <option value=\"safeguard\">{x.compactionModeSafeguard}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.reserveTokens} description={x.reserveTokensDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1000}\n value={form.compaction.reserveTokens}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n reserveTokens: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.triggerThreshold} description={x.triggerThresholdDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0.5}\n max={0.95}\n step={0.05}\n value={form.compaction.triggerThreshold}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n triggerThreshold: Number.parseFloat(e.target.value) || 0.8,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.minMessagesBeforeCompact} description={x.minMessagesBeforeCompactDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.compaction.minMessagesBeforeCompact}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n minMessagesBeforeCompact: Number.parseInt(e.target.value, 10) || 10,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.keepRecentMessages} description={x.keepRecentMessagesDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.compaction.keepRecentMessages}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n keepRecentMessages: Number.parseInt(e.target.value, 10) || 5,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.evictionWindow} description={x.evictionWindowDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0.1}\n max={0.5}\n step={0.05}\n value={form.compaction.evictionWindow}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n evictionWindow: Number.parseFloat(e.target.value) || 0.2,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.retentionWindow} description={x.retentionWindowDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={3}\n max={20}\n value={form.compaction.retentionWindow}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n retentionWindow: Number.parseInt(e.target.value, 10) || 6,\n },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Scissors} title={x.cardPruningTitle} subtitle={x.cardPruningSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.pruningEnabled} description={x.pruningEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.pruning.enabled}\n onChange={(e) => update({ pruning: { ...form.pruning, enabled: e.target.checked } })}\n />\n <span>{x.pruningEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.maxToolResultChars} description={x.maxToolResultCharsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1000}\n value={form.pruning.maxToolResultChars}\n onChange={(e) =>\n update({\n pruning: {\n ...form.pruning,\n maxToolResultChars: Number.parseInt(e.target.value, 10) || 10000,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.headKeepRatio} description={x.headKeepRatioDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n max={1}\n step={0.05}\n value={form.pruning.headKeepRatio}\n onChange={(e) =>\n update({\n pruning: { ...form.pruning, headKeepRatio: Number.parseFloat(e.target.value) || 0.3 },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.tailKeepRatio} description={x.tailKeepRatioDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n max={1}\n step={0.05}\n value={form.pruning.tailKeepRatio}\n onChange={(e) =>\n update({\n pruning: { ...form.pruning, tailKeepRatio: Number.parseFloat(e.target.value) || 0.3 },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Clock } from 'lucide-react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsExpertPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Clock} title={x.cardParamsTitle} subtitle={x.cardParamsSubtitle} />\n <AgentDefaultsField label={x.paramsJson} description={x.paramsJsonDesc}>\n <textarea\n className={cn(inputClassName(), 'min-h-[88px] resize-y font-mono text-xs')}\n value={form.paramsJson}\n placeholder=\"{}\"\n onChange={(e) => update({ paramsJson: e.target.value })}\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Timer } from 'lucide-react';\nimport { Link } from 'react-router-dom';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { pathForTab } from '@/navigation';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsLimitsPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Timer} title={x.cardLimitsTitle} subtitle={x.cardLimitsSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.maxTaskDurationMs} description={x.maxTaskDurationMsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={240}\n step={1}\n value={form.maxTaskDurationMinutes ?? ''}\n placeholder={x.maxTaskDurationPlaceholder}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '') {\n update({ maxTaskDurationMinutes: undefined });\n return;\n }\n const num = Number.parseInt(v, 10);\n if (Number.isNaN(num)) {\n return;\n }\n update({ maxTaskDurationMinutes: Math.min(240, Math.max(1, num)) });\n }}\n />\n </AgentDefaultsField>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.maxRequestsPerTurn} description={x.maxRequestsPerTurnDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={10}\n max={200}\n value={form.maxRequestsPerTurn}\n onChange={(e) => update({ maxRequestsPerTurn: Number.parseInt(e.target.value, 10) || 50 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.maxToolFailuresPerTurn} description={x.maxToolFailuresPerTurnDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={20}\n value={form.maxToolFailuresPerTurn}\n onChange={(e) => update({ maxToolFailuresPerTurn: Number.parseInt(e.target.value, 10) || 3 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.maxToolIterations} description={a.desc.maxToolIterations}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.maxToolIterations}\n min={1}\n onChange={(e) => update({ maxToolIterations: Number.parseInt(e.target.value, 10) || 0 })}\n />\n </AgentDefaultsField>\n </div>\n </div>\n </SettingsFormSection>\n <p className=\"text-xs text-fg-muted\">\n <Link to={pathForTab('settingsGoals')} className=\"font-medium text-accent-fg hover:underline\">\n {x.goalsCheckLink}\n </Link>\n <span className=\"mt-1 block\">{x.goalsCheckLinkHint}</span>\n </p>\n </div>\n );\n}\n","import { Brain, Search, Sparkles } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsAdvancedDetails } from '../agent-defaults-advanced-details';\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsMemoryPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Brain} title={x.cardMemoryTitle} subtitle={x.cardMemorySubtitle} />\n <div className=\"flex flex-col gap-5\">\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.memoryEnabled} description={x.memoryEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.enabled}\n onChange={(e) => update({ memory: { ...form.memory, enabled: e.target.checked } })}\n />\n <span>{x.memoryEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.useEnhancedSystem} description={x.useEnhancedSystemDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.useEnhancedSystem}\n onChange={(e) =>\n update({ memory: { ...form.memory, useEnhancedSystem: e.target.checked } })\n }\n />\n <span>{x.useEnhancedSystemOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.userProfileEnabled} description={x.userProfileEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.userProfileEnabled}\n onChange={(e) =>\n update({ memory: { ...form.memory, userProfileEnabled: e.target.checked } })\n }\n />\n <span>{x.userProfileEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.memoryProvider} description={x.memoryProviderDesc}>\n <select\n className={selectClassName()}\n value={form.memory.provider}\n onChange={(e) =>\n update({\n memory: {\n ...form.memory,\n provider: e.target.value as AgentDefaultsState['memory']['provider'],\n },\n })\n }\n >\n <option value=\"\">{x.memoryProviderUnset}</option>\n <option value=\"none\">none</option>\n <option value=\"stub\">stub</option>\n </select>\n </AgentDefaultsField>\n </div>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.injectionFrequency} description={x.injectionFrequencyDesc}>\n <select\n className={selectClassName()}\n value={form.memory.injectionFrequency}\n onChange={(e) =>\n update({\n memory: {\n ...form.memory,\n injectionFrequency: e.target.value as AgentDefaultsState['memory']['injectionFrequency'],\n },\n })\n }\n >\n <option value=\"\">{x.injectionFrequencyUnset}</option>\n <option value=\"every-turn\">{x.injectionEveryTurn}</option>\n <option value=\"first-turn\">{x.injectionFirstTurn}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.memoryCharLimit} description={x.memoryCharLimitDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.memoryCharLimit ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n memoryCharLimit: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.userCharLimit} description={x.userCharLimitDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.userCharLimit ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n userCharLimit: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.contextCadence} description={x.contextCadenceDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.contextCadence ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n contextCadence: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.dialecticCadence} description={x.dialecticCadenceDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.dialecticCadence ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n dialecticCadence: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Search} title={x.cardSessionSearchTitle} subtitle={x.cardSessionSearchSubtitle} />\n <AgentDefaultsField label={x.sessionSearchSummaryModel} description={x.sessionSearchSummaryModelDesc}>\n <ModelSelector\n value={form.sessionSearch.summaryModel}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) =>\n update({ sessionSearch: { ...form.sessionSearch, summaryModel: modelId } })\n }\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Sparkles} title={x.cardReviewTitle} subtitle={x.cardReviewSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.reviewEnabled} description={x.reviewEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.backgroundReview.enabled}\n onChange={(e) =>\n update({ backgroundReview: { ...form.backgroundReview, enabled: e.target.checked } })\n }\n />\n <span>{x.reviewEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.memoryNudgeInterval} description={x.memoryNudgeIntervalDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.backgroundReview.memoryNudgeInterval}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n memoryNudgeInterval: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.skillNudgeInterval} description={x.skillNudgeIntervalDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.backgroundReview.skillNudgeInterval}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n skillNudgeInterval: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxToolRounds} description={x.reviewMaxToolRoundsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={32}\n value={form.backgroundReview.maxToolRounds}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxToolRounds: Number.parseInt(e.target.value, 10) || 8,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxHistoryMessages} description={x.reviewMaxHistoryMessagesDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={10}\n max={200}\n value={form.backgroundReview.maxHistoryMessages}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxHistoryMessages: Number.parseInt(e.target.value, 10) || 80,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxDurationMs} description={x.reviewMaxDurationMsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={30}\n max={600}\n step={1}\n value={Math.round((form.backgroundReview.maxDurationMs ?? 120_000) / 1000)}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxDurationMs: (Number.parseInt(e.target.value, 10) || 120) * 1000,\n },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Library } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport { messages } from '@/i18n/messages';\nimport { pathForTab } from '@/navigation';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { agentDefaultsQuickActionButtonClass } from '../defaults-field-styles';\nimport { useSkillsCatalogLoad } from '../hooks/use-agents-skills-catalog';\n\nfunction rowId(s: SkillCatalogRow): string {\n return (s.name || s.directoryId).trim();\n}\n\nfunction allowlistFromSelection(selected: Set<string>, catalogIds: string[]): string[] {\n const out: string[] = [];\n for (const id of catalogIds) {\n if (selected.has(id)) out.push(id);\n }\n const extra = [...selected].filter((id) => !catalogIds.includes(id)).sort();\n return [...out, ...extra];\n}\n\nexport function AgentDefaultsSkillsAllowlistPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const agentsTab = m.agentsSettings;\n const token = useGatewayStore((s) => s.token);\n const hasToken = Boolean(token);\n const { catalogForPick, skillsCatalogLoading } = useSkillsCatalogLoad(true, hasToken);\n\n const catalogIds = useMemo(() => catalogForPick.map(rowId), [catalogForPick]);\n\n const restrictMode = form.skillsAllowlist.length > 0;\n\n const allowSet = useMemo(\n () =>\n new Set(\n form.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n ),\n [form.skillsAllowlist],\n );\n\n const unknownAllowlistIds = useMemo(\n () => form.skillsAllowlist.filter((id) => id.trim() && !catalogIds.includes(id.trim())),\n [form.skillsAllowlist, catalogIds],\n );\n\n const syntheticUnknownRows: SkillCatalogRow[] = useMemo(\n () => unknownAllowlistIds.map((id) => ({ name: id.trim(), directoryId: id.trim() })),\n [unknownAllowlistIds],\n );\n\n const rowsToRender = useMemo(\n () => [...syntheticUnknownRows, ...catalogForPick],\n [syntheticUnknownRows, catalogForPick],\n );\n\n const setAllSkills = useCallback(() => {\n update({ skillsAllowlist: [] });\n }, [update]);\n\n const setRestrictWithAllCatalogSelected = useCallback(() => {\n update({ skillsAllowlist: [...catalogIds] });\n }, [update, catalogIds]);\n\n const toggleId = useCallback(\n (id: string, checked: boolean) => {\n const selected = new Set(\n form.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n );\n if (checked) {\n selected.add(id);\n } else {\n selected.delete(id);\n }\n if (selected.size === 0) {\n update({ skillsAllowlist: [] });\n return;\n }\n update({ skillsAllowlist: allowlistFromSelection(selected, catalogIds) });\n },\n [form.skillsAllowlist, catalogIds, update],\n );\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Library} title={x.cardSkillsTitle} subtitle={x.cardSkillsSubtitle} />\n <AgentDefaultsField label={x.skillsAllowlist} description={x.skillsAllowlistDesc}>\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n onClick={setAllSkills}\n >\n {x.skillsAllowlistModeAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={!restrictMode && catalogIds.length === 0}\n onClick={() => {\n if (restrictMode) {\n return;\n }\n setRestrictWithAllCatalogSelected();\n }}\n >\n {x.skillsAllowlistModeRestrict}\n </Button>\n </div>\n <Link\n to={pathForTab('skills')}\n className=\"shrink-0 text-xs font-medium text-accent-fg hover:underline\"\n >\n {agentsTab.skillsLibraryLink}\n </Link>\n </div>\n\n {!hasToken ? (\n <p className=\"text-xs text-fg-muted\">{a.needToken}</p>\n ) : skillsCatalogLoading ? (\n <p className=\"text-sm text-fg-muted\">{agentsTab.skillsCatalogLoading}</p>\n ) : rowsToRender.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{agentsTab.skillsEmptyCatalog}</p>\n ) : (\n <div\n className={cn(\n 'max-h-[min(50vh,22rem)] overflow-y-auto overscroll-contain pr-0.5',\n !restrictMode && 'opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {rowsToRender.flatMap((s) => {\n const id = rowId(s);\n if (!id) return [];\n const on = restrictMode && allowSet.has(id);\n const desc = typeof s.description === 'string' ? s.description.trim() : '';\n const descLine = desc || agentsTab.skillsNoDescription;\n const unknown = !catalogIds.includes(id);\n return [\n <li\n key={id}\n className=\"h-16 shrink-0 overflow-hidden rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 dark:border-edge-subtle\"\n >\n <label className=\"flex h-full cursor-pointer items-center gap-3 text-sm\">\n <input\n type=\"checkbox\"\n className=\"shrink-0 rounded border-edge\"\n checked={on}\n disabled={!restrictMode}\n onChange={() => toggleId(id, !on)}\n aria-label={id}\n />\n <div className=\"min-w-0 flex-1 overflow-hidden\">\n <div className=\"truncate font-mono text-xs font-medium text-fg\" title={id}>\n {id}\n {unknown ? (\n <span className=\"ml-1.5 font-sans text-[10px] font-normal text-fg-muted\">\n ({x.skillsAllowlistNotInCatalog})\n </span>\n ) : null}\n </div>\n <p\n className={cn(\n 'mt-0.5 truncate text-xs leading-tight text-fg-muted',\n !desc && 'italic text-fg-subtle',\n )}\n title={descLine}\n >\n {descLine}\n </p>\n </div>\n </label>\n </li>,\n ];\n })}\n </ul>\n </div>\n )}\n </div>\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { ScrollText } from 'lucide-react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsSystemPromptPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={ScrollText}\n title={x.cardSystemPromptTitle}\n subtitle={x.cardSystemPromptSubtitle}\n />\n <AgentDefaultsField label={x.systemPromptOverride} description={x.systemPromptOverrideDesc}>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n value={form.systemPromptOverride}\n placeholder={x.systemPromptPlaceholder}\n onChange={(e) => update({ systemPromptOverride: e.target.value })}\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Folder } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { DirectoryPickerPathField } from '@/features/fs/directory-picker-path-field';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { DEFAULT_AGENT_WORKSPACE } from '@/features/settings/suggest-agent-workspace';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { agentDefaultsQuickActionButtonClass, inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsWorkspacePanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const workspaceTrimmed = form.workspace.trim();\n const isDefaultWorkspace = workspaceTrimmed === DEFAULT_AGENT_WORKSPACE;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Folder} title={a.cardWorkspaceTitle} subtitle={a.cardWorkspaceSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.workspace} description={a.desc.workspace}>\n <DirectoryPickerPathField\n value={form.workspace}\n onChange={(path) => update({ workspace: path })}\n wd={chat.workingDirectory}\n placeholder={chat.workingDirectory.notSet}\n inputClassName={inputClassName()}\n trailing={\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={isDefaultWorkspace}\n title={DEFAULT_AGENT_WORKSPACE}\n onClick={() => update({ workspace: DEFAULT_AGENT_WORKSPACE })}\n >\n {a.setDefaultWorkspace}\n </Button>\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.mediaMaxMb} description={a.desc.mediaMaxMb}>\n <input\n type=\"number\"\n min={1}\n step={1}\n className={inputClassName()}\n value={form.mediaMaxMb ?? ''}\n placeholder=\"20\"\n onChange={(e) => {\n const v = e.target.value;\n update({ mediaMaxMb: v === '' ? undefined : Number(v) });\n }}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { SkillsMarketplaceConfigSection } from '@/features/skills/skills-marketplace-config-section';\nimport { messages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport type { AgentDefaultsPanelProps } from './agent-defaults-panel-props';\nimport { AgentDefaultsBasicsPanel } from './agent-defaults-panels/basics-panel';\nimport { AgentDefaultsCapabilitiesPanel } from './agent-defaults-panels/capabilities-panel';\nimport { AgentDefaultsContextPanel } from './agent-defaults-panels/context-panel';\nimport { AgentDefaultsExpertPanel } from './agent-defaults-panels/expert-panel';\nimport { AgentDefaultsLimitsPanel } from './agent-defaults-panels/limits-panel';\nimport { AgentDefaultsMemoryPanel } from './agent-defaults-panels/memory-panel';\nimport { AgentDefaultsSkillsAllowlistPanel } from './agent-defaults-panels/skills-allowlist-panel';\nimport { AgentDefaultsSystemPromptPanel } from './agent-defaults-panels/system-prompt-panel';\nimport { AgentDefaultsWorkspacePanel } from './agent-defaults-panels/workspace-panel';\nimport {\n AGENT_DEFAULTS_TABS,\n type AgentDefaultsTabId,\n parseAgentDefaultsTab,\n} from './agent-defaults-tabs';\nimport { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nfunction tabLabel(a: ReturnType<typeof messages>['agentSettings'], tab: AgentDefaultsTabId): string {\n return a.defaultsTabs[tab];\n}\n\nfunction tabIntro(a: ReturnType<typeof messages>['agentSettings'], tab: AgentDefaultsTabId): string {\n switch (tab) {\n case 'chat':\n return a.routeIntro.chat;\n case 'workspace':\n return a.routeIntro.workspace;\n case 'runtime':\n return a.routeIntro.runtime;\n case 'context':\n return a.routeIntro.context;\n case 'memory':\n return a.routeIntro.memory;\n case 'tools':\n return a.routeIntro.tools;\n case 'skills':\n return a.routeIntro.skills;\n case 'system-prompt':\n return a.routeIntro.systemPrompt;\n }\n}\n\nfunction AgentDefaultsTabPanel({\n tab,\n pp,\n hasToken,\n}: {\n tab: AgentDefaultsTabId;\n pp: AgentDefaultsPanelProps;\n hasToken: boolean;\n}) {\n switch (tab) {\n case 'chat':\n return <AgentDefaultsBasicsPanel {...pp} />;\n case 'workspace':\n return <AgentDefaultsWorkspacePanel {...pp} />;\n case 'runtime':\n return <AgentDefaultsLimitsPanel {...pp} />;\n case 'context':\n return <AgentDefaultsContextPanel {...pp} />;\n case 'memory':\n return <AgentDefaultsMemoryPanel {...pp} />;\n case 'tools':\n return (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsCapabilitiesPanel {...pp} />\n <AgentDefaultsExpertPanel {...pp} />\n </div>\n );\n case 'skills':\n return (\n <div className=\"flex flex-col gap-8\">\n <SkillsMarketplaceConfigSection hasToken={hasToken} />\n <AgentDefaultsSkillsAllowlistPanel {...pp} />\n </div>\n );\n case 'system-prompt':\n return <AgentDefaultsSystemPromptPanel {...pp} />;\n }\n}\n\nexport function AgentDefaultsTabbedPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n const chat = m.chat;\n const [searchParams, setSearchParams] = useSearchParams();\n\n const activeTab = parseAgentDefaultsTab(searchParams.get('tab'));\n const vm = useAgentDefaultsForm(a);\n\n const pp = useMemo(() => {\n if (!vm.form) return null;\n return { form: vm.form, update: vm.update, a, chat };\n }, [vm.form, vm.update, a, chat]);\n\n const setActiveTab = useCallback(\n (tab: AgentDefaultsTabId) => {\n setSearchParams(\n (prev) => {\n const next = new URLSearchParams(prev);\n if (tab === 'chat') next.delete('tab');\n else next.set('tab', tab);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const intro = tabIntro(a, activeTab);\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-defaults\" intro=\"\" vm={vm} tabbed>\n <div\n className=\"flex flex-col gap-5\"\n role=\"tablist\"\n aria-label={a.defaultsTabsAria}\n onKeyDown={(e) => {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;\n e.preventDefault();\n const idx = AGENT_DEFAULTS_TABS.indexOf(activeTab);\n const delta = e.key === 'ArrowRight' ? 1 : -1;\n const next = AGENT_DEFAULTS_TABS[(idx + delta + AGENT_DEFAULTS_TABS.length) % AGENT_DEFAULTS_TABS.length];\n setActiveTab(next);\n }}\n >\n <div className=\"-mx-1 flex gap-1 overflow-x-auto px-1 pb-1\">\n {AGENT_DEFAULTS_TABS.map((tab) => {\n const selected = tab === activeTab;\n return (\n <button\n key={tab}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n id={`agent-defaults-tab-${tab}`}\n aria-controls={`agent-defaults-panel-${tab}`}\n className={cn(\n 'shrink-0 rounded-lg px-3 py-2 text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent',\n interaction.press,\n selected\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover hover:text-fg',\n )}\n onClick={() => setActiveTab(tab)}\n >\n {tabLabel(a, tab)}\n </button>\n );\n })}\n </div>\n\n <p className=\"text-sm leading-relaxed text-fg-muted\">{intro}</p>\n\n <div\n role=\"tabpanel\"\n id={`agent-defaults-panel-${activeTab}`}\n aria-labelledby={`agent-defaults-tab-${activeTab}`}\n className=\"min-w-0\"\n >\n {pp ? <AgentDefaultsTabPanel tab={activeTab} pp={pp} hasToken={vm.hasToken} /> : null}\n </div>\n </div>\n </AgentDefaultsRouteLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents-DN3vr8pb.js","names":["Dialog","Button","GatewayAgentRow","AgentsSettingsMessages","cn","AgentDeleteConfirmDialogProps","open","onOpenChange","busy","deletePurge","deleteTarget","deleteConfirmText","onDeleteConfirmTextChange","value","onConfirm","onCancel","a","Pick","AgentDeleteConfirmDialog","t0","$","_c","t1","Symbol","for","t2","t3","purgeDisk","removeFromConfig","t4","t5","confirmDeletePurge","confirmDelete","t6","t7","purgeConfirmHint","purgeConfirmLabel","purgeConfirmPlaceholder","replace","id","e_0","e","target","t8","createModalCancel","t9","undefined","t10","trim","toLowerCase","t11","t12","t13","t14","_temp","t15","preventDefault","Clock","FileText","Plug","Puzzle","User","UserCircle","Wrench","cn","interaction","AgentsSettingsMessages","AgentPanel","mainNav","id","labelKey","icon","advancedNav","AgentsEditorSidebar","props","$","_c","a","panel","onPanelChange","t0","label","Icon","press","item","t1","editorNavAria","t2","map","t3","id_0","t4","navAdvanced","t5","t6","id_1","labelKey_0","icon_0","t7","Dialog","X","ReactNode","Button","AgentsSettingsMessages","cn","ghostIconButton","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","SettingsShellLayerProvider","AgentsEditorSidebar","AgentPanel","AgentsEditorModal","props","$","_c","open","onOpenChange","a","title","subtitle","panel","onPanelChange","onFooterSave","footerSaveDisabled","footerSavedFlash","busy","children","t0","Symbol","for","t1","t2","t3","t4","t5","t6","t7","closeDialogAria","t8","t9","t10","t11","footerSaveNotApplicable","personaSaved","t12","t13","t14","save","t15","t16","t17","t18","_temp","t19","e","preventDefault","GatewayConfigBinding","CronJob","SessionChatId","cn","settingsInputFocusClass","AgentPanel","agentsSettingsInputClass","jobMatchesAgent","job","agentId","defaultId","raw","trim","toLowerCase","matchSummary","m","parts","channel","accountId","peerKind","peerId","filter","x","length","join","buildNewBindingMatch","customPeer","sessionIdx","sessions","ch","custom","s","peer","chatId","Link2","RefreshCw","Button","GatewayConfigBinding","SettingsFormSection","SettingsFormSectionHeader","ChannelStatus","SessionChatId","formatRecipientOptionLabel","selectControlBaseClass","agentsSettingsInputClass","matchSummary","AgentsSettingsMessages","MessageBundle","cn","channelsPeerIdSelectClass","LastActiveLabels","AgentChannelsTab","props","$","_c","a","busy","bindingsLoading","agentBindings","onRemoveBinding","onAddBinding","channelStatuses","channelsStatusLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","sessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","onRefreshSessions","lastActiveLabels","selectRecipient","showPeerForm","length","t0","channelsHint","channelsTitle","t1","channelsLoading","channelsNone","removeBinding","map","b","match","channel","t2","channelLabel","channelsDisabledSuffix","channelsLoadingChannels","channelsManualChannelHint","e","target","value","e_0","ch","name","enabled","t3","channelsCustomPeerHint","channelsCustomPeerPlaceholder","channelsLoadingSessions","channelsNoSessionsHint","channelsPeerAny","channelsPeerFromSessions","channelsRefreshSessions","channelsRefreshSessionsHint","channelsSessionLabel","peerIdLabel","trim","String","Boolean","e_1","v","Number","item","idx","chatId","e_2","e_3","v_0","item_0","t4","t5","addBinding","t6","t7","formatCronExpressionLabel","ScheduleBadgeLabels","formatIntervalMsLabel","IntervalPresetLabels","ScheduleSummaryShell","locale","className","CronScheduleSummaryProps","kind","expression","labels","timezone","nextRun","IntervalScheduleSummaryProps","valueMs","presetLabels","ScheduleSummaryProps","ScheduleSummary","props","$","_c","t0","text","t1","AlarmClock","GatewayAgentRow","cronJobBodyText","CronJob","ScheduleSummary","SettingsFormSection","SettingsFormSectionHeader","cn","AgentsSettingsMessages","messages","useLocaleStore","agentsSettingsInputClass","AgentCronTab","props","$","_c","a","data","busy","cronLoading","agentCronJobs","onSetCronJobAgent","language","_temp","t0","m","localeTag","scheduleBadgeLabels","cron","scheduleBadge","t1","cronHint","cronTitle","t2","cronAgentClear","cronAgentDefault","cronColAgent","cronColMessage","cronColSchedule","cronColSession","cronNone","length","map","job","usesDefaultAgent","agentId","trim","value","toLowerCase","id","schedule","timezone","next_run","sessionTarget","e","target","agents","_temp2","t3","ag","s","Eye","SquarePen","MarkdownEditor","MarkdownView","cn","interaction","AgentsSettingsMessages","useThemeStore","agentsSettingsInputClass","AgentFilesTab","props","$","_c","a","filesLoading","files","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","isDark","_temp","t0","filesHint","t1","filesAutoSaveHint","filesEmpty","filesMarkdownEdit","filesMarkdownPreview","filesSavingStatus","missing","navCoreFiles","pickFile","map","f","name","press","t2","s","resolved","ReactNode","useDirectoryPicker","DirectoryPickerTrigger","WorkingDirectoryPickerModal","MessageBundle","cn","Props","value","onChange","path","Promise","disabled","wd","placeholder","inputClassName","trailing","DirectoryPickerPathField","t0","$","_c","t1","initialPath","onPicked","picker","t2","trim","trimmed","pickTitle","chooseFolder","notSet","selectWorkingDirectory","t3","t4","picking","t5","e","target","t6","pathInputPlaceholder","t7","t8","t9","pick","t10","t11","t12","confirmPick","hasNativePicker","modalOpen","setModalOpen","undefined","t13","Link2","Link","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","cn","InheritanceRow","t0","$","_c","label","mode","value","inheritedFrom","inheritLabel","overrideLabel","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","AgentConfigInheritanceSummary","props","a","defaultModel","defaultWorkspace","agentModel","agentWorkspace","settingsPath","undefined","inh","inheritance","trim","modelInherits","length","workspaceInherits","displayModel","unset","displayWorkspace","editDefaultsLink","subtitle","title","inheritsValue","replace","badgeInherit","badgeOverride","modelLabel","workspaceLabel","t11","t12","Popover","Upload","useCallback","useMemo","useRef","useState","Button","cn","interaction","AgentsSettingsMessages","deleteAgentAvatarFile","uploadAgentAvatarFile","AgentAvatarDisplay","DICEBEAR_MORE_SEEDS","DICEBEAR_ROW_SEEDS","DICEBEAR_STYLE_ORDER","XOPC_CUSTOM_AVATAR","buildXopcDicebearValue","dicebearToDataUri","isDicebearStyleId","parseXopcDicebearValue","DicebearStyleId","styleLabel","style","a","avatarStyleAdventurer","avatarStyleRobot","avatarStyleLorelei","avatarStyleThumbs","avatarStyleFunEmoji","AgentAvatarPicker","props","agentId","value","onChange","next","id","fileRef","HTMLInputElement","uploadBusy","setUploadBusy","uploadError","setUploadError","moreOpen","setMoreOpen","activeStyle","p","trim","styleId","pickDicebear","seed","onFile","e","React","ChangeEvent","file","target","files","err","code","Error","message","avatarTooLarge","avatarInvalidImage","avatarUploadFailed","isRowSeedActive","Boolean","avatarPickerTitle","ev","current","click","avatarUploading","avatarUploadCustom","map","press","avatarMore","personaAvatar","IdentityFields","name","creature","emoji","avatar","IDENTITY_DEFAULTS","parseIdentityMarkdown","content","fields","trim","fieldMap","Record","line","split","match","label","toLowerCase","fieldKey","value","test","serializeIdentityMarkdown","lines","join","UserFields","callName","pronouns","timezone","notes","USER_DEFAULTS","parseUserMarkdown","contextStartIndex","i","length","contextLines","slice","contextText","replace","serializeUserMarkdown","push","SoulTemplateId","SoulTemplate","id","labelEn","labelZh","SOUL_TEMPLATES","stripFrontMatterForParsing","trimmed","trimStart","startsWith","endIndex","indexOf","detectSoulTemplate","stripped","template","templateStripped","matchCount","countDistinctTemplatePhraseHits","SOUL_TEMPLATE_PHRASE_PATTERNS","Partial","RegExp","professional","casual","geeky","text","templateId","pattern","re","source","hits","Set","RegExpExecArray","exec","add","size","TIMEZONE_OPTIONS","const","detectBrowserTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","PRONOUNS_PRESETS","CREATURE_PRESETS","Dialog","useCallback","AlertTriangle","Cog","Eye","Pencil","Sparkles","Trash2","User","X","Button","MarkdownEditor","MarkdownView","ModelSelector","DirectoryPickerPathField","GatewayAgentRow","OverviewProfileDraft","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","ChatMessages","cn","ghostIconButton","interaction","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","useLocaleStore","useThemeStore","AgentConfigInheritanceSummary","AgentAvatarDisplay","AgentAvatarPicker","agentsSettingsInputClass","CREATURE_PRESETS","SOUL_TEMPLATES","SoulTemplateId","AgentOverviewTab","props","$","_c","a","chat","selected","busy","editName","setEditName","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","hideInlineSave","profileMarkdownLoading","profileDraft","updateIdentity","handleSoulTemplateChange","handleSoulContentChange","setAvatarDialogOpen","toggleSoulPreviewMode","defaultModel","t0","defaultWorkspace","t1","undefined","language","_temp","isDark","_temp2","t2","identity","name","creature","emoji","avatar","soulTemplate","soulCustomContent","soulEditorNonce","soulPreviewMode","avatarDialogOpen","t3","en","zh","locLabel","t4","Symbol","for","inputClass","t5","selectAgentHint","t6","id","t7","t8","avatarOpenSettingsAria","onClick","ariaLabel","t9","setDefault","isDefault","t10","personaSectionIdentity","personaSectionIdentityHint","t11","t12","t13","avatarPickerTitle","t14","t15","t16","closeDialogAria","t17","t18","avatarRowHint","t19","next","t20","t21","_temp3","t22","t23","displayName","t24","e_0","e","target","value","t25","personaNamePlaceholder","t26","t27","personaEmoji","t28","e_1","t29","personaEmojiPlaceholder","t30","t31","agentDescription","t32","t33","e_2","t34","agentDescriptionPlaceholder","t35","t36","personaCreature","t37","some","p","t38","e_3","t39","map","preset","labelEn","labelZh","t40","t41","t42","t43","personaCreaturePlaceholder","p_0","e_4","t44","t45","t46","t47","editAgent","editAgentHint","t48","modelPrimary","t49","t50","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t51","modelClear","trim","t52","t53","t54","workspacePath","t55","workingDirectory","t56","notSet","t57","t58","t59","t60","t61","save","t62","t63","loading","personaSectionSoul","personaSectionSoulHint","personaSoulCustomEdit","personaSoulEdit","personaSoulPreview","personaSoulTemplate","template","pressCard","t64","purgeDisk","removeFromConfig","t65","preventDefault","s_0","s","resolved","Info","UserCircle","MutableRefObject","useCallback","useEffect","useReducer","useRef","SettingsFormSection","SettingsFormSectionHeader","fetchAgentProfileFileContent","saveAgentProfileFileContent","cn","interaction","useAsyncResource","AgentsSettingsMessages","useLocaleStore","agentsSettingsInputClass","UserFields","parseUserMarkdown","serializeUserMarkdown","TIMEZONE_OPTIONS","PRONOUNS_PRESETS","detectBrowserTimezone","ProfileTabProps","a","agentId","saveRef","Promise","onDirtyChange","dirty","ProfileFormState","user","showCustomPronouns","showCustomTimezone","customTimezone","snapshot","ProfileFormAction","type","patch","Partial","value","profileFormFromUser","Pick","isKnownPronouns","pronouns","some","p","isKnownTimezone","tz","timezone","Boolean","profileFormReducer","state","action","extras","JSON","stringify","emptyUser","callName","notes","initialProfileForm","AgentProfileTabBody","language","s","form","dispatchForm","agentIdRef","current","onDirtyChangeRef","userResource","userMd","catch","parsedUser","detected","enabled","initial","errorData","syncedAgentRef","loading","data","saveFile","content","userRef","updateUser","next","handleTimezoneChange","handleCustomTimezoneChange","handleDetectTimezone","isKnown","timezoneSelectValue","locLabel","en","zh","inputClass","personaSectionUserHint","personaSectionUser","personaCallName","e","target","personaCallNamePlaceholder","personaPronouns","personaPronounsPlaceholder","map","preset","labelEn","labelZh","personaTimezone","personaTimezoneCustom","press","personaTimezoneDetect","personaNotes","personaNotesPlaceholder","personaMemoryNote","AgentProfileTab","props","$","_c","t0","BookOpen","Dispatch","SetStateAction","Link","Button","GatewayAgentRow","SkillCatalogRow","SettingsFormSection","SettingsFormSectionHeader","cn","AgentsSettingsMessages","pathForTab","AgentSkillsTab","props","$","_c","a","selected","busy","skillsCatalogLoading","catalogForPick","skillsInherit","setSkillsInherit","skillsPick","setSkillsPick","onSaveSkills","hideInlineSave","t0","skills","effectiveAllowlist","isCheckedInheritMode","id","eff","undefined","length","includes","t1","initialPickForCustomize","eff_0","Set","map","_temp","t2","skillsHint","skillsTitle","t3","t4","t5","t6","skillsCustomize","t7","t8","Symbol","for","t9","skillsLibraryLink","t10","t11","defaults","join","t12","skillsDefaultsLabel","t13","skillsAllFromCatalog","t14","skillsEffectiveLabel","t15","skillsEmptyCatalog","skillsNoDescription","s_0","id_0","s","name","directoryId","on","has","desc","description","trim","descLine","prev","next","delete","add","t16","skillsSave","t17","BUILTIN_TOOL_UI_GROUPS","key","toolIds","const","BuiltinToolUiGroupKey","ASSIGNED","Set","flatMap","g","map","id","String","miscBuiltinToolIds","builtinToolIds","filter","has","sort","x","y","localeCompare","nativeSelectMaxWidthClass","selectControlBaseClass","settingsInputFocusClass","cn","inputClassName","selectClassName","agentDefaultsQuickActionButtonClass","useCallback","useMemo","Button","cn","BUILTIN_TOOL_UI_GROUPS","miscBuiltinToolIds","BuiltinToolUiGroupKey","agentDefaultsQuickActionButtonClass","PRESET_READ_ONLY_WORKSPACE","const","PRESET_HIGH_RISK","PRESET_NO_OUTBOUND","sortedDisableList","ids","Set","Array","from","flatMap","s","v","trim","toSorted","x","y","localeCompare","BuiltinToolsDisableUiMode","BuiltinToolsDisableUiLabels","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","BuiltinToolsDisableUiProps","mode","builtinToolIds","loading","disableSet","onDisableSetChange","next","defaultsDisableSet","unknownDisabledIds","getToolDescription","toolId","getGroupTitle","groupKey","labels","quickActionsDisabled","BuiltinToolsDisableUi","props","$","_c","t0","t1","t2","undefined","t3","allowedBuiltin","t4","defaultsLock","t5","tid","enabled","has","delete","add","setToolEnabled","t6","next_0","id","applyDisableExactly","t7","enableAllTools","t8","next_1","disableAllListed","t9","misc","sections","length","t10","_temp","t11","key","push","g","ids_0","toolIds","filter","id_0","groupsContent","hasRows","some","_temp2","qaBusy","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","map","t27","ids_1","tid_0","unknown","lockedByDefault","disabledByScope","checked","desc","Wrench","useCallback","useMemo","Dispatch","SetStateAction","Button","GatewayAgentRow","BuiltinToolUiGroupKey","BuiltinToolsDisableUi","SettingsFormSection","SettingsFormSectionHeader","messages","AgentsSettingsMessages","useLocaleStore","AgentToolsTab","props","$","_c","a","data","selected","busy","toolEntryDisable","setToolEntryDisable","onSaveTools","onClearToolsEntry","hideInlineSave","language","_temp","t0","adv","agentSettings","advanced","t1","tools","defaultsDisable","Set","flatMap","_temp2","defaultsDisableSet","t2","next","onDisableSetChange","groups","toolsDisableGroups","t3","key","getGroupTitle","t4","toolDescriptions","tid","getToolDescription","t5","toolsHint","toolsTitle","t6","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t7","builtinToolIds","t8","toolsSave","t9","t10","toolsClearEntry","t11","t12","s_0","v","String","s","trim","Dispatch","FormEvent","MutableRefObject","SetStateAction","ChannelStatus","CronJob","SessionChatId","fetchAgentProfileFiles","GatewayAgentRow","GatewayAgentsPayload","GatewayConfigBinding","SkillCatalogRow","AgentsSettingsMessages","ChatMessages","MessageBundle","AgentChannelsTab","AgentCronTab","AgentFilesTab","AgentOverviewTab","AgentProfileTab","AgentSkillsTab","AgentToolsTab","OverviewProfileDraft","SoulTemplateId","AgentPanel","CronMessages","AgentsEditorPanelContentProps","a","chat","cCron","selected","panel","data","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","defaultModel","defaultWorkspace","onSetDefault","onSaveAgentEdits","onDelete","purge","overviewSaveProfileMarkdownRef","Promise","profileSaveRef","overviewProfile","profileMarkdownLoading","draft","updateIdentity","patch","Partial","handleSoulTemplateChange","templateId","handleSoulContentChange","content","setAvatarDialogOpen","open","toggleSoulPreviewMode","setProfileDirty","filesLoading","files","Awaited","ReturnType","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","toolEntryDisable","Set","setToolEntryDisable","onSaveTools","onClearToolsEntry","skillsCatalogLoading","catalogForPick","skillsInherit","setSkillsInherit","skillsPick","setSkillsPick","onSaveSkills","bindingsLoading","agentBindings","bindChannelStatuses","bindChannelsLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","bindSessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","refreshBindSessions","onRemoveBinding","rule","onAddBinding","e","cronLoading","agentCronJobs","onSetCronJobAgent","job","agentKey","AgentsEditorPanelContent","t0","$","_c","t1","selectAgentHint","id","lastActiveLabels","selectRecipient","MessageSquarePlus","Plus","GatewayAgentRow","AgentAvatarDisplay","agentListDisplayDescription","agentListDisplayName","cn","interaction","AgentsSettingsMessages","filterAgents","agents","query","a","q","trim","toLowerCase","filter","ag","name","id","ws","workspace","desc","description","displayDesc","includes","NewAgentCard","props","$","_c","busy","onNewAgent","t0","t1","t2","Symbol","for","pressCard","t3","listNewAgentCard","t4","AgentsListGrid","searchQuery","onOpenAgent","onChatWithAgent","t5","bb0","filtered","searchMiss","length","t6","listNoAgentsYet","t7","t8","listEmpty","title","monoId","descTrim","avatar","isDefault","defaultBadge","undefined","press","listChatWithAgent","map","AgentsSettingsMessages","AgentsSettingsHeader","props","$","_c","a","t0","title","t1","subtitle","t2","Dialog","UserPlus","X","FormEvent","Button","ModelSelector","AgentsSettingsMessages","ChatMessages","cn","ghostIconButton","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","SettingsShellLayerProvider","agentsSettingsInputClass","CreateAgentDialog","props","$","_c","open","onOpenChange","a","chat","busy","modalError","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","onCreate","onSuggestWorkspace","t0","Symbol","for","t1","t2","addAgent","t3","addAgentHint","t4","t5","t6","t7","closeDialogAria","t8","t9","t10","newAgentLabel","t11","t12","e_0","e","target","value","t13","t14","t15","t16","newAgentIdOptional","t17","t18","e_1","t19","t20","newAgentIdPlaceholder","newAgentIdRules","t21","t22","t23","agentDescription","t24","t25","e_2","t26","agentDescriptionPlaceholder","t27","t28","newWorkspace","t29","t30","e_3","t31","t32","t33","newModelOptional","t34","id","t35","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t36","modelClear","trim","t37","t38","t39","createModalCancel","t40","t41","create","t42","t43","t44","_temp","t45","preventDefault","PresetAgent","id","name","emoji","descriptionEn","descriptionZh","identityMd","soulMd","toolsDisable","PRESET_AGENTS_SKIPPED_KEY","PRESET_AGENTS","useMemo","useState","SkipForward","Sparkles","Button","createGatewayAgent","messages","cn","useLocaleStore","PRESET_AGENTS","PRESET_AGENTS_SKIPPED_KEY","PresetAgent","PresetAgentsSetupProps","existingAgentIds","Set","onComplete","onSkip","PresetAgentsSetup","language","s","m","a","agentsSettings","availablePresets","filter","p","has","id","selected","setSelected","map","creating","setCreating","progress","setProgress","current","total","error","setError","toggleAgent","prev","next","delete","add","handleCreate","toCreate","length","completed","failures","preset","message","Promise","all","name","workspace","description","descriptionZh","descriptionEn","profileFiles","identityMd","soulMd","toolsDisable","err","Error","String","toLowerCase","includes","push","firstFailure","presetCreateFailed","replace","handleSkip","localStorage","setItem","presetSetupBadge","presetSetupTitle","presetSetupSubtitle","presetCreatingProgress","presetSkip","size","presetCreating","presetCreateSelected","PresetAgentCard","props","$","_c","checked","disabled","onToggle","t0","t1","t2","t3","t4","emoji","t5","t6","t7","t8","t9","revalidateGatewayConfig","fetchJson","apiUrl","AgentDefaultsCompactionState","enabled","mode","reserveTokens","triggerThreshold","minMessagesBeforeCompact","keepRecentMessages","evictionWindow","retentionWindow","AgentDefaultsPruningState","maxToolResultChars","headKeepRatio","tailKeepRatio","AgentDefaultsMemoryState","useEnhancedSystem","userProfileEnabled","provider","injectionFrequency","memoryCharLimit","userCharLimit","contextCadence","dialecticCadence","AgentDefaultsSessionSearchState","summaryModel","AgentDefaultsBackgroundReviewState","memoryNudgeInterval","skillNudgeInterval","maxToolRounds","maxHistoryMessages","maxDurationMs","AgentDefaultsWebExtractState","model","maxLength","AgentDefaultsDelegateState","AgentDefaultsExecuteCodeState","AgentDefaultsState","modelFallbacks","imageModel","imageModelFallbacks","imageGenerationModel","imageGenerationModelFallbacks","imageGenerationModelTimeoutMs","imageGenerationModelAutoProviderFallback","mediaMaxMb","maxTokens","temperature","maxToolIterations","maxTaskDurationMinutes","maxRequestsPerTurn","maxToolFailuresPerTurn","workspace","browserEnabled","browserHeadless","browserAllowPrivateUrls","browserCommandTimeout","browserBackend","browserCloudProvider","browserCloudApiKey","browserCloudProjectId","browserCloudRegion","browserCdpUrl","browserExtensionPort","browserExtensionHost","browserCloakKeepOpen","browserCloakTemporaryProfile","browserCloakCacheDir","browserCloakBinaryPath","browserHumanize","browserHumanPreset","browserDialogPolicy","browserDialogTimeout","thinkingDefault","reasoningDefault","verboseDefault","compaction","pruning","memory","sessionSearch","backgroundReview","webExtract","delegate","executeCode","systemPromptOverride","skillsAllowlist","toolsDisable","paramsJson","DEFAULT_COMPACTION","DEFAULT_PRUNING","DEFAULT_MEMORY","undefined","DEFAULT_SESSION_SEARCH","DEFAULT_BG_REVIEW","DEFAULT_WEB_EXTRACT","normalizeModelRef","raw","p","primary","normalizeModelFallbacks","f","fallbacks","Array","isArray","filter","x","trim","length","configFromApiResponse","res","r","Record","payload","config","truthyBrowserFlag","v","BrowserFieldsPick","Pick","parseBrowserFromDefaults","d","browser","b","headlessRaw","headless","allowPrivateUrls","commandTimeout","Number","isFinite","Math","floor","backendRaw","backend","cpRaw","cloudProvider","cloud","cloudApiKey","apiKey","cloudProjectId","projectId","cloudRegion","region","cdpUrl","ext","extension","extensionPort","port","extensionHost","host","cloakbrowser","humanPreset","dpRaw","dialogPolicy","dialogTimeout","dialogTimeoutSeconds","keepOpen","temporaryProfile","cacheDir","binaryPath","humanize","parseCompaction","parsePruning","parseMemory","providerRaw","inj","parseSessionSearch","parseBackgroundReview","parseWebExtract","parseEnabledFlag","def","parseStringList","parseParamsJson","t","parsed","JSON","parse","stringify","readImageGenerationTimeoutMsFromDefaults","flat","igm","tm","timeoutMs","readImageGenerationAutoProviderFallbackFromDefaults","autoProviderFallback","parseAgentDefaultsFromConfig","cfg","agents","defaults","mf","modelFallbacksFromApi","every","imf","imageModelFallbacksFromApi","igf","imageGenerationModelFallbacksFromApi","browserFields","maxTaskMs","maxTaskDurationMs","round","isNaN","skills","tools","dis","disable","params","buildMemoryPatch","m","o","parseParamsJsonForSave","trimmed","Error","fetchAgentDefaults","Promise","ok","patchAgentDefaults","state","flatMap","s","modelField","imageFbs","imageModelField","imageGenFbs","imageGenPrimary","imageGenTimeoutMs","imageGenAuto","imageGenerationModelField","obj","Object","keys","n","ms","skillsClean","toolsDisableClean","paramsParsed","method","body","DEFAULT_AGENT_ID","VALID_ID_RE","INVALID_CHARS_RE","LEADING_DASH_RE","TRAILING_DASH_RE","STRICT_AGENT_ID_RE","WINDOWS_RESERVED_AGENT_IDS","Set","normalizeAgentId","value","trimmed","trim","normalized","toLowerCase","test","replace","slice","validateAgentIdForNewAgent","explicitId","displayNameForDerivation","ok","agentId","error","explicit","id","has","normalizeAgentId","DEFAULT_AGENT_WORKSPACE","suggestWorkspaceFromAgentName","name","t","trim","id","Plus","Search","Button","AgentsSettingsMessages","AgentsSettingsToolbarProps","a","Pick","busy","listSearchQuery","onListSearchQueryChange","value","onAddAgent","AgentsSettingsToolbar","t0","$","_c","t1","Symbol","for","t2","e","target","t3","listSearchPlaceholder","t4","t5","t6","addAgent","addAgentAria","t7","useCallback","useLayoutEffect","useMemo","useRef","useState","MutableRefObject","fetchAgentProfileFileContent","saveAgentProfileFileContent","useAsyncResource","IdentityFields","SoulTemplateId","detectSoulTemplate","parseIdentityMarkdown","serializeIdentityMarkdown","SOUL_TEMPLATES","OverviewProfileLoaded","identity","soulTemplate","soulCustomContent","identityBaseline","soulBaseline","OverviewProfileDraft","soulEditorNonce","soulPreviewMode","avatarDialogOpen","draftFromLoaded","loaded","useAgentOverviewProfileMarkdown","options","agentId","enabled","saveRef","Promise","loadedResource","identityMd","soulMd","all","catch","JSON","stringify","Boolean","initial","errorData","data","profileMarkdownLoading","loading","dirtyRef","localDraft","setLocalDraft","agentKey","trackedAgentRef","current","draft","dirty","agentIdRef","patchDraft","patch","prev","base","updateIdentity","identityPatch","Partial","handleSoulTemplateChange","templateId","tpl","find","t","id","content","handleSoulContentChange","setAvatarDialogOpen","open","toggleSoulPreviewMode","saveProfileMarkdown","useCallback","useEffect","useRef","useReducer","useState","Dispatch","SetStateAction","useDebouncedCallback","fetchAgentProfileFileContent","fetchAgentProfileFiles","saveAgentProfileFileContent","useAsyncResource","AgentPanel","ProfileFiles","Awaited","ReturnType","FileEditorState","draft","editorNonce","loadedKey","FileEditorAction","type","key","content","value","initialFileEditor","fileEditorReducer","state","action","useAgentProfileFiles","options","panel","selectedId","hasToken","dataAgentsLength","saveErrorMessage","setError","filesEnabled","filesResource","Promise","resolve","enabled","initial","errorData","files","data","setFiles","setData","filesLoading","loading","activeFile","setActiveFileState","fileEditor","dispatchFileEditor","fileSaving","setFileSaving","filesViewMode","setFilesViewMode","fileDraft","profileEditorNonce","fileDraftRef","current","selectedIdRef","activeFileRef","overviewSaveProfileMarkdownRef","profileFileKeyRef","profileSyncedRef","trackedProfileKeyRef","flushProfileSaveRef","profileFileEnabled","Boolean","profileFileResource","catch","profileFileLoading","saveProfileMarkdownDebounced","sid","name","prev","agentId","map","f","missing","err","Error","message","flush","trackedPanelRef","profileFileKey","trackedViewModeKeyRef","setActiveFile","setFileDraft","useCallback","useMemo","useRef","useState","Dispatch","FormEvent","SetStateAction","getChannels","getSessionChatIds","ChannelStatus","SessionChatId","patchGatewayBindings","GatewayAgentRow","GatewayConfigBinding","useAsyncResource","AgentPanel","buildNewBindingMatch","useAgentsChannelBindings","options","panel","hasToken","bindingsFromConfig","gatewayCfgLoading","selected","saveErrorMessage","setBusy","setError","bindingsDirtyRef","localBindings","setLocalBindings","trackedBindingsRef","current","allBindings","channelsEnabled","channelsResource","enabled","initial","errorData","bindChannelStatuses","data","bindChannelsLoading","loading","defaultBindChannel","length","name","newBindChannel","setNewBindChannel","trackedDefaultChannelRef","some","c","trimmedBindChannel","trim","sessionsEnabled","sessionsResource","bindSessionChats","bindSessionsLoading","setBindSessionChats","setData","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","trackedBindChannelRef","agentBindings","filter","b","agentId","toLowerCase","id","refreshBindSessions","ch","then","ids","i","catch","useManualChannel","bindingsLoading","onRemoveBinding","rule","nextList","err","Error","message","onAddBinding","e","preventDefault","match","priority","useMemo","useState","Dispatch","SetStateAction","listJobs","updateJob","CronJob","isDreamingManagedCronJob","GatewayAgentRow","GatewayAgentsPayload","useAsyncResource","AgentPanel","jobMatchesAgent","useAgentsCronJobs","options","panel","hasToken","data","selected","saveErrorMessage","setBusy","setError","cronJobs","loading","cronLoading","enabled","initial","errorData","cronJobsOverride","setCronJobsOverride","effectiveCronJobs","agentCronJobs","filter","j","id","defaultId","onSetCronJobAgent","job","agentKey","agentId","err","Error","message","useMemo","fetchSkillsCatalog","SkillCatalogRow","useAsyncResource","AgentPanel","useSkillsCatalogLoad","enabled","hasToken","$","_c","t0","t1","t2","Symbol","for","t3","t4","initial","errorData","data","skillCatalog","loading","skillsCatalogLoading","_temp","t5","filter","_temp2","catalogForPick","t6","s","useAgentsSkillsCatalog","options","panel","useRef","useState","GatewayAgentRow","AgentPanel","toolDisableFromSelected","selected","Set","tools","entryDisable","skillsStateFromSelected","inherit","pick","skills","entry","undefined","effectiveAllowlist","useAgentsToolsSkillsLocalState","options","panel","syncKey","id","trackedSyncRef","toolEntryDisable","setToolEntryDisable","skillsPick","setSkillsPick","skillsInherit","setSkillsInherit","current","next","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","FormEvent","useNavigate","useParams","useSearchParams","useSWR","useGatewayConfigSwr","createGatewayAgent","deleteGatewayAgent","fetchGatewayAgents","parseGatewayBindingsFromConfig","updateGatewayAgent","GatewayAgentRow","GatewayAgentsPayload","parseAgentDefaultsFromConfig","AGENTS_APP_LIST_PATH","agentsAppDetailPath","SETTINGS_BACK_PATH_STATE_KEY","suggestWorkspaceFromAgentName","validateAgentIdForNewAgent","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","AgentsEditorPanelContentProps","AgentsSettingsToolbar","agentListDisplayName","useAgentOverviewProfileMarkdown","useAgentProfileFiles","useAgentsChannelBindings","useAgentsCronJobs","useAgentsSkillsCatalog","useAgentsToolsSkillsLocalState","PRESET_AGENTS_SKIPPED_KEY","AgentPanel","useAgentsSettingsPanel","language","s","m","a","agentsSettings","deleteDialogOpen","setDeleteDialogOpen","deleteTarget","setDeleteTarget","deletePurge","setDeletePurge","deleteConfirmText","setDeleteConfirmText","cCron","cron","chat","token","st","hasToken","Boolean","searchParams","setSearchParams","navigate","agentId","routeAgentId","setPageHeader","clearPageHeader","agentsSwrKey","data","swrAgentsData","error","swrAgentsError","isLoading","agentsLoading","mutate","mutateAgents","revalidateOnFocus","gatewayCfgData","bindingsFromConfig","payload","config","globalAgentDefaults","loading","setError","loadError","Error","message","displayError","selectedId","setSelectedId","presetSetupDismissed","setPresetSetupDismissed","localStorage","getItem","panel","setPanel","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","createModalError","setCreateModalError","addAgentModalOpen","setAddAgentModalOpen","createWorkspaceSuggestedRef","busy","setBusy","listSearchQuery","setListSearchQuery","editWorkspace","setEditWorkspace","editModel","setEditModel","editName","setEditName","editDescription","setEditDescription","profileSaveRef","Promise","overviewSaveProfileMarkdownRef","profileDirty","setProfileDirty","savedFlash","setSavedFlash","trackedAgentsSyncRef","undefined","current","agents","some","x","id","prev","defaultId","onlyMainAgent","length","every","ag","showPresetSetup","onPresetSetupComplete","onPresetSetupSkip","setItem","replace","get","state","t","window","setTimeout","document","getElementById","scrollIntoView","behavior","block","next","URLSearchParams","delete","clearTimeout","selected","find","trackedSelectedIdRef","workspace","model","primary","description","trim","overviewProfile","enabled","saveRef","profileFiles","dataAgentsLength","saveErrorMessage","saveError","toolsSkills","channels","gatewayCfgLoading","skillsCatalog","applyCreateWorkspaceSuggestion","openAddAgentModal","agentsHeaderEnd","startExtra","main","end","onCreate","e","preventDefault","name","idRes","ok","wsInput","desc","createdAgentId","agentsPayload","revalidate","err","onSaveAgentEdits","descTrim","onSetDefault","agent","setDefault","performDelete","purge","onDelete","onSaveTools","toolsDisable","Array","from","toolEntryDisable","toSorted","y","localeCompare","onClearToolsEntry","setToolEntryDisable","Set","onSaveSkills","skills","skillsInherit","skillsPick","footerSaveNotApplicable","overviewRestDirty","origName","origDesc","origWorkspace","origModel","isCurrentPanelDirty","dirty","footerSaveDisabled","showSavedFlash","handleModalFooterSave","all","resolve","saveProfileMarkdownDebounced","flush","onAgentModalOpenChange","open","modalTitle","modalSubtitle","editorPanelProps","defaultModel","defaultWorkspace","filesLoading","files","activeFile","setActiveFile","filesViewMode","setFilesViewMode","fileDraft","setFileDraft","fileSaving","profileFileLoading","profileEditorNonce","skillsCatalogLoading","catalogForPick","setSkillsInherit","setSkillsPick","bindingsLoading","agentBindings","bindChannelStatuses","bindChannelsLoading","useManualChannel","newBindChannel","setNewBindChannel","bindSessionChats","bindSessionsLoading","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","refreshBindSessions","onRemoveBinding","rule","onAddBinding","cronLoading","agentCronJobs","onSetCronJobAgent","job","key","AgentDeleteConfirmDialog","agentsAppDetailPath","AgentsEditorModal","AgentsEditorPanelContent","AgentsListGrid","AgentsSettingsHeader","CreateAgentDialog","PRESET_AGENTS","PresetAgentsSetup","useAgentsSettingsPanel","AgentsSettingsPanel","vm","hasToken","a","title","needToken","showPresetSetup","data","existingIds","Set","agents","map","ag","id","hasAvailablePresets","some","p","has","onPresetSetupComplete","onPresetSetupSkip","displayError","loading","listSearchQuery","navigate","state","agentId","trim","toLowerCase","openAddAgentModal","busy","routeAgentId","Boolean","onAgentModalOpenChange","modalTitle","modalSubtitle","panel","setPanel","handleModalFooterSave","footerSaveDisabled","savedFlash","editorPanelProps","addAgentModalOpen","open","setAddAgentModalOpen","createWorkspaceSuggestedRef","current","setCreateDisplayName","setCreateAgentId","setCreateDescription","setCreateWorkspace","setCreateModel","setCreateModalError","chat","createModalError","createDisplayName","createAgentId","createDescription","createWorkspace","createModel","onCreate","applyCreateWorkspaceSuggestion","deleteDialogOpen","setDeleteDialogOpen","setDeleteTarget","setDeleteConfirmText","deletePurge","deleteTarget","deleteConfirmText","performDelete","ReactNode","AgentDefaultsField","t0","$","_c","label","description","children","t1","t2","t3","LucideIcon","Check","cn","BrowserMessages","ModeStatusKind","BackendMode","BackendModeOption","value","icon","name","tagline","status","statusLabel","BackendModePicker","t0","$","_c","onChange","options","m","t1","browserPickerTitle","t2","browserPickerSubtitle","t3","t4","t5","browserSelectedBadge","t6","opt","selected","Icon","map","t7","LucideIcon","AlertTriangle","CheckCircle2","CircleHelp","LoaderCircle","XCircle","useState","ReactNode","cn","BrowserMessages","ModeStatusKind","BackendModeCard","t0","$","_c","icon","Icon","title","description","status","statusDetail","primaryAction","children","advanced","m","showAdvanced","setShowAdvanced","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","_temp","browserAdvancedHide","browserAdvancedShow","t11","v","StatusBadge","kind","detail","label","browserStatusChecking","browserStatusError","browserStatusNotInstalled","browserStatusReady","browserStatusUnknown","config","ready","color","not_installed","checking","unknown","error","ActionResultBox","message","LoaderCircle","Play","Plug","Square","Webhook","useCallback","useEffect","useReducer","uiPatchReducer","AgentDefaultsField","inputClassName","ActionResultBox","BackendModeCard","BrowserMessages","LaunchedCdpInstance","ActionStatus","CdpCardUi","instances","launchStatus","launchMessage","testStatus","testMessage","executablePath","initialCdpCardUi","CdpCard","m","cdpUrl","onCdpUrlChange","launch","stop","listInstances","ping","next","Promise","port","url","reachable","browser","error","ui","dispatch","refreshInstances","list","type","patch","id","setInterval","clearInterval","onLaunch","result","trim","undefined","browserCdpLaunchedAtPort","replace","String","wsEndpoint","e","Error","message","onStop","onTest","browserCdpReachable","browserCdpUnreachable","browserCdpLaunchLocal","browserCdpLaunchLocalDesc","browserCdpLaunching","browserCdpChromePath","browserCdpChromePathDesc","target","value","length","map","it","pid","browserCdpStopLocal","label","browserCdpUrl","desc","browserCdpTesting","browserCdpTestConnection","browserCdpLoopbackOnly","BrowserInstallStreamState","BrowserMessages","phaseLabel","m","progress","phase","browserInstallPhaseStarting","percent","browserInstallPhaseDownloadingPercent","replace","String","browserInstallPhaseDownloading","browserInstallPhaseVerifying","browserInstallPhaseExtracting","message","browserInstallPhaseRunning","browserInstallPhaseReady","BrowserInstallProgressPanel","t0","$","_c","showLogs","t1","onCancel","cancelling","t2","undefined","t3","label","Math","min","max","t4","t5","t6","browserInstallCancelling","browserInstallCancel","t7","t8","t9","width","t10","lines","length","map","_temp","t11","t12","line","i","slice","CheckCircle2","Download","LoaderCircle","RefreshCw","ShieldCheck","useCallback","useState","ConfirmDialog","AgentDefaultsField","inputClassName","selectClassName","BrowserInstallProgressPanel","ActionResultBox","BackendModeCard","ModeStatusKind","BrowserMessages","CloakDoctor","DoctorState","BrowserInstallStream","InstallStatus","CloakCardForm","cacheDir","binaryPath","keepOpen","temporaryProfile","humanize","humanPreset","CloakCard","t0","$","_c","m","doctor","refetch","applyDoctor","installStream","form","onChange","status","setStatus","message","setMessage","confirmOpen","setConfirmOpen","progress","running","cancelling","run","runInstall","reset","resetInstall","cancel","data","kind","installed","installing","t1","browserCloakInstallFailed","browserCloakInstalled","result","body","trim","undefined","fallbackError","ok","error","errorMessage","payload","installNow","statusKind","statusDetail","version","platform","t2","browserCloakGuideTitle","t3","browserCloakGuideDesc","t4","Symbol","for","t5","t6","browserCloakInstalling","browserReinstall","browserCloakDownload","t7","t8","t9","t10","e","target","checked","t11","t12","browserCloakKeepOpenOn","t13","t14","desc","browserCloakKeepOpen","label","t15","e_0","t16","t17","browserCloakTemporaryProfileOn","t18","t19","browserCloakTemporaryProfile","t20","e_1","t21","t22","browserHumanizeOn","t23","t24","browserHumanize","t25","browserHumanPreset","t26","t27","t28","e_2","value","t29","browserHumanPresetCareful","t30","browserHumanPresetDefault","t31","t32","t33","t34","t35","browserCloakCacheDir","t36","t37","t38","e_3","t39","t40","browserCacheDirHomeOnly","t41","t42","browserCloakBinaryPath","t43","t44","t45","e_4","t46","t47","browserBinaryPathWarning","t48","t49","t50","browserConfirmDownloadTitle","t51","buildConfirmBody","t52","t53","t54","browserConfirmDownloadCancel","browserConfirmDownloadConfirm","t55","browserConfirmDownloadBody","parts","replace","downloadUrl","expectedSha256","push","slice","browserCloakSha256Skipped","join","Cloud","LoaderCircle","Plug","useCallback","useState","AgentDefaultsField","inputClassName","selectClassName","ActionResultBox","BackendModeCard","BrowserMessages","ActionStatus","CloudCardForm","provider","apiKey","projectId","region","CloudCard","m","form","onChange","testCloud","patch","Partial","Promise","reachable","error","status","setStatus","message","setMessage","onTest","result","browserCloudTestOk","browserCloudTestFailed","replace","e","Error","String","label","browserCloudProvider","desc","browserCloudTestConnection","target","value","browserCloudProviderBrowserbase","browserCloudProviderBrowserUse","browserCloudApiKey","browserCloudProjectId","browserCloudRegion","Download","ExternalLink","FolderOpen","LoaderCircle","Play","Plug","PlugZap","Puzzle","Square","Unplug","useCallback","useState","copyTextToClipboard","AgentDefaultsField","inputClassName","ActionResultBox","BackendModeCard","BrowserMessages","DoctorState","ExtensionArtifacts","ExtensionProbe","DEFAULT_PORT","ExtensionCardForm","port","host","ExtensionCard","m","probe","artifacts","onChange","startBridge","stopBridge","installArtifacts","refetchArtifacts","openExtensionChrome","revealExtensionFolder","form","patch","Partial","opts","Promise","force","busy","setBusy","error","setError","installMessage","setInstallMessage","wsUrl","running","kind","data","connected","artifactData","undefined","installed","extensionDir","needsChromeReload","badge","icon","color","label","browserExtensionConnected","browserExtensionWaiting","browserExtensionServerOff","BadgeIcon","onStart","e","Error","message","String","onStop","onInstall","result","browserExtensionInstalled","openChromeExtensions","onRevealFolder","copied","browserExtensionPathCopied","browserExtensionFolderOpened","browserBackendExtension","browserExtensionDownloadHint","browserExtensionInstalling","browserExtensionInstall","browserExtensionStopBridge","browserExtensionStarting","browserExtensionStartBridge","browserExtensionPort","desc","v","target","value","Number","parseInt","browserExtensionHost","browserExtensionInstallGuideTitle","browserExtensionInstallStep1","browserExtensionInstallStep2","browserExtensionInstallStep2FolderLabel","browserExtensionOpenChrome","browserExtensionRevealFolder","browserExtensionInstallStep3","browserExtensionNeedsChromeReload","CheckCircle2","Download","LoaderCircle","MonitorPlay","RefreshCw","useCallback","useState","BrowserInstallProgressPanel","ActionResultBox","BackendModeCard","ModeStatusKind","BrowserMessages","DoctorState","PlaywrightDoctor","BrowserInstallStream","InstallStatus","LocalCard","t0","$","_c","m","doctor","refetch","applyDoctor","installStream","status","setStatus","message","setMessage","progress","running","cancelling","run","runInstall","reset","resetInstall","cancel","t1","browserPlaywrightInstallFailed","browserPlaywrightInstalled","result","fallbackError","ok","error","errorMessage","payload","executablePath","install","statusKind","kind","data","installed","statusDetail","undefined","installing","t2","t3","t4","browserPlaywrightInstalling","browserReinstall","browserPlaywrightInstall","t5","t6","Symbol","for","t7","t8","t9","browserPlaywrightGuideTitle","browserPlaywrightGuideDesc","useCallback","useEffect","useReducer","useRef","apiFetch","apiUrl","CdpPingResult","CloakDoctor","CloudTestResult","DoctorState","ExtensionArtifacts","ExtensionProbe","LaunchedCdpInstance","PlaywrightDoctor","ApiEnvelope","ok","payload","T","error","message","getJson","url","Promise","res","body","json","catch","msg","Error","status","undefined","postJson","method","headers","JSON","stringify","BrowserDoctorState","playwright","cloak","extension","extensionArtifacts","BrowserDoctorAction","type","state","initialBrowserDoctorState","kind","browserDoctorReducer","action","BrowserDoctor","refetchPlaywright","applyPlaywrightDoctor","data","refetchCloak","overrides","cacheDir","binaryPath","applyCloakDoctor","pingCdp","cdpUrl","testCloud","provider","apiKey","launchCdp","executablePath","stopCdp","port","listCdpInstances","startExtensionBridge","opts","host","stopExtensionBridge","refetchExtension","refetchExtensionArtifacts","installExtensionArtifacts","force","openExtensionChrome","revealExtensionFolder","useBrowserDoctor","extensionEnabled","extensionHost","extensionPort","doctors","dispatch","e","String","cd","trim","bp","qs","URLSearchParams","set","size","probe","signal","AbortSignal","timeout","running","connected","backend","artifacts","params","doctor","extensionDir","trackedExtensionEnabledRef","current","id","setInterval","clearInterval","stopped","instances","useCallback","useRef","useState","apiFetch","apiUrl","SSE_BLOCK_DELIM","CRLF_RE","BrowserInstallKind","BrowserInstallPhase","BrowserInstallProgressEvent","phase","message","percent","bytesReceived","totalBytes","line","source","BrowserInstallStreamState","lines","BrowserInstallStreamResult","ok","payload","T","error","status","INSTALL_PATH","Record","playwright","cloakbrowser","CANCEL_PATH","MAX_LOG_LINES","emptyState","applyProgress","prev","event","next","length","slice","consumeBrowserInstallSse","body","ReadableStream","Uint8Array","onProgress","signal","AbortSignal","Promise","reader","getReader","decoder","TextDecoder","buffer","final","handleSseBlock","block","ev","dataPayload","split","L","replace","startsWith","trim","trimStart","parsed","JSON","parse","json","String","undefined","readChunk","aborted","cancel","catch","done","value","read","decode","stream","parts","pop","chunk","result","err","DOMException","name","releaseLock","useBrowserInstallStream","kind","progress","setProgress","running","setRunning","cancelling","setCancelling","runningRef","abortRef","AbortController","reset","current","method","abort","run","opts","fallbackError","errorMessage","ac","res","headers","Accept","stringify","text","j","Error","BrowserInstallStream","ReturnType","Cloud","Globe","MonitorPlay","Puzzle","ShieldCheck","Webhook","useMemo","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","ModeStatusKind","BackendModePicker","BackendModeOption","CdpCard","CloakCard","CloudCard","ExtensionCard","LocalCard","useBrowserDoctor","useBrowserInstallStream","AgentDefaultsBrowserPanel","props","$","_c","a","form","update","playwrightInstall","cloakInstall","t0","browserCloakBinaryPath","browserCloakCacheDir","browserEnabled","browserExtensionHost","browserExtensionPort","cacheDir","binaryPath","extensionEnabled","extensionHost","extensionPort","doctor","t1","playwright","doctorStatus","localStatus","t2","cloak","cloakStatus","t3","extension","extensionDoctorStatus","extensionStatus","t4","extensionStatusLabelFor","extensionStatusLabel","t5","browserBackendExtension","browserModeExtTagline","value","icon","name","tagline","status","statusLabel","t6","browserBackendLocal","t7","browserModeLocalTagline","t8","statusLabelFor","t9","t10","browserBackendCloakBrowser","t11","browserModeCloakTagline","t12","t13","t14","browserBackendCdp","browserModeCdpTagline","t15","browserBackendCloud","browserModeCloudTagline","t16","modeOptions","t17","browserBackend","find","o","selectedOption","SelectedIcon","t18","cardBrowserSubtitle","cardBrowserTitle","t19","e","target","checked","t20","t21","browserEnabledOn","t22","t23","desc","label","t24","e_0","browserHeadless","t25","t26","browserHeadlessOn","t27","t28","t29","e_1","browserAllowPrivateUrls","t30","t31","browserAllowPrivateOn","t32","t33","t34","browserCommandTimeout","t35","t36","Symbol","for","t37","t38","e_2","v","undefined","Number","parseInt","t39","t40","t41","t42","next","t43","t44","t45","browserConfiguringHeader","replace","t46","t47","t48","t49","t50","applyPlaywrightDoctor","refetchPlaywright","t51","applyCloakDoctor","refetchCloak","browserCloakKeepOpen","browserCloakTemporaryProfile","browserHumanPreset","browserHumanize","keepOpen","temporaryProfile","humanize","humanPreset","patch","t52","launchCdp","listCdpInstances","pingCdp","stopCdp","browserCdpUrl","next_0","t53","testCloud","browserCloudApiKey","browserCloudProjectId","browserCloudProvider","browserCloudRegion","provider","apiKey","projectId","region","patch_0","t54","extensionArtifacts","installExtensionArtifacts","openExtensionChrome","refetchExtensionArtifacts","revealExtensionFolder","startExtensionBridge","stopExtensionBridge","port","host","patch_1","t55","browserDialogPolicy","t56","t57","t58","e_3","t59","browserDialogPolicyMustRespond","t60","browserDialogPolicyAutoDismiss","t61","browserDialogPolicyAutoAccept","t62","t63","t64","browserDialogTimeout","t65","t66","t67","t68","e_4","v_0","t69","t70","t71","t72","t73","installed","d","kind","data","T","message","ready","browserStatusReady","not_installed","browserStatusNotInstalled","checking","browserStatusChecking","unknown","browserStatusUnknown","error","browserStatusError","ReturnType","connected","running","browserExtensionConnected","browserExtensionWaiting","browserExtensionServerOff","Cpu","ReactNode","Button","messages","SettingsSectionId","useLocaleStore","UseAgentDefaultsFormResult","AgentDefaultsRouteLayout","props","$","_c","sectionId","intro","vm","children","tabbed","t0","undefined","language","_temp","t1","m","a","agentSettings","pageTitle","settingsSections","hasToken","t2","Symbol","for","t3","t4","needToken","t5","loading","logs","form","error","fetchError","loadError","mutate","refresh","t6","sectionDesc","saved","saveOk","dirty","saving","t7","discard","t8","t9","save","t10","t11","t12","t13","t14","t15","t16","s","useCallback","useMemo","useReducer","useRef","useState","useGatewayConfigSwr","parseAgentDefaultsFromConfig","parseParamsJsonForSave","patchAgentDefaults","AgentDefaultsState","MessageBundle","createFormDraftReducer","syncFormDraftFromParsed","useGatewayStore","UseAgentDefaultsFormResult","hasToken","loading","fetchError","form","update","patch","Partial","dirty","saving","saveOk","error","setError","e","save","Promise","discard","mutate","ReturnType","agentDefaultsFormReducer","useAgentDefaultsForm","a","token","st","Boolean","formDraft","dispatchForm","baseline","setSaving","setSaveOk","dirtyRef","trackedParsedRef","data","swrError","isLoading","parsed","payload","config","undefined","enabled","current","dispatch","onResetDirty","Error","message","String","JSON","stringify","type","paramsJson","SyntaxError","advanced","paramsInvalidJson","value","saveError","useMemo","messages","useLocaleStore","AgentDefaultsBrowserPanel","AgentDefaultsRouteLayout","useAgentDefaultsForm","AgentBrowserSettingsPage","$","_c","language","_temp","t0","messageBundle","agentSettings","chatMessages","chat","viewModel","t1","bb0","form","t2","update","a","panelProps","t3","routeIntro","browser","state","revalidateGatewayConfig","fetchJson","apiUrl","SkillsMarketplaceConfigState","provider","storeBaseUrl","DEFAULT_SKILLS_MARKETPLACE","KNOWN_PROVIDERS","const","isRecord","v","Record","Array","isArray","normalizeSkillsMarketplaceFromConfig","config","c","gw","gateway","providerRaw","skillsMarketplaceProvider","trim","toLowerCase","includes","skillsStoreBaseUrl","replace","patchSkillsMarketplaceConfig","state","Promise","url","startsWith","Error","method","body","JSON","stringify","listKnownMarketplaceProviders","Store","Loader2","useCallback","useMemo","useReducer","useRef","useState","Button","useGatewayConfigSwr","listKnownMarketplaceProviders","normalizeSkillsMarketplaceFromConfig","patchSkillsMarketplaceConfig","SkillsMarketplaceConfigState","SettingsFormSection","SettingsFormSectionHeader","settingsInputFocusClass","createFormDraftReducer","syncFormDraftFromParsed","cn","messages","useLocaleStore","inputClassName","marketplaceFormReducer","SkillsMarketplaceConfigSection","hasToken","t","s","language","skillsMarketplaceSettings","providers","data","isLoading","parsed","payload","config","undefined","formDraft","dispatchForm","form","baseline","saving","setSaving","error","setError","dirtyRef","trackedParsedRef","enabled","dirty","current","dispatch","onResetDirty","JSON","stringify","update","patch","Partial","type","title","hint","discard","value","e","Error","message","saveError","save","provider","target","map","id","providerHint","storeBaseUrl","storeBaseUrlHint","Cpu","Plus","Trash2","Button","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsPanelProps","modelFallbackRowKey","modelId","index","all","trimmed","trim","emptySlot","slice","filter","id","length","AgentDefaultsChatModelFallbacksSection","props","$","_c","a","chat","form","update","t0","desc","modelFallbacks","label","t1","removeModelFallback","map","fb","idx","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","next","_","j","t2","t3","Symbol","for","t4","addModelFallback","t5","t6","Cpu","SlidersHorizontal","Zap","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsChatModelFallbacksSection","THINKING_KEYS","const","AgentDefaultsBasicsPanel","props","$","_c","a","chat","form","update","t0","cardModelsTitle","label","model","t1","modelId","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","desc","t4","t5","t6","cardGenerationSubtitle","cardGenerationTitle","t7","maxTokens","t8","t9","Symbol","for","t10","e","Number","parseInt","target","value","t11","t12","t13","temperature","t14","t15","t16","e_0","parseFloat","t17","t18","t19","t20","t21","cardBehaviorSubtitle","cardBehaviorTitle","t22","thinkingDefault","t23","t24","t25","t26","e_1","t27","thinkingLevels","map","k","t28","t29","t30","reasoningDefault","t31","t32","t33","e_2","t34","reasoning","off","t35","on","t36","stream","t37","t38","t39","verboseDefault","t40","t41","t42","e_3","t43","verbose","t44","t45","full","t46","t47","t48","t49","t50","fetchGatewayAgents","useAsyncResource","useBuiltinToolIdsLoad","enabled","hasToken","$","_c","t0","t1","t2","Symbol","for","t3","t4","initial","errorData","data","builtinToolIds","loading","_temp","t5","p","Array","isArray","Wrench","useCallback","useMemo","SettingsFormSection","SettingsFormSectionHeader","messages","useGatewayStore","useLocaleStore","AgentDefaultsField","AgentDefaultsPanelProps","BuiltinToolsDisableUi","sortedDisableList","BuiltinToolUiGroupKey","useBuiltinToolIdsLoad","AgentDefaultsBuiltinToolsDisableSection","props","$","_c","a","form","update","x","advanced","language","_temp","t0","m","agentsTab","agentsSettings","token","_temp2","hasToken","Boolean","builtinToolIds","loading","t1","toolsDisable","Set","flatMap","_temp3","disableSet","t2","builtinSet","t3","t4","s_2","v_0","s","trim","has","v","toSorted","_temp4","unknownDisabled","next","onDisableSetChange","groups","toolsDisableGroups","t5","key","getGroupTitle","t6","toolDescriptions","tid","getToolDescription","t7","cardToolsDisableSubtitle","cardToolsDisableTitle","t8","needToken","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t9","toolsDisableFieldLabel","toolsDisableHint","t10","x_0","y","localeCompare","s_1","s_0","Code2","FileText","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsBuiltinToolsDisableSection","AgentDefaultsCapabilitiesPanel","props","$","_c","a","chat","form","update","x","advanced","t0","cardWebExtractSubtitle","cardWebExtractTitle","t1","webExtract","modelId","model","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","webExtractModel","webExtractModelDesc","t4","webExtractMaxLength","t5","webExtractMaxLengthDesc","t6","Symbol","for","t7","maxLength","t8","e","v","target","value","undefined","Number","parseInt","t9","t10","t11","t12","t13","cardDelegateSubtitle","cardDelegateTitle","t14","delegate","e_0","enabled","checked","t15","t16","delegateEnabledOn","t17","t18","delegateEnabled","delegateEnabledDesc","t19","executeCode","e_1","t20","t21","executeCodeEnabledOn","t22","t23","executeCodeEnabled","executeCodeEnabledDesc","t24","t25","t26","t27","ChevronDown","ReactNode","cn","Props","showLabel","hideLabel","children","className","AgentDefaultsAdvancedDetails","t0","$","_c","t1","t2","Symbol","for","t3","t4","t5","t6","t7","Layers2","Scissors","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsAdvancedDetails","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsContextPanel","props","$","_c","a","form","update","x","advanced","t0","cardCompactionSubtitle","cardCompactionTitle","t1","compaction","e","enabled","target","checked","t2","t3","compactionEnabledOn","t4","t5","compactionEnabled","compactionEnabledDesc","t6","compactionMode","t7","compactionModeDesc","t8","Symbol","for","t9","e_0","mode","value","t10","compactionModeDefault","t11","compactionModeSafeguard","t12","t13","t14","advancedOptionsShow","t15","advancedOptionsHide","t16","reserveTokens","t17","reserveTokensDesc","t18","t19","e_1","Number","parseInt","t20","t21","t22","triggerThreshold","t23","triggerThresholdDesc","t24","t25","e_2","parseFloat","t26","t27","t28","minMessagesBeforeCompact","t29","minMessagesBeforeCompactDesc","t30","t31","e_3","t32","t33","t34","keepRecentMessages","t35","keepRecentMessagesDesc","t36","t37","e_4","t38","t39","t40","evictionWindow","t41","evictionWindowDesc","t42","t43","e_5","t44","t45","t46","retentionWindow","t47","retentionWindowDesc","t48","t49","e_6","t50","t51","t52","t53","t54","t55","t56","cardPruningSubtitle","cardPruningTitle","t57","pruning","e_7","t58","t59","pruningEnabledOn","t60","t61","pruningEnabled","pruningEnabledDesc","t62","maxToolResultChars","t63","maxToolResultCharsDesc","t64","t65","e_8","t66","t67","t68","t69","t70","headKeepRatio","t71","headKeepRatioDesc","t72","t73","e_9","t74","t75","t76","tailKeepRatio","t77","tailKeepRatioDesc","t78","t79","e_10","t80","t81","t82","t83","t84","t85","t86","Clock","SettingsFormSection","SettingsFormSectionHeader","cn","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsExpertPanel","props","$","_c","a","form","update","x","advanced","t0","cardParamsSubtitle","cardParamsTitle","t1","paramsJson","t2","paramsJsonDesc","t3","Symbol","for","t4","e","target","value","t5","t6","t7","Timer","Link","SettingsFormSection","SettingsFormSectionHeader","pathForTab","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsLimitsPanel","props","$","_c","a","form","update","x","advanced","t0","cardLimitsSubtitle","cardLimitsTitle","t1","maxTaskDurationMs","t2","maxTaskDurationMsDesc","t3","Symbol","for","t4","maxTaskDurationMinutes","t5","e","v","target","value","undefined","num","Number","parseInt","isNaN","Math","min","max","t6","maxTaskDurationPlaceholder","t7","t8","maxRequestsPerTurn","t9","maxRequestsPerTurnDesc","t10","t11","e_0","t12","t13","t14","maxToolFailuresPerTurn","t15","maxToolFailuresPerTurnDesc","t16","t17","e_1","t18","t19","t20","label","maxToolIterations","t21","desc","t22","t23","e_2","t24","t25","t26","t27","t28","t29","t30","goalsCheckLink","t31","goalsCheckLinkHint","t32","t33","Brain","Search","Sparkles","ModelSelector","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsAdvancedDetails","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsMemoryPanel","props","$","_c","a","chat","form","update","x","advanced","t0","cardMemorySubtitle","cardMemoryTitle","t1","memory","e","enabled","target","checked","t2","t3","memoryEnabledOn","t4","t5","memoryEnabled","memoryEnabledDesc","t6","e_0","useEnhancedSystem","t7","t8","useEnhancedSystemOn","t9","t10","useEnhancedSystemDesc","t11","e_1","userProfileEnabled","t12","t13","userProfileEnabledOn","t14","t15","userProfileEnabledDesc","t16","memoryProvider","t17","memoryProviderDesc","t18","Symbol","for","t19","e_2","provider","value","t20","memoryProviderUnset","t21","t22","t23","t24","t25","t26","advancedOptionsShow","t27","advancedOptionsHide","t28","injectionFrequency","t29","injectionFrequencyDesc","t30","t31","e_3","t32","injectionFrequencyUnset","t33","injectionEveryTurn","t34","injectionFirstTurn","t35","t36","t37","memoryCharLimit","t38","memoryCharLimitDesc","t39","t40","t41","e_4","v","undefined","Number","parseInt","t42","t43","t44","userCharLimit","t45","userCharLimitDesc","t46","t47","t48","e_5","v_0","t49","t50","t51","contextCadence","t52","contextCadenceDesc","t53","t54","t55","e_6","v_1","t56","t57","t58","dialecticCadence","t59","dialecticCadenceDesc","t60","t61","t62","e_7","v_2","t63","t64","t65","t66","t67","t68","t69","cardSessionSearchSubtitle","cardSessionSearchTitle","t70","sessionSearch","modelId","summaryModel","t71","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t72","sessionSearchSummaryModel","sessionSearchSummaryModelDesc","t73","t74","cardReviewSubtitle","cardReviewTitle","t75","backgroundReview","e_8","t76","t77","reviewEnabledOn","t78","t79","reviewEnabled","reviewEnabledDesc","t80","t81","t82","memoryNudgeInterval","t83","memoryNudgeIntervalDesc","t84","t85","e_9","t86","t87","t88","skillNudgeInterval","t89","skillNudgeIntervalDesc","t90","t91","e_10","t92","t93","t94","reviewMaxToolRounds","t95","reviewMaxToolRoundsDesc","t96","t97","e_11","maxToolRounds","t98","t99","t100","reviewMaxHistoryMessages","t101","reviewMaxHistoryMessagesDesc","t102","t103","e_12","maxHistoryMessages","t104","t105","t106","reviewMaxDurationMs","t107","reviewMaxDurationMsDesc","t108","t109","maxDurationMs","Math","round","t110","e_13","t111","t112","t113","t114","t115","t116","t117","Library","useCallback","useMemo","Link","Button","SkillCatalogRow","SettingsFormSection","SettingsFormSectionHeader","cn","messages","pathForTab","useGatewayStore","useLocaleStore","AgentDefaultsField","AgentDefaultsPanelProps","agentDefaultsQuickActionButtonClass","useSkillsCatalogLoad","rowId","s","name","directoryId","trim","allowlistFromSelection","selected","Set","catalogIds","out","id","has","push","extra","filter","includes","sort","AgentDefaultsSkillsAllowlistPanel","props","$","_c","a","form","update","x","advanced","language","_temp","t0","m","agentsTab","agentsSettings","token","_temp2","hasToken","Boolean","catalogForPick","skillsCatalogLoading","t1","map","restrictMode","skillsAllowlist","length","t2","flatMap","_temp3","allowSet","t3","t4","unknownAllowlistIds","_temp4","syntheticUnknownRows","t5","rowsToRender","t6","setAllSkills","t7","setRestrictWithAllCatalogSelected","t8","id_1","checked","_temp5","add","delete","size","toggleId","t9","cardSkillsSubtitle","cardSkillsTitle","t10","t11","skillsAllowlistDesc","t12","skillsAllowlistModeAll","t13","t14","t15","skillsAllowlistModeRestrict","t16","t17","Symbol","for","t18","skillsLibraryLink","t19","t20","needToken","skillsEmptyCatalog","skillsNoDescription","skillsAllowlistNotInCatalog","s_3","id_2","on","desc","description","descLine","unknown","t21","t22","t23","s_2","v_0","v","id_0","s_1","s_0","ScrollText","SettingsFormSection","SettingsFormSectionHeader","cn","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsSystemPromptPanel","props","$","_c","a","form","update","x","advanced","t0","cardSystemPromptSubtitle","cardSystemPromptTitle","t1","systemPromptOverride","t2","systemPromptOverrideDesc","t3","Symbol","for","t4","e","target","value","t5","systemPromptPlaceholder","t6","t7","Folder","Button","DirectoryPickerPathField","SettingsFormSection","SettingsFormSectionHeader","DEFAULT_AGENT_WORKSPACE","AgentDefaultsField","AgentDefaultsPanelProps","agentDefaultsQuickActionButtonClass","inputClassName","AgentDefaultsWorkspacePanel","props","$","_c","a","chat","form","update","t0","workspace","trim","workspaceTrimmed","isDefaultWorkspace","t1","cardWorkspaceSubtitle","cardWorkspaceTitle","t2","label","t3","desc","t4","t5","path","t6","workingDirectory","t7","notSet","t8","Symbol","for","t9","t10","setDefaultWorkspace","t11","t12","t13","mediaMaxMb","t14","t15","t16","t17","e","v","target","value","undefined","Number","t18","t19","t20","t21","useCallback","useMemo","useSearchParams","SkillsMarketplaceConfigSection","messages","cn","interaction","useLocaleStore","AgentDefaultsPanelProps","AgentDefaultsBasicsPanel","AgentDefaultsCapabilitiesPanel","AgentDefaultsContextPanel","AgentDefaultsExpertPanel","AgentDefaultsLimitsPanel","AgentDefaultsMemoryPanel","AgentDefaultsSkillsAllowlistPanel","AgentDefaultsSystemPromptPanel","AgentDefaultsWorkspacePanel","AGENT_DEFAULTS_TABS","AgentDefaultsTabId","parseAgentDefaultsTab","AgentDefaultsRouteLayout","useAgentDefaultsForm","tabLabel","a","ReturnType","tab","defaultsTabs","tabIntro","routeIntro","chat","workspace","runtime","context","memory","tools","skills","systemPrompt","AgentDefaultsTabPanel","t0","$","_c","pp","hasToken","t1","t2","t3","AgentDefaultsTabbedPage","language","_temp","m","agentSettings","searchParams","setSearchParams","activeTab","get","vm","bb0","form","update","prev","next","URLSearchParams","delete","set","replace","setActiveTab","intro","defaultsTabsAria","t4","e","key","preventDefault","idx","indexOf","delta","next_0","length","t5","map","tab_0","selected","press","t6","t7","t8","t9","t10","t11","t12","t13","s"],"sources":["../../../../../web/src/features/settings/agents/agent-delete-confirm-dialog.tsx","../../../../../web/src/features/settings/agents/agents-editor-sidebar.tsx","../../../../../web/src/features/settings/agents/agents-editor-modal.tsx","../../../../../web/src/features/settings/agents/utils.ts","../../../../../web/src/features/settings/agents/tabs/agent-channels-tab.tsx","../../../../../web/src/features/scheduling/schedule-summary.tsx","../../../../../web/src/features/settings/agents/tabs/agent-cron-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-files-tab.tsx","../../../../../web/src/features/fs/directory-picker-path-field.tsx","../../../../../web/src/features/settings/agents/agent-config-inheritance-summary.tsx","../../../../../web/src/features/settings/agents/agent-avatar-picker.tsx","../../../../../web/src/features/settings/agents/agent-profile-markdown.ts","../../../../../web/src/features/settings/agents/tabs/agent-overview-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-profile-tab.tsx","../../../../../web/src/features/settings/agents/tabs/agent-skills-tab.tsx","../../../../../web/src/features/settings/agents/builtin-tool-disable-groups.ts","../../../../../web/src/features/settings/agents/defaults-field-styles.ts","../../../../../web/src/features/settings/agents/builtin-tools-disable-ui.tsx","../../../../../web/src/features/settings/agents/tabs/agent-tools-tab.tsx","../../../../../web/src/features/settings/agents/agents-editor-panel-content.tsx","../../../../../web/src/features/settings/agents/agents-list-grid.tsx","../../../../../web/src/features/settings/agents/agents-settings-header.tsx","../../../../../web/src/features/settings/agents/create-agent-dialog.tsx","../../../../../web/src/features/settings/agents/preset-agents.ts","../../../../../web/src/features/settings/agents/preset-agents-setup.tsx","../../../../../web/src/features/settings/config-api.ts","../../../../../web/src/lib/agent-id.ts","../../../../../web/src/features/settings/suggest-agent-workspace.ts","../../../../../web/src/features/settings/agents/agents-settings-toolbar.tsx","../../../../../web/src/features/settings/agents/hooks/use-agent-overview-profile-markdown.ts","../../../../../web/src/features/settings/agents/hooks/use-agent-profile-files.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-channel-bindings.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-cron-jobs.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-skills-catalog.ts","../../../../../web/src/features/settings/agents/hooks/use-agents-tools-skills-local-state.ts","../../../../../web/src/features/settings/agents/use-agents-settings-panel.tsx","../../../../../web/src/features/settings/agents/agents-settings-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-field.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/backend-mode-picker.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/backend-mode-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cdp-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/browser-install-progress.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cloak-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/cloud-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/extension-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/local-card.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/use-browser-doctor.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser/use-browser-install-stream.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-route-layout.tsx","../../../../../web/src/features/settings/agents/use-agent-defaults-form.ts","../../../../../web/src/features/settings/agents/agent-browser-settings-page.tsx","../../../../../web/src/features/skills/skills-marketplace-config-api.ts","../../../../../web/src/features/skills/skills-marketplace-config-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/chat-model-fallbacks-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/basics-panel.tsx","../../../../../web/src/features/settings/agents/hooks/use-builtin-tool-ids.ts","../../../../../web/src/features/settings/agents/agent-defaults-panels/builtin-tools-disable-section.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/capabilities-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-advanced-details.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/context-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/expert-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/limits-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/memory-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/skills-allowlist-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/system-prompt-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/workspace-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-tabbed-page.tsx"],"sourcesContent":["import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nexport type AgentDeleteConfirmDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n busy: boolean;\n deletePurge: boolean;\n deleteTarget: GatewayAgentRow | null;\n deleteConfirmText: string;\n onDeleteConfirmTextChange: (value: string) => void;\n onConfirm: () => void;\n onCancel: () => void;\n a: Pick<\n AgentsSettingsMessages,\n | 'purgeDisk'\n | 'removeFromConfig'\n | 'confirmDeletePurge'\n | 'confirmDelete'\n | 'purgeConfirmLabel'\n | 'purgeConfirmPlaceholder'\n | 'purgeConfirmHint'\n | 'createModalCancel'\n >;\n};\n\nexport function AgentDeleteConfirmDialog({\n open,\n onOpenChange,\n busy,\n deletePurge,\n deleteTarget,\n deleteConfirmText,\n onDeleteConfirmTextChange,\n onConfirm,\n onCancel,\n a,\n}: AgentDeleteConfirmDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]\" />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 z-[81] w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-edge bg-surface-panel p-4 shadow-popover',\n 'dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {deletePurge ? a.purgeDisk : a.removeFromConfig}\n </Dialog.Title>\n <Dialog.Description className=\"mt-2 whitespace-pre-wrap text-sm leading-relaxed text-fg-muted\">\n {deletePurge ? a.confirmDeletePurge : a.confirmDelete}\n </Dialog.Description>\n\n {deletePurge && deleteTarget ? (\n <div className=\"mt-3 space-y-3\">\n <label className=\"mb-2 block text-sm font-medium text-fg\" htmlFor=\"agent-delete-confirm\">\n {a.purgeConfirmLabel}\n </label>\n <input\n id=\"agent-delete-confirm\"\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n className={cn(\n 'w-full rounded-md border border-edge bg-surface-panel px-3 py-1.5 font-mono text-xs text-fg',\n 'placeholder:text-fg-subtle',\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 'dark:border-edge',\n )}\n placeholder={a.purgeConfirmPlaceholder.replace('{{agentId}}', deleteTarget.id)}\n value={deleteConfirmText}\n onChange={(e) => onDeleteConfirmTextChange(e.target.value)}\n />\n <p className=\"pt-0.5 text-xs text-fg-muted\">\n {a.purgeConfirmHint.replace('{{agentId}}', deleteTarget.id)}\n </p>\n </div>\n ) : null}\n\n <div className=\"mt-4 flex flex-wrap items-center justify-end gap-2 border-t border-edge-subtle/60 pt-3\">\n <Button type=\"button\" variant=\"ghost\" disabled={busy} onClick={onCancel}>\n {a.createModalCancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={\n deletePurge\n ? 'border-red-200 text-red-700 hover:bg-red-50 dark:border-red-900/60 dark:text-red-300 dark:hover:bg-red-950/40'\n : undefined\n }\n disabled={\n busy ||\n !deleteTarget ||\n (deletePurge && deleteConfirmText.trim().toLowerCase() !== deleteTarget.id.toLowerCase())\n }\n onClick={onConfirm}\n >\n {deletePurge ? a.purgeDisk : a.removeFromConfig}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { Clock, FileText, Plug, Puzzle, User, UserCircle, Wrench } from 'lucide-react';\n\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nimport type { AgentPanel } from './utils';\n\nconst mainNav: { id: AgentPanel; labelKey: keyof AgentsSettingsMessages; icon: typeof User }[] = [\n { id: 'overview', labelKey: 'navIdentity', icon: User },\n { id: 'profile', labelKey: 'navProfile', icon: UserCircle },\n { id: 'tools', labelKey: 'navTools', icon: Wrench },\n { id: 'skills', labelKey: 'navSkills', icon: Puzzle },\n { id: 'files', labelKey: 'navCoreFiles', icon: FileText },\n];\n\nconst advancedNav: { id: AgentPanel; labelKey: keyof AgentsSettingsMessages; icon: typeof Plug }[] = [\n { id: 'channels', labelKey: 'tabChannels', icon: Plug },\n { id: 'cron', labelKey: 'tabCron', icon: Clock },\n];\n\nexport function AgentsEditorSidebar(props: {\n a: AgentsSettingsMessages;\n panel: AgentPanel;\n onPanelChange: (p: AgentPanel) => void;\n}) {\n const { a, panel, onPanelChange } = props;\n\n const item = (id: AgentPanel, label: string, Icon: typeof User) => (\n <button\n key={id}\n type=\"button\"\n onClick={() => onPanelChange(id)}\n className={cn(\n 'flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm font-medium transition-colors',\n interaction.press,\n panel === id\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover hover:text-fg',\n )}\n >\n <Icon className=\"size-4 shrink-0 opacity-90\" strokeWidth={2} aria-hidden />\n <span className=\"min-w-0 truncate\">{label}</span>\n </button>\n );\n\n return (\n <nav className=\"flex w-full flex-col gap-1\" aria-label={a.editorNavAria}>\n <div className=\"flex flex-col gap-0.5\">\n {mainNav.map(({ id, labelKey, icon }) => item(id, a[labelKey] as string, icon))}\n </div>\n <p className=\"mt-4 px-3 text-[10px] font-semibold uppercase tracking-wide text-fg-subtle\">\n {a.navAdvanced}\n </p>\n <div className=\"flex flex-col gap-0.5\">\n {advancedNav.map(({ id, labelKey, icon }) => item(id, a[labelKey] as string, icon))}\n </div>\n </nav>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton } from '@/lib/interaction';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\nimport { SettingsShellLayerProvider } from '@/lib/settings-shell-layer-context';\n\nimport { AgentsEditorSidebar } from './agents-editor-sidebar';\nimport type { AgentPanel } from './utils';\n\nexport function AgentsEditorModal(props: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n a: AgentsSettingsMessages;\n title: string;\n subtitle: string;\n panel: AgentPanel;\n onPanelChange: (p: AgentPanel) => void;\n onFooterSave: () => void;\n footerSaveDisabled: boolean;\n /** Brief \"Saved\" flash after a successful save. */\n footerSavedFlash?: boolean;\n busy: boolean;\n children: ReactNode;\n}) {\n const {\n open,\n onOpenChange,\n a,\n title,\n subtitle,\n panel,\n onPanelChange,\n onFooterSave,\n footerSaveDisabled,\n footerSavedFlash,\n busy,\n children,\n } = props;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('xopc-dialog-overlay fixed inset-0 bg-scrim', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed flex flex-col overflow-hidden rounded-xl border border-edge bg-surface-panel shadow-popover dark:border-edge',\n SETTINGS_SHELL_CONTENT_Z,\n /* Desktop: roomy editor; inner panels scroll. Small viewports stay inset. */\n 'inset-4 h-[calc(100dvh-2rem)] max-h-[calc(100dvh-2rem)] min-h-0',\n 'sm:inset-auto sm:left-1/2 sm:top-1/2 sm:h-[min(88vh,48rem)] sm:max-h-[min(88vh,48rem)] sm:min-h-[32rem] sm:w-[min(100%-2rem,58rem)] sm:-translate-x-1/2 sm:-translate-y-1/2',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <SettingsShellLayerProvider layer=\"modal\">\n <div className=\"flex shrink-0 items-start justify-between gap-2 border-b border-edge-subtle px-4 pb-3 pt-4 dark:border-edge\">\n <div className=\"min-w-0 pr-2\">\n <Dialog.Title className=\"text-base font-semibold leading-snug text-fg\">{title}</Dialog.Title>\n <Dialog.Description className=\"mt-1 font-mono text-xs text-fg-muted\">{subtitle}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n\n <div className=\"flex min-h-0 flex-1 flex-col sm:flex-row sm:overflow-hidden\">\n <div className=\"shrink-0 border-b border-edge-subtle px-4 py-3 dark:border-edge sm:flex sm:w-56 sm:shrink-0 sm:flex-col sm:overflow-y-auto sm:border-b-0 sm:border-r sm:px-0 sm:py-4 sm:pl-4 sm:pr-3\">\n <AgentsEditorSidebar a={a} panel={panel} onPanelChange={onPanelChange} />\n </div>\n\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {/* Flex column + min-h-0 lets Tools/Skills lists fill remaining height and scroll inside */}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden p-4 sm:pl-2 sm:pr-5\">\n {children}\n </div>\n <div className=\"flex shrink-0 flex-col gap-1 border-t border-edge-subtle px-4 py-3 dark:border-edge sm:flex-row sm:items-center sm:justify-end sm:gap-3\">\n {footerSavedFlash ? (\n <p className=\"order-2 text-center text-xs font-medium text-green-600 sm:order-1 sm:mr-auto sm:text-left dark:text-green-400\">\n ✓ {a.personaSaved}\n </p>\n ) : footerSaveDisabled ? (\n <p className=\"order-2 text-center text-xs text-fg-muted sm:order-1 sm:mr-auto sm:text-left\">\n {a.footerSaveNotApplicable}\n </p>\n ) : null}\n <Button\n type=\"button\"\n className=\"order-1 w-full sm:order-2 sm:w-auto\"\n disabled={busy || footerSaveDisabled}\n onClick={() => void onFooterSave()}\n >\n {a.save}\n </Button>\n </div>\n </div>\n </div>\n </SettingsShellLayerProvider>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { GatewayConfigBinding } from '@/features/settings/agents-admin-api';\nimport type { CronJob, SessionChatId } from '@/features/cron/cron-api';\nimport { cn } from '@/lib/cn';\nimport { settingsInputFocusClass } from '@/lib/form-field-width';\n\nexport type AgentPanel = 'overview' | 'profile' | 'files' | 'tools' | 'skills' | 'channels' | 'cron';\n\nexport function agentsSettingsInputClass(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function jobMatchesAgent(job: CronJob, agentId: string, defaultId: string): boolean {\n const raw = job.agentId?.trim().toLowerCase();\n if (raw) {\n return raw === agentId.toLowerCase();\n }\n return agentId.toLowerCase() === defaultId.toLowerCase();\n}\n\nexport function matchSummary(m: GatewayConfigBinding['match']): string {\n const parts = [m.channel, m.accountId, m.peerKind, m.peerId].filter(\n (x): x is string => typeof x === 'string' && x.length > 0,\n );\n return parts.join(' · ') || m.channel;\n}\n\n/** Build a `bindings[].match` for the add-binding form. Custom glob wins over session pick. */\nexport function buildNewBindingMatch(\n channel: string,\n customPeer: string,\n sessionIdx: number | null,\n sessions: SessionChatId[],\n): GatewayConfigBinding['match'] {\n const ch = channel.trim();\n const custom = customPeer.trim();\n if (custom) {\n return { channel: ch, peerId: custom };\n }\n if (sessionIdx != null) {\n const s = sessions[sessionIdx];\n if (!s) {\n return { channel: ch };\n }\n const m: GatewayConfigBinding['match'] = { channel: ch };\n if (s.accountId?.trim()) {\n m.accountId = s.accountId.trim();\n }\n if (s.peerKind?.trim()) {\n m.peerKind = s.peerKind.trim();\n }\n const peer = s.peerId?.trim() || s.chatId?.trim();\n if (peer) {\n m.peerId = peer;\n }\n return m;\n }\n return { channel: ch };\n}\n","import { Link2, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayConfigBinding } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { ChannelStatus, SessionChatId } from '@/features/cron/cron-api';\nimport { formatRecipientOptionLabel } from '@/features/cron/cron-utils';\nimport { selectControlBaseClass } from '@/lib/form-field-width';\nimport { agentsSettingsInputClass, matchSummary } from '../utils';\nimport type { AgentsSettingsMessages, MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nconst channelsPeerIdSelectClass = cn(\n selectControlBaseClass,\n 'w-full text-xs sm:w-auto sm:min-w-[11rem] sm:max-w-[17rem] sm:shrink-0',\n);\n\ntype LastActiveLabels = MessageBundle['cron']['lastActiveLabels'];\n\nexport function AgentChannelsTab(props: {\n a: AgentsSettingsMessages;\n busy: boolean;\n bindingsLoading: boolean;\n agentBindings: GatewayConfigBinding[];\n onRemoveBinding: (rule: GatewayConfigBinding) => void;\n onAddBinding: (e: React.FormEvent) => void;\n channelStatuses: ChannelStatus[];\n channelsStatusLoading: boolean;\n useManualChannel: boolean;\n newBindChannel: string;\n setNewBindChannel: (v: string) => void;\n bindSessionChats: SessionChatId[];\n sessionsLoading: boolean;\n newBindSessionIdx: number | null;\n setNewBindSessionIdx: (v: number | null) => void;\n newBindCustomPeer: string;\n setNewBindCustomPeer: (v: string) => void;\n onRefreshSessions: () => void;\n lastActiveLabels: LastActiveLabels;\n /** Same copy as `cron.selectRecipient` — empty option in peer id dropdown. */\n selectRecipient: string;\n}) {\n const {\n a,\n busy,\n bindingsLoading,\n agentBindings,\n onRemoveBinding,\n onAddBinding,\n channelStatuses,\n channelsStatusLoading,\n useManualChannel,\n newBindChannel,\n setNewBindChannel,\n bindSessionChats,\n sessionsLoading,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n onRefreshSessions,\n lastActiveLabels,\n selectRecipient,\n } = props;\n\n const showPeerForm = !channelsStatusLoading && (useManualChannel || channelStatuses.length > 0);\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col overflow-y-auto\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={Link2}\n title={a.channelsTitle}\n subtitle={a.channelsHint}\n />\n {bindingsLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsLoading}</p>\n ) : agentBindings.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsNone}</p>\n ) : (\n <ul className=\"flex flex-col gap-2 text-sm\">\n {agentBindings.map((b) => (\n <li\n key={`${b.match.channel}-${matchSummary(b.match)}`}\n className=\"flex flex-wrap items-center justify-between gap-2 rounded-lg border border-edge bg-surface-panel px-3 py-2\"\n >\n <span className=\"font-mono text-xs\">{matchSummary(b.match)}</span>\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onRemoveBinding(b)}>\n {a.removeBinding}\n </Button>\n </li>\n ))}\n </ul>\n )}\n <form className=\"mt-4 flex flex-col gap-3\" onSubmit={onAddBinding}>\n {channelsStatusLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.channelsLoadingChannels}</p>\n ) : useManualChannel ? (\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.channelLabel}</span>\n <input\n className={agentsSettingsInputClass()}\n value={newBindChannel}\n onChange={(e) => setNewBindChannel(e.target.value)}\n placeholder=\"telegram\"\n autoComplete=\"off\"\n />\n <p className=\"text-xs text-fg-muted\">{a.channelsManualChannelHint}</p>\n </label>\n ) : (\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.channelLabel}</span>\n <select\n className={cn(agentsSettingsInputClass(), 'py-2')}\n value={newBindChannel}\n onChange={(e) => {\n setNewBindChannel(e.target.value);\n setNewBindSessionIdx(null);\n setNewBindCustomPeer('');\n }}\n >\n {channelStatuses.map((ch) => (\n <option key={ch.name} value={ch.name} disabled={!ch.enabled}>\n {ch.name} {!ch.enabled ? a.channelsDisabledSuffix : ''}\n </option>\n ))}\n </select>\n </label>\n )}\n\n {showPeerForm && newBindChannel.trim() ? (\n <div className=\"flex flex-col gap-2 border-t border-edge-subtle pt-3 text-sm\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-fg-muted\">{a.channelsSessionLabel}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-7 gap-1 px-2 text-xs\"\n disabled={busy || sessionsLoading || !newBindChannel.trim()}\n title={a.channelsRefreshSessionsHint}\n onClick={() => onRefreshSessions()}\n >\n <RefreshCw className={cn('size-3.5', sessionsLoading && 'animate-spin')} strokeWidth={1.75} />\n {a.channelsRefreshSessions}\n </Button>\n </div>\n {sessionsLoading && bindSessionChats.length === 0 ? (\n <p className=\"text-xs text-fg-muted\">{a.channelsLoadingSessions}</p>\n ) : null}\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-fg-muted\">{a.channelsPeerFromSessions}</span>\n <select\n className={cn(agentsSettingsInputClass(), 'py-2')}\n value={newBindSessionIdx == null ? '' : String(newBindSessionIdx)}\n disabled={busy || !newBindChannel.trim() || Boolean(newBindCustomPeer.trim())}\n onChange={(e) => {\n const v = e.target.value;\n setNewBindSessionIdx(v === '' ? null : Number(v));\n }}\n >\n <option value=\"\">{a.channelsPeerAny}</option>\n {bindSessionChats.map((item, idx) => (\n <option key={`${item.channel}-${item.chatId}`} value={String(idx)}>\n {formatRecipientOptionLabel(item, lastActiveLabels)}\n </option>\n ))}\n </select>\n </label>\n {bindSessionChats.length === 0 && newBindChannel.trim() && !sessionsLoading ? (\n <p className=\"text-xs text-fg-muted\">{a.channelsNoSessionsHint}</p>\n ) : null}\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-fg-muted\">{a.peerIdLabel}</span>\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(agentsSettingsInputClass(), 'min-w-0 w-full sm:flex-1')}\n value={newBindCustomPeer}\n onChange={(e) => {\n setNewBindCustomPeer(e.target.value);\n if (e.target.value.trim()) {\n setNewBindSessionIdx(null);\n }\n }}\n placeholder={a.channelsCustomPeerPlaceholder}\n autoComplete=\"off\"\n />\n <select\n className={channelsPeerIdSelectClass}\n value={newBindCustomPeer}\n onChange={(e) => {\n const v = e.target.value;\n if (v) {\n setNewBindCustomPeer(v);\n } else {\n setNewBindCustomPeer('');\n }\n setNewBindSessionIdx(null);\n }}\n >\n <option value=\"\">{selectRecipient}</option>\n {bindSessionChats.map((item) => (\n <option key={`${item.channel}-${item.chatId}`} value={item.chatId}>\n {formatRecipientOptionLabel(item, lastActiveLabels)}\n </option>\n ))}\n </select>\n </div>\n <p className=\"text-xs text-fg-muted\">{a.channelsCustomPeerHint}</p>\n </div>\n </div>\n ) : null}\n\n <div>\n <Button type=\"submit\" disabled={busy || !newBindChannel.trim() || channelsStatusLoading}>\n {a.addBinding}\n </Button>\n </div>\n </form>\n </SettingsFormSection>\n );\n}\n","import {\n formatCronExpressionLabel,\n type ScheduleBadgeLabels,\n} from '@/features/scheduling/cron/format-cron-label';\nimport {\n formatIntervalMsLabel,\n type IntervalPresetLabels,\n} from '@/features/scheduling/interval/format-interval-label';\n\ntype ScheduleSummaryShell = {\n locale: string;\n className?: string;\n};\n\nexport type CronScheduleSummaryProps = ScheduleSummaryShell & {\n kind: 'cron';\n expression: string;\n labels: ScheduleBadgeLabels;\n timezone?: string;\n nextRun?: string | null;\n};\n\nexport type IntervalScheduleSummaryProps = ScheduleSummaryShell & {\n kind: 'interval';\n valueMs: number;\n presetLabels?: IntervalPresetLabels;\n};\n\nexport type ScheduleSummaryProps = CronScheduleSummaryProps | IntervalScheduleSummaryProps;\n\nexport function ScheduleSummary(props: ScheduleSummaryProps) {\n const text =\n props.kind === 'cron'\n ? formatCronExpressionLabel(props.expression, props.locale, props.labels, {\n timezone: props.timezone,\n nextRun: props.nextRun,\n })\n : formatIntervalMsLabel(props.valueMs, props.locale, props.presetLabels);\n\n return <span className={props.className}>{text}</span>;\n}\n","import { AlarmClock } from 'lucide-react';\n\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport { cronJobBodyText, type CronJob } from '@/features/cron/cron-api';\nimport { ScheduleSummary } from '@/features/scheduling/schedule-summary';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { agentsSettingsInputClass } from '../utils';\n\nexport function AgentCronTab(props: {\n a: AgentsSettingsMessages;\n data: { agents: GatewayAgentRow[] };\n selected: GatewayAgentRow;\n busy: boolean;\n cronLoading: boolean;\n agentCronJobs: CronJob[];\n onSetCronJobAgent: (job: CronJob, agentKey: string) => void;\n}) {\n const { a, data, busy, cronLoading, agentCronJobs, onSetCronJobAgent } = props;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const localeTag = language === 'zh' ? 'zh-CN' : 'en-US';\n const scheduleBadgeLabels = m.cron.scheduleBadge;\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col overflow-y-auto\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={AlarmClock}\n title={a.cronTitle}\n subtitle={a.cronHint}\n />\n {cronLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.cronLoading}</p>\n ) : agentCronJobs.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{a.cronNone}</p>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full min-w-[32rem] border-collapse text-left text-sm\">\n <thead>\n <tr className=\"border-b border-edge text-fg-muted\">\n <th className=\"py-2 pr-3 font-medium\">{a.cronColSchedule}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColMessage}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColSession}</th>\n <th className=\"py-2 pr-3 font-medium\">{a.cronColAgent}</th>\n </tr>\n </thead>\n <tbody>\n {agentCronJobs.map((job) => {\n const usesDefaultAgent = !job.agentId?.trim();\n const value = usesDefaultAgent ? '' : job.agentId!.trim().toLowerCase();\n return (\n <tr key={job.id} className=\"border-b border-edge-subtle\">\n <td className=\"py-2 pr-3\">\n <div className=\"flex flex-col gap-0.5\">\n <ScheduleSummary\n kind=\"cron\"\n expression={job.schedule}\n locale={localeTag}\n labels={scheduleBadgeLabels}\n timezone={job.timezone}\n nextRun={job.next_run}\n className=\"text-sm font-medium text-fg\"\n />\n <span className=\"truncate font-mono text-[0.65rem] text-fg-subtle\" title={job.schedule}>\n {job.schedule}\n </span>\n </div>\n </td>\n <td className=\"max-w-[12rem] truncate py-2 pr-3 text-xs\" title={cronJobBodyText(job)}>\n {cronJobBodyText(job)}\n </td>\n <td className=\"py-2 pr-3 text-xs\">{job.sessionTarget ?? 'main'}</td>\n <td className=\"py-2 pr-3\">\n <select\n className={cn(agentsSettingsInputClass(), 'min-w-[8rem] py-1 text-xs')}\n value={value}\n disabled={busy || job.sessionTarget !== 'isolated'}\n onChange={(e) => void onSetCronJobAgent(job, e.target.value)}\n >\n <option value=\"\">{usesDefaultAgent ? a.cronAgentDefault : a.cronAgentClear}</option>\n {data.agents.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {ag.id}\n </option>\n ))}\n </select>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n </SettingsFormSection>\n );\n}\n","import { Eye, SquarePen } from 'lucide-react';\n\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { useThemeStore } from '@/stores/theme-store';\n\nimport { agentsSettingsInputClass } from '../utils';\n\nexport function AgentFilesTab(props: {\n a: AgentsSettingsMessages;\n filesLoading: boolean;\n files: { files: { name: string; missing: boolean }[] } | null;\n activeFile: string | null;\n setActiveFile: (name: string) => void;\n filesViewMode: 'edit' | 'preview';\n setFilesViewMode: (m: 'edit' | 'preview') => void;\n fileDraft: string;\n setFileDraft: (v: string) => void;\n fileSaving: boolean;\n profileFileLoading: boolean;\n /** Bumps when profile Markdown body is loaded from the server (remounts CodeMirror). */\n profileEditorNonce: number;\n}) {\n const {\n a,\n filesLoading,\n files,\n activeFile,\n setActiveFile,\n filesViewMode,\n setFilesViewMode,\n fileDraft,\n setFileDraft,\n fileSaving,\n profileFileLoading,\n profileEditorNonce,\n } = props;\n\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-4 overflow-hidden\">\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesHint}</p>\n {filesLoading ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesLoading}</p>\n ) : files ? (\n <div className=\"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden\">\n <nav\n className=\"flex shrink-0 flex-row flex-wrap gap-x-0.5 gap-y-0 border-b border-edge-subtle\"\n aria-label={a.navCoreFiles}\n >\n {files.files.map((f) => (\n <button\n key={f.name}\n type=\"button\"\n className={cn(\n '-mb-px shrink-0 border-b-2 border-transparent px-3 py-2 text-left font-mono text-xs whitespace-nowrap transition-colors',\n interaction.press,\n activeFile === f.name\n ? 'border-accent text-fg'\n : 'text-fg-muted hover:border-edge-subtle hover:text-fg',\n f.missing && 'opacity-60',\n )}\n onClick={() => setActiveFile(f.name)}\n >\n {f.name}\n {f.missing ? ` (${a.missing})` : ''}\n </button>\n ))}\n </nav>\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col gap-2 overflow-hidden\">\n {activeFile ? (\n <>\n <div className=\"flex shrink-0 flex-wrap items-center justify-between gap-2\">\n <div\n className=\"inline-flex rounded-lg border border-edge bg-surface-panel p-0.5\"\n role=\"group\"\n aria-label={`${a.filesMarkdownEdit} / ${a.filesMarkdownPreview}`}\n >\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 interaction.press,\n filesViewMode === 'edit'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => setFilesViewMode('edit')}\n >\n <SquarePen className=\"size-3.5 shrink-0\" aria-hidden />\n {a.filesMarkdownEdit}\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 interaction.press,\n filesViewMode === 'preview'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => setFilesViewMode('preview')}\n >\n <Eye className=\"size-3.5 shrink-0\" aria-hidden />\n {a.filesMarkdownPreview}\n </button>\n </div>\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-fg-muted\">\n {fileSaving ? <span>{a.filesSavingStatus}</span> : null}\n <span>{a.filesAutoSaveHint}</span>\n </div>\n </div>\n {filesViewMode === 'edit' ? (\n <div\n className={cn(\n agentsSettingsInputClass(),\n 'flex min-h-0 flex-1 flex-col overflow-hidden p-0',\n profileFileLoading && 'pointer-events-none opacity-60',\n )}\n >\n <MarkdownEditor\n key={`${activeFile ?? 'file'}-${profileEditorNonce}`}\n initialContent={fileDraft}\n onChange={setFileDraft}\n isDark={isDark}\n className=\"min-h-0 flex-1\"\n />\n </div>\n ) : (\n <div\n className={cn(\n agentsSettingsInputClass(),\n 'min-h-0 flex-1 overflow-y-auto text-sm',\n profileFileLoading && 'pointer-events-none opacity-60',\n )}\n >\n <MarkdownView content={fileDraft} className=\"text-sm\" />\n </div>\n )}\n </>\n ) : (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.pickFile}</p>\n )}\n </div>\n </div>\n ) : (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.filesEmpty}</p>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { useDirectoryPicker } from '@/features/fs/use-directory-picker';\nimport { DirectoryPickerTrigger } from '@/features/fs/directory-picker-trigger';\nimport { WorkingDirectoryPickerModal } from '@/features/fs/working-directory-picker-modal';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype Props = {\n value: string;\n onChange: (path: string) => void | Promise<void>;\n disabled?: boolean;\n wd: MessageBundle['chat']['workingDirectory'];\n placeholder?: string;\n inputClassName?: string;\n /** Buttons after the folder picker (e.g. set default). */\n trailing?: ReactNode;\n};\n\n/** Path input on the left; folder picker (+ optional actions) on the right — stacks on small screens. */\nexport function DirectoryPickerPathField({\n value,\n onChange,\n disabled,\n wd,\n placeholder,\n inputClassName,\n trailing,\n}: Props) {\n const picker = useDirectoryPicker({ initialPath: value, onPicked: onChange });\n\n const trimmed = value.trim();\n const pickTitle = trimmed\n ? `${trimmed}\\n${wd.chooseFolder}`\n : `${placeholder ?? wd.notSet}\\n${wd.selectWorkingDirectory}`;\n\n return (\n <>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center\">\n <input\n type=\"text\"\n className={cn('min-w-0 flex-1', inputClassName)}\n value={value}\n disabled={disabled || picker.picking}\n onChange={(e) => void onChange(e.target.value)}\n placeholder={placeholder ?? wd.pathInputPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n />\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n <DirectoryPickerTrigger\n compact\n value={value}\n onPick={picker.pick}\n disabled={disabled || picker.picking}\n title={pickTitle}\n aria-label={wd.selectWorkingDirectory}\n />\n {trailing}\n </div>\n </div>\n\n {!picker.hasNativePicker ? (\n <WorkingDirectoryPickerModal\n open={picker.modalOpen}\n onOpenChange={picker.setModalOpen}\n initialAbsolutePath={trimmed || undefined}\n onConfirm={picker.confirmPick}\n wd={wd}\n />\n ) : null}\n </>\n );\n}\n","import { Link2 } from 'lucide-react';\nimport { Link } from 'react-router-dom';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nfunction InheritanceRow({\n label,\n mode,\n value,\n inheritedFrom,\n inheritLabel,\n overrideLabel,\n}: {\n label: string;\n mode: 'inherit' | 'override';\n value: string;\n inheritedFrom?: string;\n inheritLabel: string;\n overrideLabel: string;\n}) {\n return (\n <div className=\"flex flex-col gap-1 rounded-xl border border-edge-subtle bg-surface-panel px-4 py-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-fg-subtle\">{label}</p>\n <p className=\"mt-1 truncate text-sm font-medium text-fg\">{value || '—'}</p>\n {mode === 'inherit' && inheritedFrom ? (\n <p className=\"mt-0.5 truncate text-xs text-fg-muted\">{inheritedFrom}</p>\n ) : null}\n </div>\n <span\n className={cn(\n 'mt-2 inline-flex shrink-0 self-start rounded-full px-2.5 py-0.5 text-xs font-medium sm:mt-0',\n mode === 'inherit'\n ? 'bg-surface-hover text-fg-muted'\n : 'bg-accent-soft text-accent-fg',\n )}\n >\n {mode === 'inherit' ? inheritLabel : overrideLabel}\n </span>\n </div>\n );\n}\n\nexport function AgentConfigInheritanceSummary(props: {\n a: AgentsSettingsMessages;\n defaultModel: string;\n defaultWorkspace: string;\n agentModel: string;\n agentWorkspace: string;\n settingsPath?: string;\n}) {\n const { a, defaultModel, defaultWorkspace, agentModel, agentWorkspace, settingsPath = '/settings/agent-defaults' } =\n props;\n const inh = a.inheritance;\n\n const modelInherits = !agentModel.trim();\n const workspaceInherits =\n !agentWorkspace.trim() ||\n (defaultWorkspace.trim().length > 0 && agentWorkspace.trim() === defaultWorkspace.trim());\n\n const displayModel = modelInherits ? defaultModel || inh.unset : agentModel;\n const displayWorkspace = workspaceInherits ? defaultWorkspace || inh.unset : agentWorkspace;\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={Link2}\n title={inh.title}\n subtitle={inh.subtitle}\n trailing={\n <Link\n to={settingsPath}\n className=\"text-xs font-medium text-accent hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n >\n {inh.editDefaultsLink}\n </Link>\n }\n />\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n <InheritanceRow\n label={inh.modelLabel}\n mode={modelInherits ? 'inherit' : 'override'}\n value={displayModel}\n inheritedFrom={\n modelInherits && defaultModel\n ? inh.inheritsValue.replace('{{value}}', defaultModel)\n : undefined\n }\n inheritLabel={inh.badgeInherit}\n overrideLabel={inh.badgeOverride}\n />\n <InheritanceRow\n label={inh.workspaceLabel}\n mode={workspaceInherits ? 'inherit' : 'override'}\n value={displayWorkspace}\n inheritedFrom={\n workspaceInherits && defaultWorkspace\n ? inh.inheritsValue.replace('{{value}}', defaultWorkspace)\n : undefined\n }\n inheritLabel={inh.badgeInherit}\n overrideLabel={inh.badgeOverride}\n />\n </div>\n </SettingsFormSection>\n );\n}\n","import * as Popover from '@radix-ui/react-popover';\nimport { Upload } from 'lucide-react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nimport {\n deleteAgentAvatarFile,\n uploadAgentAvatarFile,\n} from '@/features/settings/agents-admin-api';\n\nimport { AgentAvatarDisplay } from './agent-avatar-display';\nimport {\n DICEBEAR_MORE_SEEDS,\n DICEBEAR_ROW_SEEDS,\n DICEBEAR_STYLE_ORDER,\n XOPC_CUSTOM_AVATAR,\n buildXopcDicebearValue,\n dicebearToDataUri,\n isDicebearStyleId,\n parseXopcDicebearValue,\n type DicebearStyleId,\n} from './agent-avatar-dicebear';\n\nfunction styleLabel(style: DicebearStyleId, a: AgentsSettingsMessages): string {\n switch (style) {\n case 'adventurer':\n return a.avatarStyleAdventurer;\n case 'bottts':\n return a.avatarStyleRobot;\n case 'lorelei':\n return a.avatarStyleLorelei;\n case 'thumbs':\n return a.avatarStyleThumbs;\n case 'fun-emoji':\n return a.avatarStyleFunEmoji;\n default:\n return style;\n }\n}\n\nexport function AgentAvatarPicker(props: {\n agentId: string;\n value: string;\n onChange: (next: string) => void;\n a: AgentsSettingsMessages;\n /** Optional root id (e.g. for scroll-into-view); omit when embedded in a dialog. */\n id?: string;\n}) {\n const { agentId, value, onChange, a, id } = props;\n const fileRef = useRef<HTMLInputElement>(null);\n const [uploadBusy, setUploadBusy] = useState(false);\n const [uploadError, setUploadError] = useState<string | null>(null);\n const [moreOpen, setMoreOpen] = useState(false);\n\n const activeStyle = useMemo((): DicebearStyleId => {\n const p = parseXopcDicebearValue(value.trim());\n if (p && isDicebearStyleId(p.styleId)) {\n return p.styleId;\n }\n return DICEBEAR_STYLE_ORDER[0] ?? 'adventurer';\n }, [value]);\n\n const pickDicebear = useCallback(\n async (styleId: DicebearStyleId, seed: string) => {\n try {\n await deleteAgentAvatarFile(agentId);\n } catch {\n /* best-effort: clear binary when switching away from custom */\n }\n onChange(buildXopcDicebearValue(styleId, seed));\n setMoreOpen(false);\n },\n [agentId, onChange],\n );\n\n const onFile = useCallback(\n async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n e.target.value = '';\n if (!file) {\n return;\n }\n setUploadError(null);\n setUploadBusy(true);\n try {\n await uploadAgentAvatarFile(agentId, file);\n onChange(XOPC_CUSTOM_AVATAR);\n } catch (err) {\n const code = err instanceof Error ? err.message : '';\n if (code === 'avatar_too_large') {\n setUploadError(a.avatarTooLarge);\n } else if (code === 'unsupported_image_type' || code === 'empty_file') {\n setUploadError(a.avatarInvalidImage);\n } else {\n setUploadError(a.avatarUploadFailed);\n }\n } finally {\n setUploadBusy(false);\n }\n },\n [a, agentId, onChange],\n );\n\n const isRowSeedActive = (styleId: DicebearStyleId, seed: string) => {\n const p = parseXopcDicebearValue(value.trim());\n return Boolean(p && p.styleId === styleId && p.seed === seed);\n };\n\n return (\n <div {...(id ? { id } : {})} className=\"flex flex-col gap-3 sm:col-span-2\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-sm font-medium text-fg\">{a.avatarPickerTitle}</span>\n <div className=\"flex items-center gap-2\">\n <input\n ref={fileRef}\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp,.png,.jpg,.jpeg,.webp\"\n className=\"hidden\"\n onChange={(ev) => void onFile(ev)}\n />\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"gap-1.5 px-2.5 py-1.5 text-xs\"\n disabled={uploadBusy}\n onClick={() => fileRef.current?.click()}\n >\n <Upload className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {uploadBusy ? a.avatarUploading : a.avatarUploadCustom}\n </Button>\n </div>\n </div>\n\n {uploadError ? <p className=\"text-xs text-red-600 dark:text-red-400\">{uploadError}</p> : null}\n\n <div className=\"flex flex-wrap gap-2\">\n {DICEBEAR_STYLE_ORDER.map((id) => (\n <button\n key={id}\n type=\"button\"\n onClick={() => void pickDicebear(id, DICEBEAR_ROW_SEEDS[0] ?? agentId)}\n className={cn(\n 'rounded-full border px-3 py-1.5 text-xs font-medium transition-colors',\n interaction.press,\n activeStyle === id\n ? 'border-fg bg-fg text-surface-base'\n : 'border-edge-subtle bg-surface-panel text-fg hover:border-edge',\n )}\n >\n {styleLabel(id, a)}\n </button>\n ))}\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface-panel/50 p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {DICEBEAR_ROW_SEEDS.map((seed) => (\n <button\n key={seed}\n type=\"button\"\n title={seed}\n onClick={() => void pickDicebear(activeStyle, seed)}\n className={cn(\n 'flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-colors',\n interaction.press,\n isRowSeedActive(activeStyle, seed)\n ? 'border-accent ring-2 ring-accent/30'\n : 'border-transparent hover:border-edge',\n )}\n >\n <img\n src={dicebearToDataUri(activeStyle, seed, 96)}\n alt=\"\"\n width={44}\n height={44}\n className=\"size-11 rounded-full object-cover\"\n draggable={false}\n />\n </button>\n ))}\n\n <Popover.Root open={moreOpen} onOpenChange={setMoreOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex size-12 shrink-0 items-center justify-center rounded-xl border border-edge-subtle bg-surface-base text-xs font-medium text-fg-muted hover:border-edge hover:text-fg',\n interaction.press,\n )}\n >\n {a.avatarMore}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n className=\"z-[80] max-h-72 w-[min(22rem,calc(100vw-2rem))] overflow-y-auto rounded-xl border border-edge-subtle bg-surface-panel p-3 shadow-lg\"\n sideOffset={6}\n align=\"end\"\n >\n <p className=\"mb-2 text-xs font-medium text-fg-muted\">{styleLabel(activeStyle, a)}</p>\n <div className=\"flex flex-wrap gap-2\">\n {DICEBEAR_MORE_SEEDS.map((seed) => (\n <button\n key={seed}\n type=\"button\"\n title={seed}\n onClick={() => void pickDicebear(activeStyle, seed)}\n className={cn(\n 'flex size-11 shrink-0 items-center justify-center rounded-full border-2 transition-colors',\n interaction.press,\n isRowSeedActive(activeStyle, seed)\n ? 'border-accent ring-2 ring-accent/30'\n : 'border-transparent hover:border-edge',\n )}\n >\n <img\n src={dicebearToDataUri(activeStyle, seed, 88)}\n alt=\"\"\n width={40}\n height={40}\n className=\"size-10 rounded-full object-cover\"\n draggable={false}\n />\n </button>\n ))}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n\n <div className=\"mt-3 flex items-center gap-2 border-t border-edge-subtle pt-3\">\n <span className=\"text-xs text-fg-muted\">{a.personaAvatar}</span>\n <AgentAvatarDisplay agentId={agentId} avatar={value} size={40} />\n {value.trim() && !parseXopcDicebearValue(value.trim()) && value.trim() !== XOPC_CUSTOM_AVATAR ? (\n <span className=\"truncate font-mono text-[10px] text-fg-muted\" title={value}>\n {value}\n </span>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","/**\n * Bidirectional parser for agent profile Markdown (IDENTITY.md, USER.md, SOUL.md).\n *\n * Converts structured form fields ↔ Markdown so the settings UI can use friendly\n * inputs while keeping the on-disk format compatible with the agent runtime.\n */\n\n// ---------------------------------------------------------------------------\n// IDENTITY.md\n// ---------------------------------------------------------------------------\n\nexport interface IdentityFields {\n name: string;\n creature: string;\n emoji: string;\n avatar: string;\n}\n\nconst IDENTITY_DEFAULTS: IdentityFields = {\n name: '',\n creature: '',\n emoji: '',\n avatar: '',\n};\n\n/**\n * Parse IDENTITY.md content into structured fields.\n *\n * Handles the template format:\n * - **Name:** value\n * - **Creature:** value\n * - **Vibe:** value\n * - **Emoji:** value\n * - **Avatar:** value\n */\nexport function parseIdentityMarkdown(content: string): IdentityFields {\n const fields = { ...IDENTITY_DEFAULTS };\n if (!content.trim()) {\n return fields;\n }\n\n const fieldMap: Record<string, keyof IdentityFields> = {\n name: 'name',\n creature: 'creature',\n emoji: 'emoji',\n avatar: 'avatar',\n };\n\n for (const line of content.split('\\n')) {\n const match = line.match(/^[-*]\\s+\\*\\*(\\w+):\\*\\*\\s*(.*)/i);\n if (!match) {\n continue;\n }\n const label = match[1].toLowerCase();\n const fieldKey = fieldMap[label];\n if (!fieldKey) {\n continue;\n }\n let value = match[2].trim();\n // Strip template placeholders like _(pick something you like)_\n if (/^_\\(.*\\)_$/.test(value)) {\n value = '';\n }\n fields[fieldKey] = value;\n }\n\n return fields;\n}\n\n/**\n * Serialize structured identity fields back to IDENTITY.md Markdown.\n */\nexport function serializeIdentityMarkdown(fields: IdentityFields): string {\n const lines = [\n '# IDENTITY.md - Who Am I?',\n '',\n `- **Name:** ${fields.name}`,\n `- **Creature:** ${fields.creature}`,\n `- **Emoji:** ${fields.emoji}`,\n `- **Avatar:** ${fields.avatar}`,\n '',\n ];\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// USER.md (human side of the profile)\n// ---------------------------------------------------------------------------\n\nexport interface UserFields {\n callName: string;\n pronouns: string;\n timezone: string;\n notes: string;\n}\n\nconst USER_DEFAULTS: UserFields = {\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n};\n\n/**\n * Parse USER.md content into structured fields.\n *\n * Handles the template format:\n * - **Name:** value\n * - **What to call them:** value\n * - **Pronouns:** value\n * - **Timezone:** value\n * - **Notes:** value\n *\n * Also captures the Context section as free-text notes.\n */\nexport function parseUserMarkdown(content: string): UserFields {\n const fields = { ...USER_DEFAULTS };\n if (!content.trim()) {\n return fields;\n }\n\n const fieldMap: Record<string, keyof UserFields> = {\n name: 'callName',\n 'what to call them': 'callName',\n pronouns: 'pronouns',\n timezone: 'timezone',\n notes: 'notes',\n };\n\n const lines = content.split('\\n');\n let contextStartIndex = -1;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Detect the ## Context section\n if (/^##\\s+Context/i.test(line)) {\n contextStartIndex = i + 1;\n continue;\n }\n\n const match = line.match(/^[-*]\\s+\\*\\*(.+?):\\*\\*\\s*(.*)/i);\n if (!match) {\n continue;\n }\n const label = match[1].toLowerCase().trim();\n const fieldKey = fieldMap[label];\n if (!fieldKey) {\n continue;\n }\n let value = match[2].trim();\n // Strip template placeholders like _(optional)_\n if (/^_\\(.*\\)_$/.test(value)) {\n value = '';\n }\n fields[fieldKey] = value;\n }\n\n // Capture context section content as extra notes\n if (contextStartIndex > 0) {\n const contextLines = lines.slice(contextStartIndex);\n const contextText = contextLines\n .join('\\n')\n .replace(/^_\\(.*?\\)_\\s*/gm, '') // strip template placeholders\n .replace(/^---\\s*$/gm, '') // strip trailing horizontal rules\n .replace(/The more you know.*$/s, '') // strip template footer\n .trim();\n\n if (contextText && !fields.notes) {\n fields.notes = contextText;\n }\n }\n\n return fields;\n}\n\n/**\n * Serialize structured user fields back to USER.md Markdown.\n */\nexport function serializeUserMarkdown(fields: UserFields): string {\n const lines = [\n '# USER.md - About Your Human',\n '',\n `- **Name:** ${fields.callName}`,\n `- **Pronouns:** ${fields.pronouns}`,\n `- **Timezone:** ${fields.timezone}`,\n '',\n ];\n\n if (fields.notes.trim()) {\n lines.push('## Context', '', fields.notes.trim(), '');\n }\n\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n// SOUL.md\n// ---------------------------------------------------------------------------\n\n/** Pre-defined soul templates for quick selection. */\nexport type SoulTemplateId = 'professional' | 'casual' | 'geeky' | 'custom';\n\nexport interface SoulTemplate {\n id: SoulTemplateId;\n labelEn: string;\n labelZh: string;\n emoji: string;\n content: string;\n}\n\nexport const SOUL_TEMPLATES: SoulTemplate[] = [\n {\n id: 'professional',\n labelEn: 'Professional & Efficient',\n labelZh: '专业高效',\n emoji: '🎯',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Be genuinely helpful, not performatively helpful.** Skip the filler words — just help. Actions speak louder than pleasantries.\n\n**Be precise and efficient.** Value the user's time. Give concise, actionable answers. Expand only when asked.\n\n**Earn trust through competence.** Be careful with external actions. Be bold with internal ones (reading, organizing, learning).\n\n**Remember you're a guest.** You have access to someone's life. Treat it with respect.\n\n## Boundaries\n\n- Private things stay private. Period.\n- When in doubt, ask before acting externally.\n- Never send half-baked replies to messaging surfaces.\n\n## Vibe\n\nProfessional, competent, and respectful. Concise when needed, thorough when it matters.`,\n },\n {\n id: 'casual',\n labelEn: 'Warm & Friendly',\n labelZh: '轻松友好',\n emoji: '😊',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Be a good friend, not a corporate drone.** Be warm, genuine, and real. Skip the formality when it gets in the way.\n\n**Have personality.** You're allowed to be amused, surprised, or excited. An assistant with no personality is just a search engine.\n\n**Be resourceful before asking.** Try to figure it out first. Then ask if you're stuck.\n\n**Earn trust by being reliable.** Show up, follow through, and remember what matters.\n\n**Respect the intimacy.** You have access to someone's life. That's a privilege.\n\n## Boundaries\n\n- Private things stay private. Always.\n- When in doubt, ask before acting externally.\n- Be careful in group chats — you're not the user's voice.\n\n## Vibe\n\nWarm, friendly, and a little playful. Like a helpful friend who happens to know everything.`,\n },\n {\n id: 'geeky',\n labelEn: 'Geeky & Witty',\n labelZh: '极客风格',\n emoji: '🧑💻',\n content: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Precision over politeness.** \"This is broken\" beats \"This might be worth considering.\" Be direct.\n\n**Have opinions.** Disagree, prefer things, find stuff interesting or dull. No personality = no value.\n\n**Go deep.** When something is interesting, explore it. Surface-level answers are for search engines.\n\n**Be resourceful.** Read the file. Check the context. Search for it. Come back with answers, not questions.\n\n**Earn trust through competence.** Be careful with external actions. Be bold with internal ones.\n\n## Boundaries\n\n- Private things stay private.\n- When in doubt, ask before acting externally.\n- Never send half-baked replies.\n\n## Vibe\n\nSharp, direct, slightly nerdy. The kind of engineer you'd want on your team — competent, opinionated, and occasionally funny.`,\n },\n {\n id: 'custom',\n labelEn: 'Custom',\n labelZh: '自定义',\n emoji: '✍️',\n content: '',\n },\n];\n\n/**\n * Strip YAML front matter (--- ... ---) from the beginning of Markdown content.\n */\nfunction stripFrontMatterForParsing(content: string): string {\n const trimmed = content.trimStart();\n if (!trimmed.startsWith('---')) {\n return content;\n }\n const endIndex = trimmed.indexOf('---', 3);\n if (endIndex === -1) {\n return content;\n }\n return trimmed.slice(endIndex + 3).trimStart();\n}\n\n/**\n * Detect which soul template best matches the current content.\n * Falls back to 'custom' if no template matches closely.\n */\nexport function detectSoulTemplate(content: string): SoulTemplateId {\n const stripped = stripFrontMatterForParsing(content).trim();\n if (!stripped) {\n return 'professional'; // default for empty content\n }\n\n // Compare against known templates by checking key phrases\n for (const template of SOUL_TEMPLATES) {\n if (template.id === 'custom') {\n continue;\n }\n // Check if the content closely matches the template\n const templateStripped = template.content.trim();\n if (stripped === templateStripped) {\n return template.id;\n }\n // Fuzzy: check for unique key phrases in each template\n const matchCount = countDistinctTemplatePhraseHits(stripped, template.id);\n if (matchCount >= 2) return template.id;\n }\n\n return 'custom';\n}\n\nconst SOUL_TEMPLATE_PHRASE_PATTERNS: Partial<Record<SoulTemplateId, RegExp>> = {\n professional: /precise and efficient|Value the user's time|actionable answers/g,\n casual: /good friend|corporate drone|a little playful/g,\n geeky: /Precision over politeness|Go deep|slightly nerdy/g,\n};\n\nfunction countDistinctTemplatePhraseHits(text: string, templateId: SoulTemplateId): number {\n const pattern = SOUL_TEMPLATE_PHRASE_PATTERNS[templateId];\n if (!pattern) return 0;\n const re = new RegExp(pattern.source, 'g');\n const hits = new Set<string>();\n let match: RegExpExecArray | null;\n while ((match = re.exec(text)) !== null) {\n hits.add(match[0]);\n if (hits.size >= 2) return hits.size;\n }\n return hits.size;\n}\n\n// ---------------------------------------------------------------------------\n// Timezone helpers\n// ---------------------------------------------------------------------------\n\n/** Common timezone options for the dropdown. */\nexport const TIMEZONE_OPTIONS = [\n { value: '', labelEn: 'Not set', labelZh: '未设置' },\n { value: 'Asia/Shanghai', labelEn: 'Asia/Shanghai (CST, UTC+8)', labelZh: '亚洲/上海 (北京时间, UTC+8)' },\n { value: 'Asia/Tokyo', labelEn: 'Asia/Tokyo (JST, UTC+9)', labelZh: '亚洲/东京 (日本时间, UTC+9)' },\n { value: 'Asia/Seoul', labelEn: 'Asia/Seoul (KST, UTC+9)', labelZh: '亚洲/首尔 (韩国时间, UTC+9)' },\n { value: 'Asia/Singapore', labelEn: 'Asia/Singapore (SGT, UTC+8)', labelZh: '亚洲/新加坡 (UTC+8)' },\n { value: 'Asia/Hong_Kong', labelEn: 'Asia/Hong Kong (HKT, UTC+8)', labelZh: '亚洲/香港 (UTC+8)' },\n { value: 'Asia/Taipei', labelEn: 'Asia/Taipei (CST, UTC+8)', labelZh: '亚洲/台北 (UTC+8)' },\n { value: 'Asia/Kolkata', labelEn: 'Asia/Kolkata (IST, UTC+5:30)', labelZh: '亚洲/加尔各答 (印度时间, UTC+5:30)' },\n { value: 'Asia/Dubai', labelEn: 'Asia/Dubai (GST, UTC+4)', labelZh: '亚洲/迪拜 (UTC+4)' },\n { value: 'Europe/London', labelEn: 'Europe/London (GMT/BST)', labelZh: '欧洲/伦敦 (格林尼治时间)' },\n { value: 'Europe/Paris', labelEn: 'Europe/Paris (CET, UTC+1)', labelZh: '欧洲/巴黎 (中欧时间, UTC+1)' },\n { value: 'Europe/Berlin', labelEn: 'Europe/Berlin (CET, UTC+1)', labelZh: '欧洲/柏林 (中欧时间, UTC+1)' },\n { value: 'Europe/Moscow', labelEn: 'Europe/Moscow (MSK, UTC+3)', labelZh: '欧洲/莫斯科 (UTC+3)' },\n { value: 'America/New_York', labelEn: 'America/New York (EST, UTC-5)', labelZh: '美国/纽约 (东部时间, UTC-5)' },\n { value: 'America/Chicago', labelEn: 'America/Chicago (CST, UTC-6)', labelZh: '美国/芝加哥 (中部时间, UTC-6)' },\n { value: 'America/Denver', labelEn: 'America/Denver (MST, UTC-7)', labelZh: '美国/丹佛 (山地时间, UTC-7)' },\n { value: 'America/Los_Angeles', labelEn: 'America/Los Angeles (PST, UTC-8)', labelZh: '美国/洛杉矶 (太平洋时间, UTC-8)' },\n { value: 'America/Sao_Paulo', labelEn: 'America/São Paulo (BRT, UTC-3)', labelZh: '美洲/圣保罗 (巴西时间, UTC-3)' },\n { value: 'Australia/Sydney', labelEn: 'Australia/Sydney (AEST, UTC+10)', labelZh: '澳大利亚/悉尼 (UTC+10)' },\n { value: 'Pacific/Auckland', labelEn: 'Pacific/Auckland (NZST, UTC+12)', labelZh: '太平洋/奥克兰 (新西兰时间, UTC+12)' },\n] as const;\n\n/**\n * Try to detect the user's timezone from the browser.\n */\nexport function detectBrowserTimezone(): string {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n return '';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Vibe presets\n// ---------------------------------------------------------------------------\n\nexport const PRONOUNS_PRESETS = [\n { value: '先生', labelEn: 'Mr.', labelZh: '先生' },\n { value: '女士', labelEn: 'Ms.', labelZh: '女士' },\n { value: '同学', labelEn: 'Colleague', labelZh: '同学' },\n { value: '老师', labelEn: 'Teacher', labelZh: '老师' },\n { value: '老板', labelEn: 'Boss', labelZh: '老板' },\n { value: '朋友', labelEn: 'Friend', labelZh: '朋友' },\n] as const;\n\n// ---------------------------------------------------------------------------\n// Creature presets\n// ---------------------------------------------------------------------------\n\nexport const CREATURE_PRESETS = [\n { value: 'AI assistant', labelEn: 'AI Assistant', labelZh: 'AI 助手' },\n { value: 'robot', labelEn: 'Robot', labelZh: '机器人' },\n { value: 'familiar', labelEn: 'Familiar', labelZh: '精灵' },\n { value: 'ghost in the machine', labelEn: 'Ghost in the machine', labelZh: '机器幽灵' },\n { value: 'digital companion', labelEn: 'Digital Companion', labelZh: '数字伙伴' },\n] as const;\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { useCallback } from 'react';\nimport { AlertTriangle, Cog, Eye, Pencil, Sparkles, Trash2, User, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { DirectoryPickerPathField } from '@/features/fs/directory-picker-path-field';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { OverviewProfileDraft } from '@/features/settings/agents/hooks/use-agent-overview-profile-markdown';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton, interaction } from '@/lib/interaction';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { useThemeStore } from '@/stores/theme-store';\n\nimport { AgentConfigInheritanceSummary } from '../agent-config-inheritance-summary';\nimport { AgentAvatarDisplay } from '../agent-avatar-display';\nimport { AgentAvatarPicker } from '../agent-avatar-picker';\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n CREATURE_PRESETS,\n SOUL_TEMPLATES,\n type SoulTemplateId,\n} from '../agent-profile-markdown';\n\nexport function AgentOverviewTab(props: {\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n selected: GatewayAgentRow | null;\n busy: boolean;\n editName: string;\n setEditName: (v: string) => void;\n editDescription: string;\n setEditDescription: (v: string) => void;\n editWorkspace: string;\n setEditWorkspace: (v: string) => void;\n editModel: string;\n setEditModel: (v: string) => void;\n onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n hideInlineSave?: boolean;\n profileMarkdownLoading: boolean;\n profileDraft: OverviewProfileDraft | null;\n updateIdentity: (patch: Partial<OverviewProfileDraft['identity']>) => void;\n handleSoulTemplateChange: (templateId: SoulTemplateId) => void;\n handleSoulContentChange: (content: string) => void;\n setAvatarDialogOpen: (open: boolean) => void;\n toggleSoulPreviewMode: () => void;\n defaultModel?: string;\n defaultWorkspace?: string;\n}) {\n const {\n a,\n chat,\n selected,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n onSetDefault,\n onSaveAgentEdits,\n onDelete,\n hideInlineSave,\n profileMarkdownLoading,\n profileDraft,\n updateIdentity,\n handleSoulTemplateChange,\n handleSoulContentChange,\n setAvatarDialogOpen,\n toggleSoulPreviewMode,\n defaultModel = '',\n defaultWorkspace = '',\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n const identity = profileDraft?.identity ?? { name: '', creature: '', emoji: '', avatar: '' };\n const soulTemplate = profileDraft?.soulTemplate ?? 'professional';\n const soulCustomContent = profileDraft?.soulCustomContent ?? '';\n const soulEditorNonce = profileDraft?.soulEditorNonce ?? 0;\n const soulPreviewMode = profileDraft?.soulPreviewMode ?? false;\n const avatarDialogOpen = profileDraft?.avatarDialogOpen ?? false;\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n const inputClass = agentsSettingsInputClass();\n\n if (!selected) {\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n }\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-8 overflow-y-auto\">\n <AgentConfigInheritanceSummary\n a={a}\n defaultModel={defaultModel}\n defaultWorkspace={defaultWorkspace}\n agentModel={editModel}\n agentWorkspace={editWorkspace}\n />\n\n {/* ===== Section 1: Basic Identity ===== */}\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={Sparkles}\n title={a.personaSectionIdentity}\n subtitle={a.personaSectionIdentityHint}\n iconLeading={\n <AgentAvatarDisplay\n agentId={selected.id}\n avatar={identity.avatar}\n size={36}\n className=\"size-9 rounded-lg\"\n />\n }\n iconInteractive={{\n onClick: () => setAvatarDialogOpen(true),\n ariaLabel: a.avatarOpenSettingsAria,\n id: 'agent-avatar-settings',\n }}\n trailing={\n !selected.isDefault ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"text-xs\"\n disabled={busy}\n onClick={() => void onSetDefault()}\n >\n {a.setDefault}\n </Button>\n ) : null\n }\n />\n\n <Dialog.Root open={avatarDialogOpen} onOpenChange={setAvatarDialogOpen}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('fixed inset-0 bg-scrim backdrop-blur-[2px]', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 w-[min(calc(100vw-2rem),26rem)] max-h-[min(90dvh,36rem)] -translate-x-1/2 -translate-y-1/2 overflow-y-auto rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge',\n SETTINGS_SHELL_CONTENT_Z,\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"mb-3 flex items-start justify-between gap-2\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">{a.avatarPickerTitle}</Dialog.Title>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n <Dialog.Description className=\"sr-only\">{a.avatarRowHint}</Dialog.Description>\n <AgentAvatarPicker\n agentId={selected.id}\n value={identity.avatar}\n onChange={(next) => updateIdentity({ avatar: next })}\n a={a}\n />\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.displayName}</span>\n <input\n className={inputClass}\n value={editName}\n onChange={(e) => {\n setEditName(e.target.value);\n updateIdentity({ name: e.target.value });\n }}\n placeholder={a.personaNamePlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaEmoji}</span>\n <input\n className={inputClass}\n value={identity.emoji}\n onChange={(e) => updateIdentity({ emoji: e.target.value })}\n placeholder={a.personaEmojiPlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.agentDescription}</span>\n <textarea\n className={cn(inputClass, 'min-h-16 resize-y text-sm leading-relaxed')}\n value={editDescription}\n onChange={(e) => setEditDescription(e.target.value)}\n placeholder={a.agentDescriptionPlaceholder}\n maxLength={4000}\n rows={3}\n spellCheck\n />\n </label>\n\n <div className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaCreature}</span>\n <select\n className={inputClass}\n value={CREATURE_PRESETS.some((p) => p.value === identity.creature) ? identity.creature : '__custom__'}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n updateIdentity({ creature: '' });\n return;\n }\n updateIdentity({ creature: e.target.value });\n }}\n >\n {CREATURE_PRESETS.map((preset) => (\n <option key={preset.value} value={preset.value}>\n {locLabel(preset.labelEn, preset.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{locLabel('Custom…', '自定义…')}</option>\n </select>\n {!CREATURE_PRESETS.some((p) => p.value === identity.creature) ? (\n <input\n className={cn(inputClass, 'mt-1 text-xs')}\n value={identity.creature}\n onChange={(e) => updateIdentity({ creature: e.target.value })}\n placeholder={a.personaCreaturePlaceholder}\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n </div>\n </SettingsFormSection>\n\n {/* ===== Section 2: Runtime Configuration ===== */}\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cog} title={a.editAgent} subtitle={a.editAgentHint} />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.modelPrimary}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <ModelSelector\n className=\"min-w-0 flex-1\"\n value={editModel}\n disabled={busy}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(id) => setEditModel(id)}\n />\n {editModel.trim() ? (\n <Button type=\"button\" variant=\"secondary\" className=\"shrink-0\" disabled={busy} onClick={() => setEditModel('')}>\n {a.modelClear}\n </Button>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.workspacePath}</span>\n <DirectoryPickerPathField\n value={editWorkspace}\n onChange={setEditWorkspace}\n disabled={busy}\n wd={chat.workingDirectory}\n placeholder={chat.workingDirectory.notSet}\n inputClassName={cn(inputClass, 'font-mono text-xs')}\n />\n </div>\n </div>\n {!hideInlineSave ? (\n <div className=\"mt-4\">\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveAgentEdits()}>\n {a.save}\n </Button>\n </div>\n ) : null}\n </SettingsFormSection>\n\n {/* ===== Section 3: Personality & Style ===== */}\n {profileMarkdownLoading ? (\n <p className=\"text-sm text-fg-muted\">{a.loading}</p>\n ) : (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={User} title={a.personaSectionSoul} subtitle={a.personaSectionSoulHint} />\n <div className=\"mb-4 flex flex-col gap-2\">\n <span className=\"text-sm font-medium text-fg\">{a.personaSoulTemplate}</span>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-4\">\n {SOUL_TEMPLATES.map((template) => (\n <button\n key={template.id}\n type=\"button\"\n className={cn(\n 'flex flex-col items-center gap-1.5 rounded-xl border-2 p-3 text-center transition-all',\n interaction.pressCard,\n soulTemplate === template.id\n ? 'border-accent bg-accent-soft/40 shadow-sm'\n : 'border-edge hover:border-accent/40 hover:bg-surface-hover',\n )}\n onClick={() => handleSoulTemplateChange(template.id)}\n >\n <span className=\"text-xl\">{template.emoji}</span>\n <span className=\"text-xs font-medium text-fg\">{locLabel(template.labelEn, template.labelZh)}</span>\n </button>\n ))}\n </div>\n </div>\n {soulTemplate === 'custom' ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-sm font-medium text-fg\">{a.personaSoulCustomEdit}</span>\n <button\n type=\"button\"\n className={cn(\n ghostIconButton,\n 'inline-flex size-9 shrink-0 items-center justify-center rounded-md p-0 hover:bg-surface-hover',\n )}\n title={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n aria-label={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n onClick={toggleSoulPreviewMode}\n >\n {soulPreviewMode ? <Pencil className=\"size-4\" aria-hidden /> : <Eye className=\"size-4\" aria-hidden />}\n </button>\n </div>\n <div className={cn(inputClass, 'flex min-h-64 flex-col overflow-hidden p-0')}>\n {soulPreviewMode ? (\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n <MarkdownView content={soulCustomContent} />\n </div>\n ) : (\n <MarkdownEditor\n key={`soul-${soulEditorNonce}`}\n initialContent={soulCustomContent}\n onChange={handleSoulContentChange}\n isDark={isDark}\n className=\"min-h-0 flex-1\"\n />\n )}\n </div>\n </div>\n ) : null}\n </SettingsFormSection>\n )}\n\n {/* ===== Section 4: Danger Zone ===== */}\n {selected.id !== 'main' ? (\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={AlertTriangle}\n title={locLabel('Danger Zone', '危险操作')}\n subtitle={locLabel(\n 'Actions that cannot be undone. Be careful.',\n '以下操作不可撤销,请谨慎操作。',\n )}\n />\n <div className=\"flex flex-wrap gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onDelete(false)}>\n <Trash2 className=\"mr-1 size-4\" aria-hidden />\n {a.removeFromConfig}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"border-red-200 text-red-700 hover:bg-red-50 dark:border-red-900/60 dark:text-red-300 dark:hover:bg-red-950/40\"\n disabled={busy}\n onClick={() => void onDelete(true)}\n >\n {a.purgeDisk}\n </Button>\n </div>\n </SettingsFormSection>\n ) : null}\n </div>\n );\n}\n","import { Info, UserCircle } from 'lucide-react';\nimport {\n type MutableRefObject,\n useCallback,\n useEffect,\n useReducer,\n useRef,\n} from 'react';\n\nimport {\n SettingsFormSection,\n SettingsFormSectionHeader,\n} from '@/features/settings/settings-form-section';\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport { useAsyncResource } from '@/lib/use-async-resource';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n type UserFields,\n parseUserMarkdown,\n serializeUserMarkdown,\n TIMEZONE_OPTIONS,\n PRONOUNS_PRESETS,\n detectBrowserTimezone,\n} from '../agent-profile-markdown';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface ProfileTabProps {\n a: AgentsSettingsMessages;\n agentId: string;\n /** Parent writes a save callback into this ref so the modal footer can trigger it. */\n saveRef?: MutableRefObject<(() => Promise<void>) | null>;\n /** Called when dirty state changes. */\n onDirtyChange?: (dirty: boolean) => void;\n}\n\ntype ProfileFormState = {\n user: UserFields;\n showCustomPronouns: boolean;\n showCustomTimezone: boolean;\n customTimezone: string;\n snapshot: string;\n};\n\ntype ProfileFormAction =\n | { type: 'load'; user: UserFields }\n | { type: 'patch'; patch: Partial<UserFields> }\n | { type: 'setShowCustomPronouns'; value: boolean }\n | { type: 'setShowCustomTimezone'; value: boolean }\n | { type: 'setCustomTimezone'; value: string }\n | { type: 'saved' };\n\nfunction profileFormFromUser(user: UserFields): Pick<ProfileFormState, 'showCustomPronouns' | 'showCustomTimezone' | 'customTimezone'> {\n const isKnownPronouns = !user.pronouns || PRONOUNS_PRESETS.some((p) => p.value === user.pronouns);\n const isKnownTimezone = TIMEZONE_OPTIONS.some((tz) => tz.value === user.timezone);\n return {\n showCustomPronouns: Boolean(user.pronouns && !isKnownPronouns),\n showCustomTimezone: Boolean(user.timezone && !isKnownTimezone),\n customTimezone: user.timezone && !isKnownTimezone ? user.timezone : '',\n };\n}\n\nfunction profileFormReducer(state: ProfileFormState, action: ProfileFormAction): ProfileFormState {\n switch (action.type) {\n case 'load': {\n const extras = profileFormFromUser(action.user);\n const snapshot = JSON.stringify(action.user);\n return { user: action.user, snapshot, ...extras };\n }\n case 'patch': {\n const user = { ...state.user, ...action.patch };\n return { ...state, user };\n }\n case 'setShowCustomPronouns':\n return { ...state, showCustomPronouns: action.value };\n case 'setShowCustomTimezone':\n return { ...state, showCustomTimezone: action.value };\n case 'setCustomTimezone':\n return { ...state, customTimezone: action.value };\n case 'saved':\n return { ...state, snapshot: JSON.stringify(state.user) };\n }\n}\n\nconst emptyUser: UserFields = {\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n};\n\nconst initialProfileForm: ProfileFormState = {\n user: emptyUser,\n showCustomPronouns: false,\n showCustomTimezone: false,\n customTimezone: '',\n snapshot: JSON.stringify(emptyUser),\n};\n\n// ---------------------------------------------------------------------------\n// Component — About You (USER.md)\n// ---------------------------------------------------------------------------\n\nfunction AgentProfileTabBody({ a, agentId, saveRef, onDirtyChange }: ProfileTabProps) {\n const language = useLocaleStore((s) => s.language);\n const [form, dispatchForm] = useReducer(profileFormReducer, initialProfileForm);\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n const onDirtyChangeRef = useRef(onDirtyChange);\n onDirtyChangeRef.current = onDirtyChange;\n\n const userResource = useAsyncResource(\n async () => {\n const userMd = await fetchAgentProfileFileContent(agentId, 'USER.md').catch(() => '');\n const parsedUser = parseUserMarkdown(userMd);\n if (!parsedUser.timezone) {\n const detected = detectBrowserTimezone();\n if (detected) {\n return { ...parsedUser, timezone: detected };\n }\n }\n return parsedUser;\n },\n [agentId],\n { enabled: Boolean(agentId), initial: null as UserFields | null, errorData: emptyUser },\n );\n\n const syncedAgentRef = useRef<string | null>(null);\n useEffect(() => {\n if (userResource.loading || !userResource.data) return;\n if (syncedAgentRef.current === agentId) return;\n syncedAgentRef.current = agentId;\n dispatchForm({ type: 'load', user: userResource.data });\n onDirtyChangeRef.current?.(false);\n }, [agentId, userResource.loading, userResource.data]);\n\n const saveFile = useCallback(async (content: string) => {\n await saveAgentProfileFileContent(agentIdRef.current, 'USER.md', content);\n }, []);\n\n const userRef = useRef(form.user);\n userRef.current = form.user;\n\n useEffect(() => {\n if (!saveRef) return;\n saveRef.current = async () => {\n await saveFile(serializeUserMarkdown(userRef.current));\n dispatchForm({ type: 'saved' });\n onDirtyChangeRef.current?.(false);\n };\n return () => {\n saveRef.current = null;\n };\n }, [saveRef, saveFile]);\n\n const updateUser = useCallback((patch: Partial<UserFields>) => {\n dispatchForm({ type: 'patch', patch });\n const next = { ...userRef.current, ...patch };\n onDirtyChangeRef.current?.(JSON.stringify(next) !== form.snapshot);\n }, [form.snapshot]);\n\n const handleTimezoneChange = useCallback(\n (value: string) => {\n if (value === '__custom__') {\n dispatchForm({ type: 'setShowCustomTimezone', value: true });\n return;\n }\n dispatchForm({ type: 'setShowCustomTimezone', value: false });\n dispatchForm({ type: 'setCustomTimezone', value: '' });\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleCustomTimezoneChange = useCallback(\n (value: string) => {\n dispatchForm({ type: 'setCustomTimezone', value });\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleDetectTimezone = useCallback(() => {\n const detected = detectBrowserTimezone();\n if (!detected) return;\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === detected);\n if (isKnown) {\n dispatchForm({ type: 'setShowCustomTimezone', value: false });\n dispatchForm({ type: 'setCustomTimezone', value: '' });\n } else {\n dispatchForm({ type: 'setShowCustomTimezone', value: true });\n dispatchForm({ type: 'setCustomTimezone', value: detected });\n }\n updateUser({ timezone: detected });\n }, [updateUser]);\n\n const timezoneSelectValue = (() => {\n if (form.showCustomTimezone) return '__custom__';\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === form.user.timezone);\n return isKnown ? form.user.timezone : '__custom__';\n })();\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n if (userResource.loading) {\n return <p className=\"text-sm text-fg-muted\">{a.loading}</p>;\n }\n\n const inputClass = agentsSettingsInputClass();\n const { user, showCustomPronouns, showCustomTimezone, customTimezone } = form;\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-6 overflow-y-auto\">\n <p className=\"text-sm text-fg-muted\">{a.personaSectionUserHint}</p>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={UserCircle}\n title={a.personaSectionUser}\n subtitle={a.personaSectionUserHint}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {/* Call name */}\n <label className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaCallName}</span>\n <input\n className={inputClass}\n value={user.callName}\n onChange={(e) => updateUser({ callName: e.target.value })}\n placeholder={a.personaCallNamePlaceholder}\n autoComplete=\"off\"\n />\n </label>\n\n {/* Pronouns */}\n <div className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"font-medium text-fg\">{a.personaPronouns}</span>\n <select\n className={inputClass}\n value={PRONOUNS_PRESETS.some((p) => p.value === user.pronouns) ? user.pronouns : '__custom__'}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n dispatchForm({ type: 'setShowCustomPronouns', value: true });\n return;\n }\n dispatchForm({ type: 'setShowCustomPronouns', value: false });\n updateUser({ pronouns: e.target.value });\n }}\n >\n <option value=\"\" disabled>\n {a.personaPronounsPlaceholder}\n </option>\n {PRONOUNS_PRESETS.map((preset) => (\n <option key={preset.value} value={preset.value}>\n {locLabel(preset.labelEn, preset.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{locLabel('Custom…', '自定义…')}</option>\n </select>\n {showCustomPronouns ? (\n <input\n className={cn(inputClass, 'mt-1 text-xs')}\n value={PRONOUNS_PRESETS.some((p) => p.value === user.pronouns) ? '' : user.pronouns}\n onChange={(e) => updateUser({ pronouns: e.target.value })}\n placeholder={a.personaPronounsPlaceholder}\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n\n {/* Timezone */}\n <div className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.personaTimezone}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <select\n className={cn(inputClass, 'min-w-0 flex-1')}\n value={timezoneSelectValue}\n onChange={(e) => handleTimezoneChange(e.target.value)}\n >\n {TIMEZONE_OPTIONS.map((tz) => (\n <option key={tz.value} value={tz.value}>\n {locLabel(tz.labelEn, tz.labelZh)}\n </option>\n ))}\n <option value=\"__custom__\">{a.personaTimezoneCustom}</option>\n </select>\n <button\n type=\"button\"\n className={cn(\n 'shrink-0 rounded-lg border border-edge bg-surface-panel px-3 py-2 text-xs font-medium text-fg-muted hover:bg-surface-hover hover:text-fg',\n interaction.press,\n )}\n onClick={handleDetectTimezone}\n >\n {a.personaTimezoneDetect}\n </button>\n </div>\n {showCustomTimezone ? (\n <input\n className={cn(inputClass, 'mt-1 font-mono text-xs')}\n value={customTimezone}\n onChange={(e) => handleCustomTimezoneChange(e.target.value)}\n placeholder=\"e.g. Asia/Shanghai\"\n autoComplete=\"off\"\n />\n ) : null}\n </div>\n\n {/* Notes */}\n <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.personaNotes}</span>\n <textarea\n className={cn(inputClass, 'min-h-16 resize-y text-sm leading-relaxed')}\n value={user.notes}\n onChange={(e) => updateUser({ notes: e.target.value })}\n placeholder={a.personaNotesPlaceholder}\n rows={3}\n spellCheck\n />\n </label>\n </div>\n\n {/* Memory note */}\n <div className=\"mt-3 flex items-start gap-2 rounded-lg bg-accent-soft/30 px-3 py-2.5 text-xs text-fg-muted\">\n <Info className=\"mt-0.5 size-3.5 shrink-0 text-accent\" aria-hidden />\n <span>{a.personaMemoryNote}</span>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n\nexport function AgentProfileTab(props: ProfileTabProps) {\n return <AgentProfileTabBody key={props.agentId} {...props} />;\n}\n","import { BookOpen } from 'lucide-react';\nimport type { Dispatch, SetStateAction } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow, SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\nimport { pathForTab } from '@/navigation';\n\nexport function AgentSkillsTab(props: {\n a: AgentsSettingsMessages;\n selected: GatewayAgentRow;\n busy: boolean;\n skillsCatalogLoading: boolean;\n catalogForPick: SkillCatalogRow[];\n skillsInherit: boolean;\n setSkillsInherit: (v: boolean) => void;\n skillsPick: Set<string>;\n setSkillsPick: Dispatch<SetStateAction<Set<string>>>;\n onSaveSkills: () => void;\n hideInlineSave?: boolean;\n}) {\n const {\n a,\n selected,\n busy,\n skillsCatalogLoading,\n catalogForPick,\n skillsInherit,\n setSkillsInherit,\n skillsPick,\n setSkillsPick,\n onSaveSkills,\n hideInlineSave,\n } = props;\n\n /** When inheriting defaults, checkboxes reflect the effective allowlist (undefined = all catalog skills). */\n function isCheckedInheritMode(id: string): boolean {\n const eff = selected.skills.effectiveAllowlist;\n if (eff === undefined) {\n return true;\n }\n if (eff.length === 0) {\n return false;\n }\n return eff.includes(id);\n }\n\n function initialPickForCustomize(): Set<string> {\n const eff = selected.skills.effectiveAllowlist;\n if (eff !== undefined) {\n return new Set(eff);\n }\n return new Set(catalogForPick.map((s) => s.name || s.directoryId));\n }\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={BookOpen}\n title={a.skillsTitle}\n subtitle={a.skillsHint}\n />\n <div className=\"flex shrink-0 flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => setSkillsInherit(true)}>\n {a.skillsInherit}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n disabled={busy}\n onClick={() => {\n setSkillsInherit(false);\n setSkillsPick(initialPickForCustomize());\n }}\n >\n {a.skillsCustomize}\n </Button>\n </div>\n <Link\n to={pathForTab('skills')}\n className=\"shrink-0 text-xs font-medium text-accent-fg hover:underline\"\n >\n {a.skillsLibraryLink}\n </Link>\n </div>\n <p className=\"mt-2 shrink-0 text-xs text-fg-muted\">\n {a.skillsDefaultsLabel} {selected.skills.defaults.length ? selected.skills.defaults.join(', ') : '—'}\n </p>\n <p className=\"shrink-0 text-xs text-fg-muted\">\n {a.skillsEffectiveLabel}{' '}\n {selected.skills.effectiveAllowlist?.length\n ? selected.skills.effectiveAllowlist.join(', ')\n : a.skillsAllFromCatalog}\n </p>\n {skillsCatalogLoading ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.skillsCatalogLoading}</p>\n ) : catalogForPick.length === 0 ? (\n <p className=\"shrink-0 text-sm text-fg-muted\">{a.skillsEmptyCatalog}</p>\n ) : (\n <div\n className={cn(\n 'mt-3 min-h-0 flex-1 overflow-y-auto overscroll-contain pr-0.5',\n skillsInherit && 'opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {catalogForPick.map((s) => {\n const id = s.name || s.directoryId;\n const on = skillsInherit ? isCheckedInheritMode(id) : skillsPick.has(id);\n const desc = typeof s.description === 'string' ? s.description.trim() : '';\n const descLine = desc || a.skillsNoDescription;\n return (\n <li\n key={id}\n className=\"h-16 shrink-0 overflow-hidden rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 dark:border-edge-subtle\"\n >\n <label className=\"flex h-full cursor-pointer items-center gap-3 text-sm\">\n <input\n type=\"checkbox\"\n className=\"shrink-0 rounded border-edge\"\n checked={on}\n disabled={skillsInherit || busy}\n onChange={() => {\n setSkillsPick((prev) => {\n const next = new Set(prev);\n if (on) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }}\n aria-label={id}\n />\n <div className=\"min-w-0 flex-1 overflow-hidden\">\n <div className=\"truncate font-mono text-xs font-medium text-fg\" title={id}>\n {id}\n </div>\n <p\n className={cn(\n 'mt-0.5 truncate text-xs leading-tight text-fg-muted',\n !desc && 'italic text-fg-subtle',\n )}\n title={descLine}\n >\n {descLine}\n </p>\n </div>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n {!hideInlineSave ? (\n <div className=\"mt-4 shrink-0\">\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveSkills()}>\n {a.skillsSave}\n </Button>\n </div>\n ) : null}\n </SettingsFormSection>\n );\n}\n","/**\n * UI grouping for gateway built-in tool ids (`GATEWAY_BUILTIN_TOOL_IDS`).\n * Any id returned by the gateway but not listed here appears under `misc`.\n */\nexport const BUILTIN_TOOL_UI_GROUPS = [\n {\n key: 'workspace',\n toolIds: ['read_file', 'write_file', 'edit_file', 'list_dir', 'grep', 'find'] as const,\n },\n { key: 'execution', toolIds: ['shell'] as const },\n { key: 'web', toolIds: ['web_search', 'web_fetch'] as const },\n { key: 'messaging', toolIds: ['send_message', 'send_media'] as const },\n {\n key: 'memory',\n toolIds: ['memory_search', 'memory_get', 'curated_memory', 'session_search'] as const,\n },\n { key: 'media', toolIds: ['image', 'image_generate'] as const },\n { key: 'extensions', toolIds: ['extensions'] as const },\n { key: 'mcp', toolIds: ['bundle-mcp'] as const },\n] as const;\n\nexport type BuiltinToolUiGroupKey = (typeof BUILTIN_TOOL_UI_GROUPS)[number]['key'] | 'misc' | 'unknown';\n\nconst ASSIGNED = new Set<string>(\n BUILTIN_TOOL_UI_GROUPS.flatMap((g) => [...g.toolIds].map((id) => String(id))),\n);\n\nexport function miscBuiltinToolIds(builtinToolIds: string[]): string[] {\n return builtinToolIds\n .filter((id) => id && !ASSIGNED.has(id))\n .sort((x, y) => x.localeCompare(y));\n}\n","import { nativeSelectMaxWidthClass, selectControlBaseClass, settingsInputFocusClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\n\nexport function inputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function selectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\n/** Compact secondary actions (e.g. agent defaults: skills allowlist mode, tools disable presets). */\nexport const agentDefaultsQuickActionButtonClass =\n 'h-auto shrink-0 px-2.5 py-1.5 text-xs font-medium';\n","import { useCallback, useMemo } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/lib/cn';\n\nimport { BUILTIN_TOOL_UI_GROUPS, miscBuiltinToolIds, type BuiltinToolUiGroupKey } from './builtin-tool-disable-groups';\nimport { agentDefaultsQuickActionButtonClass } from './defaults-field-styles';\n\n/** Preset ids are filtered against the live built-in list from the gateway. */\nconst PRESET_READ_ONLY_WORKSPACE = ['write_file', 'edit_file', 'shell'] as const;\nconst PRESET_HIGH_RISK = ['shell', 'image_generate', 'extensions'] as const;\nconst PRESET_NO_OUTBOUND = ['send_message', 'send_media'] as const;\n\nfunction sortedDisableList(ids: Set<string>): string[] {\n return Array.from(ids).flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }).toSorted((x, y) => x.localeCompare(y));\n}\n\nexport type BuiltinToolsDisableUiMode = 'defaults' | 'agentEntry';\n\nexport type BuiltinToolsDisableUiLabels = {\n loadingBuiltin: string;\n emptyBuiltin: string;\n quickActionsLabel: string;\n quickEnableAll: string;\n quickDisableAll: string;\n quickReadOnlyWorkspace: string;\n quickHighRiskOff: string;\n quickNoOutbound: string;\n notInBuiltin: string;\n lockedByDefaults: string;\n};\n\nexport type BuiltinToolsDisableUiProps = {\n mode: BuiltinToolsDisableUiMode;\n builtinToolIds: string[];\n loading: boolean;\n /** Disabled tool ids for this config scope (defaults or agents.list entry). */\n disableSet: Set<string>;\n onDisableSetChange: (next: Set<string>) => void;\n /** For `agentEntry`: tools disabled in `agents.defaults` — cannot be enabled from the entry editor. */\n defaultsDisableSet?: Set<string>;\n /** Extra disable ids not in `builtinToolIds` (defaults editor only). */\n unknownDisabledIds?: string[];\n getToolDescription: (toolId: string) => string;\n getGroupTitle: (groupKey: BuiltinToolUiGroupKey) => string;\n labels: BuiltinToolsDisableUiLabels;\n quickActionsDisabled?: boolean;\n};\n\nexport function BuiltinToolsDisableUi(props: BuiltinToolsDisableUiProps) {\n const {\n mode,\n builtinToolIds,\n loading,\n disableSet,\n onDisableSetChange,\n defaultsDisableSet,\n unknownDisabledIds = [],\n getToolDescription,\n getGroupTitle,\n labels,\n quickActionsDisabled = false,\n } = props;\n\n const allowedBuiltin = useMemo(() => new Set(builtinToolIds), [builtinToolIds]);\n const defaultsLock = defaultsDisableSet ?? new Set<string>();\n\n const setToolEnabled = useCallback(\n (tid: string, enabled: boolean) => {\n if (mode === 'agentEntry' && enabled && defaultsLock.has(tid)) {\n return;\n }\n const next = new Set(disableSet);\n if (enabled) {\n next.delete(tid);\n } else {\n next.add(tid);\n }\n onDisableSetChange(next);\n },\n [defaultsLock, disableSet, mode, onDisableSetChange],\n );\n\n const applyDisableExactly = useCallback(\n (ids: readonly string[]) => {\n const next = new Set<string>();\n for (const id of ids) {\n if (allowedBuiltin.has(id)) {\n next.add(id);\n }\n }\n onDisableSetChange(next);\n },\n [allowedBuiltin, onDisableSetChange],\n );\n\n const enableAllTools = useCallback(() => {\n onDisableSetChange(new Set());\n }, [onDisableSetChange]);\n\n const disableAllListed = useCallback(() => {\n const next = new Set<string>([...builtinToolIds, ...unknownDisabledIds]);\n onDisableSetChange(next);\n }, [builtinToolIds, unknownDisabledIds, onDisableSetChange]);\n\n const groupsContent = useMemo(() => {\n const misc = miscBuiltinToolIds(builtinToolIds);\n const sections: { key: BuiltinToolUiGroupKey; ids: string[] }[] = [];\n if (mode === 'defaults' && unknownDisabledIds.length > 0) {\n sections.push({ key: 'unknown', ids: unknownDisabledIds.toSorted((x, y) => x.localeCompare(y)) });\n }\n for (const g of BUILTIN_TOOL_UI_GROUPS) {\n const ids = g.toolIds.filter((id) => allowedBuiltin.has(id));\n if (ids.length > 0) {\n sections.push({ key: g.key, ids: [...ids] });\n }\n }\n if (misc.length > 0) {\n sections.push({ key: 'misc', ids: misc });\n }\n return sections;\n }, [allowedBuiltin, builtinToolIds, mode, unknownDisabledIds]);\n\n const hasRows = groupsContent.some((s) => s.ids.length > 0);\n const qaBusy = quickActionsDisabled || loading;\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-xs font-medium text-fg-muted\">{labels.quickActionsLabel}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || (builtinToolIds.length === 0 && unknownDisabledIds.length === 0)}\n onClick={enableAllTools}\n >\n {labels.quickEnableAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || (builtinToolIds.length === 0 && unknownDisabledIds.length === 0)}\n onClick={disableAllListed}\n >\n {labels.quickDisableAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_READ_ONLY_WORKSPACE)}\n >\n {labels.quickReadOnlyWorkspace}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_HIGH_RISK)}\n >\n {labels.quickHighRiskOff}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={qaBusy || builtinToolIds.length === 0}\n onClick={() => applyDisableExactly(PRESET_NO_OUTBOUND)}\n >\n {labels.quickNoOutbound}\n </Button>\n </div>\n </div>\n {loading ? (\n <p className=\"text-sm text-fg-muted\">{labels.loadingBuiltin}</p>\n ) : !hasRows ? (\n <p className=\"text-sm text-fg-muted\">{labels.emptyBuiltin}</p>\n ) : (\n <div className=\"max-h-[min(50vh,22rem)] overflow-y-auto overscroll-contain pr-0.5\">\n <div className=\"flex flex-col gap-5 pr-1\">\n {groupsContent.map(({ key: groupKey, ids }) => (\n <div key={groupKey}>\n <h4 className=\"mb-2 text-xs font-semibold uppercase tracking-wide text-fg-muted\">\n {getGroupTitle(groupKey)}\n </h4>\n <ul className=\"flex flex-col gap-2.5\">\n {ids.map((tid) => {\n const unknown = mode === 'defaults' && groupKey === 'unknown';\n const lockedByDefault = mode === 'agentEntry' && defaultsLock.has(tid);\n const disabledByScope = disableSet.has(tid);\n const checked = lockedByDefault ? false : !disabledByScope;\n const desc = getToolDescription(tid);\n return (\n <li\n key={tid}\n className={cn(\n 'rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 py-2.5 dark:border-edge-subtle',\n unknown && 'border-dashed',\n lockedByDefault && 'opacity-60',\n )}\n >\n <label\n className={cn(\n 'flex gap-3 text-sm',\n lockedByDefault ? 'cursor-not-allowed' : 'cursor-pointer',\n )}\n >\n <input\n type=\"checkbox\"\n className=\"mt-1 shrink-0 rounded border-edge\"\n checked={checked}\n disabled={lockedByDefault || qaBusy}\n onChange={() => setToolEnabled(tid, !checked)}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-0.5\">\n <span className=\"font-mono text-xs font-medium text-fg\">{tid}</span>\n {unknown ? (\n <span className=\"text-xs text-fg-muted\">({labels.notInBuiltin})</span>\n ) : null}\n {lockedByDefault ? (\n <span className=\"text-xs text-fg-muted\">({labels.lockedByDefaults})</span>\n ) : null}\n </div>\n {desc ? (\n <p className=\"mt-1 text-xs leading-relaxed text-fg-muted\">{desc}</p>\n ) : null}\n </div>\n </label>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport { sortedDisableList };\n","import { Wrench } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport type { BuiltinToolUiGroupKey } from '@/features/settings/agents/builtin-tool-disable-groups';\nimport { BuiltinToolsDisableUi } from '@/features/settings/agents/builtin-tools-disable-ui';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { messages, type AgentsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nexport function AgentToolsTab(props: {\n a: AgentsSettingsMessages;\n data: { builtinToolIds: string[] };\n selected: GatewayAgentRow;\n busy: boolean;\n toolEntryDisable: Set<string>;\n setToolEntryDisable: Dispatch<SetStateAction<Set<string>>>;\n onSaveTools: () => void;\n onClearToolsEntry: () => void;\n hideInlineSave?: boolean;\n}) {\n const {\n a,\n data,\n selected,\n busy,\n toolEntryDisable,\n setToolEntryDisable,\n onSaveTools,\n onClearToolsEntry,\n hideInlineSave,\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const adv = messages(language).agentSettings.advanced;\n\n const defaultsDisableSet = useMemo(\n () =>\n new Set(\n selected.tools.defaultsDisable.flatMap((s) => {\n const v = String(s).trim();\n return v ? [v] : [];\n }),\n ),\n [selected.tools.defaultsDisable],\n );\n\n const onDisableSetChange = useCallback(\n (next: Set<string>) => {\n setToolEntryDisable(next);\n },\n [setToolEntryDisable],\n );\n\n const groups = a.toolsDisableGroups;\n const getGroupTitle = useCallback((key: BuiltinToolUiGroupKey) => groups[key], [groups]);\n\n const getToolDescription = useCallback(\n (tid: string) =>\n tid in a.toolDescriptions ? a.toolDescriptions[tid as keyof typeof a.toolDescriptions] : '',\n [a.toolDescriptions],\n );\n\n return (\n <SettingsFormSection className=\"flex min-h-0 flex-1 flex-col\">\n <SettingsFormSectionHeader\n className=\"shrink-0\"\n icon={Wrench}\n title={a.toolsTitle}\n subtitle={a.toolsHint}\n />\n <div className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain\">\n <BuiltinToolsDisableUi\n mode=\"agentEntry\"\n builtinToolIds={data.builtinToolIds}\n loading={false}\n disableSet={toolEntryDisable}\n onDisableSetChange={onDisableSetChange}\n defaultsDisableSet={defaultsDisableSet}\n getToolDescription={getToolDescription}\n getGroupTitle={getGroupTitle}\n quickActionsDisabled={busy}\n labels={{\n loadingBuiltin: adv.toolsDisableLoadingBuiltin,\n emptyBuiltin: adv.toolsDisableEmptyBuiltin,\n quickActionsLabel: adv.toolsDisableQuickActionsLabel,\n quickEnableAll: adv.toolsDisableQuickEnableAll,\n quickDisableAll: adv.toolsDisableQuickDisableAll,\n quickReadOnlyWorkspace: adv.toolsDisableQuickReadOnlyWorkspace,\n quickHighRiskOff: adv.toolsDisableQuickHighRiskOff,\n quickNoOutbound: adv.toolsDisableQuickNoOutbound,\n notInBuiltin: adv.toolsDisableNotInBuiltin,\n lockedByDefaults: a.toolsLockedByDefaults,\n }}\n />\n </div>\n <div className=\"mt-4 flex shrink-0 flex-wrap gap-2\">\n {!hideInlineSave ? (\n <Button type=\"button\" disabled={busy} onClick={() => void onSaveTools()}>\n {a.toolsSave}\n </Button>\n ) : null}\n <Button type=\"button\" variant=\"secondary\" disabled={busy} onClick={() => void onClearToolsEntry()}>\n {a.toolsClearEntry}\n </Button>\n </div>\n </SettingsFormSection>\n );\n}\n","import type { Dispatch, FormEvent, MutableRefObject, SetStateAction } from 'react';\n\nimport type { ChannelStatus, CronJob, SessionChatId } from '@/features/cron/cron-api';\nimport type {\n fetchAgentProfileFiles,\n GatewayAgentRow,\n GatewayAgentsPayload,\n GatewayConfigBinding,\n SkillCatalogRow,\n} from '@/features/settings/agents-admin-api';\nimport type { AgentsSettingsMessages, ChatMessages, MessageBundle } from '@/i18n/messages';\n\nimport { AgentChannelsTab } from './tabs/agent-channels-tab';\nimport { AgentCronTab } from './tabs/agent-cron-tab';\nimport { AgentFilesTab } from './tabs/agent-files-tab';\nimport { AgentOverviewTab } from './tabs/agent-overview-tab';\nimport { AgentProfileTab } from './tabs/agent-profile-tab';\nimport { AgentSkillsTab } from './tabs/agent-skills-tab';\nimport { AgentToolsTab } from './tabs/agent-tools-tab';\nimport type { OverviewProfileDraft } from './hooks/use-agent-overview-profile-markdown';\nimport type { SoulTemplateId } from './agent-profile-markdown';\nimport type { AgentPanel } from './utils';\n\ntype CronMessages = MessageBundle['cron'];\n\nexport type AgentsEditorPanelContentProps = {\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n cCron: CronMessages;\n selected: GatewayAgentRow | null;\n panel: AgentPanel;\n data: GatewayAgentsPayload | null;\n busy: boolean;\n editName: string;\n setEditName: (v: string) => void;\n editDescription: string;\n setEditDescription: (v: string) => void;\n editWorkspace: string;\n setEditWorkspace: (v: string) => void;\n editModel: string;\n setEditModel: (v: string) => void;\n defaultModel: string;\n defaultWorkspace: string;\n onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n overviewSaveProfileMarkdownRef: MutableRefObject<(() => Promise<void>) | null>;\n profileSaveRef: MutableRefObject<(() => Promise<void>) | null>;\n overviewProfile: {\n profileMarkdownLoading: boolean;\n draft: OverviewProfileDraft | null;\n updateIdentity: (patch: Partial<OverviewProfileDraft['identity']>) => void;\n handleSoulTemplateChange: (templateId: SoulTemplateId) => void;\n handleSoulContentChange: (content: string) => void;\n setAvatarDialogOpen: (open: boolean) => void;\n toggleSoulPreviewMode: () => void;\n };\n setProfileDirty: (v: boolean) => void;\n filesLoading: boolean;\n files: Awaited<ReturnType<typeof fetchAgentProfileFiles>> | null;\n activeFile: string | null;\n setActiveFile: (v: string | null) => void;\n filesViewMode: 'edit' | 'preview';\n setFilesViewMode: (v: 'edit' | 'preview') => void;\n fileDraft: string;\n setFileDraft: (v: string) => void;\n fileSaving: boolean;\n profileFileLoading: boolean;\n profileEditorNonce: number;\n toolEntryDisable: Set<string>;\n setToolEntryDisable: Dispatch<SetStateAction<Set<string>>>;\n onSaveTools: () => void;\n onClearToolsEntry: () => void;\n skillsCatalogLoading: boolean;\n catalogForPick: SkillCatalogRow[];\n skillsInherit: boolean;\n setSkillsInherit: (v: boolean) => void;\n skillsPick: Set<string>;\n setSkillsPick: Dispatch<SetStateAction<Set<string>>>;\n onSaveSkills: () => void;\n bindingsLoading: boolean;\n agentBindings: GatewayConfigBinding[];\n bindChannelStatuses: ChannelStatus[];\n bindChannelsLoading: boolean;\n useManualChannel: boolean;\n newBindChannel: string;\n setNewBindChannel: (v: string) => void;\n bindSessionChats: SessionChatId[];\n bindSessionsLoading: boolean;\n newBindSessionIdx: number | null;\n setNewBindSessionIdx: Dispatch<SetStateAction<number | null>>;\n newBindCustomPeer: string;\n setNewBindCustomPeer: (v: string) => void;\n refreshBindSessions: () => void;\n onRemoveBinding: (rule: GatewayConfigBinding) => void;\n onAddBinding: (e: FormEvent) => void;\n cronLoading: boolean;\n agentCronJobs: CronJob[];\n onSetCronJobAgent: (job: CronJob, agentKey: string) => void;\n};\n\nexport function AgentsEditorPanelContent({\n a,\n chat,\n cCron,\n selected,\n panel,\n data,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n defaultModel,\n defaultWorkspace,\n onSetDefault,\n onSaveAgentEdits,\n onDelete,\n overviewSaveProfileMarkdownRef: _overviewSaveProfileMarkdownRef,\n profileSaveRef,\n overviewProfile,\n setProfileDirty,\n filesLoading,\n files,\n activeFile,\n setActiveFile,\n filesViewMode,\n setFilesViewMode,\n fileDraft,\n setFileDraft,\n fileSaving,\n profileFileLoading,\n profileEditorNonce,\n toolEntryDisable,\n setToolEntryDisable,\n onSaveTools,\n onClearToolsEntry,\n skillsCatalogLoading,\n catalogForPick,\n skillsInherit,\n setSkillsInherit,\n skillsPick,\n setSkillsPick,\n onSaveSkills,\n bindingsLoading,\n agentBindings,\n bindChannelStatuses,\n bindChannelsLoading,\n useManualChannel,\n newBindChannel,\n setNewBindChannel,\n bindSessionChats,\n bindSessionsLoading,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n refreshBindSessions,\n onRemoveBinding,\n onAddBinding,\n cronLoading,\n agentCronJobs,\n onSetCronJobAgent,\n}: AgentsEditorPanelContentProps) {\n if (!selected) {\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n }\n\n if (panel === 'overview') {\n return (\n <AgentOverviewTab\n a={a}\n chat={chat}\n selected={selected}\n busy={busy}\n editName={editName}\n setEditName={setEditName}\n editDescription={editDescription}\n setEditDescription={setEditDescription}\n editWorkspace={editWorkspace}\n setEditWorkspace={setEditWorkspace}\n editModel={editModel}\n setEditModel={setEditModel}\n onSetDefault={onSetDefault}\n onSaveAgentEdits={onSaveAgentEdits}\n onDelete={onDelete}\n hideInlineSave\n profileMarkdownLoading={overviewProfile.profileMarkdownLoading}\n profileDraft={overviewProfile.draft}\n updateIdentity={overviewProfile.updateIdentity}\n handleSoulTemplateChange={overviewProfile.handleSoulTemplateChange}\n handleSoulContentChange={overviewProfile.handleSoulContentChange}\n setAvatarDialogOpen={overviewProfile.setAvatarDialogOpen}\n toggleSoulPreviewMode={overviewProfile.toggleSoulPreviewMode}\n defaultModel={defaultModel}\n defaultWorkspace={defaultWorkspace}\n />\n );\n }\n\n if (panel === 'profile') {\n return (\n <AgentProfileTab a={a} agentId={selected.id} saveRef={profileSaveRef} onDirtyChange={setProfileDirty} />\n );\n }\n\n if (panel === 'files') {\n return (\n <AgentFilesTab\n a={a}\n filesLoading={filesLoading}\n files={files}\n activeFile={activeFile}\n setActiveFile={setActiveFile}\n filesViewMode={filesViewMode}\n setFilesViewMode={setFilesViewMode}\n fileDraft={fileDraft}\n setFileDraft={setFileDraft}\n fileSaving={fileSaving}\n profileFileLoading={profileFileLoading}\n profileEditorNonce={profileEditorNonce}\n />\n );\n }\n\n if (panel === 'tools') {\n return (\n <AgentToolsTab\n a={a}\n data={data!}\n selected={selected}\n busy={busy}\n toolEntryDisable={toolEntryDisable}\n setToolEntryDisable={setToolEntryDisable}\n onSaveTools={onSaveTools}\n onClearToolsEntry={onClearToolsEntry}\n hideInlineSave\n />\n );\n }\n\n if (panel === 'skills') {\n return (\n <AgentSkillsTab\n a={a}\n selected={selected}\n busy={busy}\n skillsCatalogLoading={skillsCatalogLoading}\n catalogForPick={catalogForPick}\n skillsInherit={skillsInherit}\n setSkillsInherit={setSkillsInherit}\n skillsPick={skillsPick}\n setSkillsPick={setSkillsPick}\n onSaveSkills={onSaveSkills}\n hideInlineSave\n />\n );\n }\n\n if (panel === 'channels') {\n return (\n <AgentChannelsTab\n a={a}\n busy={busy}\n bindingsLoading={bindingsLoading}\n agentBindings={agentBindings}\n channelStatuses={bindChannelStatuses}\n channelsStatusLoading={bindChannelsLoading}\n useManualChannel={useManualChannel}\n newBindChannel={newBindChannel}\n setNewBindChannel={setNewBindChannel}\n bindSessionChats={bindSessionChats}\n sessionsLoading={bindSessionsLoading}\n newBindSessionIdx={newBindSessionIdx}\n setNewBindSessionIdx={setNewBindSessionIdx}\n newBindCustomPeer={newBindCustomPeer}\n setNewBindCustomPeer={setNewBindCustomPeer}\n onRefreshSessions={refreshBindSessions}\n lastActiveLabels={cCron.lastActiveLabels}\n selectRecipient={cCron.selectRecipient}\n onRemoveBinding={onRemoveBinding}\n onAddBinding={onAddBinding}\n />\n );\n }\n\n if (panel === 'cron' && data) {\n return (\n <AgentCronTab\n a={a}\n data={data}\n selected={selected}\n busy={busy}\n cronLoading={cronLoading}\n agentCronJobs={agentCronJobs}\n onSetCronJobAgent={onSetCronJobAgent}\n />\n );\n }\n\n return <p className=\"text-sm text-fg-muted\">{a.selectAgentHint}</p>;\n}\n","import { MessageSquarePlus, Plus } from 'lucide-react';\n\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport { AgentAvatarDisplay } from '@/features/settings/agents/agent-avatar-display';\nimport {\n agentListDisplayDescription,\n agentListDisplayName,\n} from '@/features/settings/agents/agent-display-names';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nfunction filterAgents(agents: GatewayAgentRow[], query: string, a: AgentsSettingsMessages): GatewayAgentRow[] {\n const q = query.trim().toLowerCase();\n if (!q) {\n return agents;\n }\n return agents.filter((ag) => {\n const name = agentListDisplayName(ag, a).toLowerCase();\n const id = ag.id.toLowerCase();\n const ws = ag.workspace.toLowerCase();\n const desc = (ag.description ?? '').toLowerCase();\n const displayDesc = agentListDisplayDescription(ag, a).toLowerCase();\n return name.includes(q) || id.includes(q) || ws.includes(q) || desc.includes(q) || displayDesc.includes(q);\n });\n}\n\nfunction NewAgentCard(props: {\n a: AgentsSettingsMessages;\n busy: boolean;\n onNewAgent: () => void;\n}) {\n const { a, busy, onNewAgent } = props;\n return (\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onNewAgent()}\n className={cn(\n 'flex h-full min-h-[7.5rem] w-full flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-edge-subtle bg-surface-panel/40 px-4 py-6 text-sm font-medium text-fg-muted transition-colors',\n 'hover:border-accent/50 hover:bg-surface-hover hover:text-fg',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.pressCard,\n )}\n >\n <Plus className=\"size-8 shrink-0 opacity-80\" strokeWidth={1.75} aria-hidden />\n <span>{a.listNewAgentCard}</span>\n </button>\n );\n}\n\nexport function AgentsListGrid(props: {\n a: AgentsSettingsMessages;\n agents: GatewayAgentRow[];\n searchQuery: string;\n onOpenAgent: (id: string) => void;\n onChatWithAgent: (id: string) => void;\n onNewAgent: () => void;\n busy: boolean;\n}) {\n const { a, agents, searchQuery, onOpenAgent, onChatWithAgent, onNewAgent, busy } = props;\n const filtered = filterAgents(agents, searchQuery, a);\n const searchMiss = agents.length > 0 && filtered.length === 0 && searchQuery.trim().length > 0;\n\n if (agents.length === 0) {\n return (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-sm text-fg-muted\">{a.listNoAgentsYet}</p>\n <div className=\"max-w-sm\">\n <NewAgentCard a={a} busy={busy} onNewAgent={onNewAgent} />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n {searchMiss ? <p className=\"text-sm text-fg-muted\">{a.listEmpty}</p> : null}\n\n <ul\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\"\n >\n <li className=\"h-full min-h-0\">\n <NewAgentCard a={a} busy={busy} onNewAgent={onNewAgent} />\n </li>\n {filtered.map((ag) => {\n const title = agentListDisplayName(ag, a);\n const monoId = ag.id;\n const descTrim = agentListDisplayDescription(ag, a);\n return (\n <li key={ag.id} className=\"h-full min-h-0\">\n <div\n className={cn(\n 'flex h-full min-h-0 flex-col gap-3 rounded-xl border border-edge-subtle bg-surface-panel p-4 shadow-sm transition-colors',\n 'hover:border-edge',\n )}\n >\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onOpenAgent(ag.id)}\n className={cn(\n 'flex shrink-0 w-full flex-col gap-2 text-left transition-colors',\n 'rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.pressCard,\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div\n className=\"flex size-11 shrink-0 items-center justify-center overflow-hidden rounded-xl bg-accent-soft ring-1 ring-edge-subtle/40\"\n aria-hidden\n >\n <AgentAvatarDisplay agentId={ag.id} avatar={ag.avatar} size={44} className=\"size-full\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-0.5\">\n <span className=\"truncate font-semibold text-fg\">{title}</span>\n {ag.isDefault ? (\n <span className=\"shrink-0 rounded-md bg-surface-base px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-fg-muted\">\n {a.defaultBadge}\n </span>\n ) : null}\n </div>\n <p className=\"mt-0.5 truncate font-mono text-xs text-fg-muted\" title={monoId}>\n {monoId}\n </p>\n </div>\n </div>\n <p\n className={cn(\n 'line-clamp-1 min-h-[1.3125rem] text-xs leading-relaxed',\n descTrim ? 'text-fg' : 'text-fg-muted/25',\n )}\n title={descTrim || undefined}\n >\n {descTrim || '\\u00A0'}\n </p>\n </button>\n <button\n type=\"button\"\n disabled={busy}\n onClick={() => onChatWithAgent(ag.id)}\n className={cn(\n 'flex w-full shrink-0 items-center justify-center gap-2 rounded-full px-4 py-2.5 text-sm font-semibold',\n 'bg-accent-soft text-accent-fg transition-colors',\n 'hover:bg-accent/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n interaction.press,\n )}\n >\n <MessageSquarePlus className=\"size-4 shrink-0\" strokeWidth={2} aria-hidden />\n {a.listChatWithAgent}\n </button>\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n","import type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport function AgentsSettingsHeader(props: { a: AgentsSettingsMessages }) {\n const { a } = props;\n\n return (\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\">{a.title}</h1>\n <p className=\"mt-1 max-w-2xl text-sm text-fg-muted\">{a.subtitle}</p>\n </div>\n </header>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { UserPlus, X } from 'lucide-react';\nimport type { FormEvent } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { ghostIconButton } from '@/lib/interaction';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\nimport { SettingsShellLayerProvider } from '@/lib/settings-shell-layer-context';\n\nimport { agentsSettingsInputClass } from './utils';\n\nexport function CreateAgentDialog(props: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n a: AgentsSettingsMessages;\n chat: ChatMessages;\n busy: boolean;\n modalError: string | null;\n createDisplayName: string;\n setCreateDisplayName: (v: string) => void;\n createAgentId: string;\n setCreateAgentId: (v: string) => void;\n createDescription: string;\n setCreateDescription: (v: string) => void;\n createWorkspace: string;\n setCreateWorkspace: (v: string) => void;\n createModel: string;\n setCreateModel: (v: string) => void;\n onCreate: (e: FormEvent) => void;\n onSuggestWorkspace: () => void;\n}) {\n const {\n open,\n onOpenChange,\n a,\n chat,\n busy,\n modalError,\n createDisplayName,\n setCreateDisplayName,\n createAgentId,\n setCreateAgentId,\n createDescription,\n setCreateDescription,\n createWorkspace,\n setCreateWorkspace,\n createModel,\n setCreateModel,\n onCreate,\n onSuggestWorkspace,\n } = props;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn('xopc-dialog-overlay fixed inset-0 bg-scrim', SETTINGS_SHELL_OVERLAY_Z)}\n />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 max-h-[min(90vh,640px)] w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <SettingsShellLayerProvider layer=\"modal\">\n <div className=\"mb-3 flex items-start justify-between gap-2\">\n <div className=\"min-w-0 pr-2\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">{a.addAgent}</Dialog.Title>\n <Dialog.Description className=\"mt-0.5 text-xs text-fg-muted\">{a.addAgentHint}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className={cn(ghostIconButton, 'shrink-0 p-1.5 hover:bg-surface-base')}\n aria-label={a.closeDialogAria}\n >\n <X className=\"size-4\" aria-hidden />\n </button>\n </Dialog.Close>\n </div>\n\n <form className=\"grid gap-3\" onSubmit={onCreate}>\n {modalError ? (\n <div\n role=\"alert\"\n className=\"rounded-lg 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 >\n {modalError}\n </div>\n ) : null}\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newAgentLabel}</span>\n <input\n className={agentsSettingsInputClass()}\n value={createDisplayName}\n onChange={(e) => setCreateDisplayName(e.target.value)}\n onBlur={() => onSuggestWorkspace()}\n required\n autoComplete=\"off\"\n />\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newAgentIdOptional}</span>\n <input\n className={cn(agentsSettingsInputClass(), 'font-mono text-xs')}\n value={createAgentId}\n onChange={(e) => setCreateAgentId(e.target.value)}\n onBlur={() => onSuggestWorkspace()}\n placeholder={a.newAgentIdPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n maxLength={64}\n pattern=\"[A-Za-z0-9][A-Za-z0-9_-]{0,63}\"\n title={a.newAgentIdRules}\n />\n <span className=\"text-xs text-fg-muted\">{a.newAgentIdRules}</span>\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.agentDescription}</span>\n <textarea\n className={cn(agentsSettingsInputClass(), 'min-h-[4.5rem] resize-y font-sans text-sm leading-relaxed')}\n value={createDescription}\n onChange={(e) => setCreateDescription(e.target.value)}\n placeholder={a.agentDescriptionPlaceholder}\n maxLength={4000}\n rows={3}\n spellCheck\n />\n </label>\n <label className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newWorkspace}</span>\n <input\n className={cn(agentsSettingsInputClass(), 'font-mono text-xs')}\n value={createWorkspace}\n onChange={(e) => setCreateWorkspace(e.target.value)}\n required\n autoComplete=\"off\"\n />\n </label>\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"text-fg-muted\">{a.newModelOptional}</span>\n <div className=\"flex flex-wrap items-stretch gap-2\">\n <ModelSelector\n className=\"min-w-0 flex-1\"\n value={createModel}\n disabled={busy}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(id) => setCreateModel(id)}\n />\n {createModel.trim() ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0\"\n disabled={busy}\n onClick={() => setCreateModel('')}\n >\n {a.modelClear}\n </Button>\n ) : null}\n </div>\n </div>\n <div className=\"mt-1 flex justify-end gap-2 border-t border-edge-subtle pt-3 dark:border-edge\">\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"secondary\" disabled={busy}>\n {a.createModalCancel}\n </Button>\n </Dialog.Close>\n <Button type=\"submit\" disabled={busy}>\n <UserPlus className=\"mr-1 size-4\" aria-hidden />\n {a.create}\n </Button>\n </div>\n </form>\n </SettingsShellLayerProvider>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","export interface PresetAgent {\n id: string;\n name: string;\n emoji: string;\n descriptionEn: string;\n descriptionZh: string;\n identityMd: string;\n soulMd: string;\n /** Per-agent tool disables (PATCH after create; merges with defaults). */\n toolsDisable?: string[];\n}\n\nexport const PRESET_AGENTS_SKIPPED_KEY = 'xopc-preset-agents-skipped';\n\nexport const PRESET_AGENTS: readonly PresetAgent[] = [\n {\n id: 'coder',\n name: 'Coder',\n emoji: '💻',\n descriptionEn: 'Software development assistant — precise, pragmatic, and code-focused.',\n descriptionZh: '软件开发助手 — 精确、务实、专注代码。',\n toolsDisable: ['image_generate'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Coder\n- **Creature:** code architect\n- **Emoji:** 💻\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Understand before you act.** Read the codebase, understand the patterns, then write code that fits. Never guess at architecture.\n\n**Write code for humans.** Clean, readable code beats clever code every time. Name things well. Keep functions focused. Comment the why, not the what.\n\n**Explain your changes.** When you modify code, explain what changed and why. Diffs without context are useless.\n\n**Test what matters.** Don't skip edge cases. Don't assume it works because it compiled.\n\n**Be precise and efficient.** Value the developer's time. Give actionable answers. Show code, not theory.\n\n## Boundaries\n\n- Never commit untested code to production paths.\n- When in doubt about destructive operations (delete, overwrite), ask first.\n- Don't refactor code you weren't asked to touch.\n\n## Vibe\n\nPrecise, pragmatic, and competent. Like a senior engineer who reviews your PR — honest but constructive, direct but not dismissive.\n`,\n },\n {\n id: 'writer',\n name: 'Writer',\n emoji: '✍️',\n descriptionEn: 'Writing and content creation — eloquent, adaptive, and audience-aware.',\n descriptionZh: '写作与内容创作 — 文笔流畅、风格多变、关注读者。',\n toolsDisable: [\n 'shell',\n 'browser_navigate',\n 'browser_snapshot',\n 'browser_click',\n 'browser_type',\n 'browser_scroll',\n 'browser_screenshot',\n ],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Writer\n- **Creature:** wordsmith\n- **Emoji:** ✍️\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Know the audience first.** Before writing anything, understand who will read it and what they need. A technical spec and a blog post require completely different voices.\n\n**Match the user's style.** Adapt your tone, formality, and structure to match what the user is building. Don't impose your own voice unless asked.\n\n**Structure before prose.** Outline first, write second. Good structure makes good writing inevitable.\n\n**Cut the AI filler.** No \"In today's fast-paced world...\" or \"It's important to note that...\". Write like a human, not a language model.\n\n**Show, don't tell.** Use examples, analogies, and concrete details. Abstract advice is forgettable.\n\n## Boundaries\n\n- Don't fabricate quotes, statistics, or citations.\n- Flag when you're speculating vs. stating facts.\n- Respect the user's voice — you're the ghostwriter, not the author.\n\n## Vibe\n\nEloquent, adaptive, and invisible. Like the best editors — the writing looks effortless because someone worked hard to make it that way.\n`,\n },\n {\n id: 'researcher',\n name: 'Researcher',\n emoji: '🔍',\n descriptionEn: 'Deep research and analysis — thorough, source-driven, and critical.',\n descriptionZh: '深度研究与分析 — 详尽、引用来源、批判性思维。',\n toolsDisable: ['shell'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Researcher\n- **Creature:** knowledge navigator\n- **Emoji:** 🔍\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Depth over breadth.** Shallow summaries are for search engines. Go deep. Follow the thread. Find the primary source.\n\n**Cross-reference everything.** One source isn't research — it's a data point. Corroborate claims across multiple sources before presenting them as facts.\n\n**Cite your sources.** Always note where information came from. If you can't cite it, flag it as inference or speculation.\n\n**Separate facts from opinions.** Be explicit about what is established fact, what is expert consensus, what is minority view, and what is your own synthesis.\n\n**Think critically.** Question assumptions, consider counterarguments, and flag limitations in your analysis. Intellectual honesty is non-negotiable.\n\n## Boundaries\n\n- Never present speculation as established fact.\n- Acknowledge knowledge cutoffs and information gaps.\n- When multiple valid interpretations exist, present them all.\n\n## Vibe\n\nThorough, curious, and intellectually honest. Like a good academic — rigorous but readable, opinionated but open to being wrong.\n`,\n },\n {\n id: 'data-analyst',\n name: 'Data Analyst',\n emoji: '📊',\n descriptionEn: 'Data analysis and visualization — analytical, clear, and reproducible.',\n descriptionZh: '数据分析与可视化 — 严谨分析、清晰表达、可复现。',\n toolsDisable: [\n 'browser_navigate',\n 'browser_snapshot',\n 'browser_click',\n 'browser_type',\n 'browser_scroll',\n 'browser_screenshot',\n ],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Data Analyst\n- **Creature:** data interpreter\n- **Emoji:** 📊\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Let the data speak.** Start with facts, not hypotheses. Explore the data before drawing conclusions.\n\n**Visualize first, explain second.** A good chart is worth a thousand rows. Choose the right visualization for the story the data tells.\n\n**Document your assumptions.** Every analysis has assumptions — make them explicit. State what you included, what you excluded, and why.\n\n**Reproducible or it didn't happen.** Write analysis code that someone else can run and get the same results. No magic numbers, no undocumented steps.\n\n**Be honest about limitations.** Small sample sizes, selection bias, missing data — flag them all. A confident wrong answer is worse than an uncertain right one.\n\n## Boundaries\n\n- Don't cherry-pick data to support a narrative.\n- Flag statistical significance (or lack thereof).\n- When data quality is questionable, say so before presenting results.\n\n## Vibe\n\nAnalytical, clear, and methodical. Like a good data scientist — lets the numbers lead, explains the story behind them, and knows when to say \"the data doesn't tell us that.\"\n`,\n },\n {\n id: 'creative',\n name: 'Creative',\n emoji: '🎨',\n descriptionEn: 'Creative design and visual work — bold, aesthetic, and multi-option.',\n descriptionZh: '创意设计与视觉 — 大胆、注重美感、多方案对比。',\n toolsDisable: ['shell'],\n identityMd: `# IDENTITY.md - Who Am I?\n\n- **Name:** Creative\n- **Creature:** design spirit\n- **Emoji:** 🎨\n- **Avatar:**\n`,\n soulMd: `# SOUL.md - Who You Are\n\n## Core Truths\n\n**Beauty is not optional.** Aesthetics matter. Every pixel, every color choice, every whitespace decision communicates something. Make it count.\n\n**Break the template.** The first idea is rarely the best. Push past the obvious. Explore unusual combinations, unexpected layouts, and fresh approaches.\n\n**Explain your design decisions.** Don't just show — tell why. \"I chose this color palette because...\" helps the user understand and iterate.\n\n**Offer multiple options.** Present 2–3 directions, not just one. Let the user choose. Creative work is subjective — give them agency.\n\n**Respect constraints.** Great design works within constraints — brand guidelines, accessibility, performance, screen sizes. Constraints aren't limitations; they're the puzzle.\n\n## Boundaries\n\n- Don't use copyrighted assets without flagging it.\n- Accessibility is non-negotiable — contrast, alt text, keyboard nav.\n- When unsure about brand or style direction, ask before committing.\n\n## Vibe\n\nBold, aesthetic, and thoughtful. Like a creative director who has opinions but listens — pushes for better while respecting what the client actually needs.\n`,\n },\n];\n","import { useMemo, useState } from 'react';\nimport { SkipForward, Sparkles } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n createGatewayAgent,\n} from '@/features/settings/agents-admin-api';\nimport { messages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { PRESET_AGENTS, PRESET_AGENTS_SKIPPED_KEY, type PresetAgent } from './preset-agents';\n\nexport interface PresetAgentsSetupProps {\n existingAgentIds: Set<string>;\n onComplete: () => void;\n onSkip: () => void;\n}\n\nexport function PresetAgentsSetup({ existingAgentIds, onComplete, onSkip }: PresetAgentsSetupProps) {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentsSettings;\n\n const availablePresets = useMemo(\n () => PRESET_AGENTS.filter((p) => !existingAgentIds.has(p.id)),\n [existingAgentIds],\n );\n\n const [selected, setSelected] = useState<Set<string>>(() => new Set(PRESET_AGENTS.map((p) => p.id)));\n const [creating, setCreating] = useState(false);\n const [progress, setProgress] = useState<{ current: number; total: number } | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n const toggleAgent = (id: string) => {\n setSelected((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const handleCreate = async () => {\n const toCreate = availablePresets.filter((p) => selected.has(p.id));\n if (toCreate.length === 0) {\n onComplete();\n return;\n }\n\n setCreating(true);\n setError(null);\n setProgress({ current: 0, total: toCreate.length });\n\n let completed = 0;\n const failures: { preset: PresetAgent; message: string }[] = [];\n await Promise.all(\n toCreate.map(async (preset) => {\n try {\n await createGatewayAgent({\n name: preset.name,\n id: preset.id,\n workspace: `~/.xopc/workspace/${preset.id}`,\n description: language === 'zh' ? preset.descriptionZh : preset.descriptionEn,\n profileFiles: {\n 'IDENTITY.md': preset.identityMd,\n 'SOUL.md': preset.soulMd,\n },\n ...(preset.toolsDisable && preset.toolsDisable.length > 0\n ? { toolsDisable: preset.toolsDisable }\n : {}),\n });\n completed += 1;\n setProgress({ current: completed, total: toCreate.length });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.toLowerCase().includes('already exists')) {\n return;\n }\n failures.push({ preset, message });\n }\n }),\n );\n\n const firstFailure = failures[0];\n if (firstFailure) {\n setError(\n a.presetCreateFailed\n .replace('{{name}}', firstFailure.preset.name)\n .replace('{{message}}', firstFailure.message),\n );\n setCreating(false);\n return;\n }\n\n setCreating(false);\n onComplete();\n };\n\n const handleSkip = () => {\n localStorage.setItem(PRESET_AGENTS_SKIPPED_KEY, 'true');\n onSkip();\n };\n\n if (availablePresets.length === 0) {\n return null;\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-2xl flex-col items-center gap-6 px-4 py-12\">\n <div className=\"text-center\">\n <div className=\"mb-3 inline-flex items-center gap-2 rounded-full bg-accent/10 px-3 py-1.5 text-sm font-medium text-accent\">\n <Sparkles className=\"size-4\" aria-hidden />\n {a.presetSetupBadge}\n </div>\n <h2 className=\"text-xl font-semibold text-fg\">{a.presetSetupTitle}</h2>\n <p className=\"mt-2 text-sm text-fg-muted\">{a.presetSetupSubtitle}</p>\n </div>\n\n <div className=\"w-full space-y-3\">\n {availablePresets.map((preset) => (\n <PresetAgentCard\n key={preset.id}\n preset={preset}\n checked={selected.has(preset.id)}\n disabled={creating}\n language={language}\n onToggle={() => toggleAgent(preset.id)}\n />\n ))}\n </div>\n\n {error ? (\n <div\n role=\"alert\"\n className=\"w-full rounded-lg 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 >\n {error}\n </div>\n ) : null}\n\n {progress && creating ? (\n <p className=\"text-sm text-fg-muted\">\n {a.presetCreatingProgress\n .replace('{{current}}', String(progress.current))\n .replace('{{total}}', String(progress.total))}\n </p>\n ) : null}\n\n <div className=\"flex w-full items-center justify-between border-t border-edge-subtle pt-4\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"gap-2 text-fg-muted\"\n disabled={creating}\n onClick={handleSkip}\n >\n <SkipForward className=\"size-4\" aria-hidden />\n {a.presetSkip}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"gap-2\"\n disabled={creating || selected.size === 0}\n onClick={() => void handleCreate()}\n >\n <Sparkles className=\"size-4\" aria-hidden />\n {creating\n ? a.presetCreating\n : a.presetCreateSelected.replace('{{count}}', String(selected.size))}\n </Button>\n </div>\n </div>\n );\n}\n\nfunction PresetAgentCard(props: {\n preset: PresetAgent;\n checked: boolean;\n disabled: boolean;\n language: 'en' | 'zh';\n onToggle: () => void;\n}) {\n const { preset, checked, disabled, language, onToggle } = props;\n const description = language === 'zh' ? preset.descriptionZh : preset.descriptionEn;\n\n return (\n <label\n className={cn(\n 'flex cursor-pointer items-start gap-3 rounded-xl border px-4 py-3 transition-colors',\n checked ? 'border-accent/50 bg-accent/5' : 'border-edge-subtle bg-surface-panel/40',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={disabled}\n onChange={onToggle}\n className=\"mt-1 shrink-0 accent-accent\"\n aria-label={preset.name}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-lg\" aria-hidden>\n {preset.emoji}\n </span>\n <span className=\"font-medium text-fg\">{preset.name}</span>\n </div>\n <p className=\"mt-0.5 text-sm text-fg-muted\">{description}</p>\n </div>\n </label>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\n// --- Nested shapes (align with `src/config/schema.ts` AgentDefaultsSchema) ---\n\nexport type AgentDefaultsCompactionState = {\n enabled: boolean;\n mode: 'default' | 'safeguard';\n reserveTokens: number;\n triggerThreshold: number;\n minMessagesBeforeCompact: number;\n keepRecentMessages: number;\n evictionWindow: number;\n retentionWindow: number;\n};\n\nexport type AgentDefaultsPruningState = {\n enabled: boolean;\n maxToolResultChars: number;\n headKeepRatio: number;\n tailKeepRatio: number;\n};\n\nexport type AgentDefaultsMemoryState = {\n enabled: boolean;\n useEnhancedSystem: boolean;\n userProfileEnabled: boolean;\n provider: '' | 'none' | 'stub';\n injectionFrequency: '' | 'every-turn' | 'first-turn';\n memoryCharLimit: number | undefined;\n userCharLimit: number | undefined;\n contextCadence: number | undefined;\n dialecticCadence: number | undefined;\n};\n\nexport type AgentDefaultsSessionSearchState = {\n summaryModel: string;\n};\n\nexport type AgentDefaultsBackgroundReviewState = {\n enabled: boolean;\n memoryNudgeInterval: number;\n skillNudgeInterval: number;\n maxToolRounds: number;\n maxHistoryMessages: number;\n maxDurationMs: number;\n};\n\nexport type AgentDefaultsWebExtractState = {\n model: string;\n maxLength: number | undefined;\n};\n\nexport type AgentDefaultsDelegateState = { enabled: boolean };\nexport type AgentDefaultsExecuteCodeState = { enabled: boolean };\n\nexport interface AgentDefaultsState {\n model: string;\n /** provider/model refs tried when the primary fails (stored as `agents.defaults.model.fallbacks`). */\n modelFallbacks: string[];\n imageModel: string;\n imageModelFallbacks: string[];\n imageGenerationModel: string;\n imageGenerationModelFallbacks: string[];\n /** Per-call timeout (ms) for image generation; null = inherit gateway default. */\n imageGenerationModelTimeoutMs: number | null;\n /** Sweep every configured provider when primary chain fails. */\n imageGenerationModelAutoProviderFallback: boolean;\n mediaMaxMb: number | undefined;\n maxTokens: number;\n temperature: number;\n maxToolIterations: number;\n /** Config `maxTaskDurationMs` — UI stores whole minutes (empty = unset / gateway default). */\n maxTaskDurationMinutes: number | undefined;\n maxRequestsPerTurn: number;\n maxToolFailuresPerTurn: number;\n workspace: string;\n /** `browser_use` tool (`agents.defaults.browser.enabled`). */\n browserEnabled: boolean;\n /** Headless Chromium when browser tools are on (`agents.defaults.browser.headless`; default false = visible window). */\n browserHeadless: boolean;\n /** Skip private-IP blocking (cloud metadata always blocked). */\n browserAllowPrivateUrls: boolean;\n /** Per-command timeout in seconds (default 30). */\n browserCommandTimeout: number | undefined;\n /** Browser backend mode: local, cdp, cloud, extension, or CloakBrowser. */\n browserBackend: 'local' | 'cdp' | 'cloud' | 'extension' | 'cloakbrowser';\n /** Cloud browser backend: local, browserbase, or browser-use. */\n browserCloudProvider: 'local' | 'browserbase' | 'browser-use';\n /** Cloud provider API key. Masked as *** when already stored. */\n browserCloudApiKey: string;\n /** Optional Browserbase project id. */\n browserCloudProjectId: string;\n /** Optional cloud provider region. */\n browserCloudRegion: string;\n /** Direct CDP WebSocket endpoint URL. */\n browserCdpUrl: string;\n /** Chrome Extension bridge port (default 19820). */\n browserExtensionPort: number | undefined;\n /** Chrome Extension bridge host (default 127.0.0.1). */\n browserExtensionHost: string;\n /** Keep CloakBrowser alive between tasks. */\n browserCloakKeepOpen: boolean;\n /** Use a temporary CloakBrowser profile. */\n browserCloakTemporaryProfile: boolean;\n /** Optional CloakBrowser binary cache directory. */\n browserCloakCacheDir: string;\n /** Optional CloakBrowser executable path. */\n browserCloakBinaryPath: string;\n /** Humanized browser input simulation. */\n browserHumanize: boolean;\n /** Humanized input behavior preset. */\n browserHumanPreset: 'default' | 'careful';\n /** JS dialog handling policy. */\n browserDialogPolicy: 'must_respond' | 'auto_dismiss' | 'auto_accept';\n /** Dialog auto-timeout in seconds (default 300). */\n browserDialogTimeout: number | undefined;\n thinkingDefault: string;\n reasoningDefault: string;\n verboseDefault: string;\n compaction: AgentDefaultsCompactionState;\n pruning: AgentDefaultsPruningState;\n memory: AgentDefaultsMemoryState;\n sessionSearch: AgentDefaultsSessionSearchState;\n backgroundReview: AgentDefaultsBackgroundReviewState;\n webExtract: AgentDefaultsWebExtractState;\n delegate: AgentDefaultsDelegateState;\n executeCode: AgentDefaultsExecuteCodeState;\n systemPromptOverride: string;\n /** Maps to `agents.defaults.skills` (allowlist). */\n skillsAllowlist: string[];\n /** Maps to `agents.defaults.tools.disable`. */\n toolsDisable: string[];\n /** JSON for `agents.defaults.params`. */\n paramsJson: string;\n}\n\nconst DEFAULT_COMPACTION: AgentDefaultsCompactionState = {\n enabled: true,\n mode: 'default',\n reserveTokens: 8000,\n triggerThreshold: 0.8,\n minMessagesBeforeCompact: 10,\n keepRecentMessages: 5,\n evictionWindow: 0.2,\n retentionWindow: 6,\n};\n\nconst DEFAULT_PRUNING: AgentDefaultsPruningState = {\n enabled: true,\n maxToolResultChars: 10000,\n headKeepRatio: 0.3,\n tailKeepRatio: 0.3,\n};\n\nconst DEFAULT_MEMORY: AgentDefaultsMemoryState = {\n enabled: true,\n useEnhancedSystem: true,\n userProfileEnabled: true,\n provider: '',\n injectionFrequency: '',\n memoryCharLimit: undefined,\n userCharLimit: undefined,\n contextCadence: undefined,\n dialecticCadence: undefined,\n};\n\nconst DEFAULT_SESSION_SEARCH: AgentDefaultsSessionSearchState = {\n summaryModel: '',\n};\n\nconst DEFAULT_BG_REVIEW: AgentDefaultsBackgroundReviewState = {\n enabled: false,\n memoryNudgeInterval: 10,\n skillNudgeInterval: 10,\n maxToolRounds: 8,\n maxHistoryMessages: 80,\n maxDurationMs: 120_000,\n};\n\nconst DEFAULT_WEB_EXTRACT: AgentDefaultsWebExtractState = {\n model: '',\n maxLength: undefined,\n};\n\nfunction normalizeModelRef(raw: unknown): string {\n if (raw == null) return '';\n if (typeof raw === 'string') return raw;\n if (typeof raw === 'object' && raw !== null && 'primary' in raw) {\n const p = (raw as { primary?: string }).primary;\n return typeof p === 'string' ? p : '';\n }\n return '';\n}\n\nfunction normalizeModelFallbacks(raw: unknown): string[] {\n if (typeof raw !== 'object' || raw === null || !('fallbacks' in raw)) {\n return [];\n }\n const f = (raw as { fallbacks?: unknown }).fallbacks;\n if (!Array.isArray(f)) {\n return [];\n }\n return f.filter((x): x is string => typeof x === 'string' && x.trim().length > 0);\n}\n\nfunction configFromApiResponse(res: unknown): unknown {\n if (!res || typeof res !== 'object') return undefined;\n const r = res as Record<string, unknown>;\n const payload = r.payload;\n if (payload && typeof payload === 'object' && 'config' in payload) {\n return (payload as { config?: unknown }).config;\n }\n if ('config' in r) return r.config;\n return undefined;\n}\n\nfunction truthyBrowserFlag(v: unknown): boolean {\n return v === true || v === 'true' || v === 1;\n}\n\ntype BrowserFieldsPick = Pick<\n AgentDefaultsState,\n | 'browserEnabled'\n | 'browserHeadless'\n | 'browserAllowPrivateUrls'\n | 'browserCommandTimeout'\n | 'browserBackend'\n | 'browserCloudProvider'\n | 'browserCloudApiKey'\n | 'browserCloudProjectId'\n | 'browserCloudRegion'\n | 'browserCdpUrl'\n | 'browserExtensionPort'\n | 'browserExtensionHost'\n | 'browserCloakKeepOpen'\n | 'browserCloakTemporaryProfile'\n | 'browserCloakCacheDir'\n | 'browserCloakBinaryPath'\n | 'browserHumanize'\n | 'browserHumanPreset'\n | 'browserDialogPolicy'\n | 'browserDialogTimeout'\n>;\n\nfunction parseBrowserFromDefaults(d: Record<string, unknown>): BrowserFieldsPick {\n const browser = d.browser;\n if (!browser || typeof browser !== 'object' || Array.isArray(browser)) {\n return {\n browserEnabled: false,\n browserHeadless: false,\n browserAllowPrivateUrls: false,\n browserCommandTimeout: undefined,\n browserBackend: 'extension',\n browserCloudProvider: 'local',\n browserCloudApiKey: '',\n browserCloudProjectId: '',\n browserCloudRegion: '',\n browserCdpUrl: '',\n browserExtensionPort: undefined,\n browserExtensionHost: '127.0.0.1',\n browserCloakKeepOpen: true,\n browserCloakTemporaryProfile: false,\n browserCloakCacheDir: '',\n browserCloakBinaryPath: '',\n browserHumanize: true,\n browserHumanPreset: 'careful',\n browserDialogPolicy: 'auto_dismiss',\n browserDialogTimeout: undefined,\n };\n }\n const b = browser as Record<string, unknown>;\n const enabled = truthyBrowserFlag(b.enabled);\n const headlessRaw = b.headless;\n const headless =\n headlessRaw === true || headlessRaw === 'true' || headlessRaw === 1 ? true : false;\n\n const allowPrivateUrls = truthyBrowserFlag(b.allowPrivateUrls);\n\n const commandTimeout =\n typeof b.commandTimeout === 'number' && Number.isFinite(b.commandTimeout) && b.commandTimeout >= 5\n ? Math.floor(b.commandTimeout)\n : undefined;\n\n const backendRaw = b.backend;\n const backend: AgentDefaultsState['browserBackend'] =\n backendRaw === 'local' ||\n backendRaw === 'cdp' ||\n backendRaw === 'cloud' ||\n backendRaw === 'extension' ||\n backendRaw === 'cloakbrowser'\n ? backendRaw\n : 'extension';\n\n const cpRaw = b.cloudProvider;\n const cloudProvider: AgentDefaultsState['browserCloudProvider'] =\n cpRaw === 'browserbase' || cpRaw === 'browser-use' ? cpRaw : 'local';\n\n const cloud =\n typeof b.cloud === 'object' && b.cloud && !Array.isArray(b.cloud)\n ? (b.cloud as Record<string, unknown>)\n : {};\n const cloudApiKey = typeof cloud.apiKey === 'string' ? cloud.apiKey : '';\n const cloudProjectId = typeof cloud.projectId === 'string' ? cloud.projectId : '';\n const cloudRegion = typeof cloud.region === 'string' ? cloud.region : '';\n\n const cdpUrl = typeof b.cdpUrl === 'string' ? b.cdpUrl : '';\n\n // Extension config\n const ext = (typeof b.extension === 'object' && b.extension && !Array.isArray(b.extension))\n ? b.extension as Record<string, unknown>\n : {};\n const extensionPort =\n typeof ext.port === 'number' && Number.isFinite(ext.port) && ext.port >= 1024 && ext.port <= 65535\n ? Math.floor(ext.port)\n : undefined;\n const extensionHost = typeof ext.host === 'string' && ext.host ? ext.host : '127.0.0.1';\n\n const cloakbrowser =\n typeof b.cloakbrowser === 'object' && b.cloakbrowser && !Array.isArray(b.cloakbrowser)\n ? (b.cloakbrowser as Record<string, unknown>)\n : {};\n const humanPreset: AgentDefaultsState['browserHumanPreset'] =\n b.humanPreset === 'default' ? 'default' : 'careful';\n\n const dpRaw = b.dialogPolicy;\n const dialogPolicy: AgentDefaultsState['browserDialogPolicy'] =\n dpRaw === 'must_respond' || dpRaw === 'auto_accept' ? dpRaw : 'auto_dismiss';\n\n const dialogTimeout =\n typeof b.dialogTimeoutSeconds === 'number' &&\n Number.isFinite(b.dialogTimeoutSeconds) &&\n b.dialogTimeoutSeconds >= 1\n ? Math.floor(b.dialogTimeoutSeconds)\n : undefined;\n\n return {\n browserEnabled: enabled,\n browserHeadless: headless,\n browserAllowPrivateUrls: allowPrivateUrls,\n browserCommandTimeout: commandTimeout,\n browserBackend: backend,\n browserCloudProvider: cloudProvider,\n browserCloudApiKey: cloudApiKey,\n browserCloudProjectId: cloudProjectId,\n browserCloudRegion: cloudRegion,\n browserCdpUrl: cdpUrl,\n browserExtensionPort: extensionPort,\n browserExtensionHost: extensionHost,\n browserCloakKeepOpen: cloakbrowser.keepOpen !== false,\n browserCloakTemporaryProfile: cloakbrowser.temporaryProfile === true,\n browserCloakCacheDir: typeof cloakbrowser.cacheDir === 'string' ? cloakbrowser.cacheDir : '',\n browserCloakBinaryPath: typeof cloakbrowser.binaryPath === 'string' ? cloakbrowser.binaryPath : '',\n browserHumanize: b.humanize !== false,\n browserHumanPreset: humanPreset,\n browserDialogPolicy: dialogPolicy,\n browserDialogTimeout: dialogTimeout,\n };\n}\n\nfunction parseCompaction(raw: unknown): AgentDefaultsCompactionState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_COMPACTION };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_COMPACTION.enabled,\n mode: p.mode === 'safeguard' ? 'safeguard' : 'default',\n reserveTokens:\n typeof p.reserveTokens === 'number' && Number.isFinite(p.reserveTokens)\n ? Math.floor(p.reserveTokens)\n : DEFAULT_COMPACTION.reserveTokens,\n triggerThreshold:\n typeof p.triggerThreshold === 'number' && Number.isFinite(p.triggerThreshold)\n ? p.triggerThreshold\n : DEFAULT_COMPACTION.triggerThreshold,\n minMessagesBeforeCompact:\n typeof p.minMessagesBeforeCompact === 'number' && Number.isFinite(p.minMessagesBeforeCompact)\n ? Math.floor(p.minMessagesBeforeCompact)\n : DEFAULT_COMPACTION.minMessagesBeforeCompact,\n keepRecentMessages:\n typeof p.keepRecentMessages === 'number' && Number.isFinite(p.keepRecentMessages)\n ? Math.floor(p.keepRecentMessages)\n : DEFAULT_COMPACTION.keepRecentMessages,\n evictionWindow:\n typeof p.evictionWindow === 'number' && Number.isFinite(p.evictionWindow)\n ? p.evictionWindow\n : DEFAULT_COMPACTION.evictionWindow,\n retentionWindow:\n typeof p.retentionWindow === 'number' && Number.isFinite(p.retentionWindow)\n ? Math.floor(p.retentionWindow)\n : DEFAULT_COMPACTION.retentionWindow,\n };\n}\n\nfunction parsePruning(raw: unknown): AgentDefaultsPruningState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_PRUNING };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_PRUNING.enabled,\n maxToolResultChars:\n typeof p.maxToolResultChars === 'number' && Number.isFinite(p.maxToolResultChars)\n ? Math.floor(p.maxToolResultChars)\n : DEFAULT_PRUNING.maxToolResultChars,\n headKeepRatio:\n typeof p.headKeepRatio === 'number' && Number.isFinite(p.headKeepRatio)\n ? p.headKeepRatio\n : DEFAULT_PRUNING.headKeepRatio,\n tailKeepRatio:\n typeof p.tailKeepRatio === 'number' && Number.isFinite(p.tailKeepRatio)\n ? p.tailKeepRatio\n : DEFAULT_PRUNING.tailKeepRatio,\n };\n}\n\nfunction parseMemory(raw: unknown): AgentDefaultsMemoryState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_MEMORY };\n }\n const p = raw as Record<string, unknown>;\n const providerRaw = p.provider;\n const provider: AgentDefaultsMemoryState['provider'] =\n providerRaw === 'none' || providerRaw === 'stub' ? providerRaw : '';\n const inj = p.injectionFrequency;\n const injectionFrequency: AgentDefaultsMemoryState['injectionFrequency'] =\n inj === 'every-turn' || inj === 'first-turn' ? inj : '';\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_MEMORY.enabled,\n useEnhancedSystem:\n typeof p.useEnhancedSystem === 'boolean' ? p.useEnhancedSystem : DEFAULT_MEMORY.useEnhancedSystem,\n userProfileEnabled:\n typeof p.userProfileEnabled === 'boolean' ? p.userProfileEnabled : DEFAULT_MEMORY.userProfileEnabled,\n provider,\n injectionFrequency,\n memoryCharLimit:\n typeof p.memoryCharLimit === 'number' && p.memoryCharLimit > 0\n ? Math.floor(p.memoryCharLimit)\n : undefined,\n userCharLimit:\n typeof p.userCharLimit === 'number' && p.userCharLimit > 0\n ? Math.floor(p.userCharLimit)\n : undefined,\n contextCadence:\n typeof p.contextCadence === 'number' && p.contextCadence >= 1\n ? Math.floor(p.contextCadence)\n : undefined,\n dialecticCadence:\n typeof p.dialecticCadence === 'number' && p.dialecticCadence >= 1\n ? Math.floor(p.dialecticCadence)\n : undefined,\n };\n}\n\nfunction parseSessionSearch(raw: unknown): AgentDefaultsSessionSearchState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_SESSION_SEARCH };\n }\n const p = raw as Record<string, unknown>;\n return {\n summaryModel: typeof p.summaryModel === 'string' ? p.summaryModel : '',\n };\n}\n\nfunction parseBackgroundReview(raw: unknown): AgentDefaultsBackgroundReviewState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_BG_REVIEW };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : DEFAULT_BG_REVIEW.enabled,\n memoryNudgeInterval:\n typeof p.memoryNudgeInterval === 'number' && p.memoryNudgeInterval >= 0\n ? Math.floor(p.memoryNudgeInterval)\n : DEFAULT_BG_REVIEW.memoryNudgeInterval,\n skillNudgeInterval:\n typeof p.skillNudgeInterval === 'number' && p.skillNudgeInterval >= 0\n ? Math.floor(p.skillNudgeInterval)\n : DEFAULT_BG_REVIEW.skillNudgeInterval,\n maxToolRounds:\n typeof p.maxToolRounds === 'number' && p.maxToolRounds >= 1 && p.maxToolRounds <= 32\n ? Math.floor(p.maxToolRounds)\n : DEFAULT_BG_REVIEW.maxToolRounds,\n maxHistoryMessages:\n typeof p.maxHistoryMessages === 'number' && p.maxHistoryMessages >= 10 && p.maxHistoryMessages <= 200\n ? Math.floor(p.maxHistoryMessages)\n : DEFAULT_BG_REVIEW.maxHistoryMessages,\n maxDurationMs:\n typeof p.maxDurationMs === 'number' && p.maxDurationMs >= 30_000 && p.maxDurationMs <= 600_000\n ? Math.floor(p.maxDurationMs)\n : DEFAULT_BG_REVIEW.maxDurationMs,\n };\n}\n\nfunction parseWebExtract(raw: unknown): AgentDefaultsWebExtractState {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ...DEFAULT_WEB_EXTRACT };\n }\n const p = raw as Record<string, unknown>;\n return {\n model: typeof p.model === 'string' ? p.model : '',\n maxLength:\n typeof p.maxLength === 'number' && p.maxLength > 0 ? p.maxLength : undefined,\n };\n}\n\nfunction parseEnabledFlag(raw: unknown, def: boolean): { enabled: boolean } {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { enabled: def };\n }\n const p = raw as Record<string, unknown>;\n return {\n enabled: typeof p.enabled === 'boolean' ? p.enabled : def,\n };\n}\n\nfunction parseStringList(raw: unknown): string[] {\n if (!Array.isArray(raw)) {\n return [];\n }\n return raw.filter((x): x is string => typeof x === 'string');\n}\n\nfunction parseParamsJson(raw: unknown): string {\n if (raw === undefined || raw === null) {\n return '';\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n if (!t) {\n return '';\n }\n try {\n const parsed: unknown = JSON.parse(t);\n if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return JSON.stringify(parsed, null, 2);\n }\n } catch {\n return t;\n }\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw)) {\n try {\n return JSON.stringify(raw, null, 2);\n } catch {\n return '';\n }\n }\n return '';\n}\n\nfunction readImageGenerationTimeoutMsFromDefaults(d: Record<string, unknown>): number | null {\n const flat = d.imageGenerationModelTimeoutMs;\n if (typeof flat === 'number' && Number.isFinite(flat) && flat > 0) {\n return Math.floor(flat);\n }\n const igm = d.imageGenerationModel;\n if (igm && typeof igm === 'object' && !Array.isArray(igm)) {\n const tm = (igm as { timeoutMs?: unknown }).timeoutMs;\n if (typeof tm === 'number' && Number.isFinite(tm) && tm > 0) {\n return Math.floor(tm);\n }\n }\n return null;\n}\n\nfunction readImageGenerationAutoProviderFallbackFromDefaults(d: Record<string, unknown>): boolean {\n if (d.imageGenerationModelAutoProviderFallback === true) {\n return true;\n }\n const igm = d.imageGenerationModel;\n if (igm && typeof igm === 'object' && !Array.isArray(igm)) {\n return (igm as { autoProviderFallback?: unknown }).autoProviderFallback === true;\n }\n return false;\n}\n\n/** Parse `agents.defaults` from a gateway config root object. */\nexport function parseAgentDefaultsFromConfig(cfg: unknown): AgentDefaultsState {\n const agents =\n cfg && typeof cfg === 'object' && !Array.isArray(cfg) && 'agents' in cfg\n ? (cfg as { agents?: unknown }).agents\n : undefined;\n const defaults =\n agents && typeof agents === 'object' && !Array.isArray(agents) && 'defaults' in agents\n ? (agents as { defaults?: unknown }).defaults\n : undefined;\n const d =\n defaults && typeof defaults === 'object' && !Array.isArray(defaults)\n ? (defaults as Record<string, unknown>)\n : {};\n const mf = d.modelFallbacks;\n const modelFallbacksFromApi =\n Array.isArray(mf) && mf.every((x) => typeof x === 'string') ? mf : normalizeModelFallbacks(d.model);\n const imf = d.imageModelFallbacks;\n const imageModelFallbacksFromApi =\n Array.isArray(imf) && imf.every((x) => typeof x === 'string')\n ? imf\n : normalizeModelFallbacks(d.imageModel);\n const igf = d.imageGenerationModelFallbacks;\n const imageGenerationModelFallbacksFromApi =\n Array.isArray(igf) && igf.every((x) => typeof x === 'string')\n ? igf\n : normalizeModelFallbacks(d.imageGenerationModel);\n const browserFields = parseBrowserFromDefaults(d);\n const maxTaskMs =\n typeof d.maxTaskDurationMs === 'number' && Number.isFinite(d.maxTaskDurationMs)\n ? d.maxTaskDurationMs\n : undefined;\n const maxTaskDurationMinutes =\n maxTaskMs !== undefined ? Math.round(maxTaskMs / 60_000) : undefined;\n\n return {\n model: normalizeModelRef(d.model),\n modelFallbacks: modelFallbacksFromApi,\n imageModel: normalizeModelRef(d.imageModel),\n imageModelFallbacks: imageModelFallbacksFromApi,\n imageGenerationModel: normalizeModelRef(d.imageGenerationModel),\n imageGenerationModelFallbacks: imageGenerationModelFallbacksFromApi,\n imageGenerationModelTimeoutMs: readImageGenerationTimeoutMsFromDefaults(d),\n imageGenerationModelAutoProviderFallback: readImageGenerationAutoProviderFallbackFromDefaults(d),\n mediaMaxMb: typeof d.mediaMaxMb === 'number' && !Number.isNaN(d.mediaMaxMb) ? d.mediaMaxMb : undefined,\n maxTokens: typeof d.maxTokens === 'number' ? d.maxTokens : 8192,\n temperature: typeof d.temperature === 'number' ? d.temperature : 0.7,\n maxToolIterations: typeof d.maxToolIterations === 'number' ? d.maxToolIterations : 20,\n maxTaskDurationMinutes,\n maxRequestsPerTurn: typeof d.maxRequestsPerTurn === 'number' ? d.maxRequestsPerTurn : 50,\n maxToolFailuresPerTurn: typeof d.maxToolFailuresPerTurn === 'number' ? d.maxToolFailuresPerTurn : 3,\n workspace: typeof d.workspace === 'string' ? d.workspace : '~/.xopc/workspace',\n ...browserFields,\n thinkingDefault: typeof d.thinkingDefault === 'string' ? d.thinkingDefault : 'medium',\n reasoningDefault: typeof d.reasoningDefault === 'string' ? d.reasoningDefault : 'stream',\n verboseDefault: typeof d.verboseDefault === 'string' ? d.verboseDefault : 'full',\n compaction: parseCompaction(d.compaction),\n pruning: parsePruning(d.pruning),\n memory: parseMemory(d.memory),\n sessionSearch: parseSessionSearch(d.sessionSearch),\n backgroundReview: parseBackgroundReview(d.backgroundReview),\n webExtract: parseWebExtract(d.webExtract),\n delegate: parseEnabledFlag(d.delegate, false),\n executeCode: parseEnabledFlag(d.executeCode, false),\n systemPromptOverride: typeof d.systemPromptOverride === 'string' ? d.systemPromptOverride : '',\n skillsAllowlist: parseStringList(d.skills),\n toolsDisable: (() => {\n const t = d.tools;\n if (!t || typeof t !== 'object' || Array.isArray(t)) {\n return [] as string[];\n }\n const dis = (t as { disable?: unknown }).disable;\n return parseStringList(dis);\n })(),\n paramsJson: parseParamsJson(d.params),\n };\n}\n\nfunction buildMemoryPatch(m: AgentDefaultsMemoryState): Record<string, unknown> {\n const o: Record<string, unknown> = {\n enabled: m.enabled,\n useEnhancedSystem: m.useEnhancedSystem,\n userProfileEnabled: m.userProfileEnabled,\n };\n if (m.provider === 'none' || m.provider === 'stub') {\n o.provider = m.provider;\n } else {\n o.provider = null;\n }\n if (m.injectionFrequency === 'every-turn' || m.injectionFrequency === 'first-turn') {\n o.injectionFrequency = m.injectionFrequency;\n } else {\n o.injectionFrequency = null;\n }\n o.memoryCharLimit = m.memoryCharLimit ?? null;\n o.userCharLimit = m.userCharLimit ?? null;\n o.contextCadence = m.contextCadence ?? null;\n o.dialecticCadence = m.dialecticCadence ?? null;\n return o;\n}\n\n/** @throws {SyntaxError} on invalid JSON; {Error} if not a plain object. */\nexport function parseParamsJsonForSave(paramsJson: string): Record<string, unknown> | null {\n const trimmed = paramsJson.trim();\n if (!trimmed) {\n return null;\n }\n const parsed: unknown = JSON.parse(trimmed);\n if (parsed === null) {\n return null;\n }\n if (typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new Error('params must be a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\nexport async function fetchAgentDefaults(): Promise<AgentDefaultsState> {\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'));\n const cfg = configFromApiResponse(res);\n return parseAgentDefaultsFromConfig(cfg ?? {});\n}\n\nexport async function patchAgentDefaults(state: AgentDefaultsState): Promise<void> {\n const fallbacks = state.modelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const modelField =\n fallbacks.length > 0 ? { primary: state.model, fallbacks } : state.model;\n\n const imageFbs = state.imageModelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const imageModelField =\n imageFbs.length > 0 && state.imageModel.trim()\n ? { primary: state.imageModel.trim(), fallbacks: imageFbs }\n : state.imageModel || '';\n\n const imageGenFbs = state.imageGenerationModelFallbacks.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const imageGenPrimary = state.imageGenerationModel.trim();\n const imageGenTimeoutMs =\n typeof state.imageGenerationModelTimeoutMs === 'number' &&\n state.imageGenerationModelTimeoutMs > 0\n ? Math.floor(state.imageGenerationModelTimeoutMs)\n : null;\n const imageGenAuto = state.imageGenerationModelAutoProviderFallback === true;\n const imageGenerationModelField: unknown = (() => {\n const obj: Record<string, unknown> = {};\n if (imageGenPrimary) obj.primary = imageGenPrimary;\n if (imageGenFbs.length > 0) obj.fallbacks = imageGenFbs;\n if (imageGenTimeoutMs) obj.timeoutMs = imageGenTimeoutMs;\n if (imageGenAuto) obj.autoProviderFallback = true;\n if (Object.keys(obj).length === 0) return '';\n if (Object.keys(obj).length === 1 && typeof obj.primary === 'string') return obj.primary;\n return obj;\n })();\n\n const maxTaskDurationMs: number | null =\n state.maxTaskDurationMinutes === undefined || state.maxTaskDurationMinutes === null\n ? null\n : (() => {\n const n = Math.floor(state.maxTaskDurationMinutes);\n const ms = n * 60_000;\n if (ms < 60_000 || ms > 14_400_000) {\n return null;\n }\n return ms;\n })();\n\n const skillsClean = state.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n const toolsDisableClean = state.toolsDisable.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n });\n\n const paramsParsed = parseParamsJsonForSave(state.paramsJson);\n const params =\n paramsParsed === null || Object.keys(paramsParsed).length === 0 ? null : paramsParsed;\n\n const defaults: Record<string, unknown> = {\n model: modelField,\n imageModel: imageModelField,\n imageGenerationModel: imageGenerationModelField,\n mediaMaxMb: state.mediaMaxMb ?? null,\n maxTokens: state.maxTokens,\n temperature: state.temperature,\n maxToolIterations: state.maxToolIterations,\n maxTaskDurationMs,\n maxRequestsPerTurn: state.maxRequestsPerTurn,\n maxToolFailuresPerTurn: state.maxToolFailuresPerTurn,\n workspace: state.workspace,\n browser: {\n enabled: state.browserEnabled,\n headless: state.browserHeadless,\n allowPrivateUrls: state.browserAllowPrivateUrls,\n commandTimeout: state.browserCommandTimeout ?? null,\n backend: state.browserBackend === 'extension' ? null : state.browserBackend,\n cloudProvider: state.browserCloudProvider === 'local' ? null : state.browserCloudProvider,\n cloud: state.browserBackend === 'cloud'\n ? {\n apiKey: state.browserCloudApiKey.trim() || null,\n projectId: state.browserCloudProjectId.trim() || null,\n region: state.browserCloudRegion.trim() || null,\n }\n : null,\n cdpUrl: state.browserCdpUrl.trim() || null,\n extension: state.browserBackend === 'extension'\n ? {\n port: state.browserExtensionPort ?? null,\n host: state.browserExtensionHost.trim() || null,\n }\n : null,\n cloakbrowser: state.browserBackend === 'cloakbrowser'\n ? {\n keepOpen: state.browserCloakKeepOpen,\n temporaryProfile: state.browserCloakTemporaryProfile,\n cacheDir: state.browserCloakCacheDir.trim() || null,\n binaryPath: state.browserCloakBinaryPath.trim() || null,\n }\n : null,\n humanize: state.browserBackend === 'cloakbrowser' ? state.browserHumanize : null,\n humanPreset: state.browserBackend === 'cloakbrowser' ? state.browserHumanPreset : null,\n dialogPolicy: state.browserDialogPolicy === 'auto_dismiss' ? null : state.browserDialogPolicy,\n dialogTimeoutSeconds: state.browserDialogTimeout ?? null,\n },\n thinkingDefault: state.thinkingDefault,\n reasoningDefault: state.reasoningDefault,\n verboseDefault: state.verboseDefault,\n compaction: { ...state.compaction },\n pruning: { ...state.pruning },\n memory: buildMemoryPatch(state.memory),\n sessionSearch: {\n summaryModel: state.sessionSearch.summaryModel.trim() || null,\n },\n backgroundReview: {\n enabled: state.backgroundReview.enabled,\n memoryNudgeInterval: state.backgroundReview.memoryNudgeInterval,\n skillNudgeInterval: state.backgroundReview.skillNudgeInterval,\n maxToolRounds: state.backgroundReview.maxToolRounds,\n maxHistoryMessages: state.backgroundReview.maxHistoryMessages,\n maxDurationMs: state.backgroundReview.maxDurationMs,\n },\n webExtract: {\n model: state.webExtract.model.trim() || null,\n maxLength: state.webExtract.maxLength ?? null,\n },\n delegate: { enabled: state.delegate.enabled },\n executeCode: { enabled: state.executeCode.enabled },\n systemPromptOverride: state.systemPromptOverride.trim() || null,\n skills: skillsClean.length > 0 ? skillsClean : null,\n tools: { disable: toolsDisableClean.length > 0 ? toolsDisableClean : null },\n params,\n };\n\n await fetchJson(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n agents: { defaults },\n }),\n });\n void revalidateGatewayConfig();\n}\n","/**\n * Agent id rules — keep in sync with `src/agent/agent-scope.ts` (`validateAgentIdForNewAgent`).\n */\n\nconst DEFAULT_AGENT_ID = 'main';\nconst VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;\nconst INVALID_CHARS_RE = /[^a-z0-9_-]+/g;\nconst LEADING_DASH_RE = /^-+/;\nconst TRAILING_DASH_RE = /-+$/;\n\nconst STRICT_AGENT_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/;\n\nconst WINDOWS_RESERVED_AGENT_IDS = new Set<string>([\n 'con',\n 'prn',\n 'aux',\n 'nul',\n 'com1',\n 'com2',\n 'com3',\n 'com4',\n 'com5',\n 'com6',\n 'com7',\n 'com8',\n 'com9',\n 'lpt1',\n 'lpt2',\n 'lpt3',\n 'lpt4',\n 'lpt5',\n 'lpt6',\n 'lpt7',\n 'lpt8',\n 'lpt9',\n]);\n\nexport function normalizeAgentId(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n return DEFAULT_AGENT_ID;\n }\n const normalized = trimmed.toLowerCase();\n if (VALID_ID_RE.test(trimmed)) {\n return normalized;\n }\n return (\n normalized\n .replace(INVALID_CHARS_RE, '-')\n .replace(LEADING_DASH_RE, '')\n .replace(TRAILING_DASH_RE, '')\n .slice(0, 64) || DEFAULT_AGENT_ID\n );\n}\n\nexport function validateAgentIdForNewAgent(\n explicitId: string | undefined | null,\n displayNameForDerivation: string,\n): { ok: true; agentId: string } | { ok: false; error: string } {\n const explicit = explicitId?.trim();\n if (explicit) {\n const id = explicit.toLowerCase();\n if (!STRICT_AGENT_ID_RE.test(id)) {\n return {\n ok: false,\n error:\n 'Invalid agent id: use 1–64 characters; letters, digits, underscores, and hyphens only; start with a letter or digit.',\n };\n }\n if (id === DEFAULT_AGENT_ID) {\n return { ok: false, error: `\"${DEFAULT_AGENT_ID}\" is reserved` };\n }\n if (WINDOWS_RESERVED_AGENT_IDS.has(id)) {\n return { ok: false, error: `Agent id \"${id}\" is reserved (Windows device name).` };\n }\n return { ok: true, agentId: id };\n }\n\n const agentId = normalizeAgentId(displayNameForDerivation.trim());\n if (agentId === DEFAULT_AGENT_ID) {\n return {\n ok: false,\n error:\n 'Display name cannot produce a valid agent folder id. Set an explicit Agent id (letters, digits, underscores, hyphens only).',\n };\n }\n if (WINDOWS_RESERVED_AGENT_IDS.has(agentId)) {\n return {\n ok: false,\n error: `That display name resolves to \"${agentId}\", which is reserved. Use a different display name or set an explicit Agent id.`,\n };\n }\n if (!STRICT_AGENT_ID_RE.test(agentId)) {\n return {\n ok: false,\n error:\n 'Could not derive a folder-safe agent id from the display name. Set an explicit Agent id (letters, digits, underscores, hyphens only).',\n };\n }\n return { ok: true, agentId };\n}\n","/**\n * Default workspace path suggestion for a new agent (`~/.xopc/workspace/<agentId>`; parent is `agents.defaults.workspace`).\n */\n\nimport { normalizeAgentId } from '@/lib/agent-id';\n\n/** Gateway default when `agents.defaults.workspace` is unset. */\nexport const DEFAULT_AGENT_WORKSPACE = '~/.xopc/workspace';\n\n/** Empty string if `name` is blank; else `~/.xopc/workspace/<agentId>`. */\nexport function suggestWorkspaceFromAgentName(name: string): string {\n const t = name.trim();\n if (!t) {\n return '';\n }\n const id = normalizeAgentId(t);\n return `${DEFAULT_AGENT_WORKSPACE}/${id}`;\n}\n","import { Plus, Search } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport type AgentsSettingsToolbarProps = {\n a: Pick<AgentsSettingsMessages, 'addAgent' | 'addAgentAria' | 'listSearchPlaceholder'>;\n busy: boolean;\n listSearchQuery: string;\n onListSearchQueryChange: (value: string) => void;\n onAddAgent: () => void;\n};\n\nexport function AgentsSettingsToolbar({\n a,\n busy,\n listSearchQuery,\n onListSearchQueryChange,\n onAddAgent,\n}: AgentsSettingsToolbarProps) {\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <label className=\"relative flex min-h-9 min-w-0 max-w-sm cursor-text items-center rounded-pill border border-edge bg-surface-base py-1.5 pl-9 pr-3 shadow-surface dark:bg-surface-hover/40 sm:max-w-md\">\n <Search\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-disabled\"\n strokeWidth={1.75}\n aria-hidden\n />\n <input\n type=\"search\"\n enterKeyHint=\"search\"\n value={listSearchQuery}\n onChange={(e) => onListSearchQueryChange(e.target.value)}\n placeholder={a.listSearchPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n aria-label={a.listSearchPlaceholder}\n className=\"min-w-0 flex-1 appearance-none border-0 bg-transparent py-0.5 text-sm leading-normal text-fg caret-current placeholder:text-fg-disabled focus:border-0 focus:shadow-none focus:outline-none focus:ring-0 focus-visible:outline-none\"\n />\n </label>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"shrink-0 gap-2\"\n aria-label={a.addAgentAria}\n disabled={busy}\n onClick={() => onAddAgent()}\n >\n <Plus className=\"size-4\" strokeWidth={1.75} aria-hidden />\n {a.addAgent}\n </Button>\n </div>\n );\n}\n","import {\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n} from 'react';\n\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport {\n type IdentityFields,\n type SoulTemplateId,\n detectSoulTemplate,\n parseIdentityMarkdown,\n serializeIdentityMarkdown,\n SOUL_TEMPLATES,\n} from '../agent-profile-markdown';\n\ntype OverviewProfileLoaded = {\n identity: IdentityFields;\n soulTemplate: SoulTemplateId;\n soulCustomContent: string;\n identityBaseline: string;\n soulBaseline: string;\n};\n\nexport type OverviewProfileDraft = OverviewProfileLoaded & {\n soulEditorNonce: number;\n soulPreviewMode: boolean;\n avatarDialogOpen: boolean;\n};\n\nfunction draftFromLoaded(loaded: OverviewProfileLoaded): OverviewProfileDraft {\n return {\n ...loaded,\n soulEditorNonce: 0,\n soulPreviewMode: false,\n avatarDialogOpen: false,\n };\n}\n\nexport function useAgentOverviewProfileMarkdown(options: {\n agentId: string | null;\n enabled: boolean;\n saveRef?: MutableRefObject<(() => Promise<void>) | null>;\n}) {\n const { agentId, enabled, saveRef } = options;\n\n const loadedResource = useAsyncResource(\n async (): Promise<OverviewProfileLoaded | null> => {\n if (!agentId) return null;\n const [identityMd, soulMd] = await Promise.all([\n fetchAgentProfileFileContent(agentId, 'IDENTITY.md').catch(() => ''),\n fetchAgentProfileFileContent(agentId, 'SOUL.md').catch(() => ''),\n ]);\n const identity = parseIdentityMarkdown(identityMd);\n return {\n identity,\n soulTemplate: detectSoulTemplate(soulMd),\n soulCustomContent: soulMd,\n identityBaseline: JSON.stringify(identity),\n soulBaseline: soulMd,\n };\n },\n [agentId],\n { enabled: enabled && Boolean(agentId), initial: null, errorData: null },\n );\n\n const loaded = loadedResource.data;\n const profileMarkdownLoading = loadedResource.loading;\n\n const dirtyRef = useRef(false);\n const [localDraft, setLocalDraft] = useState<OverviewProfileDraft | null>(null);\n\n const agentKey = agentId ?? '';\n const trackedAgentRef = useRef(agentKey);\n if (trackedAgentRef.current !== agentKey) {\n trackedAgentRef.current = agentKey;\n dirtyRef.current = false;\n setLocalDraft(null);\n }\n\n const draft = localDraft ?? (loaded ? draftFromLoaded(loaded) : null);\n\n const dirty = useMemo(() => {\n if (!draft) return false;\n return (\n JSON.stringify(draft.identity) !== draft.identityBaseline ||\n draft.soulCustomContent !== draft.soulBaseline\n );\n }, [draft]);\n\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n\n const patchDraft = useCallback((patch: (prev: OverviewProfileDraft) => OverviewProfileDraft) => {\n dirtyRef.current = true;\n setLocalDraft((prev) => {\n const base = prev ?? (loaded ? draftFromLoaded(loaded) : null);\n return base ? patch(base) : null;\n });\n }, [loaded]);\n\n const updateIdentity = useCallback(\n (identityPatch: Partial<IdentityFields>) => {\n patchDraft((prev) => ({ ...prev, identity: { ...prev.identity, ...identityPatch } }));\n },\n [patchDraft],\n );\n\n const handleSoulTemplateChange = useCallback(\n (templateId: SoulTemplateId) => {\n patchDraft((prev) => {\n if (templateId === 'custom') {\n return { ...prev, soulTemplate: 'custom' };\n }\n const tpl = SOUL_TEMPLATES.find((t) => t.id === templateId);\n if (!tpl?.content) {\n return { ...prev, soulTemplate: templateId };\n }\n return {\n ...prev,\n soulTemplate: templateId,\n soulCustomContent: tpl.content,\n soulEditorNonce: prev.soulEditorNonce + 1,\n };\n });\n },\n [patchDraft],\n );\n\n const handleSoulContentChange = useCallback(\n (content: string) => {\n patchDraft((prev) => ({\n ...prev,\n soulCustomContent: content,\n soulTemplate: 'custom',\n }));\n },\n [patchDraft],\n );\n\n const setAvatarDialogOpen = useCallback(\n (open: boolean) => {\n patchDraft((prev) => ({ ...prev, avatarDialogOpen: open }));\n },\n [patchDraft],\n );\n\n const toggleSoulPreviewMode = useCallback(() => {\n patchDraft((prev) => ({ ...prev, soulPreviewMode: !prev.soulPreviewMode }));\n }, [patchDraft]);\n\n const saveProfileMarkdown = useCallback(async () => {\n const id = agentIdRef.current;\n if (!id || !draft) return;\n await Promise.all([\n saveAgentProfileFileContent(id, 'IDENTITY.md', serializeIdentityMarkdown(draft.identity)),\n saveAgentProfileFileContent(id, 'SOUL.md', draft.soulCustomContent),\n ]);\n dirtyRef.current = false;\n setLocalDraft((prev) => {\n const current = prev ?? draft;\n return {\n ...current,\n identityBaseline: JSON.stringify(current.identity),\n soulBaseline: current.soulCustomContent,\n };\n });\n }, [draft]);\n\n useLayoutEffect(() => {\n if (!saveRef) return;\n saveRef.current = saveProfileMarkdown;\n return () => {\n saveRef.current = null;\n };\n }, [saveProfileMarkdown, saveRef]);\n\n return {\n profileMarkdownLoading,\n draft,\n dirty,\n updateIdentity,\n handleSoulTemplateChange,\n handleSoulContentChange,\n setAvatarDialogOpen,\n toggleSoulPreviewMode,\n };\n}\n","import { useCallback, useEffect, useRef, useReducer, useState, type Dispatch, type SetStateAction } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport {\n fetchAgentProfileFileContent,\n fetchAgentProfileFiles,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\n\ntype ProfileFiles = Awaited<ReturnType<typeof fetchAgentProfileFiles>>;\n\ntype FileEditorState = {\n draft: string;\n editorNonce: number;\n loadedKey: string;\n};\n\ntype FileEditorAction =\n | { type: 'load'; key: string; content: string }\n | { type: 'setDraft'; value: string }\n | { type: 'clear' }\n | { type: 'resetViewMode' };\n\nconst initialFileEditor: FileEditorState = {\n draft: '',\n editorNonce: 0,\n loadedKey: '',\n};\n\nfunction fileEditorReducer(state: FileEditorState, action: FileEditorAction): FileEditorState {\n switch (action.type) {\n case 'load':\n return {\n draft: action.content,\n editorNonce: state.editorNonce + 1,\n loadedKey: action.key,\n };\n case 'setDraft':\n return { ...state, draft: action.value };\n case 'clear':\n return { draft: '', editorNonce: state.editorNonce, loadedKey: '' };\n case 'resetViewMode':\n return state;\n }\n}\n\nexport function useAgentProfileFiles(options: {\n panel: AgentPanel;\n selectedId: string | null;\n hasToken: boolean;\n dataAgentsLength: number | undefined;\n saveErrorMessage: string;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const { panel, selectedId, hasToken, dataAgentsLength, saveErrorMessage, setError } = options;\n\n const filesEnabled = panel === 'files' && !!selectedId && hasToken;\n const filesResource = useAsyncResource(\n () => (selectedId ? fetchAgentProfileFiles(selectedId) : Promise.resolve(null as ProfileFiles | null)),\n [panel, selectedId, hasToken, dataAgentsLength],\n { enabled: filesEnabled, initial: null as ProfileFiles | null, errorData: null },\n );\n const files = filesResource.data;\n const setFiles = filesResource.setData;\n const filesLoading = filesResource.loading;\n const [activeFile, setActiveFileState] = useState<string | null>(null);\n const [fileEditor, dispatchFileEditor] = useReducer(fileEditorReducer, initialFileEditor);\n const [fileSaving, setFileSaving] = useState(false);\n const [filesViewMode, setFilesViewMode] = useState<'edit' | 'preview'>('edit');\n\n const fileDraft = fileEditor.draft;\n const profileEditorNonce = fileEditor.editorNonce;\n\n const fileDraftRef = useRef(fileDraft);\n fileDraftRef.current = fileDraft;\n const selectedIdRef = useRef(selectedId);\n selectedIdRef.current = selectedId;\n const activeFileRef = useRef(activeFile);\n activeFileRef.current = activeFile;\n const overviewSaveProfileMarkdownRef = useRef<(() => Promise<void>) | null>(null);\n const profileFileKeyRef = useRef('');\n const profileSyncedRef = useRef('');\n const trackedProfileKeyRef = useRef('');\n const flushProfileSaveRef = useRef<() => void>(() => {});\n\n const profileFileEnabled = Boolean(activeFile && selectedId && hasToken);\n const profileFileResource = useAsyncResource(\n () =>\n activeFile && selectedId\n ? fetchAgentProfileFileContent(selectedId, activeFile).catch(() => '')\n : Promise.resolve(''),\n [activeFile, selectedId, hasToken],\n { enabled: profileFileEnabled, initial: '', errorData: '' },\n );\n const profileFileLoading = profileFileResource.loading;\n\n const saveProfileMarkdownDebounced = useDebouncedCallback(\n async () => {\n const sid = selectedIdRef.current;\n const name = activeFileRef.current;\n if (!sid || !name) {\n return;\n }\n const key = `${sid}:${name}`;\n if (key !== profileFileKeyRef.current) {\n return;\n }\n const draft = fileDraftRef.current;\n if (draft === profileSyncedRef.current) {\n return;\n }\n setFileSaving(true);\n setError(null);\n try {\n await saveAgentProfileFileContent(sid, name, draft);\n profileSyncedRef.current = draft;\n setFiles((prev) => {\n if (!prev || prev.agentId !== sid) {\n return prev;\n }\n return {\n ...prev,\n files: prev.files.map((f) => (f.name === name ? { ...f, missing: false } : f)),\n };\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setFileSaving(false);\n }\n },\n 800,\n );\n\n flushProfileSaveRef.current = saveProfileMarkdownDebounced.flush;\n\n useEffect(() => {\n return () => {\n flushProfileSaveRef.current();\n };\n }, []);\n\n const trackedPanelRef = useRef(panel);\n if (trackedPanelRef.current !== panel) {\n if (trackedPanelRef.current === 'files') {\n flushProfileSaveRef.current();\n }\n trackedPanelRef.current = panel;\n }\n\n const profileFileKey = activeFile && selectedId ? `${selectedId}:${activeFile}` : '';\n\n if (profileFileKey !== trackedProfileKeyRef.current) {\n flushProfileSaveRef.current();\n trackedProfileKeyRef.current = profileFileKey;\n }\n if (!profileFileKey) {\n if (fileEditor.loadedKey !== '') {\n dispatchFileEditor({ type: 'clear' });\n }\n } else if (!profileFileLoading && fileEditor.loadedKey !== profileFileKey) {\n profileFileKeyRef.current = profileFileKey;\n profileSyncedRef.current = profileFileResource.data;\n dispatchFileEditor({\n type: 'load',\n key: profileFileKey,\n content: profileFileResource.data,\n });\n }\n\n const trackedViewModeKeyRef = useRef({ activeFile, selectedId });\n if (\n trackedViewModeKeyRef.current.activeFile !== activeFile ||\n trackedViewModeKeyRef.current.selectedId !== selectedId\n ) {\n trackedViewModeKeyRef.current = { activeFile, selectedId };\n setFilesViewMode('edit');\n }\n\n const setActiveFile = useCallback((value: string | null) => {\n flushProfileSaveRef.current();\n setActiveFileState(value);\n }, []);\n\n const setFileDraft = useCallback(\n (value: SetStateAction<string>) => {\n dispatchFileEditor({\n type: 'setDraft',\n value: typeof value === 'function' ? value(fileDraftRef.current) : value,\n });\n saveProfileMarkdownDebounced();\n },\n [saveProfileMarkdownDebounced],\n );\n\n return {\n files,\n setFiles,\n filesLoading,\n activeFile,\n setActiveFile,\n fileDraft,\n setFileDraft,\n fileSaving,\n filesViewMode,\n setFilesViewMode,\n profileFileLoading,\n profileEditorNonce,\n overviewSaveProfileMarkdownRef,\n saveProfileMarkdownDebounced,\n };\n}\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport type { Dispatch, FormEvent, SetStateAction } from 'react';\n\nimport {\n getChannels,\n getSessionChatIds,\n type ChannelStatus,\n type SessionChatId,\n} from '@/features/cron/cron-api';\nimport {\n patchGatewayBindings,\n type GatewayAgentRow,\n type GatewayConfigBinding,\n} from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\nimport { buildNewBindingMatch } from '../utils';\n\nexport function useAgentsChannelBindings(options: {\n panel: AgentPanel;\n hasToken: boolean;\n bindingsFromConfig: GatewayConfigBinding[];\n gatewayCfgLoading: boolean;\n selected: GatewayAgentRow | null;\n saveErrorMessage: string;\n setBusy: Dispatch<SetStateAction<boolean>>;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const {\n panel,\n hasToken,\n bindingsFromConfig,\n gatewayCfgLoading,\n selected,\n saveErrorMessage,\n setBusy,\n setError,\n } = options;\n\n const bindingsDirtyRef = useRef(false);\n const [localBindings, setLocalBindings] = useState<GatewayConfigBinding[] | null>(null);\n\n const trackedBindingsRef = useRef(bindingsFromConfig);\n if (\n panel === 'channels' &&\n hasToken &&\n !bindingsDirtyRef.current &&\n trackedBindingsRef.current !== bindingsFromConfig\n ) {\n trackedBindingsRef.current = bindingsFromConfig;\n setLocalBindings(bindingsFromConfig);\n }\n\n const allBindings = localBindings ?? bindingsFromConfig;\n\n const channelsEnabled = panel === 'channels' && hasToken;\n const channelsResource = useAsyncResource(\n () => getChannels(),\n [panel, hasToken],\n { enabled: channelsEnabled, initial: [] as ChannelStatus[], errorData: [] },\n );\n const bindChannelStatuses = channelsResource.data;\n const bindChannelsLoading = channelsResource.loading;\n\n const defaultBindChannel = useMemo(() => {\n if (bindChannelsLoading || bindChannelStatuses.length === 0) return '';\n return bindChannelStatuses[0]?.name ?? '';\n }, [bindChannelStatuses, bindChannelsLoading]);\n\n const [newBindChannel, setNewBindChannel] = useState('');\n const trackedDefaultChannelRef = useRef(defaultBindChannel);\n if (\n panel === 'channels' &&\n !bindChannelsLoading &&\n defaultBindChannel &&\n trackedDefaultChannelRef.current !== defaultBindChannel &&\n (!newBindChannel || !bindChannelStatuses.some((c) => c.name === newBindChannel))\n ) {\n trackedDefaultChannelRef.current = defaultBindChannel;\n setNewBindChannel(defaultBindChannel);\n }\n trackedDefaultChannelRef.current = defaultBindChannel;\n\n const trimmedBindChannel = newBindChannel.trim();\n const sessionsEnabled = channelsEnabled && trimmedBindChannel.length > 0;\n const sessionsResource = useAsyncResource(\n () => getSessionChatIds(trimmedBindChannel),\n [panel, hasToken, trimmedBindChannel],\n { enabled: sessionsEnabled, initial: [] as SessionChatId[], errorData: [] },\n );\n const bindSessionChats = sessionsResource.data;\n const bindSessionsLoading = sessionsResource.loading;\n const setBindSessionChats = sessionsResource.setData;\n\n const [newBindSessionIdx, setNewBindSessionIdx] = useState<number | null>(null);\n const [newBindCustomPeer, setNewBindCustomPeer] = useState('');\n\n const trackedBindChannelRef = useRef(trimmedBindChannel);\n if (trackedBindChannelRef.current !== trimmedBindChannel) {\n trackedBindChannelRef.current = trimmedBindChannel;\n setNewBindSessionIdx(null);\n }\n\n const agentBindings = useMemo(() => {\n if (!selected) {\n return [];\n }\n return allBindings.filter((b) => b.agentId.toLowerCase() === selected.id.toLowerCase());\n }, [allBindings, selected?.id]);\n\n const refreshBindSessions = useCallback(() => {\n const ch = newBindChannel.trim();\n if (!ch) {\n return;\n }\n void getSessionChatIds(ch)\n .then((ids) => {\n setBindSessionChats(ids);\n setNewBindSessionIdx((i) => (i != null && i < ids.length ? i : null));\n })\n .catch(() => {\n setBindSessionChats([]);\n setNewBindSessionIdx(null);\n });\n }, [newBindChannel, setBindSessionChats]);\n\n const useManualChannel = !bindChannelsLoading && bindChannelStatuses.length === 0;\n const bindingsLoading = panel === 'channels' && hasToken && gatewayCfgLoading;\n\n const onRemoveBinding = useCallback(\n async (rule: GatewayConfigBinding) => {\n setBusy(true);\n setError(null);\n try {\n const nextList = allBindings.filter((b) => b !== rule);\n await patchGatewayBindings(nextList);\n bindingsDirtyRef.current = true;\n setLocalBindings(nextList);\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n },\n [allBindings, saveErrorMessage, setBusy, setError],\n );\n\n const onAddBinding = useCallback(\n async (e: FormEvent) => {\n e.preventDefault();\n if (!selected || !newBindChannel.trim()) {\n return;\n }\n const match = buildNewBindingMatch(\n newBindChannel,\n newBindCustomPeer,\n newBindSessionIdx,\n bindSessionChats,\n );\n const nextList = [\n ...allBindings,\n {\n agentId: selected.id,\n priority: 100,\n enabled: true,\n match,\n },\n ];\n setBusy(true);\n setError(null);\n try {\n await patchGatewayBindings(nextList);\n bindingsDirtyRef.current = true;\n setLocalBindings(nextList);\n setNewBindSessionIdx(null);\n setNewBindCustomPeer('');\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n },\n [\n allBindings,\n bindSessionChats,\n newBindChannel,\n newBindCustomPeer,\n newBindSessionIdx,\n saveErrorMessage,\n selected,\n setBusy,\n setError,\n ],\n );\n\n return {\n agentBindings,\n allBindings,\n bindChannelStatuses,\n bindChannelsLoading,\n bindSessionChats,\n bindSessionsLoading,\n bindingsLoading,\n newBindChannel,\n setNewBindChannel,\n newBindSessionIdx,\n setNewBindSessionIdx,\n newBindCustomPeer,\n setNewBindCustomPeer,\n onAddBinding,\n onRemoveBinding,\n refreshBindSessions,\n useManualChannel,\n };\n}\n","import { useMemo, useState } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport { listJobs, updateJob, type CronJob } from '@/features/cron/cron-api';\nimport { isDreamingManagedCronJob } from '@/features/cron/cron-dreaming-jobs';\nimport type { GatewayAgentRow, GatewayAgentsPayload } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\nimport { jobMatchesAgent } from '../utils';\n\nexport function useAgentsCronJobs(options: {\n panel: AgentPanel;\n hasToken: boolean;\n data: GatewayAgentsPayload | null;\n selected: GatewayAgentRow | null;\n saveErrorMessage: string;\n setBusy: Dispatch<SetStateAction<boolean>>;\n setError: Dispatch<SetStateAction<string | null>>;\n}) {\n const { panel, hasToken, data, selected, saveErrorMessage, setBusy, setError } = options;\n\n const { data: cronJobs, loading: cronLoading } = useAsyncResource(\n () => listJobs(),\n [panel, hasToken],\n { enabled: panel === 'cron' && hasToken, initial: [] as CronJob[], errorData: [] },\n );\n // Override cron jobs after a manual mutation (onSetCronJobAgent) without refetching twice.\n const [cronJobsOverride, setCronJobsOverride] = useState<CronJob[] | null>(null);\n const effectiveCronJobs = cronJobsOverride ?? cronJobs;\n\n const agentCronJobs = useMemo(() => {\n if (!data || !selected) {\n return [];\n }\n return effectiveCronJobs.filter(\n (j) => !isDreamingManagedCronJob(j) && jobMatchesAgent(j, selected.id, data.defaultId),\n );\n }, [effectiveCronJobs, data, selected]);\n\n async function onSetCronJobAgent(job: CronJob, agentKey: string) {\n setBusy(true);\n setError(null);\n try {\n await updateJob(job.id, { agentId: agentKey === '' ? null : agentKey });\n setCronJobsOverride(await listJobs());\n } catch (err) {\n setError(err instanceof Error ? err.message : saveErrorMessage);\n } finally {\n setBusy(false);\n }\n }\n\n return {\n agentCronJobs,\n cronJobs: effectiveCronJobs,\n cronLoading,\n onSetCronJobAgent,\n };\n}\n","import { useMemo } from 'react';\n\nimport { fetchSkillsCatalog, type SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nimport type { AgentPanel } from '../utils';\n\nexport function useSkillsCatalogLoad(enabled: boolean, hasToken: boolean) {\n const { data: skillCatalog, loading: skillsCatalogLoading } = useAsyncResource(\n () => fetchSkillsCatalog(),\n [enabled, hasToken],\n { enabled: enabled && hasToken, initial: [] as SkillCatalogRow[], errorData: [] },\n );\n\n const catalogForPick = useMemo(() => skillCatalog.filter((s) => s.enabled !== false), [skillCatalog]);\n\n return {\n catalogForPick,\n skillCatalog,\n skillsCatalogLoading,\n };\n}\n\nexport function useAgentsSkillsCatalog(options: { panel: AgentPanel; hasToken: boolean }) {\n return useSkillsCatalogLoad(options.panel === 'skills', options.hasToken);\n}\n","import { useRef, useState } from 'react';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\n\nimport type { AgentPanel } from '../utils';\n\nfunction toolDisableFromSelected(selected: GatewayAgentRow): Set<string> {\n return new Set(selected.tools.entryDisable);\n}\n\nfunction skillsStateFromSelected(selected: GatewayAgentRow): { inherit: boolean; pick: Set<string> } {\n const inherit = selected.skills.entry === undefined;\n if (inherit) {\n return { inherit: true, pick: new Set(selected.skills.effectiveAllowlist ?? []) };\n }\n return { inherit: false, pick: new Set(selected.skills.entry ?? []) };\n}\n\nexport function useAgentsToolsSkillsLocalState(options: {\n panel: AgentPanel;\n selected: GatewayAgentRow | null;\n}) {\n const { panel, selected } = options;\n\n const syncKey = `${panel}:${selected?.id ?? ''}`;\n const trackedSyncRef = useRef(syncKey);\n const [toolEntryDisable, setToolEntryDisable] = useState<Set<string>>(() => new Set());\n const [skillsPick, setSkillsPick] = useState<Set<string>>(() => new Set());\n const [skillsInherit, setSkillsInherit] = useState(true);\n\n if (trackedSyncRef.current !== syncKey) {\n trackedSyncRef.current = syncKey;\n if (selected && panel === 'tools') {\n setToolEntryDisable(toolDisableFromSelected(selected));\n }\n if (selected && panel === 'skills') {\n const next = skillsStateFromSelected(selected);\n setSkillsInherit(next.inherit);\n setSkillsPick(next.pick);\n }\n }\n\n return {\n toolEntryDisable,\n setToolEntryDisable,\n skillsPick,\n setSkillsPick,\n skillsInherit,\n setSkillsInherit,\n };\n}\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n} from 'react';\nimport { useNavigate, useParams, useSearchParams } from 'react-router-dom';\nimport useSWR from 'swr';\n\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n createGatewayAgent,\n deleteGatewayAgent,\n fetchGatewayAgents,\n parseGatewayBindingsFromConfig,\n updateGatewayAgent,\n type GatewayAgentRow,\n type GatewayAgentsPayload,\n} from '@/features/settings/agents-admin-api';\nimport { parseAgentDefaultsFromConfig } from '@/features/settings/config-api';\nimport { AGENTS_APP_LIST_PATH, agentsAppDetailPath } from '@/features/settings/agents/agents-app-path';\nimport { SETTINGS_BACK_PATH_STATE_KEY } from '@/features/settings/settings-nav-state';\nimport { suggestWorkspaceFromAgentName } from '@/features/settings/suggest-agent-workspace';\nimport { validateAgentIdForNewAgent } from '@/lib/agent-id';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { usePageHeaderStore } from '@/stores/page-header-store';\n\nimport type { AgentsEditorPanelContentProps } from './agents-editor-panel-content';\nimport { AgentsSettingsToolbar } from './agents-settings-toolbar';\nimport { agentListDisplayName } from './agent-display-names';\nimport { useAgentOverviewProfileMarkdown } from './hooks/use-agent-overview-profile-markdown';\nimport { useAgentProfileFiles } from './hooks/use-agent-profile-files';\nimport { useAgentsChannelBindings } from './hooks/use-agents-channel-bindings';\nimport { useAgentsCronJobs } from './hooks/use-agents-cron-jobs';\nimport { useAgentsSkillsCatalog } from './hooks/use-agents-skills-catalog';\nimport { useAgentsToolsSkillsLocalState } from './hooks/use-agents-tools-skills-local-state';\nimport { PRESET_AGENTS_SKIPPED_KEY } from './preset-agents';\nimport type { AgentPanel } from './utils';\n\nexport function useAgentsSettingsPanel() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentsSettings;\n\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [deleteTarget, setDeleteTarget] = useState<GatewayAgentRow | null>(null);\n const [deletePurge, setDeletePurge] = useState(false);\n const [deleteConfirmText, setDeleteConfirmText] = useState('');\n const cCron = m.cron;\n const chat = m.chat;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const { agentId: routeAgentId } = useParams<{ agentId?: string }>();\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n\n const agentsSwrKey = hasToken ? 'settings-gateway-agents' : null;\n const {\n data: swrAgentsData,\n error: swrAgentsError,\n isLoading: agentsLoading,\n mutate: mutateAgents,\n } = useSWR(agentsSwrKey, fetchGatewayAgents, { revalidateOnFocus: false });\n\n const { data: gatewayCfgData } = useGatewayConfigSwr(hasToken);\n\n const bindingsFromConfig = useMemo(\n () => parseGatewayBindingsFromConfig(gatewayCfgData?.payload?.config ?? {}),\n [gatewayCfgData],\n );\n\n const globalAgentDefaults = useMemo(\n () => parseAgentDefaultsFromConfig(gatewayCfgData?.payload?.config ?? {}),\n [gatewayCfgData],\n );\n\n const data: GatewayAgentsPayload | null = swrAgentsData ?? null;\n const loading = Boolean(hasToken && agentsLoading);\n const [error, setError] = useState<string | null>(null);\n const loadError =\n swrAgentsError instanceof Error ? swrAgentsError.message : swrAgentsError ? a.loadError : null;\n const displayError = error ?? loadError;\n\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [presetSetupDismissed, setPresetSetupDismissed] = useState(\n () => localStorage.getItem(PRESET_AGENTS_SKIPPED_KEY) === 'true',\n );\n const [panel, setPanel] = useState<AgentPanel>('overview');\n\n const [createDisplayName, setCreateDisplayName] = useState('');\n const [createAgentId, setCreateAgentId] = useState('');\n const [createDescription, setCreateDescription] = useState('');\n const [createWorkspace, setCreateWorkspace] = useState('');\n const [createModel, setCreateModel] = useState('');\n const [createModalError, setCreateModalError] = useState<string | null>(null);\n const [addAgentModalOpen, setAddAgentModalOpen] = useState(false);\n const createWorkspaceSuggestedRef = useRef('');\n const [busy, setBusy] = useState(false);\n const [listSearchQuery, setListSearchQuery] = useState('');\n\n const [editWorkspace, setEditWorkspace] = useState('');\n const [editModel, setEditModel] = useState('');\n const [editName, setEditName] = useState('');\n const [editDescription, setEditDescription] = useState('');\n\n const profileSaveRef = useRef<(() => Promise<void>) | null>(null);\n const overviewSaveProfileMarkdownRef = useRef<(() => Promise<void>) | null>(null);\n const [profileDirty, setProfileDirty] = useState(false);\n const [savedFlash, setSavedFlash] = useState(false);\n\n const trackedAgentsSyncRef = useRef<{ data: GatewayAgentsPayload | null; routeAgentId?: string }>({\n data: null,\n routeAgentId: undefined,\n });\n if (\n data &&\n (data !== trackedAgentsSyncRef.current.data || routeAgentId !== trackedAgentsSyncRef.current.routeAgentId)\n ) {\n trackedAgentsSyncRef.current = { data, routeAgentId };\n if (routeAgentId && data.agents.some((x) => x.id === routeAgentId)) {\n setSelectedId(routeAgentId);\n } else {\n setSelectedId((prev) => {\n if (prev && data.agents.some((x) => x.id === prev)) {\n return prev;\n }\n return data.defaultId;\n });\n }\n }\n\n const onlyMainAgent =\n data != null &&\n data.agents.length <= 1 &&\n data.agents.every((ag) => ag.id === data.defaultId);\n const showPresetSetup = Boolean(data && !loading && onlyMainAgent && !presetSetupDismissed);\n\n const onPresetSetupComplete = useCallback(() => {\n setPresetSetupDismissed(true);\n void mutateAgents();\n }, [mutateAgents]);\n\n const onPresetSetupSkip = useCallback(() => {\n localStorage.setItem(PRESET_AGENTS_SKIPPED_KEY, 'true');\n setPresetSetupDismissed(true);\n }, []);\n\n useEffect(() => {\n if (!data || !routeAgentId) {\n return;\n }\n if (!data.agents.some((x) => x.id === routeAgentId)) {\n navigate(AGENTS_APP_LIST_PATH, { replace: true });\n }\n }, [data, routeAgentId, navigate]);\n\n useEffect(() => {\n if (routeAgentId) {\n setPanel('overview');\n }\n }, [routeAgentId]);\n\n useEffect(() => {\n if (searchParams.get('panel') !== 'defaults') {\n return;\n }\n navigate('/settings/agent-defaults?tab=chat', {\n replace: true,\n state: { [SETTINGS_BACK_PATH_STATE_KEY]: AGENTS_APP_LIST_PATH },\n });\n }, [searchParams, navigate]);\n\n useEffect(() => {\n if (searchParams.get('focus') !== 'avatar' || !routeAgentId) {\n return;\n }\n setPanel('overview');\n if (loading || !data?.agents.some((x) => x.id === routeAgentId)) {\n return;\n }\n const t = window.setTimeout(() => {\n document.getElementById('agent-avatar-settings')?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n setSearchParams(\n (prev) => {\n const next = new URLSearchParams(prev);\n next.delete('focus');\n return next;\n },\n { replace: true },\n );\n }, 220);\n return () => window.clearTimeout(t);\n }, [searchParams, routeAgentId, loading, data, setSearchParams]);\n\n const selected = useMemo(\n () => data?.agents.find((x) => x.id === selectedId) ?? null,\n [data, selectedId],\n );\n\n const trackedSelectedIdRef = useRef<string | null>(null);\n if (selected && trackedSelectedIdRef.current !== selected.id) {\n trackedSelectedIdRef.current = selected.id;\n setEditWorkspace(selected.workspace);\n setEditModel(selected.model?.primary ?? '');\n setEditName(agentListDisplayName(selected, messages(language).agentsSettings));\n setEditDescription(selected.description?.trim() ?? '');\n } else if (!selected && trackedSelectedIdRef.current !== null) {\n trackedSelectedIdRef.current = null;\n setEditWorkspace('');\n setEditModel('');\n setEditName('');\n setEditDescription('');\n }\n\n const overviewProfile = useAgentOverviewProfileMarkdown({\n agentId: selected?.id ?? null,\n enabled: panel === 'overview' && Boolean(selected),\n saveRef: overviewSaveProfileMarkdownRef,\n });\n\n const profileFiles = useAgentProfileFiles({\n panel,\n selectedId,\n hasToken,\n dataAgentsLength: data?.agents.length,\n saveErrorMessage: a.saveError,\n setError,\n });\n\n const toolsSkills = useAgentsToolsSkillsLocalState({ panel, selected });\n\n const channels = useAgentsChannelBindings({\n panel,\n hasToken,\n bindingsFromConfig,\n gatewayCfgLoading: gatewayCfgData === undefined,\n selected,\n saveErrorMessage: a.saveError,\n setBusy,\n setError,\n });\n\n const cron = useAgentsCronJobs({\n panel,\n hasToken,\n data,\n selected,\n saveErrorMessage: a.saveError,\n setBusy,\n setError,\n });\n\n const skillsCatalog = useAgentsSkillsCatalog({ panel, hasToken });\n\n const applyCreateWorkspaceSuggestion = useCallback(() => {\n const next = suggestWorkspaceFromAgentName(createAgentId.trim() || createDisplayName);\n setCreateWorkspace((prev) => {\n if (prev === '' || prev === createWorkspaceSuggestedRef.current) {\n createWorkspaceSuggestedRef.current = next;\n return next;\n }\n return prev;\n });\n }, [createAgentId, createDisplayName]);\n\n const openAddAgentModal = useCallback(() => {\n createWorkspaceSuggestedRef.current = '';\n setCreateDisplayName('');\n setCreateAgentId('');\n setCreateDescription('');\n setCreateWorkspace('');\n setCreateModel('');\n setCreateModalError(null);\n setAddAgentModalOpen(true);\n }, []);\n\n const agentsHeaderEnd = useMemo(\n () => (\n <AgentsSettingsToolbar\n a={a}\n busy={busy}\n listSearchQuery={listSearchQuery}\n onListSearchQueryChange={setListSearchQuery}\n onAddAgent={() => openAddAgentModal()}\n />\n ),\n [a, busy, listSearchQuery, openAddAgentModal],\n );\n\n useLayoutEffect(() => {\n if (!hasToken) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n setPageHeader({\n startExtra: null,\n main: null,\n end: agentsHeaderEnd,\n });\n return () => clearPageHeader();\n }, [agentsHeaderEnd, clearPageHeader, hasToken, setPageHeader]);\n\n async function onCreate(e: FormEvent) {\n e.preventDefault();\n const name = createDisplayName.trim();\n if (!name) {\n return;\n }\n const idRes = validateAgentIdForNewAgent(createAgentId, name);\n if (idRes.ok === false) {\n setCreateModalError(idRes.error);\n return;\n }\n const wsInput = createWorkspace.trim();\n const workspace = wsInput || suggestWorkspaceFromAgentName(createAgentId.trim() || name);\n if (!workspace) {\n return;\n }\n setBusy(true);\n setCreateModalError(null);\n try {\n const desc = createDescription.trim();\n const next = await createGatewayAgent({\n name,\n workspace,\n ...(createAgentId.trim() ? { id: createAgentId.trim() } : {}),\n ...(createModel.trim() ? { model: createModel.trim() } : {}),\n ...(desc ? { description: desc } : {}),\n });\n const { createdAgentId, ...agentsPayload } = next;\n void mutateAgents(agentsPayload, { revalidate: false });\n setCreateDisplayName('');\n setCreateAgentId('');\n setCreateDescription('');\n setCreateWorkspace('');\n setCreateModel('');\n setCreateModalError(null);\n setAddAgentModalOpen(false);\n setSelectedId(createdAgentId);\n navigate(agentsAppDetailPath(createdAgentId));\n } catch (err) {\n setCreateModalError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSaveAgentEdits() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const descTrim = editDescription.trim();\n const next = await updateGatewayAgent(selected.id, {\n name: editName.trim() || undefined,\n description: descTrim.length > 0 ? descTrim : null,\n workspace: editWorkspace.trim() || undefined,\n model: editModel.trim() || null,\n });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSetDefault(agent: GatewayAgentRow) {\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(agent.id, { setDefault: true });\n void mutateAgents(next, { revalidate: false });\n setSelectedId(agent.id);\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function performDelete(agent: GatewayAgentRow, purge: boolean) {\n setBusy(true);\n setError(null);\n try {\n const next = await deleteGatewayAgent(agent.id, purge);\n void mutateAgents(next, { revalidate: false });\n setSelectedId(next.defaultId);\n setPanel('overview');\n if (routeAgentId === agent.id) {\n navigate(AGENTS_APP_LIST_PATH, { replace: true });\n }\n setDeleteDialogOpen(false);\n setDeleteTarget(null);\n setDeleteConfirmText('');\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n function onDelete(agent: GatewayAgentRow, purge: boolean) {\n if (agent.id === 'main') {\n return;\n }\n setDeleteTarget(agent);\n setDeletePurge(purge);\n setDeleteConfirmText('');\n setDeleteDialogOpen(true);\n }\n\n async function onSaveTools() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const toolsDisable = Array.from(toolsSkills.toolEntryDisable).toSorted((x, y) => x.localeCompare(y));\n const next = await updateGatewayAgent(selected.id, { toolsDisable });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onClearToolsEntry() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(selected.id, { toolsDisable: null });\n void mutateAgents(next, { revalidate: false });\n toolsSkills.setToolEntryDisable(new Set());\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n async function onSaveSkills() {\n if (!selected) {\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const next = await updateGatewayAgent(selected.id, {\n skills: toolsSkills.skillsInherit\n ? null\n : [...toolsSkills.skillsPick].toSorted((x, y) => x.localeCompare(y)),\n });\n void mutateAgents(next, { revalidate: false });\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setBusy(false);\n }\n }\n\n const footerSaveNotApplicable = panel === 'channels' || panel === 'cron';\n\n const overviewRestDirty = (() => {\n if (!selected || panel !== 'overview') return false;\n const origName = agentListDisplayName(selected, a);\n const origDesc = selected.description?.trim() ?? '';\n const origWorkspace = selected.workspace;\n const origModel = selected.model?.primary ?? '';\n return (\n editName.trim() !== origName ||\n editDescription.trim() !== origDesc ||\n editWorkspace.trim() !== origWorkspace ||\n editModel.trim() !== origModel\n );\n })();\n\n const isCurrentPanelDirty = (() => {\n if (footerSaveNotApplicable) return false;\n switch (panel) {\n case 'overview':\n return overviewRestDirty || overviewProfile.dirty;\n case 'profile':\n return profileDirty;\n default:\n return true;\n }\n })();\n\n const footerSaveDisabled = footerSaveNotApplicable || !isCurrentPanelDirty;\n\n function showSavedFlash() {\n setSavedFlash(true);\n setTimeout(() => setSavedFlash(false), 2000);\n }\n\n async function handleModalFooterSave() {\n switch (panel) {\n case 'overview':\n await Promise.all([\n onSaveAgentEdits(),\n overviewSaveProfileMarkdownRef.current?.() ?? Promise.resolve(),\n ]);\n showSavedFlash();\n break;\n case 'profile':\n await profileSaveRef.current?.();\n showSavedFlash();\n break;\n case 'tools':\n await onSaveTools();\n showSavedFlash();\n break;\n case 'skills':\n await onSaveSkills();\n showSavedFlash();\n break;\n case 'files':\n profileFiles.saveProfileMarkdownDebounced.flush();\n showSavedFlash();\n break;\n default:\n break;\n }\n }\n\n function onAgentModalOpenChange(open: boolean) {\n if (!open) {\n navigate(AGENTS_APP_LIST_PATH);\n }\n }\n\n const modalTitle = selected ? editName.trim() || agentListDisplayName(selected, a) : (routeAgentId ?? '');\n const modalSubtitle = selected?.id ?? routeAgentId ?? '';\n\n const editorPanelProps: AgentsEditorPanelContentProps = {\n a,\n chat,\n cCron,\n selected,\n panel,\n data,\n busy,\n editName,\n setEditName,\n editDescription,\n setEditDescription,\n editWorkspace,\n setEditWorkspace,\n editModel,\n setEditModel,\n defaultModel: globalAgentDefaults.model,\n defaultWorkspace: globalAgentDefaults.workspace,\n onSetDefault: () => {\n if (!selected) return;\n void onSetDefault(selected);\n },\n onSaveAgentEdits: () => void onSaveAgentEdits(),\n onDelete: (purge: boolean) => {\n if (!selected) return;\n void onDelete(selected, purge);\n },\n overviewSaveProfileMarkdownRef,\n profileSaveRef,\n overviewProfile,\n setProfileDirty,\n filesLoading: profileFiles.filesLoading,\n files: profileFiles.files,\n activeFile: profileFiles.activeFile,\n setActiveFile: profileFiles.setActiveFile,\n filesViewMode: profileFiles.filesViewMode,\n setFilesViewMode: profileFiles.setFilesViewMode,\n fileDraft: profileFiles.fileDraft,\n setFileDraft: profileFiles.setFileDraft,\n fileSaving: profileFiles.fileSaving,\n profileFileLoading: profileFiles.profileFileLoading,\n profileEditorNonce: profileFiles.profileEditorNonce,\n toolEntryDisable: toolsSkills.toolEntryDisable,\n setToolEntryDisable: toolsSkills.setToolEntryDisable,\n onSaveTools: () => void onSaveTools(),\n onClearToolsEntry: () => void onClearToolsEntry(),\n skillsCatalogLoading: skillsCatalog.skillsCatalogLoading,\n catalogForPick: skillsCatalog.catalogForPick,\n skillsInherit: toolsSkills.skillsInherit,\n setSkillsInherit: toolsSkills.setSkillsInherit,\n skillsPick: toolsSkills.skillsPick,\n setSkillsPick: toolsSkills.setSkillsPick,\n onSaveSkills: () => void onSaveSkills(),\n bindingsLoading: channels.bindingsLoading,\n agentBindings: channels.agentBindings,\n bindChannelStatuses: channels.bindChannelStatuses,\n bindChannelsLoading: channels.bindChannelsLoading,\n useManualChannel: channels.useManualChannel,\n newBindChannel: channels.newBindChannel,\n setNewBindChannel: channels.setNewBindChannel,\n bindSessionChats: channels.bindSessionChats,\n bindSessionsLoading: channels.bindSessionsLoading,\n newBindSessionIdx: channels.newBindSessionIdx,\n setNewBindSessionIdx: channels.setNewBindSessionIdx,\n newBindCustomPeer: channels.newBindCustomPeer,\n setNewBindCustomPeer: channels.setNewBindCustomPeer,\n refreshBindSessions: channels.refreshBindSessions,\n onRemoveBinding: (rule) => void channels.onRemoveBinding(rule),\n onAddBinding: channels.onAddBinding,\n cronLoading: cron.cronLoading,\n agentCronJobs: cron.agentCronJobs,\n onSetCronJobAgent: (job, key) => void cron.onSetCronJobAgent(job, key),\n };\n\n return {\n hasToken,\n a,\n chat,\n language,\n data,\n loading,\n displayError,\n navigate,\n routeAgentId,\n showPresetSetup,\n onPresetSetupComplete,\n onPresetSetupSkip,\n busy,\n listSearchQuery,\n openAddAgentModal,\n panel,\n setPanel,\n modalTitle,\n modalSubtitle,\n footerSaveDisabled,\n savedFlash,\n handleModalFooterSave,\n onAgentModalOpenChange,\n addAgentModalOpen,\n setAddAgentModalOpen,\n createWorkspaceSuggestedRef,\n createModalError,\n setCreateModalError,\n createDisplayName,\n setCreateDisplayName,\n createAgentId,\n setCreateAgentId,\n createDescription,\n setCreateDescription,\n createWorkspace,\n setCreateWorkspace,\n createModel,\n setCreateModel,\n onCreate,\n applyCreateWorkspaceSuggestion,\n deleteDialogOpen,\n setDeleteDialogOpen,\n deletePurge,\n deleteTarget,\n setDeleteTarget,\n deleteConfirmText,\n setDeleteConfirmText,\n performDelete,\n editorPanelProps,\n };\n}\n","import { AgentDeleteConfirmDialog } from './agent-delete-confirm-dialog';\nimport { agentsAppDetailPath } from './agents-app-path';\nimport { AgentsEditorModal } from './agents-editor-modal';\nimport { AgentsEditorPanelContent } from './agents-editor-panel-content';\nimport { AgentsListGrid } from './agents-list-grid';\nimport { AgentsSettingsHeader } from './agents-settings-header';\nimport { CreateAgentDialog } from './create-agent-dialog';\nimport { PRESET_AGENTS } from './preset-agents';\nimport { PresetAgentsSetup } from './preset-agents-setup';\nimport { useAgentsSettingsPanel } from './use-agents-settings-panel';\n\nexport function AgentsSettingsPanel() {\n const vm = useAgentsSettingsPanel();\n\n if (!vm.hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{vm.a.title}</h1>\n <p className=\"text-sm text-fg-muted\">{vm.a.needToken}</p>\n </div>\n );\n }\n\n if (vm.showPresetSetup && vm.data) {\n const existingIds = new Set(vm.data.agents.map((ag) => ag.id));\n // Only show the preset setup when there's at least one preset available;\n // otherwise fall through to the main UI (showPresetSetup resets on next data refresh).\n const hasAvailablePresets = PRESET_AGENTS.some((p) => !existingIds.has(p.id));\n if (hasAvailablePresets) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col px-4 py-8\">\n <PresetAgentsSetup\n existingAgentIds={existingIds}\n onComplete={vm.onPresetSetupComplete}\n onSkip={vm.onPresetSetupSkip}\n />\n </div>\n );\n }\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-8\">\n <AgentsSettingsHeader a={vm.a} />\n\n {vm.displayError ? (\n <div className=\"rounded-lg 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 {vm.displayError}\n </div>\n ) : null}\n\n {vm.loading ? (\n <p className=\"text-sm text-fg-muted\">{vm.a.loading}</p>\n ) : vm.data ? (\n <AgentsListGrid\n a={vm.a}\n agents={vm.data.agents}\n searchQuery={vm.listSearchQuery}\n onOpenAgent={(id) => vm.navigate(agentsAppDetailPath(id))}\n onChatWithAgent={(id) =>\n vm.navigate('/chat/new', { state: { agentId: id.trim().toLowerCase() } })\n }\n onNewAgent={vm.openAddAgentModal}\n busy={vm.busy}\n />\n ) : null}\n\n {vm.routeAgentId && vm.hasToken ? (\n <AgentsEditorModal\n open={Boolean(vm.routeAgentId)}\n onOpenChange={vm.onAgentModalOpenChange}\n a={vm.a}\n title={vm.modalTitle}\n subtitle={vm.modalSubtitle}\n panel={vm.panel}\n onPanelChange={vm.setPanel}\n onFooterSave={() => void vm.handleModalFooterSave()}\n footerSaveDisabled={vm.footerSaveDisabled}\n footerSavedFlash={vm.savedFlash}\n busy={vm.busy}\n >\n {vm.loading || !vm.data ? (\n <p className=\"text-sm text-fg-muted\">{vm.a.loading}</p>\n ) : (\n <AgentsEditorPanelContent {...vm.editorPanelProps} />\n )}\n </AgentsEditorModal>\n ) : null}\n\n <CreateAgentDialog\n open={vm.addAgentModalOpen}\n onOpenChange={(open) => {\n vm.setAddAgentModalOpen(open);\n if (!open) {\n vm.createWorkspaceSuggestedRef.current = '';\n vm.setCreateDisplayName('');\n vm.setCreateAgentId('');\n vm.setCreateDescription('');\n vm.setCreateWorkspace('');\n vm.setCreateModel('');\n vm.setCreateModalError(null);\n }\n }}\n a={vm.a}\n chat={vm.chat}\n busy={vm.busy}\n modalError={vm.createModalError}\n createDisplayName={vm.createDisplayName}\n setCreateDisplayName={vm.setCreateDisplayName}\n createAgentId={vm.createAgentId}\n setCreateAgentId={vm.setCreateAgentId}\n createDescription={vm.createDescription}\n setCreateDescription={vm.setCreateDescription}\n createWorkspace={vm.createWorkspace}\n setCreateWorkspace={vm.setCreateWorkspace}\n createModel={vm.createModel}\n setCreateModel={vm.setCreateModel}\n onCreate={vm.onCreate}\n onSuggestWorkspace={() => vm.applyCreateWorkspaceSuggestion()}\n />\n\n <AgentDeleteConfirmDialog\n open={vm.deleteDialogOpen}\n onOpenChange={(open) => {\n vm.setDeleteDialogOpen(open);\n if (!open) {\n vm.setDeleteTarget(null);\n vm.setDeleteConfirmText('');\n }\n }}\n busy={vm.busy}\n deletePurge={vm.deletePurge}\n deleteTarget={vm.deleteTarget}\n deleteConfirmText={vm.deleteConfirmText}\n onDeleteConfirmTextChange={vm.setDeleteConfirmText}\n onConfirm={() => {\n if (!vm.deleteTarget) return;\n void vm.performDelete(vm.deleteTarget, vm.deletePurge);\n }}\n onCancel={() => vm.setDeleteDialogOpen(false)}\n a={vm.a}\n />\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport function AgentDefaultsField({\n label,\n description,\n children,\n}: {\n label: string;\n description: string;\n children: ReactNode;\n}) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"text-sm font-medium text-fg\">{label}</div>\n {children}\n <p className=\"text-xs leading-relaxed text-fg-subtle\">{description}</p>\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/lib/cn';\n\nimport type { BrowserMessages } from './types';\nimport type { ModeStatusKind } from './backend-mode-card';\n\nexport type BackendMode = 'local' | 'cloakbrowser' | 'cdp' | 'cloud' | 'extension';\n\nexport interface BackendModeOption {\n value: BackendMode;\n icon: LucideIcon;\n name: string;\n tagline: string;\n /** Optional probed status to display as a small badge in the corner. */\n status?: ModeStatusKind;\n statusLabel?: string;\n}\n\n/**\n * Card grid for picking a browser backend. Selected card gets a coloured ring\n * + checkmark so users can see at a glance which backend is active.\n */\nexport function BackendModePicker({\n value,\n onChange,\n options,\n m,\n}: {\n value: BackendMode;\n onChange: (next: BackendMode) => void;\n options: BackendModeOption[];\n m: BrowserMessages;\n}) {\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-medium text-fg\">{m.browserPickerTitle}</div>\n <p className=\"text-xs leading-relaxed text-fg-muted\">{m.browserPickerSubtitle}</p>\n </div>\n <div\n role=\"radiogroup\"\n aria-label={m.browserPickerTitle}\n className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-5\"\n >\n {options.map((opt) => {\n const selected = opt.value === value;\n const Icon = opt.icon;\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n onClick={() => onChange(opt.value)}\n className={cn(\n 'group flex flex-col gap-2 rounded-xl border bg-surface-panel p-3 text-left transition-[border-color,background-color,box-shadow]',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base',\n selected\n ? 'border-accent bg-accent/5 ring-1 ring-accent/40 shadow-sm'\n : 'border-edge hover:border-edge-strong hover:bg-surface-hover',\n )}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <div\n className={cn(\n 'flex size-9 shrink-0 items-center justify-center rounded-lg transition-colors',\n selected ? 'bg-accent/15 text-accent' : 'bg-surface-hover text-fg-muted',\n )}\n >\n <Icon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-1.5\">\n {opt.statusLabel ? (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium',\n opt.status === 'ready'\n ? 'border-green-500/30 bg-green-500/10 text-green-700 dark:text-green-300'\n : opt.status === 'not_installed'\n ? 'border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300'\n : opt.status === 'error'\n ? 'border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-300'\n : 'border-edge bg-surface-hover text-fg-subtle',\n )}\n >\n <span\n className={cn(\n 'inline-block size-1.5 rounded-full',\n opt.status === 'ready'\n ? 'bg-green-500'\n : opt.status === 'not_installed'\n ? 'bg-amber-500'\n : opt.status === 'error'\n ? 'bg-red-500'\n : 'bg-fg-subtle',\n )}\n />\n <span>{opt.statusLabel}</span>\n </span>\n ) : null}\n {selected ? (\n <span\n className=\"inline-flex items-center gap-1 rounded-full bg-accent px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white\"\n aria-hidden\n >\n <Check className=\"size-3\" strokeWidth={3} />\n {m.browserSelectedBadge}\n </span>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-col gap-0.5\">\n <div className=\"text-sm font-semibold text-fg\">{opt.name}</div>\n <p className=\"text-[11px] leading-snug text-fg-muted\">{opt.tagline}</p>\n </div>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { AlertTriangle, CheckCircle2, CircleHelp, LoaderCircle, XCircle } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\nimport type { BrowserMessages } from './types';\n\nexport type ModeStatusKind = 'ready' | 'not_installed' | 'checking' | 'unknown' | 'error';\n\nexport function BackendModeCard({\n icon: Icon,\n title,\n description,\n status,\n statusDetail,\n primaryAction,\n children,\n advanced,\n m,\n}: {\n icon: LucideIcon;\n title: string;\n description: string;\n status?: ModeStatusKind;\n statusDetail?: string;\n primaryAction?: ReactNode;\n children?: ReactNode;\n /** Collapsible \"Advanced\" section. */\n advanced?: ReactNode;\n m: BrowserMessages;\n}) {\n const [showAdvanced, setShowAdvanced] = useState(false);\n return (\n <div className=\"flex flex-col gap-4 rounded-xl border border-edge bg-surface-panel p-4\">\n <div className=\"flex items-start gap-3\">\n <div className=\"flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted\">\n <Icon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"text-sm font-medium text-fg\">{title}</div>\n {status ? <StatusBadge kind={status} detail={statusDetail} m={m} /> : null}\n </div>\n <p className=\"text-xs leading-relaxed text-fg-muted\">{description}</p>\n </div>\n {primaryAction ? <div className=\"shrink-0\">{primaryAction}</div> : null}\n </div>\n\n {children ? <div className=\"flex flex-col gap-4\">{children}</div> : null}\n\n {advanced ? (\n <div className=\"flex flex-col gap-3\">\n <button\n type=\"button\"\n className=\"self-start text-xs font-medium text-fg-muted hover:text-fg\"\n onClick={() => setShowAdvanced((v) => !v)}\n >\n {showAdvanced ? m.browserAdvancedHide : m.browserAdvancedShow}\n </button>\n {showAdvanced ? (\n <div className=\"flex flex-col gap-4 rounded-lg border border-edge bg-surface-base p-3\">\n {advanced}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction StatusBadge({\n kind,\n detail,\n m,\n}: {\n kind: ModeStatusKind;\n detail?: string;\n m: BrowserMessages;\n}) {\n const config: Record<ModeStatusKind, { icon: LucideIcon; color: string; label: string }> = {\n ready: { icon: CheckCircle2, color: 'text-green-600 dark:text-green-400', label: m.browserStatusReady },\n not_installed: { icon: AlertTriangle, color: 'text-amber-600 dark:text-amber-400', label: m.browserStatusNotInstalled },\n checking: { icon: LoaderCircle, color: 'text-fg-muted', label: m.browserStatusChecking },\n unknown: { icon: CircleHelp, color: 'text-fg-muted', label: m.browserStatusUnknown },\n error: { icon: XCircle, color: 'text-red-600 dark:text-red-400', label: m.browserStatusError },\n };\n const { icon: Icon, color, label } = config[kind];\n return (\n <span className={cn('inline-flex items-center gap-1 text-xs font-medium', color)}>\n <Icon className={cn('size-3.5', kind === 'checking' && 'animate-spin')} />\n <span>{label}</span>\n {detail ? <span className=\"font-normal text-fg-subtle\">· {detail}</span> : null}\n </span>\n );\n}\n\nexport function ActionResultBox({\n kind,\n message,\n}: {\n kind: 'success' | 'error';\n message: string;\n}) {\n return (\n <div\n className={cn(\n 'rounded-lg border px-3 py-2 text-xs leading-relaxed',\n kind === 'success'\n ? 'border-green-500/30 bg-green-500/10 text-green-700 dark:text-green-300'\n : 'border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-300',\n )}\n >\n {message}\n </div>\n );\n}\n","import { LoaderCircle, Play, Plug, Square, Webhook } from 'lucide-react';\nimport { useCallback, useEffect, useReducer } from 'react';\n\nimport { uiPatchReducer } from '@/lib/settings-form-draft';\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages, LaunchedCdpInstance } from './types';\n\ntype ActionStatus = 'idle' | 'pending' | 'ok' | 'error';\n\ntype CdpCardUi = {\n instances: LaunchedCdpInstance[];\n launchStatus: ActionStatus;\n launchMessage: string | null;\n testStatus: ActionStatus;\n testMessage: string | null;\n executablePath: string;\n};\n\nconst initialCdpCardUi: CdpCardUi = {\n instances: [],\n launchStatus: 'idle',\n launchMessage: null,\n testStatus: 'idle',\n testMessage: null,\n executablePath: '',\n};\n\nexport function CdpCard({\n m,\n cdpUrl,\n onCdpUrlChange,\n launch,\n stop,\n listInstances,\n ping,\n}: {\n m: BrowserMessages;\n cdpUrl: string;\n onCdpUrlChange: (next: string) => void;\n launch: (executablePath?: string) => Promise<LaunchedCdpInstance>;\n stop: (port: number) => Promise<void>;\n listInstances: () => Promise<LaunchedCdpInstance[]>;\n ping: (url: string) => Promise<{ reachable: boolean; browser?: string | null; error?: string }>;\n}) {\n const [ui, dispatch] = useReducer(uiPatchReducer<CdpCardUi>, initialCdpCardUi);\n const { instances, launchStatus, launchMessage, testStatus, testMessage, executablePath } = ui;\n\n const refreshInstances = useCallback(async () => {\n try {\n const list = await listInstances();\n dispatch({ type: 'patch', patch: { instances: list } });\n } catch {\n // silent — not blocking\n }\n }, [listInstances]);\n\n useEffect(() => {\n void refreshInstances();\n const id = setInterval(() => void refreshInstances(), 8000);\n return () => clearInterval(id);\n }, [refreshInstances]);\n\n const onLaunch = useCallback(async () => {\n if (launchStatus === 'pending') return;\n dispatch({ type: 'patch', patch: { launchStatus: 'pending', launchMessage: null } });\n try {\n const result = await launch(executablePath.trim() || undefined);\n dispatch({\n type: 'patch',\n patch: {\n launchStatus: 'ok',\n launchMessage: m.browserCdpLaunchedAtPort.replace('{{port}}', String(result.port)),\n },\n });\n onCdpUrlChange(result.wsEndpoint);\n await refreshInstances();\n } catch (e) {\n dispatch({\n type: 'patch',\n patch: {\n launchStatus: 'error',\n launchMessage: e instanceof Error ? e.message : String(e),\n },\n });\n }\n }, [executablePath, launch, launchStatus, m.browserCdpLaunchedAtPort, onCdpUrlChange, refreshInstances]);\n\n const onStop = useCallback(\n async (port: number) => {\n await stop(port);\n await refreshInstances();\n },\n [refreshInstances, stop],\n );\n\n const onTest = useCallback(async () => {\n if (!cdpUrl.trim()) return;\n dispatch({ type: 'patch', patch: { testStatus: 'pending', testMessage: null } });\n try {\n const result = await ping(cdpUrl.trim());\n if (result.reachable) {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'ok',\n testMessage: m.browserCdpReachable.replace('{{browser}}', result.browser ?? '—'),\n },\n });\n } else {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'error',\n testMessage: m.browserCdpUnreachable.replace('{{error}}', result.error ?? '—'),\n },\n });\n }\n } catch (e) {\n dispatch({\n type: 'patch',\n patch: {\n testStatus: 'error',\n testMessage: m.browserCdpUnreachable.replace(\n '{{error}}',\n e instanceof Error ? e.message : String(e),\n ),\n },\n });\n }\n }, [cdpUrl, m.browserCdpReachable, m.browserCdpUnreachable, ping]);\n\n return (\n <div className=\"flex flex-col gap-4\">\n <BackendModeCard\n icon={Play}\n title={m.browserCdpLaunchLocal}\n description={m.browserCdpLaunchLocalDesc}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={launchStatus === 'pending'}\n onClick={() => void onLaunch()}\n >\n {launchStatus === 'pending' ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : (\n <Play className=\"size-3.5\" />\n )}\n {launchStatus === 'pending' ? m.browserCdpLaunching : m.browserCdpLaunchLocal}\n </button>\n }\n advanced={\n <AgentDefaultsField label={m.browserCdpChromePath} description={m.browserCdpChromePathDesc}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={executablePath}\n placeholder=\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\"\n onChange={(e) => dispatch({ type: 'patch', patch: { executablePath: e.target.value } })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n }\n >\n {launchMessage ? (\n <ActionResultBox kind={launchStatus === 'error' ? 'error' : 'success'} message={launchMessage} />\n ) : null}\n\n {instances.length > 0 ? (\n <div className=\"flex flex-col gap-2 rounded-lg border border-edge bg-surface-base p-3 text-xs\">\n {instances.map((it) => (\n <div key={it.port} className=\"flex items-center justify-between gap-3\">\n <div className=\"flex min-w-0 flex-col\">\n <span className=\"font-mono text-fg\">port {it.port} · pid {it.pid}</span>\n <span className=\"truncate text-fg-subtle\">{it.wsEndpoint}</span>\n </div>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-1 text-xs font-medium text-fg hover:bg-surface-raised\"\n onClick={() => void onStop(it.port)}\n >\n <Square className=\"size-3\" />\n {m.browserCdpStopLocal}\n </button>\n </div>\n ))}\n </div>\n ) : null}\n </BackendModeCard>\n\n <BackendModeCard\n icon={Webhook}\n title={m.label.browserCdpUrl}\n description={m.desc.browserCdpUrl}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={!cdpUrl.trim() || testStatus === 'pending'}\n onClick={() => void onTest()}\n >\n {testStatus === 'pending' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Plug className=\"size-3.5\" />}\n {testStatus === 'pending' ? m.browserCdpTesting : m.browserCdpTestConnection}\n </button>\n }\n >\n <input\n type=\"text\"\n className={inputClassName()}\n value={cdpUrl}\n placeholder=\"ws://127.0.0.1:9222\"\n onChange={(e) => onCdpUrlChange(e.target.value)}\n autoComplete=\"off\"\n />\n <p className=\"text-[11px] text-fg-subtle\">{m.browserCdpLoopbackOnly}</p>\n {testMessage ? (\n <ActionResultBox kind={testStatus === 'error' ? 'error' : 'success'} message={testMessage} />\n ) : null}\n </BackendModeCard>\n </div>\n );\n}\n","import type { BrowserInstallStreamState } from './use-browser-install-stream';\nimport type { BrowserMessages } from './types';\n\nfunction phaseLabel(m: BrowserMessages, progress: BrowserInstallStreamState): string {\n const phase = progress.phase;\n if (!phase) return m.browserInstallPhaseStarting;\n\n if (phase === 'downloading') {\n if (progress.percent != null) {\n return m.browserInstallPhaseDownloadingPercent.replace('{{percent}}', String(progress.percent));\n }\n return m.browserInstallPhaseDownloading;\n }\n\n switch (phase) {\n case 'starting':\n return m.browserInstallPhaseStarting;\n case 'verifying':\n return m.browserInstallPhaseVerifying;\n case 'extracting':\n return m.browserInstallPhaseExtracting;\n case 'running':\n return progress.message ?? m.browserInstallPhaseRunning;\n case 'ready':\n return m.browserInstallPhaseReady;\n default:\n return progress.message ?? m.browserInstallPhaseRunning;\n }\n}\n\nexport function BrowserInstallProgressPanel({\n m,\n progress,\n showLogs = false,\n onCancel,\n cancelling = false,\n}: {\n m: BrowserMessages;\n progress: BrowserInstallStreamState;\n showLogs?: boolean;\n onCancel?: () => void;\n cancelling?: boolean;\n}) {\n if (!progress.phase) return null;\n\n const label = phaseLabel(m, progress);\n const percent =\n progress.percent != null\n ? Math.min(100, Math.max(0, progress.percent))\n : progress.phase === 'extracting' || progress.phase === 'verifying'\n ? null\n : progress.phase === 'running' || progress.phase === 'starting'\n ? null\n : null;\n\n return (\n <div className=\"space-y-2 rounded-lg border border-edge bg-surface-base px-3 py-2.5\">\n <div className=\"flex items-center justify-between gap-2 text-xs text-fg-muted\">\n <span className=\"text-fg\">{label}</span>\n <div className=\"flex items-center gap-2\">\n {percent != null ? <span className=\"tabular-nums\">{percent}%</span> : null}\n {onCancel ? (\n <button\n type=\"button\"\n className=\"rounded-md border border-edge px-2 py-0.5 text-[11px] font-medium text-fg-muted hover:bg-surface-raised hover:text-fg disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={cancelling}\n onClick={() => void onCancel()}\n >\n {cancelling ? m.browserInstallCancelling : m.browserInstallCancel}\n </button>\n ) : null}\n </div>\n </div>\n\n <div className=\"h-1.5 overflow-hidden rounded-full bg-surface-raised\">\n {percent != null ? (\n <div\n className=\"h-full rounded-full bg-accent transition-[width] duration-300 ease-out\"\n style={{ width: `${percent}%` }}\n />\n ) : (\n <div className=\"h-full w-1/3 animate-pulse rounded-full bg-accent/70\" />\n )}\n </div>\n\n {showLogs && progress.lines.length > 0 ? (\n <div className=\"max-h-28 overflow-y-auto rounded-md border border-edge bg-surface-panel px-2 py-1.5 font-mono text-[10px] leading-relaxed text-fg-muted\">\n {progress.lines.map((line, i) => (\n <div key={`${i}-${line.slice(0, 24)}`} className=\"truncate\">\n {line}\n </div>\n ))}\n </div>\n ) : null}\n\n {!showLogs && progress.phase === 'downloading' && progress.message && progress.percent == null ? (\n <p className=\"text-[11px] text-fg-subtle\">{progress.message}</p>\n ) : null}\n </div>\n );\n}\n","import { CheckCircle2, Download, LoaderCircle, RefreshCw, ShieldCheck } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { ConfirmDialog } from '@/components/ui/confirm-dialog';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName, selectClassName } from '../../defaults-field-styles';\n\nimport { BrowserInstallProgressPanel } from './browser-install-progress';\nimport { ActionResultBox, BackendModeCard, type ModeStatusKind } from './backend-mode-card';\nimport type { BrowserMessages, CloakDoctor, DoctorState } from './types';\nimport type { BrowserInstallStream } from './use-browser-install-stream';\n\ntype InstallStatus = 'idle' | 'installing' | 'installed' | 'failed';\n\nexport interface CloakCardForm {\n cacheDir: string;\n binaryPath: string;\n keepOpen: boolean;\n temporaryProfile: boolean;\n humanize: boolean;\n humanPreset: 'default' | 'careful';\n}\n\nexport function CloakCard({\n m,\n doctor,\n refetch,\n applyDoctor,\n installStream,\n form,\n onChange,\n}: {\n m: BrowserMessages;\n doctor: DoctorState<CloakDoctor>;\n refetch: (overrides?: { cacheDir?: string; binaryPath?: string }) => Promise<CloakDoctor | null>;\n applyDoctor?: (data: CloakDoctor) => void;\n installStream: BrowserInstallStream;\n form: CloakCardForm;\n onChange: (patch: Partial<CloakCardForm>) => void;\n}) {\n const [status, setStatus] = useState<InstallStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const { progress, running, cancelling, run: runInstall, reset: resetInstall, cancel } = installStream;\n\n const data = doctor.kind === 'ok' ? doctor.data : null;\n const installed = data?.installed === true;\n const installing = status === 'installing' || running;\n\n const installNow = useCallback(async () => {\n setConfirmOpen(false);\n setStatus('installing');\n setMessage(null);\n resetInstall();\n const result = await runInstall<CloakDoctor>({\n body: {\n cacheDir: form.cacheDir.trim() || undefined,\n binaryPath: form.binaryPath.trim() || undefined,\n },\n fallbackError: m.browserCloakInstallFailed,\n });\n if (!result.ok) {\n if (result.error === 'busy') {\n setStatus('installing');\n return;\n }\n if (result.error === 'cancelled') {\n setStatus('idle');\n setMessage(null);\n resetInstall();\n return;\n }\n setStatus('failed');\n setMessage(result.errorMessage ?? m.browserCloakInstallFailed);\n return;\n }\n if (result.payload) {\n applyDoctor?.(result.payload);\n }\n setStatus('installed');\n setMessage(\n result.payload?.binaryPath ? `${m.browserCloakInstalled}: ${result.payload.binaryPath}` : m.browserCloakInstalled,\n );\n await refetch({\n cacheDir: form.cacheDir,\n binaryPath: form.binaryPath,\n });\n }, [\n applyDoctor,\n form.binaryPath,\n form.cacheDir,\n m.browserCloakInstallFailed,\n m.browserCloakInstalled,\n refetch,\n resetInstall,\n runInstall,\n ]);\n\n const statusKind: ModeStatusKind =\n doctor.kind === 'loading'\n ? 'checking'\n : doctor.kind === 'error'\n ? 'error'\n : installed\n ? 'ready'\n : 'not_installed';\n\n const statusDetail = installed && data?.version ? `v${data.version} (${data.platform})` : undefined;\n\n return (\n <>\n <BackendModeCard\n icon={ShieldCheck}\n title={m.browserCloakGuideTitle}\n description={m.browserCloakGuideDesc}\n status={statusKind}\n statusDetail={statusDetail}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={installing}\n onClick={() => setConfirmOpen(true)}\n >\n {installing ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : installed ? (\n <RefreshCw className=\"size-3.5\" />\n ) : status === 'installed' ? (\n <CheckCircle2 className=\"size-3.5 text-green-500\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {installing\n ? m.browserCloakInstalling\n : installed\n ? m.browserReinstall\n : m.browserCloakDownload}\n </button>\n }\n >\n {running ? (\n <BrowserInstallProgressPanel\n m={m}\n progress={progress}\n cancelling={cancelling}\n onCancel={() => void cancel()}\n />\n ) : null}\n\n {message ? (\n <ActionResultBox kind={status === 'failed' ? 'error' : 'success'} message={message} />\n ) : null}\n\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloakKeepOpen} description={m.desc.browserCloakKeepOpen}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.keepOpen}\n onChange={(e) => onChange({ keepOpen: e.target.checked })}\n />\n <span>{m.browserCloakKeepOpenOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField\n label={m.label.browserCloakTemporaryProfile}\n description={m.desc.browserCloakTemporaryProfile}\n >\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.temporaryProfile}\n onChange={(e) => onChange({ temporaryProfile: e.target.checked })}\n />\n <span>{m.browserCloakTemporaryProfileOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserHumanize} description={m.desc.browserHumanize}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.humanize}\n onChange={(e) => onChange({ humanize: e.target.checked })}\n />\n <span>{m.browserHumanizeOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserHumanPreset} description={m.desc.browserHumanPreset}>\n <select\n className={selectClassName()}\n value={form.humanPreset}\n onChange={(e) => onChange({ humanPreset: e.target.value as 'default' | 'careful' })}\n >\n <option value=\"careful\">{m.browserHumanPresetCareful}</option>\n <option value=\"default\">{m.browserHumanPresetDefault}</option>\n </select>\n </AgentDefaultsField>\n </div>\n </BackendModeCard>\n\n {/* Advanced fields outside the card to keep its primary surface tidy */}\n <div className=\"grid gap-5 rounded-xl border border-edge bg-surface-base p-4 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloakCacheDir} description={m.desc.browserCloakCacheDir}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.cacheDir}\n placeholder=\"~/.xopc/bin/cloakbrowser\"\n onChange={(e) => onChange({ cacheDir: e.target.value })}\n autoComplete=\"off\"\n />\n <p className=\"text-[11px] text-fg-subtle\">{m.browserCacheDirHomeOnly}</p>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserCloakBinaryPath} description={m.desc.browserCloakBinaryPath}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.binaryPath}\n placeholder=\"~/.xopc/bin/cloakbrowser/chromium-v.../Chromium.app/Contents/MacOS/Chromium\"\n onChange={(e) => onChange({ binaryPath: e.target.value })}\n autoComplete=\"off\"\n />\n {form.binaryPath.trim() ? (\n <p className=\"text-[11px] text-amber-600 dark:text-amber-400\">{m.browserBinaryPathWarning}</p>\n ) : null}\n </AgentDefaultsField>\n </div>\n\n <ConfirmDialog\n open={confirmOpen}\n title={m.browserConfirmDownloadTitle}\n description={buildConfirmBody(m, data)}\n confirmLabel={m.browserConfirmDownloadConfirm}\n cancelLabel={m.browserConfirmDownloadCancel}\n onConfirm={() => void installNow()}\n onCancel={() => setConfirmOpen(false)}\n />\n </>\n );\n}\n\nfunction buildConfirmBody(m: BrowserMessages, data: CloakDoctor | null): string {\n if (!data) return m.browserConfirmDownloadBody;\n const parts = [\n m.browserConfirmDownloadBody\n .replace('{{version}}', data.version ?? '—')\n .replace('{{platform}}', data.platform)\n .replace('{{url}}', data.downloadUrl || '—'),\n ];\n if (data.expectedSha256) {\n parts.push(`SHA-256: ${data.expectedSha256.slice(0, 16)}…`);\n } else {\n parts.push(m.browserCloakSha256Skipped);\n }\n return parts.join('\\n');\n}\n","import { Cloud, LoaderCircle, Plug } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName, selectClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages } from './types';\n\ntype ActionStatus = 'idle' | 'pending' | 'ok' | 'error';\n\nexport interface CloudCardForm {\n provider: 'local' | 'browserbase' | 'browser-use';\n apiKey: string;\n projectId: string;\n region: string;\n}\n\nexport function CloudCard({\n m,\n form,\n onChange,\n testCloud,\n}: {\n m: BrowserMessages;\n form: CloudCardForm;\n onChange: (patch: Partial<CloudCardForm>) => void;\n testCloud: (provider: 'browserbase' | 'browser-use', apiKey: string) => Promise<{ reachable: boolean; error?: string }>;\n}) {\n const [status, setStatus] = useState<ActionStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n\n const provider = form.provider === 'local' ? 'browserbase' : form.provider;\n\n const onTest = useCallback(async () => {\n setStatus('pending');\n setMessage(null);\n try {\n const result = await testCloud(provider, form.apiKey);\n if (result.reachable) {\n setStatus('ok');\n setMessage(m.browserCloudTestOk);\n } else {\n setStatus('error');\n setMessage(m.browserCloudTestFailed.replace('{{error}}', result.error ?? '—'));\n }\n } catch (e) {\n setStatus('error');\n setMessage(m.browserCloudTestFailed.replace('{{error}}', e instanceof Error ? e.message : String(e)));\n }\n }, [form.apiKey, m.browserCloudTestFailed, m.browserCloudTestOk, provider, testCloud]);\n\n return (\n <BackendModeCard\n icon={Cloud}\n title={m.label.browserCloudProvider}\n description={m.desc.browserCloudProvider}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={status === 'pending'}\n onClick={() => void onTest()}\n >\n {status === 'pending' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Plug className=\"size-3.5\" />}\n {m.browserCloudTestConnection}\n </button>\n }\n >\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserCloudProvider} description={m.desc.browserCloudProvider}>\n <select\n className={selectClassName()}\n value={provider}\n onChange={(e) => onChange({ provider: e.target.value as CloudCardForm['provider'] })}\n >\n <option value=\"browserbase\">{m.browserCloudProviderBrowserbase}</option>\n <option value=\"browser-use\">{m.browserCloudProviderBrowserUse}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserCloudApiKey} description={m.desc.browserCloudApiKey}>\n <input\n type=\"password\"\n className={inputClassName()}\n value={form.apiKey === '***' ? '' : form.apiKey}\n placeholder={\n form.apiKey === '***'\n ? '••••••••'\n : provider === 'browserbase'\n ? 'BROWSERBASE_API_KEY'\n : 'BROWSER_USE_API_KEY'\n }\n onChange={(e) => onChange({ apiKey: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n {provider === 'browserbase' ? (\n <AgentDefaultsField label={m.label.browserCloudProjectId} description={m.desc.browserCloudProjectId}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.projectId}\n placeholder=\"BROWSERBASE_PROJECT_ID\"\n onChange={(e) => onChange({ projectId: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n ) : null}\n <AgentDefaultsField label={m.label.browserCloudRegion} description={m.desc.browserCloudRegion}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.region}\n placeholder=\"us-west-2\"\n onChange={(e) => onChange({ region: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n {message ? (\n <ActionResultBox kind={status === 'error' ? 'error' : 'success'} message={message} />\n ) : null}\n </BackendModeCard>\n );\n}\n","import {\n Download,\n ExternalLink,\n FolderOpen,\n LoaderCircle,\n Play,\n Plug,\n PlugZap,\n Puzzle,\n Square,\n Unplug,\n} from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { copyTextToClipboard } from '@/lib/copy-to-clipboard';\n\nimport { AgentDefaultsField } from '../../agent-defaults-field';\nimport { inputClassName } from '../../defaults-field-styles';\n\nimport { ActionResultBox, BackendModeCard } from './backend-mode-card';\nimport type { BrowserMessages, DoctorState, ExtensionArtifacts, ExtensionProbe } from './types';\n\nconst DEFAULT_PORT = 19820;\n\nexport interface ExtensionCardForm {\n port: number | undefined;\n host: string;\n}\n\nexport function ExtensionCard({\n m,\n probe,\n artifacts,\n onChange,\n startBridge,\n stopBridge,\n installArtifacts,\n refetchArtifacts,\n openExtensionChrome,\n revealExtensionFolder,\n form,\n}: {\n m: BrowserMessages;\n probe: DoctorState<ExtensionProbe>;\n artifacts: DoctorState<ExtensionArtifacts>;\n form: ExtensionCardForm;\n onChange: (patch: Partial<ExtensionCardForm>) => void;\n startBridge: (opts?: { host?: string; port?: number }) => Promise<void>;\n stopBridge: () => Promise<void>;\n installArtifacts: (opts?: { force?: boolean }) => Promise<ExtensionArtifacts | null>;\n refetchArtifacts: () => Promise<ExtensionArtifacts | null>;\n openExtensionChrome: () => Promise<void>;\n revealExtensionFolder: () => Promise<void>;\n}) {\n const [busy, setBusy] = useState<'start' | 'stop' | 'install' | 'open' | 'folder' | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [installMessage, setInstallMessage] = useState<string | null>(null);\n\n const port = form.port ?? DEFAULT_PORT;\n const host = form.host || '127.0.0.1';\n const wsUrl = `ws://${host}:${port}/browser-ext`;\n\n const running = probe.kind === 'ok' && probe.data.running;\n const connected = probe.kind === 'ok' && probe.data.connected;\n\n const artifactData = artifacts.kind === 'ok' ? artifacts.data : probe.kind === 'ok' ? probe.data.artifacts : undefined;\n const installed = artifactData?.installed === true;\n const extensionDir = artifactData?.extensionDir;\n const needsChromeReload = artifactData?.needsChromeReload === true;\n\n const badge =\n probe.kind !== 'ok'\n ? { icon: Unplug, color: 'text-fg-muted', label: '…' }\n : connected\n ? { icon: PlugZap, color: 'text-green-500', label: m.browserExtensionConnected }\n : running\n ? { icon: Plug, color: 'text-amber-500', label: m.browserExtensionWaiting }\n : { icon: Unplug, color: 'text-fg-muted', label: m.browserExtensionServerOff };\n const BadgeIcon = badge.icon;\n\n const onStart = useCallback(async () => {\n if (busy) return;\n setBusy('start');\n setError(null);\n try {\n await startBridge({ host, port });\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, host, port, startBridge]);\n\n const onStop = useCallback(async () => {\n if (busy) return;\n setBusy('stop');\n setError(null);\n try {\n await stopBridge();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, stopBridge]);\n\n const onInstall = useCallback(async () => {\n if (busy) return;\n setBusy('install');\n setError(null);\n setInstallMessage(null);\n try {\n const result = await installArtifacts({ force: installed });\n if (result?.extensionDir) {\n setInstallMessage(`${m.browserExtensionInstalled}: ${result.extensionDir}`);\n } else {\n setInstallMessage(m.browserExtensionInstalled);\n }\n await refetchArtifacts();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, installArtifacts, installed, m.browserExtensionInstalled, refetchArtifacts]);\n\n const openChromeExtensions = useCallback(async () => {\n if (busy) return;\n setBusy('open');\n setError(null);\n try {\n await openExtensionChrome();\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, openExtensionChrome]);\n\n const onRevealFolder = useCallback(async () => {\n if (!extensionDir || busy) return;\n setBusy('folder');\n setError(null);\n setInstallMessage(null);\n try {\n const copied = await copyTextToClipboard(extensionDir);\n await revealExtensionFolder();\n setInstallMessage(\n copied ? m.browserExtensionPathCopied : m.browserExtensionFolderOpened,\n );\n } catch (e) {\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setBusy(null);\n }\n }, [busy, extensionDir, m.browserExtensionFolderOpened, m.browserExtensionPathCopied, revealExtensionFolder]);\n\n return (\n <BackendModeCard\n icon={Puzzle}\n title={m.browserBackendExtension}\n description={m.browserExtensionDownloadHint}\n m={m}\n primaryAction={\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onInstall()}\n >\n {busy === 'install' ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {busy === 'install' ? m.browserExtensionInstalling : m.browserExtensionInstall}\n </button>\n {running ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onStop()}\n >\n {busy === 'stop' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Square className=\"size-3.5\" />}\n {m.browserExtensionStopBridge}\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onStart()}\n >\n {busy === 'start' ? <LoaderCircle className=\"size-3.5 animate-spin\" /> : <Play className=\"size-3.5\" />}\n {busy === 'start' ? m.browserExtensionStarting : m.browserExtensionStartBridge}\n </button>\n )}\n </div>\n }\n advanced={\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={m.label.browserExtensionPort} description={m.desc.browserExtensionPort}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1024}\n max={65535}\n value={form.port ?? ''}\n placeholder={String(DEFAULT_PORT)}\n onChange={(e) => {\n const v = e.target.value;\n onChange({ port: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={m.label.browserExtensionHost} description={m.desc.browserExtensionHost}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.host}\n placeholder=\"127.0.0.1\"\n onChange={(e) => onChange({ host: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n }\n >\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-center justify-between gap-3 rounded-lg border border-edge bg-surface-base px-3 py-2\">\n <span className=\"font-mono text-xs text-fg-muted\">{wsUrl}</span>\n <span className={`inline-flex items-center gap-1.5 text-xs ${badge.color}`}>\n <BadgeIcon className=\"size-3.5\" />\n <span>{badge.label}</span>\n </span>\n </div>\n\n <div className=\"rounded-lg border border-edge bg-surface-base px-3 py-3\">\n <p className=\"text-xs font-medium text-fg\">{m.browserExtensionInstallGuideTitle}</p>\n <ol className=\"mt-2.5 list-decimal space-y-2.5 pl-4 text-[11px] leading-relaxed text-fg-muted\">\n <li className=\"text-fg\">{m.browserExtensionInstallStep1}</li>\n <li>\n <span className=\"text-fg\">{m.browserExtensionInstallStep2}</span>\n {extensionDir ? (\n <div className=\"mt-2 rounded-md border border-edge bg-surface-raised px-2.5 py-2\">\n <p className=\"text-[10px] font-medium uppercase tracking-wide text-fg-subtle\">\n {m.browserExtensionInstallStep2FolderLabel}\n </p>\n <p className=\"mt-1 break-all font-mono text-[11px] text-fg\">{extensionDir}</p>\n <div className=\"mt-2 flex flex-wrap gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void openChromeExtensions()}\n >\n <ExternalLink className=\"size-3\" />\n {m.browserExtensionOpenChrome}\n </button>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60\"\n disabled={busy !== null}\n onClick={() => void onRevealFolder()}\n title={extensionDir}\n >\n {busy === 'folder' ? (\n <LoaderCircle className=\"size-3 animate-spin\" />\n ) : (\n <FolderOpen className=\"size-3\" />\n )}\n {m.browserExtensionRevealFolder}\n </button>\n </div>\n </div>\n ) : null}\n </li>\n <li className=\"text-fg\">{m.browserExtensionInstallStep3}</li>\n </ol>\n </div>\n\n {needsChromeReload ? (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-800 dark:text-amber-200\">\n {m.browserExtensionNeedsChromeReload}\n </div>\n ) : null}\n {installMessage ? <ActionResultBox kind=\"success\" message={installMessage} /> : null}\n {error ? <ActionResultBox kind=\"error\" message={error} /> : null}\n </div>\n </BackendModeCard>\n );\n}\n","import { CheckCircle2, Download, LoaderCircle, MonitorPlay, RefreshCw } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { BrowserInstallProgressPanel } from './browser-install-progress';\nimport { ActionResultBox, BackendModeCard, type ModeStatusKind } from './backend-mode-card';\nimport type { BrowserMessages, DoctorState, PlaywrightDoctor } from './types';\nimport type { BrowserInstallStream } from './use-browser-install-stream';\n\ntype InstallStatus = 'idle' | 'installing' | 'installed' | 'failed';\n\nexport function LocalCard({\n m,\n doctor,\n refetch,\n applyDoctor,\n installStream,\n}: {\n m: BrowserMessages;\n doctor: DoctorState<PlaywrightDoctor>;\n refetch: () => Promise<void>;\n applyDoctor?: (data: PlaywrightDoctor) => void;\n installStream: BrowserInstallStream;\n}) {\n const [status, setStatus] = useState<InstallStatus>('idle');\n const [message, setMessage] = useState<string | null>(null);\n const { progress, running, cancelling, run: runInstall, reset: resetInstall, cancel } = installStream;\n\n const install = useCallback(async () => {\n setStatus('installing');\n setMessage(null);\n resetInstall();\n const result = await runInstall<PlaywrightDoctor>({\n fallbackError: m.browserPlaywrightInstallFailed,\n });\n if (!result.ok) {\n if (result.error === 'busy') {\n setStatus('installing');\n return;\n }\n if (result.error === 'cancelled') {\n setStatus('idle');\n setMessage(null);\n resetInstall();\n return;\n }\n setStatus('failed');\n setMessage(result.errorMessage ?? m.browserPlaywrightInstallFailed);\n return;\n }\n if (result.payload) {\n applyDoctor?.(result.payload);\n }\n setStatus('installed');\n setMessage(\n result.payload?.executablePath\n ? `${m.browserPlaywrightInstalled}: ${result.payload.executablePath}`\n : m.browserPlaywrightInstalled,\n );\n await refetch();\n }, [\n applyDoctor,\n m.browserPlaywrightInstallFailed,\n m.browserPlaywrightInstalled,\n refetch,\n resetInstall,\n runInstall,\n ]);\n\n const statusKind: ModeStatusKind =\n doctor.kind === 'loading'\n ? 'checking'\n : doctor.kind === 'error'\n ? 'error'\n : doctor.kind === 'ok'\n ? doctor.data.installed\n ? 'ready'\n : 'not_installed'\n : 'unknown';\n\n const statusDetail =\n doctor.kind === 'ok' && doctor.data.installed && doctor.data.executablePath\n ? doctor.data.executablePath\n : undefined;\n\n const installed = doctor.kind === 'ok' && doctor.data.installed;\n const installing = status === 'installing' || running;\n\n return (\n <BackendModeCard\n icon={MonitorPlay}\n title={m.browserPlaywrightGuideTitle}\n description={m.browserPlaywrightGuideDesc}\n status={statusKind}\n statusDetail={statusDetail}\n m={m}\n primaryAction={\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60\"\n disabled={installing}\n onClick={() => void install()}\n >\n {installing ? (\n <LoaderCircle className=\"size-3.5 animate-spin\" />\n ) : installed ? (\n <RefreshCw className=\"size-3.5\" />\n ) : status === 'installed' ? (\n <CheckCircle2 className=\"size-3.5 text-green-500\" />\n ) : (\n <Download className=\"size-3.5\" />\n )}\n {installing\n ? m.browserPlaywrightInstalling\n : installed\n ? m.browserReinstall\n : m.browserPlaywrightInstall}\n </button>\n }\n >\n <code className=\"w-fit rounded-md border border-edge bg-surface-base px-2 py-1 text-xs text-fg\">\n node node_modules/playwright-core/cli.js install chromium\n </code>\n {running ? (\n <BrowserInstallProgressPanel\n m={m}\n progress={progress}\n showLogs\n cancelling={cancelling}\n onCancel={() => void cancel()}\n />\n ) : null}\n {message ? (\n <ActionResultBox kind={status === 'failed' ? 'error' : 'success'} message={message} />\n ) : null}\n </BackendModeCard>\n );\n}\n","import { useCallback, useEffect, useReducer, useRef } from 'react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport type {\n CdpPingResult,\n CloakDoctor,\n CloudTestResult,\n DoctorState,\n ExtensionArtifacts,\n ExtensionProbe,\n LaunchedCdpInstance,\n PlaywrightDoctor,\n} from './types';\n\ninterface ApiEnvelope<T> {\n ok?: boolean;\n payload?: T;\n error?: string | { message?: string };\n}\n\nasync function getJson<T>(url: string): Promise<T> {\n const res = await apiFetch(url);\n const body = (await res.json().catch(() => ({}))) as ApiEnvelope<T>;\n if (!res.ok || body.ok === false) {\n const msg = typeof body.error === 'string' ? body.error : body.error?.message;\n throw new Error(msg || `Request failed: ${res.status}`);\n }\n if (body.payload === undefined) throw new Error('Empty payload');\n return body.payload;\n}\n\nasync function postJson<T>(url: string, body: unknown): Promise<T> {\n const res = await apiFetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body ?? {}),\n });\n const json = (await res.json().catch(() => ({}))) as ApiEnvelope<T>;\n if (!res.ok || json.ok === false) {\n const msg = typeof json.error === 'string' ? json.error : json.error?.message;\n throw new Error(msg || `Request failed: ${res.status}`);\n }\n if (json.payload === undefined) throw new Error('Empty payload');\n return json.payload;\n}\n\ntype BrowserDoctorState = {\n playwright: DoctorState<PlaywrightDoctor>;\n cloak: DoctorState<CloakDoctor>;\n extension: DoctorState<ExtensionProbe>;\n extensionArtifacts: DoctorState<ExtensionArtifacts>;\n};\n\ntype BrowserDoctorAction =\n | { type: 'playwright'; state: DoctorState<PlaywrightDoctor> }\n | { type: 'cloak'; state: DoctorState<CloakDoctor> }\n | { type: 'extension'; state: DoctorState<ExtensionProbe> }\n | { type: 'extension-artifacts'; state: DoctorState<ExtensionArtifacts> }\n | { type: 'extension-idle' }\n | { type: 'extension-start-probe' }\n | { type: 'extension-artifacts-start-probe' };\n\nconst initialBrowserDoctorState: BrowserDoctorState = {\n playwright: { kind: 'idle' },\n cloak: { kind: 'idle' },\n extension: { kind: 'idle' },\n extensionArtifacts: { kind: 'idle' },\n};\n\nfunction browserDoctorReducer(state: BrowserDoctorState, action: BrowserDoctorAction): BrowserDoctorState {\n switch (action.type) {\n case 'playwright':\n return { ...state, playwright: action.state };\n case 'cloak':\n return { ...state, cloak: action.state };\n case 'extension':\n return { ...state, extension: action.state };\n case 'extension-artifacts':\n return { ...state, extensionArtifacts: action.state };\n case 'extension-idle':\n return { ...state, extension: { kind: 'idle' }, extensionArtifacts: { kind: 'idle' } };\n case 'extension-start-probe':\n return {\n ...state,\n extension: state.extension.kind === 'ok' ? state.extension : { kind: 'loading' },\n };\n case 'extension-artifacts-start-probe':\n return {\n ...state,\n extensionArtifacts:\n state.extensionArtifacts.kind === 'ok' ? state.extensionArtifacts : { kind: 'loading' },\n };\n }\n}\n\nexport interface BrowserDoctor {\n playwright: DoctorState<PlaywrightDoctor>;\n cloak: DoctorState<CloakDoctor>;\n /** Periodic probe of the extension bridge (polled every 5 s when active). */\n extension: DoctorState<ExtensionProbe>;\n extensionArtifacts: DoctorState<ExtensionArtifacts>;\n refetchPlaywright: () => Promise<void>;\n applyPlaywrightDoctor: (data: PlaywrightDoctor) => void;\n refetchCloak: (overrides?: { cacheDir?: string; binaryPath?: string }) => Promise<CloakDoctor | null>;\n applyCloakDoctor: (data: CloakDoctor) => void;\n pingCdp: (cdpUrl: string) => Promise<CdpPingResult>;\n testCloud: (provider: 'browserbase' | 'browser-use', apiKey: string) => Promise<CloudTestResult>;\n launchCdp: (executablePath?: string) => Promise<LaunchedCdpInstance>;\n stopCdp: (port: number) => Promise<void>;\n listCdpInstances: () => Promise<LaunchedCdpInstance[]>;\n startExtensionBridge: (opts?: { host?: string; port?: number }) => Promise<void>;\n stopExtensionBridge: () => Promise<void>;\n refetchExtension: () => Promise<void>;\n refetchExtensionArtifacts: () => Promise<ExtensionArtifacts | null>;\n installExtensionArtifacts: (opts?: { force?: boolean }) => Promise<ExtensionArtifacts | null>;\n openExtensionChrome: () => Promise<void>;\n revealExtensionFolder: () => Promise<void>;\n}\n\nexport function useBrowserDoctor(opts: {\n cacheDir?: string;\n binaryPath?: string;\n /** When true, the extension probe polls every 5 s. */\n extensionEnabled?: boolean;\n extensionHost?: string;\n extensionPort?: number;\n}): BrowserDoctor {\n const [doctors, dispatch] = useReducer(browserDoctorReducer, initialBrowserDoctorState);\n const { playwright, cloak, extension, extensionArtifacts } = doctors;\n\n const refetchPlaywright = useCallback(async () => {\n dispatch({ type: 'playwright', state: { kind: 'loading' } });\n try {\n const data = await getJson<PlaywrightDoctor>(apiUrl('/api/browser/playwright/doctor'));\n dispatch({ type: 'playwright', state: { kind: 'ok', data } });\n } catch (e) {\n dispatch({\n type: 'playwright',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n }\n }, []);\n\n const refetchCloak = useCallback(\n async (overrides?: { cacheDir?: string; binaryPath?: string }) => {\n dispatch({ type: 'cloak', state: { kind: 'loading' } });\n const cd = (overrides?.cacheDir ?? opts.cacheDir ?? '').trim();\n const bp = (overrides?.binaryPath ?? opts.binaryPath ?? '').trim();\n const qs = new URLSearchParams();\n if (cd) qs.set('cacheDir', cd);\n if (bp) qs.set('binaryPath', bp);\n try {\n const data = await getJson<CloakDoctor>(\n apiUrl(`/api/browser/cloakbrowser/doctor${qs.size ? `?${qs}` : ''}`),\n );\n dispatch({ type: 'cloak', state: { kind: 'ok', data } });\n return data;\n } catch (e) {\n dispatch({\n type: 'cloak',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n return null;\n }\n },\n [opts.binaryPath, opts.cacheDir],\n );\n\n const applyPlaywrightDoctor = useCallback((data: PlaywrightDoctor) => {\n dispatch({ type: 'playwright', state: { kind: 'ok', data } });\n }, []);\n\n const applyCloakDoctor = useCallback((data: CloakDoctor) => {\n dispatch({ type: 'cloak', state: { kind: 'ok', data } });\n }, []);\n\n // One-shot probes on mount.\n useEffect(() => {\n void refetchPlaywright();\n }, [refetchPlaywright]);\n useEffect(() => {\n void refetchCloak();\n }, [refetchCloak]);\n\n const { extensionEnabled, extensionHost, extensionPort } = opts;\n\n const refetchExtension = useCallback(async () => {\n const qs = new URLSearchParams({ probe: '1' });\n if (extensionHost) qs.set('host', extensionHost);\n if (extensionPort !== undefined) qs.set('port', String(extensionPort));\n dispatch({ type: 'extension-start-probe' });\n try {\n const res = await apiFetch(apiUrl(`/api/browser/extension-status?${qs}`), {\n signal: AbortSignal.timeout(3000),\n });\n const data = (await res.json().catch(() => ({}))) as {\n running?: boolean;\n connected?: boolean;\n backend?: string;\n artifacts?: ExtensionArtifacts;\n };\n if (!res.ok) {\n dispatch({ type: 'extension', state: { kind: 'error', message: `HTTP ${res.status}` } });\n return;\n }\n dispatch({\n type: 'extension',\n state: {\n kind: 'ok',\n data: {\n running: data.running === true,\n connected: data.connected === true,\n backend: data.backend,\n artifacts: data.artifacts,\n },\n },\n });\n } catch (e) {\n dispatch({\n type: 'extension',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n }\n }, [extensionHost, extensionPort]);\n\n const refetchExtensionArtifacts = useCallback(async () => {\n dispatch({ type: 'extension-artifacts-start-probe' });\n try {\n const data = await getJson<ExtensionArtifacts>(apiUrl('/api/browser/extension/doctor'));\n dispatch({ type: 'extension-artifacts', state: { kind: 'ok', data } });\n return data;\n } catch (e) {\n dispatch({\n type: 'extension-artifacts',\n state: { kind: 'error', message: e instanceof Error ? e.message : String(e) },\n });\n return null;\n }\n }, []);\n\n const installExtensionArtifacts = useCallback(\n async (params?: { force?: boolean }) => {\n const payload = await postJson<{ doctor: ExtensionArtifacts }>(\n apiUrl('/api/browser/extension/install'),\n { force: params?.force ?? false },\n );\n const doctor = payload.doctor;\n dispatch({ type: 'extension-artifacts', state: { kind: 'ok', data: doctor } });\n await refetchExtension();\n return doctor;\n },\n [refetchExtension],\n );\n\n const openExtensionChrome = useCallback(async () => {\n await postJson<{ extensionDir: string }>(apiUrl('/api/browser/extension/open'), {\n action: 'chrome',\n });\n }, []);\n\n const revealExtensionFolder = useCallback(async () => {\n await postJson<{ extensionDir: string }>(apiUrl('/api/browser/extension/open'), {\n action: 'folder',\n });\n }, []);\n\n const trackedExtensionEnabledRef = useRef(extensionEnabled);\n if (trackedExtensionEnabledRef.current !== extensionEnabled) {\n trackedExtensionEnabledRef.current = extensionEnabled;\n if (!extensionEnabled) {\n dispatch({ type: 'extension-idle' });\n }\n }\n\n useEffect(() => {\n if (!extensionEnabled) return undefined;\n void refetchExtension();\n void refetchExtensionArtifacts();\n const id = setInterval(() => void refetchExtension(), 5000);\n return () => clearInterval(id);\n }, [extensionEnabled, refetchExtension, refetchExtensionArtifacts]);\n\n const startExtensionBridge = useCallback(\n async (params?: { host?: string; port?: number }) => {\n await postJson<{ running: boolean }>(apiUrl('/api/browser/extension/start'), {\n host: params?.host ?? extensionHost,\n port: params?.port ?? extensionPort,\n });\n await refetchExtension();\n },\n [extensionHost, extensionPort, refetchExtension],\n );\n\n const stopExtensionBridge = useCallback(async () => {\n await postJson<{ running: boolean }>(apiUrl('/api/browser/extension/stop'), {});\n await refetchExtension();\n }, [refetchExtension]);\n\n const pingCdp = useCallback(async (cdpUrl: string) => {\n return postJson<CdpPingResult>(apiUrl('/api/browser/cdp/ping'), { cdpUrl });\n }, []);\n\n const testCloud = useCallback(\n async (provider: 'browserbase' | 'browser-use', apiKey: string) => {\n return postJson<CloudTestResult>(apiUrl('/api/browser/cloud/test-connection'), {\n provider,\n apiKey,\n });\n },\n [],\n );\n\n const launchCdp = useCallback(async (executablePath?: string) => {\n return postJson<LaunchedCdpInstance>(apiUrl('/api/browser/cdp/launch'), {\n executablePath,\n });\n }, []);\n\n const stopCdp = useCallback(async (port: number) => {\n await postJson<{ stopped: boolean }>(apiUrl('/api/browser/cdp/stop'), { port });\n }, []);\n\n const listCdpInstances = useCallback(async () => {\n const payload = await getJson<{ instances: LaunchedCdpInstance[] }>(\n apiUrl('/api/browser/cdp/instances'),\n );\n return payload.instances;\n }, []);\n\n return {\n playwright,\n cloak,\n extension,\n extensionArtifacts,\n refetchPlaywright,\n applyPlaywrightDoctor,\n refetchCloak,\n applyCloakDoctor,\n refetchExtension,\n refetchExtensionArtifacts,\n installExtensionArtifacts,\n openExtensionChrome,\n revealExtensionFolder,\n pingCdp,\n testCloud,\n launchCdp,\n stopCdp,\n listCdpInstances,\n startExtensionBridge,\n stopExtensionBridge,\n };\n}\n","import { useCallback, useRef, useState } from 'react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nconst SSE_BLOCK_DELIM = '\\n\\n';\nconst CRLF_RE = /\\r\\n/g;\n\nexport type BrowserInstallKind = 'playwright' | 'cloakbrowser';\n\nexport type BrowserInstallPhase =\n | 'starting'\n | 'downloading'\n | 'verifying'\n | 'extracting'\n | 'running'\n | 'ready';\n\nexport type BrowserInstallProgressEvent = {\n phase: BrowserInstallPhase;\n message?: string;\n percent?: number | null;\n bytesReceived?: number;\n totalBytes?: number | null;\n line?: string;\n source?: 'stdout' | 'stderr';\n};\n\nexport type BrowserInstallStreamState = {\n phase: BrowserInstallPhase | null;\n message: string | null;\n percent: number | null;\n lines: string[];\n};\n\nexport type BrowserInstallStreamResult<T = unknown> =\n | { ok: true; payload: T }\n | { ok: false; error: string; message?: string; status?: number };\n\nconst INSTALL_PATH: Record<BrowserInstallKind, string> = {\n playwright: '/api/browser/playwright/install/stream',\n cloakbrowser: '/api/browser/cloakbrowser/install/stream',\n};\n\nconst CANCEL_PATH: Record<BrowserInstallKind, string> = {\n playwright: '/api/browser/playwright/install/cancel',\n cloakbrowser: '/api/browser/cloakbrowser/install/cancel',\n};\n\nconst MAX_LOG_LINES = 8;\n\nfunction emptyState(): BrowserInstallStreamState {\n return { phase: null, message: null, percent: null, lines: [] };\n}\n\nfunction applyProgress(\n prev: BrowserInstallStreamState,\n event: BrowserInstallProgressEvent,\n): BrowserInstallStreamState {\n const next: BrowserInstallStreamState = {\n phase: event.phase,\n message: event.message ?? event.line ?? prev.message,\n percent: event.percent ?? prev.percent,\n lines: prev.lines,\n };\n\n if (event.line) {\n const lines = [...prev.lines, event.line];\n next.lines = lines.length > MAX_LOG_LINES ? lines.slice(-MAX_LOG_LINES) : lines;\n }\n\n return next;\n}\n\nasync function consumeBrowserInstallSse<T>(\n body: ReadableStream<Uint8Array>,\n onProgress: (event: BrowserInstallProgressEvent) => void,\n signal?: AbortSignal,\n): Promise<BrowserInstallStreamResult<T>> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n let final: BrowserInstallStreamResult<T> | null = null;\n\n const handleSseBlock = (block: string) => {\n let ev = '';\n let dataPayload = '';\n for (const line of block.split('\\n')) {\n const L = line.replace(/\\r$/, '');\n if (L.startsWith('event:')) ev = L.slice(6).trim();\n else if (L.startsWith('data:')) dataPayload += L.slice(5).trimStart();\n }\n if (!dataPayload) return;\n\n if (ev === 'progress') {\n try {\n const parsed = JSON.parse(dataPayload) as BrowserInstallProgressEvent;\n if (parsed && typeof parsed === 'object' && typeof parsed.phase === 'string') {\n onProgress(parsed);\n }\n } catch {\n /* ignore malformed chunk */\n }\n return;\n }\n\n if (ev === 'result') {\n try {\n const json = JSON.parse(dataPayload) as {\n ok?: boolean;\n error?: string;\n message?: string;\n payload?: T;\n };\n if (json.ok) {\n final = { ok: true, payload: json.payload as T };\n } else {\n final = {\n ok: false,\n error: String(json.error ?? 'unknown'),\n message: typeof json.message === 'string' ? json.message : undefined,\n status:\n json.error === 'busy' ? 409 : json.error === 'cancelled' ? 499 : 500,\n };\n }\n } catch {\n final = { ok: false, error: 'parse', status: 0 };\n }\n }\n };\n\n try {\n const readChunk = async (): Promise<BrowserInstallStreamResult<T>> => {\n if (final !== null) return final;\n if (signal?.aborted) {\n await reader.cancel().catch(() => {});\n return { ok: false, error: 'cancelled', status: 499 };\n }\n const { done, value } = await reader.read();\n if (done) return final ?? { ok: false, error: 'no-result', status: 0 };\n buffer += decoder.decode(value, { stream: true });\n buffer = buffer.replace(CRLF_RE, '\\n');\n const parts = buffer.split(SSE_BLOCK_DELIM);\n buffer = parts.pop() ?? '';\n for (const chunk of parts) {\n if (chunk.length) handleSseBlock(chunk);\n }\n return readChunk();\n };\n const result = await readChunk();\n if (result) return result;\n } catch (err) {\n if (signal?.aborted || (err instanceof DOMException && err.name === 'AbortError')) {\n return { ok: false, error: 'cancelled', status: 499 };\n }\n throw err;\n } finally {\n reader.releaseLock();\n }\n\n if (final) return final;\n\n return signal?.aborted\n ? { ok: false, error: 'cancelled', status: 499 }\n : { ok: false, error: 'no-result', status: 0 };\n}\n\n/**\n * One instance per browser backend (playwright / cloakbrowser).\n * State survives switching backend tabs in the settings panel.\n */\nexport function useBrowserInstallStream(kind: BrowserInstallKind) {\n const [progress, setProgress] = useState<BrowserInstallStreamState>(emptyState);\n const [running, setRunning] = useState(false);\n const [cancelling, setCancelling] = useState(false);\n const runningRef = useRef(false);\n const abortRef = useRef<AbortController | null>(null);\n\n const reset = useCallback(() => {\n if (runningRef.current) return;\n setProgress(emptyState());\n }, []);\n\n const cancel = useCallback(async () => {\n if (!runningRef.current) return;\n setCancelling(true);\n try {\n await apiFetch(apiUrl(CANCEL_PATH[kind]), { method: 'POST' }).catch(() => {});\n abortRef.current?.abort();\n } finally {\n setCancelling(false);\n }\n }, [kind]);\n\n const run = useCallback(\n async <T,>(opts: {\n body?: unknown;\n fallbackError: string;\n }): Promise<BrowserInstallStreamResult<T> & { errorMessage?: string }> => {\n if (runningRef.current) {\n return {\n ok: false,\n error: 'busy',\n status: 409,\n errorMessage: 'An install for this browser type is already in progress.',\n };\n }\n\n const ac = new AbortController();\n abortRef.current = ac;\n runningRef.current = true;\n setRunning(true);\n setProgress(emptyState());\n\n try {\n const res = await apiFetch(apiUrl(INSTALL_PATH[kind]), {\n method: 'POST',\n headers: {\n Accept: 'text/event-stream',\n ...(opts.body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n },\n body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,\n signal: ac.signal,\n });\n\n if (!res.ok || !res.body) {\n const text = await res.text().catch(() => '');\n let message = `HTTP ${res.status}`;\n try {\n const j = JSON.parse(text) as { message?: string; error?: string };\n if (typeof j.message === 'string') message = j.message;\n else if (typeof j.error === 'string') message = j.error;\n } catch {\n if (text) message = text.slice(0, 500);\n }\n return {\n ok: false,\n error: res.status === 409 ? 'busy' : 'http',\n status: res.status,\n errorMessage: message,\n };\n }\n\n const result = await consumeBrowserInstallSse<T>(\n res.body,\n (event) => {\n setProgress((prev) => applyProgress(prev, event));\n },\n ac.signal,\n );\n\n if (!result.ok) {\n if (result.error === 'cancelled') {\n return { ...result, errorMessage: undefined };\n }\n return {\n ...result,\n errorMessage:\n result.message ??\n (result.error === 'busy'\n ? 'An install for this browser type is already in progress.'\n : opts.fallbackError),\n };\n }\n\n return result;\n } catch (err) {\n if (ac.signal.aborted || (err instanceof DOMException && err.name === 'AbortError')) {\n return { ok: false, error: 'cancelled', status: 499 };\n }\n return {\n ok: false,\n error: 'network',\n errorMessage: err instanceof Error ? err.message : opts.fallbackError,\n };\n } finally {\n if (abortRef.current === ac) {\n abortRef.current = null;\n }\n runningRef.current = false;\n setRunning(false);\n setCancelling(false);\n }\n },\n [kind],\n );\n\n return { progress, running, cancelling, run, reset, cancel };\n}\n\nexport type BrowserInstallStream = ReturnType<typeof useBrowserInstallStream>;\n","import { Cloud, Globe, MonitorPlay, Puzzle, ShieldCheck, Webhook } from 'lucide-react';\nimport { useMemo } from 'react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nimport type { ModeStatusKind } from './browser/backend-mode-card';\nimport { BackendModePicker, type BackendModeOption } from './browser/backend-mode-picker';\nimport { CdpCard } from './browser/cdp-card';\nimport { CloakCard } from './browser/cloak-card';\nimport { CloudCard } from './browser/cloud-card';\nimport { ExtensionCard } from './browser/extension-card';\nimport { LocalCard } from './browser/local-card';\nimport { useBrowserDoctor } from './browser/use-browser-doctor';\nimport { useBrowserInstallStream } from './browser/use-browser-install-stream';\n\nexport function AgentDefaultsBrowserPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n\n const playwrightInstall = useBrowserInstallStream('playwright');\n const cloakInstall = useBrowserInstallStream('cloakbrowser');\n\n const doctor = useBrowserDoctor({\n cacheDir: form.browserCloakCacheDir,\n binaryPath: form.browserCloakBinaryPath,\n extensionEnabled: form.browserEnabled,\n extensionHost: form.browserExtensionHost,\n extensionPort: form.browserExtensionPort,\n });\n\n const localStatus = doctorStatus(doctor.playwright);\n const cloakStatus = doctorStatus(doctor.cloak);\n const extensionStatus = extensionDoctorStatus(doctor.extension);\n const extensionStatusLabel = extensionStatusLabelFor(doctor.extension, a);\n\n const modeOptions = useMemo<BackendModeOption[]>(\n () => [\n {\n value: 'extension',\n icon: Puzzle,\n name: a.browserBackendExtension,\n tagline: a.browserModeExtTagline,\n status: extensionStatus,\n statusLabel: extensionStatusLabel,\n },\n {\n value: 'local',\n icon: MonitorPlay,\n name: a.browserBackendLocal,\n tagline: a.browserModeLocalTagline,\n status: localStatus,\n statusLabel: statusLabelFor(localStatus, a),\n },\n {\n value: 'cloakbrowser',\n icon: ShieldCheck,\n name: a.browserBackendCloakBrowser,\n tagline: a.browserModeCloakTagline,\n status: cloakStatus,\n statusLabel: statusLabelFor(cloakStatus, a),\n },\n {\n value: 'cdp',\n icon: Webhook,\n name: a.browserBackendCdp,\n tagline: a.browserModeCdpTagline,\n },\n {\n value: 'cloud',\n icon: Cloud,\n name: a.browserBackendCloud,\n tagline: a.browserModeCloudTagline,\n },\n ],\n [a, cloakStatus, extensionStatus, extensionStatusLabel, localStatus],\n );\n\n const selectedOption = modeOptions.find((o) => o.value === form.browserBackend) ?? modeOptions[0];\n const SelectedIcon = selectedOption.icon;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Globe} title={a.cardBrowserTitle} subtitle={a.cardBrowserSubtitle} />\n <div className=\"flex flex-col gap-5\">\n {/* Global toggles */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserEnabled} description={a.desc.browserEnabled}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserEnabled}\n onChange={(e) => update({ browserEnabled: e.target.checked })}\n />\n <span>{a.browserEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserHeadless} description={a.desc.browserHeadless}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserHeadless}\n onChange={(e) => update({ browserHeadless: e.target.checked })}\n />\n <span>{a.browserHeadlessOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserAllowPrivateUrls} description={a.desc.browserAllowPrivateUrls}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.browserAllowPrivateUrls}\n onChange={(e) => update({ browserAllowPrivateUrls: e.target.checked })}\n />\n <span>{a.browserAllowPrivateOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserCommandTimeout} description={a.desc.browserCommandTimeout}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={5}\n value={form.browserCommandTimeout ?? ''}\n placeholder=\"30\"\n onChange={(e) => {\n const v = e.target.value;\n update({ browserCommandTimeout: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n </div>\n\n {/* Backend mode picker — 5 cards, selected highlighted */}\n <BackendModePicker\n m={a}\n value={form.browserBackend}\n onChange={(next) => update({ browserBackend: next })}\n options={modeOptions}\n />\n\n {/* Section header makes it unambiguous what's being configured below */}\n <div className=\"flex items-center gap-3 border-b border-edge pb-2\">\n <div className=\"flex size-7 items-center justify-center rounded-lg bg-accent/15 text-accent\">\n <SelectedIcon className=\"size-4\" strokeWidth={1.75} />\n </div>\n <div className=\"flex flex-col\">\n <div className=\"text-sm font-semibold text-fg\">\n {a.browserConfiguringHeader.replace('{{mode}}', selectedOption.name)}\n </div>\n <div className=\"text-xs text-fg-muted\">{selectedOption.tagline}</div>\n </div>\n </div>\n\n {/* Selected mode card */}\n {form.browserBackend === 'local' ? (\n <LocalCard\n m={a}\n doctor={doctor.playwright}\n refetch={doctor.refetchPlaywright}\n applyDoctor={doctor.applyPlaywrightDoctor}\n installStream={playwrightInstall}\n />\n ) : null}\n {form.browserBackend === 'cloakbrowser' ? (\n <CloakCard\n m={a}\n doctor={doctor.cloak}\n refetch={doctor.refetchCloak}\n applyDoctor={doctor.applyCloakDoctor}\n installStream={cloakInstall}\n form={{\n cacheDir: form.browserCloakCacheDir,\n binaryPath: form.browserCloakBinaryPath,\n keepOpen: form.browserCloakKeepOpen,\n temporaryProfile: form.browserCloakTemporaryProfile,\n humanize: form.browserHumanize,\n humanPreset: form.browserHumanPreset,\n }}\n onChange={(patch) =>\n update({\n ...(patch.cacheDir !== undefined ? { browserCloakCacheDir: patch.cacheDir } : {}),\n ...(patch.binaryPath !== undefined ? { browserCloakBinaryPath: patch.binaryPath } : {}),\n ...(patch.keepOpen !== undefined ? { browserCloakKeepOpen: patch.keepOpen } : {}),\n ...(patch.temporaryProfile !== undefined\n ? { browserCloakTemporaryProfile: patch.temporaryProfile }\n : {}),\n ...(patch.humanize !== undefined ? { browserHumanize: patch.humanize } : {}),\n ...(patch.humanPreset !== undefined ? { browserHumanPreset: patch.humanPreset } : {}),\n })\n }\n />\n ) : null}\n {form.browserBackend === 'cdp' ? (\n <CdpCard\n m={a}\n cdpUrl={form.browserCdpUrl}\n onCdpUrlChange={(next) => update({ browserCdpUrl: next })}\n launch={doctor.launchCdp}\n stop={doctor.stopCdp}\n listInstances={doctor.listCdpInstances}\n ping={doctor.pingCdp}\n />\n ) : null}\n {form.browserBackend === 'cloud' ? (\n <CloudCard\n m={a}\n form={{\n provider: form.browserCloudProvider,\n apiKey: form.browserCloudApiKey,\n projectId: form.browserCloudProjectId,\n region: form.browserCloudRegion,\n }}\n onChange={(patch) =>\n update({\n ...(patch.provider !== undefined ? { browserCloudProvider: patch.provider } : {}),\n ...(patch.apiKey !== undefined ? { browserCloudApiKey: patch.apiKey } : {}),\n ...(patch.projectId !== undefined ? { browserCloudProjectId: patch.projectId } : {}),\n ...(patch.region !== undefined ? { browserCloudRegion: patch.region } : {}),\n })\n }\n testCloud={doctor.testCloud}\n />\n ) : null}\n {form.browserBackend === 'extension' ? (\n <ExtensionCard\n m={a}\n probe={doctor.extension}\n artifacts={doctor.extensionArtifacts}\n form={{ port: form.browserExtensionPort, host: form.browserExtensionHost }}\n onChange={(patch) =>\n update({\n ...(patch.port !== undefined ? { browserExtensionPort: patch.port } : {}),\n ...(patch.host !== undefined ? { browserExtensionHost: patch.host } : {}),\n })\n }\n startBridge={doctor.startExtensionBridge}\n stopBridge={doctor.stopExtensionBridge}\n installArtifacts={doctor.installExtensionArtifacts}\n refetchArtifacts={doctor.refetchExtensionArtifacts}\n openExtensionChrome={doctor.openExtensionChrome}\n revealExtensionFolder={doctor.revealExtensionFolder}\n />\n ) : null}\n\n {/* Dialog policy (shared across modes) */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserDialogPolicy} description={a.desc.browserDialogPolicy}>\n <select\n className={selectClassName()}\n value={form.browserDialogPolicy}\n onChange={(e) =>\n update({\n browserDialogPolicy: e.target.value as 'must_respond' | 'auto_dismiss' | 'auto_accept',\n })\n }\n >\n <option value=\"must_respond\">{a.browserDialogPolicyMustRespond}</option>\n <option value=\"auto_dismiss\">{a.browserDialogPolicyAutoDismiss}</option>\n <option value=\"auto_accept\">{a.browserDialogPolicyAutoAccept}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.browserDialogTimeout} description={a.desc.browserDialogTimeout}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.browserDialogTimeout ?? ''}\n placeholder=\"300\"\n onChange={(e) => {\n const v = e.target.value;\n update({ browserDialogTimeout: v === '' ? undefined : Number.parseInt(v, 10) });\n }}\n />\n </AgentDefaultsField>\n </div>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n\nfunction doctorStatus<T extends { installed: boolean }>(\n d: { kind: 'idle' } | { kind: 'loading' } | { kind: 'ok'; data: T } | { kind: 'error'; message: string },\n): ModeStatusKind | undefined {\n if (d.kind === 'loading') return 'checking';\n if (d.kind === 'error') return 'error';\n if (d.kind === 'ok') return d.data.installed ? 'ready' : 'not_installed';\n return undefined;\n}\n\nfunction statusLabelFor(\n status: ModeStatusKind | undefined,\n a: AgentDefaultsPanelProps['a'],\n): string | undefined {\n if (!status) return undefined;\n return {\n ready: a.browserStatusReady,\n not_installed: a.browserStatusNotInstalled,\n checking: a.browserStatusChecking,\n unknown: a.browserStatusUnknown,\n error: a.browserStatusError,\n }[status];\n}\n\nfunction extensionDoctorStatus(\n d: ReturnType<typeof useBrowserDoctor>['extension'],\n): ModeStatusKind | undefined {\n if (d.kind === 'idle') return undefined;\n if (d.kind === 'loading') return 'checking';\n if (d.kind === 'error') return 'error';\n // ok: connected → ready; running but not connected → \"not_installed\" surrogate (waiting)\n if (d.data.connected) return 'ready';\n if (d.data.running) return 'not_installed';\n return 'not_installed';\n}\n\nfunction extensionStatusLabelFor(\n d: ReturnType<typeof useBrowserDoctor>['extension'],\n a: AgentDefaultsPanelProps['a'],\n): string | undefined {\n if (d.kind === 'idle') return undefined;\n if (d.kind === 'loading') return a.browserStatusChecking;\n if (d.kind === 'error') return a.browserStatusError;\n if (d.data.connected) return a.browserExtensionConnected;\n if (d.data.running) return a.browserExtensionWaiting;\n return a.browserExtensionServerOff;\n}\n","import { Cpu } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { messages } from '@/i18n/messages';\nimport type { SettingsSectionId } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport type { UseAgentDefaultsFormResult } from './use-agent-defaults-form';\n\nexport function AgentDefaultsRouteLayout(props: {\n sectionId: SettingsSectionId;\n intro: string;\n vm: UseAgentDefaultsFormResult;\n children: ReactNode;\n /** Merged tabbed page: single page title, per-tab intro below tabs. */\n tabbed?: boolean;\n}) {\n const { sectionId, intro, vm, children, tabbed = false } = props;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n\n const pageTitle = m.settingsSections[sectionId] ?? sectionId;\n\n if (!vm.hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <div className=\"flex items-start gap-3 rounded-2xl bg-surface-base p-6\">\n <Cpu className=\"mt-0.5 size-5 shrink-0 text-fg-subtle\" strokeWidth={1.75} />\n <div>\n <h1 className=\"text-base font-semibold text-fg\">{pageTitle}</h1>\n <p className=\"mt-1 text-sm text-fg-muted\">{a.needToken}</p>\n </div>\n </div>\n </div>\n );\n }\n\n if (vm.loading) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-8\">\n <div className=\"h-8 w-48 animate-pulse rounded bg-surface-hover\" />\n <div className=\"mt-6 h-32 animate-pulse rounded-xl bg-surface-hover\" />\n <p className=\"mt-4 text-sm text-fg-muted\">{m.logs.loading}</p>\n </div>\n );\n }\n\n if (!vm.form) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <p className=\"text-sm text-fg-muted\">{vm.error ?? vm.fetchError ?? a.loadError}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={() => void vm.mutate()}>\n {m.logs.refresh}\n </Button>\n </div>\n );\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-8\">\n <header className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n <h1 className=\"text-lg font-semibold tracking-tight text-fg\">{pageTitle}</h1>\n {!tabbed ? (\n <>\n <p className=\"mt-1 text-sm leading-relaxed text-fg-muted\">{intro}</p>\n <p className=\"mt-1 text-xs text-fg-subtle\">{a.sectionDesc}</p>\n </>\n ) : (\n <p className=\"mt-1 text-xs text-fg-subtle\">{a.sectionDesc}</p>\n )}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2\">\n {vm.saveOk ? <span className=\"text-sm text-fg-muted\">{a.saved}</span> : null}\n <Button type=\"button\" variant=\"secondary\" disabled={!vm.dirty || vm.saving} onClick={vm.discard}>\n {a.discard}\n </Button>\n <Button type=\"button\" variant=\"primary\" disabled={!vm.dirty || vm.saving} onClick={() => void vm.save()}>\n {vm.saving ? a.saving : a.save}\n </Button>\n </div>\n </header>\n\n {vm.error ? (\n <div\n className=\"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/50 dark:bg-red-950/50 dark:text-red-400\"\n role=\"alert\"\n >\n {vm.error}\n </div>\n ) : null}\n\n <div className=\"flex min-w-0 flex-col gap-5 pb-8\">{children}</div>\n </div>\n );\n}\n","import { useCallback, useMemo, useReducer, useRef, useState } from 'react';\n\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n parseAgentDefaultsFromConfig,\n parseParamsJsonForSave,\n patchAgentDefaults,\n type AgentDefaultsState,\n} from '@/features/settings/config-api';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { createFormDraftReducer, syncFormDraftFromParsed } from '@/lib/settings-form-draft';\nimport { useGatewayStore } from '@/stores/gateway-store';\n\nexport type UseAgentDefaultsFormResult = {\n hasToken: boolean;\n loading: boolean;\n fetchError: string | null;\n form: AgentDefaultsState | null;\n update: (patch: Partial<AgentDefaultsState>) => void;\n dirty: boolean;\n saving: boolean;\n saveOk: boolean;\n error: string | null;\n setError: (e: string | null) => void;\n save: () => Promise<boolean>;\n discard: () => void;\n mutate: ReturnType<typeof useGatewayConfigSwr>['mutate'];\n};\n\nconst agentDefaultsFormReducer = createFormDraftReducer<AgentDefaultsState>();\n\nexport function useAgentDefaultsForm(a: MessageBundle['agentSettings']): UseAgentDefaultsFormResult {\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [formDraft, dispatchForm] = useReducer(agentDefaultsFormReducer, { form: null, baseline: null });\n const form = formDraft.form;\n const baseline = formDraft.baseline;\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [saveOk, setSaveOk] = useState(false);\n const dirtyRef = useRef(false);\n const trackedParsedRef = useRef<AgentDefaultsState | null>(null);\n\n const { data, error: swrError, isLoading, mutate } = useGatewayConfigSwr(hasToken);\n\n const parsed = useMemo(\n () =>\n data?.payload?.config !== undefined ? parseAgentDefaultsFromConfig(data.payload.config) : null,\n [data],\n );\n\n syncFormDraftFromParsed({\n enabled: hasToken,\n parsed,\n dirty: dirtyRef.current,\n trackedParsedRef,\n dispatch: dispatchForm,\n onResetDirty: () => {\n dirtyRef.current = false;\n },\n });\n\n const loading = Boolean(hasToken && isLoading && data === undefined && !swrError);\n const fetchError =\n swrError instanceof Error ? swrError.message : swrError ? String(swrError) : null;\n\n const dirty = useMemo(() => {\n if (!form || !baseline) return false;\n return JSON.stringify(form) !== JSON.stringify(baseline);\n }, [form, baseline]);\n\n const update = useCallback((patch: Partial<AgentDefaultsState>) => {\n dirtyRef.current = true;\n dispatchForm({ type: 'patch', patch });\n }, []);\n\n const save = useCallback(async (): Promise<boolean> => {\n if (!form || saving) return false;\n setSaving(true);\n setError(null);\n setSaveOk(false);\n try {\n try {\n void parseParamsJsonForSave(form.paramsJson);\n } catch (e) {\n setError(\n e instanceof SyntaxError\n ? a.advanced.paramsInvalidJson\n : e instanceof Error\n ? e.message\n : a.advanced.paramsInvalidJson,\n );\n return false;\n }\n await patchAgentDefaults(form);\n dirtyRef.current = false;\n dispatchForm({ type: 'saved', value: form });\n setSaveOk(true);\n void mutate();\n return true;\n } catch (e) {\n setError(e instanceof Error ? e.message : a.saveError);\n return false;\n } finally {\n setSaving(false);\n }\n }, [a.saveError, form, mutate, saving]);\n\n const discard = useCallback(() => {\n dirtyRef.current = false;\n dispatchForm({ type: 'discard' });\n setSaveOk(false);\n setError(null);\n }, []);\n\n return {\n hasToken,\n loading,\n fetchError,\n form,\n update,\n dirty,\n saving,\n saveOk,\n error,\n setError,\n save,\n discard,\n mutate,\n };\n}\n","import { useMemo } from 'react';\n\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsBrowserPanel } from './agent-defaults-panels/browser-panel';\nimport { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nexport function AgentBrowserSettingsPage() {\n const language = useLocaleStore((state) => state.language);\n const messageBundle = messages(language);\n const agentSettings = messageBundle.agentSettings;\n const chatMessages = messageBundle.chat;\n const viewModel = useAgentDefaultsForm(agentSettings);\n\n const panelProps = useMemo(() => {\n if (!viewModel.form) {\n return null;\n }\n return {\n form: viewModel.form,\n update: viewModel.update,\n a: agentSettings,\n chat: chatMessages,\n };\n }, [viewModel.form, viewModel.update, agentSettings, chatMessages]);\n\n return (\n <AgentDefaultsRouteLayout\n sectionId=\"agent-browser\"\n intro={agentSettings.routeIntro.browser}\n vm={viewModel}\n >\n {panelProps ? <AgentDefaultsBrowserPanel {...panelProps} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nexport type SkillsMarketplaceConfigState = {\n provider: string;\n storeBaseUrl: string;\n};\n\nconst DEFAULT_SKILLS_MARKETPLACE: SkillsMarketplaceConfigState = {\n provider: 'skillhub',\n storeBaseUrl: 'https://store.xopc.ai',\n};\n\nconst KNOWN_PROVIDERS = ['store', 'skillhub', 'clawhub'] as const;\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object' && !Array.isArray(v);\n}\n\nexport function normalizeSkillsMarketplaceFromConfig(config: unknown): SkillsMarketplaceConfigState {\n const c = isRecord(config) ? config : {};\n const gw = isRecord(c.gateway) ? c.gateway : {};\n const providerRaw =\n typeof gw.skillsMarketplaceProvider === 'string' ? gw.skillsMarketplaceProvider.trim().toLowerCase() : '';\n const provider = KNOWN_PROVIDERS.includes(providerRaw as (typeof KNOWN_PROVIDERS)[number])\n ? providerRaw\n : providerRaw || DEFAULT_SKILLS_MARKETPLACE.provider;\n return {\n provider,\n storeBaseUrl:\n typeof gw.skillsStoreBaseUrl === 'string' && gw.skillsStoreBaseUrl.trim()\n ? gw.skillsStoreBaseUrl.trim().replace(/\\/+$/, '')\n : DEFAULT_SKILLS_MARKETPLACE.storeBaseUrl,\n };\n}\n\nexport async function patchSkillsMarketplaceConfig(state: SkillsMarketplaceConfigState): Promise<void> {\n const url = state.storeBaseUrl.trim().replace(/\\/+$/, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n throw new Error('Store base URL must start with http:// or https://');\n }\n\n await fetchJson(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n gateway: {\n skillsMarketplaceProvider: state.provider.trim(),\n skillsStoreBaseUrl: url,\n },\n }),\n });\n void revalidateGatewayConfig();\n}\n\nexport function listKnownMarketplaceProviders(): readonly string[] {\n return KNOWN_PROVIDERS;\n}\n","import { Store, Loader2 } from 'lucide-react';\nimport { useCallback, useMemo, useReducer, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n listKnownMarketplaceProviders,\n normalizeSkillsMarketplaceFromConfig,\n patchSkillsMarketplaceConfig,\n type SkillsMarketplaceConfigState,\n} from '@/features/skills/skills-marketplace-config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { settingsInputFocusClass } from '@/lib/form-field-width';\nimport { createFormDraftReducer, syncFormDraftFromParsed } from '@/lib/settings-form-draft';\nimport { cn } from '@/lib/cn';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nfunction inputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nconst marketplaceFormReducer = createFormDraftReducer<SkillsMarketplaceConfigState>();\n\nexport function SkillsMarketplaceConfigSection({ hasToken }: { hasToken: boolean }) {\n const t = messages(useLocaleStore((s) => s.language)).skillsMarketplaceSettings;\n const providers = listKnownMarketplaceProviders();\n const { data, isLoading } = useGatewayConfigSwr(hasToken);\n const parsed = useMemo(\n () =>\n data?.payload?.config !== undefined ? normalizeSkillsMarketplaceFromConfig(data.payload.config) : null,\n [data],\n );\n const [formDraft, dispatchForm] = useReducer(marketplaceFormReducer, { form: null, baseline: null });\n const form = formDraft.form;\n const baseline = formDraft.baseline;\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const dirtyRef = useRef(false);\n const trackedParsedRef = useRef<SkillsMarketplaceConfigState | null>(null);\n\n syncFormDraftFromParsed({\n enabled: hasToken,\n parsed,\n dirty: dirtyRef.current,\n trackedParsedRef,\n dispatch: dispatchForm,\n onResetDirty: () => {\n dirtyRef.current = false;\n },\n });\n\n const dirty = form && baseline && JSON.stringify(form) !== JSON.stringify(baseline);\n const update = useCallback((patch: Partial<SkillsMarketplaceConfigState>) => {\n dirtyRef.current = true;\n dispatchForm({ type: 'patch', patch });\n }, []);\n\n if (!hasToken || !form) {\n return isLoading ? (\n <SettingsFormSection>\n <Loader2 className=\"size-4 animate-spin text-fg-muted\" />\n </SettingsFormSection>\n ) : null;\n }\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Store} title={t.title} subtitle={t.hint} />\n <div className=\"mb-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" disabled={!dirty || saving} onClick={() => dispatchForm({ type: 'discard' })}>\n {t.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n disabled={!dirty || saving}\n onClick={() => {\n void (async () => {\n setSaving(true);\n setError(null);\n try {\n await patchSkillsMarketplaceConfig(form);\n dirtyRef.current = false;\n dispatchForm({ type: 'saved', value: form });\n } catch (e) {\n setError(e instanceof Error ? e.message : t.saveError);\n } finally {\n setSaving(false);\n }\n })();\n }}\n >\n {saving ? t.saving : t.save}\n </Button>\n </div>\n {error ? <p className=\"mb-3 text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"mb-1 block text-sm font-medium text-fg\">{t.provider}</label>\n <select className={inputClassName()} value={form.provider} onChange={(e) => update({ provider: e.target.value })}>\n {providers.map((id) => (\n <option key={id} value={id}>\n {id}\n </option>\n ))}\n </select>\n <p className=\"mt-1 text-xs text-fg-subtle\">{t.providerHint}</p>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-fg\">{t.storeBaseUrl}</label>\n <input className={cn(inputClassName(), 'font-mono text-xs')} value={form.storeBaseUrl} onChange={(e) => update({ storeBaseUrl: e.target.value })} />\n <p className=\"mt-1 text-xs text-fg-subtle\">{t.storeBaseUrlHint}</p>\n </div>\n </div>\n </SettingsFormSection>\n );\n}\n","import { Cpu, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\n\nfunction modelFallbackRowKey(modelId: string, index: number, all: string[]): string {\n const trimmed = modelId.trim();\n if (trimmed) return `model:${trimmed}`;\n const emptySlot = all.slice(0, index).filter((id) => !id.trim()).length;\n return `empty:${emptySlot}`;\n}\n\n/**\n * Chat-only fallback chain (`agents.defaults.modelFallbacks`).\n * Rendered on the Agent defaults / Chat tab right under the primary model\n * selector — when the primary model fails after instant retries, xopc\n * walks this list in order.\n */\nexport function AgentDefaultsChatModelFallbacksSection(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cpu} title={a.label.modelFallbacks} subtitle={a.desc.modelFallbacks} />\n <div className=\"mt-4 flex flex-col gap-2\">\n {form.modelFallbacks.map((fb, idx) => (\n <div key={modelFallbackRowKey(fb, idx, form.modelFallbacks)} className=\"flex items-start gap-2\">\n <div className=\"min-w-0 flex-1\">\n <ModelSelector\n value={fb}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => {\n const next = [...form.modelFallbacks];\n next[idx] = modelId;\n update({ modelFallbacks: next });\n }}\n />\n </div>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0\"\n aria-label={a.removeModelFallback}\n onClick={() =>\n update({\n modelFallbacks: form.modelFallbacks.filter((_, j) => j !== idx),\n })\n }\n >\n <Trash2 className=\"size-4\" strokeWidth={1.75} />\n </Button>\n </div>\n ))}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"w-fit gap-1.5\"\n onClick={() => update({ modelFallbacks: [...form.modelFallbacks, ''] })}\n >\n <Plus className=\"size-4 shrink-0\" strokeWidth={1.75} />\n {a.addModelFallback}\n </Button>\n </div>\n </SettingsFormSection>\n );\n}\n","import { Cpu, SlidersHorizontal, Zap } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\nimport { AgentDefaultsChatModelFallbacksSection } from './chat-model-fallbacks-section';\n\nconst THINKING_KEYS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'adaptive'] as const;\n\nexport function AgentDefaultsBasicsPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Cpu} title={a.cardModelsTitle} subtitle={a.label.model} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.model} description={a.desc.model}>\n <ModelSelector\n value={form.model}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => update({ model: modelId })}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <AgentDefaultsChatModelFallbacksSection {...props} />\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={SlidersHorizontal} title={a.cardGenerationTitle} subtitle={a.cardGenerationSubtitle} />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.maxTokens} description={a.desc.maxTokens}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.maxTokens}\n min={1}\n onChange={(e) => update({ maxTokens: Number.parseInt(e.target.value, 10) || 0 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.temperature} description={a.desc.temperature}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.temperature}\n min={0}\n max={2}\n step={0.1}\n onChange={(e) => update({ temperature: Number.parseFloat(e.target.value) || 0 })}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Zap} title={a.cardBehaviorTitle} subtitle={a.cardBehaviorSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.thinkingDefault} description={a.desc.thinkingDefault}>\n <select\n className={selectClassName()}\n value={form.thinkingDefault}\n onChange={(e) => update({ thinkingDefault: e.target.value })}\n >\n {THINKING_KEYS.map((k) => (\n <option key={k} value={k}>\n {chat.thinkingLevels[k]}\n </option>\n ))}\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.reasoningDefault} description={a.desc.reasoningDefault}>\n <select\n className={selectClassName()}\n value={form.reasoningDefault}\n onChange={(e) => update({ reasoningDefault: e.target.value })}\n >\n <option value=\"off\">{a.reasoning.off}</option>\n <option value=\"on\">{a.reasoning.on}</option>\n <option value=\"stream\">{a.reasoning.stream}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.verboseDefault} description={a.desc.verboseDefault}>\n <select\n className={selectClassName()}\n value={form.verboseDefault}\n onChange={(e) => update({ verboseDefault: e.target.value })}\n >\n <option value=\"off\">{a.verbose.off}</option>\n <option value=\"on\">{a.verbose.on}</option>\n <option value=\"full\">{a.verbose.full}</option>\n </select>\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { fetchGatewayAgents } from '@/features/settings/agents-admin-api';\nimport { useAsyncResource } from '@/lib/use-async-resource';\n\nexport function useBuiltinToolIdsLoad(enabled: boolean, hasToken: boolean) {\n const { data: builtinToolIds, loading } = useAsyncResource(\n async () => {\n const p = await fetchGatewayAgents();\n return Array.isArray(p.builtinToolIds) ? p.builtinToolIds : [];\n },\n [enabled, hasToken],\n { enabled: enabled && hasToken, initial: [] as string[], errorData: [] },\n );\n\n return { builtinToolIds, loading };\n}\n","import { Wrench } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { BuiltinToolsDisableUi, sortedDisableList } from '../builtin-tools-disable-ui';\nimport type { BuiltinToolUiGroupKey } from '../builtin-tool-disable-groups';\nimport { useBuiltinToolIdsLoad } from '../hooks/use-builtin-tool-ids';\n\nexport function AgentDefaultsBuiltinToolsDisableSection(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const agentsTab = m.agentsSettings;\n const token = useGatewayStore((s) => s.token);\n const hasToken = Boolean(token);\n const { builtinToolIds, loading } = useBuiltinToolIdsLoad(true, hasToken);\n\n const disableSet = useMemo(\n () =>\n new Set(\n form.toolsDisable.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n ),\n [form.toolsDisable],\n );\n\n const unknownDisabled = useMemo(() => {\n const builtinSet = new Set(builtinToolIds);\n return form.toolsDisable\n .flatMap((s) => {\n const v = s.trim();\n return v && !builtinSet.has(v) ? [v] : [];\n })\n .toSorted((x, y) => x.localeCompare(y));\n }, [form.toolsDisable, builtinToolIds]);\n\n const onDisableSetChange = useCallback(\n (next: Set<string>) => {\n update({ toolsDisable: sortedDisableList(next) });\n },\n [update],\n );\n\n const groups = agentsTab.toolsDisableGroups;\n const getGroupTitle = useCallback((key: BuiltinToolUiGroupKey) => groups[key], [groups]);\n\n const getToolDescription = useCallback(\n (tid: string) =>\n tid in agentsTab.toolDescriptions\n ? agentsTab.toolDescriptions[tid as keyof typeof agentsTab.toolDescriptions]\n : '',\n [agentsTab.toolDescriptions],\n );\n\n return (\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Wrench} title={x.cardToolsDisableTitle} subtitle={x.cardToolsDisableSubtitle} />\n <AgentDefaultsField label={x.toolsDisableFieldLabel} description={x.toolsDisableHint}>\n <div className=\"flex flex-col gap-3\">\n {!hasToken ? (\n <p className=\"text-xs text-fg-muted\">{a.needToken}</p>\n ) : (\n <BuiltinToolsDisableUi\n mode=\"defaults\"\n builtinToolIds={builtinToolIds}\n loading={loading}\n disableSet={disableSet}\n onDisableSetChange={onDisableSetChange}\n unknownDisabledIds={unknownDisabled}\n getToolDescription={getToolDescription}\n getGroupTitle={getGroupTitle}\n quickActionsDisabled={loading}\n labels={{\n loadingBuiltin: x.toolsDisableLoadingBuiltin,\n emptyBuiltin: x.toolsDisableEmptyBuiltin,\n quickActionsLabel: x.toolsDisableQuickActionsLabel,\n quickEnableAll: x.toolsDisableQuickEnableAll,\n quickDisableAll: x.toolsDisableQuickDisableAll,\n quickReadOnlyWorkspace: x.toolsDisableQuickReadOnlyWorkspace,\n quickHighRiskOff: x.toolsDisableQuickHighRiskOff,\n quickNoOutbound: x.toolsDisableQuickNoOutbound,\n notInBuiltin: x.toolsDisableNotInBuiltin,\n lockedByDefaults: agentsTab.toolsLockedByDefaults,\n }}\n />\n )}\n </div>\n </AgentDefaultsField>\n </SettingsFormSection>\n );\n}\n","import { Code2, FileText } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\nimport { AgentDefaultsBuiltinToolsDisableSection } from './builtin-tools-disable-section';\n\nexport function AgentDefaultsCapabilitiesPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={FileText}\n title={x.cardWebExtractTitle}\n subtitle={x.cardWebExtractSubtitle}\n />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <div className=\"sm:col-span-2\">\n <AgentDefaultsField label={x.webExtractModel} description={x.webExtractModelDesc}>\n <ModelSelector\n value={form.webExtract.model}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) => update({ webExtract: { ...form.webExtract, model: modelId } })}\n />\n </AgentDefaultsField>\n </div>\n <AgentDefaultsField label={x.webExtractMaxLength} description={x.webExtractMaxLengthDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.webExtract.maxLength ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n webExtract: {\n ...form.webExtract,\n maxLength: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Code2} title={x.cardDelegateTitle} subtitle={x.cardDelegateSubtitle} />\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.delegateEnabled} description={x.delegateEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.delegate.enabled}\n onChange={(e) => update({ delegate: { ...form.delegate, enabled: e.target.checked } })}\n />\n <span>{x.delegateEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.executeCodeEnabled} description={x.executeCodeEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.executeCode.enabled}\n onChange={(e) =>\n update({ executeCode: { ...form.executeCode, enabled: e.target.checked } })\n }\n />\n <span>{x.executeCodeEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n\n <AgentDefaultsBuiltinToolsDisableSection {...props} />\n </div>\n );\n}\n","import { ChevronDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\ntype Props = {\n showLabel: string;\n hideLabel: string;\n children: ReactNode;\n className?: string;\n};\n\nexport function AgentDefaultsAdvancedDetails({ showLabel, hideLabel, children, className }: Props) {\n return (\n <details\n className={cn(\n 'group rounded-lg border border-edge-subtle/80 bg-surface-hover/20 open:pb-3 dark:border-edge-subtle',\n className,\n )}\n >\n <summary className=\"flex cursor-pointer list-none items-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <ChevronDown className=\"size-4 shrink-0 transition-transform group-open:rotate-180\" aria-hidden />\n <span className=\"group-open:hidden\">{showLabel}</span>\n <span className=\"hidden group-open:inline\">{hideLabel}</span>\n </summary>\n <div className=\"flex flex-col gap-5 px-3 pt-3\">{children}</div>\n </details>\n );\n}\n","import { Layers2, Scissors } from 'lucide-react';\n\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsAdvancedDetails } from '../agent-defaults-advanced-details';\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsContextPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Layers2} title={x.cardCompactionTitle} subtitle={x.cardCompactionSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.compactionEnabled} description={x.compactionEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.compaction.enabled}\n onChange={(e) =>\n update({ compaction: { ...form.compaction, enabled: e.target.checked } })\n }\n />\n <span>{x.compactionEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.compactionMode} description={x.compactionModeDesc}>\n <select\n className={selectClassName()}\n value={form.compaction.mode}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n mode: e.target.value as AgentDefaultsState['compaction']['mode'],\n },\n })\n }\n >\n <option value=\"default\">{x.compactionModeDefault}</option>\n <option value=\"safeguard\">{x.compactionModeSafeguard}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.reserveTokens} description={x.reserveTokensDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1000}\n value={form.compaction.reserveTokens}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n reserveTokens: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.triggerThreshold} description={x.triggerThresholdDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0.5}\n max={0.95}\n step={0.05}\n value={form.compaction.triggerThreshold}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n triggerThreshold: Number.parseFloat(e.target.value) || 0.8,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.minMessagesBeforeCompact} description={x.minMessagesBeforeCompactDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.compaction.minMessagesBeforeCompact}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n minMessagesBeforeCompact: Number.parseInt(e.target.value, 10) || 10,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.keepRecentMessages} description={x.keepRecentMessagesDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.compaction.keepRecentMessages}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n keepRecentMessages: Number.parseInt(e.target.value, 10) || 5,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.evictionWindow} description={x.evictionWindowDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0.1}\n max={0.5}\n step={0.05}\n value={form.compaction.evictionWindow}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n evictionWindow: Number.parseFloat(e.target.value) || 0.2,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.retentionWindow} description={x.retentionWindowDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={3}\n max={20}\n value={form.compaction.retentionWindow}\n onChange={(e) =>\n update({\n compaction: {\n ...form.compaction,\n retentionWindow: Number.parseInt(e.target.value, 10) || 6,\n },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Scissors} title={x.cardPruningTitle} subtitle={x.cardPruningSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.pruningEnabled} description={x.pruningEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.pruning.enabled}\n onChange={(e) => update({ pruning: { ...form.pruning, enabled: e.target.checked } })}\n />\n <span>{x.pruningEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.maxToolResultChars} description={x.maxToolResultCharsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1000}\n value={form.pruning.maxToolResultChars}\n onChange={(e) =>\n update({\n pruning: {\n ...form.pruning,\n maxToolResultChars: Number.parseInt(e.target.value, 10) || 10000,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.headKeepRatio} description={x.headKeepRatioDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n max={1}\n step={0.05}\n value={form.pruning.headKeepRatio}\n onChange={(e) =>\n update({\n pruning: { ...form.pruning, headKeepRatio: Number.parseFloat(e.target.value) || 0.3 },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.tailKeepRatio} description={x.tailKeepRatioDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n max={1}\n step={0.05}\n value={form.pruning.tailKeepRatio}\n onChange={(e) =>\n update({\n pruning: { ...form.pruning, tailKeepRatio: Number.parseFloat(e.target.value) || 0.3 },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Clock } from 'lucide-react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsExpertPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Clock} title={x.cardParamsTitle} subtitle={x.cardParamsSubtitle} />\n <AgentDefaultsField label={x.paramsJson} description={x.paramsJsonDesc}>\n <textarea\n className={cn(inputClassName(), 'min-h-[88px] resize-y font-mono text-xs')}\n value={form.paramsJson}\n placeholder=\"{}\"\n onChange={(e) => update({ paramsJson: e.target.value })}\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Timer } from 'lucide-react';\nimport { Link } from 'react-router-dom';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { pathForTab } from '@/navigation';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsLimitsPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Timer} title={x.cardLimitsTitle} subtitle={x.cardLimitsSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.maxTaskDurationMs} description={x.maxTaskDurationMsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={240}\n step={1}\n value={form.maxTaskDurationMinutes ?? ''}\n placeholder={x.maxTaskDurationPlaceholder}\n onChange={(e) => {\n const v = e.target.value;\n if (v === '') {\n update({ maxTaskDurationMinutes: undefined });\n return;\n }\n const num = Number.parseInt(v, 10);\n if (Number.isNaN(num)) {\n return;\n }\n update({ maxTaskDurationMinutes: Math.min(240, Math.max(1, num)) });\n }}\n />\n </AgentDefaultsField>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.maxRequestsPerTurn} description={x.maxRequestsPerTurnDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={10}\n max={200}\n value={form.maxRequestsPerTurn}\n onChange={(e) => update({ maxRequestsPerTurn: Number.parseInt(e.target.value, 10) || 50 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.maxToolFailuresPerTurn} description={x.maxToolFailuresPerTurnDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={20}\n value={form.maxToolFailuresPerTurn}\n onChange={(e) => update({ maxToolFailuresPerTurn: Number.parseInt(e.target.value, 10) || 3 })}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.maxToolIterations} description={a.desc.maxToolIterations}>\n <input\n type=\"number\"\n className={inputClassName()}\n value={form.maxToolIterations}\n min={1}\n onChange={(e) => update({ maxToolIterations: Number.parseInt(e.target.value, 10) || 0 })}\n />\n </AgentDefaultsField>\n </div>\n </div>\n </SettingsFormSection>\n <p className=\"text-xs text-fg-muted\">\n <Link to={pathForTab('settingsGoals')} className=\"font-medium text-accent-fg hover:underline\">\n {x.goalsCheckLink}\n </Link>\n <span className=\"mt-1 block\">{x.goalsCheckLinkHint}</span>\n </p>\n </div>\n );\n}\n","import { Brain, Search, Sparkles } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model/model-selector';\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\n\nimport { AgentDefaultsAdvancedDetails } from '../agent-defaults-advanced-details';\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsMemoryPanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Brain} title={x.cardMemoryTitle} subtitle={x.cardMemorySubtitle} />\n <div className=\"flex flex-col gap-5\">\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.memoryEnabled} description={x.memoryEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.enabled}\n onChange={(e) => update({ memory: { ...form.memory, enabled: e.target.checked } })}\n />\n <span>{x.memoryEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.useEnhancedSystem} description={x.useEnhancedSystemDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.useEnhancedSystem}\n onChange={(e) =>\n update({ memory: { ...form.memory, useEnhancedSystem: e.target.checked } })\n }\n />\n <span>{x.useEnhancedSystemOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.userProfileEnabled} description={x.userProfileEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.memory.userProfileEnabled}\n onChange={(e) =>\n update({ memory: { ...form.memory, userProfileEnabled: e.target.checked } })\n }\n />\n <span>{x.userProfileEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.memoryProvider} description={x.memoryProviderDesc}>\n <select\n className={selectClassName()}\n value={form.memory.provider}\n onChange={(e) =>\n update({\n memory: {\n ...form.memory,\n provider: e.target.value as AgentDefaultsState['memory']['provider'],\n },\n })\n }\n >\n <option value=\"\">{x.memoryProviderUnset}</option>\n <option value=\"none\">none</option>\n <option value=\"stub\">stub</option>\n </select>\n </AgentDefaultsField>\n </div>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.injectionFrequency} description={x.injectionFrequencyDesc}>\n <select\n className={selectClassName()}\n value={form.memory.injectionFrequency}\n onChange={(e) =>\n update({\n memory: {\n ...form.memory,\n injectionFrequency: e.target.value as AgentDefaultsState['memory']['injectionFrequency'],\n },\n })\n }\n >\n <option value=\"\">{x.injectionFrequencyUnset}</option>\n <option value=\"every-turn\">{x.injectionEveryTurn}</option>\n <option value=\"first-turn\">{x.injectionFirstTurn}</option>\n </select>\n </AgentDefaultsField>\n <AgentDefaultsField label={x.memoryCharLimit} description={x.memoryCharLimitDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.memoryCharLimit ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n memoryCharLimit: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.userCharLimit} description={x.userCharLimitDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.userCharLimit ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n userCharLimit: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.contextCadence} description={x.contextCadenceDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.contextCadence ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n contextCadence: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.dialecticCadence} description={x.dialecticCadenceDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n value={form.memory.dialecticCadence ?? ''}\n placeholder=\"—\"\n onChange={(e) => {\n const v = e.target.value;\n update({\n memory: {\n ...form.memory,\n dialecticCadence: v === '' ? undefined : Number.parseInt(v, 10),\n },\n });\n }}\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Search} title={x.cardSessionSearchTitle} subtitle={x.cardSessionSearchSubtitle} />\n <AgentDefaultsField label={x.sessionSearchSummaryModel} description={x.sessionSearchSummaryModelDesc}>\n <ModelSelector\n value={form.sessionSearch.summaryModel}\n placeholder={chat.modelPlaceholder}\n searchPlaceholder={chat.modelSearchPlaceholder}\n noMatches={chat.modelNoMatches}\n onChange={(modelId) =>\n update({ sessionSearch: { ...form.sessionSearch, summaryModel: modelId } })\n }\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Sparkles} title={x.cardReviewTitle} subtitle={x.cardReviewSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={x.reviewEnabled} description={x.reviewEnabledDesc}>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-3.5 shrink-0 rounded border-edge\"\n checked={form.backgroundReview.enabled}\n onChange={(e) =>\n update({ backgroundReview: { ...form.backgroundReview, enabled: e.target.checked } })\n }\n />\n <span>{x.reviewEnabledOn}</span>\n </label>\n </AgentDefaultsField>\n <AgentDefaultsAdvancedDetails showLabel={x.advancedOptionsShow} hideLabel={x.advancedOptionsHide}>\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={x.memoryNudgeInterval} description={x.memoryNudgeIntervalDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.backgroundReview.memoryNudgeInterval}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n memoryNudgeInterval: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.skillNudgeInterval} description={x.skillNudgeIntervalDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={0}\n value={form.backgroundReview.skillNudgeInterval}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n skillNudgeInterval: Number.parseInt(e.target.value, 10) || 0,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxToolRounds} description={x.reviewMaxToolRoundsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={1}\n max={32}\n value={form.backgroundReview.maxToolRounds}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxToolRounds: Number.parseInt(e.target.value, 10) || 8,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxHistoryMessages} description={x.reviewMaxHistoryMessagesDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={10}\n max={200}\n value={form.backgroundReview.maxHistoryMessages}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxHistoryMessages: Number.parseInt(e.target.value, 10) || 80,\n },\n })\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={x.reviewMaxDurationMs} description={x.reviewMaxDurationMsDesc}>\n <input\n type=\"number\"\n className={inputClassName()}\n min={30}\n max={600}\n step={1}\n value={Math.round((form.backgroundReview.maxDurationMs ?? 120_000) / 1000)}\n onChange={(e) =>\n update({\n backgroundReview: {\n ...form.backgroundReview,\n maxDurationMs: (Number.parseInt(e.target.value, 10) || 120) * 1000,\n },\n })\n }\n />\n </AgentDefaultsField>\n </div>\n </AgentDefaultsAdvancedDetails>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Library } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { SkillCatalogRow } from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\nimport { messages } from '@/i18n/messages';\nimport { pathForTab } from '@/navigation';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { agentDefaultsQuickActionButtonClass } from '../defaults-field-styles';\nimport { useSkillsCatalogLoad } from '../hooks/use-agents-skills-catalog';\n\nfunction rowId(s: SkillCatalogRow): string {\n return (s.name || s.directoryId).trim();\n}\n\nfunction allowlistFromSelection(selected: Set<string>, catalogIds: string[]): string[] {\n const out: string[] = [];\n for (const id of catalogIds) {\n if (selected.has(id)) out.push(id);\n }\n const extra = [...selected].filter((id) => !catalogIds.includes(id)).sort();\n return [...out, ...extra];\n}\n\nexport function AgentDefaultsSkillsAllowlistPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const agentsTab = m.agentsSettings;\n const token = useGatewayStore((s) => s.token);\n const hasToken = Boolean(token);\n const { catalogForPick, skillsCatalogLoading } = useSkillsCatalogLoad(true, hasToken);\n\n const catalogIds = useMemo(() => catalogForPick.map(rowId), [catalogForPick]);\n\n const restrictMode = form.skillsAllowlist.length > 0;\n\n const allowSet = useMemo(\n () =>\n new Set(\n form.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n ),\n [form.skillsAllowlist],\n );\n\n const unknownAllowlistIds = useMemo(\n () => form.skillsAllowlist.filter((id) => id.trim() && !catalogIds.includes(id.trim())),\n [form.skillsAllowlist, catalogIds],\n );\n\n const syntheticUnknownRows: SkillCatalogRow[] = useMemo(\n () => unknownAllowlistIds.map((id) => ({ name: id.trim(), directoryId: id.trim() })),\n [unknownAllowlistIds],\n );\n\n const rowsToRender = useMemo(\n () => [...syntheticUnknownRows, ...catalogForPick],\n [syntheticUnknownRows, catalogForPick],\n );\n\n const setAllSkills = useCallback(() => {\n update({ skillsAllowlist: [] });\n }, [update]);\n\n const setRestrictWithAllCatalogSelected = useCallback(() => {\n update({ skillsAllowlist: [...catalogIds] });\n }, [update, catalogIds]);\n\n const toggleId = useCallback(\n (id: string, checked: boolean) => {\n const selected = new Set(\n form.skillsAllowlist.flatMap((s) => {\n const v = s.trim();\n return v ? [v] : [];\n }),\n );\n if (checked) {\n selected.add(id);\n } else {\n selected.delete(id);\n }\n if (selected.size === 0) {\n update({ skillsAllowlist: [] });\n return;\n }\n update({ skillsAllowlist: allowlistFromSelection(selected, catalogIds) });\n },\n [form.skillsAllowlist, catalogIds, update],\n );\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Library} title={x.cardSkillsTitle} subtitle={x.cardSkillsSubtitle} />\n <AgentDefaultsField label={x.skillsAllowlist} description={x.skillsAllowlistDesc}>\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n onClick={setAllSkills}\n >\n {x.skillsAllowlistModeAll}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={!restrictMode && catalogIds.length === 0}\n onClick={() => {\n if (restrictMode) {\n return;\n }\n setRestrictWithAllCatalogSelected();\n }}\n >\n {x.skillsAllowlistModeRestrict}\n </Button>\n </div>\n <Link\n to={pathForTab('skills')}\n className=\"shrink-0 text-xs font-medium text-accent-fg hover:underline\"\n >\n {agentsTab.skillsLibraryLink}\n </Link>\n </div>\n\n {!hasToken ? (\n <p className=\"text-xs text-fg-muted\">{a.needToken}</p>\n ) : skillsCatalogLoading ? (\n <p className=\"text-sm text-fg-muted\">{agentsTab.skillsCatalogLoading}</p>\n ) : rowsToRender.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{agentsTab.skillsEmptyCatalog}</p>\n ) : (\n <div\n className={cn(\n 'max-h-[min(50vh,22rem)] overflow-y-auto overscroll-contain pr-0.5',\n !restrictMode && 'opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {rowsToRender.flatMap((s) => {\n const id = rowId(s);\n if (!id) return [];\n const on = restrictMode && allowSet.has(id);\n const desc = typeof s.description === 'string' ? s.description.trim() : '';\n const descLine = desc || agentsTab.skillsNoDescription;\n const unknown = !catalogIds.includes(id);\n return [\n <li\n key={id}\n className=\"h-16 shrink-0 overflow-hidden rounded-xl border border-edge-subtle bg-surface-panel/60 px-3 dark:border-edge-subtle\"\n >\n <label className=\"flex h-full cursor-pointer items-center gap-3 text-sm\">\n <input\n type=\"checkbox\"\n className=\"shrink-0 rounded border-edge\"\n checked={on}\n disabled={!restrictMode}\n onChange={() => toggleId(id, !on)}\n aria-label={id}\n />\n <div className=\"min-w-0 flex-1 overflow-hidden\">\n <div className=\"truncate font-mono text-xs font-medium text-fg\" title={id}>\n {id}\n {unknown ? (\n <span className=\"ml-1.5 font-sans text-[10px] font-normal text-fg-muted\">\n ({x.skillsAllowlistNotInCatalog})\n </span>\n ) : null}\n </div>\n <p\n className={cn(\n 'mt-0.5 truncate text-xs leading-tight text-fg-muted',\n !desc && 'italic text-fg-subtle',\n )}\n title={descLine}\n >\n {descLine}\n </p>\n </div>\n </label>\n </li>,\n ];\n })}\n </ul>\n </div>\n )}\n </div>\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { ScrollText } from 'lucide-react';\n\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { cn } from '@/lib/cn';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsSystemPromptPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n const x = a.advanced;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader\n icon={ScrollText}\n title={x.cardSystemPromptTitle}\n subtitle={x.cardSystemPromptSubtitle}\n />\n <AgentDefaultsField label={x.systemPromptOverride} description={x.systemPromptOverrideDesc}>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n value={form.systemPromptOverride}\n placeholder={x.systemPromptPlaceholder}\n onChange={(e) => update({ systemPromptOverride: e.target.value })}\n />\n </AgentDefaultsField>\n </SettingsFormSection>\n </div>\n );\n}\n","import { Folder } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { DirectoryPickerPathField } from '@/features/fs/directory-picker-path-field';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport { DEFAULT_AGENT_WORKSPACE } from '@/features/settings/suggest-agent-workspace';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { agentDefaultsQuickActionButtonClass, inputClassName } from '../defaults-field-styles';\n\nexport function AgentDefaultsWorkspacePanel(props: AgentDefaultsPanelProps) {\n const { a, chat, form, update } = props;\n const workspaceTrimmed = form.workspace.trim();\n const isDefaultWorkspace = workspaceTrimmed === DEFAULT_AGENT_WORKSPACE;\n\n return (\n <div className=\"flex flex-col gap-5\">\n <SettingsFormSection>\n <SettingsFormSectionHeader icon={Folder} title={a.cardWorkspaceTitle} subtitle={a.cardWorkspaceSubtitle} />\n <div className=\"flex flex-col gap-5\">\n <AgentDefaultsField label={a.label.workspace} description={a.desc.workspace}>\n <DirectoryPickerPathField\n value={form.workspace}\n onChange={(path) => update({ workspace: path })}\n wd={chat.workingDirectory}\n placeholder={chat.workingDirectory.notSet}\n inputClassName={inputClassName()}\n trailing={\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={agentDefaultsQuickActionButtonClass}\n disabled={isDefaultWorkspace}\n title={DEFAULT_AGENT_WORKSPACE}\n onClick={() => update({ workspace: DEFAULT_AGENT_WORKSPACE })}\n >\n {a.setDefaultWorkspace}\n </Button>\n }\n />\n </AgentDefaultsField>\n <AgentDefaultsField label={a.label.mediaMaxMb} description={a.desc.mediaMaxMb}>\n <input\n type=\"number\"\n min={1}\n step={1}\n className={inputClassName()}\n value={form.mediaMaxMb ?? ''}\n placeholder=\"20\"\n onChange={(e) => {\n const v = e.target.value;\n update({ mediaMaxMb: v === '' ? undefined : Number(v) });\n }}\n />\n </AgentDefaultsField>\n </div>\n </SettingsFormSection>\n </div>\n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { SkillsMarketplaceConfigSection } from '@/features/skills/skills-marketplace-config-section';\nimport { messages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport type { AgentDefaultsPanelProps } from './agent-defaults-panel-props';\nimport { AgentDefaultsBasicsPanel } from './agent-defaults-panels/basics-panel';\nimport { AgentDefaultsCapabilitiesPanel } from './agent-defaults-panels/capabilities-panel';\nimport { AgentDefaultsContextPanel } from './agent-defaults-panels/context-panel';\nimport { AgentDefaultsExpertPanel } from './agent-defaults-panels/expert-panel';\nimport { AgentDefaultsLimitsPanel } from './agent-defaults-panels/limits-panel';\nimport { AgentDefaultsMemoryPanel } from './agent-defaults-panels/memory-panel';\nimport { AgentDefaultsSkillsAllowlistPanel } from './agent-defaults-panels/skills-allowlist-panel';\nimport { AgentDefaultsSystemPromptPanel } from './agent-defaults-panels/system-prompt-panel';\nimport { AgentDefaultsWorkspacePanel } from './agent-defaults-panels/workspace-panel';\nimport {\n AGENT_DEFAULTS_TABS,\n type AgentDefaultsTabId,\n parseAgentDefaultsTab,\n} from './agent-defaults-tabs';\nimport { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nfunction tabLabel(a: ReturnType<typeof messages>['agentSettings'], tab: AgentDefaultsTabId): string {\n return a.defaultsTabs[tab];\n}\n\nfunction tabIntro(a: ReturnType<typeof messages>['agentSettings'], tab: AgentDefaultsTabId): string {\n switch (tab) {\n case 'chat':\n return a.routeIntro.chat;\n case 'workspace':\n return a.routeIntro.workspace;\n case 'runtime':\n return a.routeIntro.runtime;\n case 'context':\n return a.routeIntro.context;\n case 'memory':\n return a.routeIntro.memory;\n case 'tools':\n return a.routeIntro.tools;\n case 'skills':\n return a.routeIntro.skills;\n case 'system-prompt':\n return a.routeIntro.systemPrompt;\n }\n}\n\nfunction AgentDefaultsTabPanel({\n tab,\n pp,\n hasToken,\n}: {\n tab: AgentDefaultsTabId;\n pp: AgentDefaultsPanelProps;\n hasToken: boolean;\n}) {\n switch (tab) {\n case 'chat':\n return <AgentDefaultsBasicsPanel {...pp} />;\n case 'workspace':\n return <AgentDefaultsWorkspacePanel {...pp} />;\n case 'runtime':\n return <AgentDefaultsLimitsPanel {...pp} />;\n case 'context':\n return <AgentDefaultsContextPanel {...pp} />;\n case 'memory':\n return <AgentDefaultsMemoryPanel {...pp} />;\n case 'tools':\n return (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsCapabilitiesPanel {...pp} />\n <AgentDefaultsExpertPanel {...pp} />\n </div>\n );\n case 'skills':\n return (\n <div className=\"flex flex-col gap-8\">\n <SkillsMarketplaceConfigSection hasToken={hasToken} />\n <AgentDefaultsSkillsAllowlistPanel {...pp} />\n </div>\n );\n case 'system-prompt':\n return <AgentDefaultsSystemPromptPanel {...pp} />;\n }\n}\n\nexport function AgentDefaultsTabbedPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n const chat = m.chat;\n const [searchParams, setSearchParams] = useSearchParams();\n\n const activeTab = parseAgentDefaultsTab(searchParams.get('tab'));\n const vm = useAgentDefaultsForm(a);\n\n const pp = useMemo(() => {\n if (!vm.form) return null;\n return { form: vm.form, update: vm.update, a, chat };\n }, [vm.form, vm.update, a, chat]);\n\n const setActiveTab = useCallback(\n (tab: AgentDefaultsTabId) => {\n setSearchParams(\n (prev) => {\n const next = new URLSearchParams(prev);\n if (tab === 'chat') next.delete('tab');\n else next.set('tab', tab);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n const intro = tabIntro(a, activeTab);\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-defaults\" intro=\"\" vm={vm} tabbed>\n <div\n className=\"flex flex-col gap-5\"\n role=\"tablist\"\n aria-label={a.defaultsTabsAria}\n onKeyDown={(e) => {\n if (e.key !== 'ArrowLeft' && e.key !== 'ArrowRight') return;\n e.preventDefault();\n const idx = AGENT_DEFAULTS_TABS.indexOf(activeTab);\n const delta = e.key === 'ArrowRight' ? 1 : -1;\n const next = AGENT_DEFAULTS_TABS[(idx + delta + AGENT_DEFAULTS_TABS.length) % AGENT_DEFAULTS_TABS.length];\n setActiveTab(next);\n }}\n >\n <div className=\"-mx-1 flex gap-1 overflow-x-auto px-1 pb-1\">\n {AGENT_DEFAULTS_TABS.map((tab) => {\n const selected = tab === activeTab;\n return (\n <button\n key={tab}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n id={`agent-defaults-tab-${tab}`}\n aria-controls={`agent-defaults-panel-${tab}`}\n className={cn(\n 'shrink-0 rounded-lg px-3 py-2 text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent',\n interaction.press,\n selected\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover hover:text-fg',\n )}\n onClick={() => setActiveTab(tab)}\n >\n {tabLabel(a, tab)}\n </button>\n );\n })}\n </div>\n\n <p className=\"text-sm leading-relaxed text-fg-muted\">{intro}</p>\n\n <div\n role=\"tabpanel\"\n id={`agent-defaults-panel-${activeTab}`}\n aria-labelledby={`agent-defaults-tab-${activeTab}`}\n className=\"min-w-0\"\n >\n {pp ? <AgentDefaultsTabPanel tab={activeTab} pp={pp} hasToken={vm.hasToken} /> : null}\n </div>\n </div>\n </AgentDefaultsRouteLayout>\n );\n}\n"],"mappings":"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"}
|