@profoundlogic/coderflow-server 0.8.1 → 0.8.2
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/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-container-init.js +1 -1
- package/dist/lib/task-context-usage.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export function escapeHtml(_0x15cc1e){if(!_0x15cc1e)return'';return String(_0x15cc1e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function computeLineDiff(_0x465092,_0x555f21,_0x36193f,_0x212fe2){const _0xe0daec=(_0x465092||'')['split']('\x0a'),_0x3446bd=(_0x555f21||'')['split']('\x0a'),_0x4062cc=(_0x36193f||0x1)-0x1,_0x4ae53b=(_0x212fe2||_0x36193f||0x1)-0x1,_0x4ef4d4=computeLCS(_0xe0daec,_0x3446bd),_0x4d807c={'left':[],'right':[]};let _0xef4dae=0x0,_0xcb9e08=0x0,_0x238b2a=0x0;while(_0xef4dae<_0xe0daec['length']||_0xcb9e08<_0x3446bd['length']){if(_0x238b2a<_0x4ef4d4['length']&&_0xef4dae<_0xe0daec['length']&&_0xe0daec[_0xef4dae]===_0x4ef4d4[_0x238b2a]&&_0xcb9e08<_0x3446bd['length']&&_0x3446bd[_0xcb9e08]===_0x4ef4d4[_0x238b2a])_0x4d807c['left']['push']({'type':'context','content':_0xe0daec[_0xef4dae],'lineNum':_0xef4dae+0x1+_0x4062cc}),_0x4d807c['right']['push']({'type':'context','content':_0x3446bd[_0xcb9e08],'lineNum':_0xcb9e08+0x1+_0x4ae53b}),_0xef4dae++,_0xcb9e08++,_0x238b2a++;else{if(_0x238b2a<_0x4ef4d4['length']&&_0xcb9e08<_0x3446bd['length']&&_0x3446bd[_0xcb9e08]===_0x4ef4d4[_0x238b2a])_0x4d807c['left']['push']({'type':'remove','content':_0xe0daec[_0xef4dae],'lineNum':_0xef4dae+0x1+_0x4062cc}),_0x4d807c['right']['push']({'type':'empty','content':'','lineNum':null}),_0xef4dae++;else{if(_0x238b2a<_0x4ef4d4['length']&&_0xef4dae<_0xe0daec['length']&&_0xe0daec[_0xef4dae]===_0x4ef4d4[_0x238b2a])_0x4d807c['left']['push']({'type':'empty','content':'','lineNum':null}),_0x4d807c['right']['push']({'type':'add','content':_0x3446bd[_0xcb9e08],'lineNum':_0xcb9e08+0x1+_0x4ae53b}),_0xcb9e08++;else{if(_0xef4dae<_0xe0daec['length']&&_0xcb9e08<_0x3446bd['length'])_0x4d807c['left']['push']({'type':'remove','content':_0xe0daec[_0xef4dae],'lineNum':_0xef4dae+0x1+_0x4062cc}),_0x4d807c['right']['push']({'type':'add','content':_0x3446bd[_0xcb9e08],'lineNum':_0xcb9e08+0x1+_0x4ae53b}),_0xef4dae++,_0xcb9e08++;else{if(_0xef4dae<_0xe0daec['length'])_0x4d807c['left']['push']({'type':'remove','content':_0xe0daec[_0xef4dae],'lineNum':_0xef4dae+0x1+_0x4062cc}),_0x4d807c['right']['push']({'type':'empty','content':'','lineNum':null}),_0xef4dae++;else _0xcb9e08<_0x3446bd['length']&&(_0x4d807c['left']['push']({'type':'empty','content':'','lineNum':null}),_0x4d807c['right']['push']({'type':'add','content':_0x3446bd[_0xcb9e08],'lineNum':_0xcb9e08+0x1+_0x4ae53b}),_0xcb9e08++);}}}}}return _0x4d807c;}function computeLCS(_0x3f0295,_0x20987a){const _0x2093e5=_0x3f0295['length'],_0x5c39b9=_0x20987a['length'],_0x51b9af=Array(_0x2093e5+0x1)['fill'](null)['map'](()=>Array(_0x5c39b9+0x1)['fill'](0x0));for(let _0x3a538d=0x1;_0x3a538d<=_0x2093e5;_0x3a538d++){for(let _0x129525=0x1;_0x129525<=_0x5c39b9;_0x129525++){_0x3f0295[_0x3a538d-0x1]===_0x20987a[_0x129525-0x1]?_0x51b9af[_0x3a538d][_0x129525]=_0x51b9af[_0x3a538d-0x1][_0x129525-0x1]+0x1:_0x51b9af[_0x3a538d][_0x129525]=Math['max'](_0x51b9af[_0x3a538d-0x1][_0x129525],_0x51b9af[_0x3a538d][_0x129525-0x1]);}}const _0xbf394d=[];let _0x1daba7=_0x2093e5,_0x5463d9=_0x5c39b9;while(_0x1daba7>0x0&&_0x5463d9>0x0){if(_0x3f0295[_0x1daba7-0x1]===_0x20987a[_0x5463d9-0x1])_0xbf394d['unshift'](_0x3f0295[_0x1daba7-0x1]),_0x1daba7--,_0x5463d9--;else _0x51b9af[_0x1daba7-0x1][_0x5463d9]>_0x51b9af[_0x1daba7][_0x5463d9-0x1]?_0x1daba7--:_0x5463d9--;}return _0xbf394d;}function renderEditDiffLine(_0x3075a4,_0x465665){const _0x514a1a=_0x3075a4['lineNum']!==null?String(_0x3075a4['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0xed27c0=escapeHtml(_0x3075a4['content']);let _0x503e14='edit-diff-line',_0x8aebb3='\x20';switch(_0x3075a4['type']){case'add':_0x503e14+='\x20edit-diff-add',_0x8aebb3='+';break;case'remove':_0x503e14+='\x20edit-diff-remove',_0x8aebb3='-';break;case'empty':_0x503e14+='\x20edit-diff-empty',_0x8aebb3='\x20';break;default:_0x503e14+='\x20edit-diff-context',_0x8aebb3='\x20';}return'<div\x20class=\x22'+_0x503e14+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0x514a1a+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x8aebb3+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0xed27c0||' ')+'</span></div>';}export function formatBashDetail(_0x27e19d){if(!_0x27e19d)return'<p>No\x20data\x20available</p>';if(_0x27e19d['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x27e19d['toolInput']?.['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x27e19d['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';if(_0x27e19d['stdout']!==undefined||_0x27e19d['stderr']!==undefined||_0x27e19d['aggregated_output']!==undefined){const _0x2f3f7b=_0x27e19d['aggregated_output']&&_0x27e19d['aggregated_output']['trim']()['length']>0x0,_0xba2a0e=!_0x2f3f7b&&_0x27e19d['stdout']&&_0x27e19d['stdout']['trim']()['length']>0x0,_0x249b78=_0x27e19d['stderr']&&_0x27e19d['stderr']['trim']()['length']>0x0;return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x27e19d['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2f3f7b?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x27e19d['aggregated_output'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xba2a0e?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x27e19d['stdout'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x249b78?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error\x20Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x27e19d['stderr'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x2f3f7b&&!_0xba2a0e&&!_0x249b78?'<div\x20class=\x22tool-section\x22><p\x20class=\x22muted-text\x22>No\x20output</p></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Exit\x20Code:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22exit-code\x20'+(_0x27e19d['exitCode']===0x0?'success':'error')+'\x22>'+_0x27e19d['exitCode']+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x27e19d['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x27e19d['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x399c79){if(!_0x399c79)return'<p>No\x20data\x20available</p>';if(_0x399c79['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20read-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x399c79['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x399c79['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20read-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x399c79['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x399c79['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x524d7b){if(!_0x524d7b)return'<p>No\x20data\x20available</p>';if(_0x524d7b['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20write-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x524d7b['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x524d7b['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x2ed440=_0x524d7b['content']['length']>0xc350?_0x524d7b['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x524d7b['content'];return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20write-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x524d7b['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content\x20Written\x20('+_0x524d7b['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x2ed440)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x3e2d78){if(!_0x3e2d78)return'<p>No\x20data\x20available</p>';if(_0x3e2d78['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x3e2d78['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x3e2d78['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';if(_0x3e2d78['diff']&&!_0x3e2d78['oldString']&&!_0x3e2d78['newString'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x3e2d78['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Changes:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x3e2d78['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3e2d78['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x3e2d78['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0xa64b6c=computeLineDiff(_0x3e2d78['oldString'],_0x3e2d78['newString'],_0x3e2d78['startLine'],_0x3e2d78['startLine']),_0x6cb88b=Math['max'](_0xa64b6c['left']['length'],_0xa64b6c['right']['length']);let _0x583d4e='';for(let _0x3c04de=0x0;_0x3c04de<_0x6cb88b;_0x3c04de++){const _0x41d3fa=_0xa64b6c['left'][_0x3c04de]||{'type':'empty','content':'','lineNum':null},_0x3bb1a8=_0xa64b6c['right'][_0x3c04de]||{'type':'empty','content':'','lineNum':null};_0x583d4e+='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-left\x22>'+renderEditDiffLine(_0x41d3fa,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0x3bb1a8,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x4f672b=_0xa64b6c['left']['filter'](_0x1b2932=>_0x1b2932['type']==='remove')['length'],_0x531036=_0xa64b6c['right']['filter'](_0x489475=>_0x489475['type']==='add')['length'];return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x3e2d78['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-summary\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-mode\x22>Replace\x20'+(_0x3e2d78['replaceAll']?'All':'First')+'\x20Occurrence</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-removed\x22>-'+_0x4f672b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x531036+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-container\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header-left\x22>Old</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header-right\x22>New</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x583d4e+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatGrepDetail(_0x5db0fc){if(!_0x5db0fc)return'<p>No\x20data\x20available</p>';if(_0x5db0fc['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20grep-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x5db0fc['toolInput']?.['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x5db0fc['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20grep-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x5db0fc['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x5db0fc['path']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Path:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x5db0fc['path'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output\x20Mode:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>'+escapeHtml(_0x5db0fc['outputMode']||'files_with_matches')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Results:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x5db0fc['content']||'No\x20matches\x20found')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatGlobDetail(_0x22b2ed){if(!_0x22b2ed)return'<p>No\x20data\x20available</p>';if(_0x22b2ed['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20glob-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x22b2ed['toolInput']?.['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x22b2ed['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20glob-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x22b2ed['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x22b2ed['path']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Path:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x22b2ed['path'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Matching\x20Files:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x22b2ed['content']||'No\x20files\x20found')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebFetchDetail(_0x577517){if(!_0x577517)return'<p>No\x20data\x20available</p>';if(_0x577517['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20webfetch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>URL:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<a\x20href=\x22'+escapeHtml(_0x577517['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x577517['toolInput']?.['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x577517['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20webfetch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>URL:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20href=\x22'+escapeHtml(_0x577517['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x577517['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x577517['prompt']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22prompt-text\x22>'+escapeHtml(_0x577517['prompt'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x577517['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x586472){if(!_0x586472)return'<p>No\x20data\x20available</p>';if(_0x586472['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20websearch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Query:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22search-query\x22>'+escapeHtml(_0x586472['toolInput']?.['query']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x586472['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20websearch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Query:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22search-query\x22>'+escapeHtml(_0x586472['query']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Results:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x586472['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x497bb5){if(!_0x497bb5)return'<p>No\x20data\x20available</p>';if(_0x497bb5['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20notebook-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Notebook:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x497bb5['toolInput']?.['notebook_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x497bb5['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20notebook-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Notebook:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x497bb5['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x497bb5['cellId']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Cell\x20ID:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x497bb5['cellId'])+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>New\x20Source:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x497bb5['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x3ff955){if(!_0x3ff955)return'<p>No\x20data\x20available</p>';if(_0x3ff955['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20skill-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Skill:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x3ff955['toolInput']?.['skill']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x3ff955['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x14dfcd=_0x3ff955['toolInput']?.['skill']||_0x3ff955['skill']||'',_0x4546ee=_0x3ff955['content']||_0x3ff955['output']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20skill-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Skill:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x14dfcd)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x4546ee?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x4546ee)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAskUserQuestionDetail(_0x33e534){if(!_0x33e534)return'<p>No\x20data\x20available</p>';if(_0x33e534['error']&&(!_0x33e534['questions']||_0x33e534['questions']['length']===0x0))return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x33e534['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x5efce2=_0x33e534['questions']||(_0x33e534['question']?[_0x33e534]:[]);if(_0x5efce2['length']===0x0)return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22fallback-content\x22>'+escapeHtml(JSON['stringify'](_0x33e534,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x3e4972=_0x5efce2['map']((_0x2baa44,_0x19a99f)=>{const _0x5d5550=_0x2baa44['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0x2baa44['header'])+'</span>':'',_0x2f745f=_0x2baa44['question']?escapeHtml(_0x2baa44['question']):_0x2baa44['header']?'':'Question',_0x28ca23=_0x2baa44['options']?.['length']||0x0,_0x4974bb=_0x28ca23>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x28ca23+'\x20options</span>':'',_0x1e9bea=_0x2baa44['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x54b1a8=_0x5efce2['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x19a99f+0x1)+'.</span>\x20':'';let _0x30cba4='';return _0x2baa44['options']&&Array['isArray'](_0x2baa44['options'])&&_0x2baa44['options']['length']>0x0&&(_0x30cba4='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-options\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2baa44['options']['map'](_0x2facf3=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-option\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-option-label\x22>'+escapeHtml(_0x2facf3['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2facf3['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0x2facf3['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2facf3['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0x2facf3['preview'])+'</pre>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22ask-question-collapsible\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary\x20class=\x22ask-question-summary\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x54b1a8+_0x5d5550+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x2f745f+'</span>'+_0x4974bb+_0x1e9bea+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x30cba4+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20';})['join']('');let _0x2025df='';if(_0x33e534['answer'])_0x2025df='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Answer:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x33e534['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x33e534['denied']&&(_0x2025df='<div\x20class=\x22ask-question-denied-badge\x22>Awaiting\x20answer\x20—\x20use\x20the\x20form\x20below\x20to\x20respond</div>');return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x3e4972+'\x0a\x20\x20\x20\x20\x20\x20'+_0x2025df+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x1b1589){if(!_0x1b1589)return'<p>No\x20data\x20available</p>';if(_0x1b1589['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x1b1589['toolInput']?.['description']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x1b1589['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x400d09=_0x1b1589['description']||_0x1b1589['toolInput']?.['description']||'',_0x2534a3=_0x1b1589['subagentType']||_0x1b1589['toolInput']?.['subagent_type']||'',_0x48ea0a=_0x1b1589['model']||_0x1b1589['toolInput']?.['model']||'',_0x4ef07e=_0x1b1589['prompt']||_0x1b1589['toolInput']?.['prompt']||'',_0x3ce5c4=_0x1b1589['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x400d09?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Description:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x400d09)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x2534a3?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent\x20Type:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x2534a3)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x48ea0a?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Model:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x48ea0a)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x4ef07e?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x4ef07e)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x3ce5c4?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Result:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x3ce5c4)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatTaskDetail(_0x27de9d){if(!_0x27de9d)return'<p>No\x20data\x20available</p>';if(_0x27de9d['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Task:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x27de9d['toolInput']?.['description']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x27de9d['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x51c85e=_0x27de9d['description']||_0x27de9d['toolInput']?.['description']||'',_0x59899d=_0x27de9d['subagentType']||_0x27de9d['toolInput']?.['subagent_type']||'',_0x3e1c24=_0x27de9d['prompt']||_0x27de9d['toolInput']?.['prompt']||'',_0x388352=_0x27de9d['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x51c85e?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Description:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x51c85e)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x59899d?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent\x20Type:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x59899d)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x3e1c24?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x3e1c24)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x388352?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Result:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x388352)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}
|
|
1
|
+
export function escapeHtml(_0x17dace){if(!_0x17dace)return'';return String(_0x17dace)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function computeLineDiff(_0x2293fb,_0x3994ce,_0x36dd5f,_0x1f8768){const _0x22885d=(_0x2293fb||'')['split']('\x0a'),_0x5d3f12=(_0x3994ce||'')['split']('\x0a'),_0x54ffe9=(_0x36dd5f||0x1)-0x1,_0x337516=(_0x1f8768||_0x36dd5f||0x1)-0x1,_0x56739f=computeLCS(_0x22885d,_0x5d3f12),_0x333bbd={'left':[],'right':[]};let _0x2bc5e9=0x0,_0x13e5a2=0x0,_0x5c5e3c=0x0;while(_0x2bc5e9<_0x22885d['length']||_0x13e5a2<_0x5d3f12['length']){if(_0x5c5e3c<_0x56739f['length']&&_0x2bc5e9<_0x22885d['length']&&_0x22885d[_0x2bc5e9]===_0x56739f[_0x5c5e3c]&&_0x13e5a2<_0x5d3f12['length']&&_0x5d3f12[_0x13e5a2]===_0x56739f[_0x5c5e3c])_0x333bbd['left']['push']({'type':'context','content':_0x22885d[_0x2bc5e9],'lineNum':_0x2bc5e9+0x1+_0x54ffe9}),_0x333bbd['right']['push']({'type':'context','content':_0x5d3f12[_0x13e5a2],'lineNum':_0x13e5a2+0x1+_0x337516}),_0x2bc5e9++,_0x13e5a2++,_0x5c5e3c++;else{if(_0x5c5e3c<_0x56739f['length']&&_0x13e5a2<_0x5d3f12['length']&&_0x5d3f12[_0x13e5a2]===_0x56739f[_0x5c5e3c])_0x333bbd['left']['push']({'type':'remove','content':_0x22885d[_0x2bc5e9],'lineNum':_0x2bc5e9+0x1+_0x54ffe9}),_0x333bbd['right']['push']({'type':'empty','content':'','lineNum':null}),_0x2bc5e9++;else{if(_0x5c5e3c<_0x56739f['length']&&_0x2bc5e9<_0x22885d['length']&&_0x22885d[_0x2bc5e9]===_0x56739f[_0x5c5e3c])_0x333bbd['left']['push']({'type':'empty','content':'','lineNum':null}),_0x333bbd['right']['push']({'type':'add','content':_0x5d3f12[_0x13e5a2],'lineNum':_0x13e5a2+0x1+_0x337516}),_0x13e5a2++;else{if(_0x2bc5e9<_0x22885d['length']&&_0x13e5a2<_0x5d3f12['length'])_0x333bbd['left']['push']({'type':'remove','content':_0x22885d[_0x2bc5e9],'lineNum':_0x2bc5e9+0x1+_0x54ffe9}),_0x333bbd['right']['push']({'type':'add','content':_0x5d3f12[_0x13e5a2],'lineNum':_0x13e5a2+0x1+_0x337516}),_0x2bc5e9++,_0x13e5a2++;else{if(_0x2bc5e9<_0x22885d['length'])_0x333bbd['left']['push']({'type':'remove','content':_0x22885d[_0x2bc5e9],'lineNum':_0x2bc5e9+0x1+_0x54ffe9}),_0x333bbd['right']['push']({'type':'empty','content':'','lineNum':null}),_0x2bc5e9++;else _0x13e5a2<_0x5d3f12['length']&&(_0x333bbd['left']['push']({'type':'empty','content':'','lineNum':null}),_0x333bbd['right']['push']({'type':'add','content':_0x5d3f12[_0x13e5a2],'lineNum':_0x13e5a2+0x1+_0x337516}),_0x13e5a2++);}}}}}return _0x333bbd;}function computeLCS(_0x2cca39,_0x224fd4){const _0x3dc00d=_0x2cca39['length'],_0xca4596=_0x224fd4['length'],_0x537ab3=Array(_0x3dc00d+0x1)['fill'](null)['map'](()=>Array(_0xca4596+0x1)['fill'](0x0));for(let _0x214eff=0x1;_0x214eff<=_0x3dc00d;_0x214eff++){for(let _0x3020cd=0x1;_0x3020cd<=_0xca4596;_0x3020cd++){_0x2cca39[_0x214eff-0x1]===_0x224fd4[_0x3020cd-0x1]?_0x537ab3[_0x214eff][_0x3020cd]=_0x537ab3[_0x214eff-0x1][_0x3020cd-0x1]+0x1:_0x537ab3[_0x214eff][_0x3020cd]=Math['max'](_0x537ab3[_0x214eff-0x1][_0x3020cd],_0x537ab3[_0x214eff][_0x3020cd-0x1]);}}const _0x22b91c=[];let _0xb3a5a6=_0x3dc00d,_0x5bd6be=_0xca4596;while(_0xb3a5a6>0x0&&_0x5bd6be>0x0){if(_0x2cca39[_0xb3a5a6-0x1]===_0x224fd4[_0x5bd6be-0x1])_0x22b91c['unshift'](_0x2cca39[_0xb3a5a6-0x1]),_0xb3a5a6--,_0x5bd6be--;else _0x537ab3[_0xb3a5a6-0x1][_0x5bd6be]>_0x537ab3[_0xb3a5a6][_0x5bd6be-0x1]?_0xb3a5a6--:_0x5bd6be--;}return _0x22b91c;}function renderEditDiffLine(_0x3c39d4,_0x1a4dfa){const _0x59a87e=_0x3c39d4['lineNum']!==null?String(_0x3c39d4['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0x234665=escapeHtml(_0x3c39d4['content']);let _0x4edf6e='edit-diff-line',_0x1d022e='\x20';switch(_0x3c39d4['type']){case'add':_0x4edf6e+='\x20edit-diff-add',_0x1d022e='+';break;case'remove':_0x4edf6e+='\x20edit-diff-remove',_0x1d022e='-';break;case'empty':_0x4edf6e+='\x20edit-diff-empty',_0x1d022e='\x20';break;default:_0x4edf6e+='\x20edit-diff-context',_0x1d022e='\x20';}return'<div\x20class=\x22'+_0x4edf6e+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0x59a87e+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x1d022e+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0x234665||' ')+'</span></div>';}export function formatBashDetail(_0x1ee14c){if(!_0x1ee14c)return'<p>No\x20data\x20available</p>';if(_0x1ee14c['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x1ee14c['toolInput']?.['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x1ee14c['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';if(_0x1ee14c['stdout']!==undefined||_0x1ee14c['stderr']!==undefined||_0x1ee14c['aggregated_output']!==undefined){const _0x5312a3=_0x1ee14c['aggregated_output']&&_0x1ee14c['aggregated_output']['trim']()['length']>0x0,_0x16aa7b=!_0x5312a3&&_0x1ee14c['stdout']&&_0x1ee14c['stdout']['trim']()['length']>0x0,_0x561866=_0x1ee14c['stderr']&&_0x1ee14c['stderr']['trim']()['length']>0x0;return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x1ee14c['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5312a3?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x1ee14c['aggregated_output'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16aa7b?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x1ee14c['stdout'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x561866?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error\x20Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x1ee14c['stderr'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x5312a3&&!_0x16aa7b&&!_0x561866?'<div\x20class=\x22tool-section\x22><p\x20class=\x22muted-text\x22>No\x20output</p></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Exit\x20Code:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22exit-code\x20'+(_0x1ee14c['exitCode']===0x0?'success':'error')+'\x22>'+_0x1ee14c['exitCode']+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20bash-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Command:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-code\x22>'+escapeHtml(_0x1ee14c['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x1ee14c['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x29c04d){if(!_0x29c04d)return'<p>No\x20data\x20available</p>';if(_0x29c04d['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20read-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x29c04d['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x29c04d['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20read-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x29c04d['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x29c04d['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x39b0b3){if(!_0x39b0b3)return'<p>No\x20data\x20available</p>';if(_0x39b0b3['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20write-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x39b0b3['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x39b0b3['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x103d6d=_0x39b0b3['content']['length']>0xc350?_0x39b0b3['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x39b0b3['content'];return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20write-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x39b0b3['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content\x20Written\x20('+_0x39b0b3['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x103d6d)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x48c647){if(!_0x48c647)return'<p>No\x20data\x20available</p>';if(_0x48c647['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x48c647['toolInput']?.['file_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x48c647['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';if(_0x48c647['diff']&&!_0x48c647['oldString']&&!_0x48c647['newString'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x48c647['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Changes:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x48c647['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x48c647['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x48c647['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x19582d=computeLineDiff(_0x48c647['oldString'],_0x48c647['newString'],_0x48c647['startLine'],_0x48c647['startLine']),_0x116a22=Math['max'](_0x19582d['left']['length'],_0x19582d['right']['length']);let _0x1f3952='';for(let _0x47c246=0x0;_0x47c246<_0x116a22;_0x47c246++){const _0x433136=_0x19582d['left'][_0x47c246]||{'type':'empty','content':'','lineNum':null},_0x406922=_0x19582d['right'][_0x47c246]||{'type':'empty','content':'','lineNum':null};_0x1f3952+='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-left\x22>'+renderEditDiffLine(_0x433136,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0x406922,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x237b3f=_0x19582d['left']['filter'](_0x59fa04=>_0x59fa04['type']==='remove')['length'],_0x3f7925=_0x19582d['right']['filter'](_0xfdd6ec=>_0xfdd6ec['type']==='add')['length'];return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20edit-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>File:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x48c647['filePath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-summary\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-mode\x22>Replace\x20'+(_0x48c647['replaceAll']?'All':'First')+'\x20Occurrence</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-removed\x22>-'+_0x237b3f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x3f7925+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-container\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header-left\x22>Old</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-header-right\x22>New</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1f3952+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatGrepDetail(_0x276949){if(!_0x276949)return'<p>No\x20data\x20available</p>';if(_0x276949['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20grep-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x276949['toolInput']?.['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x276949['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20grep-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x276949['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x276949['path']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Path:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x276949['path'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output\x20Mode:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>'+escapeHtml(_0x276949['outputMode']||'files_with_matches')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Results:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x276949['content']||'No\x20matches\x20found')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatGlobDetail(_0x4c367c){if(!_0x4c367c)return'<p>No\x20data\x20available</p>';if(_0x4c367c['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20glob-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x4c367c['toolInput']?.['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x4c367c['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20glob-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Pattern:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x4c367c['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x4c367c['path']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Path:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x4c367c['path'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Matching\x20Files:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x4c367c['content']||'No\x20files\x20found')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebFetchDetail(_0x235f43){if(!_0x235f43)return'<p>No\x20data\x20available</p>';if(_0x235f43['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20webfetch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>URL:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<a\x20href=\x22'+escapeHtml(_0x235f43['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x235f43['toolInput']?.['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x235f43['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20webfetch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>URL:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<a\x20href=\x22'+escapeHtml(_0x235f43['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x235f43['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x235f43['prompt']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22prompt-text\x22>'+escapeHtml(_0x235f43['prompt'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Content:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x235f43['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x206396){if(!_0x206396)return'<p>No\x20data\x20available</p>';if(_0x206396['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20websearch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Query:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22search-query\x22>'+escapeHtml(_0x206396['toolInput']?.['query']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x206396['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20websearch-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Query:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22search-query\x22>'+escapeHtml(_0x206396['query']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Results:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x206396['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x484813){if(!_0x484813)return'<p>No\x20data\x20available</p>';if(_0x484813['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20notebook-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Notebook:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x484813['toolInput']?.['notebook_path']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x484813['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20notebook-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Notebook:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22file-path\x22>'+escapeHtml(_0x484813['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x484813['cellId']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Cell\x20ID:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x484813['cellId'])+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>New\x20Source:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x484813['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x5e77da){if(!_0x5e77da)return'<p>No\x20data\x20available</p>';if(_0x5e77da['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20skill-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Skill:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x5e77da['toolInput']?.['skill']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x5e77da['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x1aef7d=_0x5e77da['toolInput']?.['skill']||_0x5e77da['skill']||'',_0x1caa32=_0x5e77da['content']||_0x5e77da['output']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20skill-detail\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Skill:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x1aef7d)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1caa32?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Output:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x1caa32)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAskUserQuestionDetail(_0x585af2){if(!_0x585af2)return'<p>No\x20data\x20available</p>';if(_0x585af2['error']&&(!_0x585af2['questions']||_0x585af2['questions']['length']===0x0))return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x585af2['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x3106bd=_0x585af2['questions']||(_0x585af2['question']?[_0x585af2]:[]);if(_0x3106bd['length']===0x0)return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22fallback-content\x22>'+escapeHtml(JSON['stringify'](_0x585af2,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x2ab11e=_0x3106bd['map']((_0x4abc73,_0x54ebc4)=>{const _0x48a766=_0x4abc73['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0x4abc73['header'])+'</span>':'',_0x5452e9=_0x4abc73['question']?escapeHtml(_0x4abc73['question']):_0x4abc73['header']?'':'Question',_0x5a3332=_0x4abc73['options']?.['length']||0x0,_0x510e9f=_0x5a3332>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x5a3332+'\x20options</span>':'',_0x1ac482=_0x4abc73['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x47c7f9=_0x3106bd['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x54ebc4+0x1)+'.</span>\x20':'';let _0x10f2ce='';return _0x4abc73['options']&&Array['isArray'](_0x4abc73['options'])&&_0x4abc73['options']['length']>0x0&&(_0x10f2ce='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-options\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4abc73['options']['map'](_0x1299db=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-option\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-option-label\x22>'+escapeHtml(_0x1299db['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1299db['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0x1299db['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1299db['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0x1299db['preview'])+'</pre>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22ask-question-collapsible\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary\x20class=\x22ask-question-summary\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x47c7f9+_0x48a766+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x5452e9+'</span>'+_0x510e9f+_0x1ac482+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ask-question-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x10f2ce+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20';})['join']('');let _0x5849ed='';if(_0x585af2['answer'])_0x5849ed='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Answer:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x585af2['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x585af2['denied']&&(_0x5849ed='<div\x20class=\x22ask-question-denied-badge\x22>Awaiting\x20answer\x20—\x20use\x20the\x20form\x20below\x20to\x20respond</div>');return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20ask-question-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x2ab11e+'\x0a\x20\x20\x20\x20\x20\x20'+_0x5849ed+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x3175bc){if(!_0x3175bc)return'<p>No\x20data\x20available</p>';if(_0x3175bc['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x3175bc['toolInput']?.['description']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x3175bc['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x2db453=_0x3175bc['description']||_0x3175bc['toolInput']?.['description']||'',_0x370cca=_0x3175bc['subagentType']||_0x3175bc['toolInput']?.['subagent_type']||'',_0x19220a=_0x3175bc['model']||_0x3175bc['toolInput']?.['model']||'',_0x51fe0c=_0x3175bc['prompt']||_0x3175bc['toolInput']?.['prompt']||'',_0xc31e61=_0x3175bc['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x2db453?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Description:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x2db453)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x370cca?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent\x20Type:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x370cca)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x19220a?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Model:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x19220a)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x51fe0c?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x51fe0c)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0xc31e61?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Result:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0xc31e61)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatTaskDetail(_0x47a608){if(!_0x47a608)return'<p>No\x20data\x20available</p>';if(_0x47a608['error'])return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Task:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x47a608['toolInput']?.['description']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x20error-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Error:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x20error-output\x22>'+escapeHtml(_0x47a608['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x26128d=_0x47a608['description']||_0x47a608['toolInput']?.['description']||'',_0x15409c=_0x47a608['subagentType']||_0x47a608['toolInput']?.['subagent_type']||'',_0x2db782=_0x47a608['prompt']||_0x47a608['toolInput']?.['prompt']||'',_0x3902c5=_0x47a608['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x26128d?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Description:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22task-description\x22>'+escapeHtml(_0x26128d)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x15409c?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Agent\x20Type:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22inline-code\x22>'+escapeHtml(_0x15409c)+'</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x2db782?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Prompt:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x2db782)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20'+(_0x3902c5?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22tool-section-header\x22>Result:</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x3902c5)+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const HEALTH_REFRESH_INTERVAL_MS=0x7530,LOG_SEARCH_DEBOUNCE_MS=0xfa,LOG_ORDER_ASC='asc',LOG_ORDER_DESC='desc',RESTART_POLL_INTERVAL_MS=0x7d0,RESTART_POLL_MAX_ATTEMPTS=0x1e,RESTART_MIN_SUCCESS_DELAY_MS=0x1b58,NUMBER_FORMATTER=new Intl['NumberFormat'](),state={'currentSection':'health','environments':[],'health':{'loaded':![],'request':null,'autoRefreshTimer':null,'versionChecked':![],'currentVersion':null,'latestVersion':null,'installCommand':null,'updateEnabled':![],'hasRestartCommand':![],'updateInProgress':![],'restartInProgress':![],'updateAvailable':![]},'logs':{'loaded':![],'request':null,'entries':[],'total':0x0,'minLevel':'INFO','level':'ALL','order':LOG_ORDER_ASC,'search':'','maxEntries':0x3e8,'stream':null,'streamState':'paused','live':![],'autoScroll':!![],'searchTimer':null},'usage':{'loaded':![],'request':null,'days':'30','environment':''}};document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle();const _0x4cf3cb=await checkAdminAccess();await initializeAdminMenu(_0x4cf3cb),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x53da8e=getSessionValue('admin-health-auto-refresh');if(_0x53da8e!==null){const _0x12fe3f=document['getElementById']('health-auto-refresh');if(_0x12fe3f)_0x12fe3f['checked']=_0x53da8e!=='false';}const _0x241efe=getSessionValue('admin-logs-order');(_0x241efe===LOG_ORDER_ASC||_0x241efe===LOG_ORDER_DESC)&&(state['logs']['order']=_0x241efe);syncLogOrderUi();const _0x317b52=getSessionValue('admin-active-section'),_0x34b33e=['health','logs','usage']['includes'](_0x317b52)?_0x317b52:'health';await switchSection(_0x34b33e);}catch(_0x44c358){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x44c358),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x44c358['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x55b601=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x55b601,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x55b601;}catch(_0xb9f041){_0xb9f041['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0xb9f041;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x225a96=>{_0x225a96['addEventListener']('click',()=>switchSection(_0x225a96['dataset']['section']));}),document['getElementById']('retry-admin-btn')?.['addEventListener']('click',()=>{window['location']['reload']();}),document['getElementById']('health-refresh-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('retry-health-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('health-auto-refresh')?.['addEventListener']('change',syncHealthAutoRefresh),document['getElementById']('health-check-updates-btn')?.['addEventListener']('click',()=>loadVersionStatus({'checkUpdates':!![]})),document['getElementById']('health-copy-install-btn')?.['addEventListener']('click',copyInstallCommand),document['getElementById']('health-update-btn')?.['addEventListener']('click',applyUpdate),document['getElementById']('health-restart-btn')?.['addEventListener']('click',showRestartConfirmation),document['getElementById']('confirm-restart-btn')?.['addEventListener']('click',confirmRestart),document['getElementById']('cancel-restart-btn')?.['addEventListener']('click',hideRestartModal),document['getElementById']('close-restart-modal')?.['addEventListener']('click',hideRestartModal),document['querySelector']('#restart-modal\x20.modal-overlay')?.['addEventListener']('click',hideRestartModal),document['getElementById']('restart-overlay-retry')?.['addEventListener']('click',()=>waitForServerRestart({'manualRetry':!![]})),document['getElementById']('server-stop-containers')?.['addEventListener']('click',()=>runCleanupAction('Stopping\x20containers',()=>API['stopAllContainers']())),document['getElementById']('server-remove-stopped')?.['addEventListener']('click',()=>runCleanupAction('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']())),document['getElementById']('server-prune-docker')?.['addEventListener']('click',()=>runCleanupAction('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']())),document['getElementById']('cleanup-toggle')?.['addEventListener']('click',toggleCleanupSection),document['getElementById']('logs-refresh-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('retry-logs-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('logs-live-toggle')?.['addEventListener']('click',toggleLogsLiveMode),document['getElementById']('logs-clear-btn')?.['addEventListener']('click',clearDisplayedLogs),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x4e2a81=>{_0x4e2a81['addEventListener']('click',()=>{state['logs']['level']=_0x4e2a81['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),document['querySelectorAll']('#logs-order-toggle\x20.admin-filter-btn')['forEach'](_0x34d07c=>{_0x34d07c['addEventListener']('click',()=>{setLogOrder(_0x34d07c['dataset']['order'],{'focusLiveEdge':!![]});});}),document['getElementById']('logs-container')?.['addEventListener']('scroll',updateLogAutoScrollState),document['getElementById']('usage-refresh-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('retry-usage-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('usage-environment-filter')?.['addEventListener']('change',_0x5c9378=>{state['usage']['environment']=_0x5c9378['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0x26bf2a=>{_0x26bf2a['addEventListener']('click',()=>{state['usage']['days']=_0x26bf2a['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x315936){if(!_0x315936)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x51ba7d=>{const _0x29f202=_0x51ba7d['dataset']['section']===_0x315936;_0x51ba7d['classList']['toggle']('active',_0x29f202),_0x51ba7d['setAttribute']('aria-selected',String(_0x29f202));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x135df9=>{const _0x587d86=_0x135df9['id']==='section-'+_0x315936;_0x135df9['hidden']=!_0x587d86,_0x135df9['classList']['toggle']('active',_0x587d86);}),state['currentSection']=_0x315936,setSessionValue('admin-active-section',_0x315936),_0x315936!=='health'&&stopHealthAutoRefresh(),_0x315936!=='logs'&&stopLogStream(),_0x315936==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x315936==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x315936==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x2eba2b){try{return sessionStorage['getItem'](_0x2eba2b);}catch{return null;}}function setSessionValue(_0x99e77f,_0x3b2436){try{sessionStorage['setItem'](_0x99e77f,_0x3b2436);}catch{}}async function loadEnvironmentOptions(){const _0x425c6c=await API['get']('/environments');state['environments']=(_0x425c6c['environments']||[])['map'](_0x239944=>_0x239944?.['name'])['filter'](Boolean)['sort']((_0x440312,_0x41e7b9)=>_0x440312['localeCompare'](_0x41e7b9));const _0x3230e3=document['getElementById']('usage-environment-filter');if(!_0x3230e3)return;_0x3230e3['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x592c5f=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x592c5f)+'\x22>'+Utils['escapeHtml'](_0x592c5f)+'</option>')['join'](''),_0x3230e3['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x1023c4=document['getElementById']('health-auto-refresh');if(_0x1023c4)setSessionValue('admin-health-auto-refresh',String(_0x1023c4['checked']));const _0x3562bf=state['currentSection']==='health'&&!!_0x1023c4?.['checked'];stopHealthAutoRefresh();if(!_0x3562bf)return;state['health']['autoRefreshTimer']=window['setInterval'](()=>{loadHealth({'showLoading':![]});},HEALTH_REFRESH_INTERVAL_MS);}function stopHealthAutoRefresh(){state['health']['autoRefreshTimer']&&(clearInterval(state['health']['autoRefreshTimer']),state['health']['autoRefreshTimer']=null);}async function loadHealth({showLoading:showLoading=![]}={}){if(state['health']['request'])return state['health']['request'];return state['health']['request']=((async()=>{const _0x149603=document['getElementById']('health-loading'),_0x2692bc=document['getElementById']('health-error'),_0x18a74d=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0x149603['hidden']=![],_0x2692bc['hidden']=!![],_0x18a74d['hidden']=!![]);try{const [_0x31b4ac]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x2b5e56=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x2b5e56),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x31b4ac),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0x149603['hidden']=!![],_0x2692bc['hidden']=!![],_0x18a74d['hidden']=![],state['health']['loaded']=!![];}catch(_0x39dea4){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x39dea4),_0x149603['hidden']=!![],_0x2692bc['hidden']=![],_0x18a74d['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x39dea4['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x3987ce=document['getElementById']('health-update-btn'),_0x453fcc=document['getElementById']('health-restart-btn');if(!_0x3987ce||!_0x453fcc)return;const _0x272d91=state['health']['updateEnabled'],_0x2db879=_0x272d91&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x3987ce['hidden']=!_0x2db879,_0x3987ce['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x3987ce['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x453fcc['hidden']=!_0x272d91,_0x453fcc['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x49425,output:_0x58ee50}){const _0x204ca3=document['getElementById']('health-update-output-wrap'),_0x51e94f=document['getElementById']('health-update-status'),_0xb877b9=document['getElementById']('health-update-output');if(!_0x204ca3||!_0x51e94f||!_0xb877b9)return;const _0x39e9e4=_0x49425||'';_0x204ca3['hidden']=![],_0x51e94f['className']='admin-update-status',_0x39e9e4&&_0x51e94f['classList']['add'](_0x39e9e4),_0x51e94f['textContent']=_0x39e9e4==='success'?'Success':_0x39e9e4==='error'?'Failed':'In\x20Progress',_0xb877b9['textContent']=_0x58ee50||'No\x20output\x20returned.';}function buildCommandOutput(_0x2d0436,_0x459f4c){const _0x402270=[];typeof _0x2d0436==='string'&&_0x2d0436['trim']()&&_0x402270['push'](_0x2d0436['trim']());if(typeof _0x459f4c==='string'&&_0x459f4c['trim']()){const _0x32c433=_0x459f4c['trim'](),_0x1c3de3=_0x402270['some'](_0x36629d=>_0x36629d['includes'](_0x32c433));!_0x1c3de3&&_0x402270['push']('Error:\x0a'+_0x32c433);}return _0x402270['join']('\x0a\x0a');}function showRestartOverlay({title:_0x1fb4fe,message:_0x8fbefd,showRetry:showRetry=![]}){const _0xf13cf2=document['getElementById']('health-restart-overlay'),_0x391fa3=document['getElementById']('restart-overlay-title'),_0x4c67f5=document['getElementById']('restart-overlay-message'),_0x1bcc25=document['getElementById']('restart-overlay-retry');if(!_0xf13cf2||!_0x391fa3||!_0x4c67f5||!_0x1bcc25)return;_0x391fa3['textContent']=_0x1fb4fe,_0x4c67f5['textContent']=_0x8fbefd,_0x1bcc25['hidden']=!showRetry,_0xf13cf2['hidden']=![];}function hideRestartOverlay(){const _0x1df2e4=document['getElementById']('health-restart-overlay');_0x1df2e4&&(_0x1df2e4['hidden']=!![]);}function sleep(_0xfc7b51){return new Promise(_0x50c214=>{window['setTimeout'](_0x50c214,_0xfc7b51);});}async function loadUpdateSettings(){const _0xf18758=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0xf18758['enabled'],state['health']['hasRestartCommand']=!!_0xf18758['hasRestartCommand'],syncHealthActionButtons(),_0xf18758;}async function applyUpdate(){if(state['health']['updateInProgress']||!state['health']['latestVersion'])return;state['health']['updateInProgress']=!![],syncHealthActionButtons(),setUpdateOutput({'status':'in-progress','output':'Applying\x20server\x20update\x20to\x20'+state['health']['latestVersion']+'...'});try{const _0x45f8fe=await API['applyServerUpdate'](state['health']['latestVersion']),_0x28ff3b=buildCommandOutput(_0x45f8fe['output'],_0x45f8fe['error']);_0x45f8fe['success']?(setUpdateOutput({'status':'success','output':_0x28ff3b||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x28ff3b||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x45f8fe['error']||'Server\x20update\x20failed'));}catch(_0x1ef5fb){setUpdateOutput({'status':'error','output':buildCommandOutput(_0x1ef5fb['output'],_0x1ef5fb['commandError']||_0x1ef5fb['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0x1ef5fb['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0xee333f=document['getElementById']('restart-modal');_0xee333f&&(_0xee333f['hidden']=![]);}function hideRestartModal(){const _0x25620e=document['getElementById']('restart-modal');_0x25620e&&(_0x25620e['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x23524c){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x23524c['message']||'Failed\x20to\x20restart\x20server');}}async function waitForServerRestart({manualRetry:manualRetry=![]}={}){state['health']['restartInProgress']=!![],syncHealthActionButtons(),stopHealthAutoRefresh(),showRestartOverlay({'title':manualRetry?'Retrying\x20server\x20connection...':'Waiting\x20for\x20server\x20to\x20restart...','message':'The\x20page\x20will\x20automatically\x20refresh\x20when\x20the\x20server\x20is\x20back\x20online.','showRetry':![]});const _0x8be165=Date['now']();let _0x582cfb=![];for(let _0x276c77=0x0;_0x276c77<RESTART_POLL_MAX_ATTEMPTS;_0x276c77+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x160325=Date['now']()-_0x8be165;if(_0x582cfb||_0x160325>=RESTART_MIN_SUCCESS_DELAY_MS){state['health']['restartInProgress']=![],state['health']['currentVersion']=null,hideRestartOverlay(),syncHealthActionButtons(),Utils['showSuccess']('Server\x20restart\x20complete'),await loadHealth({'showLoading':!![]}),syncHealthAutoRefresh();return;}}catch(_0x11b5d6){_0x582cfb=!![];}}state['health']['restartInProgress']=![],syncHealthActionButtons(),showRestartOverlay({'title':'Unable\x20to\x20reconnect\x20to\x20the\x20server','message':'The\x20server\x20may\x20still\x20be\x20restarting.\x20Retry\x20the\x20connection\x20when\x20you\x20are\x20ready.','showRetry':!![]}),Utils['showError']('Server\x20restart\x20is\x20taking\x20longer\x20than\x20expected');}async function loadVersionStatus({checkUpdates:checkUpdates=![]}={}){const _0x4aa49e=document['getElementById']('health-check-updates-btn');_0x4aa49e&&(_0x4aa49e['disabled']=!![],_0x4aa49e['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x1fffde=await API['get']('/health');state['health']['currentVersion']=_0x1fffde['version']||'Unavailable',document['getElementById']('health-version-current')['textContent']=state['health']['currentVersion'];if(!checkUpdates&&!state['health']['versionChecked']){state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Update\x20status\x20has\x20not\x20been\x20checked\x20yet.',document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion']||'Not\x20checked',syncHealthActionButtons();return;}if(checkUpdates){const _0x3157c0=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x3157c0['latestVersion']||'Unavailable',state['health']['installCommand']=_0x3157c0['installCommand']||null,state['health']['updateAvailable']=!!_0x3157c0['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x3157c0['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x3157c0),document['getElementById']('health-install-command')['textContent']=state['health']['installCommand']||'',document['getElementById']('health-install-command-wrap')['hidden']=!state['health']['installCommand'],document['getElementById']('health-copy-install-btn')['hidden']=!state['health']['installCommand'];}syncHealthActionButtons();}catch(_0x2b9061){console['error']('Failed\x20to\x20load\x20version\x20status',_0x2b9061),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x2b9061['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x4aa49e&&(_0x4aa49e['disabled']=![],_0x4aa49e['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x352902){const _0x52ca4b=_0x352902?.['versionStatus'];if(_0x52ca4b==='update-available')return'Update\x20available:\x20'+_0x352902['currentVersion']+'\x20→\x20'+_0x352902['latestVersion'];if(_0x52ca4b==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x352902['latestVersion']+').';if(_0x52ca4b==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x352902['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x4785b7=await Utils['copyToClipboard'](state['health']['installCommand']);_0x4785b7?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x47d191){document['getElementById']('cpu-usage')['textContent']=_0x47d191['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x47d191['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x47d191['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x47d191['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x47d191['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x47d191['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x47d191['cpu']?.['percent'],statusFromPercent(_0x47d191['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x47d191['memory']?.['percent'],statusFromPercent(_0x47d191['memory']?.['percent'])),setMetricProgress('disk-progress',_0x47d191['disk']?.['percent'],statusFromPercent(_0x47d191['disk']?.['percent']));const _0x3bd355=_0x47d191['docker']?.['total']>0x0?_0x47d191['docker']['running']/_0x47d191['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x3bd355,'ok');const _0x45824f=_0x47d191['dockerStorage']||{},_0x8516e7=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x45824f['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x45824f['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x45824f['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x45824f['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x45824f['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x45824f['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x45824f['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x45824f['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x45824f['percent'],_0x45824f['status']||'ok'),_0x8516e7['classList']['remove']('status-warning','status-critical'),_0x45824f['status']==='warning'&&_0x8516e7['classList']['add']('status-warning'),_0x45824f['status']==='critical'&&_0x8516e7['classList']['add']('status-critical');}function clampPercent(_0x10662c){if(!Number['isFinite'](_0x10662c))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x10662c)));}function statusFromPercent(_0x215139){if(!Number['isFinite'](_0x215139))return'ok';if(_0x215139>=0x5a)return'critical';if(_0x215139>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x1a6b68,_0x17ebd6,_0x8a648a='ok'){const _0x5c1e83=document['getElementById'](_0x1a6b68);if(!_0x5c1e83)return;const _0x5937eb=clampPercent(_0x17ebd6);_0x5c1e83['style']['width']=_0x5937eb+'%',_0x5c1e83['classList']['remove']('status-ok','status-warning','status-critical'),_0x5c1e83['classList']['add'](_0x8a648a==='critical'?'status-critical':_0x8a648a==='warning'?'status-warning':'status-ok'),_0x5c1e83['parentElement']?.['setAttribute']('aria-valuenow',String(_0x5937eb));}async function runCleanupAction(_0x1bd73c,_0x1ce6e9){const _0x383019=document['getElementById']('server-health-action-status'),_0x30dc31=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x30dc31['forEach'](_0x3e40de=>{_0x3e40de['disabled']=!![];}),_0x383019['hidden']=![],_0x383019['classList']['remove']('success','error'),_0x383019['textContent']=_0x1bd73c+'...';try{const _0x56e3e7=await _0x1ce6e9();_0x383019['classList']['add']('success'),_0x383019['textContent']=_0x56e3e7?.['message']||_0x1bd73c+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x1ba749){console['error'](_0x1bd73c+'\x20failed',_0x1ba749),_0x383019['classList']['add']('error'),_0x383019['textContent']=_0x1ba749['message']||_0x1bd73c+'\x20failed';}finally{_0x30dc31['forEach'](_0x5a06e8=>{_0x5a06e8['disabled']=![];});}}function toggleCleanupSection(){const _0x33a6cd=document['getElementById']('cleanup-section'),_0x4f1620=document['getElementById']('cleanup-content'),_0x5e0da9=document['getElementById']('cleanup-toggle');if(!_0x33a6cd||!_0x4f1620||!_0x5e0da9)return;const _0x1db3d3=_0x33a6cd['classList']['toggle']('expanded');_0x4f1620['hidden']=!_0x1db3d3,_0x5e0da9['setAttribute']('aria-expanded',String(_0x1db3d3));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x553dc0=document['getElementById']('logs-loading'),_0x1a7612=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x553dc0['hidden']=![],_0x1a7612['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x2fe3dd=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x2fe3dd['set']('level',state['logs']['level']);state['logs']['search']&&_0x2fe3dd['set']('search',state['logs']['search']);const _0x26892c=await API['get']('/logs?'+_0x2fe3dd['toString']());state['logs']['entries']=Array['isArray'](_0x26892c['entries'])?_0x26892c['entries']['slice'](-state['logs']['maxEntries']):[],state['logs']['total']=Number(_0x26892c['total'])||0x0,state['logs']['minLevel']=_0x26892c['minLevel']||'INFO',state['logs']['loaded']=!![],_0x553dc0['hidden']=!![],_0x1a7612['hidden']=!![],renderLogs();}catch(_0x4e124b){console['error']('Failed\x20to\x20load\x20logs',_0x4e124b),_0x553dc0['hidden']=!![],_0x1a7612['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x4e124b['message']||'Unknown\x20error',document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![];}finally{state['logs']['request']=null;}})()),state['logs']['request'];}function renderLogs({stickToLiveEdge:stickToLiveEdge=![]}={}){const _0x3a952a=document['getElementById']('logs-container'),_0x540a51=document['getElementById']('logs-empty'),_0x427ef2=stickToLiveEdge||state['logs']['autoScroll']&&state['logs']['live'],_0x1b595b=_0x3a952a?.['scrollTop']||0x0,_0x6fe4a5=_0x3a952a?.['scrollHeight']||0x0,_0x107376=getOrderedLogEntries();updateLogsMeta(_0x107376['length']);if(_0x107376['length']===0x0){_0x3a952a['hidden']=!![],_0x540a51['hidden']=![];return;}_0x540a51['hidden']=!![],_0x3a952a['hidden']=![],_0x3a952a['innerHTML']=_0x107376['map'](renderLogEntry)['join']('');if(_0x427ef2){scrollLogsToLiveEdge(_0x3a952a);return;}if(state['logs']['order']===LOG_ORDER_DESC){const _0x2c1045=_0x3a952a['scrollHeight'],_0x5918ff=_0x2c1045-_0x6fe4a5;_0x3a952a['scrollTop']=_0x1b595b>0x0?_0x1b595b+Math['max'](_0x5918ff,0x0):_0x1b595b;return;}_0x3a952a['scrollTop']=_0x1b595b;}function getVisibleLogEntries(){const _0xd1b118=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x9f5ae3=>{if(state['logs']['level']!=='ALL'&&_0x9f5ae3['level']!==state['logs']['level'])return![];if(!_0xd1b118)return!![];const _0x128ade=String(_0x9f5ae3['message']||'')['toLowerCase'](),_0x17a17e=_0x9f5ae3['context']?JSON['stringify'](_0x9f5ae3['context'])['toLowerCase']():'';return _0x128ade['includes'](_0xd1b118)||_0x17a17e['includes'](_0xd1b118);});}function getOrderedLogEntries(){const _0x927f45=getVisibleLogEntries();return state['logs']['order']===LOG_ORDER_DESC?_0x927f45['slice']()['reverse']():_0x927f45;}function renderLogEntry(_0x2ffc7f){const _0x1a1c25=Utils['escapeHtml'](formatDateTime(_0x2ffc7f['timestamp'])),_0x88fc1d=Utils['escapeHtml'](String(_0x2ffc7f['level']||'INFO')),_0x3bc2bf=Utils['escapeHtml'](String(_0x2ffc7f['message']||'')),_0x38d3e7=_0x2ffc7f['context']?'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22admin-log-context\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary>Context</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre>'+Utils['escapeHtml'](JSON['stringify'](_0x2ffc7f['context'],null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x1a1c25+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x88fc1d['toLowerCase']()+'\x22>'+_0x88fc1d+'</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-message\x22>'+_0x3bc2bf+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x38d3e7+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x34b999){const _0x4a400f=document['getElementById']('logs-meta');if(!_0x4a400f)return;const _0x4c6a52=state['logs']['entries']['length'],_0x5967ce=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x55b976=state['logs']['order']===LOG_ORDER_DESC?'newest\x20first':'oldest\x20first';_0x4a400f['textContent']=_0x5967ce?'Showing\x20'+_0x34b999+'\x20of\x20'+_0x4c6a52+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters\x20in\x20'+_0x55b976+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x34b999+'\x20recent\x20buffered\x20entries\x20in\x20'+_0x55b976+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}),startLogStream()):stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x376531=document['getElementById']('logs-live-toggle'),_0x4246da=document['getElementById']('logs-stream-status');if(!_0x376531||!_0x4246da)return;_0x4246da['classList']['remove']('live','error');if(!state['logs']['live']){_0x4246da['textContent']='Paused',_0x376531['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x4246da['textContent']='Live',_0x4246da['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x4246da['textContent']='Reconnecting',_0x4246da['classList']['add']('error')):_0x4246da['textContent']='Connecting';_0x376531['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x414143=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x414143,_0x414143['addEventListener']('log',_0x41b752=>{try{const _0x1d0848=JSON['parse'](_0x41b752['data']);state['logs']['entries']['push'](_0x1d0848),state['logs']['entries']['length']>state['logs']['maxEntries']&&state['logs']['entries']['shift'](),renderLogs();}catch(_0x81f5f8){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x81f5f8);}}),_0x414143['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x414143['onerror']=()=>{state['logs']['streamState']='error',updateLogsLiveUi();};}function stopLogStream(){state['logs']['stream']&&(state['logs']['stream']['close'](),state['logs']['stream']=null),state['logs']['streamState']='paused',updateLogsLiveUi();}function clearDisplayedLogs(){state['logs']['entries']=[],renderLogs();}function setLogOrder(_0x4403cd,{focusLiveEdge:focusLiveEdge=![]}={}){const _0x3737ce=_0x4403cd===LOG_ORDER_DESC?LOG_ORDER_DESC:LOG_ORDER_ASC;if(state['logs']['order']===_0x3737ce){focusLiveEdge&&(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}));return;}state['logs']['order']=_0x3737ce,setSessionValue('admin-logs-order',_0x3737ce),syncLogOrderUi(),focusLiveEdge&&(state['logs']['autoScroll']=!![]),renderLogs({'stickToLiveEdge':focusLiveEdge});}function syncLogOrderUi(){updateActiveFilterButtons('#logs-order-toggle',state['logs']['order']);}function handleLogsSearchInput(_0x47472c){const _0x59d8f1=_0x47472c['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x59d8f1,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x5cb3fd=document['getElementById']('logs-container');if(!_0x5cb3fd)return;const _0x1b0c45=state['logs']['order']===LOG_ORDER_DESC?_0x5cb3fd['scrollTop']:_0x5cb3fd['scrollHeight']-_0x5cb3fd['scrollTop']-_0x5cb3fd['clientHeight'];state['logs']['autoScroll']=_0x1b0c45<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x4635f1=document['getElementById']('usage-loading'),_0x332647=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x4635f1['hidden']=![],_0x332647['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x4323d8=new URLSearchParams();_0x4323d8['set']('days',state['usage']['days']);state['usage']['environment']&&_0x4323d8['set']('environment',state['usage']['environment']);const _0x33be38=await API['get']('/stats?'+_0x4323d8['toString']());state['usage']['loaded']=!![],_0x4635f1['hidden']=!![],_0x332647['hidden']=!![],renderUsage(_0x33be38);}catch(_0x960460){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x960460),_0x4635f1['hidden']=!![],_0x332647['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x960460['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x467cdf){const _0x1b032b=Number(_0x467cdf?.['tasks']?.['total'])||0x0,_0x3053d6=document['getElementById']('usage-empty'),_0x3cf0b4=document['getElementById']('usage-content');if(_0x1b032b===0x0){_0x3053d6['hidden']=![],_0x3cf0b4['hidden']=!![];return;}_0x3053d6['hidden']=!![],_0x3cf0b4['hidden']=![];const _0xb9c3ec=Number(_0x467cdf?.['approvalRate']?.['successRate'])||0x0,_0x355fd6=Math['round'](_0xb9c3ec*0x64),_0xa5edd6=_0x467cdf?.['code']?.['approved']||{},_0x10279e=Number(_0xa5edd6?.['tasks'])||0x0,_0x5078e6=(Number(_0xa5edd6?.['linesAdded'])||0x0)-(Number(_0xa5edd6?.['linesDeleted'])||0x0),_0x4e2ee7=(Number(_0x467cdf?.['code']?.['linesAdded'])||0x0)-(Number(_0x467cdf?.['code']?.['linesDeleted'])||0x0),_0x314fae=Number(_0x467cdf?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0x1b032b)),setSummaryValue('usage-success-rate',_0x355fd6+'%',statusClassFromPercent(_0x355fd6)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x4e2ee7)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x314fae));const _0x48aee1=_0x1b032b>0x0?Math['round'](_0x10279e/_0x1b032b*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x10279e)+'\x20approved\x20('+_0x48aee1+'%)\x20·\x20'+formatNumber(_0x467cdf['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x467cdf['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x467cdf['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x467cdf['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x467cdf['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x467cdf['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x5078e6)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x467cdf['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x467cdf['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x467cdf['period']),renderBarList('usage-status-bars',_0x467cdf['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x467cdf['tasks']['byType']||{},_0x1b032b,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x467cdf['tasks']['byEnvironment']||{},_0x1b032b),renderUserTable('usage-user-body',_0x467cdf['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x467cdf['tasks']['bySource']||{},_0x1b032b,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x467cdf['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x467cdf['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x467cdf['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x467cdf['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0xa5edd6['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0xa5edd6['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0xa5edd6['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0xa5edd6['repositoriesAffected']||0x0);const _0x252ba2=(_0x55c5c3,_0x213881)=>_0x55c5c3>0x0?Math['round'](_0x213881/_0x55c5c3*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x252ba2(_0x467cdf['code']['linesAdded']||0x0,_0xa5edd6['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x252ba2(_0x467cdf['code']['linesDeleted']||0x0,_0xa5edd6['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x252ba2(_0x467cdf['code']['filesChanged']||0x0,_0xa5edd6['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x252ba2(_0x467cdf['code']['repositoriesAffected']||0x0,_0xa5edd6['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x4a1542){const _0x364fbe=_0x4a1542?.['from']?formatDateTime(_0x4a1542['from']):'the\x20earliest\x20loaded\x20task',_0x8e719a=_0x4a1542?.['to']?formatDateTime(_0x4a1542['to']):'now',_0x3d6b9a=_0x4a1542?.['days']?_0x4a1542['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x3d6b9a+'\x20·\x20'+_0x364fbe+'\x20to\x20'+_0x8e719a;}function renderBarList(_0x369522,_0x5b8f52){const _0x1c001b=document['getElementById'](_0x369522);if(!_0x1c001b)return;const _0x35e486=Object['entries'](_0x5b8f52)['filter'](([,_0x2b0a44])=>Number(_0x2b0a44)>0x0)['sort']((_0x426349,_0x4f13d0)=>_0x4f13d0[0x1]-_0x426349[0x1]),_0x3ee584=_0x35e486['reduce']((_0x51815,[,_0x34fe06])=>_0x51815+Number(_0x34fe06||0x0),0x0);if(_0x35e486['length']===0x0){_0x1c001b['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x1c001b['innerHTML']=_0x35e486['map'](([_0x98821d,_0xc3423e])=>{const _0x22d607=_0x3ee584>0x0?Math['max'](0x2,Math['round'](_0xc3423e/_0x3ee584*0x64)):0x0,_0xc4face=Utils['escapeHtml'](prettifyKey(_0x98821d)),_0x185b98=Utils['escapeHtml'](formatNumber(_0xc3423e));return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-label\x22>'+_0xc4face+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-track\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-fill\x20status-'+Utils['escapeHtml'](String(_0x98821d)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x22d607+'%\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-value\x22>'+_0x185b98+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x304510,_0xb028c6,_0x186744,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x290b98=document['getElementById'](_0x304510);if(!_0x290b98)return;const _0x46d929=Object['entries'](_0xb028c6)['filter'](([,_0x5bf1ce])=>Number(_0x5bf1ce)>0x0)['sort']((_0x574af6,_0x5d3f34)=>_0x5d3f34[0x1]-_0x574af6[0x1]||String(_0x574af6[0x0])['localeCompare'](String(_0x5d3f34[0x0])));if(_0x46d929['length']===0x0){_0x290b98['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x290b98['innerHTML']=_0x46d929['map'](([_0x22f372,_0x3bf191])=>{const _0x349a60=labelFormatter?labelFormatter(_0x22f372):_0x22f372,_0x5a1cec=includePercent?'<td>'+formatPercent(_0x186744>0x0?_0x3bf191/_0x186744*0x64:0x0)+'</td>':'';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](String(_0x349a60))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x3bf191))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5a1cec+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x5e0251,_0x17ab1b){const _0x21498a=document['getElementById'](_0x5e0251);if(!_0x21498a)return;if(!Array['isArray'](_0x17ab1b)||_0x17ab1b['length']===0x0){_0x21498a['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x21498a['innerHTML']=_0x17ab1b['map'](_0x4d86ba=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4d86ba['name']||_0x4d86ba['username']||_0x4d86ba['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x4d86ba['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x584aff,_0x3e17e0){document['querySelectorAll'](_0x584aff+'\x20.admin-filter-btn')['forEach'](_0x58b2ca=>{_0x58b2ca['classList']['toggle']('active',_0x58b2ca['dataset']['level']===_0x3e17e0||_0x58b2ca['dataset']['days']===_0x3e17e0||_0x58b2ca['dataset']['order']===_0x3e17e0);});}function scrollLogsToLiveEdge(_0x2a7d35){if(!_0x2a7d35)return;if(state['logs']['order']===LOG_ORDER_DESC){_0x2a7d35['scrollTop']=0x0;return;}_0x2a7d35['scrollTop']=_0x2a7d35['scrollHeight'];}function setSummaryValue(_0x329b6d,_0x496990,_0x16b1bf=''){const _0x37d3d3=document['getElementById'](_0x329b6d);if(!_0x37d3d3)return;_0x37d3d3['textContent']=_0x496990,_0x37d3d3['classList']['remove']('status-good','status-warn','status-bad'),_0x16b1bf&&_0x37d3d3['classList']['add'](_0x16b1bf);}function statusClassFromPercent(_0x5e6aeb){if(_0x5e6aeb>=0x50)return'status-good';if(_0x5e6aeb>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x349e71){const _0x468672=new Date(_0x349e71);if(Number['isNaN'](_0x468672['getTime']()))return _0x349e71||'Unknown';return _0x468672['toLocaleString']();}function formatDurationMinutes(_0x4d65e9){const _0x4e1c0c=Math['round'](Number(_0x4d65e9)||0x0);if(_0x4e1c0c<0x3c)return _0x4e1c0c+'m';const _0x2adde1=Math['floor'](_0x4e1c0c/0x3c),_0x476662=_0x4e1c0c%0x3c;return _0x476662>0x0?_0x2adde1+'h\x20'+_0x476662+'m':_0x2adde1+'h';}function formatPercent(_0x1ba7c0){return Math['round'](Number(_0x1ba7c0)||0x0)+'%';}function formatNumber(_0x24506d){return NUMBER_FORMATTER['format'](Number(_0x24506d)||0x0);}function formatSignedNumber(_0x5b49b0){const _0x29ecc6=Number(_0x5b49b0)||0x0;if(_0x29ecc6>0x0)return'+'+formatNumber(_0x29ecc6);return formatNumber(_0x29ecc6);}function prettifyKey(_0x32e756){return String(_0x32e756)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x28509a=>_0x28509a['toUpperCase']());}
|
|
1
|
+
import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const HEALTH_REFRESH_INTERVAL_MS=0x7530,LOG_SEARCH_DEBOUNCE_MS=0xfa,LOG_ORDER_ASC='asc',LOG_ORDER_DESC='desc',RESTART_POLL_INTERVAL_MS=0x7d0,RESTART_POLL_MAX_ATTEMPTS=0x1e,RESTART_MIN_SUCCESS_DELAY_MS=0x1b58,NUMBER_FORMATTER=new Intl['NumberFormat'](),state={'currentSection':'health','environments':[],'health':{'loaded':![],'request':null,'autoRefreshTimer':null,'versionChecked':![],'currentVersion':null,'latestVersion':null,'installCommand':null,'updateEnabled':![],'hasRestartCommand':![],'updateInProgress':![],'restartInProgress':![],'updateAvailable':![]},'logs':{'loaded':![],'request':null,'entries':[],'total':0x0,'minLevel':'INFO','level':'ALL','order':LOG_ORDER_ASC,'search':'','maxEntries':0x3e8,'stream':null,'streamState':'paused','live':![],'autoScroll':!![],'searchTimer':null},'usage':{'loaded':![],'request':null,'days':'30','environment':''}};document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle();const _0x56878b=await checkAdminAccess();await initializeAdminMenu(_0x56878b),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x5da240=getSessionValue('admin-health-auto-refresh');if(_0x5da240!==null){const _0x285ae3=document['getElementById']('health-auto-refresh');if(_0x285ae3)_0x285ae3['checked']=_0x5da240!=='false';}const _0x593890=getSessionValue('admin-logs-order');(_0x593890===LOG_ORDER_ASC||_0x593890===LOG_ORDER_DESC)&&(state['logs']['order']=_0x593890);syncLogOrderUi();const _0x3b031b=getSessionValue('admin-active-section'),_0x4f3843=['health','logs','usage']['includes'](_0x3b031b)?_0x3b031b:'health';await switchSection(_0x4f3843);}catch(_0x350909){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x350909),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x350909['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x50a4de=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x50a4de,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x50a4de;}catch(_0xaeac3d){_0xaeac3d['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0xaeac3d;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x5c3d3f=>{_0x5c3d3f['addEventListener']('click',()=>switchSection(_0x5c3d3f['dataset']['section']));}),document['getElementById']('retry-admin-btn')?.['addEventListener']('click',()=>{window['location']['reload']();}),document['getElementById']('health-refresh-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('retry-health-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('health-auto-refresh')?.['addEventListener']('change',syncHealthAutoRefresh),document['getElementById']('health-check-updates-btn')?.['addEventListener']('click',()=>loadVersionStatus({'checkUpdates':!![]})),document['getElementById']('health-copy-install-btn')?.['addEventListener']('click',copyInstallCommand),document['getElementById']('health-update-btn')?.['addEventListener']('click',applyUpdate),document['getElementById']('health-restart-btn')?.['addEventListener']('click',showRestartConfirmation),document['getElementById']('confirm-restart-btn')?.['addEventListener']('click',confirmRestart),document['getElementById']('cancel-restart-btn')?.['addEventListener']('click',hideRestartModal),document['getElementById']('close-restart-modal')?.['addEventListener']('click',hideRestartModal),document['querySelector']('#restart-modal\x20.modal-overlay')?.['addEventListener']('click',hideRestartModal),document['getElementById']('restart-overlay-retry')?.['addEventListener']('click',()=>waitForServerRestart({'manualRetry':!![]})),document['getElementById']('server-stop-containers')?.['addEventListener']('click',()=>runCleanupAction('Stopping\x20containers',()=>API['stopAllContainers']())),document['getElementById']('server-remove-stopped')?.['addEventListener']('click',()=>runCleanupAction('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']())),document['getElementById']('server-prune-docker')?.['addEventListener']('click',()=>runCleanupAction('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']())),document['getElementById']('cleanup-toggle')?.['addEventListener']('click',toggleCleanupSection),document['getElementById']('logs-refresh-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('retry-logs-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('logs-live-toggle')?.['addEventListener']('click',toggleLogsLiveMode),document['getElementById']('logs-clear-btn')?.['addEventListener']('click',clearDisplayedLogs),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x3b3a1a=>{_0x3b3a1a['addEventListener']('click',()=>{state['logs']['level']=_0x3b3a1a['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),document['querySelectorAll']('#logs-order-toggle\x20.admin-filter-btn')['forEach'](_0x14dfa8=>{_0x14dfa8['addEventListener']('click',()=>{setLogOrder(_0x14dfa8['dataset']['order'],{'focusLiveEdge':!![]});});}),document['getElementById']('logs-container')?.['addEventListener']('scroll',updateLogAutoScrollState),document['getElementById']('usage-refresh-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('retry-usage-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('usage-environment-filter')?.['addEventListener']('change',_0xde3bd4=>{state['usage']['environment']=_0xde3bd4['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0xc172ca=>{_0xc172ca['addEventListener']('click',()=>{state['usage']['days']=_0xc172ca['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x18c22d){if(!_0x18c22d)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x1f59c8=>{const _0x3ce5cf=_0x1f59c8['dataset']['section']===_0x18c22d;_0x1f59c8['classList']['toggle']('active',_0x3ce5cf),_0x1f59c8['setAttribute']('aria-selected',String(_0x3ce5cf));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x51dd6f=>{const _0x405a24=_0x51dd6f['id']==='section-'+_0x18c22d;_0x51dd6f['hidden']=!_0x405a24,_0x51dd6f['classList']['toggle']('active',_0x405a24);}),state['currentSection']=_0x18c22d,setSessionValue('admin-active-section',_0x18c22d),_0x18c22d!=='health'&&stopHealthAutoRefresh(),_0x18c22d!=='logs'&&stopLogStream(),_0x18c22d==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x18c22d==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x18c22d==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x52417e){try{return sessionStorage['getItem'](_0x52417e);}catch{return null;}}function setSessionValue(_0x3c1d25,_0xd4540b){try{sessionStorage['setItem'](_0x3c1d25,_0xd4540b);}catch{}}async function loadEnvironmentOptions(){const _0x13966a=await API['get']('/environments');state['environments']=(_0x13966a['environments']||[])['map'](_0xcb85a=>_0xcb85a?.['name'])['filter'](Boolean)['sort']((_0x53b3d8,_0x5baca5)=>_0x53b3d8['localeCompare'](_0x5baca5));const _0x5277ec=document['getElementById']('usage-environment-filter');if(!_0x5277ec)return;_0x5277ec['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x5e5136=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x5e5136)+'\x22>'+Utils['escapeHtml'](_0x5e5136)+'</option>')['join'](''),_0x5277ec['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x4a8858=document['getElementById']('health-auto-refresh');if(_0x4a8858)setSessionValue('admin-health-auto-refresh',String(_0x4a8858['checked']));const _0x4a790c=state['currentSection']==='health'&&!!_0x4a8858?.['checked'];stopHealthAutoRefresh();if(!_0x4a790c)return;state['health']['autoRefreshTimer']=window['setInterval'](()=>{loadHealth({'showLoading':![]});},HEALTH_REFRESH_INTERVAL_MS);}function stopHealthAutoRefresh(){state['health']['autoRefreshTimer']&&(clearInterval(state['health']['autoRefreshTimer']),state['health']['autoRefreshTimer']=null);}async function loadHealth({showLoading:showLoading=![]}={}){if(state['health']['request'])return state['health']['request'];return state['health']['request']=((async()=>{const _0xfa80a6=document['getElementById']('health-loading'),_0x214086=document['getElementById']('health-error'),_0x27f3d7=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0xfa80a6['hidden']=![],_0x214086['hidden']=!![],_0x27f3d7['hidden']=!![]);try{const [_0x4d99e7]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x2faa75=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x2faa75),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x4d99e7),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0xfa80a6['hidden']=!![],_0x214086['hidden']=!![],_0x27f3d7['hidden']=![],state['health']['loaded']=!![];}catch(_0x7c6218){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x7c6218),_0xfa80a6['hidden']=!![],_0x214086['hidden']=![],_0x27f3d7['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x7c6218['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x193d2e=document['getElementById']('health-update-btn'),_0x33df15=document['getElementById']('health-restart-btn');if(!_0x193d2e||!_0x33df15)return;const _0x310fe9=state['health']['updateEnabled'],_0xbe7a35=_0x310fe9&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x193d2e['hidden']=!_0xbe7a35,_0x193d2e['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x193d2e['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x33df15['hidden']=!_0x310fe9,_0x33df15['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x367ba4,output:_0x14dc30}){const _0x3c4db4=document['getElementById']('health-update-output-wrap'),_0x47c8c1=document['getElementById']('health-update-status'),_0x5ec2d4=document['getElementById']('health-update-output');if(!_0x3c4db4||!_0x47c8c1||!_0x5ec2d4)return;const _0x4b2300=_0x367ba4||'';_0x3c4db4['hidden']=![],_0x47c8c1['className']='admin-update-status',_0x4b2300&&_0x47c8c1['classList']['add'](_0x4b2300),_0x47c8c1['textContent']=_0x4b2300==='success'?'Success':_0x4b2300==='error'?'Failed':'In\x20Progress',_0x5ec2d4['textContent']=_0x14dc30||'No\x20output\x20returned.';}function buildCommandOutput(_0x81c651,_0x8196ec){const _0x22a4c5=[];typeof _0x81c651==='string'&&_0x81c651['trim']()&&_0x22a4c5['push'](_0x81c651['trim']());if(typeof _0x8196ec==='string'&&_0x8196ec['trim']()){const _0xbaf680=_0x8196ec['trim'](),_0x5c3270=_0x22a4c5['some'](_0x393b28=>_0x393b28['includes'](_0xbaf680));!_0x5c3270&&_0x22a4c5['push']('Error:\x0a'+_0xbaf680);}return _0x22a4c5['join']('\x0a\x0a');}function showRestartOverlay({title:_0x3263e2,message:_0x4094e6,showRetry:showRetry=![]}){const _0x404eb1=document['getElementById']('health-restart-overlay'),_0x193b0f=document['getElementById']('restart-overlay-title'),_0x3670f1=document['getElementById']('restart-overlay-message'),_0x9af4f6=document['getElementById']('restart-overlay-retry');if(!_0x404eb1||!_0x193b0f||!_0x3670f1||!_0x9af4f6)return;_0x193b0f['textContent']=_0x3263e2,_0x3670f1['textContent']=_0x4094e6,_0x9af4f6['hidden']=!showRetry,_0x404eb1['hidden']=![];}function hideRestartOverlay(){const _0x468998=document['getElementById']('health-restart-overlay');_0x468998&&(_0x468998['hidden']=!![]);}function sleep(_0x1b77b8){return new Promise(_0x1d853f=>{window['setTimeout'](_0x1d853f,_0x1b77b8);});}async function loadUpdateSettings(){const _0x4f6536=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x4f6536['enabled'],state['health']['hasRestartCommand']=!!_0x4f6536['hasRestartCommand'],syncHealthActionButtons(),_0x4f6536;}async function applyUpdate(){if(state['health']['updateInProgress']||!state['health']['latestVersion'])return;state['health']['updateInProgress']=!![],syncHealthActionButtons(),setUpdateOutput({'status':'in-progress','output':'Applying\x20server\x20update\x20to\x20'+state['health']['latestVersion']+'...'});try{const _0x2c9303=await API['applyServerUpdate'](state['health']['latestVersion']),_0x4c527b=buildCommandOutput(_0x2c9303['output'],_0x2c9303['error']);_0x2c9303['success']?(setUpdateOutput({'status':'success','output':_0x4c527b||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x4c527b||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x2c9303['error']||'Server\x20update\x20failed'));}catch(_0xf108b5){setUpdateOutput({'status':'error','output':buildCommandOutput(_0xf108b5['output'],_0xf108b5['commandError']||_0xf108b5['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0xf108b5['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0x29187d=document['getElementById']('restart-modal');_0x29187d&&(_0x29187d['hidden']=![]);}function hideRestartModal(){const _0x12a964=document['getElementById']('restart-modal');_0x12a964&&(_0x12a964['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x4e8481){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x4e8481['message']||'Failed\x20to\x20restart\x20server');}}async function waitForServerRestart({manualRetry:manualRetry=![]}={}){state['health']['restartInProgress']=!![],syncHealthActionButtons(),stopHealthAutoRefresh(),showRestartOverlay({'title':manualRetry?'Retrying\x20server\x20connection...':'Waiting\x20for\x20server\x20to\x20restart...','message':'The\x20page\x20will\x20automatically\x20refresh\x20when\x20the\x20server\x20is\x20back\x20online.','showRetry':![]});const _0x4d5ced=Date['now']();let _0x3af3e9=![];for(let _0x1f0e6a=0x0;_0x1f0e6a<RESTART_POLL_MAX_ATTEMPTS;_0x1f0e6a+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x2b137d=Date['now']()-_0x4d5ced;if(_0x3af3e9||_0x2b137d>=RESTART_MIN_SUCCESS_DELAY_MS){state['health']['restartInProgress']=![],state['health']['currentVersion']=null,hideRestartOverlay(),syncHealthActionButtons(),Utils['showSuccess']('Server\x20restart\x20complete'),await loadHealth({'showLoading':!![]}),syncHealthAutoRefresh();return;}}catch(_0x211e7c){_0x3af3e9=!![];}}state['health']['restartInProgress']=![],syncHealthActionButtons(),showRestartOverlay({'title':'Unable\x20to\x20reconnect\x20to\x20the\x20server','message':'The\x20server\x20may\x20still\x20be\x20restarting.\x20Retry\x20the\x20connection\x20when\x20you\x20are\x20ready.','showRetry':!![]}),Utils['showError']('Server\x20restart\x20is\x20taking\x20longer\x20than\x20expected');}async function loadVersionStatus({checkUpdates:checkUpdates=![]}={}){const _0x25c26e=document['getElementById']('health-check-updates-btn');_0x25c26e&&(_0x25c26e['disabled']=!![],_0x25c26e['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x5ecd4a=await API['get']('/health');state['health']['currentVersion']=_0x5ecd4a['version']||'Unavailable',document['getElementById']('health-version-current')['textContent']=state['health']['currentVersion'];if(!checkUpdates&&!state['health']['versionChecked']){state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Update\x20status\x20has\x20not\x20been\x20checked\x20yet.',document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion']||'Not\x20checked',syncHealthActionButtons();return;}if(checkUpdates){const _0x381489=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x381489['latestVersion']||'Unavailable',state['health']['installCommand']=_0x381489['installCommand']||null,state['health']['updateAvailable']=!!_0x381489['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x381489['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x381489),document['getElementById']('health-install-command')['textContent']=state['health']['installCommand']||'',document['getElementById']('health-install-command-wrap')['hidden']=!state['health']['installCommand'],document['getElementById']('health-copy-install-btn')['hidden']=!state['health']['installCommand'];}syncHealthActionButtons();}catch(_0x11ef49){console['error']('Failed\x20to\x20load\x20version\x20status',_0x11ef49),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x11ef49['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x25c26e&&(_0x25c26e['disabled']=![],_0x25c26e['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x2aa9f6){const _0x3919ad=_0x2aa9f6?.['versionStatus'];if(_0x3919ad==='update-available')return'Update\x20available:\x20'+_0x2aa9f6['currentVersion']+'\x20→\x20'+_0x2aa9f6['latestVersion'];if(_0x3919ad==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x2aa9f6['latestVersion']+').';if(_0x3919ad==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x2aa9f6['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x259bb1=await Utils['copyToClipboard'](state['health']['installCommand']);_0x259bb1?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x51d39e){document['getElementById']('cpu-usage')['textContent']=_0x51d39e['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x51d39e['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x51d39e['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x51d39e['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x51d39e['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x51d39e['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x51d39e['cpu']?.['percent'],statusFromPercent(_0x51d39e['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x51d39e['memory']?.['percent'],statusFromPercent(_0x51d39e['memory']?.['percent'])),setMetricProgress('disk-progress',_0x51d39e['disk']?.['percent'],statusFromPercent(_0x51d39e['disk']?.['percent']));const _0x1a744e=_0x51d39e['docker']?.['total']>0x0?_0x51d39e['docker']['running']/_0x51d39e['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x1a744e,'ok');const _0x3f42b1=_0x51d39e['dockerStorage']||{},_0x4faa1a=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x3f42b1['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x3f42b1['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x3f42b1['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x3f42b1['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x3f42b1['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x3f42b1['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x3f42b1['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x3f42b1['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x3f42b1['percent'],_0x3f42b1['status']||'ok'),_0x4faa1a['classList']['remove']('status-warning','status-critical'),_0x3f42b1['status']==='warning'&&_0x4faa1a['classList']['add']('status-warning'),_0x3f42b1['status']==='critical'&&_0x4faa1a['classList']['add']('status-critical');}function clampPercent(_0xee4210){if(!Number['isFinite'](_0xee4210))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0xee4210)));}function statusFromPercent(_0x47881){if(!Number['isFinite'](_0x47881))return'ok';if(_0x47881>=0x5a)return'critical';if(_0x47881>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x15432b,_0x2cdc4b,_0xeda036='ok'){const _0x333e04=document['getElementById'](_0x15432b);if(!_0x333e04)return;const _0x444cb7=clampPercent(_0x2cdc4b);_0x333e04['style']['width']=_0x444cb7+'%',_0x333e04['classList']['remove']('status-ok','status-warning','status-critical'),_0x333e04['classList']['add'](_0xeda036==='critical'?'status-critical':_0xeda036==='warning'?'status-warning':'status-ok'),_0x333e04['parentElement']?.['setAttribute']('aria-valuenow',String(_0x444cb7));}async function runCleanupAction(_0x41144f,_0x31a3cf){const _0x31ead0=document['getElementById']('server-health-action-status'),_0x2d6f78=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x2d6f78['forEach'](_0x3a5766=>{_0x3a5766['disabled']=!![];}),_0x31ead0['hidden']=![],_0x31ead0['classList']['remove']('success','error'),_0x31ead0['textContent']=_0x41144f+'...';try{const _0x3014a1=await _0x31a3cf();_0x31ead0['classList']['add']('success'),_0x31ead0['textContent']=_0x3014a1?.['message']||_0x41144f+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x5791a1){console['error'](_0x41144f+'\x20failed',_0x5791a1),_0x31ead0['classList']['add']('error'),_0x31ead0['textContent']=_0x5791a1['message']||_0x41144f+'\x20failed';}finally{_0x2d6f78['forEach'](_0x3d5c92=>{_0x3d5c92['disabled']=![];});}}function toggleCleanupSection(){const _0x19ca04=document['getElementById']('cleanup-section'),_0x24202d=document['getElementById']('cleanup-content'),_0x208e64=document['getElementById']('cleanup-toggle');if(!_0x19ca04||!_0x24202d||!_0x208e64)return;const _0x2483a3=_0x19ca04['classList']['toggle']('expanded');_0x24202d['hidden']=!_0x2483a3,_0x208e64['setAttribute']('aria-expanded',String(_0x2483a3));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x226dc0=document['getElementById']('logs-loading'),_0x23899c=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x226dc0['hidden']=![],_0x23899c['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x26aadf=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x26aadf['set']('level',state['logs']['level']);state['logs']['search']&&_0x26aadf['set']('search',state['logs']['search']);const _0x448883=await API['get']('/logs?'+_0x26aadf['toString']());state['logs']['entries']=Array['isArray'](_0x448883['entries'])?_0x448883['entries']['slice'](-state['logs']['maxEntries']):[],state['logs']['total']=Number(_0x448883['total'])||0x0,state['logs']['minLevel']=_0x448883['minLevel']||'INFO',state['logs']['loaded']=!![],_0x226dc0['hidden']=!![],_0x23899c['hidden']=!![],renderLogs();}catch(_0x18cd59){console['error']('Failed\x20to\x20load\x20logs',_0x18cd59),_0x226dc0['hidden']=!![],_0x23899c['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x18cd59['message']||'Unknown\x20error',document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![];}finally{state['logs']['request']=null;}})()),state['logs']['request'];}function renderLogs({stickToLiveEdge:stickToLiveEdge=![]}={}){const _0x31c3f8=document['getElementById']('logs-container'),_0x274a4e=document['getElementById']('logs-empty'),_0xa6bac3=stickToLiveEdge||state['logs']['autoScroll']&&state['logs']['live'],_0x204e6e=_0x31c3f8?.['scrollTop']||0x0,_0x242a14=_0x31c3f8?.['scrollHeight']||0x0,_0x5ec68c=getOrderedLogEntries();updateLogsMeta(_0x5ec68c['length']);if(_0x5ec68c['length']===0x0){_0x31c3f8['hidden']=!![],_0x274a4e['hidden']=![];return;}_0x274a4e['hidden']=!![],_0x31c3f8['hidden']=![],_0x31c3f8['innerHTML']=_0x5ec68c['map'](renderLogEntry)['join']('');if(_0xa6bac3){scrollLogsToLiveEdge(_0x31c3f8);return;}if(state['logs']['order']===LOG_ORDER_DESC){const _0xeb2b2b=_0x31c3f8['scrollHeight'],_0x8379a6=_0xeb2b2b-_0x242a14;_0x31c3f8['scrollTop']=_0x204e6e>0x0?_0x204e6e+Math['max'](_0x8379a6,0x0):_0x204e6e;return;}_0x31c3f8['scrollTop']=_0x204e6e;}function getVisibleLogEntries(){const _0x4d85dc=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x2c7b2e=>{if(state['logs']['level']!=='ALL'&&_0x2c7b2e['level']!==state['logs']['level'])return![];if(!_0x4d85dc)return!![];const _0x4e825e=String(_0x2c7b2e['message']||'')['toLowerCase'](),_0x2febf7=_0x2c7b2e['context']?JSON['stringify'](_0x2c7b2e['context'])['toLowerCase']():'';return _0x4e825e['includes'](_0x4d85dc)||_0x2febf7['includes'](_0x4d85dc);});}function getOrderedLogEntries(){const _0x48c8fc=getVisibleLogEntries();return state['logs']['order']===LOG_ORDER_DESC?_0x48c8fc['slice']()['reverse']():_0x48c8fc;}function renderLogEntry(_0x1ca538){const _0x276d36=Utils['escapeHtml'](formatDateTime(_0x1ca538['timestamp'])),_0x39d8ee=Utils['escapeHtml'](String(_0x1ca538['level']||'INFO')),_0x23840a=Utils['escapeHtml'](String(_0x1ca538['message']||'')),_0x54ddec=_0x1ca538['context']?'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22admin-log-context\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary>Context</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre>'+Utils['escapeHtml'](JSON['stringify'](_0x1ca538['context'],null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x276d36+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x39d8ee['toLowerCase']()+'\x22>'+_0x39d8ee+'</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-message\x22>'+_0x23840a+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x54ddec+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x486567){const _0x4117cb=document['getElementById']('logs-meta');if(!_0x4117cb)return;const _0x17520f=state['logs']['entries']['length'],_0x174d98=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x1da09a=state['logs']['order']===LOG_ORDER_DESC?'newest\x20first':'oldest\x20first';_0x4117cb['textContent']=_0x174d98?'Showing\x20'+_0x486567+'\x20of\x20'+_0x17520f+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters\x20in\x20'+_0x1da09a+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x486567+'\x20recent\x20buffered\x20entries\x20in\x20'+_0x1da09a+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}),startLogStream()):stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x3002a3=document['getElementById']('logs-live-toggle'),_0x53e6f6=document['getElementById']('logs-stream-status');if(!_0x3002a3||!_0x53e6f6)return;_0x53e6f6['classList']['remove']('live','error');if(!state['logs']['live']){_0x53e6f6['textContent']='Paused',_0x3002a3['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x53e6f6['textContent']='Live',_0x53e6f6['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x53e6f6['textContent']='Reconnecting',_0x53e6f6['classList']['add']('error')):_0x53e6f6['textContent']='Connecting';_0x3002a3['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x590853=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x590853,_0x590853['addEventListener']('log',_0xa690ec=>{try{const _0x5722db=JSON['parse'](_0xa690ec['data']);state['logs']['entries']['push'](_0x5722db),state['logs']['entries']['length']>state['logs']['maxEntries']&&state['logs']['entries']['shift'](),renderLogs();}catch(_0x5da347){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x5da347);}}),_0x590853['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x590853['onerror']=()=>{state['logs']['streamState']='error',updateLogsLiveUi();};}function stopLogStream(){state['logs']['stream']&&(state['logs']['stream']['close'](),state['logs']['stream']=null),state['logs']['streamState']='paused',updateLogsLiveUi();}function clearDisplayedLogs(){state['logs']['entries']=[],renderLogs();}function setLogOrder(_0x4c5179,{focusLiveEdge:focusLiveEdge=![]}={}){const _0x508434=_0x4c5179===LOG_ORDER_DESC?LOG_ORDER_DESC:LOG_ORDER_ASC;if(state['logs']['order']===_0x508434){focusLiveEdge&&(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}));return;}state['logs']['order']=_0x508434,setSessionValue('admin-logs-order',_0x508434),syncLogOrderUi(),focusLiveEdge&&(state['logs']['autoScroll']=!![]),renderLogs({'stickToLiveEdge':focusLiveEdge});}function syncLogOrderUi(){updateActiveFilterButtons('#logs-order-toggle',state['logs']['order']);}function handleLogsSearchInput(_0x5ba237){const _0x2ce1bc=_0x5ba237['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x2ce1bc,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x365b32=document['getElementById']('logs-container');if(!_0x365b32)return;const _0x1c7509=state['logs']['order']===LOG_ORDER_DESC?_0x365b32['scrollTop']:_0x365b32['scrollHeight']-_0x365b32['scrollTop']-_0x365b32['clientHeight'];state['logs']['autoScroll']=_0x1c7509<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x4ca17d=document['getElementById']('usage-loading'),_0x11b6bb=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x4ca17d['hidden']=![],_0x11b6bb['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x4a8cf7=new URLSearchParams();_0x4a8cf7['set']('days',state['usage']['days']);state['usage']['environment']&&_0x4a8cf7['set']('environment',state['usage']['environment']);const _0xe5ea0b=await API['get']('/stats?'+_0x4a8cf7['toString']());state['usage']['loaded']=!![],_0x4ca17d['hidden']=!![],_0x11b6bb['hidden']=!![],renderUsage(_0xe5ea0b);}catch(_0x24eee5){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x24eee5),_0x4ca17d['hidden']=!![],_0x11b6bb['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x24eee5['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x316c28){const _0xfb98f7=Number(_0x316c28?.['tasks']?.['total'])||0x0,_0x2e1df7=document['getElementById']('usage-empty'),_0x156e56=document['getElementById']('usage-content');if(_0xfb98f7===0x0){_0x2e1df7['hidden']=![],_0x156e56['hidden']=!![];return;}_0x2e1df7['hidden']=!![],_0x156e56['hidden']=![];const _0x2d069c=Number(_0x316c28?.['approvalRate']?.['successRate'])||0x0,_0x358e90=Math['round'](_0x2d069c*0x64),_0x375487=_0x316c28?.['code']?.['approved']||{},_0x4011c2=Number(_0x375487?.['tasks'])||0x0,_0x563766=(Number(_0x375487?.['linesAdded'])||0x0)-(Number(_0x375487?.['linesDeleted'])||0x0),_0x5527a8=(Number(_0x316c28?.['code']?.['linesAdded'])||0x0)-(Number(_0x316c28?.['code']?.['linesDeleted'])||0x0),_0x4f096e=Number(_0x316c28?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0xfb98f7)),setSummaryValue('usage-success-rate',_0x358e90+'%',statusClassFromPercent(_0x358e90)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x5527a8)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x4f096e));const _0x29b1c7=_0xfb98f7>0x0?Math['round'](_0x4011c2/_0xfb98f7*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x4011c2)+'\x20approved\x20('+_0x29b1c7+'%)\x20·\x20'+formatNumber(_0x316c28['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x316c28['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x316c28['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x316c28['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x316c28['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x316c28['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x563766)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x316c28['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x316c28['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x316c28['period']),renderBarList('usage-status-bars',_0x316c28['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x316c28['tasks']['byType']||{},_0xfb98f7,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x316c28['tasks']['byEnvironment']||{},_0xfb98f7),renderUserTable('usage-user-body',_0x316c28['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x316c28['tasks']['bySource']||{},_0xfb98f7,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x316c28['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x316c28['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x316c28['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x316c28['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x375487['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x375487['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x375487['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x375487['repositoriesAffected']||0x0);const _0x4c0781=(_0x2f16be,_0x4ec76f)=>_0x2f16be>0x0?Math['round'](_0x4ec76f/_0x2f16be*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x4c0781(_0x316c28['code']['linesAdded']||0x0,_0x375487['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x4c0781(_0x316c28['code']['linesDeleted']||0x0,_0x375487['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x4c0781(_0x316c28['code']['filesChanged']||0x0,_0x375487['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x4c0781(_0x316c28['code']['repositoriesAffected']||0x0,_0x375487['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x422e0c){const _0x428e16=_0x422e0c?.['from']?formatDateTime(_0x422e0c['from']):'the\x20earliest\x20loaded\x20task',_0x5a9f2e=_0x422e0c?.['to']?formatDateTime(_0x422e0c['to']):'now',_0x3a6a24=_0x422e0c?.['days']?_0x422e0c['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x3a6a24+'\x20·\x20'+_0x428e16+'\x20to\x20'+_0x5a9f2e;}function renderBarList(_0x35df8b,_0x11eecf){const _0x34250f=document['getElementById'](_0x35df8b);if(!_0x34250f)return;const _0x5babe2=Object['entries'](_0x11eecf)['filter'](([,_0x13da06])=>Number(_0x13da06)>0x0)['sort']((_0x211472,_0x4ec1e9)=>_0x4ec1e9[0x1]-_0x211472[0x1]),_0x45c551=_0x5babe2['reduce']((_0x13ec49,[,_0x32c5c3])=>_0x13ec49+Number(_0x32c5c3||0x0),0x0);if(_0x5babe2['length']===0x0){_0x34250f['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x34250f['innerHTML']=_0x5babe2['map'](([_0x3acdbd,_0x312976])=>{const _0x38f23d=_0x45c551>0x0?Math['max'](0x2,Math['round'](_0x312976/_0x45c551*0x64)):0x0,_0x4710cc=Utils['escapeHtml'](prettifyKey(_0x3acdbd)),_0xf80003=Utils['escapeHtml'](formatNumber(_0x312976));return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-label\x22>'+_0x4710cc+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-track\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-fill\x20status-'+Utils['escapeHtml'](String(_0x3acdbd)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x38f23d+'%\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-value\x22>'+_0xf80003+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x51f0bf,_0x3fe5ee,_0x4c02c1,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x2d0c64=document['getElementById'](_0x51f0bf);if(!_0x2d0c64)return;const _0x27a769=Object['entries'](_0x3fe5ee)['filter'](([,_0x3e072d])=>Number(_0x3e072d)>0x0)['sort']((_0x19d82a,_0x16682d)=>_0x16682d[0x1]-_0x19d82a[0x1]||String(_0x19d82a[0x0])['localeCompare'](String(_0x16682d[0x0])));if(_0x27a769['length']===0x0){_0x2d0c64['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x2d0c64['innerHTML']=_0x27a769['map'](([_0x58feef,_0x1de832])=>{const _0x48432d=labelFormatter?labelFormatter(_0x58feef):_0x58feef,_0x2ce5dd=includePercent?'<td>'+formatPercent(_0x4c02c1>0x0?_0x1de832/_0x4c02c1*0x64:0x0)+'</td>':'';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](String(_0x48432d))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x1de832))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2ce5dd+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x340eb,_0x568ebf){const _0x2069c8=document['getElementById'](_0x340eb);if(!_0x2069c8)return;if(!Array['isArray'](_0x568ebf)||_0x568ebf['length']===0x0){_0x2069c8['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x2069c8['innerHTML']=_0x568ebf['map'](_0xae9f1f=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0xae9f1f['name']||_0xae9f1f['username']||_0xae9f1f['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0xae9f1f['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x4403e9,_0x31b301){document['querySelectorAll'](_0x4403e9+'\x20.admin-filter-btn')['forEach'](_0x526d31=>{_0x526d31['classList']['toggle']('active',_0x526d31['dataset']['level']===_0x31b301||_0x526d31['dataset']['days']===_0x31b301||_0x526d31['dataset']['order']===_0x31b301);});}function scrollLogsToLiveEdge(_0x8536ba){if(!_0x8536ba)return;if(state['logs']['order']===LOG_ORDER_DESC){_0x8536ba['scrollTop']=0x0;return;}_0x8536ba['scrollTop']=_0x8536ba['scrollHeight'];}function setSummaryValue(_0x4c2824,_0x5d56bc,_0x49833d=''){const _0x5b635f=document['getElementById'](_0x4c2824);if(!_0x5b635f)return;_0x5b635f['textContent']=_0x5d56bc,_0x5b635f['classList']['remove']('status-good','status-warn','status-bad'),_0x49833d&&_0x5b635f['classList']['add'](_0x49833d);}function statusClassFromPercent(_0x490295){if(_0x490295>=0x50)return'status-good';if(_0x490295>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x49d14d){const _0x49078b=new Date(_0x49d14d);if(Number['isNaN'](_0x49078b['getTime']()))return _0x49d14d||'Unknown';return _0x49078b['toLocaleString']();}function formatDurationMinutes(_0x32002c){const _0x493725=Math['round'](Number(_0x32002c)||0x0);if(_0x493725<0x3c)return _0x493725+'m';const _0x55bf06=Math['floor'](_0x493725/0x3c),_0x1c714e=_0x493725%0x3c;return _0x1c714e>0x0?_0x55bf06+'h\x20'+_0x1c714e+'m':_0x55bf06+'h';}function formatPercent(_0x2c3830){return Math['round'](Number(_0x2c3830)||0x0)+'%';}function formatNumber(_0x20e3c2){return NUMBER_FORMATTER['format'](Number(_0x20e3c2)||0x0);}function formatSignedNumber(_0x1a066a){const _0x3e6369=Number(_0x1a066a)||0x0;if(_0x3e6369>0x0)return'+'+formatNumber(_0x3e6369);return formatNumber(_0x3e6369);}function prettifyKey(_0x1b59ea){return String(_0x1b59ea)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x762436=>_0x762436['toUpperCase']());}
|