@profoundlogic/coderflow-server 0.8.6 → 0.8.7
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/base-image/Dockerfile +3 -2
- package/dist/base-image/agent-wrapper.sh +7 -2
- 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/slack-service.js +1 -0
- 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/slack.js +1 -0
- 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.html +146 -0
- 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-client.transport-warning.js +1 -0
- 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(_0x4d0744){if(!_0x4d0744)return'';return String(_0x4d0744)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function computeLineDiff(_0x1f29a5,_0x2ca7dc,_0x59c7e0,_0x18c817){const _0x58aabf=(_0x1f29a5||'')['split']('\x0a'),_0x2ce41d=(_0x2ca7dc||'')['split']('\x0a'),_0x33e83b=(_0x59c7e0||0x1)-0x1,_0x5b36fc=(_0x18c817||_0x59c7e0||0x1)-0x1,_0x59db87=computeLCS(_0x58aabf,_0x2ce41d),_0x4a5170={'left':[],'right':[]};let _0x169899=0x0,_0x4df75b=0x0,_0x2bc7a0=0x0;while(_0x169899<_0x58aabf['length']||_0x4df75b<_0x2ce41d['length']){if(_0x2bc7a0<_0x59db87['length']&&_0x169899<_0x58aabf['length']&&_0x58aabf[_0x169899]===_0x59db87[_0x2bc7a0]&&_0x4df75b<_0x2ce41d['length']&&_0x2ce41d[_0x4df75b]===_0x59db87[_0x2bc7a0])_0x4a5170['left']['push']({'type':'context','content':_0x58aabf[_0x169899],'lineNum':_0x169899+0x1+_0x33e83b}),_0x4a5170['right']['push']({'type':'context','content':_0x2ce41d[_0x4df75b],'lineNum':_0x4df75b+0x1+_0x5b36fc}),_0x169899++,_0x4df75b++,_0x2bc7a0++;else{if(_0x2bc7a0<_0x59db87['length']&&_0x4df75b<_0x2ce41d['length']&&_0x2ce41d[_0x4df75b]===_0x59db87[_0x2bc7a0])_0x4a5170['left']['push']({'type':'remove','content':_0x58aabf[_0x169899],'lineNum':_0x169899+0x1+_0x33e83b}),_0x4a5170['right']['push']({'type':'empty','content':'','lineNum':null}),_0x169899++;else{if(_0x2bc7a0<_0x59db87['length']&&_0x169899<_0x58aabf['length']&&_0x58aabf[_0x169899]===_0x59db87[_0x2bc7a0])_0x4a5170['left']['push']({'type':'empty','content':'','lineNum':null}),_0x4a5170['right']['push']({'type':'add','content':_0x2ce41d[_0x4df75b],'lineNum':_0x4df75b+0x1+_0x5b36fc}),_0x4df75b++;else{if(_0x169899<_0x58aabf['length']&&_0x4df75b<_0x2ce41d['length'])_0x4a5170['left']['push']({'type':'remove','content':_0x58aabf[_0x169899],'lineNum':_0x169899+0x1+_0x33e83b}),_0x4a5170['right']['push']({'type':'add','content':_0x2ce41d[_0x4df75b],'lineNum':_0x4df75b+0x1+_0x5b36fc}),_0x169899++,_0x4df75b++;else{if(_0x169899<_0x58aabf['length'])_0x4a5170['left']['push']({'type':'remove','content':_0x58aabf[_0x169899],'lineNum':_0x169899+0x1+_0x33e83b}),_0x4a5170['right']['push']({'type':'empty','content':'','lineNum':null}),_0x169899++;else _0x4df75b<_0x2ce41d['length']&&(_0x4a5170['left']['push']({'type':'empty','content':'','lineNum':null}),_0x4a5170['right']['push']({'type':'add','content':_0x2ce41d[_0x4df75b],'lineNum':_0x4df75b+0x1+_0x5b36fc}),_0x4df75b++);}}}}}return _0x4a5170;}function computeLCS(_0x469afd,_0x70a34){const _0x456dc8=_0x469afd['length'],_0x2e75aa=_0x70a34['length'],_0x5933b1=Array(_0x456dc8+0x1)['fill'](null)['map'](()=>Array(_0x2e75aa+0x1)['fill'](0x0));for(let _0x43e7e4=0x1;_0x43e7e4<=_0x456dc8;_0x43e7e4++){for(let _0x13a1a8=0x1;_0x13a1a8<=_0x2e75aa;_0x13a1a8++){_0x469afd[_0x43e7e4-0x1]===_0x70a34[_0x13a1a8-0x1]?_0x5933b1[_0x43e7e4][_0x13a1a8]=_0x5933b1[_0x43e7e4-0x1][_0x13a1a8-0x1]+0x1:_0x5933b1[_0x43e7e4][_0x13a1a8]=Math['max'](_0x5933b1[_0x43e7e4-0x1][_0x13a1a8],_0x5933b1[_0x43e7e4][_0x13a1a8-0x1]);}}const _0x4d49ad=[];let _0x5a7da7=_0x456dc8,_0x85b689=_0x2e75aa;while(_0x5a7da7>0x0&&_0x85b689>0x0){if(_0x469afd[_0x5a7da7-0x1]===_0x70a34[_0x85b689-0x1])_0x4d49ad['unshift'](_0x469afd[_0x5a7da7-0x1]),_0x5a7da7--,_0x85b689--;else _0x5933b1[_0x5a7da7-0x1][_0x85b689]>_0x5933b1[_0x5a7da7][_0x85b689-0x1]?_0x5a7da7--:_0x85b689--;}return _0x4d49ad;}function renderEditDiffLine(_0x101104,_0x4f8333){const _0xb2cbd3=_0x101104['lineNum']!==null?String(_0x101104['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0x14ed3d=escapeHtml(_0x101104['content']);let _0x296a71='edit-diff-line',_0x5a3606='\x20';switch(_0x101104['type']){case'add':_0x296a71+='\x20edit-diff-add',_0x5a3606='+';break;case'remove':_0x296a71+='\x20edit-diff-remove',_0x5a3606='-';break;case'empty':_0x296a71+='\x20edit-diff-empty',_0x5a3606='\x20';break;default:_0x296a71+='\x20edit-diff-context',_0x5a3606='\x20';}return'<div\x20class=\x22'+_0x296a71+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0xb2cbd3+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x5a3606+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0x14ed3d||' ')+'</span></div>';}export function formatBashDetail(_0x20ab43){if(!_0x20ab43)return'<p>No\x20data\x20available</p>';if(_0x20ab43['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(_0x20ab43['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(_0x20ab43['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(_0x20ab43['stdout']!==undefined||_0x20ab43['stderr']!==undefined||_0x20ab43['aggregated_output']!==undefined){const _0x559d37=_0x20ab43['aggregated_output']&&_0x20ab43['aggregated_output']['trim']()['length']>0x0,_0x4033d4=!_0x559d37&&_0x20ab43['stdout']&&_0x20ab43['stdout']['trim']()['length']>0x0,_0x5c350a=_0x20ab43['stderr']&&_0x20ab43['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(_0x20ab43['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x559d37?'\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(_0x20ab43['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'+(_0x4033d4?'\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(_0x20ab43['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'+(_0x5c350a?'\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(_0x20ab43['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'+(!_0x559d37&&!_0x4033d4&&!_0x5c350a?'<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'+(_0x20ab43['exitCode']===0x0?'success':'error')+'\x22>'+_0x20ab43['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(_0x20ab43['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(_0x20ab43['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x2f109d){if(!_0x2f109d)return'<p>No\x20data\x20available</p>';if(_0x2f109d['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(_0x2f109d['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(_0x2f109d['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(_0x2f109d['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(_0x2f109d['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x147c39){if(!_0x147c39)return'<p>No\x20data\x20available</p>';if(_0x147c39['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(_0x147c39['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(_0x147c39['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 _0x256316=_0x147c39['content']['length']>0xc350?_0x147c39['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x147c39['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(_0x147c39['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('+_0x147c39['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x256316)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x316739){if(!_0x316739)return'<p>No\x20data\x20available</p>';if(_0x316739['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(_0x316739['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(_0x316739['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(_0x316739['diff']&&!_0x316739['oldString']&&!_0x316739['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(_0x316739['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(_0x316739['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x316739['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x316739['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x1175cb=computeLineDiff(_0x316739['oldString'],_0x316739['newString'],_0x316739['startLine'],_0x316739['startLine']),_0xfda2d6=Math['max'](_0x1175cb['left']['length'],_0x1175cb['right']['length']);let _0x4ac846='';for(let _0x157b5e=0x0;_0x157b5e<_0xfda2d6;_0x157b5e++){const _0x3e2366=_0x1175cb['left'][_0x157b5e]||{'type':'empty','content':'','lineNum':null},_0x4eed59=_0x1175cb['right'][_0x157b5e]||{'type':'empty','content':'','lineNum':null};_0x4ac846+='\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(_0x3e2366,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0x4eed59,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x50c5d8=_0x1175cb['left']['filter'](_0x3d498a=>_0x3d498a['type']==='remove')['length'],_0x5dba79=_0x1175cb['right']['filter'](_0x1ff491=>_0x1ff491['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(_0x316739['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'+(_0x316739['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>-'+_0x50c5d8+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x5dba79+'</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'+_0x4ac846+'\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(_0x271678){if(!_0x271678)return'<p>No\x20data\x20available</p>';if(_0x271678['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(_0x271678['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(_0x271678['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(_0x271678['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x271678['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(_0x271678['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(_0x271678['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(_0x271678['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(_0x2c453d){if(!_0x2c453d)return'<p>No\x20data\x20available</p>';if(_0x2c453d['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(_0x2c453d['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(_0x2c453d['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(_0x2c453d['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x2c453d['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(_0x2c453d['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(_0x2c453d['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(_0x15eb14){if(!_0x15eb14)return'<p>No\x20data\x20available</p>';if(_0x15eb14['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(_0x15eb14['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x15eb14['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(_0x15eb14['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(_0x15eb14['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x15eb14['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x15eb14['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(_0x15eb14['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(_0x15eb14['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x727797){if(!_0x727797)return'<p>No\x20data\x20available</p>';if(_0x727797['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(_0x727797['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(_0x727797['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(_0x727797['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(_0x727797['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x429a78){if(!_0x429a78)return'<p>No\x20data\x20available</p>';if(_0x429a78['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(_0x429a78['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(_0x429a78['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(_0x429a78['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x429a78['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(_0x429a78['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(_0x429a78['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x468089){if(!_0x468089)return'<p>No\x20data\x20available</p>';if(_0x468089['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(_0x468089['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(_0x468089['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 _0x38065d=_0x468089['toolInput']?.['skill']||_0x468089['skill']||'',_0x2c4690=_0x468089['content']||_0x468089['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(_0x38065d)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x2c4690?'\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(_0x2c4690)+'</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(_0x58503a){if(!_0x58503a)return'<p>No\x20data\x20available</p>';if(_0x58503a['error']&&(!_0x58503a['questions']||_0x58503a['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(_0x58503a['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 _0xeccbc5=_0x58503a['questions']||(_0x58503a['question']?[_0x58503a]:[]);if(_0xeccbc5['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'](_0x58503a,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x49d2c9=_0xeccbc5['map']((_0xfcb04f,_0x4b9caf)=>{const _0x38b2a0=_0xfcb04f['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0xfcb04f['header'])+'</span>':'',_0x33b66e=_0xfcb04f['question']?escapeHtml(_0xfcb04f['question']):_0xfcb04f['header']?'':'Question',_0x49c27b=_0xfcb04f['options']?.['length']||0x0,_0x54062a=_0x49c27b>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x49c27b+'\x20options</span>':'',_0xfab6d9=_0xfcb04f['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x1a8284=_0xeccbc5['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x4b9caf+0x1)+'.</span>\x20':'';let _0x2bbe6d='';return _0xfcb04f['options']&&Array['isArray'](_0xfcb04f['options'])&&_0xfcb04f['options']['length']>0x0&&(_0x2bbe6d='\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'+_0xfcb04f['options']['map'](_0xbde9cc=>'\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(_0xbde9cc['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xbde9cc['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0xbde9cc['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xbde9cc['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0xbde9cc['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'+_0x1a8284+_0x38b2a0+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x33b66e+'</span>'+_0x54062a+_0xfab6d9+'\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'+_0x2bbe6d+'\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 _0xb3eff9='';if(_0x58503a['answer'])_0xb3eff9='\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(_0x58503a['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x58503a['denied']&&(_0xb3eff9='<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'+_0x49d2c9+'\x0a\x20\x20\x20\x20\x20\x20'+_0xb3eff9+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x5370a0){if(!_0x5370a0)return'<p>No\x20data\x20available</p>';if(_0x5370a0['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(_0x5370a0['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(_0x5370a0['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 _0x164e18=_0x5370a0['description']||_0x5370a0['toolInput']?.['description']||'',_0x383d1a=_0x5370a0['subagentType']||_0x5370a0['toolInput']?.['subagent_type']||'',_0x229f16=_0x5370a0['model']||_0x5370a0['toolInput']?.['model']||'',_0x5713e3=_0x5370a0['prompt']||_0x5370a0['toolInput']?.['prompt']||'',_0xdef534=_0x5370a0['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x164e18?'\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(_0x164e18)+'</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'+(_0x383d1a?'\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(_0x383d1a)+'</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'+(_0x229f16?'\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(_0x229f16)+'</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'+(_0x5713e3?'\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(_0x5713e3)+'</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'+(_0xdef534?'\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(_0xdef534)+'</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(_0x149853){if(!_0x149853)return'<p>No\x20data\x20available</p>';if(_0x149853['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(_0x149853['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(_0x149853['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 _0x5dc43b=_0x149853['description']||_0x149853['toolInput']?.['description']||'',_0x17cd7c=_0x149853['subagentType']||_0x149853['toolInput']?.['subagent_type']||'',_0x29047e=_0x149853['prompt']||_0x149853['toolInput']?.['prompt']||'',_0x3f6e16=_0x149853['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x5dc43b?'\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(_0x5dc43b)+'</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'+(_0x17cd7c?'\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(_0x17cd7c)+'</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'+(_0x29047e?'\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(_0x29047e)+'</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'+(_0x3f6e16?'\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(_0x3f6e16)+'</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(_0x5ef641){if(!_0x5ef641)return'';return String(_0x5ef641)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function computeLineDiff(_0x2e62e4,_0x47a927,_0x43ac10,_0x13001d){const _0x4113b1=(_0x2e62e4||'')['split']('\x0a'),_0xfc6bc3=(_0x47a927||'')['split']('\x0a'),_0x50156d=(_0x43ac10||0x1)-0x1,_0x28ed50=(_0x13001d||_0x43ac10||0x1)-0x1,_0xd16df5=computeLCS(_0x4113b1,_0xfc6bc3),_0x5e19d9={'left':[],'right':[]};let _0x3e8034=0x0,_0x20d33b=0x0,_0x377a65=0x0;while(_0x3e8034<_0x4113b1['length']||_0x20d33b<_0xfc6bc3['length']){if(_0x377a65<_0xd16df5['length']&&_0x3e8034<_0x4113b1['length']&&_0x4113b1[_0x3e8034]===_0xd16df5[_0x377a65]&&_0x20d33b<_0xfc6bc3['length']&&_0xfc6bc3[_0x20d33b]===_0xd16df5[_0x377a65])_0x5e19d9['left']['push']({'type':'context','content':_0x4113b1[_0x3e8034],'lineNum':_0x3e8034+0x1+_0x50156d}),_0x5e19d9['right']['push']({'type':'context','content':_0xfc6bc3[_0x20d33b],'lineNum':_0x20d33b+0x1+_0x28ed50}),_0x3e8034++,_0x20d33b++,_0x377a65++;else{if(_0x377a65<_0xd16df5['length']&&_0x20d33b<_0xfc6bc3['length']&&_0xfc6bc3[_0x20d33b]===_0xd16df5[_0x377a65])_0x5e19d9['left']['push']({'type':'remove','content':_0x4113b1[_0x3e8034],'lineNum':_0x3e8034+0x1+_0x50156d}),_0x5e19d9['right']['push']({'type':'empty','content':'','lineNum':null}),_0x3e8034++;else{if(_0x377a65<_0xd16df5['length']&&_0x3e8034<_0x4113b1['length']&&_0x4113b1[_0x3e8034]===_0xd16df5[_0x377a65])_0x5e19d9['left']['push']({'type':'empty','content':'','lineNum':null}),_0x5e19d9['right']['push']({'type':'add','content':_0xfc6bc3[_0x20d33b],'lineNum':_0x20d33b+0x1+_0x28ed50}),_0x20d33b++;else{if(_0x3e8034<_0x4113b1['length']&&_0x20d33b<_0xfc6bc3['length'])_0x5e19d9['left']['push']({'type':'remove','content':_0x4113b1[_0x3e8034],'lineNum':_0x3e8034+0x1+_0x50156d}),_0x5e19d9['right']['push']({'type':'add','content':_0xfc6bc3[_0x20d33b],'lineNum':_0x20d33b+0x1+_0x28ed50}),_0x3e8034++,_0x20d33b++;else{if(_0x3e8034<_0x4113b1['length'])_0x5e19d9['left']['push']({'type':'remove','content':_0x4113b1[_0x3e8034],'lineNum':_0x3e8034+0x1+_0x50156d}),_0x5e19d9['right']['push']({'type':'empty','content':'','lineNum':null}),_0x3e8034++;else _0x20d33b<_0xfc6bc3['length']&&(_0x5e19d9['left']['push']({'type':'empty','content':'','lineNum':null}),_0x5e19d9['right']['push']({'type':'add','content':_0xfc6bc3[_0x20d33b],'lineNum':_0x20d33b+0x1+_0x28ed50}),_0x20d33b++);}}}}}return _0x5e19d9;}function computeLCS(_0x3c4b8d,_0x59efe6){const _0x50aaef=_0x3c4b8d['length'],_0x409964=_0x59efe6['length'],_0x4cefcf=Array(_0x50aaef+0x1)['fill'](null)['map'](()=>Array(_0x409964+0x1)['fill'](0x0));for(let _0x10a48a=0x1;_0x10a48a<=_0x50aaef;_0x10a48a++){for(let _0x6397d2=0x1;_0x6397d2<=_0x409964;_0x6397d2++){_0x3c4b8d[_0x10a48a-0x1]===_0x59efe6[_0x6397d2-0x1]?_0x4cefcf[_0x10a48a][_0x6397d2]=_0x4cefcf[_0x10a48a-0x1][_0x6397d2-0x1]+0x1:_0x4cefcf[_0x10a48a][_0x6397d2]=Math['max'](_0x4cefcf[_0x10a48a-0x1][_0x6397d2],_0x4cefcf[_0x10a48a][_0x6397d2-0x1]);}}const _0x1c5144=[];let _0x37525b=_0x50aaef,_0x13521e=_0x409964;while(_0x37525b>0x0&&_0x13521e>0x0){if(_0x3c4b8d[_0x37525b-0x1]===_0x59efe6[_0x13521e-0x1])_0x1c5144['unshift'](_0x3c4b8d[_0x37525b-0x1]),_0x37525b--,_0x13521e--;else _0x4cefcf[_0x37525b-0x1][_0x13521e]>_0x4cefcf[_0x37525b][_0x13521e-0x1]?_0x37525b--:_0x13521e--;}return _0x1c5144;}function renderEditDiffLine(_0x523eb5,_0x39a8ed){const _0x273662=_0x523eb5['lineNum']!==null?String(_0x523eb5['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0x1e73c1=escapeHtml(_0x523eb5['content']);let _0x2bdb76='edit-diff-line',_0x266c54='\x20';switch(_0x523eb5['type']){case'add':_0x2bdb76+='\x20edit-diff-add',_0x266c54='+';break;case'remove':_0x2bdb76+='\x20edit-diff-remove',_0x266c54='-';break;case'empty':_0x2bdb76+='\x20edit-diff-empty',_0x266c54='\x20';break;default:_0x2bdb76+='\x20edit-diff-context',_0x266c54='\x20';}return'<div\x20class=\x22'+_0x2bdb76+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0x273662+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x266c54+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0x1e73c1||' ')+'</span></div>';}export function formatBashDetail(_0x45f424){if(!_0x45f424)return'<p>No\x20data\x20available</p>';if(_0x45f424['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(_0x45f424['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(_0x45f424['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(_0x45f424['stdout']!==undefined||_0x45f424['stderr']!==undefined||_0x45f424['aggregated_output']!==undefined){const _0x465139=_0x45f424['aggregated_output']&&_0x45f424['aggregated_output']['trim']()['length']>0x0,_0x41b334=!_0x465139&&_0x45f424['stdout']&&_0x45f424['stdout']['trim']()['length']>0x0,_0x327776=_0x45f424['stderr']&&_0x45f424['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(_0x45f424['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x465139?'\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(_0x45f424['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'+(_0x41b334?'\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(_0x45f424['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'+(_0x327776?'\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(_0x45f424['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'+(!_0x465139&&!_0x41b334&&!_0x327776?'<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'+(_0x45f424['exitCode']===0x0?'success':'error')+'\x22>'+_0x45f424['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(_0x45f424['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(_0x45f424['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x530fda){if(!_0x530fda)return'<p>No\x20data\x20available</p>';if(_0x530fda['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(_0x530fda['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(_0x530fda['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(_0x530fda['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(_0x530fda['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x3659b6){if(!_0x3659b6)return'<p>No\x20data\x20available</p>';if(_0x3659b6['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(_0x3659b6['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(_0x3659b6['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 _0x42f474=_0x3659b6['content']['length']>0xc350?_0x3659b6['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x3659b6['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(_0x3659b6['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('+_0x3659b6['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x42f474)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x36fede){if(!_0x36fede)return'<p>No\x20data\x20available</p>';if(_0x36fede['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(_0x36fede['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(_0x36fede['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(_0x36fede['diff']&&!_0x36fede['oldString']&&!_0x36fede['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(_0x36fede['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(_0x36fede['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x36fede['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x36fede['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x21c93e=computeLineDiff(_0x36fede['oldString'],_0x36fede['newString'],_0x36fede['startLine'],_0x36fede['startLine']),_0x236fb1=Math['max'](_0x21c93e['left']['length'],_0x21c93e['right']['length']);let _0x5a5d54='';for(let _0x5cbb78=0x0;_0x5cbb78<_0x236fb1;_0x5cbb78++){const _0x1f7b80=_0x21c93e['left'][_0x5cbb78]||{'type':'empty','content':'','lineNum':null},_0x48fdde=_0x21c93e['right'][_0x5cbb78]||{'type':'empty','content':'','lineNum':null};_0x5a5d54+='\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(_0x1f7b80,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0x48fdde,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x738821=_0x21c93e['left']['filter'](_0x3dd062=>_0x3dd062['type']==='remove')['length'],_0x444c79=_0x21c93e['right']['filter'](_0x1478ba=>_0x1478ba['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(_0x36fede['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'+(_0x36fede['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>-'+_0x738821+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x444c79+'</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'+_0x5a5d54+'\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(_0x1b7393){if(!_0x1b7393)return'<p>No\x20data\x20available</p>';if(_0x1b7393['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(_0x1b7393['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(_0x1b7393['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(_0x1b7393['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1b7393['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(_0x1b7393['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(_0x1b7393['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(_0x1b7393['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(_0x1f6966){if(!_0x1f6966)return'<p>No\x20data\x20available</p>';if(_0x1f6966['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(_0x1f6966['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(_0x1f6966['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(_0x1f6966['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1f6966['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(_0x1f6966['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(_0x1f6966['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(_0x432fdb){if(!_0x432fdb)return'<p>No\x20data\x20available</p>';if(_0x432fdb['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(_0x432fdb['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x432fdb['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(_0x432fdb['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(_0x432fdb['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x432fdb['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x432fdb['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(_0x432fdb['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(_0x432fdb['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x3e802a){if(!_0x3e802a)return'<p>No\x20data\x20available</p>';if(_0x3e802a['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(_0x3e802a['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(_0x3e802a['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(_0x3e802a['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(_0x3e802a['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x48966e){if(!_0x48966e)return'<p>No\x20data\x20available</p>';if(_0x48966e['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(_0x48966e['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(_0x48966e['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(_0x48966e['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x48966e['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(_0x48966e['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(_0x48966e['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x52dcd5){if(!_0x52dcd5)return'<p>No\x20data\x20available</p>';if(_0x52dcd5['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(_0x52dcd5['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(_0x52dcd5['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 _0x277ac9=_0x52dcd5['toolInput']?.['skill']||_0x52dcd5['skill']||'',_0x4cceac=_0x52dcd5['content']||_0x52dcd5['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(_0x277ac9)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x4cceac?'\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(_0x4cceac)+'</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(_0x173e4e){if(!_0x173e4e)return'<p>No\x20data\x20available</p>';if(_0x173e4e['error']&&(!_0x173e4e['questions']||_0x173e4e['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(_0x173e4e['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 _0x157f9c=_0x173e4e['questions']||(_0x173e4e['question']?[_0x173e4e]:[]);if(_0x157f9c['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'](_0x173e4e,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x467f0f=_0x157f9c['map']((_0x1d0e73,_0x4cf7bd)=>{const _0x3fefb4=_0x1d0e73['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0x1d0e73['header'])+'</span>':'',_0x543937=_0x1d0e73['question']?escapeHtml(_0x1d0e73['question']):_0x1d0e73['header']?'':'Question',_0x14e5df=_0x1d0e73['options']?.['length']||0x0,_0x4c35c6=_0x14e5df>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x14e5df+'\x20options</span>':'',_0x4882d3=_0x1d0e73['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x2e7e35=_0x157f9c['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x4cf7bd+0x1)+'.</span>\x20':'';let _0xf0602='';return _0x1d0e73['options']&&Array['isArray'](_0x1d0e73['options'])&&_0x1d0e73['options']['length']>0x0&&(_0xf0602='\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'+_0x1d0e73['options']['map'](_0xfda20c=>'\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(_0xfda20c['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xfda20c['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0xfda20c['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xfda20c['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0xfda20c['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'+_0x2e7e35+_0x3fefb4+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x543937+'</span>'+_0x4c35c6+_0x4882d3+'\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'+_0xf0602+'\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 _0x55cc3c='';if(_0x173e4e['answer'])_0x55cc3c='\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(_0x173e4e['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x173e4e['denied']&&(_0x55cc3c='<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'+_0x467f0f+'\x0a\x20\x20\x20\x20\x20\x20'+_0x55cc3c+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x59cc24){if(!_0x59cc24)return'<p>No\x20data\x20available</p>';if(_0x59cc24['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(_0x59cc24['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(_0x59cc24['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 _0x5bcaf9=_0x59cc24['description']||_0x59cc24['toolInput']?.['description']||'',_0x14322f=_0x59cc24['subagentType']||_0x59cc24['toolInput']?.['subagent_type']||'',_0x3bc8a8=_0x59cc24['model']||_0x59cc24['toolInput']?.['model']||'',_0x26b49a=_0x59cc24['prompt']||_0x59cc24['toolInput']?.['prompt']||'',_0x2df5e9=_0x59cc24['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x5bcaf9?'\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(_0x5bcaf9)+'</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'+(_0x14322f?'\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(_0x14322f)+'</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'+(_0x3bc8a8?'\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(_0x3bc8a8)+'</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'+(_0x26b49a?'\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(_0x26b49a)+'</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'+(_0x2df5e9?'\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(_0x2df5e9)+'</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(_0x5b76eb){if(!_0x5b76eb)return'<p>No\x20data\x20available</p>';if(_0x5b76eb['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(_0x5b76eb['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(_0x5b76eb['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 _0x35f436=_0x5b76eb['description']||_0x5b76eb['toolInput']?.['description']||'',_0x2e2498=_0x5b76eb['subagentType']||_0x5b76eb['toolInput']?.['subagent_type']||'',_0x3d82e8=_0x5b76eb['prompt']||_0x5b76eb['toolInput']?.['prompt']||'',_0x3d7ce6=_0x5b76eb['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x35f436?'\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(_0x35f436)+'</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'+(_0x2e2498?'\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(_0x2e2498)+'</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'+(_0x3d82e8?'\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(_0x3d82e8)+'</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'+(_0x3d7ce6?'\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(_0x3d7ce6)+'</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':[],'nextEntryId':0x1,'selectedEntryIds':new Set(),'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 _0x411ae5=await checkAdminAccess();await initializeAdminMenu(_0x411ae5),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x1ba7b5=getSessionValue('admin-health-auto-refresh');if(_0x1ba7b5!==null){const _0x3a6e38=document['getElementById']('health-auto-refresh');if(_0x3a6e38)_0x3a6e38['checked']=_0x1ba7b5!=='false';}const _0x176fe6=getSessionValue('admin-logs-order');(_0x176fe6===LOG_ORDER_ASC||_0x176fe6===LOG_ORDER_DESC)&&(state['logs']['order']=_0x176fe6);syncLogOrderUi();const _0xf267e=getSessionValue('admin-active-section'),_0x4611dc=['health','logs','usage']['includes'](_0xf267e)?_0xf267e:'health';await switchSection(_0x4611dc);}catch(_0x113035){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x113035),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x113035['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x48bda8=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x48bda8,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x48bda8;}catch(_0xf3ae4d){_0xf3ae4d['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0xf3ae4d;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x46c835=>{_0x46c835['addEventListener']('click',()=>switchSection(_0x46c835['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-select-visible-btn')?.['addEventListener']('click',toggleVisibleLogSelection),document['getElementById']('logs-clear-selection-btn')?.['addEventListener']('click',clearSelectedLogEntries),document['getElementById']('logs-copy-selected-btn')?.['addEventListener']('click',copySelectedLogEntries),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0xf84622=>{_0xf84622['addEventListener']('click',()=>{state['logs']['level']=_0xf84622['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),document['querySelectorAll']('#logs-order-toggle\x20.admin-filter-btn')['forEach'](_0x482ba4=>{_0x482ba4['addEventListener']('click',()=>{setLogOrder(_0x482ba4['dataset']['order'],{'focusLiveEdge':!![]});});}),document['getElementById']('logs-container')?.['addEventListener']('click',handleLogContainerClick),document['getElementById']('logs-container')?.['addEventListener']('change',handleLogContainerChange),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',_0x3660b7=>{state['usage']['environment']=_0x3660b7['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0x30df88=>{_0x30df88['addEventListener']('click',()=>{state['usage']['days']=_0x30df88['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x2ea350){if(!_0x2ea350)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x366fda=>{const _0x42974f=_0x366fda['dataset']['section']===_0x2ea350;_0x366fda['classList']['toggle']('active',_0x42974f),_0x366fda['setAttribute']('aria-selected',String(_0x42974f));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x26d42e=>{const _0x329512=_0x26d42e['id']==='section-'+_0x2ea350;_0x26d42e['hidden']=!_0x329512,_0x26d42e['classList']['toggle']('active',_0x329512);}),state['currentSection']=_0x2ea350,setSessionValue('admin-active-section',_0x2ea350),_0x2ea350!=='health'&&stopHealthAutoRefresh(),_0x2ea350!=='logs'&&stopLogStream(),_0x2ea350==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x2ea350==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x2ea350==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x3fb7f0){try{return sessionStorage['getItem'](_0x3fb7f0);}catch{return null;}}function setSessionValue(_0x59e963,_0x10dbde){try{sessionStorage['setItem'](_0x59e963,_0x10dbde);}catch{}}async function loadEnvironmentOptions(){const _0x13da5b=await API['get']('/environments');state['environments']=(_0x13da5b['environments']||[])['map'](_0x490a52=>_0x490a52?.['name'])['filter'](Boolean)['sort']((_0x1fb471,_0x22db4d)=>_0x1fb471['localeCompare'](_0x22db4d));const _0x13ba0e=document['getElementById']('usage-environment-filter');if(!_0x13ba0e)return;_0x13ba0e['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x32587c=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x32587c)+'\x22>'+Utils['escapeHtml'](_0x32587c)+'</option>')['join'](''),_0x13ba0e['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x37d94c=document['getElementById']('health-auto-refresh');if(_0x37d94c)setSessionValue('admin-health-auto-refresh',String(_0x37d94c['checked']));const _0x25cbd6=state['currentSection']==='health'&&!!_0x37d94c?.['checked'];stopHealthAutoRefresh();if(!_0x25cbd6)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 _0x4df90e=document['getElementById']('health-loading'),_0x1fa8c5=document['getElementById']('health-error'),_0x59f76e=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0x4df90e['hidden']=![],_0x1fa8c5['hidden']=!![],_0x59f76e['hidden']=!![]);try{const [_0x23aff2]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x35697a=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x35697a),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x23aff2),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0x4df90e['hidden']=!![],_0x1fa8c5['hidden']=!![],_0x59f76e['hidden']=![],state['health']['loaded']=!![];}catch(_0x5bf965){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x5bf965),_0x4df90e['hidden']=!![],_0x1fa8c5['hidden']=![],_0x59f76e['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x5bf965['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x4da972=document['getElementById']('health-update-btn'),_0x500b17=document['getElementById']('health-restart-btn');if(!_0x4da972||!_0x500b17)return;const _0x5a09a2=state['health']['updateEnabled'],_0x38ad20=_0x5a09a2&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x4da972['hidden']=!_0x38ad20,_0x4da972['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x4da972['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x500b17['hidden']=!_0x5a09a2,_0x500b17['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x1182e7,output:_0x3b90fe}){const _0x13a969=document['getElementById']('health-update-output-wrap'),_0x109b9e=document['getElementById']('health-update-status'),_0x221fa0=document['getElementById']('health-update-output');if(!_0x13a969||!_0x109b9e||!_0x221fa0)return;const _0x4358d4=_0x1182e7||'';_0x13a969['hidden']=![],_0x109b9e['className']='admin-update-status',_0x4358d4&&_0x109b9e['classList']['add'](_0x4358d4),_0x109b9e['textContent']=_0x4358d4==='success'?'Success':_0x4358d4==='error'?'Failed':'In\x20Progress',_0x221fa0['textContent']=_0x3b90fe||'No\x20output\x20returned.';}function buildCommandOutput(_0xef84b2,_0x388005){const _0x329fbe=[];typeof _0xef84b2==='string'&&_0xef84b2['trim']()&&_0x329fbe['push'](_0xef84b2['trim']());if(typeof _0x388005==='string'&&_0x388005['trim']()){const _0x1062a=_0x388005['trim'](),_0x43ddf8=_0x329fbe['some'](_0x43a347=>_0x43a347['includes'](_0x1062a));!_0x43ddf8&&_0x329fbe['push']('Error:\x0a'+_0x1062a);}return _0x329fbe['join']('\x0a\x0a');}function showRestartOverlay({title:_0x410967,message:_0x65d4b1,showRetry:showRetry=![]}){const _0x1f3a2f=document['getElementById']('health-restart-overlay'),_0x2e17cf=document['getElementById']('restart-overlay-title'),_0x221c95=document['getElementById']('restart-overlay-message'),_0x12c227=document['getElementById']('restart-overlay-retry');if(!_0x1f3a2f||!_0x2e17cf||!_0x221c95||!_0x12c227)return;_0x2e17cf['textContent']=_0x410967,_0x221c95['textContent']=_0x65d4b1,_0x12c227['hidden']=!showRetry,_0x1f3a2f['hidden']=![];}function hideRestartOverlay(){const _0xd91b36=document['getElementById']('health-restart-overlay');_0xd91b36&&(_0xd91b36['hidden']=!![]);}function sleep(_0x22f97c){return new Promise(_0xffd389=>{window['setTimeout'](_0xffd389,_0x22f97c);});}async function loadUpdateSettings(){const _0x18018c=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x18018c['enabled'],state['health']['hasRestartCommand']=!!_0x18018c['hasRestartCommand'],syncHealthActionButtons(),_0x18018c;}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 _0x110d57=await API['applyServerUpdate'](state['health']['latestVersion']),_0x35e5b9=buildCommandOutput(_0x110d57['output'],_0x110d57['error']);_0x110d57['success']?(setUpdateOutput({'status':'success','output':_0x35e5b9||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x35e5b9||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x110d57['error']||'Server\x20update\x20failed'));}catch(_0x1fed94){setUpdateOutput({'status':'error','output':buildCommandOutput(_0x1fed94['output'],_0x1fed94['commandError']||_0x1fed94['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0x1fed94['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0x47db5c=document['getElementById']('restart-modal');_0x47db5c&&(_0x47db5c['hidden']=![]);}function hideRestartModal(){const _0x2f950b=document['getElementById']('restart-modal');_0x2f950b&&(_0x2f950b['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0xb59e7c){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0xb59e7c['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 _0x3abdf7=Date['now']();let _0x484fba=![];for(let _0x55f38a=0x0;_0x55f38a<RESTART_POLL_MAX_ATTEMPTS;_0x55f38a+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x1041ab=Date['now']()-_0x3abdf7;if(_0x484fba||_0x1041ab>=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(_0x21e376){_0x484fba=!![];}}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 _0x5811b3=document['getElementById']('health-check-updates-btn');_0x5811b3&&(_0x5811b3['disabled']=!![],_0x5811b3['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x4fd967=await API['get']('/health');state['health']['currentVersion']=_0x4fd967['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 _0x156891=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x156891['latestVersion']||'Unavailable',state['health']['installCommand']=_0x156891['installCommand']||null,state['health']['updateAvailable']=!!_0x156891['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x156891['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x156891),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(_0xf380b7){console['error']('Failed\x20to\x20load\x20version\x20status',_0xf380b7),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0xf380b7['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x5811b3&&(_0x5811b3['disabled']=![],_0x5811b3['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x546274){const _0x177270=_0x546274?.['versionStatus'];if(_0x177270==='update-available')return'Update\x20available:\x20'+_0x546274['currentVersion']+'\x20→\x20'+_0x546274['latestVersion'];if(_0x177270==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x546274['latestVersion']+').';if(_0x177270==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x546274['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x102bf5=await Utils['copyToClipboard'](state['health']['installCommand']);_0x102bf5?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x3086cf){document['getElementById']('cpu-usage')['textContent']=_0x3086cf['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x3086cf['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x3086cf['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x3086cf['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x3086cf['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x3086cf['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x3086cf['cpu']?.['percent'],statusFromPercent(_0x3086cf['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x3086cf['memory']?.['percent'],statusFromPercent(_0x3086cf['memory']?.['percent'])),setMetricProgress('disk-progress',_0x3086cf['disk']?.['percent'],statusFromPercent(_0x3086cf['disk']?.['percent']));const _0x2376f0=_0x3086cf['docker']?.['total']>0x0?_0x3086cf['docker']['running']/_0x3086cf['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x2376f0,'ok');const _0x36d23e=_0x3086cf['dockerStorage']||{},_0x2f8b93=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x36d23e['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x36d23e['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x36d23e['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x36d23e['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x36d23e['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x36d23e['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x36d23e['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x36d23e['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x36d23e['percent'],_0x36d23e['status']||'ok'),_0x2f8b93['classList']['remove']('status-warning','status-critical'),_0x36d23e['status']==='warning'&&_0x2f8b93['classList']['add']('status-warning'),_0x36d23e['status']==='critical'&&_0x2f8b93['classList']['add']('status-critical');}function clampPercent(_0x4037ea){if(!Number['isFinite'](_0x4037ea))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x4037ea)));}function statusFromPercent(_0x11a0c3){if(!Number['isFinite'](_0x11a0c3))return'ok';if(_0x11a0c3>=0x5a)return'critical';if(_0x11a0c3>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x9aced6,_0x31b3da,_0x2addaf='ok'){const _0x4bee6f=document['getElementById'](_0x9aced6);if(!_0x4bee6f)return;const _0xd3d091=clampPercent(_0x31b3da);_0x4bee6f['style']['width']=_0xd3d091+'%',_0x4bee6f['classList']['remove']('status-ok','status-warning','status-critical'),_0x4bee6f['classList']['add'](_0x2addaf==='critical'?'status-critical':_0x2addaf==='warning'?'status-warning':'status-ok'),_0x4bee6f['parentElement']?.['setAttribute']('aria-valuenow',String(_0xd3d091));}async function runCleanupAction(_0x136900,_0x3cf4b4){const _0x78921b=document['getElementById']('server-health-action-status'),_0x34e4b=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x34e4b['forEach'](_0x412acb=>{_0x412acb['disabled']=!![];}),_0x78921b['hidden']=![],_0x78921b['classList']['remove']('success','error'),_0x78921b['textContent']=_0x136900+'...';try{const _0x41baa6=await _0x3cf4b4();_0x78921b['classList']['add']('success'),_0x78921b['textContent']=_0x41baa6?.['message']||_0x136900+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x9e8993){console['error'](_0x136900+'\x20failed',_0x9e8993),_0x78921b['classList']['add']('error'),_0x78921b['textContent']=_0x9e8993['message']||_0x136900+'\x20failed';}finally{_0x34e4b['forEach'](_0x346c41=>{_0x346c41['disabled']=![];});}}function toggleCleanupSection(){const _0x3a096f=document['getElementById']('cleanup-section'),_0x7caa17=document['getElementById']('cleanup-content'),_0x127097=document['getElementById']('cleanup-toggle');if(!_0x3a096f||!_0x7caa17||!_0x127097)return;const _0x3a6055=_0x3a096f['classList']['toggle']('expanded');_0x7caa17['hidden']=!_0x3a6055,_0x127097['setAttribute']('aria-expanded',String(_0x3a6055));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x20645e=document['getElementById']('logs-loading'),_0x44a0a3=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x20645e['hidden']=![],_0x44a0a3['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x12c39b=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x12c39b['set']('level',state['logs']['level']);state['logs']['search']&&_0x12c39b['set']('search',state['logs']['search']);const _0xb85d9b=await API['get']('/logs?'+_0x12c39b['toString']());state['logs']['entries']=Array['isArray'](_0xb85d9b['entries'])?normalizeLogEntries(_0xb85d9b['entries'])['slice'](-state['logs']['maxEntries']):[],state['logs']['selectedEntryIds']['clear'](),state['logs']['total']=Number(_0xb85d9b['total'])||0x0,state['logs']['minLevel']=_0xb85d9b['minLevel']||'INFO',state['logs']['loaded']=!![],_0x20645e['hidden']=!![],_0x44a0a3['hidden']=!![],renderLogs();}catch(_0x2433ef){console['error']('Failed\x20to\x20load\x20logs',_0x2433ef),_0x20645e['hidden']=!![],_0x44a0a3['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x2433ef['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 _0x5ac318=document['getElementById']('logs-container'),_0x23cbda=document['getElementById']('logs-empty'),_0x5826e3=stickToLiveEdge||state['logs']['autoScroll']&&state['logs']['live'],_0x5b4ffb=_0x5ac318?.['scrollTop']||0x0,_0x468b0b=_0x5ac318?.['scrollHeight']||0x0,_0x502618=getOrderedLogEntries();updateLogsMeta(_0x502618['length']),syncLogSelectionUi(_0x502618);if(_0x502618['length']===0x0){_0x5ac318['hidden']=!![],_0x23cbda['hidden']=![];return;}_0x23cbda['hidden']=!![],_0x5ac318['hidden']=![],_0x5ac318['innerHTML']=_0x502618['map'](renderLogEntry)['join']('');if(_0x5826e3){scrollLogsToLiveEdge(_0x5ac318);return;}if(state['logs']['order']===LOG_ORDER_DESC){const _0x827124=_0x5ac318['scrollHeight'],_0x262b63=_0x827124-_0x468b0b;_0x5ac318['scrollTop']=_0x5b4ffb>0x0?_0x5b4ffb+Math['max'](_0x262b63,0x0):_0x5b4ffb;return;}_0x5ac318['scrollTop']=_0x5b4ffb;}function createLogEntryId(){const _0x451122=state['logs']['nextEntryId'];return state['logs']['nextEntryId']+=0x1,'server-log-'+_0x451122;}function normalizeLogEntry(_0x28e6b8){return{..._0x28e6b8,'_clientId':createLogEntryId()};}function normalizeLogEntries(_0x39becc){return _0x39becc['map'](normalizeLogEntry);}function getVisibleLogEntries(){const _0x34c858=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x5ca5d0=>{if(state['logs']['level']!=='ALL'&&_0x5ca5d0['level']!==state['logs']['level'])return![];if(!_0x34c858)return!![];const _0x46265e=String(_0x5ca5d0['message']||'')['toLowerCase'](),_0x266295=_0x5ca5d0['context']?JSON['stringify'](_0x5ca5d0['context'])['toLowerCase']():'';return _0x46265e['includes'](_0x34c858)||_0x266295['includes'](_0x34c858);});}function getOrderedLogEntries(){const _0x111072=getVisibleLogEntries();return state['logs']['order']===LOG_ORDER_DESC?_0x111072['slice']()['reverse']():_0x111072;}function findLogEntry(_0x2fd9a4){return state['logs']['entries']['find'](_0x46c282=>_0x46c282['_clientId']===_0x2fd9a4)||null;}function getSelectedVisibleLogEntries(_0x4a8a39=getOrderedLogEntries()){return _0x4a8a39['filter'](_0x4a2717=>state['logs']['selectedEntryIds']['has'](_0x4a2717['_clientId']));}function renderLogEntry(_0x3bdc8b){const _0x58a743=Utils['escapeHtml'](String(_0x3bdc8b['_clientId']||'')),_0x5064b2=Utils['escapeHtml'](formatDateTime(_0x3bdc8b['timestamp'])),_0x543b76=Utils['escapeHtml'](String(_0x3bdc8b['level']||'INFO')),_0x374948=Utils['escapeHtml'](String(_0x3bdc8b['message']||'')),_0xc85f9a=formatLogContext(_0x3bdc8b['context']),_0x4fa61b=_0xc85f9a?'\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'](_0xc85f9a)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'',_0x20ef87=state['logs']['selectedEntryIds']['has'](_0x3bdc8b['_clientId'])?'\x20selected':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry'+_0x20ef87+'\x22\x20data-log-entry-id=\x22'+_0x58a743+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header-main\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22admin-log-select\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22checkbox\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22admin-log-select-checkbox\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-log-entry-id=\x22'+_0x58a743+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20aria-label=\x22Select\x20log\x20entry\x20from\x20'+_0x5064b2+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x20ef87?'checked':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x5064b2+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x543b76['toLowerCase']()+'\x22>'+_0x543b76+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-ghost\x20btn-small\x20admin-log-copy-btn\x22\x20data-log-copy-id=\x22'+_0x58a743+'\x22>Copy</button>\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=\x22admin-log-message\x22>'+_0x374948+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x4fa61b+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x22eaa7){const _0x1e48b3=document['getElementById']('logs-meta');if(!_0x1e48b3)return;const _0x319896=state['logs']['entries']['length'],_0x5cf4cf=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x326aa0=state['logs']['order']===LOG_ORDER_DESC?'newest\x20first':'oldest\x20first';_0x1e48b3['textContent']=_0x5cf4cf?'Showing\x20'+_0x22eaa7+'\x20of\x20'+_0x319896+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters\x20in\x20'+_0x326aa0+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x22eaa7+'\x20recent\x20buffered\x20entries\x20in\x20'+_0x326aa0+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function syncLogSelectionUi(_0x237cb2=getOrderedLogEntries()){const _0x11580b=document['getElementById']('logs-selection-count'),_0x447e31=document['getElementById']('logs-select-visible-btn'),_0x1646ee=document['getElementById']('logs-clear-selection-btn'),_0xa808dc=document['getElementById']('logs-copy-selected-btn'),_0xf9e844=getSelectedVisibleLogEntries(_0x237cb2),_0x56ce3d=_0x237cb2['length']>0x0,_0x1f4647=_0xf9e844['length']>0x0,_0x56b9db=_0x56ce3d&&_0xf9e844['length']===_0x237cb2['length'],_0x231c3c=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x90d87a=_0x231c3c?'Select\x20Filtered':'Select\x20All\x20Shown',_0x2566e0=_0x231c3c?'Deselect\x20Filtered':'Deselect\x20All\x20Shown';_0x11580b&&(_0x11580b['textContent']=_0xf9e844['length']+'\x20selected'),_0x447e31&&(_0x447e31['disabled']=!_0x56ce3d,_0x447e31['textContent']=_0x56b9db?_0x2566e0:_0x90d87a),_0x1646ee&&(_0x1646ee['disabled']=!_0x1f4647),_0xa808dc&&(_0xa808dc['disabled']=!_0x1f4647);}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}),startLogStream()):stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x2541d7=document['getElementById']('logs-live-toggle'),_0x6d1858=document['getElementById']('logs-stream-status');if(!_0x2541d7||!_0x6d1858)return;_0x6d1858['classList']['remove']('live','error');if(!state['logs']['live']){_0x6d1858['textContent']='Paused',_0x2541d7['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x6d1858['textContent']='Live',_0x6d1858['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x6d1858['textContent']='Reconnecting',_0x6d1858['classList']['add']('error')):_0x6d1858['textContent']='Connecting';_0x2541d7['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0xb968e7=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0xb968e7,_0xb968e7['addEventListener']('log',_0x396cb2=>{try{const _0x31db76=normalizeLogEntry(JSON['parse'](_0x396cb2['data']));state['logs']['entries']['push'](_0x31db76);if(state['logs']['entries']['length']>state['logs']['maxEntries']){const _0x1717f5=state['logs']['entries']['shift']();state['logs']['selectedEntryIds']['delete'](_0x1717f5?.['_clientId']);}renderLogs();}catch(_0x4aef37){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x4aef37);}}),_0xb968e7['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0xb968e7['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']=[],state['logs']['selectedEntryIds']['clear'](),renderLogs();}function handleLogContainerClick(_0x2bdb33){const _0x119ebd=_0x2bdb33['target']['closest']('[data-log-copy-id]');if(!_0x119ebd)return;const _0x133fb7=findLogEntry(_0x119ebd['dataset']['logCopyId']||'');if(!_0x133fb7){Utils['showError']('Log\x20entry\x20is\x20no\x20longer\x20available');return;}copyLogEntries([_0x133fb7],{'successMessage':'Log\x20entry\x20copied'});}function handleLogContainerChange(_0x29b729){const _0x46ac07=_0x29b729['target']['closest']('.admin-log-select-checkbox');if(!_0x46ac07)return;const _0x113340=_0x46ac07['dataset']['logEntryId']||'';if(!_0x113340)return;_0x46ac07['checked']?state['logs']['selectedEntryIds']['add'](_0x113340):state['logs']['selectedEntryIds']['delete'](_0x113340),_0x46ac07['closest']('.admin-log-entry')?.['classList']['toggle']('selected',_0x46ac07['checked']),syncLogSelectionUi();}function toggleVisibleLogSelection(){const _0x821024=getOrderedLogEntries();if(_0x821024['length']===0x0)return;const _0x41f775=getSelectedVisibleLogEntries(_0x821024),_0x3656b2=_0x41f775['length']!==_0x821024['length'];_0x821024['forEach'](_0x16728a=>{_0x3656b2?state['logs']['selectedEntryIds']['add'](_0x16728a['_clientId']):state['logs']['selectedEntryIds']['delete'](_0x16728a['_clientId']);}),renderLogs();}function clearSelectedLogEntries(){if(state['logs']['selectedEntryIds']['size']===0x0)return;state['logs']['selectedEntryIds']['clear'](),renderLogs();}async function copySelectedLogEntries(){const _0xf967f6=getSelectedVisibleLogEntries();if(_0xf967f6['length']===0x0)return;await copyLogEntries(_0xf967f6,{'successMessage':_0xf967f6['length']===0x1?'Log\x20entry\x20copied':_0xf967f6['length']+'\x20log\x20entries\x20copied'});}async function copyLogEntries(_0x4e325a,{successMessage:successMessage='Log\x20entries\x20copied'}={}){const _0x9ea104=formatLogEntriesForClipboard(_0x4e325a);if(!_0x9ea104){Utils['showError']('No\x20log\x20content\x20available\x20to\x20copy');return;}const _0x343be4=await Utils['copyToClipboard'](_0x9ea104);_0x343be4?Utils['showSuccess'](successMessage):Utils['showError']('Failed\x20to\x20copy\x20logs');}function setLogOrder(_0x4d88c0,{focusLiveEdge:focusLiveEdge=![]}={}){const _0x3313d0=_0x4d88c0===LOG_ORDER_DESC?LOG_ORDER_DESC:LOG_ORDER_ASC;if(state['logs']['order']===_0x3313d0){focusLiveEdge&&(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}));return;}state['logs']['order']=_0x3313d0,setSessionValue('admin-logs-order',_0x3313d0),syncLogOrderUi(),focusLiveEdge&&(state['logs']['autoScroll']=!![]),renderLogs({'stickToLiveEdge':focusLiveEdge});}function syncLogOrderUi(){updateActiveFilterButtons('#logs-order-toggle',state['logs']['order']);}function handleLogsSearchInput(_0x3196bb){const _0x39bf96=_0x3196bb['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x39bf96,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x43840e=document['getElementById']('logs-container');if(!_0x43840e)return;const _0x1f3ce7=state['logs']['order']===LOG_ORDER_DESC?_0x43840e['scrollTop']:_0x43840e['scrollHeight']-_0x43840e['scrollTop']-_0x43840e['clientHeight'];state['logs']['autoScroll']=_0x1f3ce7<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x4cf3aa=document['getElementById']('usage-loading'),_0x44a297=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x4cf3aa['hidden']=![],_0x44a297['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x4a751f=new URLSearchParams();_0x4a751f['set']('days',state['usage']['days']);state['usage']['environment']&&_0x4a751f['set']('environment',state['usage']['environment']);const _0x575c28=await API['get']('/stats?'+_0x4a751f['toString']());state['usage']['loaded']=!![],_0x4cf3aa['hidden']=!![],_0x44a297['hidden']=!![],renderUsage(_0x575c28);}catch(_0x2fbae6){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x2fbae6),_0x4cf3aa['hidden']=!![],_0x44a297['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x2fbae6['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x36f40f){const _0x506d0f=Number(_0x36f40f?.['tasks']?.['total'])||0x0,_0x55b9fa=document['getElementById']('usage-empty'),_0x582a64=document['getElementById']('usage-content');if(_0x506d0f===0x0){_0x55b9fa['hidden']=![],_0x582a64['hidden']=!![];return;}_0x55b9fa['hidden']=!![],_0x582a64['hidden']=![];const _0x177442=Number(_0x36f40f?.['approvalRate']?.['successRate'])||0x0,_0x21d630=Math['round'](_0x177442*0x64),_0x5022c7=_0x36f40f?.['code']?.['approved']||{},_0x48d01a=Number(_0x5022c7?.['tasks'])||0x0,_0x18a1f2=(Number(_0x5022c7?.['linesAdded'])||0x0)-(Number(_0x5022c7?.['linesDeleted'])||0x0),_0x2a5475=(Number(_0x36f40f?.['code']?.['linesAdded'])||0x0)-(Number(_0x36f40f?.['code']?.['linesDeleted'])||0x0),_0x436138=Number(_0x36f40f?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0x506d0f)),setSummaryValue('usage-success-rate',_0x21d630+'%',statusClassFromPercent(_0x21d630)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x2a5475)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x436138));const _0x59d8d5=_0x506d0f>0x0?Math['round'](_0x48d01a/_0x506d0f*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x48d01a)+'\x20approved\x20('+_0x59d8d5+'%)\x20·\x20'+formatNumber(_0x36f40f['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x36f40f['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x36f40f['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x36f40f['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x36f40f['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x36f40f['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x18a1f2)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x36f40f['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x36f40f['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x36f40f['period']),renderBarList('usage-status-bars',_0x36f40f['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x36f40f['tasks']['byType']||{},_0x506d0f,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x36f40f['tasks']['byEnvironment']||{},_0x506d0f),renderUserTable('usage-user-body',_0x36f40f['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x36f40f['tasks']['bySource']||{},_0x506d0f,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x36f40f['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x36f40f['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x36f40f['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x36f40f['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x5022c7['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x5022c7['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x5022c7['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x5022c7['repositoriesAffected']||0x0);const _0x32e05d=(_0x13a4ce,_0x346c6e)=>_0x13a4ce>0x0?Math['round'](_0x346c6e/_0x13a4ce*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x32e05d(_0x36f40f['code']['linesAdded']||0x0,_0x5022c7['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x32e05d(_0x36f40f['code']['linesDeleted']||0x0,_0x5022c7['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x32e05d(_0x36f40f['code']['filesChanged']||0x0,_0x5022c7['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x32e05d(_0x36f40f['code']['repositoriesAffected']||0x0,_0x5022c7['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x58d613){const _0x92f16b=_0x58d613?.['from']?formatDateTime(_0x58d613['from']):'the\x20earliest\x20loaded\x20task',_0x508718=_0x58d613?.['to']?formatDateTime(_0x58d613['to']):'now',_0x5ee31e=_0x58d613?.['days']?_0x58d613['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x5ee31e+'\x20·\x20'+_0x92f16b+'\x20to\x20'+_0x508718;}function renderBarList(_0x1d4f11,_0x30b330){const _0x42192c=document['getElementById'](_0x1d4f11);if(!_0x42192c)return;const _0x852db7=Object['entries'](_0x30b330)['filter'](([,_0x370c0d])=>Number(_0x370c0d)>0x0)['sort']((_0x1c3418,_0x2f2027)=>_0x2f2027[0x1]-_0x1c3418[0x1]),_0x4d2e4f=_0x852db7['reduce']((_0x2764d2,[,_0x4cf94b])=>_0x2764d2+Number(_0x4cf94b||0x0),0x0);if(_0x852db7['length']===0x0){_0x42192c['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x42192c['innerHTML']=_0x852db7['map'](([_0x3a3b69,_0x10c216])=>{const _0x3a8f3b=_0x4d2e4f>0x0?Math['max'](0x2,Math['round'](_0x10c216/_0x4d2e4f*0x64)):0x0,_0x2f6972=Utils['escapeHtml'](prettifyKey(_0x3a3b69)),_0xd88e11=Utils['escapeHtml'](formatNumber(_0x10c216));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>'+_0x2f6972+'</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(_0x3a3b69)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x3a8f3b+'%\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>'+_0xd88e11+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x10e061,_0x568a78,_0x455401,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x349ccd=document['getElementById'](_0x10e061);if(!_0x349ccd)return;const _0x45529f=Object['entries'](_0x568a78)['filter'](([,_0x3a7404])=>Number(_0x3a7404)>0x0)['sort']((_0x253a76,_0xb97b74)=>_0xb97b74[0x1]-_0x253a76[0x1]||String(_0x253a76[0x0])['localeCompare'](String(_0xb97b74[0x0])));if(_0x45529f['length']===0x0){_0x349ccd['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x349ccd['innerHTML']=_0x45529f['map'](([_0x3b32ec,_0x9de4c])=>{const _0x43ab1a=labelFormatter?labelFormatter(_0x3b32ec):_0x3b32ec,_0x4ae53b=includePercent?'<td>'+formatPercent(_0x455401>0x0?_0x9de4c/_0x455401*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(_0x43ab1a))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x9de4c))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4ae53b+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x414509,_0x592d75){const _0x3ab7a4=document['getElementById'](_0x414509);if(!_0x3ab7a4)return;if(!Array['isArray'](_0x592d75)||_0x592d75['length']===0x0){_0x3ab7a4['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x3ab7a4['innerHTML']=_0x592d75['map'](_0x516fea=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x516fea['name']||_0x516fea['username']||_0x516fea['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x516fea['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x23a1ae,_0x393251){document['querySelectorAll'](_0x23a1ae+'\x20.admin-filter-btn')['forEach'](_0xc2ecb0=>{_0xc2ecb0['classList']['toggle']('active',_0xc2ecb0['dataset']['level']===_0x393251||_0xc2ecb0['dataset']['days']===_0x393251||_0xc2ecb0['dataset']['order']===_0x393251);});}function scrollLogsToLiveEdge(_0x52edba){if(!_0x52edba)return;if(state['logs']['order']===LOG_ORDER_DESC){_0x52edba['scrollTop']=0x0;return;}_0x52edba['scrollTop']=_0x52edba['scrollHeight'];}function setSummaryValue(_0x3a41cf,_0x5383b2,_0x458e13=''){const _0x1b846f=document['getElementById'](_0x3a41cf);if(!_0x1b846f)return;_0x1b846f['textContent']=_0x5383b2,_0x1b846f['classList']['remove']('status-good','status-warn','status-bad'),_0x458e13&&_0x1b846f['classList']['add'](_0x458e13);}function statusClassFromPercent(_0xd265ba){if(_0xd265ba>=0x50)return'status-good';if(_0xd265ba>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x480d97){const _0x1ec36e=new Date(_0x480d97);if(Number['isNaN'](_0x1ec36e['getTime']()))return _0x480d97||'Unknown';return _0x1ec36e['toLocaleString']();}function formatLogContext(_0x50d5fd){if(!_0x50d5fd)return'';try{return JSON['stringify'](_0x50d5fd,null,0x2);}catch{return String(_0x50d5fd);}}function formatLogEntryForClipboard(_0x2e6a27){const _0x273bb2=['['+formatDateTime(_0x2e6a27['timestamp'])+']\x20'+String(_0x2e6a27['level']||'INFO')['toUpperCase']()];_0x2e6a27['message']&&_0x273bb2['push'](String(_0x2e6a27['message']));const _0x7e04d0=formatLogContext(_0x2e6a27['context']);return _0x7e04d0&&(_0x273bb2['push']('Context:'),_0x273bb2['push'](_0x7e04d0)),_0x273bb2['join']('\x0a');}function formatLogEntriesForClipboard(_0xd90677){if(!Array['isArray'](_0xd90677)||_0xd90677['length']===0x0)return'';return _0xd90677['map'](formatLogEntryForClipboard)['join']('\x0a\x0a');}function formatDurationMinutes(_0x59f4ed){const _0x5076d3=Math['round'](Number(_0x59f4ed)||0x0);if(_0x5076d3<0x3c)return _0x5076d3+'m';const _0x5ebd47=Math['floor'](_0x5076d3/0x3c),_0x3f3e1b=_0x5076d3%0x3c;return _0x3f3e1b>0x0?_0x5ebd47+'h\x20'+_0x3f3e1b+'m':_0x5ebd47+'h';}function formatPercent(_0x2573c6){return Math['round'](Number(_0x2573c6)||0x0)+'%';}function formatNumber(_0x61b3a4){return NUMBER_FORMATTER['format'](Number(_0x61b3a4)||0x0);}function formatSignedNumber(_0x5185fe){const _0x3c8211=Number(_0x5185fe)||0x0;if(_0x3c8211>0x0)return'+'+formatNumber(_0x3c8211);return formatNumber(_0x3c8211);}function prettifyKey(_0x1faef5){return String(_0x1faef5)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x5f5160=>_0x5f5160['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':[],'nextEntryId':0x1,'selectedEntryIds':new Set(),'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 _0x5584f8=await checkAdminAccess();await initializeAdminMenu(_0x5584f8),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x44dd56=getSessionValue('admin-health-auto-refresh');if(_0x44dd56!==null){const _0x105ed0=document['getElementById']('health-auto-refresh');if(_0x105ed0)_0x105ed0['checked']=_0x44dd56!=='false';}const _0x34ace2=getSessionValue('admin-logs-order');(_0x34ace2===LOG_ORDER_ASC||_0x34ace2===LOG_ORDER_DESC)&&(state['logs']['order']=_0x34ace2);syncLogOrderUi();const _0x179894=getSessionValue('admin-active-section'),_0x28327=['health','logs','usage']['includes'](_0x179894)?_0x179894:'health';await switchSection(_0x28327);}catch(_0x4ae7c3){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x4ae7c3),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x4ae7c3['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x3de85a=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x3de85a,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x3de85a;}catch(_0x782bed){_0x782bed['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0x782bed;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x5d969c=>{_0x5d969c['addEventListener']('click',()=>switchSection(_0x5d969c['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-select-visible-btn')?.['addEventListener']('click',toggleVisibleLogSelection),document['getElementById']('logs-clear-selection-btn')?.['addEventListener']('click',clearSelectedLogEntries),document['getElementById']('logs-copy-selected-btn')?.['addEventListener']('click',copySelectedLogEntries),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x52046e=>{_0x52046e['addEventListener']('click',()=>{state['logs']['level']=_0x52046e['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),document['querySelectorAll']('#logs-order-toggle\x20.admin-filter-btn')['forEach'](_0x1b29eb=>{_0x1b29eb['addEventListener']('click',()=>{setLogOrder(_0x1b29eb['dataset']['order'],{'focusLiveEdge':!![]});});}),document['getElementById']('logs-container')?.['addEventListener']('click',handleLogContainerClick),document['getElementById']('logs-container')?.['addEventListener']('change',handleLogContainerChange),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',_0x17192d=>{state['usage']['environment']=_0x17192d['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0x35f26c=>{_0x35f26c['addEventListener']('click',()=>{state['usage']['days']=_0x35f26c['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x2a0cba){if(!_0x2a0cba)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x26d365=>{const _0x31f1db=_0x26d365['dataset']['section']===_0x2a0cba;_0x26d365['classList']['toggle']('active',_0x31f1db),_0x26d365['setAttribute']('aria-selected',String(_0x31f1db));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x4e6f35=>{const _0x14d33c=_0x4e6f35['id']==='section-'+_0x2a0cba;_0x4e6f35['hidden']=!_0x14d33c,_0x4e6f35['classList']['toggle']('active',_0x14d33c);}),state['currentSection']=_0x2a0cba,setSessionValue('admin-active-section',_0x2a0cba),_0x2a0cba!=='health'&&stopHealthAutoRefresh(),_0x2a0cba!=='logs'&&stopLogStream(),_0x2a0cba==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x2a0cba==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x2a0cba==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x27af51){try{return sessionStorage['getItem'](_0x27af51);}catch{return null;}}function setSessionValue(_0x5b70b5,_0x47788a){try{sessionStorage['setItem'](_0x5b70b5,_0x47788a);}catch{}}async function loadEnvironmentOptions(){const _0x1dc69e=await API['get']('/environments');state['environments']=(_0x1dc69e['environments']||[])['map'](_0x2847ee=>_0x2847ee?.['name'])['filter'](Boolean)['sort']((_0x401d5d,_0x20beab)=>_0x401d5d['localeCompare'](_0x20beab));const _0x195018=document['getElementById']('usage-environment-filter');if(!_0x195018)return;_0x195018['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x32a842=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x32a842)+'\x22>'+Utils['escapeHtml'](_0x32a842)+'</option>')['join'](''),_0x195018['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x3e8f99=document['getElementById']('health-auto-refresh');if(_0x3e8f99)setSessionValue('admin-health-auto-refresh',String(_0x3e8f99['checked']));const _0x464e69=state['currentSection']==='health'&&!!_0x3e8f99?.['checked'];stopHealthAutoRefresh();if(!_0x464e69)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 _0x51bb63=document['getElementById']('health-loading'),_0x282e89=document['getElementById']('health-error'),_0x30d608=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0x51bb63['hidden']=![],_0x282e89['hidden']=!![],_0x30d608['hidden']=!![]);try{const [_0x9bc8e5]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x194348=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x194348),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x9bc8e5),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0x51bb63['hidden']=!![],_0x282e89['hidden']=!![],_0x30d608['hidden']=![],state['health']['loaded']=!![];}catch(_0x21f473){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x21f473),_0x51bb63['hidden']=!![],_0x282e89['hidden']=![],_0x30d608['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x21f473['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x2cf989=document['getElementById']('health-update-btn'),_0x2a2e21=document['getElementById']('health-restart-btn');if(!_0x2cf989||!_0x2a2e21)return;const _0x3446a2=state['health']['updateEnabled'],_0x2b7a1f=_0x3446a2&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x2cf989['hidden']=!_0x2b7a1f,_0x2cf989['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x2cf989['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x2a2e21['hidden']=!_0x3446a2,_0x2a2e21['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x26d25f,output:_0x156c33}){const _0x495d37=document['getElementById']('health-update-output-wrap'),_0x1d3aa9=document['getElementById']('health-update-status'),_0x3cc4e9=document['getElementById']('health-update-output');if(!_0x495d37||!_0x1d3aa9||!_0x3cc4e9)return;const _0x4fe9bd=_0x26d25f||'';_0x495d37['hidden']=![],_0x1d3aa9['className']='admin-update-status',_0x4fe9bd&&_0x1d3aa9['classList']['add'](_0x4fe9bd),_0x1d3aa9['textContent']=_0x4fe9bd==='success'?'Success':_0x4fe9bd==='error'?'Failed':'In\x20Progress',_0x3cc4e9['textContent']=_0x156c33||'No\x20output\x20returned.';}function buildCommandOutput(_0x3d7393,_0x4122fa){const _0x5d17b0=[];typeof _0x3d7393==='string'&&_0x3d7393['trim']()&&_0x5d17b0['push'](_0x3d7393['trim']());if(typeof _0x4122fa==='string'&&_0x4122fa['trim']()){const _0x230452=_0x4122fa['trim'](),_0x65d5d0=_0x5d17b0['some'](_0x43b73e=>_0x43b73e['includes'](_0x230452));!_0x65d5d0&&_0x5d17b0['push']('Error:\x0a'+_0x230452);}return _0x5d17b0['join']('\x0a\x0a');}function showRestartOverlay({title:_0x433cba,message:_0x372ae7,showRetry:showRetry=![]}){const _0x27b616=document['getElementById']('health-restart-overlay'),_0x28f902=document['getElementById']('restart-overlay-title'),_0x7f9e36=document['getElementById']('restart-overlay-message'),_0x49fcbc=document['getElementById']('restart-overlay-retry');if(!_0x27b616||!_0x28f902||!_0x7f9e36||!_0x49fcbc)return;_0x28f902['textContent']=_0x433cba,_0x7f9e36['textContent']=_0x372ae7,_0x49fcbc['hidden']=!showRetry,_0x27b616['hidden']=![];}function hideRestartOverlay(){const _0x1488ba=document['getElementById']('health-restart-overlay');_0x1488ba&&(_0x1488ba['hidden']=!![]);}function sleep(_0x3ddad3){return new Promise(_0x1e6a17=>{window['setTimeout'](_0x1e6a17,_0x3ddad3);});}async function loadUpdateSettings(){const _0x226f9f=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x226f9f['enabled'],state['health']['hasRestartCommand']=!!_0x226f9f['hasRestartCommand'],syncHealthActionButtons(),_0x226f9f;}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 _0x3cd4e4=await API['applyServerUpdate'](state['health']['latestVersion']),_0x2985c8=buildCommandOutput(_0x3cd4e4['output'],_0x3cd4e4['error']);_0x3cd4e4['success']?(setUpdateOutput({'status':'success','output':_0x2985c8||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x2985c8||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x3cd4e4['error']||'Server\x20update\x20failed'));}catch(_0x39094b){setUpdateOutput({'status':'error','output':buildCommandOutput(_0x39094b['output'],_0x39094b['commandError']||_0x39094b['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0x39094b['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0x5b99f0=document['getElementById']('restart-modal');_0x5b99f0&&(_0x5b99f0['hidden']=![]);}function hideRestartModal(){const _0x26d15b=document['getElementById']('restart-modal');_0x26d15b&&(_0x26d15b['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x53804b){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x53804b['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 _0xcbd78c=Date['now']();let _0x458d48=![];for(let _0x3ad136=0x0;_0x3ad136<RESTART_POLL_MAX_ATTEMPTS;_0x3ad136+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x5bfb58=Date['now']()-_0xcbd78c;if(_0x458d48||_0x5bfb58>=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(_0x38e7fd){_0x458d48=!![];}}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 _0x19c80e=document['getElementById']('health-check-updates-btn');_0x19c80e&&(_0x19c80e['disabled']=!![],_0x19c80e['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x1e8539=await API['get']('/health');state['health']['currentVersion']=_0x1e8539['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 _0x5c5572=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x5c5572['latestVersion']||'Unavailable',state['health']['installCommand']=_0x5c5572['installCommand']||null,state['health']['updateAvailable']=!!_0x5c5572['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x5c5572['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x5c5572),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(_0x5acec6){console['error']('Failed\x20to\x20load\x20version\x20status',_0x5acec6),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x5acec6['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x19c80e&&(_0x19c80e['disabled']=![],_0x19c80e['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x282438){const _0x23e109=_0x282438?.['versionStatus'];if(_0x23e109==='update-available')return'Update\x20available:\x20'+_0x282438['currentVersion']+'\x20→\x20'+_0x282438['latestVersion'];if(_0x23e109==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x282438['latestVersion']+').';if(_0x23e109==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x282438['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0xe275ec=await Utils['copyToClipboard'](state['health']['installCommand']);_0xe275ec?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x5ea856){document['getElementById']('cpu-usage')['textContent']=_0x5ea856['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x5ea856['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x5ea856['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x5ea856['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x5ea856['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x5ea856['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x5ea856['cpu']?.['percent'],statusFromPercent(_0x5ea856['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x5ea856['memory']?.['percent'],statusFromPercent(_0x5ea856['memory']?.['percent'])),setMetricProgress('disk-progress',_0x5ea856['disk']?.['percent'],statusFromPercent(_0x5ea856['disk']?.['percent']));const _0x44e164=_0x5ea856['docker']?.['total']>0x0?_0x5ea856['docker']['running']/_0x5ea856['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x44e164,'ok');const _0x3be015=_0x5ea856['dockerStorage']||{},_0x2c2d29=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x3be015['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x3be015['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x3be015['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x3be015['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x3be015['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x3be015['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x3be015['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x3be015['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x3be015['percent'],_0x3be015['status']||'ok'),_0x2c2d29['classList']['remove']('status-warning','status-critical'),_0x3be015['status']==='warning'&&_0x2c2d29['classList']['add']('status-warning'),_0x3be015['status']==='critical'&&_0x2c2d29['classList']['add']('status-critical');}function clampPercent(_0x1ef618){if(!Number['isFinite'](_0x1ef618))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x1ef618)));}function statusFromPercent(_0x444c4c){if(!Number['isFinite'](_0x444c4c))return'ok';if(_0x444c4c>=0x5a)return'critical';if(_0x444c4c>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x470876,_0x3de072,_0x1802ae='ok'){const _0x3e7154=document['getElementById'](_0x470876);if(!_0x3e7154)return;const _0x19165a=clampPercent(_0x3de072);_0x3e7154['style']['width']=_0x19165a+'%',_0x3e7154['classList']['remove']('status-ok','status-warning','status-critical'),_0x3e7154['classList']['add'](_0x1802ae==='critical'?'status-critical':_0x1802ae==='warning'?'status-warning':'status-ok'),_0x3e7154['parentElement']?.['setAttribute']('aria-valuenow',String(_0x19165a));}async function runCleanupAction(_0x51d602,_0x35082f){const _0x17c8d1=document['getElementById']('server-health-action-status'),_0x47c1b8=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x47c1b8['forEach'](_0x2322e4=>{_0x2322e4['disabled']=!![];}),_0x17c8d1['hidden']=![],_0x17c8d1['classList']['remove']('success','error'),_0x17c8d1['textContent']=_0x51d602+'...';try{const _0x487d0a=await _0x35082f();_0x17c8d1['classList']['add']('success'),_0x17c8d1['textContent']=_0x487d0a?.['message']||_0x51d602+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x981a6a){console['error'](_0x51d602+'\x20failed',_0x981a6a),_0x17c8d1['classList']['add']('error'),_0x17c8d1['textContent']=_0x981a6a['message']||_0x51d602+'\x20failed';}finally{_0x47c1b8['forEach'](_0x4588e6=>{_0x4588e6['disabled']=![];});}}function toggleCleanupSection(){const _0x4bad0d=document['getElementById']('cleanup-section'),_0xbd3cea=document['getElementById']('cleanup-content'),_0x7d6b0c=document['getElementById']('cleanup-toggle');if(!_0x4bad0d||!_0xbd3cea||!_0x7d6b0c)return;const _0x288d34=_0x4bad0d['classList']['toggle']('expanded');_0xbd3cea['hidden']=!_0x288d34,_0x7d6b0c['setAttribute']('aria-expanded',String(_0x288d34));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x481dc6=document['getElementById']('logs-loading'),_0x2e90c9=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x481dc6['hidden']=![],_0x2e90c9['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x42fef0=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x42fef0['set']('level',state['logs']['level']);state['logs']['search']&&_0x42fef0['set']('search',state['logs']['search']);const _0xc0d32f=await API['get']('/logs?'+_0x42fef0['toString']());state['logs']['entries']=Array['isArray'](_0xc0d32f['entries'])?normalizeLogEntries(_0xc0d32f['entries'])['slice'](-state['logs']['maxEntries']):[],state['logs']['selectedEntryIds']['clear'](),state['logs']['total']=Number(_0xc0d32f['total'])||0x0,state['logs']['minLevel']=_0xc0d32f['minLevel']||'INFO',state['logs']['loaded']=!![],_0x481dc6['hidden']=!![],_0x2e90c9['hidden']=!![],renderLogs();}catch(_0x4b75b5){console['error']('Failed\x20to\x20load\x20logs',_0x4b75b5),_0x481dc6['hidden']=!![],_0x2e90c9['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x4b75b5['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 _0x23e9a3=document['getElementById']('logs-container'),_0x2958b2=document['getElementById']('logs-empty'),_0x15b1c9=stickToLiveEdge||state['logs']['autoScroll']&&state['logs']['live'],_0x558eba=_0x23e9a3?.['scrollTop']||0x0,_0xd39699=_0x23e9a3?.['scrollHeight']||0x0,_0x14b05c=getOrderedLogEntries();updateLogsMeta(_0x14b05c['length']),syncLogSelectionUi(_0x14b05c);if(_0x14b05c['length']===0x0){_0x23e9a3['hidden']=!![],_0x2958b2['hidden']=![];return;}_0x2958b2['hidden']=!![],_0x23e9a3['hidden']=![],_0x23e9a3['innerHTML']=_0x14b05c['map'](renderLogEntry)['join']('');if(_0x15b1c9){scrollLogsToLiveEdge(_0x23e9a3);return;}if(state['logs']['order']===LOG_ORDER_DESC){const _0x3639f5=_0x23e9a3['scrollHeight'],_0x3466d0=_0x3639f5-_0xd39699;_0x23e9a3['scrollTop']=_0x558eba>0x0?_0x558eba+Math['max'](_0x3466d0,0x0):_0x558eba;return;}_0x23e9a3['scrollTop']=_0x558eba;}function createLogEntryId(){const _0x3b3bd2=state['logs']['nextEntryId'];return state['logs']['nextEntryId']+=0x1,'server-log-'+_0x3b3bd2;}function normalizeLogEntry(_0x10317d){return{..._0x10317d,'_clientId':createLogEntryId()};}function normalizeLogEntries(_0x1a6038){return _0x1a6038['map'](normalizeLogEntry);}function getVisibleLogEntries(){const _0x471a34=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x4c3408=>{if(state['logs']['level']!=='ALL'&&_0x4c3408['level']!==state['logs']['level'])return![];if(!_0x471a34)return!![];const _0x26fd71=String(_0x4c3408['message']||'')['toLowerCase'](),_0x38faf3=_0x4c3408['context']?JSON['stringify'](_0x4c3408['context'])['toLowerCase']():'';return _0x26fd71['includes'](_0x471a34)||_0x38faf3['includes'](_0x471a34);});}function getOrderedLogEntries(){const _0x1017c5=getVisibleLogEntries();return state['logs']['order']===LOG_ORDER_DESC?_0x1017c5['slice']()['reverse']():_0x1017c5;}function findLogEntry(_0x186545){return state['logs']['entries']['find'](_0x3e5f82=>_0x3e5f82['_clientId']===_0x186545)||null;}function getSelectedVisibleLogEntries(_0x2bccf1=getOrderedLogEntries()){return _0x2bccf1['filter'](_0x82b31b=>state['logs']['selectedEntryIds']['has'](_0x82b31b['_clientId']));}function renderLogEntry(_0x3051f5){const _0x3badec=Utils['escapeHtml'](String(_0x3051f5['_clientId']||'')),_0x4a59b8=Utils['escapeHtml'](formatDateTime(_0x3051f5['timestamp'])),_0x43dc2a=Utils['escapeHtml'](String(_0x3051f5['level']||'INFO')),_0x6852e5=Utils['escapeHtml'](String(_0x3051f5['message']||'')),_0x4cae08=formatLogContext(_0x3051f5['context']),_0x5e34c8=_0x4cae08?'\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'](_0x4cae08)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'',_0xcda610=state['logs']['selectedEntryIds']['has'](_0x3051f5['_clientId'])?'\x20selected':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry'+_0xcda610+'\x22\x20data-log-entry-id=\x22'+_0x3badec+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header-main\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22admin-log-select\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22checkbox\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22admin-log-select-checkbox\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-log-entry-id=\x22'+_0x3badec+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20aria-label=\x22Select\x20log\x20entry\x20from\x20'+_0x4a59b8+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xcda610?'checked':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x4a59b8+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x43dc2a['toLowerCase']()+'\x22>'+_0x43dc2a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-ghost\x20btn-small\x20admin-log-copy-btn\x22\x20data-log-copy-id=\x22'+_0x3badec+'\x22>Copy</button>\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=\x22admin-log-message\x22>'+_0x6852e5+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x5e34c8+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x2f9ed9){const _0x3f2da2=document['getElementById']('logs-meta');if(!_0x3f2da2)return;const _0x20d715=state['logs']['entries']['length'],_0x2c9a2d=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x4fde0e=state['logs']['order']===LOG_ORDER_DESC?'newest\x20first':'oldest\x20first';_0x3f2da2['textContent']=_0x2c9a2d?'Showing\x20'+_0x2f9ed9+'\x20of\x20'+_0x20d715+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters\x20in\x20'+_0x4fde0e+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x2f9ed9+'\x20recent\x20buffered\x20entries\x20in\x20'+_0x4fde0e+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function syncLogSelectionUi(_0x16b7f2=getOrderedLogEntries()){const _0x171844=document['getElementById']('logs-selection-count'),_0x58a683=document['getElementById']('logs-select-visible-btn'),_0x15ff9f=document['getElementById']('logs-clear-selection-btn'),_0x7e2a31=document['getElementById']('logs-copy-selected-btn'),_0x574db5=getSelectedVisibleLogEntries(_0x16b7f2),_0x5657bb=_0x16b7f2['length']>0x0,_0x200f5d=_0x574db5['length']>0x0,_0x497f93=_0x5657bb&&_0x574db5['length']===_0x16b7f2['length'],_0x18fc90=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x3fd708=_0x18fc90?'Select\x20Filtered':'Select\x20All\x20Shown',_0x59db16=_0x18fc90?'Deselect\x20Filtered':'Deselect\x20All\x20Shown';_0x171844&&(_0x171844['textContent']=_0x574db5['length']+'\x20selected'),_0x58a683&&(_0x58a683['disabled']=!_0x5657bb,_0x58a683['textContent']=_0x497f93?_0x59db16:_0x3fd708),_0x15ff9f&&(_0x15ff9f['disabled']=!_0x200f5d),_0x7e2a31&&(_0x7e2a31['disabled']=!_0x200f5d);}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}),startLogStream()):stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x1ca469=document['getElementById']('logs-live-toggle'),_0x262e76=document['getElementById']('logs-stream-status');if(!_0x1ca469||!_0x262e76)return;_0x262e76['classList']['remove']('live','error');if(!state['logs']['live']){_0x262e76['textContent']='Paused',_0x1ca469['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x262e76['textContent']='Live',_0x262e76['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x262e76['textContent']='Reconnecting',_0x262e76['classList']['add']('error')):_0x262e76['textContent']='Connecting';_0x1ca469['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x12a9ed=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x12a9ed,_0x12a9ed['addEventListener']('log',_0x21f88a=>{try{const _0xff6dc9=normalizeLogEntry(JSON['parse'](_0x21f88a['data']));state['logs']['entries']['push'](_0xff6dc9);if(state['logs']['entries']['length']>state['logs']['maxEntries']){const _0x2dc1bb=state['logs']['entries']['shift']();state['logs']['selectedEntryIds']['delete'](_0x2dc1bb?.['_clientId']);}renderLogs();}catch(_0x1d736d){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x1d736d);}}),_0x12a9ed['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x12a9ed['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']=[],state['logs']['selectedEntryIds']['clear'](),renderLogs();}function handleLogContainerClick(_0x30bd01){const _0x4303fc=_0x30bd01['target']['closest']('[data-log-copy-id]');if(!_0x4303fc)return;const _0x4d24cf=findLogEntry(_0x4303fc['dataset']['logCopyId']||'');if(!_0x4d24cf){Utils['showError']('Log\x20entry\x20is\x20no\x20longer\x20available');return;}copyLogEntries([_0x4d24cf],{'successMessage':'Log\x20entry\x20copied'});}function handleLogContainerChange(_0x5148b9){const _0x1d5f9a=_0x5148b9['target']['closest']('.admin-log-select-checkbox');if(!_0x1d5f9a)return;const _0x495459=_0x1d5f9a['dataset']['logEntryId']||'';if(!_0x495459)return;_0x1d5f9a['checked']?state['logs']['selectedEntryIds']['add'](_0x495459):state['logs']['selectedEntryIds']['delete'](_0x495459),_0x1d5f9a['closest']('.admin-log-entry')?.['classList']['toggle']('selected',_0x1d5f9a['checked']),syncLogSelectionUi();}function toggleVisibleLogSelection(){const _0x47fbcd=getOrderedLogEntries();if(_0x47fbcd['length']===0x0)return;const _0x51294a=getSelectedVisibleLogEntries(_0x47fbcd),_0x529c3=_0x51294a['length']!==_0x47fbcd['length'];_0x47fbcd['forEach'](_0x93ef61=>{_0x529c3?state['logs']['selectedEntryIds']['add'](_0x93ef61['_clientId']):state['logs']['selectedEntryIds']['delete'](_0x93ef61['_clientId']);}),renderLogs();}function clearSelectedLogEntries(){if(state['logs']['selectedEntryIds']['size']===0x0)return;state['logs']['selectedEntryIds']['clear'](),renderLogs();}async function copySelectedLogEntries(){const _0x3766bc=getSelectedVisibleLogEntries();if(_0x3766bc['length']===0x0)return;await copyLogEntries(_0x3766bc,{'successMessage':_0x3766bc['length']===0x1?'Log\x20entry\x20copied':_0x3766bc['length']+'\x20log\x20entries\x20copied'});}async function copyLogEntries(_0xb8b7ac,{successMessage:successMessage='Log\x20entries\x20copied'}={}){const _0x23a63c=formatLogEntriesForClipboard(_0xb8b7ac);if(!_0x23a63c){Utils['showError']('No\x20log\x20content\x20available\x20to\x20copy');return;}const _0x39273b=await Utils['copyToClipboard'](_0x23a63c);_0x39273b?Utils['showSuccess'](successMessage):Utils['showError']('Failed\x20to\x20copy\x20logs');}function setLogOrder(_0x48c1d1,{focusLiveEdge:focusLiveEdge=![]}={}){const _0x284936=_0x48c1d1===LOG_ORDER_DESC?LOG_ORDER_DESC:LOG_ORDER_ASC;if(state['logs']['order']===_0x284936){focusLiveEdge&&(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}));return;}state['logs']['order']=_0x284936,setSessionValue('admin-logs-order',_0x284936),syncLogOrderUi(),focusLiveEdge&&(state['logs']['autoScroll']=!![]),renderLogs({'stickToLiveEdge':focusLiveEdge});}function syncLogOrderUi(){updateActiveFilterButtons('#logs-order-toggle',state['logs']['order']);}function handleLogsSearchInput(_0x2e14ff){const _0xcdbdd8=_0x2e14ff['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0xcdbdd8,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x563bd4=document['getElementById']('logs-container');if(!_0x563bd4)return;const _0x1998d9=state['logs']['order']===LOG_ORDER_DESC?_0x563bd4['scrollTop']:_0x563bd4['scrollHeight']-_0x563bd4['scrollTop']-_0x563bd4['clientHeight'];state['logs']['autoScroll']=_0x1998d9<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0xd0e132=document['getElementById']('usage-loading'),_0x5259fc=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0xd0e132['hidden']=![],_0x5259fc['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x31ecc3=new URLSearchParams();_0x31ecc3['set']('days',state['usage']['days']);state['usage']['environment']&&_0x31ecc3['set']('environment',state['usage']['environment']);const _0x4f59cb=await API['get']('/stats?'+_0x31ecc3['toString']());state['usage']['loaded']=!![],_0xd0e132['hidden']=!![],_0x5259fc['hidden']=!![],renderUsage(_0x4f59cb);}catch(_0x410758){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x410758),_0xd0e132['hidden']=!![],_0x5259fc['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x410758['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x1195f6){const _0x541afa=Number(_0x1195f6?.['tasks']?.['total'])||0x0,_0x4f9e10=document['getElementById']('usage-empty'),_0xa5a562=document['getElementById']('usage-content');if(_0x541afa===0x0){_0x4f9e10['hidden']=![],_0xa5a562['hidden']=!![];return;}_0x4f9e10['hidden']=!![],_0xa5a562['hidden']=![];const _0x3bb5b7=Number(_0x1195f6?.['approvalRate']?.['successRate'])||0x0,_0x5271ff=Math['round'](_0x3bb5b7*0x64),_0x558486=_0x1195f6?.['code']?.['approved']||{},_0x12d98e=Number(_0x558486?.['tasks'])||0x0,_0x478bbd=(Number(_0x558486?.['linesAdded'])||0x0)-(Number(_0x558486?.['linesDeleted'])||0x0),_0x349f2b=(Number(_0x1195f6?.['code']?.['linesAdded'])||0x0)-(Number(_0x1195f6?.['code']?.['linesDeleted'])||0x0),_0x52707f=Number(_0x1195f6?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0x541afa)),setSummaryValue('usage-success-rate',_0x5271ff+'%',statusClassFromPercent(_0x5271ff)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x349f2b)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x52707f));const _0xc8219b=_0x541afa>0x0?Math['round'](_0x12d98e/_0x541afa*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x12d98e)+'\x20approved\x20('+_0xc8219b+'%)\x20·\x20'+formatNumber(_0x1195f6['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x1195f6['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x1195f6['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x1195f6['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x1195f6['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x1195f6['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x478bbd)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x1195f6['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x1195f6['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x1195f6['period']),renderBarList('usage-status-bars',_0x1195f6['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x1195f6['tasks']['byType']||{},_0x541afa,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x1195f6['tasks']['byEnvironment']||{},_0x541afa),renderUserTable('usage-user-body',_0x1195f6['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x1195f6['tasks']['bySource']||{},_0x541afa,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x1195f6['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x1195f6['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x1195f6['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x1195f6['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x558486['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x558486['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x558486['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x558486['repositoriesAffected']||0x0);const _0x4e7ee2=(_0x130d20,_0x4b9ea0)=>_0x130d20>0x0?Math['round'](_0x4b9ea0/_0x130d20*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x4e7ee2(_0x1195f6['code']['linesAdded']||0x0,_0x558486['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x4e7ee2(_0x1195f6['code']['linesDeleted']||0x0,_0x558486['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x4e7ee2(_0x1195f6['code']['filesChanged']||0x0,_0x558486['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x4e7ee2(_0x1195f6['code']['repositoriesAffected']||0x0,_0x558486['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x54bb4b){const _0x4e73b3=_0x54bb4b?.['from']?formatDateTime(_0x54bb4b['from']):'the\x20earliest\x20loaded\x20task',_0x44b525=_0x54bb4b?.['to']?formatDateTime(_0x54bb4b['to']):'now',_0xea97cc=_0x54bb4b?.['days']?_0x54bb4b['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0xea97cc+'\x20·\x20'+_0x4e73b3+'\x20to\x20'+_0x44b525;}function renderBarList(_0x4922db,_0x59b0fd){const _0x43bc7c=document['getElementById'](_0x4922db);if(!_0x43bc7c)return;const _0x51357c=Object['entries'](_0x59b0fd)['filter'](([,_0x4e29f5])=>Number(_0x4e29f5)>0x0)['sort']((_0x1d0606,_0x46249b)=>_0x46249b[0x1]-_0x1d0606[0x1]),_0x122b49=_0x51357c['reduce']((_0x20d86f,[,_0x47263c])=>_0x20d86f+Number(_0x47263c||0x0),0x0);if(_0x51357c['length']===0x0){_0x43bc7c['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x43bc7c['innerHTML']=_0x51357c['map'](([_0x4ec2a5,_0xe1e3fb])=>{const _0x3b9b05=_0x122b49>0x0?Math['max'](0x2,Math['round'](_0xe1e3fb/_0x122b49*0x64)):0x0,_0x4d1c07=Utils['escapeHtml'](prettifyKey(_0x4ec2a5)),_0x340ddb=Utils['escapeHtml'](formatNumber(_0xe1e3fb));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>'+_0x4d1c07+'</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(_0x4ec2a5)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x3b9b05+'%\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>'+_0x340ddb+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x3d1e15,_0x32080d,_0x165062,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x6f22ea=document['getElementById'](_0x3d1e15);if(!_0x6f22ea)return;const _0x5eda42=Object['entries'](_0x32080d)['filter'](([,_0x557642])=>Number(_0x557642)>0x0)['sort']((_0x1a8525,_0x48b93c)=>_0x48b93c[0x1]-_0x1a8525[0x1]||String(_0x1a8525[0x0])['localeCompare'](String(_0x48b93c[0x0])));if(_0x5eda42['length']===0x0){_0x6f22ea['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x6f22ea['innerHTML']=_0x5eda42['map'](([_0x5981bc,_0x3d2644])=>{const _0x10c4d6=labelFormatter?labelFormatter(_0x5981bc):_0x5981bc,_0x21a7f8=includePercent?'<td>'+formatPercent(_0x165062>0x0?_0x3d2644/_0x165062*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(_0x10c4d6))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x3d2644))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x21a7f8+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x2d7e18,_0x366e6c){const _0xe20b09=document['getElementById'](_0x2d7e18);if(!_0xe20b09)return;if(!Array['isArray'](_0x366e6c)||_0x366e6c['length']===0x0){_0xe20b09['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0xe20b09['innerHTML']=_0x366e6c['map'](_0x4156ce=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x4156ce['name']||_0x4156ce['username']||_0x4156ce['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x4156ce['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x18278a,_0x472e18){document['querySelectorAll'](_0x18278a+'\x20.admin-filter-btn')['forEach'](_0x9c1d13=>{_0x9c1d13['classList']['toggle']('active',_0x9c1d13['dataset']['level']===_0x472e18||_0x9c1d13['dataset']['days']===_0x472e18||_0x9c1d13['dataset']['order']===_0x472e18);});}function scrollLogsToLiveEdge(_0x584957){if(!_0x584957)return;if(state['logs']['order']===LOG_ORDER_DESC){_0x584957['scrollTop']=0x0;return;}_0x584957['scrollTop']=_0x584957['scrollHeight'];}function setSummaryValue(_0x9f7c3b,_0x8775eb,_0x580e53=''){const _0xd62ff8=document['getElementById'](_0x9f7c3b);if(!_0xd62ff8)return;_0xd62ff8['textContent']=_0x8775eb,_0xd62ff8['classList']['remove']('status-good','status-warn','status-bad'),_0x580e53&&_0xd62ff8['classList']['add'](_0x580e53);}function statusClassFromPercent(_0x4b14ed){if(_0x4b14ed>=0x50)return'status-good';if(_0x4b14ed>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x2057f7){const _0xc7f565=new Date(_0x2057f7);if(Number['isNaN'](_0xc7f565['getTime']()))return _0x2057f7||'Unknown';return _0xc7f565['toLocaleString']();}function formatLogContext(_0x4136b1){if(!_0x4136b1)return'';try{return JSON['stringify'](_0x4136b1,null,0x2);}catch{return String(_0x4136b1);}}function formatLogEntryForClipboard(_0xa43901){const _0x1771d8=['['+formatDateTime(_0xa43901['timestamp'])+']\x20'+String(_0xa43901['level']||'INFO')['toUpperCase']()];_0xa43901['message']&&_0x1771d8['push'](String(_0xa43901['message']));const _0x3f6df6=formatLogContext(_0xa43901['context']);return _0x3f6df6&&(_0x1771d8['push']('Context:'),_0x1771d8['push'](_0x3f6df6)),_0x1771d8['join']('\x0a');}function formatLogEntriesForClipboard(_0x40297e){if(!Array['isArray'](_0x40297e)||_0x40297e['length']===0x0)return'';return _0x40297e['map'](formatLogEntryForClipboard)['join']('\x0a\x0a');}function formatDurationMinutes(_0x6054ca){const _0x4cbce0=Math['round'](Number(_0x6054ca)||0x0);if(_0x4cbce0<0x3c)return _0x4cbce0+'m';const _0x5f0c9e=Math['floor'](_0x4cbce0/0x3c),_0x318439=_0x4cbce0%0x3c;return _0x318439>0x0?_0x5f0c9e+'h\x20'+_0x318439+'m':_0x5f0c9e+'h';}function formatPercent(_0x2cb7cf){return Math['round'](Number(_0x2cb7cf)||0x0)+'%';}function formatNumber(_0x195fee){return NUMBER_FORMATTER['format'](Number(_0x195fee)||0x0);}function formatSignedNumber(_0x336d69){const _0x156632=Number(_0x336d69)||0x0;if(_0x156632>0x0)return'+'+formatNumber(_0x156632);return formatNumber(_0x156632);}function prettifyKey(_0x30d089){return String(_0x30d089)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x18ce1f=>_0x18ce1f['toUpperCase']());}
|