@xopcai/xopc 0.0.66 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js → agents-CmhOU0fB.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js.map → agents-CmhOU0fB.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js → apps-page-CzS9A_6L.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js.map → apps-page-CzS9A_6L.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js → channels-settings-Bn0YSztA.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js.map → channels-settings-Bn0YSztA.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js → cron-dreaming-jobs-bAYsiHdF.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js.map → cron-dreaming-jobs-bAYsiHdF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js → cron-page-CKqDtScu.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js.map → cron-page-CKqDtScu.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js → dist-CUMhnSuX.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js.map → dist-CUMhnSuX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js → extension-debug-page-BDls5xp3.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js.map → extension-debug-page-BDls5xp3.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js → extension-page-BSfv53OO.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js.map → extension-page-BSfv53OO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js → extension-settings-page-B0nkVsLi.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js.map → extension-settings-page-B0nkVsLi.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js → heartbeat-config-api-P5zdbIBw.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js.map → heartbeat-config-api-P5zdbIBw.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js → index-DAglRwh4.js} +5 -5
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js.map → index-DAglRwh4.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-DHj3Cf9B.css +1 -0
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js → logs-page-CfGDv4k7.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js.map → logs-page-CfGDv4k7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js → sessions-page-DoGE8N-O.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js.map → sessions-page-DoGE8N-O.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js +3 -0
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js.map +1 -0
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js → skills-page-ADUi69Fa.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js.map → skills-page-ADUi69Fa.js.map} +1 -1
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js → use-image-provider-credentials-C4x4dNv2.js} +2 -2
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js.map → use-image-provider-credentials-C4x4dNv2.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/cli/commands/tunnel.js +69 -8
- package/dist/src/cli/commands/tunnel.js.map +1 -1
- package/dist/src/config/schema.d.ts +2 -0
- package/dist/src/config/schema.js +2 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +2 -5
- package/dist/src/gateway/hono/lib/config-payload.js +3 -5
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +12 -10
- package/dist/src/gateway/hono/routes/tunnel.js.map +1 -1
- package/dist/src/tunnel/acme-client.d.ts +11 -0
- package/dist/src/tunnel/acme-client.js +54 -10
- package/dist/src/tunnel/acme-client.js.map +1 -1
- package/dist/src/tunnel/env.d.ts +14 -3
- package/dist/src/tunnel/env.js +34 -5
- package/dist/src/tunnel/env.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.d.ts +6 -1
- package/dist/src/tunnel/frpc-binary.js +66 -40
- package/dist/src/tunnel/frpc-binary.js.map +1 -1
- package/dist/src/tunnel/frpc-extract.d.ts +10 -0
- package/dist/src/tunnel/frpc-extract.js +129 -0
- package/dist/src/tunnel/frpc-extract.js.map +1 -0
- package/dist/src/tunnel/gateway-lifecycle.d.ts +3 -1
- package/dist/src/tunnel/gateway-lifecycle.js +6 -4
- package/dist/src/tunnel/gateway-lifecycle.js.map +1 -1
- package/dist/src/tunnel/index.d.ts +3 -1
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/tunnel/tls-server.js +5 -0
- package/dist/src/tunnel/tls-server.js.map +1 -1
- package/dist/src/tunnel/tunnel-config.js +11 -1
- package/dist/src/tunnel/tunnel-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-e2e-config.d.ts +4 -1
- package/dist/src/tunnel/tunnel-e2e-config.js +10 -3
- package/dist/src/tunnel/tunnel-e2e-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-service.d.ts +4 -0
- package/dist/src/tunnel/tunnel-service.js +66 -5
- package/dist/src/tunnel/tunnel-service.js.map +1 -1
- package/dist/src/tunnel/tunnel-types.d.ts +16 -0
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/index-B5gp15_q.css +0 -1
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js +0 -3
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-JiJR38n1.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","AgentsSettingsMessages","AgentPanel","mainNav","id","labelKey","icon","advancedNav","AgentsEditorSidebar","props","$","_c","a","panel","onPanelChange","t0","label","Icon","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","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","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","closeDialogAria","t7","t8","t9","t10","footerSaveNotApplicable","personaSaved","t11","t12","t13","save","t14","t15","t16","t17","_temp","t18","e","preventDefault","LucideIcon","Pencil","ReactNode","cn","settingsFormSectionClassName","SettingsFormSection","t0","$","_c","children","className","t1","t2","settingsSectionHeaderIconShellClass","SettingsFormSectionHeader","icon","Icon","title","subtitle","trailing","iconInteractive","iconLeading","defaultGlyph","lead","leadingInteractiveClass","showAvatarEditPencil","Boolean","t3","t4","id","onClick","ariaLabel","t5","t6","t7","t8","t9","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","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","t2","s","resolved","Popover","Upload","useCallback","useMemo","useRef","useState","Button","cn","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","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","keyPhrases","getTemplateKeyPhrases","matchCount","filter","phrase","includes","TIMEZONE_OPTIONS","const","detectBrowserTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","VIBE_PRESETS","PRONOUNS_PRESETS","CREATURE_PRESETS","Dialog","MutableRefObject","useCallback","useEffect","useRef","useState","AlertTriangle","Cog","Eye","Pencil","Sparkles","Trash2","User","X","Button","MarkdownEditor","MarkdownView","ModelSelector","GatewayAgentRow","fetchAgentProfileFileContent","saveAgentProfileFileContent","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","ChatMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_MODAL_POPOVER_Z","SETTINGS_SHELL_OVERLAY_Z","useLocaleStore","useThemeStore","AgentAvatarDisplay","AgentAvatarPicker","agentsSettingsInputClass","IdentityFields","SoulTemplateId","parseIdentityMarkdown","serializeIdentityMarkdown","detectSoulTemplate","SOUL_TEMPLATES","CREATURE_PRESETS","AgentOverviewTab","props","a","chat","selected","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","purge","hideInlineSave","saveProfileMarkdownRef","Promise","onProfileMarkdownDirtyChange","dirty","language","s","isDark","resolved","profileMarkdownLoading","setProfileMarkdownLoading","setProfileMarkdownSaving","identity","setIdentity","name","creature","emoji","avatar","soulTemplate","setSoulTemplate","soulCustomContent","setSoulCustomContent","soulEditorNonce","setSoulEditorNonce","soulPreviewMode","setSoulPreviewMode","avatarDialogOpen","setAvatarDialogOpen","initialLoadDoneRef","agentIdRef","id","current","identitySnapshotRef","soulSnapshotRef","cancelled","load","identityMd","soulMd","all","catch","parsedIdentity","JSON","stringify","n","saveProfileMarkdownFile","fileName","content","identityRef","soulContentRef","identityDirty","soulDirty","updateIdentity","patch","Partial","prev","handleSoulTemplateChange","templateId","tpl","find","t","handleSoulContentChange","locLabel","en","zh","inputClass","selectAgentHint","personaSectionIdentity","personaSectionIdentityHint","onClick","ariaLabel","avatarOpenSettingsAria","isDefault","setDefault","e","preventDefault","avatarPickerTitle","closeDialogAria","avatarRowHint","next","displayName","target","value","personaNamePlaceholder","personaEmoji","personaEmojiPlaceholder","agentDescription","agentDescriptionPlaceholder","personaCreature","some","p","map","preset","labelEn","labelZh","personaCreaturePlaceholder","editAgent","editAgentHint","modelPrimary","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","trim","modelClear","workspacePath","save","loading","personaSectionSoul","personaSectionSoulHint","personaSoulTemplate","template","personaSoulCustomEdit","personaSoulEdit","personaSoulPreview","removeFromConfig","purgeDisk","Info","UserCircle","MutableRefObject","useCallback","useEffect","useRef","useState","SettingsFormSection","SettingsFormSectionHeader","fetchAgentProfileFileContent","saveAgentProfileFileContent","cn","AgentsSettingsMessages","useLocaleStore","agentsSettingsInputClass","UserFields","parseUserMarkdown","serializeUserMarkdown","TIMEZONE_OPTIONS","PRONOUNS_PRESETS","detectBrowserTimezone","ProfileTabProps","a","agentId","saveRef","Promise","onDirtyChange","dirty","AgentProfileTab","language","s","loading","setLoading","setSaving","user","setUser","callName","pronouns","timezone","notes","showCustomPronouns","setShowCustomPronouns","showCustomTimezone","setShowCustomTimezone","customTimezone","setCustomTimezone","initialLoadDoneRef","agentIdRef","current","userSnapshotRef","saveFile","content","currentAgent","userRef","JSON","stringify","cancelled","load","userMd","catch","parsedUser","effectiveUser","detected","isKnownPronouns","some","p","value","isKnownTimezone","tz","updateUser","patch","Partial","prev","handleTimezoneChange","handleCustomTimezoneChange","handleDetectTimezone","isKnown","timezoneSelectValue","locLabel","en","zh","inputClass","personaSectionUserHint","personaSectionUser","personaCallName","e","target","personaCallNamePlaceholder","personaPronouns","personaPronounsPlaceholder","map","preset","labelEn","labelZh","personaTimezone","personaTimezoneCustom","personaTimezoneDetect","personaNotes","personaNotesPlaceholder","personaMemoryNote","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","map","s","trim","filter","Boolean","sort","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","id_0","groupsContent","hasRows","some","_temp2","qaBusy","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","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","map","_temp2","filter","Boolean","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","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","AgentPanel","CronMessages","AgentsEditorPanelContentProps","a","chat","cCron","selected","panel","data","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","purge","overviewSaveProfileMarkdownRef","Promise","profileSaveRef","setOverviewProfileMarkdownDirty","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","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","t3","listNewAgentCard","t4","AgentsListGrid","searchQuery","onOpenAgent","onChatWithAgent","t5","bb0","filtered","searchMiss","length","t6","listNoAgentsYet","t7","t8","listEmpty","title","monoId","descTrim","avatar","isDefault","defaultBadge","undefined","listChatWithAgent","map","AgentsSettingsMessages","AgentsSettingsHeader","props","$","_c","a","t0","title","t1","subtitle","t2","Dialog","UserPlus","X","FormEvent","Button","ModelSelector","AgentsSettingsMessages","ChatMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_MODAL_POPOVER_Z","SETTINGS_SHELL_OVERLAY_Z","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","closeDialogAria","t7","t8","t9","newAgentLabel","t10","t11","e_0","e","target","value","t12","t13","t14","t15","newAgentIdOptional","t16","t17","e_1","t18","t19","newAgentIdPlaceholder","newAgentIdRules","t20","t21","t22","agentDescription","t23","t24","e_2","t25","agentDescriptionPlaceholder","t26","t27","newWorkspace","t28","t29","e_3","t30","t31","t32","newModelOptional","t33","id","t34","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t35","modelClear","trim","t36","t37","t38","createModalCancel","t39","t40","create","t41","t42","t43","_temp","t44","preventDefault","PresetAgent","id","name","emoji","descriptionEn","descriptionZh","identityMd","soulMd","toolsDisable","PRESET_AGENTS_SKIPPED_KEY","PRESET_AGENTS","useMemo","useState","SkipForward","Sparkles","Button","createGatewayAgent","saveAgentProfileFileContent","updateGatewayAgent","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","i","preset","name","workspace","description","descriptionZh","descriptionEn","identityMd","soulMd","disables","toolsDisable","err","message","Error","String","toLowerCase","includes","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","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","suggestWorkspaceFromAgentName","name","t","trim","id","fetchJson","apiUrl","DreamingPhaseId","DreamingLastRunRecord","version","phase","runId","startedAt","finishedAt","durationMs","ok","reason","errorMessage","config","enabled","minScore","minRecallCount","limit","memoryPath","deep","candidatesRanked","applied","skipped","alreadyPromotedKey","rehydrateFailed","contaminated","hashDuplicate","PhaseLastRun","exists","path","raw","DreamingGatewayStatus","workspaceDir","frequency","timezone","phases","light","cron","lookbackDays","dedupeSimilarity","minUniqueQueries","recencyHalfLifeDays","maxAgeDays","rem","minPatternStrength","storePath","store","updatedAt","entryCount","promotedCount","lastPromotedAt","lock","locked","content","mtimeMs","lastRun","record","parseError","lightLastRun","remLastRun","dreamingSwrKey","fetchDreamingStatus","Promise","res","payload","Error","postDreamingAction","action","method","body","JSON","stringify","postDreamingRunNow","triggered","jobId","Boolean","DreamingPreviewItem","key","hash","snippet","startLine","endLine","score","avgScore","recallCount","recencyDecay","alreadyPromotedByKey","alreadyPromotedByHash","skippedReason","DreamingPreviewResponse","items","fetchDreamingPreview","q","Number","isFinite","encodeURIComponent","String","DreamingEvent","timestamp","scannedEntries","newSignals","deduped","candidates","patternsDiscovered","entriesAnalyzed","fetchDreamingEvents","events","Moon","Plus","Search","Button","StoredLanguage","AgentsSettingsMessages","AgentsSettingsToolbarProps","language","a","Pick","busy","sleeping","listSearchQuery","onListSearchQueryChange","value","onSleep","onAddAgent","AgentsSettingsToolbar","t0","$","_c","t1","t2","t3","t4","t5","Symbol","for","t6","t7","t8","t9","e","target","t10","listSearchPlaceholder","t11","t12","t13","addAgent","addAgentAria","t14","useEffect","useRef","useState","Dispatch","SetStateAction","useDebouncedCallback","fetchAgentProfileFileContent","fetchAgentProfileFiles","saveAgentProfileFileContent","useAsyncResource","AgentPanel","ProfileFiles","Awaited","ReturnType","useAgentProfileFiles","options","panel","selectedId","hasToken","dataAgentsLength","saveErrorMessage","setError","filesEnabled","filesResource","Promise","resolve","enabled","initial","errorData","files","data","setFiles","setData","filesLoading","loading","activeFile","setActiveFile","fileDraft","setFileDraft","fileSaving","setFileSaving","filesViewMode","setFilesViewMode","profileFileLoading","setProfileFileLoading","profileEditorNonce","setProfileEditorNonce","fileDraftRef","current","selectedIdRef","activeFileRef","overviewSaveProfileMarkdownRef","profileFileKeyRef","profileSyncedRef","saveProfileMarkdownDebounced","sid","name","key","draft","prev","agentId","map","f","missing","err","Error","message","flushProfileSaveRef","flush","cancelled","then","c","n","catch","finally","trackedViewModeKeyRef","useCallback","useEffect","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","allBindings","setAllBindings","newBindChannel","setNewBindChannel","channelsEnabled","channelsResource","enabled","initial","errorData","bindChannelStatuses","data","bindChannelsLoading","loading","trimmedBindChannel","trim","sessionsEnabled","length","sessionsResource","bindSessionChats","bindSessionsLoading","setBindSessionChats","setData","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","trackedBindChannelRef","current","agentBindings","filter","b","agentId","toLowerCase","id","prev","valid","Boolean","some","c","name","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","useEffect","useState","GatewayAgentRow","AgentPanel","useAgentsToolsSkillsLocalState","options","$","_c","panel","selected","toolEntryDisable","setToolEntryDisable","_temp","skillsPick","setSkillsPick","_temp2","skillsInherit","setSkillsInherit","t0","t1","Set","tools","entryDisable","t2","t3","inherit","skills","entry","undefined","eff","effectiveAllowlist","t4","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","FormEvent","useNavigate","useParams","useSearchParams","useSWR","useGatewayConfigSwr","createGatewayAgent","deleteGatewayAgent","fetchGatewayAgents","parseGatewayBindingsFromConfig","updateGatewayAgent","GatewayAgentRow","GatewayAgentsPayload","AGENTS_APP_LIST_PATH","agentsAppDetailPath","SETTINGS_BACK_PATH_STATE_KEY","suggestWorkspaceFromAgentName","postDreamingRunNow","DreamingPhaseId","validateAgentIdForNewAgent","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","AgentsEditorPanelContentProps","AgentsSettingsToolbar","agentListDisplayName","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","loading","setError","loadError","Error","message","displayError","selectedId","setSelectedId","showPresetSetup","setShowPresetSetup","panel","setPanel","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","createModalError","setCreateModalError","addAgentModalOpen","setAddAgentModalOpen","createWorkspaceSuggestedRef","busy","setBusy","sleeping","setSleeping","listSearchQuery","setListSearchQuery","editWorkspace","setEditWorkspace","editModel","setEditModel","editName","setEditName","editDescription","setEditDescription","profileSaveRef","Promise","overviewProfileMarkdownDirty","setOverviewProfileMarkdownDirty","profileDirty","setProfileDirty","savedFlash","setSavedFlash","agents","some","x","id","prev","defaultId","onlyMain","length","every","ag","skipped","localStorage","getItem","onPresetSetupComplete","onPresetSetupSkip","replace","get","state","t","window","setTimeout","document","getElementById","scrollIntoView","behavior","block","next","URLSearchParams","delete","clearTimeout","selected","find","profileFiles","dataAgentsLength","saveErrorMessage","saveError","toolsSkills","channels","gatewayCfgLoading","undefined","skillsCatalog","workspace","model","primary","description","trim","applyCreateWorkspaceSuggestion","current","openAddAgentModal","sleep","ms","resolve","triggerSleepSequence","phases","phase","idx","dispatchEvent","CustomEvent","detail","source","displayMs","__xopcDreamingIgnoreSseUntil","Date","now","err","agentsHeaderEnd","startExtra","main","end","onCreate","e","preventDefault","name","idRes","ok","wsInput","desc","createdAgentId","agentsPayload","revalidate","onSaveAgentEdits","descTrim","onSetDefault","agent","setDefault","performDelete","purge","onDelete","onSaveTools","toolsDisable","toolEntryDisable","sort","y","localeCompare","onClearToolsEntry","setToolEntryDisable","Set","onSaveSkills","skills","skillsInherit","skillsPick","footerSaveNotApplicable","overviewRestDirty","origName","origDesc","origWorkspace","origModel","isCurrentPanelDirty","footerSaveDisabled","showSavedFlash","handleModalFooterSave","all","overviewSaveProfileMarkdownRef","saveProfileMarkdownDebounced","flush","onAgentModalOpenChange","open","modalTitle","modalSubtitle","editorPanelProps","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","Cpu","SlidersHorizontal","Zap","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","THINKING_KEYS","const","AgentDefaultsBasicsPanel","props","$","_c","a","chat","form","update","t0","cardModelsTitle","label","model","t1","modelId","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","desc","t4","t5","cardGenerationSubtitle","cardGenerationTitle","t6","maxTokens","t7","t8","Symbol","for","t9","e","Number","parseInt","target","value","t10","t11","t12","temperature","t13","t14","t15","e_0","parseFloat","t16","t17","t18","maxToolIterations","t19","t20","t21","e_1","t22","t23","t24","t25","t26","cardBehaviorSubtitle","cardBehaviorTitle","t27","thinkingDefault","t28","t29","t30","t31","e_2","t32","thinkingLevels","map","k","t33","t34","t35","reasoningDefault","t36","t37","t38","e_3","t39","reasoning","off","t40","on","t41","stream","t42","t43","t44","verboseDefault","t45","t46","t47","e_4","t48","verbose","t49","t50","full","t51","t52","t53","t54","t55","useCallback","useEffect","useRef","useState","Globe","Plug","PlugZap","Unplug","apiFetch","apiUrl","SettingsFormSection","SettingsFormSectionHeader","MessageBundle","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","ExtensionStatusMessages","Pick","ExtensionStatus","useExtensionStatus","enabled","host","port","status","setStatus","trackedEnabledRef","current","checkStatus","params","URLSearchParams","probe","set","undefined","String","res","signal","AbortSignal","timeout","ok","data","json","running","connected","interval","setInterval","clearInterval","ExtensionStatusBadge","t0","$","_c","messages","t1","browserExtensionConnected","icon","color","label","t2","browserExtensionWaiting","t3","browserExtensionServerOff","t4","Symbol","for","t5","waiting","off","unknown","config","Icon","t6","t7","t8","t9","AgentDefaultsBrowserPanel","props","a","form","update","extensionStatus","browserBackend","browserExtensionHost","browserExtensionPort","cardBrowserSubtitle","cardBrowserTitle","e","browserEnabled","target","checked","browserEnabledOn","desc","e_0","browserHeadless","browserHeadlessOn","t10","t11","e_1","browserAllowPrivateUrls","t12","t13","browserAllowPrivateOn","t14","t15","t16","browserCommandTimeout","t17","t18","t19","t20","e_2","v","value","Number","parseInt","t21","t22","t23","t24","t25","t26","t27","e_3","t28","browserBackendLocal","t29","browserBackendCdp","t30","browserBackendCloud","t31","browserBackendExtension","t32","t33","t34","browserDialogPolicy","t35","t36","t37","e_4","t38","browserDialogPolicyMustRespond","t39","browserDialogPolicyAutoDismiss","t40","browserDialogPolicyAutoAccept","t41","t42","t43","t44","browserCloudProviderBrowserUse","browserCloudProviderBrowserbase","browserCloudProvider","e_5","t45","browserCdpUrl","e_6","t46","t47","browserDialogTimeout","t48","t49","t50","t51","e_7","v_0","t52","t53","t54","t55","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","map","_temp3","filter","disableSet","t2","t3","id","includes","_temp4","sort","_temp5","unknownDisabled","next","onDisableSetChange","groups","toolsDisableGroups","t4","key","getGroupTitle","t5","toolDescriptions","tid","getToolDescription","t6","cardToolsDisableSubtitle","cardToolsDisableTitle","t7","needToken","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t8","toolsDisableFieldLabel","toolsDisableHint","t9","x_0","y","localeCompare","s_2","s","trim","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","Layers2","Scissors","Timer","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsContextPanel","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","t21","t22","t23","cardCompactionSubtitle","cardCompactionTitle","t24","compaction","e_2","enabled","checked","t25","t26","compactionEnabledOn","t27","t28","compactionEnabled","compactionEnabledDesc","t29","compactionMode","t30","compactionModeDesc","t31","t32","e_3","mode","t33","compactionModeDefault","t34","compactionModeSafeguard","t35","t36","t37","reserveTokens","t38","reserveTokensDesc","t39","t40","e_4","t41","t42","t43","triggerThreshold","t44","triggerThresholdDesc","t45","t46","e_5","parseFloat","t47","t48","t49","minMessagesBeforeCompact","t50","minMessagesBeforeCompactDesc","t51","t52","e_6","t53","t54","t55","keepRecentMessages","t56","keepRecentMessagesDesc","t57","t58","e_7","t59","t60","t61","evictionWindow","t62","evictionWindowDesc","t63","t64","e_8","t65","t66","t67","retentionWindow","t68","retentionWindowDesc","t69","t70","e_9","t71","t72","t73","t74","t75","t76","cardPruningSubtitle","cardPruningTitle","t77","pruning","e_10","t78","t79","pruningEnabledOn","t80","t81","pruningEnabled","pruningEnabledDesc","t82","maxToolResultChars","t83","maxToolResultCharsDesc","t84","t85","e_11","t86","t87","t88","headKeepRatio","t89","headKeepRatioDesc","t90","t91","e_12","t92","t93","t94","tailKeepRatio","t95","tailKeepRatioDesc","t96","t97","e_13","t98","t99","t100","t101","t102","t103","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","Brain","Search","Sparkles","ModelSelector","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","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","injectionFrequency","t26","injectionFrequencyDesc","t27","t28","e_3","t29","injectionFrequencyUnset","t30","injectionEveryTurn","t31","injectionFirstTurn","t32","t33","t34","memoryCharLimit","t35","memoryCharLimitDesc","t36","t37","t38","e_4","v","undefined","Number","parseInt","t39","t40","t41","userCharLimit","t42","userCharLimitDesc","t43","t44","t45","e_5","v_0","t46","t47","t48","contextCadence","t49","contextCadenceDesc","t50","t51","t52","e_6","v_1","t53","t54","t55","dialecticCadence","t56","dialecticCadenceDesc","t57","t58","t59","e_7","v_2","t60","t61","t62","t63","t64","cardSessionSearchSubtitle","cardSessionSearchTitle","t65","sessionSearch","modelId","summaryModel","t66","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t67","sessionSearchSummaryModel","sessionSearchSummaryModelDesc","t68","t69","cardReviewSubtitle","cardReviewTitle","t70","backgroundReview","e_8","t71","t72","reviewEnabledOn","t73","t74","reviewEnabled","reviewEnabledDesc","t75","memoryNudgeInterval","t76","memoryNudgeIntervalDesc","t77","t78","e_9","t79","t80","t81","skillNudgeInterval","t82","skillNudgeIntervalDesc","t83","t84","e_10","t85","t86","t87","reviewMaxToolRounds","t88","reviewMaxToolRoundsDesc","t89","t90","e_11","maxToolRounds","t91","t92","t93","reviewMaxHistoryMessages","t94","reviewMaxHistoryMessagesDesc","t95","t96","e_12","maxHistoryMessages","t97","t98","t99","reviewMaxDurationMs","t100","reviewMaxDurationMsDesc","t101","t102","maxDurationMs","Math","round","t103","e_13","t104","t105","t106","t107","t108","t109","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","_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","_temp6","s_4","id_2","on","desc","description","descLine","unknown","t21","t22","t23","s_3","s_2","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","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsWorkspacePanel","props","$","_c","a","form","update","t0","cardWorkspaceSubtitle","cardWorkspaceTitle","t1","label","workspace","t2","desc","t3","Symbol","for","t4","e","target","value","t5","t6","t7","mediaMaxMb","t8","t9","t10","t11","e_0","v","undefined","Number","t12","t13","t14","t15","Cpu","ReactNode","Button","messages","SettingsSectionId","useLocaleStore","UseAgentDefaultsFormResult","AgentDefaultsRouteLayout","props","$","_c","sectionId","intro","vm","children","language","_temp","t0","m","a","agentSettings","pageTitle","settingsSections","hasToken","t1","Symbol","for","t2","t3","needToken","t4","loading","logs","form","error","fetchError","loadError","mutate","refresh","t5","sectionDesc","saved","saveOk","t6","dirty","saving","t7","discard","t8","t9","save","t10","t11","t12","t13","t14","t15","t16","s","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","browserCdpUrl","browserExtensionPort","browserExtensionHost","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","cdpUrl","ext","extension","extensionPort","port","extensionHost","host","dpRaw","dialogPolicy","dialogTimeout","dialogTimeoutSeconds","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","map","s","Boolean","modelField","imageFbs","imageModelField","imageGenFbs","imageGenPrimary","imageGenTimeoutMs","imageGenAuto","imageGenerationModelField","obj","Object","keys","n","ms","skillsClean","toolsDisableClean","paramsParsed","method","body","useCallback","useEffect","useMemo","useRef","useState","useGatewayConfigSwr","parseAgentDefaultsFromConfig","parseParamsJsonForSave","patchAgentDefaults","AgentDefaultsState","MessageBundle","useGatewayStore","UseAgentDefaultsFormResult","hasToken","loading","fetchError","form","update","patch","Partial","dirty","saving","saveOk","error","setError","e","save","Promise","discard","mutate","ReturnType","useAgentDefaultsForm","a","token","st","Boolean","setForm","baseline","setBaseline","setSaving","setSaveOk","dirtyRef","data","swrError","isLoading","parsed","payload","config","undefined","current","snapshot","structuredClone","Error","message","String","JSON","stringify","f","paramsJson","SyntaxError","advanced","paramsInvalidJson","window","setTimeout","saveError","useMemo","messages","useLocaleStore","AgentDefaultsPanelProps","AgentDefaultsBasicsPanel","AgentDefaultsBrowserPanel","AgentDefaultsCapabilitiesPanel","AgentDefaultsContextPanel","AgentDefaultsExpertPanel","AgentDefaultsMemoryPanel","AgentDefaultsSkillsAllowlistPanel","AgentDefaultsSystemPromptPanel","AgentDefaultsWorkspacePanel","AgentDefaultsRouteLayout","useAgentDefaultsForm","useAgentDefaultsPageModel","$","_c","language","_temp","t0","m","a","agentSettings","chat","vm","t1","bb0","form","t2","update","pp","s","AgentChatDefaultsPage","routeIntro","AgentWorkspaceDefaultsPage","workspace","AgentBrowserDefaultsPage","browser","AgentRuntimeDefaultsPage","runtime","AgentToolsDefaultsPage","tools","AgentSystemPromptDefaultsPage","systemPrompt"],"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/settings-form-section.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/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/lib/agent-id.ts","../../../../../web/src/features/settings/suggest-agent-workspace.ts","../../../../../web/src/features/settings/dreaming-api.ts","../../../../../web/src/features/settings/agents/agents-settings-toolbar.tsx","../../../../../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/basics-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser-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-panels/context-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/expert-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-route-layout.tsx","../../../../../web/src/features/settings/config-api.ts","../../../../../web/src/features/settings/agents/use-agent-defaults-form.ts","../../../../../web/src/features/settings/agents/agent-defaults-split-pages.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 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 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 { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\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 <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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { Pencil } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\n/**\n * Settings content sits on `bg-surface-panel`; grouped blocks use a recessed `bg-surface-base`\n * lift instead of heavy borders (design system §2.1, §4.2).\n */\nexport function settingsFormSectionClassName(): string {\n return 'rounded-2xl bg-surface-base px-4 py-5 sm:px-5';\n}\n\nexport function SettingsFormSection({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <section className={cn(settingsFormSectionClassName(), className)}>{children}</section>;\n}\n\nconst settingsSectionHeaderIconShellClass =\n 'flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover/90 text-fg-muted transition-colors dark:bg-surface-hover/70';\n\nexport function SettingsFormSectionHeader({\n icon: Icon,\n title,\n subtitle,\n trailing,\n className,\n iconInteractive,\n iconLeading,\n}: {\n icon: LucideIcon;\n title: string;\n subtitle: string;\n /** Optional content rendered at the trailing (right) edge of the header. */\n trailing?: ReactNode;\n className?: string;\n /** When set, the leading icon is a button (e.g. open a related settings dialog). */\n iconInteractive?: { onClick: () => void; ariaLabel: string; id?: string };\n /** When set, replaces the default Lucide icon in the leading slot (same size as the icon box). */\n iconLeading?: ReactNode;\n}) {\n const defaultGlyph = <Icon className=\"size-4\" strokeWidth={1.75} aria-hidden />;\n const lead = iconLeading ?? defaultGlyph;\n\n const leadingInteractiveClass = iconLeading\n ? cn(\n 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-surface-panel p-0 ring-1 ring-inset ring-edge-subtle transition-[box-shadow] hover:ring-accent/40 dark:ring-edge-subtle',\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 )\n : cn(\n settingsSectionHeaderIconShellClass,\n 'hover:text-fg',\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 );\n\n const showAvatarEditPencil = Boolean(iconInteractive && iconLeading);\n\n return (\n <div className={cn('mb-5 flex items-start gap-3', className)}>\n {iconInteractive ? (\n showAvatarEditPencil ? (\n <span className=\"relative shrink-0\">\n <button\n type=\"button\"\n id={iconInteractive.id}\n onClick={iconInteractive.onClick}\n aria-label={iconInteractive.ariaLabel}\n className={leadingInteractiveClass}\n >\n {lead}\n </button>\n <span\n className=\"pointer-events-none absolute -bottom-0.5 -right-0.5 flex size-4 items-center justify-center rounded-md border border-edge bg-surface-panel text-fg-muted shadow-sm dark:border-edge dark:bg-surface-base\"\n aria-hidden\n >\n <Pencil className=\"size-2.5\" strokeWidth={2.25} />\n </span>\n </span>\n ) : (\n <button\n type=\"button\"\n id={iconInteractive.id}\n onClick={iconInteractive.onClick}\n aria-label={iconInteractive.ariaLabel}\n className={leadingInteractiveClass}\n >\n {lead}\n </button>\n )\n ) : (\n <div\n className={cn(\n iconLeading\n ? 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-surface-panel ring-1 ring-inset ring-edge-subtle dark:ring-edge-subtle'\n : settingsSectionHeaderIconShellClass,\n )}\n aria-hidden={!iconLeading}\n >\n {lead}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold text-fg\">{title}</h2>\n <p className=\"mt-0.5 text-xs text-fg-muted\">{subtitle}</p>\n </div>\n {trailing ? <div className=\"shrink-0\">{trailing}</div> : null}\n </div>\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 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 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 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 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 * 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 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 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 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=\"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 >\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 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 */\nexport function 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 keyPhrases = getTemplateKeyPhrases(template.id);\n const matchCount = keyPhrases.filter((phrase) => stripped.includes(phrase)).length;\n if (matchCount >= 2) {\n return template.id;\n }\n }\n\n return 'custom';\n}\n\nfunction getTemplateKeyPhrases(id: SoulTemplateId): string[] {\n switch (id) {\n case 'professional':\n return ['precise and efficient', \"Value the user's time\", 'actionable answers'];\n case 'casual':\n return ['good friend', 'corporate drone', 'a little playful'];\n case 'geeky':\n return ['Precision over politeness', 'Go deep', 'slightly nerdy'];\n default:\n return [];\n }\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 VIBE_PRESETS = [\n { value: 'warm', labelEn: 'Warm', labelZh: '温暖' },\n { value: 'sharp', labelEn: 'Sharp', labelZh: '犀利' },\n { value: 'calm', labelEn: 'Calm', labelZh: '沉稳' },\n { value: 'playful', labelEn: 'Playful', labelZh: '活泼' },\n { value: 'professional', labelEn: 'Professional', labelZh: '专业' },\n { value: 'casual', labelEn: 'Casual', labelZh: '随意' },\n { value: 'witty', labelEn: 'Witty', labelZh: '机智' },\n { value: 'concise', labelEn: 'Concise', labelZh: '简洁' },\n] as const;\n\n// ---------------------------------------------------------------------------\n// Creature 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 { type MutableRefObject, useCallback, useEffect, useRef, useState } 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-selector';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_MODAL_POPOVER_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 { AgentAvatarDisplay } from '../agent-avatar-display';\nimport { AgentAvatarPicker } from '../agent-avatar-picker';\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n type IdentityFields,\n type SoulTemplateId,\n parseIdentityMarkdown,\n serializeIdentityMarkdown,\n detectSoulTemplate,\n SOUL_TEMPLATES,\n CREATURE_PRESETS,\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 /** Parent writes a save callback for IDENTITY/SOUL Markdown into this ref (modal footer). */\n saveProfileMarkdownRef?: MutableRefObject<(() => Promise<void>) | null>;\n /** Called when IDENTITY/SOUL editor dirty state changes. */\n onProfileMarkdownDirtyChange?: (dirty: boolean) => void;\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 saveProfileMarkdownRef,\n onProfileMarkdownDirtyChange,\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n // ---- Profile Markdown (IDENTITY / SOUL) ----\n const [profileMarkdownLoading, setProfileMarkdownLoading] = useState(true);\n const [, setProfileMarkdownSaving] = useState(false);\n\n const [identity, setIdentity] = useState<IdentityFields>({\n name: '',\n creature: '',\n emoji: '',\n avatar: '',\n });\n const [soulTemplate, setSoulTemplate] = useState<SoulTemplateId>('professional');\n const [soulCustomContent, setSoulCustomContent] = useState('');\n const [soulEditorNonce, setSoulEditorNonce] = useState(0);\n const [soulPreviewMode, setSoulPreviewMode] = useState(false);\n const [avatarDialogOpen, setAvatarDialogOpen] = useState(false);\n\n const initialLoadDoneRef = useRef(false);\n const agentIdRef = useRef(selected?.id ?? '');\n agentIdRef.current = selected?.id ?? '';\n\n // Snapshots for dirty tracking (set after load, reset after save)\n const identitySnapshotRef = useRef('');\n const soulSnapshotRef = useRef('');\n\n // ---- Load IDENTITY.md + SOUL.md ----\n useEffect(() => {\n if (!selected) return;\n let cancelled = false;\n initialLoadDoneRef.current = false;\n setProfileMarkdownLoading(true);\n\n const load = async () => {\n try {\n const [identityMd, soulMd] = await Promise.all([\n fetchAgentProfileFileContent(selected.id, 'IDENTITY.md').catch(() => ''),\n fetchAgentProfileFileContent(selected.id, 'SOUL.md').catch(() => ''),\n ]);\n if (cancelled) return;\n const parsedIdentity = parseIdentityMarkdown(identityMd);\n setIdentity(parsedIdentity);\n identitySnapshotRef.current = JSON.stringify(parsedIdentity);\n setSoulTemplate(detectSoulTemplate(soulMd));\n setSoulCustomContent(soulMd);\n soulSnapshotRef.current = soulMd;\n setSoulEditorNonce((n) => n + 1);\n } finally {\n if (!cancelled) {\n setProfileMarkdownLoading(false);\n initialLoadDoneRef.current = true;\n }\n }\n };\n void load();\n return () => {\n cancelled = true;\n };\n }, [selected?.id]);\n\n // ---- Save helpers (manual save only, triggered by footer button) ----\n const saveProfileMarkdownFile = useCallback(async (fileName: string, content: string) => {\n setProfileMarkdownSaving(true);\n try {\n await saveAgentProfileFileContent(agentIdRef.current, fileName, content);\n } finally {\n setProfileMarkdownSaving(false);\n }\n }, []);\n\n // Refs to hold latest state for the save callback\n const identityRef = useRef(identity);\n identityRef.current = identity;\n const soulContentRef = useRef(soulCustomContent);\n soulContentRef.current = soulCustomContent;\n\n // Expose save function to parent for the footer save button\n useEffect(() => {\n if (!saveProfileMarkdownRef) return;\n saveProfileMarkdownRef.current = async () => {\n await Promise.all([\n saveProfileMarkdownFile('IDENTITY.md', serializeIdentityMarkdown(identityRef.current)),\n saveProfileMarkdownFile('SOUL.md', soulContentRef.current),\n ]);\n // Reset snapshots after successful save\n identitySnapshotRef.current = JSON.stringify(identityRef.current);\n soulSnapshotRef.current = soulContentRef.current;\n // Manually notify parent since state didn't change (only snapshot did)\n onProfileMarkdownDirtyChange?.(false);\n };\n return () => {\n saveProfileMarkdownRef.current = null;\n };\n }, [saveProfileMarkdownRef, saveProfileMarkdownFile, onProfileMarkdownDirtyChange]);\n\n // Notify parent when profile markdown dirty state changes\n useEffect(() => {\n if (!onProfileMarkdownDirtyChange) return;\n const identityDirty = JSON.stringify(identity) !== identitySnapshotRef.current;\n const soulDirty = soulCustomContent !== soulSnapshotRef.current;\n onProfileMarkdownDirtyChange(identityDirty || soulDirty);\n }, [identity, soulCustomContent, onProfileMarkdownDirtyChange]);\n\n const updateIdentity = useCallback((patch: Partial<IdentityFields>) => {\n setIdentity((prev) => ({ ...prev, ...patch }));\n }, []);\n\n const handleSoulTemplateChange = useCallback((templateId: SoulTemplateId) => {\n setSoulTemplate(templateId);\n if (templateId !== 'custom') {\n const tpl = SOUL_TEMPLATES.find((t) => t.id === templateId);\n if (tpl?.content) {\n setSoulCustomContent(tpl.content);\n setSoulEditorNonce((n) => n + 1);\n }\n }\n }, []);\n\n const handleSoulContentChange = useCallback((content: string) => {\n setSoulCustomContent(content);\n setSoulTemplate('custom');\n }, []);\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 {/* ===== 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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 {/* Name — single unified field */}\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 {/* Emoji */}\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 {/* Description */}\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 {/* Creature type — dropdown */}\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 popoverContentClassName={SETTINGS_SHELL_MODAL_POPOVER_Z}\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 <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.workspacePath}</span>\n <input\n className={cn(inputClass, 'font-mono text-xs')}\n value={editWorkspace}\n onChange={(e) => setEditWorkspace(e.target.value)}\n />\n </label>\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 {/* Soul template */}\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 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=\"inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg\"\n title={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n aria-label={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n onClick={() => setSoulPreviewMode((v) => !v)}\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 { type MutableRefObject, useCallback, useEffect, useRef, useState } 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 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\n// ---------------------------------------------------------------------------\n// Component — About You (USER.md)\n// ---------------------------------------------------------------------------\n\nexport function AgentProfileTab({ a, agentId, saveRef, onDirtyChange }: ProfileTabProps) {\n const language = useLocaleStore((s) => s.language);\n\n const [loading, setLoading] = useState(true);\n const [, setSaving] = useState(false);\n\n const [user, setUser] = useState<UserFields>({\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n });\n\n const [showCustomPronouns, setShowCustomPronouns] = useState(false);\n const [showCustomTimezone, setShowCustomTimezone] = useState(false);\n const [customTimezone, setCustomTimezone] = useState('');\n\n const initialLoadDoneRef = useRef(false);\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n\n // Snapshot for dirty tracking (set after load, reset after save)\n const userSnapshotRef = useRef('');\n\n // ---- Save helper (manual save only, triggered by footer button) ----\n const saveFile = useCallback(async (content: string) => {\n const currentAgent = agentIdRef.current;\n setSaving(true);\n try {\n await saveAgentProfileFileContent(currentAgent, 'USER.md', content);\n } finally {\n setSaving(false);\n }\n }, []);\n\n // Ref to hold latest user state for the save callback\n const userRef = useRef(user);\n userRef.current = user;\n\n // Expose save function to parent for the footer save button\n useEffect(() => {\n if (!saveRef) return;\n saveRef.current = async () => {\n await saveFile(serializeUserMarkdown(userRef.current));\n userSnapshotRef.current = JSON.stringify(userRef.current);\n // Manually notify parent since state didn't change (only snapshot did)\n onDirtyChange?.(false);\n };\n return () => {\n saveRef.current = null;\n };\n }, [saveRef, saveFile, onDirtyChange]);\n\n // Notify parent when dirty state changes.\n // Lifting `user` state into the parent would be a much larger refactor (the dirty\n // check needs the snapshot ref and the form is co-located here), so this effect\n // remains the bridge for the dirty signal until that refactor lands.\n useEffect(() => {\n if (!onDirtyChange) return;\n onDirtyChange(JSON.stringify(user) !== userSnapshotRef.current);\n }, [user, onDirtyChange]);\n\n // ---- Load USER.md on mount / agentId change ----\n useEffect(() => {\n let cancelled = false;\n initialLoadDoneRef.current = false;\n setLoading(true);\n\n const load = async () => {\n try {\n const userMd = await fetchAgentProfileFileContent(agentId, 'USER.md').catch(() => '');\n if (cancelled) return;\n\n const parsedUser = parseUserMarkdown(userMd);\n\n // Auto-detect timezone if not already set (saved when user clicks \"Save\")\n let effectiveUser = parsedUser;\n if (!parsedUser.timezone) {\n const detected = detectBrowserTimezone();\n if (detected) {\n effectiveUser = { ...parsedUser, timezone: detected };\n }\n }\n\n setUser(effectiveUser);\n userSnapshotRef.current = JSON.stringify(effectiveUser);\n\n // Custom pronouns handling\n const isKnownPronouns = !effectiveUser.pronouns || PRONOUNS_PRESETS.some((p) => p.value === effectiveUser.pronouns);\n if (effectiveUser.pronouns && !isKnownPronouns) {\n setShowCustomPronouns(true);\n }\n\n // Custom timezone handling\n const isKnownTimezone = TIMEZONE_OPTIONS.some((tz) => tz.value === effectiveUser.timezone);\n if (effectiveUser.timezone && !isKnownTimezone) {\n setShowCustomTimezone(true);\n setCustomTimezone(effectiveUser.timezone);\n }\n } finally {\n if (!cancelled) {\n setLoading(false);\n initialLoadDoneRef.current = true;\n }\n }\n };\n\n void load();\n return () => {\n cancelled = true;\n };\n }, [agentId]);\n\n // ---- Field updater (local state only, saved via footer button) ----\n const updateUser = useCallback((patch: Partial<UserFields>) => {\n setUser((prev) => ({ ...prev, ...patch }));\n }, []);\n\n // ---- Timezone handling ----\n const handleTimezoneChange = useCallback(\n (value: string) => {\n if (value === '__custom__') {\n setShowCustomTimezone(true);\n return;\n }\n setShowCustomTimezone(false);\n setCustomTimezone('');\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleCustomTimezoneChange = useCallback(\n (value: string) => {\n setCustomTimezone(value);\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleDetectTimezone = useCallback(() => {\n const detected = detectBrowserTimezone();\n if (detected) {\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === detected);\n if (isKnown) {\n setShowCustomTimezone(false);\n setCustomTimezone('');\n } else {\n setShowCustomTimezone(true);\n setCustomTimezone(detected);\n }\n updateUser({ timezone: detected });\n }\n }, [updateUser]);\n\n // ---- Effective timezone for select ----\n const timezoneSelectValue = (() => {\n if (showCustomTimezone) return '__custom__';\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === user.timezone);\n return isKnown ? user.timezone : '__custom__';\n })();\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n if (loading) {\n return <p className=\"text-sm text-fg-muted\">{a.loading}</p>;\n }\n\n const inputClass = agentsSettingsInputClass();\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 setShowCustomPronouns(true);\n return;\n }\n setShowCustomPronouns(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=\"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 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","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 [...ids].map((s) => s.trim()).filter(Boolean).sort((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].sort((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 () => new Set(selected.tools.defaultsDisable.map((s) => String(s).trim()).filter(Boolean)),\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 { 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 onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n overviewSaveProfileMarkdownRef: MutableRefObject<(() => Promise<void>) | null>;\n profileSaveRef: MutableRefObject<(() => Promise<void>) | null>;\n setOverviewProfileMarkdownDirty: (v: boolean) => void;\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 onSetDefault,\n onSaveAgentEdits,\n onDelete,\n overviewSaveProfileMarkdownRef,\n profileSaveRef,\n setOverviewProfileMarkdownDirty,\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 saveProfileMarkdownRef={overviewSaveProfileMarkdownRef}\n onProfileMarkdownDirtyChange={setOverviewProfileMarkdownDirty}\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 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 )}\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 )}\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 )}\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-selector';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_MODAL_POPOVER_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\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 <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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 popoverContentClassName={SETTINGS_SHELL_MODAL_POPOVER_Z}\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 </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 saveAgentProfileFileContent,\n updateGatewayAgent,\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 for (let i = 0; i < toCreate.length; i++) {\n const preset = toCreate[i];\n setProgress({ current: i + 1, total: toCreate.length });\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 });\n\n await saveAgentProfileFileContent(preset.id, 'IDENTITY.md', preset.identityMd);\n await saveAgentProfileFileContent(preset.id, 'SOUL.md', preset.soulMd);\n\n const disables = preset.toolsDisable;\n if (disables && disables.length > 0) {\n await updateGatewayAgent(preset.id, { toolsDisable: disables });\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.toLowerCase().includes('already exists')) {\n continue;\n }\n setError(a.presetCreateFailed.replace('{{name}}', preset.name).replace('{{message}}', message));\n setCreating(false);\n return;\n }\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","/**\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/** 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 `~/.xopc/workspace/${id}`;\n}\n","import { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nexport type DreamingPhaseId = 'light' | 'deep' | 'rem';\n\n/** Gateway payload shape for memory/.dreams/last-run.json (deep sweep). */\nexport type DreamingLastRunRecord = {\n version: 2;\n phase: 'deep';\n runId: string;\n startedAt: string;\n finishedAt: string;\n durationMs: number;\n ok: boolean;\n reason: string;\n errorMessage?: string;\n config: {\n enabled: boolean;\n minScore: number;\n minRecallCount: number;\n limit: number;\n };\n memoryPath: string;\n deep: {\n candidatesRanked: number;\n applied: number;\n skipped: {\n alreadyPromotedKey: number;\n rehydrateFailed: number;\n contaminated: number;\n hashDuplicate: number;\n };\n };\n};\n\n/** Lightweight last-run payload for light / rem phases. */\nexport type PhaseLastRun =\n | { exists: false }\n | { exists: true; path: string; raw: unknown };\n\nexport type DreamingGatewayStatus = {\n workspaceDir: string;\n config: {\n enabled: boolean;\n frequency: string;\n timezone: string;\n phases: {\n light: { enabled: boolean; cron: string; lookbackDays: number; limit: number; dedupeSimilarity: number };\n deep: { enabled: boolean; cron: string; minScore: number; minRecallCount: number; minUniqueQueries: number; limit: number; recencyHalfLifeDays: number; maxAgeDays: number };\n rem: { enabled: boolean; cron: string; lookbackDays: number; limit: number; minPatternStrength: number };\n };\n deep: { minScore: number; minRecallCount: number; limit: number };\n };\n storePath: string;\n store: {\n version: number;\n updatedAt: string;\n entryCount: number;\n promotedCount: number;\n lastPromotedAt: string | null;\n };\n lock: | { locked: false } | { locked: true; path: string; content: string; mtimeMs?: number };\n lastRun:\n | { exists: false }\n | { exists: true; path: string; raw: unknown; record: DreamingLastRunRecord | null; parseError: string | null };\n lightLastRun: PhaseLastRun;\n remLastRun: PhaseLastRun;\n};\n\nexport function dreamingSwrKey(): string {\n return apiUrl('/api/dreaming');\n}\n\nexport async function fetchDreamingStatus(): Promise<DreamingGatewayStatus> {\n const res = await fetchJson<{ ok?: boolean; payload?: DreamingGatewayStatus }>(dreamingSwrKey());\n if (!res.payload) throw new Error('Missing payload');\n return res.payload;\n}\n\nexport async function postDreamingAction(action: 'reset_store' | 'clear_lock'): Promise<void> {\n await fetchJson(apiUrl('/api/dreaming/action'), { method: 'POST', body: JSON.stringify({ action }) });\n}\n\nexport async function postDreamingRunNow(phase: DreamingPhaseId = 'deep'): Promise<{ triggered: boolean; jobId: string; phase: DreamingPhaseId }> {\n const res = await fetchJson<{ ok?: boolean; payload?: { triggered?: boolean; jobId?: string; phase?: string } }>(\n apiUrl('/api/dreaming/run'),\n { method: 'POST', body: JSON.stringify({ phase }) },\n );\n const triggered = Boolean(res.payload?.triggered);\n const jobId = typeof res.payload?.jobId === 'string' ? res.payload.jobId : '';\n if (!triggered || !jobId) throw new Error('Failed to trigger');\n return { triggered, jobId, phase };\n}\n\nexport type DreamingPreviewItem = {\n key: string;\n hash: string;\n snippet: string;\n path: string;\n startLine: number;\n endLine: number;\n score: number;\n avgScore: number;\n recallCount: number;\n recencyDecay: number;\n alreadyPromotedByKey: boolean;\n alreadyPromotedByHash: boolean;\n skippedReason: string | null;\n};\n\nexport type DreamingPreviewResponse = {\n ok: boolean;\n reason: string;\n items: DreamingPreviewItem[];\n memoryPath: string;\n};\n\nexport async function fetchDreamingPreview(limit?: number): Promise<DreamingPreviewResponse> {\n const q = typeof limit === 'number' && Number.isFinite(limit) ? `?limit=${encodeURIComponent(String(limit))}` : '';\n const res = await fetchJson<{ ok?: boolean; payload?: DreamingPreviewResponse }>(apiUrl(`/api/dreaming/preview${q}`));\n if (!res.payload) throw new Error('Missing payload');\n return res.payload;\n}\n\n// ── Event audit log ────────────────────────────────────────────────────\n\nexport type DreamingEvent = {\n timestamp: string;\n phase: DreamingPhaseId;\n ok: boolean;\n reason: string;\n durationMs: number;\n // Light-specific\n scannedEntries?: number;\n newSignals?: number;\n deduped?: number;\n // Deep-specific\n candidates?: number;\n applied?: number;\n // REM-specific\n patternsDiscovered?: number;\n entriesAnalyzed?: number;\n};\n\nexport async function fetchDreamingEvents(limit = 50): Promise<DreamingEvent[]> {\n const q = `?limit=${encodeURIComponent(String(limit))}`;\n const res = await fetchJson<{ ok?: boolean; payload?: { events: DreamingEvent[] } }>(apiUrl(`/api/dreaming/events${q}`));\n return res.payload?.events ?? [];\n}\n\n","import { Moon, Plus, Search } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { StoredLanguage } from '@/lib/storage';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport type AgentsSettingsToolbarProps = {\n language: StoredLanguage;\n a: Pick<AgentsSettingsMessages, 'addAgent' | 'addAgentAria' | 'listSearchPlaceholder'>;\n busy: boolean;\n sleeping: boolean;\n listSearchQuery: string;\n onListSearchQueryChange: (value: string) => void;\n onSleep: () => void;\n onAddAgent: () => void;\n};\n\nexport function AgentsSettingsToolbar({\n language,\n a,\n busy,\n sleeping,\n listSearchQuery,\n onListSearchQueryChange,\n onSleep,\n onAddAgent,\n}: AgentsSettingsToolbarProps) {\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0 gap-2\"\n disabled={busy || sleeping}\n onClick={() => void onSleep()}\n aria-label={language === 'zh' ? '让智能体进入睡眠流程' : 'Trigger agent sleep sequence'}\n title={language === 'zh' ? '由浅入深:Light → Deep → REM' : 'Light → Deep → REM'}\n >\n <Moon className=\"size-4 shrink-0\" strokeWidth={1.75} aria-hidden />\n {language === 'zh' ? (sleeping ? '睡眠中…' : '睡眠') : sleeping ? 'Sleeping…' : 'Sleep'}\n </Button>\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 { useEffect, useRef, useState } from 'react';\nimport type { Dispatch, 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\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, setActiveFile] = useState<string | null>(null);\n const [fileDraft, setFileDraft] = useState('');\n const [fileSaving, setFileSaving] = useState(false);\n const [filesViewMode, setFilesViewMode] = useState<'edit' | 'preview'>('edit');\n const [profileFileLoading, setProfileFileLoading] = useState(false);\n const [profileEditorNonce, setProfileEditorNonce] = useState(0);\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\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 const flushProfileSaveRef = useRef(saveProfileMarkdownDebounced.flush);\n flushProfileSaveRef.current = saveProfileMarkdownDebounced.flush;\n\n useEffect(() => {\n return () => {\n flushProfileSaveRef.current();\n };\n }, []);\n\n useEffect(() => {\n if (!activeFile || !selectedId || !hasToken) {\n return;\n }\n let cancelled = false;\n saveProfileMarkdownDebounced.flush();\n setProfileFileLoading(true);\n void fetchAgentProfileFileContent(selectedId, activeFile)\n .then((c) => {\n if (cancelled) {\n return;\n }\n const key = `${selectedId}:${activeFile}`;\n profileFileKeyRef.current = key;\n profileSyncedRef.current = c;\n setFileDraft(c);\n setProfileEditorNonce((n) => n + 1);\n })\n .catch(() => {\n if (!cancelled) {\n const key = `${selectedId}:${activeFile}`;\n profileFileKeyRef.current = key;\n profileSyncedRef.current = '';\n setFileDraft('');\n setProfileEditorNonce((n) => n + 1);\n }\n })\n .finally(() => {\n if (!cancelled) {\n setProfileFileLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [activeFile, selectedId, hasToken, saveProfileMarkdownDebounced]);\n\n useEffect(() => {\n if (!activeFile || !selectedId || profileFileLoading) {\n return;\n }\n saveProfileMarkdownDebounced();\n }, [fileDraft, activeFile, selectedId, profileFileLoading, saveProfileMarkdownDebounced]);\n\n useEffect(() => {\n if (panel !== 'files') {\n return;\n }\n return () => {\n saveProfileMarkdownDebounced.flush();\n };\n }, [panel, saveProfileMarkdownDebounced]);\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 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, useEffect, 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 [allBindings, setAllBindings] = useState<GatewayConfigBinding[]>([]);\n const [newBindChannel, setNewBindChannel] = useState('');\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 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 // Reset session selection when the channel changes (separate from the fetch effect).\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 useEffect(() => {\n if (panel !== 'channels' || !hasToken) {\n return;\n }\n setAllBindings(bindingsFromConfig);\n }, [panel, hasToken, bindingsFromConfig]);\n\n useEffect(() => {\n if (bindChannelsLoading || panel !== 'channels' || bindChannelStatuses.length === 0) {\n return;\n }\n setNewBindChannel((prev) => {\n const valid = Boolean(prev) && bindChannelStatuses.some((c) => c.name === prev);\n if (valid) {\n return prev;\n }\n return bindChannelStatuses[0].name;\n });\n }, [bindChannelsLoading, panel, bindChannelStatuses]);\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 setAllBindings(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 setAllBindings(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 { useEffect, useState } from 'react';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\n\nimport type { AgentPanel } from '../utils';\n\nexport function useAgentsToolsSkillsLocalState(options: {\n panel: AgentPanel;\n selected: GatewayAgentRow | null;\n}) {\n const { panel, selected } = options;\n\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 useEffect(() => {\n if (!selected || panel !== 'tools') {\n return;\n }\n setToolEntryDisable(new Set(selected.tools.entryDisable));\n }, [panel, selected]);\n\n useEffect(() => {\n if (!selected || panel !== 'skills') {\n return;\n }\n const inherit = selected.skills.entry === undefined;\n setSkillsInherit(inherit);\n if (inherit) {\n const eff = selected.skills.effectiveAllowlist;\n setSkillsPick(new Set(eff ?? []));\n } else {\n setSkillsPick(new Set(selected.skills.entry ?? []));\n }\n }, [panel, selected]);\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 { 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 { postDreamingRunNow, type DreamingPhaseId } from '@/features/settings/dreaming-api';\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 { 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 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 [showPresetSetup, setShowPresetSetup] = useState(false);\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 [sleeping, setSleeping] = 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 [overviewProfileMarkdownDirty, setOverviewProfileMarkdownDirty] = useState(false);\n const [profileDirty, setProfileDirty] = useState(false);\n const [savedFlash, setSavedFlash] = useState(false);\n\n useEffect(() => {\n if (!data) {\n return;\n }\n if (routeAgentId && data.agents.some((x) => x.id === routeAgentId)) {\n setSelectedId(routeAgentId);\n return;\n }\n setSelectedId((prev) => {\n if (prev && data.agents.some((x) => x.id === prev)) {\n return prev;\n }\n return data.defaultId;\n });\n }, [data, routeAgentId]);\n\n useEffect(() => {\n if (!data || loading) {\n return;\n }\n const onlyMain =\n data.agents.length <= 1 && data.agents.every((ag) => ag.id === data.defaultId);\n const skipped = localStorage.getItem(PRESET_AGENTS_SKIPPED_KEY) === 'true';\n setShowPresetSetup(onlyMain && !skipped);\n }, [data, loading]);\n\n const onPresetSetupComplete = useCallback(() => {\n setShowPresetSetup(false);\n void mutateAgents();\n }, [mutateAgents]);\n\n const onPresetSetupSkip = useCallback(() => {\n setShowPresetSetup(false);\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-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 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 useEffect(() => {\n if (!selected) {\n setEditWorkspace('');\n setEditModel('');\n setEditName('');\n setEditDescription('');\n return;\n }\n setEditWorkspace(selected.workspace);\n setEditModel(selected.model?.primary ?? '');\n setEditName(agentListDisplayName(selected, messages(language).agentsSettings));\n setEditDescription(selected.description?.trim() ?? '');\n }, [selected?.id, language]);\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 sleep = useCallback((ms: number) => new Promise<void>((resolve) => window.setTimeout(resolve, ms)), []);\n\n const triggerSleepSequence = useCallback(async () => {\n if (sleeping || busy) return;\n setSleeping(true);\n setError(null);\n\n const phases: DreamingPhaseId[] = ['light', 'deep', 'rem'];\n try {\n void (async () => {\n for (const phase of phases) {\n try {\n await postDreamingRunNow(phase);\n } catch {\n // Animation-first: errors are intentionally not surfaced here.\n }\n }\n })();\n\n for (let idx = 0; idx < phases.length; idx++) {\n const phase = phases[idx];\n window.dispatchEvent(new CustomEvent('dreaming-phase-start', { detail: { phase, source: 'ui' } }));\n\n const displayMs = phase === 'light' ? 7000 : phase === 'deep' ? 9000 : 8000;\n await sleep(displayMs);\n\n if (idx === phases.length - 1) {\n (window as unknown as { __xopcDreamingIgnoreSseUntil?: number }).__xopcDreamingIgnoreSseUntil =\n Date.now() + 60_000;\n window.dispatchEvent(new CustomEvent('dreaming-phase-end', { detail: { phase, source: 'ui' } }));\n }\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setSleeping(false);\n }\n }, [a.saveError, busy, sleeping, sleep]);\n\n const agentsHeaderEnd = useMemo(\n () => (\n <AgentsSettingsToolbar\n language={language}\n a={a}\n busy={busy}\n sleeping={sleeping}\n listSearchQuery={listSearchQuery}\n onListSearchQueryChange={setListSearchQuery}\n onSleep={() => void triggerSleepSequence()}\n onAddAgent={() => openAddAgentModal()}\n />\n ),\n [a, busy, language, listSearchQuery, openAddAgentModal, sleeping, triggerSleepSequence],\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 = [...toolsSkills.toolEntryDisable].sort((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].sort((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 || overviewProfileMarkdownDirty;\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 profileFiles.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 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: profileFiles.overviewSaveProfileMarkdownRef,\n profileSaveRef,\n setOverviewProfileMarkdownDirty,\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 { Cpu, SlidersHorizontal, Zap } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/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';\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 <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 className=\"sm:col-span-2\">\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\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 { useCallback, useEffect, useRef, useState } from 'react';\nimport { Globe, Plug, PlugZap, Unplug } from 'lucide-react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { MessageBundle } from '@/i18n/messages';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\ntype ExtensionStatusMessages = Pick<\n MessageBundle['agentSettings'],\n 'browserExtensionConnected' | 'browserExtensionWaiting' | 'browserExtensionServerOff'\n>;\n\ntype ExtensionStatus = 'connected' | 'waiting' | 'off' | 'unknown';\n\n/** Poll gateway for extension connection status via `/api/browser/extension-status`. */\nfunction useExtensionStatus(\n enabled: boolean,\n host: string,\n port: number | undefined,\n): ExtensionStatus {\n const [status, setStatus] = useState<ExtensionStatus>(enabled ? 'unknown' : 'off');\n const trackedEnabledRef = useRef(enabled);\n if (trackedEnabledRef.current !== enabled) {\n trackedEnabledRef.current = enabled;\n setStatus(enabled ? 'unknown' : 'off');\n }\n\n const checkStatus = useCallback(async () => {\n if (!enabled) {\n setStatus('off');\n return;\n }\n const params = new URLSearchParams({ probe: '1' });\n if (host) params.set('host', host);\n if (port !== undefined) params.set('port', String(port));\n try {\n const res = await apiFetch(apiUrl(`/api/browser/extension-status?${params}`), {\n signal: AbortSignal.timeout(3000),\n });\n if (!res.ok) {\n setStatus('off');\n return;\n }\n const data = (await res.json()) as { running?: boolean; connected?: boolean };\n if (data.running) {\n setStatus(data.connected ? 'connected' : 'waiting');\n } else {\n setStatus('off');\n }\n } catch {\n setStatus('off');\n }\n }, [enabled, host, port]);\n\n useEffect(() => {\n void checkStatus();\n const interval = setInterval(() => void checkStatus(), 5000);\n return () => clearInterval(interval);\n }, [checkStatus]);\n\n return status;\n}\n\nfunction ExtensionStatusBadge({ status, messages }: { status: ExtensionStatus; messages: ExtensionStatusMessages }) {\n const config: Record<ExtensionStatus, { icon: typeof Plug; color: string; label: string }> = {\n connected: { icon: PlugZap, color: 'text-green-500', label: messages.browserExtensionConnected },\n waiting: { icon: Plug, color: 'text-amber-500', label: messages.browserExtensionWaiting },\n off: { icon: Unplug, color: 'text-fg-muted', label: messages.browserExtensionServerOff },\n unknown: { icon: Unplug, color: 'text-fg-muted', label: '…' },\n };\n const { icon: Icon, color, label } = config[status];\n return (\n <div className={`flex items-center gap-1.5 text-xs ${color}`}>\n <Icon className=\"size-3.5\" />\n <span>{label}</span>\n </div>\n );\n}\n\nexport function AgentDefaultsBrowserPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n\n const extensionStatus = useExtensionStatus(\n form.browserBackend === 'extension',\n form.browserExtensionHost,\n form.browserExtensionPort,\n );\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 <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 selector */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserBackend} description={a.desc.browserBackend}>\n <select\n className={selectClassName()}\n value={form.browserBackend}\n onChange={(e) =>\n update({ browserBackend: e.target.value as 'local' | 'cdp' | 'cloud' | 'extension' })\n }\n >\n <option value=\"local\">{a.browserBackendLocal}</option>\n <option value=\"cdp\">{a.browserBackendCdp}</option>\n <option value=\"cloud\">{a.browserBackendCloud}</option>\n <option value=\"extension\">{a.browserBackendExtension}</option>\n </select>\n </AgentDefaultsField>\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\n | 'must_respond'\n | 'auto_dismiss'\n | '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 </div>\n\n {/* Conditional fields based on backend mode */}\n {form.browserBackend === 'cloud' && (\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserCloudProvider} description={a.desc.browserCloudProvider}>\n <select\n className={selectClassName()}\n value={form.browserCloudProvider}\n onChange={(e) =>\n update({\n browserCloudProvider: e.target.value as 'local' | 'browserbase' | 'browser-use',\n })\n }\n >\n <option value=\"browserbase\">{a.browserCloudProviderBrowserbase}</option>\n <option value=\"browser-use\">{a.browserCloudProviderBrowserUse}</option>\n </select>\n </AgentDefaultsField>\n </div>\n )}\n\n {form.browserBackend === 'cdp' && (\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserCdpUrl} description={a.desc.browserCdpUrl}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.browserCdpUrl}\n placeholder=\"ws://localhost:9222\"\n onChange={(e) => update({ browserCdpUrl: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n )}\n\n {form.browserBackend === 'extension' && (\n <div className=\"flex items-center gap-3 rounded-md border border-edge bg-surface-raised px-4 py-3\">\n <ExtensionStatusBadge status={extensionStatus} messages={a} />\n <span className=\"text-xs text-fg-muted\">ws://127.0.0.1:19820/browser-ext</span>\n </div>\n )}\n\n <div className=\"grid gap-5 sm:grid-cols-2\">\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","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 () => new Set(form.toolsDisable.map((s) => s.trim()).filter(Boolean)),\n [form.toolsDisable],\n );\n\n const unknownDisabled = useMemo(\n () =>\n form.toolsDisable\n .map((s) => s.trim())\n .filter(Boolean)\n .filter((id) => !builtinToolIds.includes(id))\n .sort((x, y) => x.localeCompare(y)),\n [form.toolsDisable, builtinToolIds],\n );\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-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 { Layers2, Scissors, Timer } from 'lucide-react';\n\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\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\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={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 </div>\n </div>\n </SettingsFormSection>\n\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 <div className=\"grid gap-5 sm:grid-cols-2\">\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 <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 </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 <div className=\"grid gap-5 sm:grid-cols-2\">\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 <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 </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 { Brain, Search, Sparkles } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model-selector';\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\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\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 <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 </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 <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 </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 () => new Set(form.skillsAllowlist.map((s) => s.trim()).filter(Boolean)),\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(form.skillsAllowlist.map((s) => s.trim()).filter(Boolean));\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 && 'pointer-events-none opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {rowsToRender.filter((s) => rowId(s)).map((s) => {\n const id = rowId(s);\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 { 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';\n\nexport function AgentDefaultsWorkspacePanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\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 <input\n type=\"text\"\n className={inputClassName()}\n value={form.workspace}\n onChange={(e) => update({ workspace: e.target.value })}\n autoComplete=\"off\"\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 { 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}) {\n const { sectionId, intro, vm, children } = 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 <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 </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 { 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 /** Playwright `browser_*` tools (`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, or extension. */\n browserBackend: 'local' | 'cdp' | 'cloud' | 'extension';\n /** Cloud browser backend: local, browserbase, or browser-use. */\n browserCloudProvider: 'local' | 'browserbase' | 'browser-use';\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 /** 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 | 'browserCdpUrl'\n | 'browserExtensionPort'\n | 'browserExtensionHost'\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: 'local',\n browserCloudProvider: 'local',\n browserCdpUrl: '',\n browserExtensionPort: undefined,\n browserExtensionHost: '127.0.0.1',\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 === 'cdp' || backendRaw === 'cloud' || backendRaw === 'extension' ? backendRaw : 'local';\n\n const cpRaw = b.cloudProvider;\n const cloudProvider: AgentDefaultsState['browserCloudProvider'] =\n cpRaw === 'browserbase' || cpRaw === 'browser-use' ? cpRaw : 'local';\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 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 browserCdpUrl: cdpUrl,\n browserExtensionPort: extensionPort,\n browserExtensionHost: extensionHost,\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.map((s) => s.trim()).filter(Boolean);\n const modelField =\n fallbacks.length > 0 ? { primary: state.model, fallbacks } : state.model;\n\n const imageFbs = state.imageModelFallbacks.map((s) => s.trim()).filter(Boolean);\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.map((s) => s.trim()).filter(Boolean);\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.map((s) => s.trim()).filter(Boolean);\n const toolsDisableClean = state.toolsDisable.map((s) => s.trim()).filter(Boolean);\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 === 'local' ? null : state.browserBackend,\n cloudProvider: state.browserCloudProvider === 'local' ? null : state.browserCloudProvider,\n cdpUrl: state.browserCdpUrl.trim() || null,\n extension: state.browserBackend === 'extension'\n ? {\n port: state.browserExtensionPort ?? null,\n host: state.browserExtensionHost === '127.0.0.1' ? null : state.browserExtensionHost,\n }\n : 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","import { useCallback, useEffect, useMemo, 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 { 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\nexport function useAgentDefaultsForm(a: MessageBundle['agentSettings']): UseAgentDefaultsFormResult {\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [form, setForm] = useState<AgentDefaultsState | null>(null);\n const [baseline, setBaseline] = useState<AgentDefaultsState | null>(null);\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\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 useEffect(() => {\n if (!hasToken) {\n setForm(null);\n setBaseline(null);\n dirtyRef.current = false;\n return;\n }\n if (parsed === null) return;\n if (!dirtyRef.current) {\n const snapshot = structuredClone(parsed);\n setForm(snapshot);\n setBaseline(structuredClone(snapshot));\n }\n }, [hasToken, parsed]);\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 setForm((f) => (f ? { ...f, ...patch } : null));\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 setBaseline(structuredClone(form));\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\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 }, [form, saving, a.saveError, a.advanced]);\n\n const discard = useCallback(() => {\n if (!baseline) return;\n dirtyRef.current = false;\n setForm(structuredClone(baseline));\n setError(null);\n setSaveOk(false);\n }, [baseline]);\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 type { AgentDefaultsPanelProps } from './agent-defaults-panel-props';\nimport { AgentDefaultsBasicsPanel } from './agent-defaults-panels/basics-panel';\nimport { AgentDefaultsBrowserPanel } from './agent-defaults-panels/browser-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 { 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 { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nfunction useAgentDefaultsPageModel(): {\n vm: ReturnType<typeof useAgentDefaultsForm>;\n pp: AgentDefaultsPanelProps | null;\n a: ReturnType<typeof messages>['agentSettings'];\n} {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n const chat = m.chat;\n const vm = useAgentDefaultsForm(a);\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 return { vm, pp, a };\n}\n\nexport function AgentChatDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-chat\" intro={a.routeIntro.chat} vm={vm}>\n {pp ? <AgentDefaultsBasicsPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentWorkspaceDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-workspace\" intro={a.routeIntro.workspace} vm={vm}>\n {pp ? <AgentDefaultsWorkspacePanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentBrowserDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-browser\" intro={a.routeIntro.browser} vm={vm}>\n {pp ? <AgentDefaultsBrowserPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentRuntimeDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-runtime\" intro={a.routeIntro.runtime} vm={vm}>\n {pp ? (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsContextPanel {...pp} />\n <AgentDefaultsMemoryPanel {...pp} />\n </div>\n ) : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentToolsDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-tools\" intro={a.routeIntro.tools} vm={vm}>\n {pp ? (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsCapabilitiesPanel {...pp} />\n <AgentDefaultsSkillsAllowlistPanel {...pp} />\n <AgentDefaultsExpertPanel {...pp} />\n </div>\n ) : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentSystemPromptDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-system-prompt\" intro={a.routeIntro.systemPrompt} vm={vm}>\n {pp ? <AgentDefaultsSystemPromptPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents-CmhOU0fB.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","AgentsSettingsMessages","AgentPanel","mainNav","id","labelKey","icon","advancedNav","AgentsEditorSidebar","props","$","_c","a","panel","onPanelChange","t0","label","Icon","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","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","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","closeDialogAria","t7","t8","t9","t10","footerSaveNotApplicable","personaSaved","t11","t12","t13","save","t14","t15","t16","t17","_temp","t18","e","preventDefault","LucideIcon","Pencil","ReactNode","cn","settingsFormSectionClassName","SettingsFormSection","t0","$","_c","children","className","t1","t2","settingsSectionHeaderIconShellClass","SettingsFormSectionHeader","icon","Icon","title","subtitle","trailing","iconInteractive","iconLeading","defaultGlyph","lead","leadingInteractiveClass","showAvatarEditPencil","Boolean","t3","t4","id","onClick","ariaLabel","t5","t6","t7","t8","t9","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","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","t2","s","resolved","Popover","Upload","useCallback","useMemo","useRef","useState","Button","cn","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","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","keyPhrases","getTemplateKeyPhrases","matchCount","filter","phrase","includes","TIMEZONE_OPTIONS","const","detectBrowserTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","VIBE_PRESETS","PRONOUNS_PRESETS","CREATURE_PRESETS","Dialog","MutableRefObject","useCallback","useEffect","useRef","useState","AlertTriangle","Cog","Eye","Pencil","Sparkles","Trash2","User","X","Button","MarkdownEditor","MarkdownView","ModelSelector","GatewayAgentRow","fetchAgentProfileFileContent","saveAgentProfileFileContent","SettingsFormSection","SettingsFormSectionHeader","AgentsSettingsMessages","ChatMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_MODAL_POPOVER_Z","SETTINGS_SHELL_OVERLAY_Z","useLocaleStore","useThemeStore","AgentAvatarDisplay","AgentAvatarPicker","agentsSettingsInputClass","IdentityFields","SoulTemplateId","parseIdentityMarkdown","serializeIdentityMarkdown","detectSoulTemplate","SOUL_TEMPLATES","CREATURE_PRESETS","AgentOverviewTab","props","a","chat","selected","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","purge","hideInlineSave","saveProfileMarkdownRef","Promise","onProfileMarkdownDirtyChange","dirty","language","s","isDark","resolved","profileMarkdownLoading","setProfileMarkdownLoading","setProfileMarkdownSaving","identity","setIdentity","name","creature","emoji","avatar","soulTemplate","setSoulTemplate","soulCustomContent","setSoulCustomContent","soulEditorNonce","setSoulEditorNonce","soulPreviewMode","setSoulPreviewMode","avatarDialogOpen","setAvatarDialogOpen","initialLoadDoneRef","agentIdRef","id","current","identitySnapshotRef","soulSnapshotRef","cancelled","load","identityMd","soulMd","all","catch","parsedIdentity","JSON","stringify","n","saveProfileMarkdownFile","fileName","content","identityRef","soulContentRef","identityDirty","soulDirty","updateIdentity","patch","Partial","prev","handleSoulTemplateChange","templateId","tpl","find","t","handleSoulContentChange","locLabel","en","zh","inputClass","selectAgentHint","personaSectionIdentity","personaSectionIdentityHint","onClick","ariaLabel","avatarOpenSettingsAria","isDefault","setDefault","e","preventDefault","avatarPickerTitle","closeDialogAria","avatarRowHint","next","displayName","target","value","personaNamePlaceholder","personaEmoji","personaEmojiPlaceholder","agentDescription","agentDescriptionPlaceholder","personaCreature","some","p","map","preset","labelEn","labelZh","personaCreaturePlaceholder","editAgent","editAgentHint","modelPrimary","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","trim","modelClear","workspacePath","save","loading","personaSectionSoul","personaSectionSoulHint","personaSoulTemplate","template","personaSoulCustomEdit","personaSoulEdit","personaSoulPreview","removeFromConfig","purgeDisk","Info","UserCircle","MutableRefObject","useCallback","useEffect","useRef","useState","SettingsFormSection","SettingsFormSectionHeader","fetchAgentProfileFileContent","saveAgentProfileFileContent","cn","AgentsSettingsMessages","useLocaleStore","agentsSettingsInputClass","UserFields","parseUserMarkdown","serializeUserMarkdown","TIMEZONE_OPTIONS","PRONOUNS_PRESETS","detectBrowserTimezone","ProfileTabProps","a","agentId","saveRef","Promise","onDirtyChange","dirty","AgentProfileTab","language","s","loading","setLoading","setSaving","user","setUser","callName","pronouns","timezone","notes","showCustomPronouns","setShowCustomPronouns","showCustomTimezone","setShowCustomTimezone","customTimezone","setCustomTimezone","initialLoadDoneRef","agentIdRef","current","userSnapshotRef","saveFile","content","currentAgent","userRef","JSON","stringify","cancelled","load","userMd","catch","parsedUser","effectiveUser","detected","isKnownPronouns","some","p","value","isKnownTimezone","tz","updateUser","patch","Partial","prev","handleTimezoneChange","handleCustomTimezoneChange","handleDetectTimezone","isKnown","timezoneSelectValue","locLabel","en","zh","inputClass","personaSectionUserHint","personaSectionUser","personaCallName","e","target","personaCallNamePlaceholder","personaPronouns","personaPronounsPlaceholder","map","preset","labelEn","labelZh","personaTimezone","personaTimezoneCustom","personaTimezoneDetect","personaNotes","personaNotesPlaceholder","personaMemoryNote","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","map","s","trim","filter","Boolean","sort","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","id_0","groupsContent","hasRows","some","_temp2","qaBusy","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","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","map","_temp2","filter","Boolean","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","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","AgentPanel","CronMessages","AgentsEditorPanelContentProps","a","chat","cCron","selected","panel","data","busy","editName","setEditName","v","editDescription","setEditDescription","editWorkspace","setEditWorkspace","editModel","setEditModel","onSetDefault","onSaveAgentEdits","onDelete","purge","overviewSaveProfileMarkdownRef","Promise","profileSaveRef","setOverviewProfileMarkdownDirty","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","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","t3","listNewAgentCard","t4","AgentsListGrid","searchQuery","onOpenAgent","onChatWithAgent","t5","bb0","filtered","searchMiss","length","t6","listNoAgentsYet","t7","t8","listEmpty","title","monoId","descTrim","avatar","isDefault","defaultBadge","undefined","listChatWithAgent","map","AgentsSettingsMessages","AgentsSettingsHeader","props","$","_c","a","t0","title","t1","subtitle","t2","Dialog","UserPlus","X","FormEvent","Button","ModelSelector","AgentsSettingsMessages","ChatMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_MODAL_POPOVER_Z","SETTINGS_SHELL_OVERLAY_Z","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","closeDialogAria","t7","t8","t9","newAgentLabel","t10","t11","e_0","e","target","value","t12","t13","t14","t15","newAgentIdOptional","t16","t17","e_1","t18","t19","newAgentIdPlaceholder","newAgentIdRules","t20","t21","t22","agentDescription","t23","t24","e_2","t25","agentDescriptionPlaceholder","t26","t27","newWorkspace","t28","t29","e_3","t30","t31","t32","newModelOptional","t33","id","t34","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t35","modelClear","trim","t36","t37","t38","createModalCancel","t39","t40","create","t41","t42","t43","_temp","t44","preventDefault","PresetAgent","id","name","emoji","descriptionEn","descriptionZh","identityMd","soulMd","toolsDisable","PRESET_AGENTS_SKIPPED_KEY","PRESET_AGENTS","useMemo","useState","SkipForward","Sparkles","Button","createGatewayAgent","saveAgentProfileFileContent","updateGatewayAgent","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","i","preset","name","workspace","description","descriptionZh","descriptionEn","identityMd","soulMd","disables","toolsDisable","err","message","Error","String","toLowerCase","includes","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","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","suggestWorkspaceFromAgentName","name","t","trim","id","fetchJson","apiUrl","DreamingPhaseId","DreamingLastRunRecord","version","phase","runId","startedAt","finishedAt","durationMs","ok","reason","errorMessage","config","enabled","minScore","minRecallCount","limit","memoryPath","deep","candidatesRanked","applied","skipped","alreadyPromotedKey","rehydrateFailed","contaminated","hashDuplicate","PhaseLastRun","exists","path","raw","DreamingGatewayStatus","workspaceDir","frequency","timezone","phases","light","cron","lookbackDays","dedupeSimilarity","minUniqueQueries","recencyHalfLifeDays","maxAgeDays","rem","minPatternStrength","storePath","store","updatedAt","entryCount","promotedCount","lastPromotedAt","lock","locked","content","mtimeMs","lastRun","record","parseError","lightLastRun","remLastRun","dreamingSwrKey","fetchDreamingStatus","Promise","res","payload","Error","postDreamingAction","action","method","body","JSON","stringify","postDreamingRunNow","triggered","jobId","Boolean","DreamingPreviewItem","key","hash","snippet","startLine","endLine","score","avgScore","recallCount","recencyDecay","alreadyPromotedByKey","alreadyPromotedByHash","skippedReason","DreamingPreviewResponse","items","fetchDreamingPreview","q","Number","isFinite","encodeURIComponent","String","DreamingEvent","timestamp","scannedEntries","newSignals","deduped","candidates","patternsDiscovered","entriesAnalyzed","fetchDreamingEvents","events","Moon","Plus","Search","Button","StoredLanguage","AgentsSettingsMessages","AgentsSettingsToolbarProps","language","a","Pick","busy","sleeping","listSearchQuery","onListSearchQueryChange","value","onSleep","onAddAgent","AgentsSettingsToolbar","t0","$","_c","t1","t2","t3","t4","t5","Symbol","for","t6","t7","t8","t9","e","target","t10","listSearchPlaceholder","t11","t12","t13","addAgent","addAgentAria","t14","useEffect","useRef","useState","Dispatch","SetStateAction","useDebouncedCallback","fetchAgentProfileFileContent","fetchAgentProfileFiles","saveAgentProfileFileContent","useAsyncResource","AgentPanel","ProfileFiles","Awaited","ReturnType","useAgentProfileFiles","options","panel","selectedId","hasToken","dataAgentsLength","saveErrorMessage","setError","filesEnabled","filesResource","Promise","resolve","enabled","initial","errorData","files","data","setFiles","setData","filesLoading","loading","activeFile","setActiveFile","fileDraft","setFileDraft","fileSaving","setFileSaving","filesViewMode","setFilesViewMode","profileFileLoading","setProfileFileLoading","profileEditorNonce","setProfileEditorNonce","fileDraftRef","current","selectedIdRef","activeFileRef","overviewSaveProfileMarkdownRef","profileFileKeyRef","profileSyncedRef","saveProfileMarkdownDebounced","sid","name","key","draft","prev","agentId","map","f","missing","err","Error","message","flushProfileSaveRef","flush","cancelled","then","c","n","catch","finally","trackedViewModeKeyRef","useCallback","useEffect","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","allBindings","setAllBindings","newBindChannel","setNewBindChannel","channelsEnabled","channelsResource","enabled","initial","errorData","bindChannelStatuses","data","bindChannelsLoading","loading","trimmedBindChannel","trim","sessionsEnabled","length","sessionsResource","bindSessionChats","bindSessionsLoading","setBindSessionChats","setData","newBindSessionIdx","setNewBindSessionIdx","newBindCustomPeer","setNewBindCustomPeer","trackedBindChannelRef","current","agentBindings","filter","b","agentId","toLowerCase","id","prev","valid","Boolean","some","c","name","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","useEffect","useState","GatewayAgentRow","AgentPanel","useAgentsToolsSkillsLocalState","options","$","_c","panel","selected","toolEntryDisable","setToolEntryDisable","_temp","skillsPick","setSkillsPick","_temp2","skillsInherit","setSkillsInherit","t0","t1","Set","tools","entryDisable","t2","t3","inherit","skills","entry","undefined","eff","effectiveAllowlist","t4","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","FormEvent","useNavigate","useParams","useSearchParams","useSWR","useGatewayConfigSwr","createGatewayAgent","deleteGatewayAgent","fetchGatewayAgents","parseGatewayBindingsFromConfig","updateGatewayAgent","GatewayAgentRow","GatewayAgentsPayload","AGENTS_APP_LIST_PATH","agentsAppDetailPath","SETTINGS_BACK_PATH_STATE_KEY","suggestWorkspaceFromAgentName","postDreamingRunNow","DreamingPhaseId","validateAgentIdForNewAgent","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","AgentsEditorPanelContentProps","AgentsSettingsToolbar","agentListDisplayName","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","loading","setError","loadError","Error","message","displayError","selectedId","setSelectedId","showPresetSetup","setShowPresetSetup","panel","setPanel","createDisplayName","setCreateDisplayName","createAgentId","setCreateAgentId","createDescription","setCreateDescription","createWorkspace","setCreateWorkspace","createModel","setCreateModel","createModalError","setCreateModalError","addAgentModalOpen","setAddAgentModalOpen","createWorkspaceSuggestedRef","busy","setBusy","sleeping","setSleeping","listSearchQuery","setListSearchQuery","editWorkspace","setEditWorkspace","editModel","setEditModel","editName","setEditName","editDescription","setEditDescription","profileSaveRef","Promise","overviewProfileMarkdownDirty","setOverviewProfileMarkdownDirty","profileDirty","setProfileDirty","savedFlash","setSavedFlash","agents","some","x","id","prev","defaultId","onlyMain","length","every","ag","skipped","localStorage","getItem","onPresetSetupComplete","onPresetSetupSkip","replace","get","state","t","window","setTimeout","document","getElementById","scrollIntoView","behavior","block","next","URLSearchParams","delete","clearTimeout","selected","find","profileFiles","dataAgentsLength","saveErrorMessage","saveError","toolsSkills","channels","gatewayCfgLoading","undefined","skillsCatalog","workspace","model","primary","description","trim","applyCreateWorkspaceSuggestion","current","openAddAgentModal","sleep","ms","resolve","triggerSleepSequence","phases","phase","idx","dispatchEvent","CustomEvent","detail","source","displayMs","__xopcDreamingIgnoreSseUntil","Date","now","err","agentsHeaderEnd","startExtra","main","end","onCreate","e","preventDefault","name","idRes","ok","wsInput","desc","createdAgentId","agentsPayload","revalidate","onSaveAgentEdits","descTrim","onSetDefault","agent","setDefault","performDelete","purge","onDelete","onSaveTools","toolsDisable","toolEntryDisable","sort","y","localeCompare","onClearToolsEntry","setToolEntryDisable","Set","onSaveSkills","skills","skillsInherit","skillsPick","footerSaveNotApplicable","overviewRestDirty","origName","origDesc","origWorkspace","origModel","isCurrentPanelDirty","footerSaveDisabled","showSavedFlash","handleModalFooterSave","all","overviewSaveProfileMarkdownRef","saveProfileMarkdownDebounced","flush","onAgentModalOpenChange","open","modalTitle","modalSubtitle","editorPanelProps","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","Cpu","SlidersHorizontal","Zap","ModelSelector","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","THINKING_KEYS","const","AgentDefaultsBasicsPanel","props","$","_c","a","chat","form","update","t0","cardModelsTitle","label","model","t1","modelId","t2","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t3","desc","t4","t5","cardGenerationSubtitle","cardGenerationTitle","t6","maxTokens","t7","t8","Symbol","for","t9","e","Number","parseInt","target","value","t10","t11","t12","temperature","t13","t14","t15","e_0","parseFloat","t16","t17","t18","maxToolIterations","t19","t20","t21","e_1","t22","t23","t24","t25","t26","cardBehaviorSubtitle","cardBehaviorTitle","t27","thinkingDefault","t28","t29","t30","t31","e_2","t32","thinkingLevels","map","k","t33","t34","t35","reasoningDefault","t36","t37","t38","e_3","t39","reasoning","off","t40","on","t41","stream","t42","t43","t44","verboseDefault","t45","t46","t47","e_4","t48","verbose","t49","t50","full","t51","t52","t53","t54","t55","useCallback","useEffect","useRef","useState","Globe","Plug","PlugZap","Unplug","apiFetch","apiUrl","SettingsFormSection","SettingsFormSectionHeader","MessageBundle","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","ExtensionStatusMessages","Pick","ExtensionStatus","useExtensionStatus","enabled","host","port","status","setStatus","trackedEnabledRef","current","checkStatus","params","URLSearchParams","probe","set","undefined","String","res","signal","AbortSignal","timeout","ok","data","json","running","connected","interval","setInterval","clearInterval","ExtensionStatusBadge","t0","$","_c","messages","t1","browserExtensionConnected","icon","color","label","t2","browserExtensionWaiting","t3","browserExtensionServerOff","t4","Symbol","for","t5","waiting","off","unknown","config","Icon","t6","t7","t8","t9","AgentDefaultsBrowserPanel","props","a","form","update","extensionStatus","browserBackend","browserExtensionHost","browserExtensionPort","cardBrowserSubtitle","cardBrowserTitle","e","browserEnabled","target","checked","browserEnabledOn","desc","e_0","browserHeadless","browserHeadlessOn","t10","t11","e_1","browserAllowPrivateUrls","t12","t13","browserAllowPrivateOn","t14","t15","t16","browserCommandTimeout","t17","t18","t19","t20","e_2","v","value","Number","parseInt","t21","t22","t23","t24","t25","t26","t27","e_3","t28","browserBackendLocal","t29","browserBackendCdp","t30","browserBackendCloud","t31","browserBackendExtension","t32","t33","t34","browserDialogPolicy","t35","t36","t37","e_4","t38","browserDialogPolicyMustRespond","t39","browserDialogPolicyAutoDismiss","t40","browserDialogPolicyAutoAccept","t41","t42","t43","t44","browserCloudProviderBrowserUse","browserCloudProviderBrowserbase","browserCloudProvider","e_5","t45","browserCdpUrl","e_6","t46","t47","browserDialogTimeout","t48","t49","t50","t51","e_7","v_0","t52","t53","t54","t55","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","map","_temp3","filter","disableSet","t2","t3","id","includes","_temp4","sort","_temp5","unknownDisabled","next","onDisableSetChange","groups","toolsDisableGroups","t4","key","getGroupTitle","t5","toolDescriptions","tid","getToolDescription","t6","cardToolsDisableSubtitle","cardToolsDisableTitle","t7","needToken","toolsLockedByDefaults","toolsDisableEmptyBuiltin","toolsDisableLoadingBuiltin","toolsDisableNotInBuiltin","toolsDisableQuickActionsLabel","toolsDisableQuickDisableAll","toolsDisableQuickEnableAll","toolsDisableQuickHighRiskOff","toolsDisableQuickNoOutbound","toolsDisableQuickReadOnlyWorkspace","loadingBuiltin","emptyBuiltin","quickActionsLabel","quickEnableAll","quickDisableAll","quickReadOnlyWorkspace","quickHighRiskOff","quickNoOutbound","notInBuiltin","lockedByDefaults","t8","toolsDisableFieldLabel","toolsDisableHint","t9","x_0","y","localeCompare","s_2","s","trim","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","Layers2","Scissors","Timer","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","selectClassName","AgentDefaultsContextPanel","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","t21","t22","t23","cardCompactionSubtitle","cardCompactionTitle","t24","compaction","e_2","enabled","checked","t25","t26","compactionEnabledOn","t27","t28","compactionEnabled","compactionEnabledDesc","t29","compactionMode","t30","compactionModeDesc","t31","t32","e_3","mode","t33","compactionModeDefault","t34","compactionModeSafeguard","t35","t36","t37","reserveTokens","t38","reserveTokensDesc","t39","t40","e_4","t41","t42","t43","triggerThreshold","t44","triggerThresholdDesc","t45","t46","e_5","parseFloat","t47","t48","t49","minMessagesBeforeCompact","t50","minMessagesBeforeCompactDesc","t51","t52","e_6","t53","t54","t55","keepRecentMessages","t56","keepRecentMessagesDesc","t57","t58","e_7","t59","t60","t61","evictionWindow","t62","evictionWindowDesc","t63","t64","e_8","t65","t66","t67","retentionWindow","t68","retentionWindowDesc","t69","t70","e_9","t71","t72","t73","t74","t75","t76","cardPruningSubtitle","cardPruningTitle","t77","pruning","e_10","t78","t79","pruningEnabledOn","t80","t81","pruningEnabled","pruningEnabledDesc","t82","maxToolResultChars","t83","maxToolResultCharsDesc","t84","t85","e_11","t86","t87","t88","headKeepRatio","t89","headKeepRatioDesc","t90","t91","e_12","t92","t93","t94","tailKeepRatio","t95","tailKeepRatioDesc","t96","t97","e_13","t98","t99","t100","t101","t102","t103","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","Brain","Search","Sparkles","ModelSelector","AgentDefaultsState","SettingsFormSection","SettingsFormSectionHeader","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","injectionFrequency","t26","injectionFrequencyDesc","t27","t28","e_3","t29","injectionFrequencyUnset","t30","injectionEveryTurn","t31","injectionFirstTurn","t32","t33","t34","memoryCharLimit","t35","memoryCharLimitDesc","t36","t37","t38","e_4","v","undefined","Number","parseInt","t39","t40","t41","userCharLimit","t42","userCharLimitDesc","t43","t44","t45","e_5","v_0","t46","t47","t48","contextCadence","t49","contextCadenceDesc","t50","t51","t52","e_6","v_1","t53","t54","t55","dialecticCadence","t56","dialecticCadenceDesc","t57","t58","t59","e_7","v_2","t60","t61","t62","t63","t64","cardSessionSearchSubtitle","cardSessionSearchTitle","t65","sessionSearch","modelId","summaryModel","t66","modelNoMatches","modelPlaceholder","modelSearchPlaceholder","t67","sessionSearchSummaryModel","sessionSearchSummaryModelDesc","t68","t69","cardReviewSubtitle","cardReviewTitle","t70","backgroundReview","e_8","t71","t72","reviewEnabledOn","t73","t74","reviewEnabled","reviewEnabledDesc","t75","memoryNudgeInterval","t76","memoryNudgeIntervalDesc","t77","t78","e_9","t79","t80","t81","skillNudgeInterval","t82","skillNudgeIntervalDesc","t83","t84","e_10","t85","t86","t87","reviewMaxToolRounds","t88","reviewMaxToolRoundsDesc","t89","t90","e_11","maxToolRounds","t91","t92","t93","reviewMaxHistoryMessages","t94","reviewMaxHistoryMessagesDesc","t95","t96","e_12","maxHistoryMessages","t97","t98","t99","reviewMaxDurationMs","t100","reviewMaxDurationMsDesc","t101","t102","maxDurationMs","Math","round","t103","e_13","t104","t105","t106","t107","t108","t109","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","_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","_temp6","s_4","id_2","on","desc","description","descLine","unknown","t21","t22","t23","s_3","s_2","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","SettingsFormSection","SettingsFormSectionHeader","AgentDefaultsField","AgentDefaultsPanelProps","inputClassName","AgentDefaultsWorkspacePanel","props","$","_c","a","form","update","t0","cardWorkspaceSubtitle","cardWorkspaceTitle","t1","label","workspace","t2","desc","t3","Symbol","for","t4","e","target","value","t5","t6","t7","mediaMaxMb","t8","t9","t10","t11","e_0","v","undefined","Number","t12","t13","t14","t15","Cpu","ReactNode","Button","messages","SettingsSectionId","useLocaleStore","UseAgentDefaultsFormResult","AgentDefaultsRouteLayout","props","$","_c","sectionId","intro","vm","children","language","_temp","t0","m","a","agentSettings","pageTitle","settingsSections","hasToken","t1","Symbol","for","t2","t3","needToken","t4","loading","logs","form","error","fetchError","loadError","mutate","refresh","t5","sectionDesc","saved","saveOk","t6","dirty","saving","t7","discard","t8","t9","save","t10","t11","t12","t13","t14","t15","t16","s","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","browserCdpUrl","browserExtensionPort","browserExtensionHost","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","cdpUrl","ext","extension","extensionPort","port","extensionHost","host","dpRaw","dialogPolicy","dialogTimeout","dialogTimeoutSeconds","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","map","s","Boolean","modelField","imageFbs","imageModelField","imageGenFbs","imageGenPrimary","imageGenTimeoutMs","imageGenAuto","imageGenerationModelField","obj","Object","keys","n","ms","skillsClean","toolsDisableClean","paramsParsed","method","body","useCallback","useEffect","useMemo","useRef","useState","useGatewayConfigSwr","parseAgentDefaultsFromConfig","parseParamsJsonForSave","patchAgentDefaults","AgentDefaultsState","MessageBundle","useGatewayStore","UseAgentDefaultsFormResult","hasToken","loading","fetchError","form","update","patch","Partial","dirty","saving","saveOk","error","setError","e","save","Promise","discard","mutate","ReturnType","useAgentDefaultsForm","a","token","st","Boolean","setForm","baseline","setBaseline","setSaving","setSaveOk","dirtyRef","data","swrError","isLoading","parsed","payload","config","undefined","current","snapshot","structuredClone","Error","message","String","JSON","stringify","f","paramsJson","SyntaxError","advanced","paramsInvalidJson","window","setTimeout","saveError","useMemo","messages","useLocaleStore","AgentDefaultsPanelProps","AgentDefaultsBasicsPanel","AgentDefaultsBrowserPanel","AgentDefaultsCapabilitiesPanel","AgentDefaultsContextPanel","AgentDefaultsExpertPanel","AgentDefaultsMemoryPanel","AgentDefaultsSkillsAllowlistPanel","AgentDefaultsSystemPromptPanel","AgentDefaultsWorkspacePanel","AgentDefaultsRouteLayout","useAgentDefaultsForm","useAgentDefaultsPageModel","$","_c","language","_temp","t0","m","a","agentSettings","chat","vm","t1","bb0","form","t2","update","pp","s","AgentChatDefaultsPage","routeIntro","AgentWorkspaceDefaultsPage","workspace","AgentBrowserDefaultsPage","browser","AgentRuntimeDefaultsPage","runtime","AgentToolsDefaultsPage","tools","AgentSystemPromptDefaultsPage","systemPrompt"],"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/settings-form-section.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/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/lib/agent-id.ts","../../../../../web/src/features/settings/suggest-agent-workspace.ts","../../../../../web/src/features/settings/dreaming-api.ts","../../../../../web/src/features/settings/agents/agents-settings-toolbar.tsx","../../../../../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/basics-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/browser-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-panels/context-panel.tsx","../../../../../web/src/features/settings/agents/agent-defaults-panels/expert-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-route-layout.tsx","../../../../../web/src/features/settings/config-api.ts","../../../../../web/src/features/settings/agents/use-agent-defaults-form.ts","../../../../../web/src/features/settings/agents/agent-defaults-split-pages.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 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 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 { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\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 <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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport { Pencil } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@/lib/cn';\n\n/**\n * Settings content sits on `bg-surface-panel`; grouped blocks use a recessed `bg-surface-base`\n * lift instead of heavy borders (design system §2.1, §4.2).\n */\nexport function settingsFormSectionClassName(): string {\n return 'rounded-2xl bg-surface-base px-4 py-5 sm:px-5';\n}\n\nexport function SettingsFormSection({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return <section className={cn(settingsFormSectionClassName(), className)}>{children}</section>;\n}\n\nconst settingsSectionHeaderIconShellClass =\n 'flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover/90 text-fg-muted transition-colors dark:bg-surface-hover/70';\n\nexport function SettingsFormSectionHeader({\n icon: Icon,\n title,\n subtitle,\n trailing,\n className,\n iconInteractive,\n iconLeading,\n}: {\n icon: LucideIcon;\n title: string;\n subtitle: string;\n /** Optional content rendered at the trailing (right) edge of the header. */\n trailing?: ReactNode;\n className?: string;\n /** When set, the leading icon is a button (e.g. open a related settings dialog). */\n iconInteractive?: { onClick: () => void; ariaLabel: string; id?: string };\n /** When set, replaces the default Lucide icon in the leading slot (same size as the icon box). */\n iconLeading?: ReactNode;\n}) {\n const defaultGlyph = <Icon className=\"size-4\" strokeWidth={1.75} aria-hidden />;\n const lead = iconLeading ?? defaultGlyph;\n\n const leadingInteractiveClass = iconLeading\n ? cn(\n 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-surface-panel p-0 ring-1 ring-inset ring-edge-subtle transition-[box-shadow] hover:ring-accent/40 dark:ring-edge-subtle',\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 )\n : cn(\n settingsSectionHeaderIconShellClass,\n 'hover:text-fg',\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 );\n\n const showAvatarEditPencil = Boolean(iconInteractive && iconLeading);\n\n return (\n <div className={cn('mb-5 flex items-start gap-3', className)}>\n {iconInteractive ? (\n showAvatarEditPencil ? (\n <span className=\"relative shrink-0\">\n <button\n type=\"button\"\n id={iconInteractive.id}\n onClick={iconInteractive.onClick}\n aria-label={iconInteractive.ariaLabel}\n className={leadingInteractiveClass}\n >\n {lead}\n </button>\n <span\n className=\"pointer-events-none absolute -bottom-0.5 -right-0.5 flex size-4 items-center justify-center rounded-md border border-edge bg-surface-panel text-fg-muted shadow-sm dark:border-edge dark:bg-surface-base\"\n aria-hidden\n >\n <Pencil className=\"size-2.5\" strokeWidth={2.25} />\n </span>\n </span>\n ) : (\n <button\n type=\"button\"\n id={iconInteractive.id}\n onClick={iconInteractive.onClick}\n aria-label={iconInteractive.ariaLabel}\n className={leadingInteractiveClass}\n >\n {lead}\n </button>\n )\n ) : (\n <div\n className={cn(\n iconLeading\n ? 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-surface-panel ring-1 ring-inset ring-edge-subtle dark:ring-edge-subtle'\n : settingsSectionHeaderIconShellClass,\n )}\n aria-hidden={!iconLeading}\n >\n {lead}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"text-sm font-semibold text-fg\">{title}</h2>\n <p className=\"mt-0.5 text-xs text-fg-muted\">{subtitle}</p>\n </div>\n {trailing ? <div className=\"shrink-0\">{trailing}</div> : null}\n </div>\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 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 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 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 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 * 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 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 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 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=\"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 >\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 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 */\nexport function 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 keyPhrases = getTemplateKeyPhrases(template.id);\n const matchCount = keyPhrases.filter((phrase) => stripped.includes(phrase)).length;\n if (matchCount >= 2) {\n return template.id;\n }\n }\n\n return 'custom';\n}\n\nfunction getTemplateKeyPhrases(id: SoulTemplateId): string[] {\n switch (id) {\n case 'professional':\n return ['precise and efficient', \"Value the user's time\", 'actionable answers'];\n case 'casual':\n return ['good friend', 'corporate drone', 'a little playful'];\n case 'geeky':\n return ['Precision over politeness', 'Go deep', 'slightly nerdy'];\n default:\n return [];\n }\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 VIBE_PRESETS = [\n { value: 'warm', labelEn: 'Warm', labelZh: '温暖' },\n { value: 'sharp', labelEn: 'Sharp', labelZh: '犀利' },\n { value: 'calm', labelEn: 'Calm', labelZh: '沉稳' },\n { value: 'playful', labelEn: 'Playful', labelZh: '活泼' },\n { value: 'professional', labelEn: 'Professional', labelZh: '专业' },\n { value: 'casual', labelEn: 'Casual', labelZh: '随意' },\n { value: 'witty', labelEn: 'Witty', labelZh: '机智' },\n { value: 'concise', labelEn: 'Concise', labelZh: '简洁' },\n] as const;\n\n// ---------------------------------------------------------------------------\n// Creature 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 { type MutableRefObject, useCallback, useEffect, useRef, useState } 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-selector';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\nimport {\n fetchAgentProfileFileContent,\n saveAgentProfileFileContent,\n} from '@/features/settings/agents-admin-api';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_MODAL_POPOVER_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 { AgentAvatarDisplay } from '../agent-avatar-display';\nimport { AgentAvatarPicker } from '../agent-avatar-picker';\nimport { agentsSettingsInputClass } from '../utils';\nimport {\n type IdentityFields,\n type SoulTemplateId,\n parseIdentityMarkdown,\n serializeIdentityMarkdown,\n detectSoulTemplate,\n SOUL_TEMPLATES,\n CREATURE_PRESETS,\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 /** Parent writes a save callback for IDENTITY/SOUL Markdown into this ref (modal footer). */\n saveProfileMarkdownRef?: MutableRefObject<(() => Promise<void>) | null>;\n /** Called when IDENTITY/SOUL editor dirty state changes. */\n onProfileMarkdownDirtyChange?: (dirty: boolean) => void;\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 saveProfileMarkdownRef,\n onProfileMarkdownDirtyChange,\n } = props;\n\n const language = useLocaleStore((s) => s.language);\n const isDark = useThemeStore((s) => s.resolved === 'dark');\n\n // ---- Profile Markdown (IDENTITY / SOUL) ----\n const [profileMarkdownLoading, setProfileMarkdownLoading] = useState(true);\n const [, setProfileMarkdownSaving] = useState(false);\n\n const [identity, setIdentity] = useState<IdentityFields>({\n name: '',\n creature: '',\n emoji: '',\n avatar: '',\n });\n const [soulTemplate, setSoulTemplate] = useState<SoulTemplateId>('professional');\n const [soulCustomContent, setSoulCustomContent] = useState('');\n const [soulEditorNonce, setSoulEditorNonce] = useState(0);\n const [soulPreviewMode, setSoulPreviewMode] = useState(false);\n const [avatarDialogOpen, setAvatarDialogOpen] = useState(false);\n\n const initialLoadDoneRef = useRef(false);\n const agentIdRef = useRef(selected?.id ?? '');\n agentIdRef.current = selected?.id ?? '';\n\n // Snapshots for dirty tracking (set after load, reset after save)\n const identitySnapshotRef = useRef('');\n const soulSnapshotRef = useRef('');\n\n // ---- Load IDENTITY.md + SOUL.md ----\n useEffect(() => {\n if (!selected) return;\n let cancelled = false;\n initialLoadDoneRef.current = false;\n setProfileMarkdownLoading(true);\n\n const load = async () => {\n try {\n const [identityMd, soulMd] = await Promise.all([\n fetchAgentProfileFileContent(selected.id, 'IDENTITY.md').catch(() => ''),\n fetchAgentProfileFileContent(selected.id, 'SOUL.md').catch(() => ''),\n ]);\n if (cancelled) return;\n const parsedIdentity = parseIdentityMarkdown(identityMd);\n setIdentity(parsedIdentity);\n identitySnapshotRef.current = JSON.stringify(parsedIdentity);\n setSoulTemplate(detectSoulTemplate(soulMd));\n setSoulCustomContent(soulMd);\n soulSnapshotRef.current = soulMd;\n setSoulEditorNonce((n) => n + 1);\n } finally {\n if (!cancelled) {\n setProfileMarkdownLoading(false);\n initialLoadDoneRef.current = true;\n }\n }\n };\n void load();\n return () => {\n cancelled = true;\n };\n }, [selected?.id]);\n\n // ---- Save helpers (manual save only, triggered by footer button) ----\n const saveProfileMarkdownFile = useCallback(async (fileName: string, content: string) => {\n setProfileMarkdownSaving(true);\n try {\n await saveAgentProfileFileContent(agentIdRef.current, fileName, content);\n } finally {\n setProfileMarkdownSaving(false);\n }\n }, []);\n\n // Refs to hold latest state for the save callback\n const identityRef = useRef(identity);\n identityRef.current = identity;\n const soulContentRef = useRef(soulCustomContent);\n soulContentRef.current = soulCustomContent;\n\n // Expose save function to parent for the footer save button\n useEffect(() => {\n if (!saveProfileMarkdownRef) return;\n saveProfileMarkdownRef.current = async () => {\n await Promise.all([\n saveProfileMarkdownFile('IDENTITY.md', serializeIdentityMarkdown(identityRef.current)),\n saveProfileMarkdownFile('SOUL.md', soulContentRef.current),\n ]);\n // Reset snapshots after successful save\n identitySnapshotRef.current = JSON.stringify(identityRef.current);\n soulSnapshotRef.current = soulContentRef.current;\n // Manually notify parent since state didn't change (only snapshot did)\n onProfileMarkdownDirtyChange?.(false);\n };\n return () => {\n saveProfileMarkdownRef.current = null;\n };\n }, [saveProfileMarkdownRef, saveProfileMarkdownFile, onProfileMarkdownDirtyChange]);\n\n // Notify parent when profile markdown dirty state changes\n useEffect(() => {\n if (!onProfileMarkdownDirtyChange) return;\n const identityDirty = JSON.stringify(identity) !== identitySnapshotRef.current;\n const soulDirty = soulCustomContent !== soulSnapshotRef.current;\n onProfileMarkdownDirtyChange(identityDirty || soulDirty);\n }, [identity, soulCustomContent, onProfileMarkdownDirtyChange]);\n\n const updateIdentity = useCallback((patch: Partial<IdentityFields>) => {\n setIdentity((prev) => ({ ...prev, ...patch }));\n }, []);\n\n const handleSoulTemplateChange = useCallback((templateId: SoulTemplateId) => {\n setSoulTemplate(templateId);\n if (templateId !== 'custom') {\n const tpl = SOUL_TEMPLATES.find((t) => t.id === templateId);\n if (tpl?.content) {\n setSoulCustomContent(tpl.content);\n setSoulEditorNonce((n) => n + 1);\n }\n }\n }, []);\n\n const handleSoulContentChange = useCallback((content: string) => {\n setSoulCustomContent(content);\n setSoulTemplate('custom');\n }, []);\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 {/* ===== 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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 {/* Name — single unified field */}\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 {/* Emoji */}\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 {/* Description */}\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 {/* Creature type — dropdown */}\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 popoverContentClassName={SETTINGS_SHELL_MODAL_POPOVER_Z}\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 <label className=\"flex flex-col gap-1.5 text-sm sm:col-span-2\">\n <span className=\"font-medium text-fg\">{a.workspacePath}</span>\n <input\n className={cn(inputClass, 'font-mono text-xs')}\n value={editWorkspace}\n onChange={(e) => setEditWorkspace(e.target.value)}\n />\n </label>\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 {/* Soul template */}\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 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=\"inline-flex size-9 shrink-0 items-center justify-center rounded-md text-fg-muted transition-colors hover:bg-surface-hover hover:text-fg\"\n title={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n aria-label={soulPreviewMode ? a.personaSoulEdit : a.personaSoulPreview}\n onClick={() => setSoulPreviewMode((v) => !v)}\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 { type MutableRefObject, useCallback, useEffect, useRef, useState } 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 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\n// ---------------------------------------------------------------------------\n// Component — About You (USER.md)\n// ---------------------------------------------------------------------------\n\nexport function AgentProfileTab({ a, agentId, saveRef, onDirtyChange }: ProfileTabProps) {\n const language = useLocaleStore((s) => s.language);\n\n const [loading, setLoading] = useState(true);\n const [, setSaving] = useState(false);\n\n const [user, setUser] = useState<UserFields>({\n callName: '',\n pronouns: '',\n timezone: '',\n notes: '',\n });\n\n const [showCustomPronouns, setShowCustomPronouns] = useState(false);\n const [showCustomTimezone, setShowCustomTimezone] = useState(false);\n const [customTimezone, setCustomTimezone] = useState('');\n\n const initialLoadDoneRef = useRef(false);\n const agentIdRef = useRef(agentId);\n agentIdRef.current = agentId;\n\n // Snapshot for dirty tracking (set after load, reset after save)\n const userSnapshotRef = useRef('');\n\n // ---- Save helper (manual save only, triggered by footer button) ----\n const saveFile = useCallback(async (content: string) => {\n const currentAgent = agentIdRef.current;\n setSaving(true);\n try {\n await saveAgentProfileFileContent(currentAgent, 'USER.md', content);\n } finally {\n setSaving(false);\n }\n }, []);\n\n // Ref to hold latest user state for the save callback\n const userRef = useRef(user);\n userRef.current = user;\n\n // Expose save function to parent for the footer save button\n useEffect(() => {\n if (!saveRef) return;\n saveRef.current = async () => {\n await saveFile(serializeUserMarkdown(userRef.current));\n userSnapshotRef.current = JSON.stringify(userRef.current);\n // Manually notify parent since state didn't change (only snapshot did)\n onDirtyChange?.(false);\n };\n return () => {\n saveRef.current = null;\n };\n }, [saveRef, saveFile, onDirtyChange]);\n\n // Notify parent when dirty state changes.\n // Lifting `user` state into the parent would be a much larger refactor (the dirty\n // check needs the snapshot ref and the form is co-located here), so this effect\n // remains the bridge for the dirty signal until that refactor lands.\n useEffect(() => {\n if (!onDirtyChange) return;\n onDirtyChange(JSON.stringify(user) !== userSnapshotRef.current);\n }, [user, onDirtyChange]);\n\n // ---- Load USER.md on mount / agentId change ----\n useEffect(() => {\n let cancelled = false;\n initialLoadDoneRef.current = false;\n setLoading(true);\n\n const load = async () => {\n try {\n const userMd = await fetchAgentProfileFileContent(agentId, 'USER.md').catch(() => '');\n if (cancelled) return;\n\n const parsedUser = parseUserMarkdown(userMd);\n\n // Auto-detect timezone if not already set (saved when user clicks \"Save\")\n let effectiveUser = parsedUser;\n if (!parsedUser.timezone) {\n const detected = detectBrowserTimezone();\n if (detected) {\n effectiveUser = { ...parsedUser, timezone: detected };\n }\n }\n\n setUser(effectiveUser);\n userSnapshotRef.current = JSON.stringify(effectiveUser);\n\n // Custom pronouns handling\n const isKnownPronouns = !effectiveUser.pronouns || PRONOUNS_PRESETS.some((p) => p.value === effectiveUser.pronouns);\n if (effectiveUser.pronouns && !isKnownPronouns) {\n setShowCustomPronouns(true);\n }\n\n // Custom timezone handling\n const isKnownTimezone = TIMEZONE_OPTIONS.some((tz) => tz.value === effectiveUser.timezone);\n if (effectiveUser.timezone && !isKnownTimezone) {\n setShowCustomTimezone(true);\n setCustomTimezone(effectiveUser.timezone);\n }\n } finally {\n if (!cancelled) {\n setLoading(false);\n initialLoadDoneRef.current = true;\n }\n }\n };\n\n void load();\n return () => {\n cancelled = true;\n };\n }, [agentId]);\n\n // ---- Field updater (local state only, saved via footer button) ----\n const updateUser = useCallback((patch: Partial<UserFields>) => {\n setUser((prev) => ({ ...prev, ...patch }));\n }, []);\n\n // ---- Timezone handling ----\n const handleTimezoneChange = useCallback(\n (value: string) => {\n if (value === '__custom__') {\n setShowCustomTimezone(true);\n return;\n }\n setShowCustomTimezone(false);\n setCustomTimezone('');\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleCustomTimezoneChange = useCallback(\n (value: string) => {\n setCustomTimezone(value);\n updateUser({ timezone: value });\n },\n [updateUser],\n );\n\n const handleDetectTimezone = useCallback(() => {\n const detected = detectBrowserTimezone();\n if (detected) {\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === detected);\n if (isKnown) {\n setShowCustomTimezone(false);\n setCustomTimezone('');\n } else {\n setShowCustomTimezone(true);\n setCustomTimezone(detected);\n }\n updateUser({ timezone: detected });\n }\n }, [updateUser]);\n\n // ---- Effective timezone for select ----\n const timezoneSelectValue = (() => {\n if (showCustomTimezone) return '__custom__';\n const isKnown = TIMEZONE_OPTIONS.some((tz) => tz.value === user.timezone);\n return isKnown ? user.timezone : '__custom__';\n })();\n\n const locLabel = useCallback(\n (en: string, zh: string) => (language === 'zh' ? zh : en),\n [language],\n );\n\n if (loading) {\n return <p className=\"text-sm text-fg-muted\">{a.loading}</p>;\n }\n\n const inputClass = agentsSettingsInputClass();\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 setShowCustomPronouns(true);\n return;\n }\n setShowCustomPronouns(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=\"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 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","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 [...ids].map((s) => s.trim()).filter(Boolean).sort((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].sort((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 () => new Set(selected.tools.defaultsDisable.map((s) => String(s).trim()).filter(Boolean)),\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 { 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 onSetDefault: () => void;\n onSaveAgentEdits: () => void;\n onDelete: (purge: boolean) => void;\n overviewSaveProfileMarkdownRef: MutableRefObject<(() => Promise<void>) | null>;\n profileSaveRef: MutableRefObject<(() => Promise<void>) | null>;\n setOverviewProfileMarkdownDirty: (v: boolean) => void;\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 onSetDefault,\n onSaveAgentEdits,\n onDelete,\n overviewSaveProfileMarkdownRef,\n profileSaveRef,\n setOverviewProfileMarkdownDirty,\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 saveProfileMarkdownRef={overviewSaveProfileMarkdownRef}\n onProfileMarkdownDirtyChange={setOverviewProfileMarkdownDirty}\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 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 )}\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 )}\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 )}\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-selector';\nimport type { AgentsSettingsMessages, ChatMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport {\n SETTINGS_SHELL_CONTENT_Z,\n SETTINGS_SHELL_MODAL_POPOVER_Z,\n SETTINGS_SHELL_OVERLAY_Z,\n} from '@/lib/settings-shell-dialog-layer';\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 <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=\"shrink-0 rounded-lg p-1.5 text-fg-muted hover:bg-surface-base hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\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 popoverContentClassName={SETTINGS_SHELL_MODAL_POPOVER_Z}\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 </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 saveAgentProfileFileContent,\n updateGatewayAgent,\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 for (let i = 0; i < toCreate.length; i++) {\n const preset = toCreate[i];\n setProgress({ current: i + 1, total: toCreate.length });\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 });\n\n await saveAgentProfileFileContent(preset.id, 'IDENTITY.md', preset.identityMd);\n await saveAgentProfileFileContent(preset.id, 'SOUL.md', preset.soulMd);\n\n const disables = preset.toolsDisable;\n if (disables && disables.length > 0) {\n await updateGatewayAgent(preset.id, { toolsDisable: disables });\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.toLowerCase().includes('already exists')) {\n continue;\n }\n setError(a.presetCreateFailed.replace('{{name}}', preset.name).replace('{{message}}', message));\n setCreating(false);\n return;\n }\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","/**\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/** 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 `~/.xopc/workspace/${id}`;\n}\n","import { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nexport type DreamingPhaseId = 'light' | 'deep' | 'rem';\n\n/** Gateway payload shape for memory/.dreams/last-run.json (deep sweep). */\nexport type DreamingLastRunRecord = {\n version: 2;\n phase: 'deep';\n runId: string;\n startedAt: string;\n finishedAt: string;\n durationMs: number;\n ok: boolean;\n reason: string;\n errorMessage?: string;\n config: {\n enabled: boolean;\n minScore: number;\n minRecallCount: number;\n limit: number;\n };\n memoryPath: string;\n deep: {\n candidatesRanked: number;\n applied: number;\n skipped: {\n alreadyPromotedKey: number;\n rehydrateFailed: number;\n contaminated: number;\n hashDuplicate: number;\n };\n };\n};\n\n/** Lightweight last-run payload for light / rem phases. */\nexport type PhaseLastRun =\n | { exists: false }\n | { exists: true; path: string; raw: unknown };\n\nexport type DreamingGatewayStatus = {\n workspaceDir: string;\n config: {\n enabled: boolean;\n frequency: string;\n timezone: string;\n phases: {\n light: { enabled: boolean; cron: string; lookbackDays: number; limit: number; dedupeSimilarity: number };\n deep: { enabled: boolean; cron: string; minScore: number; minRecallCount: number; minUniqueQueries: number; limit: number; recencyHalfLifeDays: number; maxAgeDays: number };\n rem: { enabled: boolean; cron: string; lookbackDays: number; limit: number; minPatternStrength: number };\n };\n deep: { minScore: number; minRecallCount: number; limit: number };\n };\n storePath: string;\n store: {\n version: number;\n updatedAt: string;\n entryCount: number;\n promotedCount: number;\n lastPromotedAt: string | null;\n };\n lock: | { locked: false } | { locked: true; path: string; content: string; mtimeMs?: number };\n lastRun:\n | { exists: false }\n | { exists: true; path: string; raw: unknown; record: DreamingLastRunRecord | null; parseError: string | null };\n lightLastRun: PhaseLastRun;\n remLastRun: PhaseLastRun;\n};\n\nexport function dreamingSwrKey(): string {\n return apiUrl('/api/dreaming');\n}\n\nexport async function fetchDreamingStatus(): Promise<DreamingGatewayStatus> {\n const res = await fetchJson<{ ok?: boolean; payload?: DreamingGatewayStatus }>(dreamingSwrKey());\n if (!res.payload) throw new Error('Missing payload');\n return res.payload;\n}\n\nexport async function postDreamingAction(action: 'reset_store' | 'clear_lock'): Promise<void> {\n await fetchJson(apiUrl('/api/dreaming/action'), { method: 'POST', body: JSON.stringify({ action }) });\n}\n\nexport async function postDreamingRunNow(phase: DreamingPhaseId = 'deep'): Promise<{ triggered: boolean; jobId: string; phase: DreamingPhaseId }> {\n const res = await fetchJson<{ ok?: boolean; payload?: { triggered?: boolean; jobId?: string; phase?: string } }>(\n apiUrl('/api/dreaming/run'),\n { method: 'POST', body: JSON.stringify({ phase }) },\n );\n const triggered = Boolean(res.payload?.triggered);\n const jobId = typeof res.payload?.jobId === 'string' ? res.payload.jobId : '';\n if (!triggered || !jobId) throw new Error('Failed to trigger');\n return { triggered, jobId, phase };\n}\n\nexport type DreamingPreviewItem = {\n key: string;\n hash: string;\n snippet: string;\n path: string;\n startLine: number;\n endLine: number;\n score: number;\n avgScore: number;\n recallCount: number;\n recencyDecay: number;\n alreadyPromotedByKey: boolean;\n alreadyPromotedByHash: boolean;\n skippedReason: string | null;\n};\n\nexport type DreamingPreviewResponse = {\n ok: boolean;\n reason: string;\n items: DreamingPreviewItem[];\n memoryPath: string;\n};\n\nexport async function fetchDreamingPreview(limit?: number): Promise<DreamingPreviewResponse> {\n const q = typeof limit === 'number' && Number.isFinite(limit) ? `?limit=${encodeURIComponent(String(limit))}` : '';\n const res = await fetchJson<{ ok?: boolean; payload?: DreamingPreviewResponse }>(apiUrl(`/api/dreaming/preview${q}`));\n if (!res.payload) throw new Error('Missing payload');\n return res.payload;\n}\n\n// ── Event audit log ────────────────────────────────────────────────────\n\nexport type DreamingEvent = {\n timestamp: string;\n phase: DreamingPhaseId;\n ok: boolean;\n reason: string;\n durationMs: number;\n // Light-specific\n scannedEntries?: number;\n newSignals?: number;\n deduped?: number;\n // Deep-specific\n candidates?: number;\n applied?: number;\n // REM-specific\n patternsDiscovered?: number;\n entriesAnalyzed?: number;\n};\n\nexport async function fetchDreamingEvents(limit = 50): Promise<DreamingEvent[]> {\n const q = `?limit=${encodeURIComponent(String(limit))}`;\n const res = await fetchJson<{ ok?: boolean; payload?: { events: DreamingEvent[] } }>(apiUrl(`/api/dreaming/events${q}`));\n return res.payload?.events ?? [];\n}\n\n","import { Moon, Plus, Search } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { StoredLanguage } from '@/lib/storage';\nimport type { AgentsSettingsMessages } from '@/i18n/messages';\n\nexport type AgentsSettingsToolbarProps = {\n language: StoredLanguage;\n a: Pick<AgentsSettingsMessages, 'addAgent' | 'addAgentAria' | 'listSearchPlaceholder'>;\n busy: boolean;\n sleeping: boolean;\n listSearchQuery: string;\n onListSearchQueryChange: (value: string) => void;\n onSleep: () => void;\n onAddAgent: () => void;\n};\n\nexport function AgentsSettingsToolbar({\n language,\n a,\n busy,\n sleeping,\n listSearchQuery,\n onListSearchQueryChange,\n onSleep,\n onAddAgent,\n}: AgentsSettingsToolbarProps) {\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"shrink-0 gap-2\"\n disabled={busy || sleeping}\n onClick={() => void onSleep()}\n aria-label={language === 'zh' ? '让智能体进入睡眠流程' : 'Trigger agent sleep sequence'}\n title={language === 'zh' ? '由浅入深:Light → Deep → REM' : 'Light → Deep → REM'}\n >\n <Moon className=\"size-4 shrink-0\" strokeWidth={1.75} aria-hidden />\n {language === 'zh' ? (sleeping ? '睡眠中…' : '睡眠') : sleeping ? 'Sleeping…' : 'Sleep'}\n </Button>\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 { useEffect, useRef, useState } from 'react';\nimport type { Dispatch, 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\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, setActiveFile] = useState<string | null>(null);\n const [fileDraft, setFileDraft] = useState('');\n const [fileSaving, setFileSaving] = useState(false);\n const [filesViewMode, setFilesViewMode] = useState<'edit' | 'preview'>('edit');\n const [profileFileLoading, setProfileFileLoading] = useState(false);\n const [profileEditorNonce, setProfileEditorNonce] = useState(0);\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\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 const flushProfileSaveRef = useRef(saveProfileMarkdownDebounced.flush);\n flushProfileSaveRef.current = saveProfileMarkdownDebounced.flush;\n\n useEffect(() => {\n return () => {\n flushProfileSaveRef.current();\n };\n }, []);\n\n useEffect(() => {\n if (!activeFile || !selectedId || !hasToken) {\n return;\n }\n let cancelled = false;\n saveProfileMarkdownDebounced.flush();\n setProfileFileLoading(true);\n void fetchAgentProfileFileContent(selectedId, activeFile)\n .then((c) => {\n if (cancelled) {\n return;\n }\n const key = `${selectedId}:${activeFile}`;\n profileFileKeyRef.current = key;\n profileSyncedRef.current = c;\n setFileDraft(c);\n setProfileEditorNonce((n) => n + 1);\n })\n .catch(() => {\n if (!cancelled) {\n const key = `${selectedId}:${activeFile}`;\n profileFileKeyRef.current = key;\n profileSyncedRef.current = '';\n setFileDraft('');\n setProfileEditorNonce((n) => n + 1);\n }\n })\n .finally(() => {\n if (!cancelled) {\n setProfileFileLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [activeFile, selectedId, hasToken, saveProfileMarkdownDebounced]);\n\n useEffect(() => {\n if (!activeFile || !selectedId || profileFileLoading) {\n return;\n }\n saveProfileMarkdownDebounced();\n }, [fileDraft, activeFile, selectedId, profileFileLoading, saveProfileMarkdownDebounced]);\n\n useEffect(() => {\n if (panel !== 'files') {\n return;\n }\n return () => {\n saveProfileMarkdownDebounced.flush();\n };\n }, [panel, saveProfileMarkdownDebounced]);\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 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, useEffect, 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 [allBindings, setAllBindings] = useState<GatewayConfigBinding[]>([]);\n const [newBindChannel, setNewBindChannel] = useState('');\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 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 // Reset session selection when the channel changes (separate from the fetch effect).\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 useEffect(() => {\n if (panel !== 'channels' || !hasToken) {\n return;\n }\n setAllBindings(bindingsFromConfig);\n }, [panel, hasToken, bindingsFromConfig]);\n\n useEffect(() => {\n if (bindChannelsLoading || panel !== 'channels' || bindChannelStatuses.length === 0) {\n return;\n }\n setNewBindChannel((prev) => {\n const valid = Boolean(prev) && bindChannelStatuses.some((c) => c.name === prev);\n if (valid) {\n return prev;\n }\n return bindChannelStatuses[0].name;\n });\n }, [bindChannelsLoading, panel, bindChannelStatuses]);\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 setAllBindings(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 setAllBindings(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 { useEffect, useState } from 'react';\nimport type { GatewayAgentRow } from '@/features/settings/agents-admin-api';\n\nimport type { AgentPanel } from '../utils';\n\nexport function useAgentsToolsSkillsLocalState(options: {\n panel: AgentPanel;\n selected: GatewayAgentRow | null;\n}) {\n const { panel, selected } = options;\n\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 useEffect(() => {\n if (!selected || panel !== 'tools') {\n return;\n }\n setToolEntryDisable(new Set(selected.tools.entryDisable));\n }, [panel, selected]);\n\n useEffect(() => {\n if (!selected || panel !== 'skills') {\n return;\n }\n const inherit = selected.skills.entry === undefined;\n setSkillsInherit(inherit);\n if (inherit) {\n const eff = selected.skills.effectiveAllowlist;\n setSkillsPick(new Set(eff ?? []));\n } else {\n setSkillsPick(new Set(selected.skills.entry ?? []));\n }\n }, [panel, selected]);\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 { 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 { postDreamingRunNow, type DreamingPhaseId } from '@/features/settings/dreaming-api';\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 { 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 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 [showPresetSetup, setShowPresetSetup] = useState(false);\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 [sleeping, setSleeping] = 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 [overviewProfileMarkdownDirty, setOverviewProfileMarkdownDirty] = useState(false);\n const [profileDirty, setProfileDirty] = useState(false);\n const [savedFlash, setSavedFlash] = useState(false);\n\n useEffect(() => {\n if (!data) {\n return;\n }\n if (routeAgentId && data.agents.some((x) => x.id === routeAgentId)) {\n setSelectedId(routeAgentId);\n return;\n }\n setSelectedId((prev) => {\n if (prev && data.agents.some((x) => x.id === prev)) {\n return prev;\n }\n return data.defaultId;\n });\n }, [data, routeAgentId]);\n\n useEffect(() => {\n if (!data || loading) {\n return;\n }\n const onlyMain =\n data.agents.length <= 1 && data.agents.every((ag) => ag.id === data.defaultId);\n const skipped = localStorage.getItem(PRESET_AGENTS_SKIPPED_KEY) === 'true';\n setShowPresetSetup(onlyMain && !skipped);\n }, [data, loading]);\n\n const onPresetSetupComplete = useCallback(() => {\n setShowPresetSetup(false);\n void mutateAgents();\n }, [mutateAgents]);\n\n const onPresetSetupSkip = useCallback(() => {\n setShowPresetSetup(false);\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-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 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 useEffect(() => {\n if (!selected) {\n setEditWorkspace('');\n setEditModel('');\n setEditName('');\n setEditDescription('');\n return;\n }\n setEditWorkspace(selected.workspace);\n setEditModel(selected.model?.primary ?? '');\n setEditName(agentListDisplayName(selected, messages(language).agentsSettings));\n setEditDescription(selected.description?.trim() ?? '');\n }, [selected?.id, language]);\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 sleep = useCallback((ms: number) => new Promise<void>((resolve) => window.setTimeout(resolve, ms)), []);\n\n const triggerSleepSequence = useCallback(async () => {\n if (sleeping || busy) return;\n setSleeping(true);\n setError(null);\n\n const phases: DreamingPhaseId[] = ['light', 'deep', 'rem'];\n try {\n void (async () => {\n for (const phase of phases) {\n try {\n await postDreamingRunNow(phase);\n } catch {\n // Animation-first: errors are intentionally not surfaced here.\n }\n }\n })();\n\n for (let idx = 0; idx < phases.length; idx++) {\n const phase = phases[idx];\n window.dispatchEvent(new CustomEvent('dreaming-phase-start', { detail: { phase, source: 'ui' } }));\n\n const displayMs = phase === 'light' ? 7000 : phase === 'deep' ? 9000 : 8000;\n await sleep(displayMs);\n\n if (idx === phases.length - 1) {\n (window as unknown as { __xopcDreamingIgnoreSseUntil?: number }).__xopcDreamingIgnoreSseUntil =\n Date.now() + 60_000;\n window.dispatchEvent(new CustomEvent('dreaming-phase-end', { detail: { phase, source: 'ui' } }));\n }\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : a.saveError);\n } finally {\n setSleeping(false);\n }\n }, [a.saveError, busy, sleeping, sleep]);\n\n const agentsHeaderEnd = useMemo(\n () => (\n <AgentsSettingsToolbar\n language={language}\n a={a}\n busy={busy}\n sleeping={sleeping}\n listSearchQuery={listSearchQuery}\n onListSearchQueryChange={setListSearchQuery}\n onSleep={() => void triggerSleepSequence()}\n onAddAgent={() => openAddAgentModal()}\n />\n ),\n [a, busy, language, listSearchQuery, openAddAgentModal, sleeping, triggerSleepSequence],\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 = [...toolsSkills.toolEntryDisable].sort((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].sort((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 || overviewProfileMarkdownDirty;\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 profileFiles.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 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: profileFiles.overviewSaveProfileMarkdownRef,\n profileSaveRef,\n setOverviewProfileMarkdownDirty,\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 { Cpu, SlidersHorizontal, Zap } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/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';\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 <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 className=\"sm:col-span-2\">\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\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 { useCallback, useEffect, useRef, useState } from 'react';\nimport { Globe, Plug, PlugZap, Unplug } from 'lucide-react';\n\nimport { apiFetch } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { SettingsFormSection, SettingsFormSectionHeader } from '@/features/settings/settings-form-section';\nimport type { MessageBundle } from '@/i18n/messages';\n\nimport { AgentDefaultsField } from '../agent-defaults-field';\nimport type { AgentDefaultsPanelProps } from '../agent-defaults-panel-props';\nimport { inputClassName, selectClassName } from '../defaults-field-styles';\n\ntype ExtensionStatusMessages = Pick<\n MessageBundle['agentSettings'],\n 'browserExtensionConnected' | 'browserExtensionWaiting' | 'browserExtensionServerOff'\n>;\n\ntype ExtensionStatus = 'connected' | 'waiting' | 'off' | 'unknown';\n\n/** Poll gateway for extension connection status via `/api/browser/extension-status`. */\nfunction useExtensionStatus(\n enabled: boolean,\n host: string,\n port: number | undefined,\n): ExtensionStatus {\n const [status, setStatus] = useState<ExtensionStatus>(enabled ? 'unknown' : 'off');\n const trackedEnabledRef = useRef(enabled);\n if (trackedEnabledRef.current !== enabled) {\n trackedEnabledRef.current = enabled;\n setStatus(enabled ? 'unknown' : 'off');\n }\n\n const checkStatus = useCallback(async () => {\n if (!enabled) {\n setStatus('off');\n return;\n }\n const params = new URLSearchParams({ probe: '1' });\n if (host) params.set('host', host);\n if (port !== undefined) params.set('port', String(port));\n try {\n const res = await apiFetch(apiUrl(`/api/browser/extension-status?${params}`), {\n signal: AbortSignal.timeout(3000),\n });\n if (!res.ok) {\n setStatus('off');\n return;\n }\n const data = (await res.json()) as { running?: boolean; connected?: boolean };\n if (data.running) {\n setStatus(data.connected ? 'connected' : 'waiting');\n } else {\n setStatus('off');\n }\n } catch {\n setStatus('off');\n }\n }, [enabled, host, port]);\n\n useEffect(() => {\n void checkStatus();\n const interval = setInterval(() => void checkStatus(), 5000);\n return () => clearInterval(interval);\n }, [checkStatus]);\n\n return status;\n}\n\nfunction ExtensionStatusBadge({ status, messages }: { status: ExtensionStatus; messages: ExtensionStatusMessages }) {\n const config: Record<ExtensionStatus, { icon: typeof Plug; color: string; label: string }> = {\n connected: { icon: PlugZap, color: 'text-green-500', label: messages.browserExtensionConnected },\n waiting: { icon: Plug, color: 'text-amber-500', label: messages.browserExtensionWaiting },\n off: { icon: Unplug, color: 'text-fg-muted', label: messages.browserExtensionServerOff },\n unknown: { icon: Unplug, color: 'text-fg-muted', label: '…' },\n };\n const { icon: Icon, color, label } = config[status];\n return (\n <div className={`flex items-center gap-1.5 text-xs ${color}`}>\n <Icon className=\"size-3.5\" />\n <span>{label}</span>\n </div>\n );\n}\n\nexport function AgentDefaultsBrowserPanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\n\n const extensionStatus = useExtensionStatus(\n form.browserBackend === 'extension',\n form.browserExtensionHost,\n form.browserExtensionPort,\n );\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 <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 selector */}\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserBackend} description={a.desc.browserBackend}>\n <select\n className={selectClassName()}\n value={form.browserBackend}\n onChange={(e) =>\n update({ browserBackend: e.target.value as 'local' | 'cdp' | 'cloud' | 'extension' })\n }\n >\n <option value=\"local\">{a.browserBackendLocal}</option>\n <option value=\"cdp\">{a.browserBackendCdp}</option>\n <option value=\"cloud\">{a.browserBackendCloud}</option>\n <option value=\"extension\">{a.browserBackendExtension}</option>\n </select>\n </AgentDefaultsField>\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\n | 'must_respond'\n | 'auto_dismiss'\n | '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 </div>\n\n {/* Conditional fields based on backend mode */}\n {form.browserBackend === 'cloud' && (\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserCloudProvider} description={a.desc.browserCloudProvider}>\n <select\n className={selectClassName()}\n value={form.browserCloudProvider}\n onChange={(e) =>\n update({\n browserCloudProvider: e.target.value as 'local' | 'browserbase' | 'browser-use',\n })\n }\n >\n <option value=\"browserbase\">{a.browserCloudProviderBrowserbase}</option>\n <option value=\"browser-use\">{a.browserCloudProviderBrowserUse}</option>\n </select>\n </AgentDefaultsField>\n </div>\n )}\n\n {form.browserBackend === 'cdp' && (\n <div className=\"grid gap-5 sm:grid-cols-2\">\n <AgentDefaultsField label={a.label.browserCdpUrl} description={a.desc.browserCdpUrl}>\n <input\n type=\"text\"\n className={inputClassName()}\n value={form.browserCdpUrl}\n placeholder=\"ws://localhost:9222\"\n onChange={(e) => update({ browserCdpUrl: e.target.value })}\n autoComplete=\"off\"\n />\n </AgentDefaultsField>\n </div>\n )}\n\n {form.browserBackend === 'extension' && (\n <div className=\"flex items-center gap-3 rounded-md border border-edge bg-surface-raised px-4 py-3\">\n <ExtensionStatusBadge status={extensionStatus} messages={a} />\n <span className=\"text-xs text-fg-muted\">ws://127.0.0.1:19820/browser-ext</span>\n </div>\n )}\n\n <div className=\"grid gap-5 sm:grid-cols-2\">\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","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 () => new Set(form.toolsDisable.map((s) => s.trim()).filter(Boolean)),\n [form.toolsDisable],\n );\n\n const unknownDisabled = useMemo(\n () =>\n form.toolsDisable\n .map((s) => s.trim())\n .filter(Boolean)\n .filter((id) => !builtinToolIds.includes(id))\n .sort((x, y) => x.localeCompare(y)),\n [form.toolsDisable, builtinToolIds],\n );\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-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 { Layers2, Scissors, Timer } from 'lucide-react';\n\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\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\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={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 </div>\n </div>\n </SettingsFormSection>\n\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 <div className=\"grid gap-5 sm:grid-cols-2\">\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 <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 </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 <div className=\"grid gap-5 sm:grid-cols-2\">\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 <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 </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 { Brain, Search, Sparkles } from 'lucide-react';\n\nimport { ModelSelector } from '@/features/chat/model-selector';\nimport type { AgentDefaultsState } from '@/features/settings/config-api';\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\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 <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 </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 <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 </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 () => new Set(form.skillsAllowlist.map((s) => s.trim()).filter(Boolean)),\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(form.skillsAllowlist.map((s) => s.trim()).filter(Boolean));\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 && 'pointer-events-none opacity-50',\n )}\n >\n <ul className=\"flex flex-col gap-2.5 text-sm\">\n {rowsToRender.filter((s) => rowId(s)).map((s) => {\n const id = rowId(s);\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 { 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';\n\nexport function AgentDefaultsWorkspacePanel(props: AgentDefaultsPanelProps) {\n const { a, form, update } = props;\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 <input\n type=\"text\"\n className={inputClassName()}\n value={form.workspace}\n onChange={(e) => update({ workspace: e.target.value })}\n autoComplete=\"off\"\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 { 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}) {\n const { sectionId, intro, vm, children } = 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 <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 </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 { 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 /** Playwright `browser_*` tools (`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, or extension. */\n browserBackend: 'local' | 'cdp' | 'cloud' | 'extension';\n /** Cloud browser backend: local, browserbase, or browser-use. */\n browserCloudProvider: 'local' | 'browserbase' | 'browser-use';\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 /** 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 | 'browserCdpUrl'\n | 'browserExtensionPort'\n | 'browserExtensionHost'\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: 'local',\n browserCloudProvider: 'local',\n browserCdpUrl: '',\n browserExtensionPort: undefined,\n browserExtensionHost: '127.0.0.1',\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 === 'cdp' || backendRaw === 'cloud' || backendRaw === 'extension' ? backendRaw : 'local';\n\n const cpRaw = b.cloudProvider;\n const cloudProvider: AgentDefaultsState['browserCloudProvider'] =\n cpRaw === 'browserbase' || cpRaw === 'browser-use' ? cpRaw : 'local';\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 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 browserCdpUrl: cdpUrl,\n browserExtensionPort: extensionPort,\n browserExtensionHost: extensionHost,\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.map((s) => s.trim()).filter(Boolean);\n const modelField =\n fallbacks.length > 0 ? { primary: state.model, fallbacks } : state.model;\n\n const imageFbs = state.imageModelFallbacks.map((s) => s.trim()).filter(Boolean);\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.map((s) => s.trim()).filter(Boolean);\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.map((s) => s.trim()).filter(Boolean);\n const toolsDisableClean = state.toolsDisable.map((s) => s.trim()).filter(Boolean);\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 === 'local' ? null : state.browserBackend,\n cloudProvider: state.browserCloudProvider === 'local' ? null : state.browserCloudProvider,\n cdpUrl: state.browserCdpUrl.trim() || null,\n extension: state.browserBackend === 'extension'\n ? {\n port: state.browserExtensionPort ?? null,\n host: state.browserExtensionHost === '127.0.0.1' ? null : state.browserExtensionHost,\n }\n : 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","import { useCallback, useEffect, useMemo, 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 { 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\nexport function useAgentDefaultsForm(a: MessageBundle['agentSettings']): UseAgentDefaultsFormResult {\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [form, setForm] = useState<AgentDefaultsState | null>(null);\n const [baseline, setBaseline] = useState<AgentDefaultsState | null>(null);\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\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 useEffect(() => {\n if (!hasToken) {\n setForm(null);\n setBaseline(null);\n dirtyRef.current = false;\n return;\n }\n if (parsed === null) return;\n if (!dirtyRef.current) {\n const snapshot = structuredClone(parsed);\n setForm(snapshot);\n setBaseline(structuredClone(snapshot));\n }\n }, [hasToken, parsed]);\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 setForm((f) => (f ? { ...f, ...patch } : null));\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 setBaseline(structuredClone(form));\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\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 }, [form, saving, a.saveError, a.advanced]);\n\n const discard = useCallback(() => {\n if (!baseline) return;\n dirtyRef.current = false;\n setForm(structuredClone(baseline));\n setError(null);\n setSaveOk(false);\n }, [baseline]);\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 type { AgentDefaultsPanelProps } from './agent-defaults-panel-props';\nimport { AgentDefaultsBasicsPanel } from './agent-defaults-panels/basics-panel';\nimport { AgentDefaultsBrowserPanel } from './agent-defaults-panels/browser-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 { 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 { AgentDefaultsRouteLayout } from './agent-defaults-route-layout';\nimport { useAgentDefaultsForm } from './use-agent-defaults-form';\n\nfunction useAgentDefaultsPageModel(): {\n vm: ReturnType<typeof useAgentDefaultsForm>;\n pp: AgentDefaultsPanelProps | null;\n a: ReturnType<typeof messages>['agentSettings'];\n} {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const a = m.agentSettings;\n const chat = m.chat;\n const vm = useAgentDefaultsForm(a);\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 return { vm, pp, a };\n}\n\nexport function AgentChatDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-chat\" intro={a.routeIntro.chat} vm={vm}>\n {pp ? <AgentDefaultsBasicsPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentWorkspaceDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-workspace\" intro={a.routeIntro.workspace} vm={vm}>\n {pp ? <AgentDefaultsWorkspacePanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentBrowserDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-browser\" intro={a.routeIntro.browser} vm={vm}>\n {pp ? <AgentDefaultsBrowserPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentRuntimeDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-runtime\" intro={a.routeIntro.runtime} vm={vm}>\n {pp ? (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsContextPanel {...pp} />\n <AgentDefaultsMemoryPanel {...pp} />\n </div>\n ) : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentToolsDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-tools\" intro={a.routeIntro.tools} vm={vm}>\n {pp ? (\n <div className=\"flex flex-col gap-8\">\n <AgentDefaultsCapabilitiesPanel {...pp} />\n <AgentDefaultsSkillsAllowlistPanel {...pp} />\n <AgentDefaultsExpertPanel {...pp} />\n </div>\n ) : null}\n </AgentDefaultsRouteLayout>\n );\n}\n\nexport function AgentSystemPromptDefaultsPage() {\n const { vm, pp, a } = useAgentDefaultsPageModel();\n\n return (\n <AgentDefaultsRouteLayout sectionId=\"agent-system-prompt\" intro={a.routeIntro.systemPrompt} vm={vm}>\n {pp ? <AgentDefaultsSystemPromptPanel {...pp} /> : null}\n </AgentDefaultsRouteLayout>\n );\n}\n"],"mappings":"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"}
|