@profoundlogic/coderflow-server 0.7.9 → 0.8.0

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.
Files changed (180) hide show
  1. package/dist/base-image/entrypoint.sh +75 -5
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/agent-models.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/automation-service.js +1 -1
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -1
  13. package/dist/lib/build-history.js +1 -1
  14. package/dist/lib/build-output-service.js +1 -1
  15. package/dist/lib/build-scheduler.js +1 -1
  16. package/dist/lib/build-service.js +1 -1
  17. package/dist/lib/ca-certificates.js +1 -1
  18. package/dist/lib/claude-oauth-refresh.js +1 -1
  19. package/dist/lib/cli/build.js +1 -1
  20. package/dist/lib/cli/cleanup-users.js +1 -1
  21. package/dist/lib/cli/config-command.js +1 -1
  22. package/dist/lib/cli/config.js +1 -1
  23. package/dist/lib/cli/create-user.js +1 -1
  24. package/dist/lib/cli/grant-admin.js +1 -1
  25. package/dist/lib/cli/init.js +1 -1
  26. package/dist/lib/cli/jira.js +1 -1
  27. package/dist/lib/cli/license.js +1 -1
  28. package/dist/lib/cli/list-roles.js +1 -1
  29. package/dist/lib/cli/list-users.js +1 -1
  30. package/dist/lib/cli/server-manager.js +1 -1
  31. package/dist/lib/cli/set-password.js +1 -1
  32. package/dist/lib/compression-filter.js +1 -1
  33. package/dist/lib/config-migration.js +1 -1
  34. package/dist/lib/container-credential-sync.js +1 -1
  35. package/dist/lib/container-tokens.js +1 -1
  36. package/dist/lib/data-dir.js +1 -1
  37. package/dist/lib/deployment-history.js +1 -1
  38. package/dist/lib/deployment-service.js +1 -1
  39. package/dist/lib/docker-utils.js +1 -1
  40. package/dist/lib/email.js +1 -1
  41. package/dist/lib/emailTemplates.js +1 -1
  42. package/dist/lib/entitlement.js +1 -1
  43. package/dist/lib/external-connections.js +1 -1
  44. package/dist/lib/fetch-utils.js +1 -1
  45. package/dist/lib/git-commit-details-route.js +1 -1
  46. package/dist/lib/git-history-diff-guardrails.js +1 -1
  47. package/dist/lib/git-provider-service.js +1 -1
  48. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  49. package/dist/lib/git-provider-setup/index.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  52. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  53. package/dist/lib/git-providers/github-app-provider.js +1 -1
  54. package/dist/lib/git-providers/index.js +1 -1
  55. package/dist/lib/git-providers/provider-factory.js +1 -1
  56. package/dist/lib/git-providers/provider-interface.js +1 -1
  57. package/dist/lib/github-urls.js +1 -1
  58. package/dist/lib/group-objective-linking.js +1 -1
  59. package/dist/lib/ibmi-sync.js +1 -1
  60. package/dist/lib/jira-client.js +1 -1
  61. package/dist/lib/judge-blinding.js +1 -1
  62. package/dist/lib/logger.js +1 -1
  63. package/dist/lib/memory-utils.js +1 -1
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -1
  87. package/dist/lib/task-container-init.js +1 -0
  88. package/dist/lib/task-context-usage.js +1 -0
  89. package/dist/lib/task-name-format.js +1 -1
  90. package/dist/lib/task-name-generator.js +1 -1
  91. package/dist/lib/task-source-metadata.js +1 -1
  92. package/dist/lib/teams.js +1 -1
  93. package/dist/lib/user-git-oauth.js +1 -1
  94. package/dist/lib/user-git-tokens.js +1 -1
  95. package/dist/lib/users.js +1 -1
  96. package/dist/middleware/requireAuth.js +1 -1
  97. package/dist/middleware/requireInit.js +1 -1
  98. package/dist/middleware/requirePermission.js +1 -1
  99. package/dist/package.json +1 -1
  100. package/dist/playwright.config.js +1 -1
  101. package/dist/playwright.task-terminal.config.js +1 -1
  102. package/dist/routes/apiKeys.js +1 -1
  103. package/dist/routes/auth-oidc.js +1 -1
  104. package/dist/routes/auth.js +1 -1
  105. package/dist/routes/automations.js +1 -1
  106. package/dist/routes/bindings.js +1 -1
  107. package/dist/routes/build.js +1 -1
  108. package/dist/routes/containers.js +1 -1
  109. package/dist/routes/deploy-task.js +1 -1
  110. package/dist/routes/environment-management.js +1 -1
  111. package/dist/routes/environments.js +1 -1
  112. package/dist/routes/external-skills.js +1 -1
  113. package/dist/routes/git-credentials.js +1 -1
  114. package/dist/routes/git-oauth.js +1 -1
  115. package/dist/routes/git-provider-setup.js +1 -1
  116. package/dist/routes/health.js +1 -1
  117. package/dist/routes/jira.js +1 -1
  118. package/dist/routes/logs.js +1 -1
  119. package/dist/routes/objective-management.js +1 -1
  120. package/dist/routes/password.js +1 -1
  121. package/dist/routes/prompt.js +1 -1
  122. package/dist/routes/provider-auth.js +1 -1
  123. package/dist/routes/qa.js +1 -1
  124. package/dist/routes/roles.js +1 -1
  125. package/dist/routes/settings.js +1 -1
  126. package/dist/routes/skill-management.js +1 -1
  127. package/dist/routes/skills.js +1 -1
  128. package/dist/routes/stats.js +1 -1
  129. package/dist/routes/tasks.js +1 -1
  130. package/dist/routes/teams.js +1 -1
  131. package/dist/routes/templates.js +1 -1
  132. package/dist/routes/test-task.js +1 -1
  133. package/dist/routes/test.js +1 -1
  134. package/dist/routes/users.js +1 -1
  135. package/dist/routes/visualizations.js +1 -1
  136. package/dist/scripts/create-user.js +1 -1
  137. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  138. package/dist/start.js +1 -1
  139. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  140. package/dist/web-ui/public/activity-feed.js +1 -1
  141. package/dist/web-ui/public/activity-formatters.js +1 -1
  142. package/dist/web-ui/public/admin.js +1 -1
  143. package/dist/web-ui/public/agent-event-parser.js +1 -1
  144. package/dist/web-ui/public/app.js +1 -1
  145. package/dist/web-ui/public/approve-dialog.js +1 -1
  146. package/dist/web-ui/public/automation-links.js +1 -1
  147. package/dist/web-ui/public/automation-schedule.js +1 -1
  148. package/dist/web-ui/public/comments-widget.js +1 -1
  149. package/dist/web-ui/public/diff-utils.js +1 -1
  150. package/dist/web-ui/public/environments.js +1 -1
  151. package/dist/web-ui/public/feedback-widget.js +1 -1
  152. package/dist/web-ui/public/file-selection-tree.js +1 -1
  153. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  154. package/dist/web-ui/public/git-history.js +1 -1
  155. package/dist/web-ui/public/git-status.js +1 -1
  156. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  157. package/dist/web-ui/public/index.js +1 -1
  158. package/dist/web-ui/public/login.js +1 -1
  159. package/dist/web-ui/public/markdown-editor.js +1 -1
  160. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  161. package/dist/web-ui/public/modal-maximize.js +1 -1
  162. package/dist/web-ui/public/notifications.js +1 -1
  163. package/dist/web-ui/public/permissions.js +1 -1
  164. package/dist/web-ui/public/pr-dialog.js +1 -1
  165. package/dist/web-ui/public/roles.js +1 -1
  166. package/dist/web-ui/public/settings.js +1 -1
  167. package/dist/web-ui/public/setup-password.js +1 -1
  168. package/dist/web-ui/public/skills.js +1 -1
  169. package/dist/web-ui/public/sse-client.js +1 -1
  170. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  171. package/dist/web-ui/public/styles.css +36 -0
  172. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  173. package/dist/web-ui/public/task.html +11 -0
  174. package/dist/web-ui/public/task.js +1 -1
  175. package/dist/web-ui/public/teams.js +1 -1
  176. package/dist/web-ui/public/terminal.js +1 -1
  177. package/dist/web-ui/public/theme.js +1 -1
  178. package/dist/web-ui/public/users.js +1 -1
  179. package/dist/web-ui/public/variant-grouping.js +1 -1
  180. package/package.json +1 -1
@@ -1 +1 @@
1
- export function escapeHtml(_0x25610f){if(!_0x25610f)return'';return String(_0x25610f)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#039;');}function computeLineDiff(_0x3a660d,_0xce774b,_0x5c9c85,_0x4e1a48){const _0x459cca=(_0x3a660d||'')['split']('\x0a'),_0x277004=(_0xce774b||'')['split']('\x0a'),_0x50039c=(_0x5c9c85||0x1)-0x1,_0x645332=(_0x4e1a48||_0x5c9c85||0x1)-0x1,_0x51d4b8=computeLCS(_0x459cca,_0x277004),_0x28bb48={'left':[],'right':[]};let _0x400071=0x0,_0x9908e=0x0,_0x5c2402=0x0;while(_0x400071<_0x459cca['length']||_0x9908e<_0x277004['length']){if(_0x5c2402<_0x51d4b8['length']&&_0x400071<_0x459cca['length']&&_0x459cca[_0x400071]===_0x51d4b8[_0x5c2402]&&_0x9908e<_0x277004['length']&&_0x277004[_0x9908e]===_0x51d4b8[_0x5c2402])_0x28bb48['left']['push']({'type':'context','content':_0x459cca[_0x400071],'lineNum':_0x400071+0x1+_0x50039c}),_0x28bb48['right']['push']({'type':'context','content':_0x277004[_0x9908e],'lineNum':_0x9908e+0x1+_0x645332}),_0x400071++,_0x9908e++,_0x5c2402++;else{if(_0x5c2402<_0x51d4b8['length']&&_0x9908e<_0x277004['length']&&_0x277004[_0x9908e]===_0x51d4b8[_0x5c2402])_0x28bb48['left']['push']({'type':'remove','content':_0x459cca[_0x400071],'lineNum':_0x400071+0x1+_0x50039c}),_0x28bb48['right']['push']({'type':'empty','content':'','lineNum':null}),_0x400071++;else{if(_0x5c2402<_0x51d4b8['length']&&_0x400071<_0x459cca['length']&&_0x459cca[_0x400071]===_0x51d4b8[_0x5c2402])_0x28bb48['left']['push']({'type':'empty','content':'','lineNum':null}),_0x28bb48['right']['push']({'type':'add','content':_0x277004[_0x9908e],'lineNum':_0x9908e+0x1+_0x645332}),_0x9908e++;else{if(_0x400071<_0x459cca['length']&&_0x9908e<_0x277004['length'])_0x28bb48['left']['push']({'type':'remove','content':_0x459cca[_0x400071],'lineNum':_0x400071+0x1+_0x50039c}),_0x28bb48['right']['push']({'type':'add','content':_0x277004[_0x9908e],'lineNum':_0x9908e+0x1+_0x645332}),_0x400071++,_0x9908e++;else{if(_0x400071<_0x459cca['length'])_0x28bb48['left']['push']({'type':'remove','content':_0x459cca[_0x400071],'lineNum':_0x400071+0x1+_0x50039c}),_0x28bb48['right']['push']({'type':'empty','content':'','lineNum':null}),_0x400071++;else _0x9908e<_0x277004['length']&&(_0x28bb48['left']['push']({'type':'empty','content':'','lineNum':null}),_0x28bb48['right']['push']({'type':'add','content':_0x277004[_0x9908e],'lineNum':_0x9908e+0x1+_0x645332}),_0x9908e++);}}}}}return _0x28bb48;}function computeLCS(_0x291e51,_0x481e08){const _0x1d896d=_0x291e51['length'],_0x1765f6=_0x481e08['length'],_0x59bf0f=Array(_0x1d896d+0x1)['fill'](null)['map'](()=>Array(_0x1765f6+0x1)['fill'](0x0));for(let _0x56ee88=0x1;_0x56ee88<=_0x1d896d;_0x56ee88++){for(let _0x27dc96=0x1;_0x27dc96<=_0x1765f6;_0x27dc96++){_0x291e51[_0x56ee88-0x1]===_0x481e08[_0x27dc96-0x1]?_0x59bf0f[_0x56ee88][_0x27dc96]=_0x59bf0f[_0x56ee88-0x1][_0x27dc96-0x1]+0x1:_0x59bf0f[_0x56ee88][_0x27dc96]=Math['max'](_0x59bf0f[_0x56ee88-0x1][_0x27dc96],_0x59bf0f[_0x56ee88][_0x27dc96-0x1]);}}const _0x1073d6=[];let _0x2d3cd5=_0x1d896d,_0x54e84b=_0x1765f6;while(_0x2d3cd5>0x0&&_0x54e84b>0x0){if(_0x291e51[_0x2d3cd5-0x1]===_0x481e08[_0x54e84b-0x1])_0x1073d6['unshift'](_0x291e51[_0x2d3cd5-0x1]),_0x2d3cd5--,_0x54e84b--;else _0x59bf0f[_0x2d3cd5-0x1][_0x54e84b]>_0x59bf0f[_0x2d3cd5][_0x54e84b-0x1]?_0x2d3cd5--:_0x54e84b--;}return _0x1073d6;}function renderEditDiffLine(_0x3d3abf,_0x2e8868){const _0x1173c7=_0x3d3abf['lineNum']!==null?String(_0x3d3abf['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0x556db6=escapeHtml(_0x3d3abf['content']);let _0x3c7a15='edit-diff-line',_0x23a31e='\x20';switch(_0x3d3abf['type']){case'add':_0x3c7a15+='\x20edit-diff-add',_0x23a31e='+';break;case'remove':_0x3c7a15+='\x20edit-diff-remove',_0x23a31e='-';break;case'empty':_0x3c7a15+='\x20edit-diff-empty',_0x23a31e='\x20';break;default:_0x3c7a15+='\x20edit-diff-context',_0x23a31e='\x20';}return'<div\x20class=\x22'+_0x3c7a15+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0x1173c7+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x23a31e+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0x556db6||'&nbsp;')+'</span></div>';}export function formatBashDetail(_0x186254){if(!_0x186254)return'<p>No\x20data\x20available</p>';if(_0x186254['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(_0x186254['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(_0x186254['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(_0x186254['stdout']!==undefined||_0x186254['stderr']!==undefined||_0x186254['aggregated_output']!==undefined){const _0xeb224a=_0x186254['aggregated_output']&&_0x186254['aggregated_output']['trim']()['length']>0x0,_0x1ea769=!_0xeb224a&&_0x186254['stdout']&&_0x186254['stdout']['trim']()['length']>0x0,_0x590fee=_0x186254['stderr']&&_0x186254['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(_0x186254['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xeb224a?'\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(_0x186254['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'+(_0x1ea769?'\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(_0x186254['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'+(_0x590fee?'\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(_0x186254['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'+(!_0xeb224a&&!_0x1ea769&&!_0x590fee?'<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'+(_0x186254['exitCode']===0x0?'success':'error')+'\x22>'+_0x186254['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(_0x186254['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(_0x186254['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x272fae){if(!_0x272fae)return'<p>No\x20data\x20available</p>';if(_0x272fae['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(_0x272fae['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(_0x272fae['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(_0x272fae['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(_0x272fae['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x4b7bc0){if(!_0x4b7bc0)return'<p>No\x20data\x20available</p>';if(_0x4b7bc0['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(_0x4b7bc0['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(_0x4b7bc0['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 _0x1540be=_0x4b7bc0['content']['length']>0xc350?_0x4b7bc0['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x4b7bc0['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(_0x4b7bc0['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('+_0x4b7bc0['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x1540be)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x21ba5d){if(!_0x21ba5d)return'<p>No\x20data\x20available</p>';if(_0x21ba5d['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(_0x21ba5d['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(_0x21ba5d['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(_0x21ba5d['diff']&&!_0x21ba5d['oldString']&&!_0x21ba5d['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(_0x21ba5d['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(_0x21ba5d['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x21ba5d['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x21ba5d['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x18f980=computeLineDiff(_0x21ba5d['oldString'],_0x21ba5d['newString'],_0x21ba5d['startLine'],_0x21ba5d['startLine']),_0x4d15c9=Math['max'](_0x18f980['left']['length'],_0x18f980['right']['length']);let _0x2bc176='';for(let _0x411d8b=0x0;_0x411d8b<_0x4d15c9;_0x411d8b++){const _0x2dd1d0=_0x18f980['left'][_0x411d8b]||{'type':'empty','content':'','lineNum':null},_0x4c65fb=_0x18f980['right'][_0x411d8b]||{'type':'empty','content':'','lineNum':null};_0x2bc176+='\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(_0x2dd1d0,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0x4c65fb,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x534425=_0x18f980['left']['filter'](_0x4fc929=>_0x4fc929['type']==='remove')['length'],_0x138434=_0x18f980['right']['filter'](_0x36f9b3=>_0x36f9b3['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(_0x21ba5d['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'+(_0x21ba5d['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>-'+_0x534425+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x138434+'</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'+_0x2bc176+'\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(_0x52630b){if(!_0x52630b)return'<p>No\x20data\x20available</p>';if(_0x52630b['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(_0x52630b['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(_0x52630b['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(_0x52630b['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x52630b['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(_0x52630b['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(_0x52630b['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(_0x52630b['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(_0x3632ac){if(!_0x3632ac)return'<p>No\x20data\x20available</p>';if(_0x3632ac['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(_0x3632ac['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(_0x3632ac['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(_0x3632ac['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x3632ac['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(_0x3632ac['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(_0x3632ac['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(_0x4f31b4){if(!_0x4f31b4)return'<p>No\x20data\x20available</p>';if(_0x4f31b4['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(_0x4f31b4['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x4f31b4['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(_0x4f31b4['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(_0x4f31b4['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x4f31b4['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x4f31b4['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(_0x4f31b4['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(_0x4f31b4['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x11b378){if(!_0x11b378)return'<p>No\x20data\x20available</p>';if(_0x11b378['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(_0x11b378['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(_0x11b378['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(_0x11b378['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(_0x11b378['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x3aecec){if(!_0x3aecec)return'<p>No\x20data\x20available</p>';if(_0x3aecec['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(_0x3aecec['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(_0x3aecec['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(_0x3aecec['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x3aecec['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(_0x3aecec['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(_0x3aecec['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x528fd3){if(!_0x528fd3)return'<p>No\x20data\x20available</p>';if(_0x528fd3['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(_0x528fd3['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(_0x528fd3['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 _0x2649ff=_0x528fd3['toolInput']?.['skill']||_0x528fd3['skill']||'',_0x323239=_0x528fd3['content']||_0x528fd3['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(_0x2649ff)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x323239?'\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(_0x323239)+'</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(_0x85e0e0){if(!_0x85e0e0)return'<p>No\x20data\x20available</p>';if(_0x85e0e0['error']&&(!_0x85e0e0['questions']||_0x85e0e0['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(_0x85e0e0['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 _0x3b799a=_0x85e0e0['questions']||(_0x85e0e0['question']?[_0x85e0e0]:[]);if(_0x3b799a['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'](_0x85e0e0,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0xa8ec61=_0x3b799a['map']((_0x269bc1,_0x20d8dc)=>{const _0x1116e1=_0x269bc1['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0x269bc1['header'])+'</span>':'',_0x32d4dc=_0x269bc1['question']?escapeHtml(_0x269bc1['question']):_0x269bc1['header']?'':'Question',_0x525d18=_0x269bc1['options']?.['length']||0x0,_0x82727d=_0x525d18>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x525d18+'\x20options</span>':'',_0x56808d=_0x269bc1['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x204b22=_0x3b799a['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x20d8dc+0x1)+'.</span>\x20':'';let _0x254e49='';return _0x269bc1['options']&&Array['isArray'](_0x269bc1['options'])&&_0x269bc1['options']['length']>0x0&&(_0x254e49='\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'+_0x269bc1['options']['map'](_0x16a462=>'\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(_0x16a462['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16a462['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0x16a462['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16a462['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0x16a462['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'+_0x204b22+_0x1116e1+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x32d4dc+'</span>'+_0x82727d+_0x56808d+'\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'+_0x254e49+'\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 _0x59e272='';if(_0x85e0e0['answer'])_0x59e272='\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(_0x85e0e0['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x85e0e0['denied']&&(_0x59e272='<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'+_0xa8ec61+'\x0a\x20\x20\x20\x20\x20\x20'+_0x59e272+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x5a5b4f){if(!_0x5a5b4f)return'<p>No\x20data\x20available</p>';if(_0x5a5b4f['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(_0x5a5b4f['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(_0x5a5b4f['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 _0x3083e5=_0x5a5b4f['description']||_0x5a5b4f['toolInput']?.['description']||'',_0xcd73d2=_0x5a5b4f['subagentType']||_0x5a5b4f['toolInput']?.['subagent_type']||'',_0x182847=_0x5a5b4f['model']||_0x5a5b4f['toolInput']?.['model']||'',_0x34b937=_0x5a5b4f['prompt']||_0x5a5b4f['toolInput']?.['prompt']||'',_0x1de05d=_0x5a5b4f['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x3083e5?'\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(_0x3083e5)+'</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'+(_0xcd73d2?'\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(_0xcd73d2)+'</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'+(_0x182847?'\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(_0x182847)+'</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'+(_0x34b937?'\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(_0x34b937)+'</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'+(_0x1de05d?'\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(_0x1de05d)+'</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(_0x4faf5f){if(!_0x4faf5f)return'<p>No\x20data\x20available</p>';if(_0x4faf5f['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(_0x4faf5f['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(_0x4faf5f['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 _0x57ed1e=_0x4faf5f['description']||_0x4faf5f['toolInput']?.['description']||'',_0x4a16df=_0x4faf5f['subagentType']||_0x4faf5f['toolInput']?.['subagent_type']||'',_0x360125=_0x4faf5f['prompt']||_0x4faf5f['toolInput']?.['prompt']||'',_0x155257=_0x4faf5f['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x57ed1e?'\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(_0x57ed1e)+'</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'+(_0x4a16df?'\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(_0x4a16df)+'</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'+(_0x360125?'\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(_0x360125)+'</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'+(_0x155257?'\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(_0x155257)+'</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(_0x15e102){if(!_0x15e102)return'';return String(_0x15e102)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#039;');}function computeLineDiff(_0x142ba4,_0x21d511,_0x1d3b6c,_0x7916cf){const _0x5f2948=(_0x142ba4||'')['split']('\x0a'),_0x22330f=(_0x21d511||'')['split']('\x0a'),_0x479773=(_0x1d3b6c||0x1)-0x1,_0x27fe56=(_0x7916cf||_0x1d3b6c||0x1)-0x1,_0x597d42=computeLCS(_0x5f2948,_0x22330f),_0x23518f={'left':[],'right':[]};let _0xbe66fb=0x0,_0x43bb5d=0x0,_0x46f16e=0x0;while(_0xbe66fb<_0x5f2948['length']||_0x43bb5d<_0x22330f['length']){if(_0x46f16e<_0x597d42['length']&&_0xbe66fb<_0x5f2948['length']&&_0x5f2948[_0xbe66fb]===_0x597d42[_0x46f16e]&&_0x43bb5d<_0x22330f['length']&&_0x22330f[_0x43bb5d]===_0x597d42[_0x46f16e])_0x23518f['left']['push']({'type':'context','content':_0x5f2948[_0xbe66fb],'lineNum':_0xbe66fb+0x1+_0x479773}),_0x23518f['right']['push']({'type':'context','content':_0x22330f[_0x43bb5d],'lineNum':_0x43bb5d+0x1+_0x27fe56}),_0xbe66fb++,_0x43bb5d++,_0x46f16e++;else{if(_0x46f16e<_0x597d42['length']&&_0x43bb5d<_0x22330f['length']&&_0x22330f[_0x43bb5d]===_0x597d42[_0x46f16e])_0x23518f['left']['push']({'type':'remove','content':_0x5f2948[_0xbe66fb],'lineNum':_0xbe66fb+0x1+_0x479773}),_0x23518f['right']['push']({'type':'empty','content':'','lineNum':null}),_0xbe66fb++;else{if(_0x46f16e<_0x597d42['length']&&_0xbe66fb<_0x5f2948['length']&&_0x5f2948[_0xbe66fb]===_0x597d42[_0x46f16e])_0x23518f['left']['push']({'type':'empty','content':'','lineNum':null}),_0x23518f['right']['push']({'type':'add','content':_0x22330f[_0x43bb5d],'lineNum':_0x43bb5d+0x1+_0x27fe56}),_0x43bb5d++;else{if(_0xbe66fb<_0x5f2948['length']&&_0x43bb5d<_0x22330f['length'])_0x23518f['left']['push']({'type':'remove','content':_0x5f2948[_0xbe66fb],'lineNum':_0xbe66fb+0x1+_0x479773}),_0x23518f['right']['push']({'type':'add','content':_0x22330f[_0x43bb5d],'lineNum':_0x43bb5d+0x1+_0x27fe56}),_0xbe66fb++,_0x43bb5d++;else{if(_0xbe66fb<_0x5f2948['length'])_0x23518f['left']['push']({'type':'remove','content':_0x5f2948[_0xbe66fb],'lineNum':_0xbe66fb+0x1+_0x479773}),_0x23518f['right']['push']({'type':'empty','content':'','lineNum':null}),_0xbe66fb++;else _0x43bb5d<_0x22330f['length']&&(_0x23518f['left']['push']({'type':'empty','content':'','lineNum':null}),_0x23518f['right']['push']({'type':'add','content':_0x22330f[_0x43bb5d],'lineNum':_0x43bb5d+0x1+_0x27fe56}),_0x43bb5d++);}}}}}return _0x23518f;}function computeLCS(_0x5d0e8e,_0x114218){const _0x3b3e32=_0x5d0e8e['length'],_0x67bad6=_0x114218['length'],_0x406914=Array(_0x3b3e32+0x1)['fill'](null)['map'](()=>Array(_0x67bad6+0x1)['fill'](0x0));for(let _0x21326e=0x1;_0x21326e<=_0x3b3e32;_0x21326e++){for(let _0x131614=0x1;_0x131614<=_0x67bad6;_0x131614++){_0x5d0e8e[_0x21326e-0x1]===_0x114218[_0x131614-0x1]?_0x406914[_0x21326e][_0x131614]=_0x406914[_0x21326e-0x1][_0x131614-0x1]+0x1:_0x406914[_0x21326e][_0x131614]=Math['max'](_0x406914[_0x21326e-0x1][_0x131614],_0x406914[_0x21326e][_0x131614-0x1]);}}const _0x370a10=[];let _0x5c9c1b=_0x3b3e32,_0x55c94b=_0x67bad6;while(_0x5c9c1b>0x0&&_0x55c94b>0x0){if(_0x5d0e8e[_0x5c9c1b-0x1]===_0x114218[_0x55c94b-0x1])_0x370a10['unshift'](_0x5d0e8e[_0x5c9c1b-0x1]),_0x5c9c1b--,_0x55c94b--;else _0x406914[_0x5c9c1b-0x1][_0x55c94b]>_0x406914[_0x5c9c1b][_0x55c94b-0x1]?_0x5c9c1b--:_0x55c94b--;}return _0x370a10;}function renderEditDiffLine(_0x57c444,_0x4fa621){const _0x594162=_0x57c444['lineNum']!==null?String(_0x57c444['lineNum'])['padStart'](0x4,'\x20'):'\x20\x20\x20\x20',_0x271751=escapeHtml(_0x57c444['content']);let _0x3f8aad='edit-diff-line',_0x1fa029='\x20';switch(_0x57c444['type']){case'add':_0x3f8aad+='\x20edit-diff-add',_0x1fa029='+';break;case'remove':_0x3f8aad+='\x20edit-diff-remove',_0x1fa029='-';break;case'empty':_0x3f8aad+='\x20edit-diff-empty',_0x1fa029='\x20';break;default:_0x3f8aad+='\x20edit-diff-context',_0x1fa029='\x20';}return'<div\x20class=\x22'+_0x3f8aad+'\x22><span\x20class=\x22edit-diff-line-num\x22>'+_0x594162+'</span><span\x20class=\x22edit-diff-prefix\x22>'+_0x1fa029+'</span><span\x20class=\x22edit-diff-content\x22>'+(_0x271751||'&nbsp;')+'</span></div>';}export function formatBashDetail(_0x22c8a1){if(!_0x22c8a1)return'<p>No\x20data\x20available</p>';if(_0x22c8a1['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(_0x22c8a1['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(_0x22c8a1['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(_0x22c8a1['stdout']!==undefined||_0x22c8a1['stderr']!==undefined||_0x22c8a1['aggregated_output']!==undefined){const _0x4b26b5=_0x22c8a1['aggregated_output']&&_0x22c8a1['aggregated_output']['trim']()['length']>0x0,_0x4ff121=!_0x4b26b5&&_0x22c8a1['stdout']&&_0x22c8a1['stdout']['trim']()['length']>0x0,_0x8362b8=_0x22c8a1['stderr']&&_0x22c8a1['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(_0x22c8a1['command']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4b26b5?'\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(_0x22c8a1['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'+(_0x4ff121?'\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(_0x22c8a1['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'+(_0x8362b8?'\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(_0x22c8a1['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'+(!_0x4b26b5&&!_0x4ff121&&!_0x8362b8?'<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'+(_0x22c8a1['exitCode']===0x0?'success':'error')+'\x22>'+_0x22c8a1['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(_0x22c8a1['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(_0x22c8a1['output']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatReadDetail(_0x59fb8c){if(!_0x59fb8c)return'<p>No\x20data\x20available</p>';if(_0x59fb8c['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(_0x59fb8c['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(_0x59fb8c['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(_0x59fb8c['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(_0x59fb8c['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWriteDetail(_0x43b3f6){if(!_0x43b3f6)return'<p>No\x20data\x20available</p>';if(_0x43b3f6['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(_0x43b3f6['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(_0x43b3f6['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 _0x41343a=_0x43b3f6['content']['length']>0xc350?_0x43b3f6['content']['substring'](0x0,0xc350)+'\x0a\x0a...\x20[Content\x20truncated\x20at\x2050KB\x20for\x20display]':_0x43b3f6['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(_0x43b3f6['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('+_0x43b3f6['content']['length']+'\x20chars):</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22tool-output\x22>'+escapeHtml(_0x41343a)+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatEditDetail(_0x3339c4){if(!_0x3339c4)return'<p>No\x20data\x20available</p>';if(_0x3339c4['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(_0x3339c4['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(_0x3339c4['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(_0x3339c4['diff']&&!_0x3339c4['oldString']&&!_0x3339c4['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(_0x3339c4['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(_0x3339c4['diff'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3339c4['result']?'<div\x20class=\x22tool-section\x22><div\x20class=\x22tool-section-header\x22>Result:</div><div\x20class=\x22tool-output-summary\x22>'+escapeHtml(_0x3339c4['result'])+'</div></div>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x3ba221=computeLineDiff(_0x3339c4['oldString'],_0x3339c4['newString'],_0x3339c4['startLine'],_0x3339c4['startLine']),_0x3f8ff0=Math['max'](_0x3ba221['left']['length'],_0x3ba221['right']['length']);let _0x3f81ad='';for(let _0x50dcde=0x0;_0x50dcde<_0x3f8ff0;_0x50dcde++){const _0x12469a=_0x3ba221['left'][_0x50dcde]||{'type':'empty','content':'','lineNum':null},_0xe7cf2c=_0x3ba221['right'][_0x50dcde]||{'type':'empty','content':'','lineNum':null};_0x3f81ad+='\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(_0x12469a,'left')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-diff-side\x20edit-diff-right\x22>'+renderEditDiffLine(_0xe7cf2c,'right')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}const _0x2440c1=_0x3ba221['left']['filter'](_0x58ff96=>_0x58ff96['type']==='remove')['length'],_0x1b3d3c=_0x3ba221['right']['filter'](_0x392efe=>_0x392efe['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(_0x3339c4['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'+(_0x3339c4['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>-'+_0x2440c1+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-diff-added\x22>+'+_0x1b3d3c+'</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'+_0x3f81ad+'\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(_0x19856e){if(!_0x19856e)return'<p>No\x20data\x20available</p>';if(_0x19856e['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(_0x19856e['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(_0x19856e['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(_0x19856e['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x19856e['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(_0x19856e['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(_0x19856e['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(_0x19856e['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(_0x2786d9){if(!_0x2786d9)return'<p>No\x20data\x20available</p>';if(_0x2786d9['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(_0x2786d9['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(_0x2786d9['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(_0x2786d9['pattern']||'')+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x2786d9['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(_0x2786d9['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(_0x2786d9['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(_0x55713a){if(!_0x55713a)return'<p>No\x20data\x20available</p>';if(_0x55713a['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(_0x55713a['toolInput']?.['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x55713a['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(_0x55713a['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(_0x55713a['url']||'')+'\x22\x20target=\x22_blank\x22\x20class=\x22external-link\x22>'+escapeHtml(_0x55713a['url']||'')+'</a>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x55713a['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(_0x55713a['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(_0x55713a['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatWebSearchDetail(_0x235c51){if(!_0x235c51)return'<p>No\x20data\x20available</p>';if(_0x235c51['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(_0x235c51['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(_0x235c51['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(_0x235c51['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(_0x235c51['content']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatNotebookEditDetail(_0x304b5c){if(!_0x304b5c)return'<p>No\x20data\x20available</p>';if(_0x304b5c['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(_0x304b5c['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(_0x304b5c['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(_0x304b5c['notebookPath']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x304b5c['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(_0x304b5c['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(_0x304b5c['newSource']||'')+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatSkillDetail(_0x3adf72){if(!_0x3adf72)return'<p>No\x20data\x20available</p>';if(_0x3adf72['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(_0x3adf72['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(_0x3adf72['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 _0xe11e2f=_0x3adf72['toolInput']?.['skill']||_0x3adf72['skill']||'',_0x3ba482=_0x3adf72['content']||_0x3adf72['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(_0xe11e2f)+'</code>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x3ba482?'\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(_0x3ba482)+'</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(_0x7c338d){if(!_0x7c338d)return'<p>No\x20data\x20available</p>';if(_0x7c338d['error']&&(!_0x7c338d['questions']||_0x7c338d['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(_0x7c338d['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 _0xd01c38=_0x7c338d['questions']||(_0x7c338d['question']?[_0x7c338d]:[]);if(_0xd01c38['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'](_0x7c338d,null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';const _0x1ec473=_0xd01c38['map']((_0x3f1723,_0x5a8c64)=>{const _0x44a059=_0x3f1723['header']?'<span\x20class=\x22ask-question-summary-chip\x22>'+escapeHtml(_0x3f1723['header'])+'</span>':'',_0x1395c9=_0x3f1723['question']?escapeHtml(_0x3f1723['question']):_0x3f1723['header']?'':'Question',_0x10ff79=_0x3f1723['options']?.['length']||0x0,_0x5a5201=_0x10ff79>0x0?'<span\x20class=\x22ask-question-summary-count\x22>'+_0x10ff79+'\x20options</span>':'',_0x4f54bd=_0x3f1723['multiSelect']?'<span\x20class=\x22ask-question-multi-badge\x22>Multi-select</span>':'',_0x36d971=_0xd01c38['length']>0x1?'<span\x20class=\x22ask-question-summary-num\x22>'+(_0x5a8c64+0x1)+'.</span>\x20':'';let _0x47fa00='';return _0x3f1723['options']&&Array['isArray'](_0x3f1723['options'])&&_0x3f1723['options']['length']>0x0&&(_0x47fa00='\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'+_0x3f1723['options']['map'](_0x1ee2b3=>'\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(_0x1ee2b3['label']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1ee2b3['description']?'<div\x20class=\x22ask-question-option-desc\x22>'+escapeHtml(_0x1ee2b3['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1ee2b3['preview']?'<pre\x20class=\x22ask-question-option-preview\x22>'+escapeHtml(_0x1ee2b3['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'+_0x36d971+_0x44a059+'<span\x20class=\x22ask-question-summary-text\x22>'+_0x1395c9+'</span>'+_0x5a5201+_0x4f54bd+'\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'+_0x47fa00+'\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 _0x5039c7='';if(_0x7c338d['answer'])_0x5039c7='\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(_0x7c338d['answer'])+'</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';else _0x7c338d['denied']&&(_0x5039c7='<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'+_0x1ec473+'\x0a\x20\x20\x20\x20\x20\x20'+_0x5039c7+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}export function formatAgentDetail(_0x37510a){if(!_0x37510a)return'<p>No\x20data\x20available</p>';if(_0x37510a['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(_0x37510a['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(_0x37510a['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 _0x4fe3e1=_0x37510a['description']||_0x37510a['toolInput']?.['description']||'',_0x38724c=_0x37510a['subagentType']||_0x37510a['toolInput']?.['subagent_type']||'',_0x52bff5=_0x37510a['model']||_0x37510a['toolInput']?.['model']||'',_0x19097e=_0x37510a['prompt']||_0x37510a['toolInput']?.['prompt']||'',_0x131592=_0x37510a['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20agent-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x4fe3e1?'\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(_0x4fe3e1)+'</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'+(_0x38724c?'\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(_0x38724c)+'</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'+(_0x52bff5?'\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(_0x52bff5)+'</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'+(_0x19097e?'\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(_0x19097e)+'</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'+(_0x131592?'\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(_0x131592)+'</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(_0x579b20){if(!_0x579b20)return'<p>No\x20data\x20available</p>';if(_0x579b20['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(_0x579b20['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(_0x579b20['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 _0x1c1b76=_0x579b20['description']||_0x579b20['toolInput']?.['description']||'',_0xdddb50=_0x579b20['subagentType']||_0x579b20['toolInput']?.['subagent_type']||'',_0x144c5c=_0x579b20['prompt']||_0x579b20['toolInput']?.['prompt']||'',_0x11e133=_0x579b20['content']||'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22tool-detail\x20task-detail\x22>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1c1b76?'\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(_0x1c1b76)+'</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'+(_0xdddb50?'\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(_0xdddb50)+'</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'+(_0x144c5c?'\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(_0x144c5c)+'</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'+(_0x11e133?'\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(_0x11e133)+'</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,RESTART_POLL_INTERVAL_MS=0x7d0,RESTART_POLL_MAX_ATTEMPTS=0x1e,RESTART_MIN_SUCCESS_DELAY_MS=0x1b58,NUMBER_FORMATTER=new Intl['NumberFormat'](),state={'currentSection':'health','environments':[],'health':{'loaded':![],'request':null,'autoRefreshTimer':null,'versionChecked':![],'currentVersion':null,'latestVersion':null,'installCommand':null,'updateEnabled':![],'hasRestartCommand':![],'updateInProgress':![],'restartInProgress':![],'updateAvailable':![]},'logs':{'loaded':![],'request':null,'entries':[],'total':0x0,'minLevel':'INFO','level':'ALL','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 _0x238d08=await checkAdminAccess();await initializeAdminMenu(_0x238d08),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x37c0b9=getSessionValue('admin-health-auto-refresh');if(_0x37c0b9!==null){const _0x19d3eb=document['getElementById']('health-auto-refresh');if(_0x19d3eb)_0x19d3eb['checked']=_0x37c0b9!=='false';}const _0x2ca4b9=getSessionValue('admin-active-section'),_0x3b49bd=['health','logs','usage']['includes'](_0x2ca4b9)?_0x2ca4b9:'health';await switchSection(_0x3b49bd);}catch(_0x59ea17){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x59ea17),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x59ea17['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x2a9ddf=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x2a9ddf,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x2a9ddf;}catch(_0x450491){_0x450491['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0x450491;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x4ab3e8=>{_0x4ab3e8['addEventListener']('click',()=>switchSection(_0x4ab3e8['dataset']['section']));}),document['getElementById']('retry-admin-btn')?.['addEventListener']('click',()=>{window['location']['reload']();}),document['getElementById']('health-refresh-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('retry-health-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('health-auto-refresh')?.['addEventListener']('change',syncHealthAutoRefresh),document['getElementById']('health-check-updates-btn')?.['addEventListener']('click',()=>loadVersionStatus({'checkUpdates':!![]})),document['getElementById']('health-copy-install-btn')?.['addEventListener']('click',copyInstallCommand),document['getElementById']('health-update-btn')?.['addEventListener']('click',applyUpdate),document['getElementById']('health-restart-btn')?.['addEventListener']('click',showRestartConfirmation),document['getElementById']('confirm-restart-btn')?.['addEventListener']('click',confirmRestart),document['getElementById']('cancel-restart-btn')?.['addEventListener']('click',hideRestartModal),document['getElementById']('close-restart-modal')?.['addEventListener']('click',hideRestartModal),document['querySelector']('#restart-modal\x20.modal-overlay')?.['addEventListener']('click',hideRestartModal),document['getElementById']('restart-overlay-retry')?.['addEventListener']('click',()=>waitForServerRestart({'manualRetry':!![]})),document['getElementById']('server-stop-containers')?.['addEventListener']('click',()=>runCleanupAction('Stopping\x20containers',()=>API['stopAllContainers']())),document['getElementById']('server-remove-stopped')?.['addEventListener']('click',()=>runCleanupAction('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']())),document['getElementById']('server-prune-docker')?.['addEventListener']('click',()=>runCleanupAction('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']())),document['getElementById']('cleanup-toggle')?.['addEventListener']('click',toggleCleanupSection),document['getElementById']('logs-refresh-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('retry-logs-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('logs-live-toggle')?.['addEventListener']('click',toggleLogsLiveMode),document['getElementById']('logs-clear-btn')?.['addEventListener']('click',clearDisplayedLogs),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x4128fe=>{_0x4128fe['addEventListener']('click',()=>{state['logs']['level']=_0x4128fe['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),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',_0x470729=>{state['usage']['environment']=_0x470729['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0x11012e=>{_0x11012e['addEventListener']('click',()=>{state['usage']['days']=_0x11012e['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x2a1c8e){if(!_0x2a1c8e)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x2f33db=>{const _0x30c9ca=_0x2f33db['dataset']['section']===_0x2a1c8e;_0x2f33db['classList']['toggle']('active',_0x30c9ca),_0x2f33db['setAttribute']('aria-selected',String(_0x30c9ca));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x36ee0f=>{const _0x1cee45=_0x36ee0f['id']==='section-'+_0x2a1c8e;_0x36ee0f['hidden']=!_0x1cee45,_0x36ee0f['classList']['toggle']('active',_0x1cee45);}),state['currentSection']=_0x2a1c8e,setSessionValue('admin-active-section',_0x2a1c8e),_0x2a1c8e!=='health'&&stopHealthAutoRefresh(),_0x2a1c8e!=='logs'&&stopLogStream(),_0x2a1c8e==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x2a1c8e==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x2a1c8e==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x4fd8f9){try{return sessionStorage['getItem'](_0x4fd8f9);}catch{return null;}}function setSessionValue(_0x3c7697,_0x2e2776){try{sessionStorage['setItem'](_0x3c7697,_0x2e2776);}catch{}}async function loadEnvironmentOptions(){const _0x271bce=await API['get']('/environments');state['environments']=(_0x271bce['environments']||[])['map'](_0x207dbd=>_0x207dbd?.['name'])['filter'](Boolean)['sort']((_0xd5c2c4,_0x3629eb)=>_0xd5c2c4['localeCompare'](_0x3629eb));const _0x2c50f0=document['getElementById']('usage-environment-filter');if(!_0x2c50f0)return;_0x2c50f0['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x4b47c1=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x4b47c1)+'\x22>'+Utils['escapeHtml'](_0x4b47c1)+'</option>')['join'](''),_0x2c50f0['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x1c5b84=document['getElementById']('health-auto-refresh');if(_0x1c5b84)setSessionValue('admin-health-auto-refresh',String(_0x1c5b84['checked']));const _0x4110f0=state['currentSection']==='health'&&!!_0x1c5b84?.['checked'];stopHealthAutoRefresh();if(!_0x4110f0)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 _0x450d85=document['getElementById']('health-loading'),_0x5029ed=document['getElementById']('health-error'),_0x375626=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0x450d85['hidden']=![],_0x5029ed['hidden']=!![],_0x375626['hidden']=!![]);try{const [_0x42611f]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x553a00=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x553a00),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x42611f),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0x450d85['hidden']=!![],_0x5029ed['hidden']=!![],_0x375626['hidden']=![],state['health']['loaded']=!![];}catch(_0x483c7d){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x483c7d),_0x450d85['hidden']=!![],_0x5029ed['hidden']=![],_0x375626['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x483c7d['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x1555dc=document['getElementById']('health-update-btn'),_0x2e8901=document['getElementById']('health-restart-btn');if(!_0x1555dc||!_0x2e8901)return;const _0x1a7bc9=state['health']['updateEnabled'],_0x4efa65=_0x1a7bc9&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x1555dc['hidden']=!_0x4efa65,_0x1555dc['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x1555dc['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x2e8901['hidden']=!_0x1a7bc9,_0x2e8901['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x1b693e,output:_0x1a4a9b}){const _0x4358c4=document['getElementById']('health-update-output-wrap'),_0x538b27=document['getElementById']('health-update-status'),_0x43837d=document['getElementById']('health-update-output');if(!_0x4358c4||!_0x538b27||!_0x43837d)return;const _0x196160=_0x1b693e||'';_0x4358c4['hidden']=![],_0x538b27['className']='admin-update-status',_0x196160&&_0x538b27['classList']['add'](_0x196160),_0x538b27['textContent']=_0x196160==='success'?'Success':_0x196160==='error'?'Failed':'In\x20Progress',_0x43837d['textContent']=_0x1a4a9b||'No\x20output\x20returned.';}function buildCommandOutput(_0x48ac4f,_0x7c2d5a){const _0x4f0282=[];typeof _0x48ac4f==='string'&&_0x48ac4f['trim']()&&_0x4f0282['push'](_0x48ac4f['trim']());if(typeof _0x7c2d5a==='string'&&_0x7c2d5a['trim']()){const _0x4ef9ae=_0x7c2d5a['trim'](),_0x1034cf=_0x4f0282['some'](_0x4ad535=>_0x4ad535['includes'](_0x4ef9ae));!_0x1034cf&&_0x4f0282['push']('Error:\x0a'+_0x4ef9ae);}return _0x4f0282['join']('\x0a\x0a');}function showRestartOverlay({title:_0x1875f1,message:_0x1fd2f0,showRetry:showRetry=![]}){const _0x5a5570=document['getElementById']('health-restart-overlay'),_0x127e64=document['getElementById']('restart-overlay-title'),_0x3c44b7=document['getElementById']('restart-overlay-message'),_0x42c6a3=document['getElementById']('restart-overlay-retry');if(!_0x5a5570||!_0x127e64||!_0x3c44b7||!_0x42c6a3)return;_0x127e64['textContent']=_0x1875f1,_0x3c44b7['textContent']=_0x1fd2f0,_0x42c6a3['hidden']=!showRetry,_0x5a5570['hidden']=![];}function hideRestartOverlay(){const _0x5e3571=document['getElementById']('health-restart-overlay');_0x5e3571&&(_0x5e3571['hidden']=!![]);}function sleep(_0x413e22){return new Promise(_0x1775a8=>{window['setTimeout'](_0x1775a8,_0x413e22);});}async function loadUpdateSettings(){const _0x1b4dee=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x1b4dee['enabled'],state['health']['hasRestartCommand']=!!_0x1b4dee['hasRestartCommand'],syncHealthActionButtons(),_0x1b4dee;}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 _0x5279c5=await API['applyServerUpdate'](state['health']['latestVersion']),_0x550fd4=buildCommandOutput(_0x5279c5['output'],_0x5279c5['error']);_0x5279c5['success']?(setUpdateOutput({'status':'success','output':_0x550fd4||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x550fd4||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x5279c5['error']||'Server\x20update\x20failed'));}catch(_0x535971){setUpdateOutput({'status':'error','output':buildCommandOutput(_0x535971['output'],_0x535971['commandError']||_0x535971['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0x535971['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0xd085dc=document['getElementById']('restart-modal');_0xd085dc&&(_0xd085dc['hidden']=![]);}function hideRestartModal(){const _0x460663=document['getElementById']('restart-modal');_0x460663&&(_0x460663['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x5d8950){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x5d8950['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 _0x3a9ce3=Date['now']();let _0x317361=![];for(let _0x23a089=0x0;_0x23a089<RESTART_POLL_MAX_ATTEMPTS;_0x23a089+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x141637=Date['now']()-_0x3a9ce3;if(_0x317361||_0x141637>=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(_0x2da20e){_0x317361=!![];}}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 _0x5a5920=document['getElementById']('health-check-updates-btn');_0x5a5920&&(_0x5a5920['disabled']=!![],_0x5a5920['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x4a9615=await API['get']('/health');state['health']['currentVersion']=_0x4a9615['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 _0x397def=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x397def['latestVersion']||'Unavailable',state['health']['installCommand']=_0x397def['installCommand']||null,state['health']['updateAvailable']=!!_0x397def['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x397def['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x397def),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(_0x84d478){console['error']('Failed\x20to\x20load\x20version\x20status',_0x84d478),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x84d478['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x5a5920&&(_0x5a5920['disabled']=![],_0x5a5920['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x19b1c3){const _0x43d304=_0x19b1c3?.['versionStatus'];if(_0x43d304==='update-available')return'Update\x20available:\x20'+_0x19b1c3['currentVersion']+'\x20→\x20'+_0x19b1c3['latestVersion'];if(_0x43d304==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x19b1c3['latestVersion']+').';if(_0x43d304==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x19b1c3['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x44a784=await Utils['copyToClipboard'](state['health']['installCommand']);_0x44a784?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x53a305){document['getElementById']('cpu-usage')['textContent']=_0x53a305['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x53a305['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x53a305['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x53a305['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x53a305['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x53a305['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x53a305['cpu']?.['percent'],statusFromPercent(_0x53a305['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x53a305['memory']?.['percent'],statusFromPercent(_0x53a305['memory']?.['percent'])),setMetricProgress('disk-progress',_0x53a305['disk']?.['percent'],statusFromPercent(_0x53a305['disk']?.['percent']));const _0x2497b9=_0x53a305['docker']?.['total']>0x0?_0x53a305['docker']['running']/_0x53a305['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x2497b9,'ok');const _0x15e386=_0x53a305['dockerStorage']||{},_0x2c9826=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x15e386['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x15e386['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x15e386['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x15e386['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x15e386['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x15e386['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x15e386['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x15e386['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x15e386['percent'],_0x15e386['status']||'ok'),_0x2c9826['classList']['remove']('status-warning','status-critical'),_0x15e386['status']==='warning'&&_0x2c9826['classList']['add']('status-warning'),_0x15e386['status']==='critical'&&_0x2c9826['classList']['add']('status-critical');}function clampPercent(_0x5bac23){if(!Number['isFinite'](_0x5bac23))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x5bac23)));}function statusFromPercent(_0x5bc1cb){if(!Number['isFinite'](_0x5bc1cb))return'ok';if(_0x5bc1cb>=0x5a)return'critical';if(_0x5bc1cb>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x573e2b,_0x203e4b,_0x44d4e4='ok'){const _0x23fe2b=document['getElementById'](_0x573e2b);if(!_0x23fe2b)return;const _0x5a7780=clampPercent(_0x203e4b);_0x23fe2b['style']['width']=_0x5a7780+'%',_0x23fe2b['classList']['remove']('status-ok','status-warning','status-critical'),_0x23fe2b['classList']['add'](_0x44d4e4==='critical'?'status-critical':_0x44d4e4==='warning'?'status-warning':'status-ok'),_0x23fe2b['parentElement']?.['setAttribute']('aria-valuenow',String(_0x5a7780));}async function runCleanupAction(_0x5094c6,_0x1c4c09){const _0x47a4be=document['getElementById']('server-health-action-status'),_0x65505d=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x65505d['forEach'](_0x11fc58=>{_0x11fc58['disabled']=!![];}),_0x47a4be['hidden']=![],_0x47a4be['classList']['remove']('success','error'),_0x47a4be['textContent']=_0x5094c6+'...';try{const _0x4d59f7=await _0x1c4c09();_0x47a4be['classList']['add']('success'),_0x47a4be['textContent']=_0x4d59f7?.['message']||_0x5094c6+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x414659){console['error'](_0x5094c6+'\x20failed',_0x414659),_0x47a4be['classList']['add']('error'),_0x47a4be['textContent']=_0x414659['message']||_0x5094c6+'\x20failed';}finally{_0x65505d['forEach'](_0x4f86a3=>{_0x4f86a3['disabled']=![];});}}function toggleCleanupSection(){const _0x2ad855=document['getElementById']('cleanup-section'),_0x2b6a12=document['getElementById']('cleanup-content'),_0x4d882b=document['getElementById']('cleanup-toggle');if(!_0x2ad855||!_0x2b6a12||!_0x4d882b)return;const _0x3750a3=_0x2ad855['classList']['toggle']('expanded');_0x2b6a12['hidden']=!_0x3750a3,_0x4d882b['setAttribute']('aria-expanded',String(_0x3750a3));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x26c910=document['getElementById']('logs-loading'),_0x3ed96b=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x26c910['hidden']=![],_0x3ed96b['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x70a66=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x70a66['set']('level',state['logs']['level']);state['logs']['search']&&_0x70a66['set']('search',state['logs']['search']);const _0x5468db=await API['get']('/logs?'+_0x70a66['toString']());state['logs']['entries']=Array['isArray'](_0x5468db['entries'])?_0x5468db['entries']['slice'](-state['logs']['maxEntries']):[],state['logs']['total']=Number(_0x5468db['total'])||0x0,state['logs']['minLevel']=_0x5468db['minLevel']||'INFO',state['logs']['loaded']=!![],_0x26c910['hidden']=!![],_0x3ed96b['hidden']=!![],renderLogs();}catch(_0x157184){console['error']('Failed\x20to\x20load\x20logs',_0x157184),_0x26c910['hidden']=!![],_0x3ed96b['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x157184['message']||'Unknown\x20error',document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![];}finally{state['logs']['request']=null;}})()),state['logs']['request'];}function renderLogs(){const _0x38b0d2=document['getElementById']('logs-container'),_0x3b548f=document['getElementById']('logs-empty'),_0x528ef0=state['logs']['autoScroll']&&state['logs']['live'],_0x43aa8c=getVisibleLogEntries();updateLogsMeta(_0x43aa8c['length']);if(_0x43aa8c['length']===0x0){_0x38b0d2['hidden']=!![],_0x3b548f['hidden']=![];return;}_0x3b548f['hidden']=!![],_0x38b0d2['hidden']=![],_0x38b0d2['innerHTML']=_0x43aa8c['map'](renderLogEntry)['join'](''),_0x528ef0&&(_0x38b0d2['scrollTop']=_0x38b0d2['scrollHeight']);}function getVisibleLogEntries(){const _0x2d21c7=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x3f566d=>{if(state['logs']['level']!=='ALL'&&_0x3f566d['level']!==state['logs']['level'])return![];if(!_0x2d21c7)return!![];const _0x3f131c=String(_0x3f566d['message']||'')['toLowerCase'](),_0x442ea8=_0x3f566d['context']?JSON['stringify'](_0x3f566d['context'])['toLowerCase']():'';return _0x3f131c['includes'](_0x2d21c7)||_0x442ea8['includes'](_0x2d21c7);});}function renderLogEntry(_0x549a9e){const _0x3c7f79=Utils['escapeHtml'](formatDateTime(_0x549a9e['timestamp'])),_0x117940=Utils['escapeHtml'](String(_0x549a9e['level']||'INFO')),_0x156df8=Utils['escapeHtml'](String(_0x549a9e['message']||'')),_0x3dbf4c=_0x549a9e['context']?'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22admin-log-context\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary>Context</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre>'+Utils['escapeHtml'](JSON['stringify'](_0x549a9e['context'],null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x3c7f79+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x117940['toLowerCase']()+'\x22>'+_0x117940+'</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-message\x22>'+_0x156df8+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x3dbf4c+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0xe4f2f5){const _0x3f829e=document['getElementById']('logs-meta');if(!_0x3f829e)return;const _0x498489=state['logs']['entries']['length'],_0x12a88a=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim']();_0x3f829e['textContent']=_0x12a88a?'Showing\x20'+_0xe4f2f5+'\x20of\x20'+_0x498489+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0xe4f2f5+'\x20recent\x20buffered\x20entries.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?startLogStream():stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x509f54=document['getElementById']('logs-live-toggle'),_0x13de42=document['getElementById']('logs-stream-status');if(!_0x509f54||!_0x13de42)return;_0x13de42['classList']['remove']('live','error');if(!state['logs']['live']){_0x13de42['textContent']='Paused',_0x509f54['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x13de42['textContent']='Live',_0x13de42['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x13de42['textContent']='Reconnecting',_0x13de42['classList']['add']('error')):_0x13de42['textContent']='Connecting';_0x509f54['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x2dc432=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x2dc432,_0x2dc432['addEventListener']('log',_0x52d4ee=>{try{const _0x4f0a2b=JSON['parse'](_0x52d4ee['data']);state['logs']['entries']['push'](_0x4f0a2b),state['logs']['entries']['length']>state['logs']['maxEntries']&&state['logs']['entries']['shift'](),renderLogs();}catch(_0x1737d2){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x1737d2);}}),_0x2dc432['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x2dc432['onerror']=()=>{state['logs']['streamState']='error',updateLogsLiveUi();};}function stopLogStream(){state['logs']['stream']&&(state['logs']['stream']['close'](),state['logs']['stream']=null),state['logs']['streamState']='paused',updateLogsLiveUi();}function clearDisplayedLogs(){state['logs']['entries']=[],renderLogs();}function handleLogsSearchInput(_0x5cac52){const _0x40fa65=_0x5cac52['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x40fa65,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x748bb1=document['getElementById']('logs-container');if(!_0x748bb1)return;const _0x2a5d44=_0x748bb1['scrollHeight']-_0x748bb1['scrollTop']-_0x748bb1['clientHeight'];state['logs']['autoScroll']=_0x2a5d44<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x52992c=document['getElementById']('usage-loading'),_0x43e996=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x52992c['hidden']=![],_0x43e996['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x2ffdd9=new URLSearchParams();_0x2ffdd9['set']('days',state['usage']['days']);state['usage']['environment']&&_0x2ffdd9['set']('environment',state['usage']['environment']);const _0x163575=await API['get']('/stats?'+_0x2ffdd9['toString']());state['usage']['loaded']=!![],_0x52992c['hidden']=!![],_0x43e996['hidden']=!![],renderUsage(_0x163575);}catch(_0x5dc220){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x5dc220),_0x52992c['hidden']=!![],_0x43e996['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x5dc220['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x10f172){const _0x10a043=Number(_0x10f172?.['tasks']?.['total'])||0x0,_0xe69e25=document['getElementById']('usage-empty'),_0x33efd9=document['getElementById']('usage-content');if(_0x10a043===0x0){_0xe69e25['hidden']=![],_0x33efd9['hidden']=!![];return;}_0xe69e25['hidden']=!![],_0x33efd9['hidden']=![];const _0x280b84=Number(_0x10f172?.['approvalRate']?.['successRate'])||0x0,_0xc963aa=Math['round'](_0x280b84*0x64),_0x5e252b=_0x10f172?.['code']?.['approved']||{},_0x2786f8=Number(_0x5e252b?.['tasks'])||0x0,_0x316e88=(Number(_0x5e252b?.['linesAdded'])||0x0)-(Number(_0x5e252b?.['linesDeleted'])||0x0),_0x40112c=(Number(_0x10f172?.['code']?.['linesAdded'])||0x0)-(Number(_0x10f172?.['code']?.['linesDeleted'])||0x0),_0x3175b4=Number(_0x10f172?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0x10a043)),setSummaryValue('usage-success-rate',_0xc963aa+'%',statusClassFromPercent(_0xc963aa)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x40112c)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x3175b4));const _0x403ff1=_0x10a043>0x0?Math['round'](_0x2786f8/_0x10a043*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x2786f8)+'\x20approved\x20('+_0x403ff1+'%)\x20·\x20'+formatNumber(_0x10f172['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x10f172['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x10f172['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x10f172['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x10f172['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x10f172['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x316e88)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x10f172['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x10f172['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x10f172['period']),renderBarList('usage-status-bars',_0x10f172['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x10f172['tasks']['byType']||{},_0x10a043,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x10f172['tasks']['byEnvironment']||{},_0x10a043),renderUserTable('usage-user-body',_0x10f172['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x10f172['tasks']['bySource']||{},_0x10a043,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x10f172['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x10f172['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x10f172['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x10f172['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x5e252b['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x5e252b['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x5e252b['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x5e252b['repositoriesAffected']||0x0);const _0x1e9da6=(_0x5b5b1c,_0x1acdfb)=>_0x5b5b1c>0x0?Math['round'](_0x1acdfb/_0x5b5b1c*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x1e9da6(_0x10f172['code']['linesAdded']||0x0,_0x5e252b['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x1e9da6(_0x10f172['code']['linesDeleted']||0x0,_0x5e252b['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x1e9da6(_0x10f172['code']['filesChanged']||0x0,_0x5e252b['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x1e9da6(_0x10f172['code']['repositoriesAffected']||0x0,_0x5e252b['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x60710b){const _0x52517f=_0x60710b?.['from']?formatDateTime(_0x60710b['from']):'the\x20earliest\x20loaded\x20task',_0x318dc4=_0x60710b?.['to']?formatDateTime(_0x60710b['to']):'now',_0x507b9f=_0x60710b?.['days']?_0x60710b['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x507b9f+'\x20·\x20'+_0x52517f+'\x20to\x20'+_0x318dc4;}function renderBarList(_0xc4441e,_0x711f66){const _0x40fcb=document['getElementById'](_0xc4441e);if(!_0x40fcb)return;const _0x2708e6=Object['entries'](_0x711f66)['filter'](([,_0x464632])=>Number(_0x464632)>0x0)['sort']((_0x1f4117,_0x553c88)=>_0x553c88[0x1]-_0x1f4117[0x1]),_0x4061bf=_0x2708e6['reduce']((_0x4e78fb,[,_0x40fb5e])=>_0x4e78fb+Number(_0x40fb5e||0x0),0x0);if(_0x2708e6['length']===0x0){_0x40fcb['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x40fcb['innerHTML']=_0x2708e6['map'](([_0x623ad8,_0x24f369])=>{const _0x221edc=_0x4061bf>0x0?Math['max'](0x2,Math['round'](_0x24f369/_0x4061bf*0x64)):0x0,_0x2b08b6=Utils['escapeHtml'](prettifyKey(_0x623ad8)),_0x533f09=Utils['escapeHtml'](formatNumber(_0x24f369));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>'+_0x2b08b6+'</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(_0x623ad8)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x221edc+'%\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>'+_0x533f09+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x5380bf,_0x30e2f1,_0x559ad4,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x21d001=document['getElementById'](_0x5380bf);if(!_0x21d001)return;const _0x422ce4=Object['entries'](_0x30e2f1)['filter'](([,_0x1710a7])=>Number(_0x1710a7)>0x0)['sort']((_0x5d95ec,_0x267316)=>_0x267316[0x1]-_0x5d95ec[0x1]||String(_0x5d95ec[0x0])['localeCompare'](String(_0x267316[0x0])));if(_0x422ce4['length']===0x0){_0x21d001['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x21d001['innerHTML']=_0x422ce4['map'](([_0x598e6a,_0x1e2042])=>{const _0x1bbbb2=labelFormatter?labelFormatter(_0x598e6a):_0x598e6a,_0x40e877=includePercent?'<td>'+formatPercent(_0x559ad4>0x0?_0x1e2042/_0x559ad4*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(_0x1bbbb2))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x1e2042))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x40e877+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x27f397,_0x31767a){const _0x3c20a3=document['getElementById'](_0x27f397);if(!_0x3c20a3)return;if(!Array['isArray'](_0x31767a)||_0x31767a['length']===0x0){_0x3c20a3['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x3c20a3['innerHTML']=_0x31767a['map'](_0x51b31b=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x51b31b['name']||_0x51b31b['username']||_0x51b31b['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x51b31b['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x516619,_0x67d17f){document['querySelectorAll'](_0x516619+'\x20.admin-filter-btn')['forEach'](_0x9bc4b6=>{_0x9bc4b6['classList']['toggle']('active',_0x9bc4b6['dataset']['level']===_0x67d17f||_0x9bc4b6['dataset']['days']===_0x67d17f);});}function setSummaryValue(_0x15d040,_0x23bcd1,_0x33af1d=''){const _0x39b131=document['getElementById'](_0x15d040);if(!_0x39b131)return;_0x39b131['textContent']=_0x23bcd1,_0x39b131['classList']['remove']('status-good','status-warn','status-bad'),_0x33af1d&&_0x39b131['classList']['add'](_0x33af1d);}function statusClassFromPercent(_0x2475c6){if(_0x2475c6>=0x50)return'status-good';if(_0x2475c6>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x41cf51){const _0xee814e=new Date(_0x41cf51);if(Number['isNaN'](_0xee814e['getTime']()))return _0x41cf51||'Unknown';return _0xee814e['toLocaleString']();}function formatDurationMinutes(_0x532eab){const _0x537adb=Math['round'](Number(_0x532eab)||0x0);if(_0x537adb<0x3c)return _0x537adb+'m';const _0xd17422=Math['floor'](_0x537adb/0x3c),_0xf21e63=_0x537adb%0x3c;return _0xf21e63>0x0?_0xd17422+'h\x20'+_0xf21e63+'m':_0xd17422+'h';}function formatPercent(_0x338bce){return Math['round'](Number(_0x338bce)||0x0)+'%';}function formatNumber(_0x48adbf){return NUMBER_FORMATTER['format'](Number(_0x48adbf)||0x0);}function formatSignedNumber(_0x59cd93){const _0x266f6d=Number(_0x59cd93)||0x0;if(_0x266f6d>0x0)return'+'+formatNumber(_0x266f6d);return formatNumber(_0x266f6d);}function prettifyKey(_0xb614a3){return String(_0xb614a3)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x429372=>_0x429372['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,RESTART_POLL_INTERVAL_MS=0x7d0,RESTART_POLL_MAX_ATTEMPTS=0x1e,RESTART_MIN_SUCCESS_DELAY_MS=0x1b58,NUMBER_FORMATTER=new Intl['NumberFormat'](),state={'currentSection':'health','environments':[],'health':{'loaded':![],'request':null,'autoRefreshTimer':null,'versionChecked':![],'currentVersion':null,'latestVersion':null,'installCommand':null,'updateEnabled':![],'hasRestartCommand':![],'updateInProgress':![],'restartInProgress':![],'updateAvailable':![]},'logs':{'loaded':![],'request':null,'entries':[],'total':0x0,'minLevel':'INFO','level':'ALL','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 _0x2d1f74=await checkAdminAccess();await initializeAdminMenu(_0x2d1f74),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x529d26=getSessionValue('admin-health-auto-refresh');if(_0x529d26!==null){const _0x49957a=document['getElementById']('health-auto-refresh');if(_0x49957a)_0x49957a['checked']=_0x529d26!=='false';}const _0x7beeb3=getSessionValue('admin-active-section'),_0x41a933=['health','logs','usage']['includes'](_0x7beeb3)?_0x7beeb3:'health';await switchSection(_0x41a933);}catch(_0xe776ce){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0xe776ce),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0xe776ce['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x1f7b1f=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x1f7b1f,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x1f7b1f;}catch(_0x497b1b){_0x497b1b['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0x497b1b;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x3abd73=>{_0x3abd73['addEventListener']('click',()=>switchSection(_0x3abd73['dataset']['section']));}),document['getElementById']('retry-admin-btn')?.['addEventListener']('click',()=>{window['location']['reload']();}),document['getElementById']('health-refresh-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('retry-health-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('health-auto-refresh')?.['addEventListener']('change',syncHealthAutoRefresh),document['getElementById']('health-check-updates-btn')?.['addEventListener']('click',()=>loadVersionStatus({'checkUpdates':!![]})),document['getElementById']('health-copy-install-btn')?.['addEventListener']('click',copyInstallCommand),document['getElementById']('health-update-btn')?.['addEventListener']('click',applyUpdate),document['getElementById']('health-restart-btn')?.['addEventListener']('click',showRestartConfirmation),document['getElementById']('confirm-restart-btn')?.['addEventListener']('click',confirmRestart),document['getElementById']('cancel-restart-btn')?.['addEventListener']('click',hideRestartModal),document['getElementById']('close-restart-modal')?.['addEventListener']('click',hideRestartModal),document['querySelector']('#restart-modal\x20.modal-overlay')?.['addEventListener']('click',hideRestartModal),document['getElementById']('restart-overlay-retry')?.['addEventListener']('click',()=>waitForServerRestart({'manualRetry':!![]})),document['getElementById']('server-stop-containers')?.['addEventListener']('click',()=>runCleanupAction('Stopping\x20containers',()=>API['stopAllContainers']())),document['getElementById']('server-remove-stopped')?.['addEventListener']('click',()=>runCleanupAction('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']())),document['getElementById']('server-prune-docker')?.['addEventListener']('click',()=>runCleanupAction('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']())),document['getElementById']('cleanup-toggle')?.['addEventListener']('click',toggleCleanupSection),document['getElementById']('logs-refresh-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('retry-logs-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('logs-live-toggle')?.['addEventListener']('click',toggleLogsLiveMode),document['getElementById']('logs-clear-btn')?.['addEventListener']('click',clearDisplayedLogs),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x30dd71=>{_0x30dd71['addEventListener']('click',()=>{state['logs']['level']=_0x30dd71['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),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',_0x2169f4=>{state['usage']['environment']=_0x2169f4['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0x26c1c7=>{_0x26c1c7['addEventListener']('click',()=>{state['usage']['days']=_0x26c1c7['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x491858){if(!_0x491858)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x53b00d=>{const _0x2652ef=_0x53b00d['dataset']['section']===_0x491858;_0x53b00d['classList']['toggle']('active',_0x2652ef),_0x53b00d['setAttribute']('aria-selected',String(_0x2652ef));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x4197ca=>{const _0x388f4e=_0x4197ca['id']==='section-'+_0x491858;_0x4197ca['hidden']=!_0x388f4e,_0x4197ca['classList']['toggle']('active',_0x388f4e);}),state['currentSection']=_0x491858,setSessionValue('admin-active-section',_0x491858),_0x491858!=='health'&&stopHealthAutoRefresh(),_0x491858!=='logs'&&stopLogStream(),_0x491858==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x491858==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x491858==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x42ce6b){try{return sessionStorage['getItem'](_0x42ce6b);}catch{return null;}}function setSessionValue(_0x2df343,_0x198034){try{sessionStorage['setItem'](_0x2df343,_0x198034);}catch{}}async function loadEnvironmentOptions(){const _0x5190cf=await API['get']('/environments');state['environments']=(_0x5190cf['environments']||[])['map'](_0x1e6cba=>_0x1e6cba?.['name'])['filter'](Boolean)['sort']((_0x5d46c8,_0x1a8a64)=>_0x5d46c8['localeCompare'](_0x1a8a64));const _0x3426ce=document['getElementById']('usage-environment-filter');if(!_0x3426ce)return;_0x3426ce['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x27814c=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x27814c)+'\x22>'+Utils['escapeHtml'](_0x27814c)+'</option>')['join'](''),_0x3426ce['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x521160=document['getElementById']('health-auto-refresh');if(_0x521160)setSessionValue('admin-health-auto-refresh',String(_0x521160['checked']));const _0x2d7f28=state['currentSection']==='health'&&!!_0x521160?.['checked'];stopHealthAutoRefresh();if(!_0x2d7f28)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 _0x11c8c5=document['getElementById']('health-loading'),_0x54b04b=document['getElementById']('health-error'),_0x3f7cdb=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0x11c8c5['hidden']=![],_0x54b04b['hidden']=!![],_0x3f7cdb['hidden']=!![]);try{const [_0x1a4b54]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0xf00b1e=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0xf00b1e),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x1a4b54),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0x11c8c5['hidden']=!![],_0x54b04b['hidden']=!![],_0x3f7cdb['hidden']=![],state['health']['loaded']=!![];}catch(_0x58d622){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x58d622),_0x11c8c5['hidden']=!![],_0x54b04b['hidden']=![],_0x3f7cdb['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x58d622['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x2b19cc=document['getElementById']('health-update-btn'),_0x17be20=document['getElementById']('health-restart-btn');if(!_0x2b19cc||!_0x17be20)return;const _0x57f725=state['health']['updateEnabled'],_0x32b5f3=_0x57f725&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x2b19cc['hidden']=!_0x32b5f3,_0x2b19cc['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x2b19cc['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x17be20['hidden']=!_0x57f725,_0x17be20['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x11d166,output:_0x15b35b}){const _0x28664c=document['getElementById']('health-update-output-wrap'),_0x23ec2a=document['getElementById']('health-update-status'),_0x297064=document['getElementById']('health-update-output');if(!_0x28664c||!_0x23ec2a||!_0x297064)return;const _0x1e1b6b=_0x11d166||'';_0x28664c['hidden']=![],_0x23ec2a['className']='admin-update-status',_0x1e1b6b&&_0x23ec2a['classList']['add'](_0x1e1b6b),_0x23ec2a['textContent']=_0x1e1b6b==='success'?'Success':_0x1e1b6b==='error'?'Failed':'In\x20Progress',_0x297064['textContent']=_0x15b35b||'No\x20output\x20returned.';}function buildCommandOutput(_0x9187c0,_0x1b9e47){const _0x492d0d=[];typeof _0x9187c0==='string'&&_0x9187c0['trim']()&&_0x492d0d['push'](_0x9187c0['trim']());if(typeof _0x1b9e47==='string'&&_0x1b9e47['trim']()){const _0x35aa77=_0x1b9e47['trim'](),_0x515f2f=_0x492d0d['some'](_0x54cf4b=>_0x54cf4b['includes'](_0x35aa77));!_0x515f2f&&_0x492d0d['push']('Error:\x0a'+_0x35aa77);}return _0x492d0d['join']('\x0a\x0a');}function showRestartOverlay({title:_0x42cebd,message:_0x2046ae,showRetry:showRetry=![]}){const _0x5a60f2=document['getElementById']('health-restart-overlay'),_0x56e253=document['getElementById']('restart-overlay-title'),_0x52549a=document['getElementById']('restart-overlay-message'),_0x29bef6=document['getElementById']('restart-overlay-retry');if(!_0x5a60f2||!_0x56e253||!_0x52549a||!_0x29bef6)return;_0x56e253['textContent']=_0x42cebd,_0x52549a['textContent']=_0x2046ae,_0x29bef6['hidden']=!showRetry,_0x5a60f2['hidden']=![];}function hideRestartOverlay(){const _0x55f445=document['getElementById']('health-restart-overlay');_0x55f445&&(_0x55f445['hidden']=!![]);}function sleep(_0x413426){return new Promise(_0x1de179=>{window['setTimeout'](_0x1de179,_0x413426);});}async function loadUpdateSettings(){const _0x3b1beb=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x3b1beb['enabled'],state['health']['hasRestartCommand']=!!_0x3b1beb['hasRestartCommand'],syncHealthActionButtons(),_0x3b1beb;}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 _0x5e0aa1=await API['applyServerUpdate'](state['health']['latestVersion']),_0x3846b3=buildCommandOutput(_0x5e0aa1['output'],_0x5e0aa1['error']);_0x5e0aa1['success']?(setUpdateOutput({'status':'success','output':_0x3846b3||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x3846b3||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x5e0aa1['error']||'Server\x20update\x20failed'));}catch(_0x20c59c){setUpdateOutput({'status':'error','output':buildCommandOutput(_0x20c59c['output'],_0x20c59c['commandError']||_0x20c59c['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0x20c59c['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0x3923c6=document['getElementById']('restart-modal');_0x3923c6&&(_0x3923c6['hidden']=![]);}function hideRestartModal(){const _0x309806=document['getElementById']('restart-modal');_0x309806&&(_0x309806['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x16c6b8){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x16c6b8['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 _0xe14511=Date['now']();let _0x2c3f51=![];for(let _0x4fa9ba=0x0;_0x4fa9ba<RESTART_POLL_MAX_ATTEMPTS;_0x4fa9ba+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x42795d=Date['now']()-_0xe14511;if(_0x2c3f51||_0x42795d>=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(_0x2d63a7){_0x2c3f51=!![];}}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 _0x4a3ac5=document['getElementById']('health-check-updates-btn');_0x4a3ac5&&(_0x4a3ac5['disabled']=!![],_0x4a3ac5['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x23c64c=await API['get']('/health');state['health']['currentVersion']=_0x23c64c['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 _0x36db3b=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x36db3b['latestVersion']||'Unavailable',state['health']['installCommand']=_0x36db3b['installCommand']||null,state['health']['updateAvailable']=!!_0x36db3b['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x36db3b['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x36db3b),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(_0x4f8a0c){console['error']('Failed\x20to\x20load\x20version\x20status',_0x4f8a0c),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x4f8a0c['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x4a3ac5&&(_0x4a3ac5['disabled']=![],_0x4a3ac5['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x4cf582){const _0x48b013=_0x4cf582?.['versionStatus'];if(_0x48b013==='update-available')return'Update\x20available:\x20'+_0x4cf582['currentVersion']+'\x20→\x20'+_0x4cf582['latestVersion'];if(_0x48b013==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x4cf582['latestVersion']+').';if(_0x48b013==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x4cf582['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x22ac96=await Utils['copyToClipboard'](state['health']['installCommand']);_0x22ac96?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x5f0d17){document['getElementById']('cpu-usage')['textContent']=_0x5f0d17['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x5f0d17['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x5f0d17['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x5f0d17['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x5f0d17['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x5f0d17['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x5f0d17['cpu']?.['percent'],statusFromPercent(_0x5f0d17['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x5f0d17['memory']?.['percent'],statusFromPercent(_0x5f0d17['memory']?.['percent'])),setMetricProgress('disk-progress',_0x5f0d17['disk']?.['percent'],statusFromPercent(_0x5f0d17['disk']?.['percent']));const _0x41be33=_0x5f0d17['docker']?.['total']>0x0?_0x5f0d17['docker']['running']/_0x5f0d17['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x41be33,'ok');const _0x23113c=_0x5f0d17['dockerStorage']||{},_0x226c6f=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x23113c['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x23113c['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x23113c['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x23113c['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x23113c['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x23113c['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x23113c['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x23113c['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x23113c['percent'],_0x23113c['status']||'ok'),_0x226c6f['classList']['remove']('status-warning','status-critical'),_0x23113c['status']==='warning'&&_0x226c6f['classList']['add']('status-warning'),_0x23113c['status']==='critical'&&_0x226c6f['classList']['add']('status-critical');}function clampPercent(_0x3cf61c){if(!Number['isFinite'](_0x3cf61c))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0x3cf61c)));}function statusFromPercent(_0x421408){if(!Number['isFinite'](_0x421408))return'ok';if(_0x421408>=0x5a)return'critical';if(_0x421408>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x236986,_0x1509f6,_0xb65a8c='ok'){const _0x2e1234=document['getElementById'](_0x236986);if(!_0x2e1234)return;const _0x428cf2=clampPercent(_0x1509f6);_0x2e1234['style']['width']=_0x428cf2+'%',_0x2e1234['classList']['remove']('status-ok','status-warning','status-critical'),_0x2e1234['classList']['add'](_0xb65a8c==='critical'?'status-critical':_0xb65a8c==='warning'?'status-warning':'status-ok'),_0x2e1234['parentElement']?.['setAttribute']('aria-valuenow',String(_0x428cf2));}async function runCleanupAction(_0x483fa2,_0x4a6d46){const _0x557dd9=document['getElementById']('server-health-action-status'),_0x53c0fa=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x53c0fa['forEach'](_0x1d023d=>{_0x1d023d['disabled']=!![];}),_0x557dd9['hidden']=![],_0x557dd9['classList']['remove']('success','error'),_0x557dd9['textContent']=_0x483fa2+'...';try{const _0x26f8e9=await _0x4a6d46();_0x557dd9['classList']['add']('success'),_0x557dd9['textContent']=_0x26f8e9?.['message']||_0x483fa2+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x3b46c7){console['error'](_0x483fa2+'\x20failed',_0x3b46c7),_0x557dd9['classList']['add']('error'),_0x557dd9['textContent']=_0x3b46c7['message']||_0x483fa2+'\x20failed';}finally{_0x53c0fa['forEach'](_0x322bfe=>{_0x322bfe['disabled']=![];});}}function toggleCleanupSection(){const _0x5270d6=document['getElementById']('cleanup-section'),_0x553b43=document['getElementById']('cleanup-content'),_0x46dcad=document['getElementById']('cleanup-toggle');if(!_0x5270d6||!_0x553b43||!_0x46dcad)return;const _0x3ffbcc=_0x5270d6['classList']['toggle']('expanded');_0x553b43['hidden']=!_0x3ffbcc,_0x46dcad['setAttribute']('aria-expanded',String(_0x3ffbcc));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x16b714=document['getElementById']('logs-loading'),_0x2c635f=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x16b714['hidden']=![],_0x2c635f['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0xae5f5=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0xae5f5['set']('level',state['logs']['level']);state['logs']['search']&&_0xae5f5['set']('search',state['logs']['search']);const _0x3a0a37=await API['get']('/logs?'+_0xae5f5['toString']());state['logs']['entries']=Array['isArray'](_0x3a0a37['entries'])?_0x3a0a37['entries']['slice'](-state['logs']['maxEntries']):[],state['logs']['total']=Number(_0x3a0a37['total'])||0x0,state['logs']['minLevel']=_0x3a0a37['minLevel']||'INFO',state['logs']['loaded']=!![],_0x16b714['hidden']=!![],_0x2c635f['hidden']=!![],renderLogs();}catch(_0x4a1ab7){console['error']('Failed\x20to\x20load\x20logs',_0x4a1ab7),_0x16b714['hidden']=!![],_0x2c635f['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x4a1ab7['message']||'Unknown\x20error',document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![];}finally{state['logs']['request']=null;}})()),state['logs']['request'];}function renderLogs(){const _0xd37f37=document['getElementById']('logs-container'),_0x3508e6=document['getElementById']('logs-empty'),_0x21a1d0=state['logs']['autoScroll']&&state['logs']['live'],_0x340a01=getVisibleLogEntries();updateLogsMeta(_0x340a01['length']);if(_0x340a01['length']===0x0){_0xd37f37['hidden']=!![],_0x3508e6['hidden']=![];return;}_0x3508e6['hidden']=!![],_0xd37f37['hidden']=![],_0xd37f37['innerHTML']=_0x340a01['map'](renderLogEntry)['join'](''),_0x21a1d0&&(_0xd37f37['scrollTop']=_0xd37f37['scrollHeight']);}function getVisibleLogEntries(){const _0x49a2d7=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x42b887=>{if(state['logs']['level']!=='ALL'&&_0x42b887['level']!==state['logs']['level'])return![];if(!_0x49a2d7)return!![];const _0x3b32f7=String(_0x42b887['message']||'')['toLowerCase'](),_0x4e68c0=_0x42b887['context']?JSON['stringify'](_0x42b887['context'])['toLowerCase']():'';return _0x3b32f7['includes'](_0x49a2d7)||_0x4e68c0['includes'](_0x49a2d7);});}function renderLogEntry(_0x2d4122){const _0x5a70b3=Utils['escapeHtml'](formatDateTime(_0x2d4122['timestamp'])),_0x35b3f7=Utils['escapeHtml'](String(_0x2d4122['level']||'INFO')),_0x237648=Utils['escapeHtml'](String(_0x2d4122['message']||'')),_0x2659cc=_0x2d4122['context']?'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22admin-log-context\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary>Context</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre>'+Utils['escapeHtml'](JSON['stringify'](_0x2d4122['context'],null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x5a70b3+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x35b3f7['toLowerCase']()+'\x22>'+_0x35b3f7+'</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-message\x22>'+_0x237648+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x2659cc+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x15280d){const _0x42c8a9=document['getElementById']('logs-meta');if(!_0x42c8a9)return;const _0x225014=state['logs']['entries']['length'],_0x207b7e=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim']();_0x42c8a9['textContent']=_0x207b7e?'Showing\x20'+_0x15280d+'\x20of\x20'+_0x225014+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x15280d+'\x20recent\x20buffered\x20entries.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?startLogStream():stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x225b1a=document['getElementById']('logs-live-toggle'),_0x9fd608=document['getElementById']('logs-stream-status');if(!_0x225b1a||!_0x9fd608)return;_0x9fd608['classList']['remove']('live','error');if(!state['logs']['live']){_0x9fd608['textContent']='Paused',_0x225b1a['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x9fd608['textContent']='Live',_0x9fd608['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x9fd608['textContent']='Reconnecting',_0x9fd608['classList']['add']('error')):_0x9fd608['textContent']='Connecting';_0x225b1a['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x36c231=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x36c231,_0x36c231['addEventListener']('log',_0x38de4b=>{try{const _0x1df7dd=JSON['parse'](_0x38de4b['data']);state['logs']['entries']['push'](_0x1df7dd),state['logs']['entries']['length']>state['logs']['maxEntries']&&state['logs']['entries']['shift'](),renderLogs();}catch(_0x551c41){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x551c41);}}),_0x36c231['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x36c231['onerror']=()=>{state['logs']['streamState']='error',updateLogsLiveUi();};}function stopLogStream(){state['logs']['stream']&&(state['logs']['stream']['close'](),state['logs']['stream']=null),state['logs']['streamState']='paused',updateLogsLiveUi();}function clearDisplayedLogs(){state['logs']['entries']=[],renderLogs();}function handleLogsSearchInput(_0x4b61a7){const _0x8ee30e=_0x4b61a7['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x8ee30e,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x9ae089=document['getElementById']('logs-container');if(!_0x9ae089)return;const _0xf0148f=_0x9ae089['scrollHeight']-_0x9ae089['scrollTop']-_0x9ae089['clientHeight'];state['logs']['autoScroll']=_0xf0148f<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x41aa44=document['getElementById']('usage-loading'),_0x4737c2=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x41aa44['hidden']=![],_0x4737c2['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x18c31c=new URLSearchParams();_0x18c31c['set']('days',state['usage']['days']);state['usage']['environment']&&_0x18c31c['set']('environment',state['usage']['environment']);const _0x1acd5e=await API['get']('/stats?'+_0x18c31c['toString']());state['usage']['loaded']=!![],_0x41aa44['hidden']=!![],_0x4737c2['hidden']=!![],renderUsage(_0x1acd5e);}catch(_0x20bcc1){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x20bcc1),_0x41aa44['hidden']=!![],_0x4737c2['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x20bcc1['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x569da6){const _0x5cbef1=Number(_0x569da6?.['tasks']?.['total'])||0x0,_0x56e548=document['getElementById']('usage-empty'),_0x51a565=document['getElementById']('usage-content');if(_0x5cbef1===0x0){_0x56e548['hidden']=![],_0x51a565['hidden']=!![];return;}_0x56e548['hidden']=!![],_0x51a565['hidden']=![];const _0x508aa6=Number(_0x569da6?.['approvalRate']?.['successRate'])||0x0,_0x109631=Math['round'](_0x508aa6*0x64),_0x14159c=_0x569da6?.['code']?.['approved']||{},_0x5c3abc=Number(_0x14159c?.['tasks'])||0x0,_0xf92881=(Number(_0x14159c?.['linesAdded'])||0x0)-(Number(_0x14159c?.['linesDeleted'])||0x0),_0x3a57d9=(Number(_0x569da6?.['code']?.['linesAdded'])||0x0)-(Number(_0x569da6?.['code']?.['linesDeleted'])||0x0),_0x555a3b=Number(_0x569da6?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0x5cbef1)),setSummaryValue('usage-success-rate',_0x109631+'%',statusClassFromPercent(_0x109631)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x3a57d9)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x555a3b));const _0x43f57a=_0x5cbef1>0x0?Math['round'](_0x5c3abc/_0x5cbef1*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x5c3abc)+'\x20approved\x20('+_0x43f57a+'%)\x20·\x20'+formatNumber(_0x569da6['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x569da6['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x569da6['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x569da6['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x569da6['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x569da6['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0xf92881)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x569da6['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x569da6['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x569da6['period']),renderBarList('usage-status-bars',_0x569da6['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x569da6['tasks']['byType']||{},_0x5cbef1,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x569da6['tasks']['byEnvironment']||{},_0x5cbef1),renderUserTable('usage-user-body',_0x569da6['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x569da6['tasks']['bySource']||{},_0x5cbef1,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x569da6['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x569da6['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x569da6['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x569da6['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x14159c['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x14159c['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x14159c['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x14159c['repositoriesAffected']||0x0);const _0x518795=(_0x27575e,_0x9e1bc4)=>_0x27575e>0x0?Math['round'](_0x9e1bc4/_0x27575e*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x518795(_0x569da6['code']['linesAdded']||0x0,_0x14159c['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x518795(_0x569da6['code']['linesDeleted']||0x0,_0x14159c['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x518795(_0x569da6['code']['filesChanged']||0x0,_0x14159c['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x518795(_0x569da6['code']['repositoriesAffected']||0x0,_0x14159c['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x113c95){const _0x1f1120=_0x113c95?.['from']?formatDateTime(_0x113c95['from']):'the\x20earliest\x20loaded\x20task',_0x4ade54=_0x113c95?.['to']?formatDateTime(_0x113c95['to']):'now',_0x324293=_0x113c95?.['days']?_0x113c95['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x324293+'\x20·\x20'+_0x1f1120+'\x20to\x20'+_0x4ade54;}function renderBarList(_0x386433,_0x6b1766){const _0x3a5dc0=document['getElementById'](_0x386433);if(!_0x3a5dc0)return;const _0x4d11e5=Object['entries'](_0x6b1766)['filter'](([,_0x12d4f5])=>Number(_0x12d4f5)>0x0)['sort']((_0xfad29,_0x42f1b6)=>_0x42f1b6[0x1]-_0xfad29[0x1]),_0x39213e=_0x4d11e5['reduce']((_0x14d8e1,[,_0x2fe1bd])=>_0x14d8e1+Number(_0x2fe1bd||0x0),0x0);if(_0x4d11e5['length']===0x0){_0x3a5dc0['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x3a5dc0['innerHTML']=_0x4d11e5['map'](([_0x38f597,_0x24c157])=>{const _0x21f34c=_0x39213e>0x0?Math['max'](0x2,Math['round'](_0x24c157/_0x39213e*0x64)):0x0,_0xd812d4=Utils['escapeHtml'](prettifyKey(_0x38f597)),_0x4b9084=Utils['escapeHtml'](formatNumber(_0x24c157));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>'+_0xd812d4+'</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(_0x38f597)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x21f34c+'%\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>'+_0x4b9084+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x32f376,_0x218137,_0x275952,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0xaa4d57=document['getElementById'](_0x32f376);if(!_0xaa4d57)return;const _0x47507a=Object['entries'](_0x218137)['filter'](([,_0xef4ab2])=>Number(_0xef4ab2)>0x0)['sort']((_0x6c87b6,_0x182afe)=>_0x182afe[0x1]-_0x6c87b6[0x1]||String(_0x6c87b6[0x0])['localeCompare'](String(_0x182afe[0x0])));if(_0x47507a['length']===0x0){_0xaa4d57['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0xaa4d57['innerHTML']=_0x47507a['map'](([_0xba98d9,_0x536297])=>{const _0x20f824=labelFormatter?labelFormatter(_0xba98d9):_0xba98d9,_0x1c2d6b=includePercent?'<td>'+formatPercent(_0x275952>0x0?_0x536297/_0x275952*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(_0x20f824))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x536297))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c2d6b+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x1bd9dc,_0x514fc6){const _0x57c8e6=document['getElementById'](_0x1bd9dc);if(!_0x57c8e6)return;if(!Array['isArray'](_0x514fc6)||_0x514fc6['length']===0x0){_0x57c8e6['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x57c8e6['innerHTML']=_0x514fc6['map'](_0x5ab12d=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x5ab12d['name']||_0x5ab12d['username']||_0x5ab12d['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x5ab12d['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x480a09,_0x4f2304){document['querySelectorAll'](_0x480a09+'\x20.admin-filter-btn')['forEach'](_0x5abb00=>{_0x5abb00['classList']['toggle']('active',_0x5abb00['dataset']['level']===_0x4f2304||_0x5abb00['dataset']['days']===_0x4f2304);});}function setSummaryValue(_0x4d011b,_0x17aec9,_0x53ad5b=''){const _0x271913=document['getElementById'](_0x4d011b);if(!_0x271913)return;_0x271913['textContent']=_0x17aec9,_0x271913['classList']['remove']('status-good','status-warn','status-bad'),_0x53ad5b&&_0x271913['classList']['add'](_0x53ad5b);}function statusClassFromPercent(_0x16306a){if(_0x16306a>=0x50)return'status-good';if(_0x16306a>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x52b551){const _0xc8422f=new Date(_0x52b551);if(Number['isNaN'](_0xc8422f['getTime']()))return _0x52b551||'Unknown';return _0xc8422f['toLocaleString']();}function formatDurationMinutes(_0x1c060c){const _0x2161b6=Math['round'](Number(_0x1c060c)||0x0);if(_0x2161b6<0x3c)return _0x2161b6+'m';const _0x535fd2=Math['floor'](_0x2161b6/0x3c),_0x44d05f=_0x2161b6%0x3c;return _0x44d05f>0x0?_0x535fd2+'h\x20'+_0x44d05f+'m':_0x535fd2+'h';}function formatPercent(_0x15d445){return Math['round'](Number(_0x15d445)||0x0)+'%';}function formatNumber(_0x2327af){return NUMBER_FORMATTER['format'](Number(_0x2327af)||0x0);}function formatSignedNumber(_0x34cf59){const _0x405212=Number(_0x34cf59)||0x0;if(_0x405212>0x0)return'+'+formatNumber(_0x405212);return formatNumber(_0x405212);}function prettifyKey(_0x48c2b1){return String(_0x48c2b1)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x1a0552=>_0x1a0552['toUpperCase']());}