@profoundlogic/coderflow-server 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/coder-git-credential-helper +16 -0
- package/dist/base-image/sync-repos.sh +30 -1
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-container-init.js +1 -1
- package/dist/lib/task-context-usage.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.css +95 -1
- package/dist/web-ui/public/admin.html +29 -1
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.css +45 -0
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +45 -0
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +25 -2
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
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']());}
|
|
1
|
+
import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const HEALTH_REFRESH_INTERVAL_MS=0x7530,LOG_SEARCH_DEBOUNCE_MS=0xfa,LOG_ORDER_ASC='asc',LOG_ORDER_DESC='desc',RESTART_POLL_INTERVAL_MS=0x7d0,RESTART_POLL_MAX_ATTEMPTS=0x1e,RESTART_MIN_SUCCESS_DELAY_MS=0x1b58,NUMBER_FORMATTER=new Intl['NumberFormat'](),state={'currentSection':'health','environments':[],'health':{'loaded':![],'request':null,'autoRefreshTimer':null,'versionChecked':![],'currentVersion':null,'latestVersion':null,'installCommand':null,'updateEnabled':![],'hasRestartCommand':![],'updateInProgress':![],'restartInProgress':![],'updateAvailable':![]},'logs':{'loaded':![],'request':null,'entries':[],'total':0x0,'minLevel':'INFO','level':'ALL','order':LOG_ORDER_ASC,'search':'','maxEntries':0x3e8,'stream':null,'streamState':'paused','live':![],'autoScroll':!![],'searchTimer':null},'usage':{'loaded':![],'request':null,'days':'30','environment':''}};document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle();const _0x56878b=await checkAdminAccess();await initializeAdminMenu(_0x56878b),setupEventListeners(),await loadEnvironmentOptions(),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-content')['hidden']=![];const _0x5da240=getSessionValue('admin-health-auto-refresh');if(_0x5da240!==null){const _0x285ae3=document['getElementById']('health-auto-refresh');if(_0x285ae3)_0x285ae3['checked']=_0x5da240!=='false';}const _0x593890=getSessionValue('admin-logs-order');(_0x593890===LOG_ORDER_ASC||_0x593890===LOG_ORDER_DESC)&&(state['logs']['order']=_0x593890);syncLogOrderUi();const _0x3b031b=getSessionValue('admin-active-section'),_0x4f3843=['health','logs','usage']['includes'](_0x3b031b)?_0x3b031b:'health';await switchSection(_0x4f3843);}catch(_0x350909){console['error']('Failed\x20to\x20initialize\x20Server\x20Administration\x20page',_0x350909),document['getElementById']('admin-loading')['hidden']=!![],document['getElementById']('admin-error')['hidden']=![],document['getElementById']('admin-error-message')['textContent']=_0x350909['message']||'Unknown\x20error';}}async function checkAdminAccess(){try{const _0x50a4de=await API['getCurrentUser']();if(!window['Permissions']?.['hasServerPermission'](_0x50a4de,'*')){Utils['showToast']('Access\x20denied:\x20Admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);throw new Error('Access\x20denied');}return _0x50a4de;}catch(_0xaeac3d){_0xaeac3d['message']!=='Access\x20denied'&&(window['location']['href']='login.html');throw _0xaeac3d;}}function setupEventListeners(){document['querySelectorAll']('.settings-nav-item')['forEach'](_0x5c3d3f=>{_0x5c3d3f['addEventListener']('click',()=>switchSection(_0x5c3d3f['dataset']['section']));}),document['getElementById']('retry-admin-btn')?.['addEventListener']('click',()=>{window['location']['reload']();}),document['getElementById']('health-refresh-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('retry-health-btn')?.['addEventListener']('click',()=>loadHealth({'showLoading':!![]})),document['getElementById']('health-auto-refresh')?.['addEventListener']('change',syncHealthAutoRefresh),document['getElementById']('health-check-updates-btn')?.['addEventListener']('click',()=>loadVersionStatus({'checkUpdates':!![]})),document['getElementById']('health-copy-install-btn')?.['addEventListener']('click',copyInstallCommand),document['getElementById']('health-update-btn')?.['addEventListener']('click',applyUpdate),document['getElementById']('health-restart-btn')?.['addEventListener']('click',showRestartConfirmation),document['getElementById']('confirm-restart-btn')?.['addEventListener']('click',confirmRestart),document['getElementById']('cancel-restart-btn')?.['addEventListener']('click',hideRestartModal),document['getElementById']('close-restart-modal')?.['addEventListener']('click',hideRestartModal),document['querySelector']('#restart-modal\x20.modal-overlay')?.['addEventListener']('click',hideRestartModal),document['getElementById']('restart-overlay-retry')?.['addEventListener']('click',()=>waitForServerRestart({'manualRetry':!![]})),document['getElementById']('server-stop-containers')?.['addEventListener']('click',()=>runCleanupAction('Stopping\x20containers',()=>API['stopAllContainers']())),document['getElementById']('server-remove-stopped')?.['addEventListener']('click',()=>runCleanupAction('Removing\x20stopped\x20containers',()=>API['removeStoppedContainers']())),document['getElementById']('server-prune-docker')?.['addEventListener']('click',()=>runCleanupAction('Pruning\x20Docker\x20resources',()=>API['pruneDockerResources']())),document['getElementById']('cleanup-toggle')?.['addEventListener']('click',toggleCleanupSection),document['getElementById']('logs-refresh-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('retry-logs-btn')?.['addEventListener']('click',()=>loadLogs({'showLoading':!![]})),document['getElementById']('logs-live-toggle')?.['addEventListener']('click',toggleLogsLiveMode),document['getElementById']('logs-clear-btn')?.['addEventListener']('click',clearDisplayedLogs),document['getElementById']('logs-search-input')?.['addEventListener']('input',handleLogsSearchInput),document['querySelectorAll']('#logs-level-filters\x20.admin-filter-btn')['forEach'](_0x3b3a1a=>{_0x3b3a1a['addEventListener']('click',()=>{state['logs']['level']=_0x3b3a1a['dataset']['level']||'ALL',updateActiveFilterButtons('#logs-level-filters',state['logs']['level']),loadLogs({'showLoading':![]});});}),document['querySelectorAll']('#logs-order-toggle\x20.admin-filter-btn')['forEach'](_0x14dfa8=>{_0x14dfa8['addEventListener']('click',()=>{setLogOrder(_0x14dfa8['dataset']['order'],{'focusLiveEdge':!![]});});}),document['getElementById']('logs-container')?.['addEventListener']('scroll',updateLogAutoScrollState),document['getElementById']('usage-refresh-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('retry-usage-btn')?.['addEventListener']('click',()=>loadUsage({'showLoading':!![]})),document['getElementById']('usage-environment-filter')?.['addEventListener']('change',_0xde3bd4=>{state['usage']['environment']=_0xde3bd4['target']['value']||'',loadUsage({'showLoading':![]});}),document['querySelectorAll']('#usage-period-buttons\x20.admin-filter-btn')['forEach'](_0xc172ca=>{_0xc172ca['addEventListener']('click',()=>{state['usage']['days']=_0xc172ca['dataset']['days']||'30',updateActiveFilterButtons('#usage-period-buttons',state['usage']['days']),loadUsage({'showLoading':![]});});});}async function switchSection(_0x18c22d){if(!_0x18c22d)return;document['querySelectorAll']('.settings-nav-item')['forEach'](_0x1f59c8=>{const _0x3ce5cf=_0x1f59c8['dataset']['section']===_0x18c22d;_0x1f59c8['classList']['toggle']('active',_0x3ce5cf),_0x1f59c8['setAttribute']('aria-selected',String(_0x3ce5cf));}),document['querySelectorAll']('.settings-panel')['forEach'](_0x51dd6f=>{const _0x405a24=_0x51dd6f['id']==='section-'+_0x18c22d;_0x51dd6f['hidden']=!_0x405a24,_0x51dd6f['classList']['toggle']('active',_0x405a24);}),state['currentSection']=_0x18c22d,setSessionValue('admin-active-section',_0x18c22d),_0x18c22d!=='health'&&stopHealthAutoRefresh(),_0x18c22d!=='logs'&&stopLogStream(),_0x18c22d==='health'&&(syncHealthAutoRefresh(),await loadHealth({'showLoading':!state['health']['loaded']})),_0x18c22d==='logs'&&(await loadLogs({'showLoading':!state['logs']['loaded']}),state['logs']['live']?startLogStream():updateLogsLiveUi()),_0x18c22d==='usage'&&await loadUsage({'showLoading':!state['usage']['loaded']});}function getSessionValue(_0x52417e){try{return sessionStorage['getItem'](_0x52417e);}catch{return null;}}function setSessionValue(_0x3c1d25,_0xd4540b){try{sessionStorage['setItem'](_0x3c1d25,_0xd4540b);}catch{}}async function loadEnvironmentOptions(){const _0x13966a=await API['get']('/environments');state['environments']=(_0x13966a['environments']||[])['map'](_0xcb85a=>_0xcb85a?.['name'])['filter'](Boolean)['sort']((_0x53b3d8,_0x5baca5)=>_0x53b3d8['localeCompare'](_0x5baca5));const _0x5277ec=document['getElementById']('usage-environment-filter');if(!_0x5277ec)return;_0x5277ec['innerHTML']='<option\x20value=\x22\x22>All\x20environments</option>'+state['environments']['map'](_0x5e5136=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x5e5136)+'\x22>'+Utils['escapeHtml'](_0x5e5136)+'</option>')['join'](''),_0x5277ec['value']=state['usage']['environment'];}function syncHealthAutoRefresh(){const _0x4a8858=document['getElementById']('health-auto-refresh');if(_0x4a8858)setSessionValue('admin-health-auto-refresh',String(_0x4a8858['checked']));const _0x4a790c=state['currentSection']==='health'&&!!_0x4a8858?.['checked'];stopHealthAutoRefresh();if(!_0x4a790c)return;state['health']['autoRefreshTimer']=window['setInterval'](()=>{loadHealth({'showLoading':![]});},HEALTH_REFRESH_INTERVAL_MS);}function stopHealthAutoRefresh(){state['health']['autoRefreshTimer']&&(clearInterval(state['health']['autoRefreshTimer']),state['health']['autoRefreshTimer']=null);}async function loadHealth({showLoading:showLoading=![]}={}){if(state['health']['request'])return state['health']['request'];return state['health']['request']=((async()=>{const _0xfa80a6=document['getElementById']('health-loading'),_0x214086=document['getElementById']('health-error'),_0x27f3d7=document['getElementById']('health-content');(showLoading||!state['health']['loaded'])&&(_0xfa80a6['hidden']=![],_0x214086['hidden']=!![],_0x27f3d7['hidden']=!![]);try{const [_0x4d99e7]=await Promise['all']([API['get']('/health/metrics'),loadUpdateSettings()['catch'](_0x2faa75=>{console['error']('Failed\x20to\x20load\x20update\x20settings',_0x2faa75),state['health']['updateEnabled']=![],state['health']['hasRestartCommand']=![],syncHealthActionButtons();})]);renderHealthMetrics(_0x4d99e7),!state['health']['currentVersion']&&await loadVersionStatus({'checkUpdates':![]}),_0xfa80a6['hidden']=!![],_0x214086['hidden']=!![],_0x27f3d7['hidden']=![],state['health']['loaded']=!![];}catch(_0x7c6218){console['error']('Failed\x20to\x20load\x20server\x20metrics',_0x7c6218),_0xfa80a6['hidden']=!![],_0x214086['hidden']=![],_0x27f3d7['hidden']=!![],document['getElementById']('health-error-message')['textContent']=_0x7c6218['message']||'Unknown\x20error';}finally{state['health']['request']=null;}})()),state['health']['request'];}function syncHealthActionButtons(){const _0x193d2e=document['getElementById']('health-update-btn'),_0x33df15=document['getElementById']('health-restart-btn');if(!_0x193d2e||!_0x33df15)return;const _0x310fe9=state['health']['updateEnabled'],_0xbe7a35=_0x310fe9&&state['health']['versionChecked']&&state['health']['updateAvailable'];_0x193d2e['hidden']=!_0xbe7a35,_0x193d2e['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress']||!state['health']['latestVersion'],_0x193d2e['textContent']=state['health']['updateInProgress']?'Updating...':'Update\x20Server',_0x33df15['hidden']=!_0x310fe9,_0x33df15['disabled']=state['health']['updateInProgress']||state['health']['restartInProgress'];}function setUpdateOutput({status:_0x367ba4,output:_0x14dc30}){const _0x3c4db4=document['getElementById']('health-update-output-wrap'),_0x47c8c1=document['getElementById']('health-update-status'),_0x5ec2d4=document['getElementById']('health-update-output');if(!_0x3c4db4||!_0x47c8c1||!_0x5ec2d4)return;const _0x4b2300=_0x367ba4||'';_0x3c4db4['hidden']=![],_0x47c8c1['className']='admin-update-status',_0x4b2300&&_0x47c8c1['classList']['add'](_0x4b2300),_0x47c8c1['textContent']=_0x4b2300==='success'?'Success':_0x4b2300==='error'?'Failed':'In\x20Progress',_0x5ec2d4['textContent']=_0x14dc30||'No\x20output\x20returned.';}function buildCommandOutput(_0x81c651,_0x8196ec){const _0x22a4c5=[];typeof _0x81c651==='string'&&_0x81c651['trim']()&&_0x22a4c5['push'](_0x81c651['trim']());if(typeof _0x8196ec==='string'&&_0x8196ec['trim']()){const _0xbaf680=_0x8196ec['trim'](),_0x5c3270=_0x22a4c5['some'](_0x393b28=>_0x393b28['includes'](_0xbaf680));!_0x5c3270&&_0x22a4c5['push']('Error:\x0a'+_0xbaf680);}return _0x22a4c5['join']('\x0a\x0a');}function showRestartOverlay({title:_0x3263e2,message:_0x4094e6,showRetry:showRetry=![]}){const _0x404eb1=document['getElementById']('health-restart-overlay'),_0x193b0f=document['getElementById']('restart-overlay-title'),_0x3670f1=document['getElementById']('restart-overlay-message'),_0x9af4f6=document['getElementById']('restart-overlay-retry');if(!_0x404eb1||!_0x193b0f||!_0x3670f1||!_0x9af4f6)return;_0x193b0f['textContent']=_0x3263e2,_0x3670f1['textContent']=_0x4094e6,_0x9af4f6['hidden']=!showRetry,_0x404eb1['hidden']=![];}function hideRestartOverlay(){const _0x468998=document['getElementById']('health-restart-overlay');_0x468998&&(_0x468998['hidden']=!![]);}function sleep(_0x1b77b8){return new Promise(_0x1d853f=>{window['setTimeout'](_0x1d853f,_0x1b77b8);});}async function loadUpdateSettings(){const _0x4f6536=await API['getUpdateSettings']();return state['health']['updateEnabled']=!!_0x4f6536['enabled'],state['health']['hasRestartCommand']=!!_0x4f6536['hasRestartCommand'],syncHealthActionButtons(),_0x4f6536;}async function applyUpdate(){if(state['health']['updateInProgress']||!state['health']['latestVersion'])return;state['health']['updateInProgress']=!![],syncHealthActionButtons(),setUpdateOutput({'status':'in-progress','output':'Applying\x20server\x20update\x20to\x20'+state['health']['latestVersion']+'...'});try{const _0x2c9303=await API['applyServerUpdate'](state['health']['latestVersion']),_0x4c527b=buildCommandOutput(_0x2c9303['output'],_0x2c9303['error']);_0x2c9303['success']?(setUpdateOutput({'status':'success','output':_0x4c527b||'Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed.'}),Utils['showSuccess']('Server\x20update\x20to\x20'+state['health']['latestVersion']+'\x20completed')):(setUpdateOutput({'status':'error','output':_0x4c527b||'Server\x20update\x20failed\x20without\x20additional\x20output.'}),Utils['showError'](_0x2c9303['error']||'Server\x20update\x20failed'));}catch(_0xf108b5){setUpdateOutput({'status':'error','output':buildCommandOutput(_0xf108b5['output'],_0xf108b5['commandError']||_0xf108b5['message'])||'Failed\x20to\x20apply\x20server\x20update.'}),Utils['showError'](_0xf108b5['message']||'Failed\x20to\x20apply\x20server\x20update');}finally{state['health']['updateInProgress']=![],syncHealthActionButtons();}}function showRestartConfirmation(){if(!state['health']['updateEnabled']||state['health']['restartInProgress'])return;const _0x29187d=document['getElementById']('restart-modal');_0x29187d&&(_0x29187d['hidden']=![]);}function hideRestartModal(){const _0x12a964=document['getElementById']('restart-modal');_0x12a964&&(_0x12a964['hidden']=!![]);}async function confirmRestart(){if(state['health']['restartInProgress'])return;hideRestartModal(),state['health']['restartInProgress']=!![],syncHealthActionButtons();try{await API['restartServer'](),await waitForServerRestart();}catch(_0x4e8481){state['health']['restartInProgress']=![],syncHealthActionButtons(),hideRestartOverlay(),Utils['showError'](_0x4e8481['message']||'Failed\x20to\x20restart\x20server');}}async function waitForServerRestart({manualRetry:manualRetry=![]}={}){state['health']['restartInProgress']=!![],syncHealthActionButtons(),stopHealthAutoRefresh(),showRestartOverlay({'title':manualRetry?'Retrying\x20server\x20connection...':'Waiting\x20for\x20server\x20to\x20restart...','message':'The\x20page\x20will\x20automatically\x20refresh\x20when\x20the\x20server\x20is\x20back\x20online.','showRetry':![]});const _0x4d5ced=Date['now']();let _0x3af3e9=![];for(let _0x1f0e6a=0x0;_0x1f0e6a<RESTART_POLL_MAX_ATTEMPTS;_0x1f0e6a+=0x1){await sleep(RESTART_POLL_INTERVAL_MS);try{await API['get']('/health?ts='+Date['now']());const _0x2b137d=Date['now']()-_0x4d5ced;if(_0x3af3e9||_0x2b137d>=RESTART_MIN_SUCCESS_DELAY_MS){state['health']['restartInProgress']=![],state['health']['currentVersion']=null,hideRestartOverlay(),syncHealthActionButtons(),Utils['showSuccess']('Server\x20restart\x20complete'),await loadHealth({'showLoading':!![]}),syncHealthAutoRefresh();return;}}catch(_0x211e7c){_0x3af3e9=!![];}}state['health']['restartInProgress']=![],syncHealthActionButtons(),showRestartOverlay({'title':'Unable\x20to\x20reconnect\x20to\x20the\x20server','message':'The\x20server\x20may\x20still\x20be\x20restarting.\x20Retry\x20the\x20connection\x20when\x20you\x20are\x20ready.','showRetry':!![]}),Utils['showError']('Server\x20restart\x20is\x20taking\x20longer\x20than\x20expected');}async function loadVersionStatus({checkUpdates:checkUpdates=![]}={}){const _0x25c26e=document['getElementById']('health-check-updates-btn');_0x25c26e&&(_0x25c26e['disabled']=!![],_0x25c26e['textContent']=checkUpdates?'Checking...':'Loading...');try{const _0x5ecd4a=await API['get']('/health');state['health']['currentVersion']=_0x5ecd4a['version']||'Unavailable',document['getElementById']('health-version-current')['textContent']=state['health']['currentVersion'];if(!checkUpdates&&!state['health']['versionChecked']){state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Update\x20status\x20has\x20not\x20been\x20checked\x20yet.',document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion']||'Not\x20checked',syncHealthActionButtons();return;}if(checkUpdates){const _0x381489=await API['get']('/health/check-updates');state['health']['versionChecked']=!![],state['health']['latestVersion']=_0x381489['latestVersion']||'Unavailable',state['health']['installCommand']=_0x381489['installCommand']||null,state['health']['updateAvailable']=!!_0x381489['updateAvailable'],document['getElementById']('health-version-current')['textContent']=_0x381489['currentVersion']||state['health']['currentVersion'],document['getElementById']('health-version-latest')['textContent']=state['health']['latestVersion'],document['getElementById']('health-version-status')['textContent']=buildVersionStatusText(_0x381489),document['getElementById']('health-install-command')['textContent']=state['health']['installCommand']||'',document['getElementById']('health-install-command-wrap')['hidden']=!state['health']['installCommand'],document['getElementById']('health-copy-install-btn')['hidden']=!state['health']['installCommand'];}syncHealthActionButtons();}catch(_0x11ef49){console['error']('Failed\x20to\x20load\x20version\x20status',_0x11ef49),state['health']['updateAvailable']=![],document['getElementById']('health-version-status')['textContent']='Unable\x20to\x20load\x20version\x20status:\x20'+_0x11ef49['message'],document['getElementById']('health-install-command-wrap')['hidden']=!![],document['getElementById']('health-copy-install-btn')['hidden']=!![],syncHealthActionButtons();}finally{_0x25c26e&&(_0x25c26e['disabled']=![],_0x25c26e['textContent']='Check\x20for\x20Updates');}}function buildVersionStatusText(_0x2aa9f6){const _0x3919ad=_0x2aa9f6?.['versionStatus'];if(_0x3919ad==='update-available')return'Update\x20available:\x20'+_0x2aa9f6['currentVersion']+'\x20→\x20'+_0x2aa9f6['latestVersion'];if(_0x3919ad==='up-to-date')return'Running\x20the\x20latest\x20published\x20version\x20('+_0x2aa9f6['latestVersion']+').';if(_0x3919ad==='ahead-of-latest')return'This\x20server\x20is\x20ahead\x20of\x20npm\x20latest\x20('+_0x2aa9f6['latestVersion']+').';return'Unable\x20to\x20compare\x20current\x20and\x20latest\x20versions.';}async function copyInstallCommand(){if(!state['health']['installCommand'])return;const _0x259bb1=await Utils['copyToClipboard'](state['health']['installCommand']);_0x259bb1?Utils['showSuccess']('Install\x20command\x20copied'):Utils['showError']('Failed\x20to\x20copy\x20install\x20command');}function renderHealthMetrics(_0x51d39e){document['getElementById']('cpu-usage')['textContent']=_0x51d39e['cpu']?.['display']||'-',document['getElementById']('memory-usage')['textContent']=_0x51d39e['memory']?.['display']||'-',document['getElementById']('disk-usage')['textContent']=_0x51d39e['disk']?.['display']||'-',document['getElementById']('docker-containers')['textContent']=_0x51d39e['docker']?.['display']||'-',document['getElementById']('server-uptime')['textContent']=_0x51d39e['uptime']?.['display']||'-',document['getElementById']('active-sessions')['textContent']=_0x51d39e['sessions']?.['display']||'-',setMetricProgress('cpu-progress',_0x51d39e['cpu']?.['percent'],statusFromPercent(_0x51d39e['cpu']?.['percent'])),setMetricProgress('memory-progress',_0x51d39e['memory']?.['percent'],statusFromPercent(_0x51d39e['memory']?.['percent'])),setMetricProgress('disk-progress',_0x51d39e['disk']?.['percent'],statusFromPercent(_0x51d39e['disk']?.['percent']));const _0x1a744e=_0x51d39e['docker']?.['total']>0x0?_0x51d39e['docker']['running']/_0x51d39e['docker']['total']*0x64:0x0;setMetricProgress('docker-progress',_0x1a744e,'ok');const _0x3f42b1=_0x51d39e['dockerStorage']||{},_0x4faa1a=document['getElementById']('docker-storage-card');document['getElementById']('docker-storage-total')['textContent']=_0x3f42b1['display']||'-',document['getElementById']('docker-storage-available')['textContent']=_0x3f42b1['availableDisplay']||'',document['getElementById']('docker-storage-available')['hidden']=!_0x3f42b1['availableDisplay'],document['getElementById']('docker-storage-reclaimable')['textContent']=_0x3f42b1['reclaimableDisplay']||'',document['getElementById']('docker-storage-images')['textContent']=_0x3f42b1['images']?.['display']||'-',document['getElementById']('docker-storage-containers')['textContent']=_0x3f42b1['containers']?.['display']||'-',document['getElementById']('docker-storage-volumes')['textContent']=_0x3f42b1['volumes']?.['display']||'-',document['getElementById']('docker-storage-buildcache')['textContent']=_0x3f42b1['buildCache']?.['display']||'-',setMetricProgress('docker-storage-progress',_0x3f42b1['percent'],_0x3f42b1['status']||'ok'),_0x4faa1a['classList']['remove']('status-warning','status-critical'),_0x3f42b1['status']==='warning'&&_0x4faa1a['classList']['add']('status-warning'),_0x3f42b1['status']==='critical'&&_0x4faa1a['classList']['add']('status-critical');}function clampPercent(_0xee4210){if(!Number['isFinite'](_0xee4210))return 0x0;return Math['max'](0x0,Math['min'](0x64,Math['round'](_0xee4210)));}function statusFromPercent(_0x47881){if(!Number['isFinite'](_0x47881))return'ok';if(_0x47881>=0x5a)return'critical';if(_0x47881>=0x4b)return'warning';return'ok';}function setMetricProgress(_0x15432b,_0x2cdc4b,_0xeda036='ok'){const _0x333e04=document['getElementById'](_0x15432b);if(!_0x333e04)return;const _0x444cb7=clampPercent(_0x2cdc4b);_0x333e04['style']['width']=_0x444cb7+'%',_0x333e04['classList']['remove']('status-ok','status-warning','status-critical'),_0x333e04['classList']['add'](_0xeda036==='critical'?'status-critical':_0xeda036==='warning'?'status-warning':'status-ok'),_0x333e04['parentElement']?.['setAttribute']('aria-valuenow',String(_0x444cb7));}async function runCleanupAction(_0x41144f,_0x31a3cf){const _0x31ead0=document['getElementById']('server-health-action-status'),_0x2d6f78=[document['getElementById']('health-refresh-btn'),document['getElementById']('server-stop-containers'),document['getElementById']('server-remove-stopped'),document['getElementById']('server-prune-docker')]['filter'](Boolean);_0x2d6f78['forEach'](_0x3a5766=>{_0x3a5766['disabled']=!![];}),_0x31ead0['hidden']=![],_0x31ead0['classList']['remove']('success','error'),_0x31ead0['textContent']=_0x41144f+'...';try{const _0x3014a1=await _0x31a3cf();_0x31ead0['classList']['add']('success'),_0x31ead0['textContent']=_0x3014a1?.['message']||_0x41144f+'\x20complete',await loadHealth({'showLoading':!![]});}catch(_0x5791a1){console['error'](_0x41144f+'\x20failed',_0x5791a1),_0x31ead0['classList']['add']('error'),_0x31ead0['textContent']=_0x5791a1['message']||_0x41144f+'\x20failed';}finally{_0x2d6f78['forEach'](_0x3d5c92=>{_0x3d5c92['disabled']=![];});}}function toggleCleanupSection(){const _0x19ca04=document['getElementById']('cleanup-section'),_0x24202d=document['getElementById']('cleanup-content'),_0x208e64=document['getElementById']('cleanup-toggle');if(!_0x19ca04||!_0x24202d||!_0x208e64)return;const _0x2483a3=_0x19ca04['classList']['toggle']('expanded');_0x24202d['hidden']=!_0x2483a3,_0x208e64['setAttribute']('aria-expanded',String(_0x2483a3));}async function loadLogs({showLoading:showLoading=![]}={}){if(state['logs']['request'])return state['logs']['request'];return state['logs']['request']=((async()=>{const _0x226dc0=document['getElementById']('logs-loading'),_0x23899c=document['getElementById']('logs-error');(showLoading||!state['logs']['loaded'])&&(_0x226dc0['hidden']=![],_0x23899c['hidden']=!![],document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![]);try{const _0x26aadf=new URLSearchParams({'limit':'500'});state['logs']['level']!=='ALL'&&_0x26aadf['set']('level',state['logs']['level']);state['logs']['search']&&_0x26aadf['set']('search',state['logs']['search']);const _0x448883=await API['get']('/logs?'+_0x26aadf['toString']());state['logs']['entries']=Array['isArray'](_0x448883['entries'])?_0x448883['entries']['slice'](-state['logs']['maxEntries']):[],state['logs']['total']=Number(_0x448883['total'])||0x0,state['logs']['minLevel']=_0x448883['minLevel']||'INFO',state['logs']['loaded']=!![],_0x226dc0['hidden']=!![],_0x23899c['hidden']=!![],renderLogs();}catch(_0x18cd59){console['error']('Failed\x20to\x20load\x20logs',_0x18cd59),_0x226dc0['hidden']=!![],_0x23899c['hidden']=![],document['getElementById']('logs-error-message')['textContent']=_0x18cd59['message']||'Unknown\x20error',document['getElementById']('logs-empty')['hidden']=!![],document['getElementById']('logs-container')['hidden']=!![];}finally{state['logs']['request']=null;}})()),state['logs']['request'];}function renderLogs({stickToLiveEdge:stickToLiveEdge=![]}={}){const _0x31c3f8=document['getElementById']('logs-container'),_0x274a4e=document['getElementById']('logs-empty'),_0xa6bac3=stickToLiveEdge||state['logs']['autoScroll']&&state['logs']['live'],_0x204e6e=_0x31c3f8?.['scrollTop']||0x0,_0x242a14=_0x31c3f8?.['scrollHeight']||0x0,_0x5ec68c=getOrderedLogEntries();updateLogsMeta(_0x5ec68c['length']);if(_0x5ec68c['length']===0x0){_0x31c3f8['hidden']=!![],_0x274a4e['hidden']=![];return;}_0x274a4e['hidden']=!![],_0x31c3f8['hidden']=![],_0x31c3f8['innerHTML']=_0x5ec68c['map'](renderLogEntry)['join']('');if(_0xa6bac3){scrollLogsToLiveEdge(_0x31c3f8);return;}if(state['logs']['order']===LOG_ORDER_DESC){const _0xeb2b2b=_0x31c3f8['scrollHeight'],_0x8379a6=_0xeb2b2b-_0x242a14;_0x31c3f8['scrollTop']=_0x204e6e>0x0?_0x204e6e+Math['max'](_0x8379a6,0x0):_0x204e6e;return;}_0x31c3f8['scrollTop']=_0x204e6e;}function getVisibleLogEntries(){const _0x4d85dc=state['logs']['search']['trim']()['toLowerCase']();return state['logs']['entries']['filter'](_0x2c7b2e=>{if(state['logs']['level']!=='ALL'&&_0x2c7b2e['level']!==state['logs']['level'])return![];if(!_0x4d85dc)return!![];const _0x4e825e=String(_0x2c7b2e['message']||'')['toLowerCase'](),_0x2febf7=_0x2c7b2e['context']?JSON['stringify'](_0x2c7b2e['context'])['toLowerCase']():'';return _0x4e825e['includes'](_0x4d85dc)||_0x2febf7['includes'](_0x4d85dc);});}function getOrderedLogEntries(){const _0x48c8fc=getVisibleLogEntries();return state['logs']['order']===LOG_ORDER_DESC?_0x48c8fc['slice']()['reverse']():_0x48c8fc;}function renderLogEntry(_0x1ca538){const _0x276d36=Utils['escapeHtml'](formatDateTime(_0x1ca538['timestamp'])),_0x39d8ee=Utils['escapeHtml'](String(_0x1ca538['level']||'INFO')),_0x23840a=Utils['escapeHtml'](String(_0x1ca538['message']||'')),_0x54ddec=_0x1ca538['context']?'\x0a\x20\x20\x20\x20\x20\x20<details\x20class=\x22admin-log-context\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary>Context</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre>'+Utils['escapeHtml'](JSON['stringify'](_0x1ca538['context'],null,0x2))+'</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x20\x20\x20\x20':'';return'\x0a\x20\x20\x20\x20<div\x20class=\x22admin-log-entry\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-timestamp\x22>'+_0x276d36+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22admin-log-level\x20level-'+_0x39d8ee['toLowerCase']()+'\x22>'+_0x39d8ee+'</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-log-message\x22>'+_0x23840a+'</div>\x0a\x20\x20\x20\x20\x20\x20'+_0x54ddec+'\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';}function updateLogsMeta(_0x486567){const _0x4117cb=document['getElementById']('logs-meta');if(!_0x4117cb)return;const _0x17520f=state['logs']['entries']['length'],_0x174d98=state['logs']['level']!=='ALL'||!!state['logs']['search']['trim'](),_0x1da09a=state['logs']['order']===LOG_ORDER_DESC?'newest\x20first':'oldest\x20first';_0x4117cb['textContent']=_0x174d98?'Showing\x20'+_0x486567+'\x20of\x20'+_0x17520f+'\x20loaded\x20entries\x20for\x20the\x20current\x20filters\x20in\x20'+_0x1da09a+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.':'Showing\x20'+_0x486567+'\x20recent\x20buffered\x20entries\x20in\x20'+_0x1da09a+'\x20order.\x20Minimum\x20runtime\x20level:\x20'+state['logs']['minLevel']+'.';}function toggleLogsLiveMode(){state['logs']['live']=!state['logs']['live'],state['logs']['live']?(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}),startLogStream()):stopLogStream(),updateLogsLiveUi();}function updateLogsLiveUi(){const _0x3002a3=document['getElementById']('logs-live-toggle'),_0x53e6f6=document['getElementById']('logs-stream-status');if(!_0x3002a3||!_0x53e6f6)return;_0x53e6f6['classList']['remove']('live','error');if(!state['logs']['live']){_0x53e6f6['textContent']='Paused',_0x3002a3['textContent']='Start\x20Live';return;}if(state['logs']['streamState']==='live')_0x53e6f6['textContent']='Live',_0x53e6f6['classList']['add']('live');else state['logs']['streamState']==='error'?(_0x53e6f6['textContent']='Reconnecting',_0x53e6f6['classList']['add']('error')):_0x53e6f6['textContent']='Connecting';_0x3002a3['textContent']='Pause\x20Live';}function startLogStream(){if(state['currentSection']!=='logs'||state['logs']['stream'])return;state['logs']['streamState']='connecting',updateLogsLiveUi();const _0x590853=new EventSource(API['getBaseUrl']()+'/logs/stream');state['logs']['stream']=_0x590853,_0x590853['addEventListener']('log',_0xa690ec=>{try{const _0x5722db=JSON['parse'](_0xa690ec['data']);state['logs']['entries']['push'](_0x5722db),state['logs']['entries']['length']>state['logs']['maxEntries']&&state['logs']['entries']['shift'](),renderLogs();}catch(_0x5da347){console['error']('Failed\x20to\x20parse\x20log\x20stream\x20event',_0x5da347);}}),_0x590853['onopen']=()=>{state['logs']['streamState']='live',updateLogsLiveUi();},_0x590853['onerror']=()=>{state['logs']['streamState']='error',updateLogsLiveUi();};}function stopLogStream(){state['logs']['stream']&&(state['logs']['stream']['close'](),state['logs']['stream']=null),state['logs']['streamState']='paused',updateLogsLiveUi();}function clearDisplayedLogs(){state['logs']['entries']=[],renderLogs();}function setLogOrder(_0x4c5179,{focusLiveEdge:focusLiveEdge=![]}={}){const _0x508434=_0x4c5179===LOG_ORDER_DESC?LOG_ORDER_DESC:LOG_ORDER_ASC;if(state['logs']['order']===_0x508434){focusLiveEdge&&(state['logs']['autoScroll']=!![],renderLogs({'stickToLiveEdge':!![]}));return;}state['logs']['order']=_0x508434,setSessionValue('admin-logs-order',_0x508434),syncLogOrderUi(),focusLiveEdge&&(state['logs']['autoScroll']=!![]),renderLogs({'stickToLiveEdge':focusLiveEdge});}function syncLogOrderUi(){updateActiveFilterButtons('#logs-order-toggle',state['logs']['order']);}function handleLogsSearchInput(_0x5ba237){const _0x2ce1bc=_0x5ba237['target']['value']||'';state['logs']['searchTimer']&&clearTimeout(state['logs']['searchTimer']),state['logs']['searchTimer']=window['setTimeout'](()=>{state['logs']['search']=_0x2ce1bc,loadLogs({'showLoading':![]});},LOG_SEARCH_DEBOUNCE_MS);}function updateLogAutoScrollState(){const _0x365b32=document['getElementById']('logs-container');if(!_0x365b32)return;const _0x1c7509=state['logs']['order']===LOG_ORDER_DESC?_0x365b32['scrollTop']:_0x365b32['scrollHeight']-_0x365b32['scrollTop']-_0x365b32['clientHeight'];state['logs']['autoScroll']=_0x1c7509<0x20;}async function loadUsage({showLoading:showLoading=![]}={}){if(state['usage']['request'])return state['usage']['request'];return state['usage']['request']=((async()=>{const _0x4ca17d=document['getElementById']('usage-loading'),_0x11b6bb=document['getElementById']('usage-error');(showLoading||!state['usage']['loaded'])&&(_0x4ca17d['hidden']=![],_0x11b6bb['hidden']=!![],document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![]);try{const _0x4a8cf7=new URLSearchParams();_0x4a8cf7['set']('days',state['usage']['days']);state['usage']['environment']&&_0x4a8cf7['set']('environment',state['usage']['environment']);const _0xe5ea0b=await API['get']('/stats?'+_0x4a8cf7['toString']());state['usage']['loaded']=!![],_0x4ca17d['hidden']=!![],_0x11b6bb['hidden']=!![],renderUsage(_0xe5ea0b);}catch(_0x24eee5){console['error']('Failed\x20to\x20load\x20usage\x20statistics',_0x24eee5),_0x4ca17d['hidden']=!![],_0x11b6bb['hidden']=![],document['getElementById']('usage-error-message')['textContent']=_0x24eee5['message']||'Unknown\x20error',document['getElementById']('usage-empty')['hidden']=!![],document['getElementById']('usage-content')['hidden']=!![];}finally{state['usage']['request']=null;}})()),state['usage']['request'];}function renderUsage(_0x316c28){const _0xfb98f7=Number(_0x316c28?.['tasks']?.['total'])||0x0,_0x2e1df7=document['getElementById']('usage-empty'),_0x156e56=document['getElementById']('usage-content');if(_0xfb98f7===0x0){_0x2e1df7['hidden']=![],_0x156e56['hidden']=!![];return;}_0x2e1df7['hidden']=!![],_0x156e56['hidden']=![];const _0x2d069c=Number(_0x316c28?.['approvalRate']?.['successRate'])||0x0,_0x358e90=Math['round'](_0x2d069c*0x64),_0x375487=_0x316c28?.['code']?.['approved']||{},_0x4011c2=Number(_0x375487?.['tasks'])||0x0,_0x563766=(Number(_0x375487?.['linesAdded'])||0x0)-(Number(_0x375487?.['linesDeleted'])||0x0),_0x5527a8=(Number(_0x316c28?.['code']?.['linesAdded'])||0x0)-(Number(_0x316c28?.['code']?.['linesDeleted'])||0x0),_0x4f096e=Number(_0x316c28?.['timing']?.['averageDurationMinutes'])||0x0;setSummaryValue('usage-total-tasks',formatNumber(_0xfb98f7)),setSummaryValue('usage-success-rate',_0x358e90+'%',statusClassFromPercent(_0x358e90)),setSummaryValue('usage-net-lines',formatSignedNumber(_0x5527a8)),setSummaryValue('usage-average-duration',formatDurationMinutes(_0x4f096e));const _0x29b1c7=_0xfb98f7>0x0?Math['round'](_0x4011c2/_0xfb98f7*0x64):0x0;document['getElementById']('usage-approved-summary')['textContent']=formatNumber(_0x4011c2)+'\x20approved\x20('+_0x29b1c7+'%)\x20·\x20'+formatNumber(_0x316c28['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-success-detail')['textContent']=(_0x316c28['approvalRate']['completed']||0x0)+'\x20completed\x20/\x20'+(_0x316c28['approvalRate']['failed']||0x0)+'\x20failed\x20/\x20'+(_0x316c28['approvalRate']['interrupted']||0x0)+'\x20interrupted',document['getElementById']('usage-net-lines-detail')['textContent']='+'+formatNumber(_0x316c28['code']['linesAdded']||0x0)+'\x20/\x20-'+formatNumber(_0x316c28['code']['linesDeleted']||0x0)+'\x20·\x20Approved\x20'+formatSignedNumber(_0x563766)+'\x20net',document['getElementById']('usage-average-duration-detail')['textContent']=formatDurationMinutes(_0x316c28['timing']['medianDurationMinutes']||0x0)+'\x20median\x20·\x20'+formatNumber(_0x316c28['timing']['totalDurationHours']||0x0)+'h\x20total',document['getElementById']('usage-period-summary')['textContent']=buildPeriodSummary(_0x316c28['period']),renderBarList('usage-status-bars',_0x316c28['tasks']['byStatus']||{}),renderObjectTable('usage-type-body',_0x316c28['tasks']['byType']||{},_0xfb98f7,{'includePercent':!![],'labelFormatter':prettifyKey}),renderObjectTable('usage-environment-body',_0x316c28['tasks']['byEnvironment']||{},_0xfb98f7),renderUserTable('usage-user-body',_0x316c28['tasks']['byUser']||[]),renderObjectTable('usage-source-body',_0x316c28['tasks']['bySource']||{},_0xfb98f7,{'labelFormatter':prettifyKey}),document['getElementById']('usage-lines-added')['textContent']=formatNumber(_0x316c28['code']['linesAdded']||0x0),document['getElementById']('usage-lines-deleted')['textContent']=formatNumber(_0x316c28['code']['linesDeleted']||0x0),document['getElementById']('usage-files-changed')['textContent']=formatNumber(_0x316c28['code']['filesChanged']||0x0),document['getElementById']('usage-repositories-affected')['textContent']=formatNumber(_0x316c28['code']['repositoriesAffected']||0x0),document['getElementById']('usage-approved-lines-added')['textContent']=formatNumber(_0x375487['linesAdded']||0x0),document['getElementById']('usage-approved-lines-deleted')['textContent']=formatNumber(_0x375487['linesDeleted']||0x0),document['getElementById']('usage-approved-files-changed')['textContent']=formatNumber(_0x375487['filesChanged']||0x0),document['getElementById']('usage-approved-repositories-affected')['textContent']=formatNumber(_0x375487['repositoriesAffected']||0x0);const _0x4c0781=(_0x2f16be,_0x4ec76f)=>_0x2f16be>0x0?Math['round'](_0x4ec76f/_0x2f16be*0x64):0x0;document['getElementById']('usage-added-pct')['style']['width']=_0x4c0781(_0x316c28['code']['linesAdded']||0x0,_0x375487['linesAdded']||0x0)+'%',document['getElementById']('usage-deleted-pct')['style']['width']=_0x4c0781(_0x316c28['code']['linesDeleted']||0x0,_0x375487['linesDeleted']||0x0)+'%',document['getElementById']('usage-files-pct')['style']['width']=_0x4c0781(_0x316c28['code']['filesChanged']||0x0,_0x375487['filesChanged']||0x0)+'%',document['getElementById']('usage-repos-pct')['style']['width']=_0x4c0781(_0x316c28['code']['repositoriesAffected']||0x0,_0x375487['repositoriesAffected']||0x0)+'%';}function buildPeriodSummary(_0x422e0c){const _0x428e16=_0x422e0c?.['from']?formatDateTime(_0x422e0c['from']):'the\x20earliest\x20loaded\x20task',_0x5a9f2e=_0x422e0c?.['to']?formatDateTime(_0x422e0c['to']):'now',_0x3a6a24=_0x422e0c?.['days']?_0x422e0c['days']+'\x20day\x20window':'All\x20available\x20task\x20history';return _0x3a6a24+'\x20·\x20'+_0x428e16+'\x20to\x20'+_0x5a9f2e;}function renderBarList(_0x35df8b,_0x11eecf){const _0x34250f=document['getElementById'](_0x35df8b);if(!_0x34250f)return;const _0x5babe2=Object['entries'](_0x11eecf)['filter'](([,_0x13da06])=>Number(_0x13da06)>0x0)['sort']((_0x211472,_0x4ec1e9)=>_0x4ec1e9[0x1]-_0x211472[0x1]),_0x45c551=_0x5babe2['reduce']((_0x13ec49,[,_0x32c5c3])=>_0x13ec49+Number(_0x32c5c3||0x0),0x0);if(_0x5babe2['length']===0x0){_0x34250f['innerHTML']='<div\x20class=\x22text-muted\x22>No\x20data\x20available.</div>';return;}_0x34250f['innerHTML']=_0x5babe2['map'](([_0x3acdbd,_0x312976])=>{const _0x38f23d=_0x45c551>0x0?Math['max'](0x2,Math['round'](_0x312976/_0x45c551*0x64)):0x0,_0x4710cc=Utils['escapeHtml'](prettifyKey(_0x3acdbd)),_0xf80003=Utils['escapeHtml'](formatNumber(_0x312976));return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-label\x22>'+_0x4710cc+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-track\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-fill\x20status-'+Utils['escapeHtml'](String(_0x3acdbd)['toLowerCase']())+'\x22\x20style=\x22width:\x20'+_0x38f23d+'%\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22admin-bar-value\x22>'+_0xf80003+'</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderObjectTable(_0x51f0bf,_0x3fe5ee,_0x4c02c1,{includePercent:includePercent=![],labelFormatter:labelFormatter=null}={}){const _0x2d0c64=document['getElementById'](_0x51f0bf);if(!_0x2d0c64)return;const _0x27a769=Object['entries'](_0x3fe5ee)['filter'](([,_0x3e072d])=>Number(_0x3e072d)>0x0)['sort']((_0x19d82a,_0x16682d)=>_0x16682d[0x1]-_0x19d82a[0x1]||String(_0x19d82a[0x0])['localeCompare'](String(_0x16682d[0x0])));if(_0x27a769['length']===0x0){_0x2d0c64['innerHTML']='<tr><td\x20colspan=\x22'+(includePercent?0x3:0x2)+'\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x2d0c64['innerHTML']=_0x27a769['map'](([_0x58feef,_0x1de832])=>{const _0x48432d=labelFormatter?labelFormatter(_0x58feef):_0x58feef,_0x2ce5dd=includePercent?'<td>'+formatPercent(_0x4c02c1>0x0?_0x1de832/_0x4c02c1*0x64:0x0)+'</td>':'';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](String(_0x48432d))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0x1de832))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2ce5dd+'\x0a\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20';})['join']('');}function renderUserTable(_0x340eb,_0x568ebf){const _0x2069c8=document['getElementById'](_0x340eb);if(!_0x2069c8)return;if(!Array['isArray'](_0x568ebf)||_0x568ebf['length']===0x0){_0x2069c8['innerHTML']='<tr><td\x20colspan=\x222\x22\x20class=\x22text-muted\x22>No\x20data\x20available.</td></tr>';return;}_0x2069c8['innerHTML']=_0x568ebf['map'](_0xae9f1f=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0xae9f1f['name']||_0xae9f1f['username']||_0xae9f1f['userId']||'Unknown')+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](formatNumber(_0xae9f1f['count']||0x0))+'</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}function updateActiveFilterButtons(_0x4403e9,_0x31b301){document['querySelectorAll'](_0x4403e9+'\x20.admin-filter-btn')['forEach'](_0x526d31=>{_0x526d31['classList']['toggle']('active',_0x526d31['dataset']['level']===_0x31b301||_0x526d31['dataset']['days']===_0x31b301||_0x526d31['dataset']['order']===_0x31b301);});}function scrollLogsToLiveEdge(_0x8536ba){if(!_0x8536ba)return;if(state['logs']['order']===LOG_ORDER_DESC){_0x8536ba['scrollTop']=0x0;return;}_0x8536ba['scrollTop']=_0x8536ba['scrollHeight'];}function setSummaryValue(_0x4c2824,_0x5d56bc,_0x49833d=''){const _0x5b635f=document['getElementById'](_0x4c2824);if(!_0x5b635f)return;_0x5b635f['textContent']=_0x5d56bc,_0x5b635f['classList']['remove']('status-good','status-warn','status-bad'),_0x49833d&&_0x5b635f['classList']['add'](_0x49833d);}function statusClassFromPercent(_0x490295){if(_0x490295>=0x50)return'status-good';if(_0x490295>0x3c)return'status-warn';return'status-bad';}function formatDateTime(_0x49d14d){const _0x49078b=new Date(_0x49d14d);if(Number['isNaN'](_0x49078b['getTime']()))return _0x49d14d||'Unknown';return _0x49078b['toLocaleString']();}function formatDurationMinutes(_0x32002c){const _0x493725=Math['round'](Number(_0x32002c)||0x0);if(_0x493725<0x3c)return _0x493725+'m';const _0x55bf06=Math['floor'](_0x493725/0x3c),_0x1c714e=_0x493725%0x3c;return _0x1c714e>0x0?_0x55bf06+'h\x20'+_0x1c714e+'m':_0x55bf06+'h';}function formatPercent(_0x2c3830){return Math['round'](Number(_0x2c3830)||0x0)+'%';}function formatNumber(_0x20e3c2){return NUMBER_FORMATTER['format'](Number(_0x20e3c2)||0x0);}function formatSignedNumber(_0x1a066a){const _0x3e6369=Number(_0x1a066a)||0x0;if(_0x3e6369>0x0)return'+'+formatNumber(_0x3e6369);return formatNumber(_0x3e6369);}function prettifyKey(_0x1b59ea){return String(_0x1b59ea)['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x762436=>_0x762436['toUpperCase']());}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function parseEventsToActivities(_0x141fc9){const _0x5ea171=[];let _0x3a5a0b=null,_0x491f2e=null,_0x277557=null,_0x254170=null;return _0x141fc9['forEach'](_0x29ed13=>{if(_0x29ed13['type']==='assistant'&&_0x29ed13['message']?.['content'])_0x29ed13['message']['content']['forEach']((_0x233a7a,_0x410b16)=>{if(_0x233a7a['type']==='text'){const _0x2915a5=_0x233a7a['id']||_0x29ed13['message']['id']+'-'+_0x29ed13['timestamp']+'-'+_0x410b16,_0x357fc6=_0x29ed13['message']['stop_reason']==='end_turn';_0x5ea171['push']({'icon':_0x357fc6?'🤖':'💭','action':_0x357fc6?'Response':'Thinking','detail':truncate(_0x233a7a['text'],0x64),'status':'success','id':_0x2915a5,'fullContent':_0x233a7a['text'],'expandable':!![],'isAgentResponse':_0x357fc6,'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13,'block':_0x233a7a}});}else{if(_0x233a7a['type']==='tool_use'){const _0x8eb3f2=_0x233a7a['name']==='TodoWrite'||_0x233a7a['name']==='AskUserQuestion'||_0x233a7a['name']==='ExitPlanMode';_0x5ea171['push']({'icon':getToolIcon(_0x233a7a['name']),'action':_0x233a7a['name'],'detail':formatToolInputCompact(_0x233a7a['name'],_0x233a7a['input']),'status':'running','id':_0x233a7a['id'],'fullContent':_0x8eb3f2?_0x233a7a['input']:null,'expandable':_0x8eb3f2,'toolInput':_0x233a7a['input'],'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13,'block':_0x233a7a}});}}});else{if(_0x29ed13['type']==='user'&&_0x29ed13['message']?.['content'])_0x29ed13['message']['content']['forEach'](_0x1ffdb4=>{if(_0x1ffdb4['type']==='tool_result'){const _0x40226e=_0x5ea171['find'](_0x3f4eb0=>_0x3f4eb0['id']===_0x1ffdb4['tool_use_id']);_0x40226e&&(_0x40226e['status']=_0x1ffdb4['is_error']?'error':'success',shouldBeExpandable(_0x40226e['action'])&&(_0x40226e['fullContent']=formatToolResult(_0x40226e['action'],_0x1ffdb4['content'],_0x40226e['toolInput'],_0x1ffdb4['is_error'],_0x29ed13['tool_use_result']),_0x40226e['expandable']=!![]),_0x40226e['rawData']=mergeRawData(_0x40226e['rawData'],{'toolResultEvent':_0x29ed13,'toolResult':_0x1ffdb4}));}});else{if(_0x29ed13['type']==='turn.started')_0x254170=_0x5ea171['length'];else{if(_0x29ed13['type']==='turn.completed')promoteCodexTurnThinkingToResponse(_0x5ea171,_0x254170),_0x254170=_0x5ea171['length'];else{if(_0x29ed13['type']==='item.started'&&_0x29ed13['item']){const _0x895aa8=_0x29ed13['item'];if(_0x895aa8['type']==='command_execution'){const _0x14f3ea=_0x895aa8['id']+'-'+_0x29ed13['timestamp'];_0x5ea171['push']({'icon':'🖥️','action':'Bash','detail':truncate(_0x895aa8['command']||'',0x64),'status':'running','id':_0x14f3ea,'codexItemId':_0x895aa8['id'],'toolInput':{'command':_0x895aa8['command']},'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13}});}}else{if(_0x29ed13['type']==='item.completed'&&_0x29ed13['item']){const _0x585c07=_0x29ed13['item'];if(_0x585c07['type']==='reasoning')_0x5ea171['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x585c07['text']||'',0x64),'status':'success','id':_0x585c07['id']+'-'+_0x29ed13['timestamp'],'fullContent':_0x585c07['text'],'expandable':!![],'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13}});else{if(_0x585c07['type']==='agent_message')_0x5ea171['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x585c07['text']||'',0x64),'status':'success','id':_0x585c07['id']+'-'+_0x29ed13['timestamp'],'fullContent':_0x585c07['text'],'expandable':!![],'isAgentResponse':![],'isCodexAgentMessage':!![],'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13}});else{if(_0x585c07['type']==='command_execution'){const _0x1dbebe=_0x5ea171['find'](_0x130b3c=>_0x130b3c['codexItemId']===_0x585c07['id'])||_0x5ea171['find'](_0x22243f=>_0x22243f['id']===_0x585c07['id']);if(_0x1dbebe){const _0x3f08cb=_0x585c07['status']==='completed'&&_0x585c07['exit_code']===0x0;_0x1dbebe['status']=_0x3f08cb?'success':'error',_0x1dbebe['fullContent']=formatCodexCommandResult(_0x585c07['command'],_0x585c07['stdout'],_0x585c07['stderr'],_0x585c07['exit_code'],_0x585c07['aggregated_output']),_0x1dbebe['expandable']=!![],_0x1dbebe['rawData']=mergeRawData(_0x1dbebe['rawData'],{'completionEvent':_0x29ed13});}}}}}else{if(_0x29ed13['type']==='init'&&_0x29ed13['session_id'])_0x3a5a0b=null,_0x491f2e=null,_0x277557=null;else{if(_0x29ed13['type']==='message'&&_0x29ed13['role']==='assistant'&&_0x29ed13['content']){if(_0x29ed13['delta'])!_0x3a5a0b?(_0x3a5a0b=_0x29ed13['content'],_0x491f2e='gemini-msg-'+_0x29ed13['timestamp'],_0x277557=_0x29ed13['timestamp']):_0x3a5a0b+=_0x29ed13['content'];else{const _0x412577=stripBobToolNotation(_0x29ed13['content']);_0x412577['trim']()&&_0x5ea171['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x412577,0x64),'status':'success','id':'gemini-msg-'+_0x29ed13['timestamp'],'fullContent':_0x412577,'expandable':!![],'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13}});}}else{if(_0x29ed13['type']==='tool_use'&&_0x29ed13['tool_name']){if(_0x3a5a0b){const _0x553151=stripBobToolNotation(_0x3a5a0b);_0x553151['trim']()&&_0x5ea171['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x553151,0x64),'status':'success','id':_0x491f2e,'fullContent':_0x553151,'expandable':!![],'timestamp':_0x277557,'rawData':{'bufferedContent':_0x3a5a0b,'messageId':_0x491f2e,'flushedBy':_0x29ed13}}),_0x3a5a0b=null,_0x491f2e=null,_0x277557=null;}const {icon:_0x490e93,action:_0x3d00ba,detail:_0x71b5fc}=mapGeminiTool(_0x29ed13['tool_name'],_0x29ed13['parameters']),_0x546cf1=_0x29ed13['tool_name']==='attempt_completion',_0x1ff8a9=_0x3d00ba==='TodoWrite';_0x5ea171['push']({'icon':_0x490e93,'action':_0x3d00ba,'detail':_0x71b5fc,'status':_0x546cf1?'success':'running','id':_0x29ed13['tool_id'],'toolInput':_0x29ed13['parameters'],'fullContent':_0x546cf1?_0x29ed13['parameters']?.['result']||'':_0x1ff8a9?normalizeTodoContent(_0x29ed13['parameters']):undefined,'expandable':_0x546cf1||_0x1ff8a9,'isAgentResponse':_0x546cf1,'timestamp':_0x29ed13['timestamp'],'rawData':{'event':_0x29ed13}});}else{if(_0x29ed13['type']==='tool_result'&&_0x29ed13['tool_id']){const _0x482867=_0x5ea171['find'](_0x5968ef=>_0x5968ef['id']===_0x29ed13['tool_id']);if(_0x482867){const _0x6fdd21=_0x29ed13['status']==='success';_0x482867['status']=_0x6fdd21?'success':'error';if(shouldBeExpandable(_0x482867['action'])){const _0x1c8d56=_0x29ed13['output']||_0x29ed13['content']||_0x29ed13['result']||_0x29ed13['stdout']||'',_0x344cea=_0x29ed13['error']?.['message']||'',_0x15e223=_0x6fdd21?_0x1c8d56:'Error:\x20'+_0x344cea+'\x0a'+_0x1c8d56;_0x482867['fullContent']=formatToolResult(_0x482867['action'],_0x15e223,_0x482867['toolInput'],!_0x6fdd21),_0x482867['expandable']=!![];}_0x482867['rawData']=mergeRawData(_0x482867['rawData'],{'toolResultEvent':_0x29ed13});}}else _0x29ed13['type']==='result'&&_0x29ed13['stats']&&(_0x3a5a0b&&(_0x5ea171['push']({'icon':'🤖','action':'Response','detail':truncate(_0x3a5a0b,0x64),'status':'success','id':_0x491f2e||'gemini-msg-final','fullContent':_0x3a5a0b,'expandable':!![],'isAgentResponse':!![],'timestamp':_0x277557,'rawData':{'bufferedContent':_0x3a5a0b,'messageId':_0x491f2e||'gemini-msg-final','resultEvent':_0x29ed13}}),_0x3a5a0b=null,_0x491f2e=null,_0x277557=null));}}}}}}}}}}),_0x5ea171;}function mapGeminiTool(_0x27e874,_0x5c0454){let _0x335e48='🔧',_0x25648f=_0x27e874,_0x14d043='';if(_0x27e874==='bash'||_0x27e874==='run_shell_command'||_0x27e874==='execute_command')_0x335e48='🖥️',_0x25648f='Bash',_0x14d043=truncate(_0x5c0454?.['command']||'',0x64);else{if(_0x27e874==='read_file'||_0x27e874==='read_many_files')_0x335e48='📖',_0x25648f='Read',_0x14d043=_0x5c0454?.['path']||_0x5c0454?.['file_path']||(Array['isArray'](_0x5c0454?.['paths'])?_0x5c0454['paths']['join'](',\x20'):'')||'';else{if(_0x27e874==='write_file'||_0x27e874==='write_to_file')_0x335e48='✍️',_0x25648f='Write',_0x14d043=_0x5c0454?.['path']||_0x5c0454?.['file_path']||'';else{if(_0x27e874==='edit_file'||_0x27e874==='replace'||_0x27e874==='search_and_replace')_0x335e48='✏️',_0x25648f='Edit',_0x14d043=_0x5c0454?.['path']||_0x5c0454?.['file_path']||'';else{if(_0x27e874==='search_file_content')_0x335e48='🔎',_0x25648f='Grep',_0x14d043='\x22'+(_0x5c0454?.['pattern']||_0x5c0454?.['query']||'')+'\x22';else{if(_0x27e874==='write_todos'||_0x27e874==='update_todo_list')_0x335e48='<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x2210\x22\x20y1=\x226\x22\x20x2=\x2221\x22\x20y2=\x226\x22></line><line\x20x1=\x2210\x22\x20y1=\x2212\x22\x20x2=\x2221\x22\x20y2=\x2212\x22></line><line\x20x1=\x2210\x22\x20y1=\x2218\x22\x20x2=\x2221\x22\x20y2=\x2218\x22></line><polyline\x20points=\x223\x206\x204\x207\x206\x205\x22></polyline><polyline\x20points=\x223\x2012\x204\x2013\x206\x2011\x22></polyline><polyline\x20points=\x223\x2018\x204\x2019\x206\x2017\x22></polyline></svg>',_0x25648f='TodoWrite',_0x14d043=formatTodoWriteInput(normalizeTodoContent(_0x5c0454)||{});else{if(_0x27e874==='apply_diff'||_0x27e874==='insert_content')_0x335e48='✏️',_0x25648f='Edit',_0x14d043=_0x5c0454?.['file_path']||_0x5c0454?.['path']||'';else{if(_0x27e874==='attempt_completion')_0x335e48='🤖',_0x25648f='Response',_0x14d043=truncate(_0x5c0454?.['result']||'',0x64);else{if(_0x27e874==='list_directory'||_0x27e874==='list_dir'||_0x27e874==='list_files')_0x335e48='🔍',_0x25648f='Glob',_0x14d043=_0x5c0454?.['path']||_0x5c0454?.['directory']||'';else{if(_0x27e874==='search_files'||_0x27e874==='grep_search')_0x335e48='🔎',_0x25648f='Grep',_0x14d043='\x22'+(_0x5c0454?.['pattern']||_0x5c0454?.['query']||_0x5c0454?.['regex']||'')+'\x22';else{if(_0x27e874==='web_fetch')_0x335e48='🌐',_0x25648f='WebFetch',_0x14d043=_0x5c0454?.['url']||'';else{if(_0x27e874==='ask_followup_question')_0x335e48='❓',_0x25648f='AskUserQuestion',_0x14d043=truncate(_0x5c0454?.['question']||'',0x64);else{if(_0x27e874==='google_web_search')_0x335e48='🔍',_0x25648f='WebSearch',_0x14d043=truncate(_0x5c0454?.['query']||'',0x64);else _0x27e874==='save_memory'?(_0x335e48='💾',_0x25648f='SaveMemory',_0x14d043=truncate(_0x5c0454?.['key']||_0x5c0454?.['content']||'',0x64)):_0x14d043=truncate(JSON['stringify'](_0x5c0454),0x50);}}}}}}}}}}}}return{'icon':_0x335e48,'action':_0x25648f,'detail':_0x14d043};}function getToolIcon(_0x13512e){const _0x4780ee={'Read':'📖','Write':'✍️','Edit':'✏️','Bash':'🖥️','Glob':'🔍','Grep':'🔎','Task':'🤖','WebFetch':'🌐','WebSearch':'🔍','SlashCommand':'⚡','TodoWrite':'<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x2210\x22\x20y1=\x226\x22\x20x2=\x2221\x22\x20y2=\x226\x22></line><line\x20x1=\x2210\x22\x20y1=\x2212\x22\x20x2=\x2221\x22\x20y2=\x2212\x22></line><line\x20x1=\x2210\x22\x20y1=\x2218\x22\x20x2=\x2221\x22\x20y2=\x2218\x22></line><polyline\x20points=\x223\x206\x204\x207\x206\x205\x22></polyline><polyline\x20points=\x223\x2012\x204\x2013\x206\x2011\x22></polyline><polyline\x20points=\x223\x2018\x204\x2019\x206\x2017\x22></polyline></svg>','AskUserQuestion':'❓','NotebookEdit':'📓','ToolSearch':'🔌','Agent':'🤖','EnterPlanMode':'📋','ExitPlanMode':'📋'};return _0x4780ee[_0x13512e]||'🔧';}function formatToolInputCompact(_0x4cd484,_0x388692){if(!_0x388692)return'';switch(_0x4cd484){case'Read':return _0x388692['path']||_0x388692['file_path']||'';case'Write':case'Edit':const _0x5ae328=_0x388692['path']||_0x388692['file_path']||'',_0x1ff237=_0x388692['content']?.['length']||_0x388692['new_string']?.['length']||0x0;return''+_0x5ae328+(_0x1ff237>0x0?'\x20('+_0x1ff237+'\x20chars)':'');case'Bash':return truncate(_0x388692['command']||'',0x50);case'Glob':return _0x388692['pattern']||'';case'Grep':return'\x22'+(_0x388692['pattern']||'')+'\x22';case'TodoWrite':return formatTodoWriteInput(_0x388692);case'AskUserQuestion':return formatAskUserQuestionCompact(_0x388692);case'Agent':return _0x388692['description']||truncate(_0x388692['prompt']||'',0x50);case'ToolSearch':return _0x388692['query']||'';case'EnterPlanMode':return'Entering\x20plan\x20mode';case'ExitPlanMode':{const _0x3fe366=_0x388692['plan']||'',_0x5d9765=_0x3fe366['match'](/^#\s+(.+)/m);return _0x5d9765?truncate(_0x5d9765[0x1],0x3c):'Plan\x20complete';}default:return truncate(JSON['stringify'](_0x388692),0x50);}}function parseTodoMarkdown(_0x3658e3){if(typeof _0x3658e3!=='string')return null;const _0x83fa8c=_0x3658e3['split']('\x0a')['map'](_0x946d36=>_0x946d36['trim']())['filter'](_0x5239c5=>/^\[[ x\-]\]/i['test'](_0x5239c5));if(_0x83fa8c['length']===0x0)return null;return _0x83fa8c['map'](_0x46158b=>{const _0x257e48=_0x46158b['match'](/^\[(.)\]/)?.[0x1]||'\x20',_0x17710b=_0x46158b['replace'](/^\[.\]\s*/,'')['trim']();let _0x3dd678='pending';if(_0x257e48['toLowerCase']()==='x')_0x3dd678='completed';else{if(_0x257e48==='-')_0x3dd678='in_progress';}return{'description':_0x17710b,'status':_0x3dd678};});}function normalizeTodoContent(_0x34081){if(!_0x34081)return _0x34081;if(Array['isArray'](_0x34081['todos']))return _0x34081;if(typeof _0x34081['todos']==='string'){const _0x2c536f=parseTodoMarkdown(_0x34081['todos']);if(_0x2c536f)return{..._0x34081,'todos':_0x2c536f};}return _0x34081;}function formatTodoWriteInput(_0x433aa1){if(!_0x433aa1['todos']||!Array['isArray'](_0x433aa1['todos']))return truncate(JSON['stringify'](_0x433aa1),0x32);const _0xa8957=_0x433aa1['todos'],_0x2f498b={'pending':'○','in_progress':'◐','completed':'●'},_0x5961f2=_0xa8957['slice'](0x0,0x3)['map'](_0x337a9d=>{const _0x5bce95=_0x2f498b[_0x337a9d['status']]||'○',_0x2809f2=truncate(_0x337a9d['content']||_0x337a9d['description']||'No\x20description\x20provided',0x28);return _0x5bce95+'\x20'+_0x2809f2;})['join'](',\x20'),_0xd4f1bf=_0xa8957['length']-0x3,_0xb7ad84=_0xd4f1bf>0x0?',\x20+'+_0xd4f1bf+'\x20more':'';return _0x5961f2+_0xb7ad84;}function stripBobToolNotation(_0xadc1b6){if(!_0xadc1b6)return'';return _0xadc1b6['replace'](/\[using tool \w+:[^\]]*\]\n?/g,'')['trim']();}function shouldBeExpandable(_0x563811){const _0x20ec9f=['Bash','Read','Write','Edit','Grep','Glob','WebFetch','WebSearch','NotebookEdit','Agent','Skill','Task','AskUserQuestion','ExitPlanMode','SaveMemory','TodoWrite'];return _0x20ec9f['includes'](_0x563811);}function formatAskUserQuestionCompact(_0x1fbe55){if(!_0x1fbe55?.['questions']||!Array['isArray'](_0x1fbe55['questions'])||_0x1fbe55['questions']['length']===0x0){if(_0x1fbe55?.['question'])return truncate(_0x1fbe55['question'],0x50);return truncate(JSON['stringify'](_0x1fbe55),0x50);}const _0x259925=_0x1fbe55['questions'][0x0],_0x357bb5=_0x259925['question']||_0x259925['header']||'',_0x1d9d93=_0x1fbe55['questions']['length']>0x1?'\x20(+'+(_0x1fbe55['questions']['length']-0x1)+'\x20more)':'';return truncate(_0x357bb5,0x46)+_0x1d9d93;}function formatToolResult(_0x51babc,_0x1b706d,_0x37ee23,_0x5725c9,_0x1a8d86){if(_0x5725c9){if(_0x51babc==='ExitPlanMode')return{'toolName':'ExitPlanMode','plan':_0x37ee23?.['plan']||'','error':!![],'content':typeof _0x1b706d==='string'?_0x1b706d:JSON['stringify'](_0x1b706d,null,0x2)};if(_0x51babc==='AskUserQuestion')return{'toolName':'AskUserQuestion','questions':_0x37ee23?.['questions']||(_0x37ee23?.['question']?[_0x37ee23]:[]),'error':!![],'denied':!![],'content':typeof _0x1b706d==='string'?_0x1b706d:JSON['stringify'](_0x1b706d,null,0x2)};return{'toolName':_0x51babc,'toolInput':_0x37ee23,'error':!![],'content':typeof _0x1b706d==='string'?_0x1b706d:JSON['stringify'](_0x1b706d,null,0x2)};}switch(_0x51babc){case'Bash':return{'toolName':'Bash','command':_0x37ee23?.['command']||'','output':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'Read':return{'toolName':'Read','filePath':_0x37ee23?.['path']||_0x37ee23?.['file_path']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'Write':return{'toolName':'Write','filePath':_0x37ee23?.['path']||_0x37ee23?.['file_path']||'','content':_0x37ee23?.['content']||'','result':typeof _0x1b706d==='string'?_0x1b706d:'File\x20written\x20successfully'};case'Edit':const _0x5b8187=_0x1a8d86?.['structuredPatch']?.[0x0]?.['oldStart']||null;return{'toolName':'Edit','filePath':_0x37ee23?.['path']||_0x37ee23?.['file_path']||'','oldString':_0x37ee23?.['old_string']||'','newString':_0x37ee23?.['new_string']||'','replaceAll':_0x37ee23?.['replace_all']||![],'startLine':_0x5b8187,'result':typeof _0x1b706d==='string'?_0x1b706d:'File\x20edited\x20successfully'};case'Grep':return{'toolName':'Grep','pattern':_0x37ee23?.['pattern']||'','path':_0x37ee23?.['path']||'','outputMode':_0x37ee23?.['output_mode']||'files_with_matches','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'Glob':return{'toolName':'Glob','pattern':_0x37ee23?.['pattern']||'','path':_0x37ee23?.['path']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'WebFetch':return{'toolName':'WebFetch','url':_0x37ee23?.['url']||'','prompt':_0x37ee23?.['prompt']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'WebSearch':return{'toolName':'WebSearch','query':_0x37ee23?.['query']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'NotebookEdit':return{'toolName':'NotebookEdit','notebookPath':_0x37ee23?.['notebook_path']||'','cellId':_0x37ee23?.['cell_id']||'','newSource':_0x37ee23?.['new_source']||'','result':typeof _0x1b706d==='string'?_0x1b706d:'Notebook\x20cell\x20edited\x20successfully'};case'Agent':return{'toolName':'Agent','description':_0x37ee23?.['description']||'','subagentType':_0x37ee23?.['subagent_type']||'','model':_0x37ee23?.['model']||'','prompt':_0x37ee23?.['prompt']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'Skill':return{'toolName':'Skill','toolInput':_0x37ee23,'skill':_0x37ee23?.['skill']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'Task':return{'toolName':'Task','description':_0x37ee23?.['description']||'','subagentType':_0x37ee23?.['subagent_type']||'','prompt':_0x37ee23?.['prompt']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'AskUserQuestion':return{'toolName':'AskUserQuestion','questions':_0x37ee23?.['questions']||(_0x37ee23?.['question']?[_0x37ee23]:[]),'answer':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};case'ExitPlanMode':return{'toolName':'ExitPlanMode','plan':_0x37ee23?.['plan']||'','result':typeof _0x1b706d==='string'?_0x1b706d:''};case'SaveMemory':return{'toolName':'SaveMemory','key':_0x37ee23?.['key']||'','content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};default:return{'toolName':_0x51babc,'toolInput':_0x37ee23,'content':typeof _0x1b706d==='string'?_0x1b706d:_0x1b706d?JSON['stringify'](_0x1b706d,null,0x2):''};}}function formatCodexCommandResult(_0x1b590e,_0x2e84f1,_0x2d1684,_0x3ff8e4,_0x21c283){return{'toolName':'Bash','command':_0x1b590e||'','stdout':_0x2e84f1||'','stderr':_0x2d1684||'','exitCode':_0x3ff8e4,'aggregated_output':_0x21c283||''};}function promoteCodexTurnThinkingToResponse(_0x4834f1,_0x498477=null){const _0x2b78d3=Number['isInteger'](_0x498477)&&_0x498477>=0x0?_0x498477:0x0;for(let _0x203b53=_0x4834f1['length']-0x1;_0x203b53>=_0x2b78d3;_0x203b53--){const _0x3865d1=_0x4834f1[_0x203b53];if(!_0x3865d1?.['isCodexAgentMessage'])continue;if(_0x3865d1['action']==='Response'||_0x3865d1['isAgentResponse'])return;if(_0x3865d1['action']==='Thinking'){_0x3865d1['action']='Response',_0x3865d1['icon']='🤖',_0x3865d1['isAgentResponse']=!![];return;}}}function mergeRawData(_0x22514c,_0x22f06a){if(!_0x22f06a)return _0x22514c||null;const _0x2555a8=typeof _0x22f06a==='object'&&_0x22f06a!==null?_0x22f06a:{'value':_0x22f06a};if(!_0x22514c)return _0x2555a8;if(typeof _0x22514c==='object'&&_0x22514c!==null&&!Array['isArray'](_0x22514c))return{..._0x22514c,..._0x2555a8};return{'initial':_0x22514c,..._0x2555a8};}function truncate(_0x208056,_0x15ff57){if(!_0x208056||_0x208056['length']<=_0x15ff57)return _0x208056||'';return _0x208056['substring'](0x0,_0x15ff57)+'...';}export function calculateEventStats(_0x2ea5c4){const _0x5d7301={'total':_0x2ea5c4['length'],'toolUses':0x0,'toolResults':0x0,'thinking':0x0,'messages':0x0};return _0x2ea5c4['forEach'](_0x150831=>{if(_0x150831['type']==='assistant'&&_0x150831['message']?.['content'])_0x150831['message']['content']['forEach'](_0x4e584d=>{if(_0x4e584d['type']==='tool_use')_0x5d7301['toolUses']++;else _0x4e584d['type']==='text'&&_0x5d7301['thinking']++;});else{if(_0x150831['type']==='user'&&_0x150831['message']?.['content'])_0x150831['message']['content']['forEach'](_0xf91ff4=>{_0xf91ff4['type']==='tool_result'&&_0x5d7301['toolResults']++;});else{if((_0x150831['type']==='item.completed'||_0x150831['type']==='item.started')&&_0x150831['item']){if(_0x150831['item']['type']==='command_execution')_0x5d7301['toolUses']++,_0x150831['type']==='item.completed'&&_0x150831['item']['status']==='completed'&&_0x5d7301['toolResults']++;else{if(_0x150831['item']['type']==='reasoning')_0x5d7301['thinking']++;else _0x150831['item']['type']==='agent_message'&&_0x5d7301['messages']++;}}else{if(_0x150831['type']==='message'&&_0x150831['role']==='assistant'&&_0x150831['content'])_0x5d7301['thinking']++;else{if(_0x150831['type']==='tool_use'&&_0x150831['tool_name'])_0x5d7301['toolUses']++;else _0x150831['type']==='tool_result'&&_0x150831['tool_id']&&_0x5d7301['toolResults']++;}}}}}),_0x5d7301;}
|
|
1
|
+
export function parseEventsToActivities(_0x40bd8d){const _0x296be7=[];let _0x3c6c06=null,_0x1c494b=null,_0x598b66=null,_0x1d67da=null;return _0x40bd8d['forEach'](_0x133bde=>{if(_0x133bde['type']==='assistant'&&_0x133bde['message']?.['content'])_0x133bde['message']['content']['forEach']((_0x2cccc7,_0x214869)=>{if(_0x2cccc7['type']==='text'){const _0x219472=_0x2cccc7['id']||_0x133bde['message']['id']+'-'+_0x133bde['timestamp']+'-'+_0x214869,_0x3185fd=_0x133bde['message']['stop_reason']==='end_turn';_0x296be7['push']({'icon':_0x3185fd?'🤖':'💭','action':_0x3185fd?'Response':'Thinking','detail':truncate(_0x2cccc7['text'],0x64),'status':'success','id':_0x219472,'fullContent':_0x2cccc7['text'],'expandable':!![],'isAgentResponse':_0x3185fd,'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde,'block':_0x2cccc7}});}else{if(_0x2cccc7['type']==='tool_use'){const _0x59e622=_0x2cccc7['name']==='TodoWrite'||_0x2cccc7['name']==='AskUserQuestion'||_0x2cccc7['name']==='ExitPlanMode';_0x296be7['push']({'icon':getToolIcon(_0x2cccc7['name']),'action':_0x2cccc7['name'],'detail':formatToolInputCompact(_0x2cccc7['name'],_0x2cccc7['input']),'status':'running','id':_0x2cccc7['id'],'fullContent':_0x59e622?_0x2cccc7['input']:null,'expandable':_0x59e622,'toolInput':_0x2cccc7['input'],'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde,'block':_0x2cccc7}});}}});else{if(_0x133bde['type']==='user'&&_0x133bde['message']?.['content'])_0x133bde['message']['content']['forEach'](_0x5e9502=>{if(_0x5e9502['type']==='tool_result'){const _0xff8a6e=_0x296be7['find'](_0x42aefa=>_0x42aefa['id']===_0x5e9502['tool_use_id']);_0xff8a6e&&(_0xff8a6e['status']=_0x5e9502['is_error']?'error':'success',shouldBeExpandable(_0xff8a6e['action'])&&(_0xff8a6e['fullContent']=formatToolResult(_0xff8a6e['action'],_0x5e9502['content'],_0xff8a6e['toolInput'],_0x5e9502['is_error'],_0x133bde['tool_use_result']),_0xff8a6e['expandable']=!![]),_0xff8a6e['rawData']=mergeRawData(_0xff8a6e['rawData'],{'toolResultEvent':_0x133bde,'toolResult':_0x5e9502}));}});else{if(_0x133bde['type']==='turn.started')_0x1d67da=_0x296be7['length'];else{if(_0x133bde['type']==='turn.completed')promoteCodexTurnThinkingToResponse(_0x296be7,_0x1d67da),_0x1d67da=_0x296be7['length'];else{if(_0x133bde['type']==='item.started'&&_0x133bde['item']){const _0x5ed8d5=_0x133bde['item'];if(_0x5ed8d5['type']==='command_execution'){const _0x4b23f0=_0x5ed8d5['id']+'-'+_0x133bde['timestamp'];_0x296be7['push']({'icon':'🖥️','action':'Bash','detail':truncate(_0x5ed8d5['command']||'',0x64),'status':'running','id':_0x4b23f0,'codexItemId':_0x5ed8d5['id'],'toolInput':{'command':_0x5ed8d5['command']},'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde}});}}else{if(_0x133bde['type']==='item.completed'&&_0x133bde['item']){const _0x62d7d9=_0x133bde['item'];if(_0x62d7d9['type']==='reasoning')_0x296be7['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x62d7d9['text']||'',0x64),'status':'success','id':_0x62d7d9['id']+'-'+_0x133bde['timestamp'],'fullContent':_0x62d7d9['text'],'expandable':!![],'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde}});else{if(_0x62d7d9['type']==='agent_message')_0x296be7['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x62d7d9['text']||'',0x64),'status':'success','id':_0x62d7d9['id']+'-'+_0x133bde['timestamp'],'fullContent':_0x62d7d9['text'],'expandable':!![],'isAgentResponse':![],'isCodexAgentMessage':!![],'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde}});else{if(_0x62d7d9['type']==='command_execution'){const _0x5ba2bc=_0x296be7['find'](_0x293e4e=>_0x293e4e['codexItemId']===_0x62d7d9['id'])||_0x296be7['find'](_0x50d92a=>_0x50d92a['id']===_0x62d7d9['id']);if(_0x5ba2bc){const _0x587b4e=_0x62d7d9['status']==='completed'&&_0x62d7d9['exit_code']===0x0;_0x5ba2bc['status']=_0x587b4e?'success':'error',_0x5ba2bc['fullContent']=formatCodexCommandResult(_0x62d7d9['command'],_0x62d7d9['stdout'],_0x62d7d9['stderr'],_0x62d7d9['exit_code'],_0x62d7d9['aggregated_output']),_0x5ba2bc['expandable']=!![],_0x5ba2bc['rawData']=mergeRawData(_0x5ba2bc['rawData'],{'completionEvent':_0x133bde});}}}}}else{if(_0x133bde['type']==='init'&&_0x133bde['session_id'])_0x3c6c06=null,_0x1c494b=null,_0x598b66=null;else{if(_0x133bde['type']==='message'&&_0x133bde['role']==='assistant'&&_0x133bde['content']){if(_0x133bde['delta'])!_0x3c6c06?(_0x3c6c06=_0x133bde['content'],_0x1c494b='gemini-msg-'+_0x133bde['timestamp'],_0x598b66=_0x133bde['timestamp']):_0x3c6c06+=_0x133bde['content'];else{const _0x57e304=stripBobToolNotation(_0x133bde['content']);_0x57e304['trim']()&&_0x296be7['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x57e304,0x64),'status':'success','id':'gemini-msg-'+_0x133bde['timestamp'],'fullContent':_0x57e304,'expandable':!![],'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde}});}}else{if(_0x133bde['type']==='tool_use'&&_0x133bde['tool_name']){if(_0x3c6c06){const _0x50f6e4=stripBobToolNotation(_0x3c6c06);_0x50f6e4['trim']()&&_0x296be7['push']({'icon':'💭','action':'Thinking','detail':truncate(_0x50f6e4,0x64),'status':'success','id':_0x1c494b,'fullContent':_0x50f6e4,'expandable':!![],'timestamp':_0x598b66,'rawData':{'bufferedContent':_0x3c6c06,'messageId':_0x1c494b,'flushedBy':_0x133bde}}),_0x3c6c06=null,_0x1c494b=null,_0x598b66=null;}const {icon:_0x384d87,action:_0x314b14,detail:_0x46d88f}=mapGeminiTool(_0x133bde['tool_name'],_0x133bde['parameters']),_0x177ce8=_0x133bde['tool_name']==='attempt_completion',_0xd3d6b9=_0x314b14==='TodoWrite';_0x296be7['push']({'icon':_0x384d87,'action':_0x314b14,'detail':_0x46d88f,'status':_0x177ce8?'success':'running','id':_0x133bde['tool_id'],'toolInput':_0x133bde['parameters'],'fullContent':_0x177ce8?_0x133bde['parameters']?.['result']||'':_0xd3d6b9?normalizeTodoContent(_0x133bde['parameters']):undefined,'expandable':_0x177ce8||_0xd3d6b9,'isAgentResponse':_0x177ce8,'timestamp':_0x133bde['timestamp'],'rawData':{'event':_0x133bde}});}else{if(_0x133bde['type']==='tool_result'&&_0x133bde['tool_id']){const _0x4ca817=_0x296be7['find'](_0x41bd8d=>_0x41bd8d['id']===_0x133bde['tool_id']);if(_0x4ca817){const _0x41d35b=_0x133bde['status']==='success';_0x4ca817['status']=_0x41d35b?'success':'error';if(shouldBeExpandable(_0x4ca817['action'])){const _0x614fae=_0x133bde['output']||_0x133bde['content']||_0x133bde['result']||_0x133bde['stdout']||'',_0x1cc929=_0x133bde['error']?.['message']||'',_0x2845fc=_0x41d35b?_0x614fae:'Error:\x20'+_0x1cc929+'\x0a'+_0x614fae;_0x4ca817['fullContent']=formatToolResult(_0x4ca817['action'],_0x2845fc,_0x4ca817['toolInput'],!_0x41d35b),_0x4ca817['expandable']=!![];}_0x4ca817['rawData']=mergeRawData(_0x4ca817['rawData'],{'toolResultEvent':_0x133bde});}}else _0x133bde['type']==='result'&&_0x133bde['stats']&&(_0x3c6c06&&(_0x296be7['push']({'icon':'🤖','action':'Response','detail':truncate(_0x3c6c06,0x64),'status':'success','id':_0x1c494b||'gemini-msg-final','fullContent':_0x3c6c06,'expandable':!![],'isAgentResponse':!![],'timestamp':_0x598b66,'rawData':{'bufferedContent':_0x3c6c06,'messageId':_0x1c494b||'gemini-msg-final','resultEvent':_0x133bde}}),_0x3c6c06=null,_0x1c494b=null,_0x598b66=null));}}}}}}}}}}),_0x296be7;}function mapGeminiTool(_0x55876e,_0x27db69){let _0xc735eb='🔧',_0x13d37b=_0x55876e,_0x1fac8d='';if(_0x55876e==='bash'||_0x55876e==='run_shell_command'||_0x55876e==='execute_command')_0xc735eb='🖥️',_0x13d37b='Bash',_0x1fac8d=truncate(_0x27db69?.['command']||'',0x64);else{if(_0x55876e==='read_file'||_0x55876e==='read_many_files')_0xc735eb='📖',_0x13d37b='Read',_0x1fac8d=_0x27db69?.['path']||_0x27db69?.['file_path']||(Array['isArray'](_0x27db69?.['paths'])?_0x27db69['paths']['join'](',\x20'):'')||'';else{if(_0x55876e==='write_file'||_0x55876e==='write_to_file')_0xc735eb='✍️',_0x13d37b='Write',_0x1fac8d=_0x27db69?.['path']||_0x27db69?.['file_path']||'';else{if(_0x55876e==='edit_file'||_0x55876e==='replace'||_0x55876e==='search_and_replace')_0xc735eb='✏️',_0x13d37b='Edit',_0x1fac8d=_0x27db69?.['path']||_0x27db69?.['file_path']||'';else{if(_0x55876e==='search_file_content')_0xc735eb='🔎',_0x13d37b='Grep',_0x1fac8d='\x22'+(_0x27db69?.['pattern']||_0x27db69?.['query']||'')+'\x22';else{if(_0x55876e==='write_todos'||_0x55876e==='update_todo_list')_0xc735eb='<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x2210\x22\x20y1=\x226\x22\x20x2=\x2221\x22\x20y2=\x226\x22></line><line\x20x1=\x2210\x22\x20y1=\x2212\x22\x20x2=\x2221\x22\x20y2=\x2212\x22></line><line\x20x1=\x2210\x22\x20y1=\x2218\x22\x20x2=\x2221\x22\x20y2=\x2218\x22></line><polyline\x20points=\x223\x206\x204\x207\x206\x205\x22></polyline><polyline\x20points=\x223\x2012\x204\x2013\x206\x2011\x22></polyline><polyline\x20points=\x223\x2018\x204\x2019\x206\x2017\x22></polyline></svg>',_0x13d37b='TodoWrite',_0x1fac8d=formatTodoWriteInput(normalizeTodoContent(_0x27db69)||{});else{if(_0x55876e==='apply_diff'||_0x55876e==='insert_content')_0xc735eb='✏️',_0x13d37b='Edit',_0x1fac8d=_0x27db69?.['file_path']||_0x27db69?.['path']||'';else{if(_0x55876e==='attempt_completion')_0xc735eb='🤖',_0x13d37b='Response',_0x1fac8d=truncate(_0x27db69?.['result']||'',0x64);else{if(_0x55876e==='list_directory'||_0x55876e==='list_dir'||_0x55876e==='list_files')_0xc735eb='🔍',_0x13d37b='Glob',_0x1fac8d=_0x27db69?.['path']||_0x27db69?.['directory']||'';else{if(_0x55876e==='search_files'||_0x55876e==='grep_search')_0xc735eb='🔎',_0x13d37b='Grep',_0x1fac8d='\x22'+(_0x27db69?.['pattern']||_0x27db69?.['query']||_0x27db69?.['regex']||'')+'\x22';else{if(_0x55876e==='web_fetch')_0xc735eb='🌐',_0x13d37b='WebFetch',_0x1fac8d=_0x27db69?.['url']||'';else{if(_0x55876e==='ask_followup_question')_0xc735eb='❓',_0x13d37b='AskUserQuestion',_0x1fac8d=truncate(_0x27db69?.['question']||'',0x64);else{if(_0x55876e==='google_web_search')_0xc735eb='🔍',_0x13d37b='WebSearch',_0x1fac8d=truncate(_0x27db69?.['query']||'',0x64);else _0x55876e==='save_memory'?(_0xc735eb='💾',_0x13d37b='SaveMemory',_0x1fac8d=truncate(_0x27db69?.['key']||_0x27db69?.['content']||'',0x64)):_0x1fac8d=truncate(JSON['stringify'](_0x27db69),0x50);}}}}}}}}}}}}return{'icon':_0xc735eb,'action':_0x13d37b,'detail':_0x1fac8d};}function getToolIcon(_0x46efd8){const _0x158829={'Read':'📖','Write':'✍️','Edit':'✏️','Bash':'🖥️','Glob':'🔍','Grep':'🔎','Task':'🤖','WebFetch':'🌐','WebSearch':'🔍','SlashCommand':'⚡','TodoWrite':'<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><line\x20x1=\x2210\x22\x20y1=\x226\x22\x20x2=\x2221\x22\x20y2=\x226\x22></line><line\x20x1=\x2210\x22\x20y1=\x2212\x22\x20x2=\x2221\x22\x20y2=\x2212\x22></line><line\x20x1=\x2210\x22\x20y1=\x2218\x22\x20x2=\x2221\x22\x20y2=\x2218\x22></line><polyline\x20points=\x223\x206\x204\x207\x206\x205\x22></polyline><polyline\x20points=\x223\x2012\x204\x2013\x206\x2011\x22></polyline><polyline\x20points=\x223\x2018\x204\x2019\x206\x2017\x22></polyline></svg>','AskUserQuestion':'❓','NotebookEdit':'📓','ToolSearch':'🔌','Agent':'🤖','EnterPlanMode':'📋','ExitPlanMode':'📋'};return _0x158829[_0x46efd8]||'🔧';}function formatToolInputCompact(_0x2d6350,_0x3d95c4){if(!_0x3d95c4)return'';switch(_0x2d6350){case'Read':return _0x3d95c4['path']||_0x3d95c4['file_path']||'';case'Write':case'Edit':const _0x271bd1=_0x3d95c4['path']||_0x3d95c4['file_path']||'',_0x2978d4=_0x3d95c4['content']?.['length']||_0x3d95c4['new_string']?.['length']||0x0;return''+_0x271bd1+(_0x2978d4>0x0?'\x20('+_0x2978d4+'\x20chars)':'');case'Bash':return truncate(_0x3d95c4['command']||'',0x50);case'Glob':return _0x3d95c4['pattern']||'';case'Grep':return'\x22'+(_0x3d95c4['pattern']||'')+'\x22';case'TodoWrite':return formatTodoWriteInput(_0x3d95c4);case'AskUserQuestion':return formatAskUserQuestionCompact(_0x3d95c4);case'Agent':return _0x3d95c4['description']||truncate(_0x3d95c4['prompt']||'',0x50);case'ToolSearch':return _0x3d95c4['query']||'';case'EnterPlanMode':return'Entering\x20plan\x20mode';case'ExitPlanMode':{const _0x90e57d=_0x3d95c4['plan']||'',_0x4756f5=_0x90e57d['match'](/^#\s+(.+)/m);return _0x4756f5?truncate(_0x4756f5[0x1],0x3c):'Plan\x20complete';}default:return truncate(JSON['stringify'](_0x3d95c4),0x50);}}function parseTodoMarkdown(_0x434d86){if(typeof _0x434d86!=='string')return null;const _0x36d2bd=_0x434d86['split']('\x0a')['map'](_0x240ccf=>_0x240ccf['trim']())['filter'](_0x225411=>/^\[[ x\-]\]/i['test'](_0x225411));if(_0x36d2bd['length']===0x0)return null;return _0x36d2bd['map'](_0x76d6f0=>{const _0xd6bfe0=_0x76d6f0['match'](/^\[(.)\]/)?.[0x1]||'\x20',_0x359e85=_0x76d6f0['replace'](/^\[.\]\s*/,'')['trim']();let _0x4e4be9='pending';if(_0xd6bfe0['toLowerCase']()==='x')_0x4e4be9='completed';else{if(_0xd6bfe0==='-')_0x4e4be9='in_progress';}return{'description':_0x359e85,'status':_0x4e4be9};});}function normalizeTodoContent(_0x4d5d52){if(!_0x4d5d52)return _0x4d5d52;if(Array['isArray'](_0x4d5d52['todos']))return _0x4d5d52;if(typeof _0x4d5d52['todos']==='string'){const _0x504b0a=parseTodoMarkdown(_0x4d5d52['todos']);if(_0x504b0a)return{..._0x4d5d52,'todos':_0x504b0a};}return _0x4d5d52;}function formatTodoWriteInput(_0x4f3385){if(!_0x4f3385['todos']||!Array['isArray'](_0x4f3385['todos']))return truncate(JSON['stringify'](_0x4f3385),0x32);const _0x5cc069=_0x4f3385['todos'],_0x4af2bb={'pending':'○','in_progress':'◐','completed':'●'},_0x315187=_0x5cc069['slice'](0x0,0x3)['map'](_0xe96e96=>{const _0x5951d5=_0x4af2bb[_0xe96e96['status']]||'○',_0x45cfc9=truncate(_0xe96e96['content']||_0xe96e96['description']||'No\x20description\x20provided',0x28);return _0x5951d5+'\x20'+_0x45cfc9;})['join'](',\x20'),_0x3f2bfc=_0x5cc069['length']-0x3,_0x254011=_0x3f2bfc>0x0?',\x20+'+_0x3f2bfc+'\x20more':'';return _0x315187+_0x254011;}function stripBobToolNotation(_0x1d8b04){if(!_0x1d8b04)return'';return _0x1d8b04['replace'](/\[using tool \w+:[^\]]*\]\n?/g,'')['trim']();}function shouldBeExpandable(_0x797db9){const _0x13c18e=['Bash','Read','Write','Edit','Grep','Glob','WebFetch','WebSearch','NotebookEdit','Agent','Skill','Task','AskUserQuestion','ExitPlanMode','SaveMemory','TodoWrite'];return _0x13c18e['includes'](_0x797db9);}function formatAskUserQuestionCompact(_0x4b496c){if(!_0x4b496c?.['questions']||!Array['isArray'](_0x4b496c['questions'])||_0x4b496c['questions']['length']===0x0){if(_0x4b496c?.['question'])return truncate(_0x4b496c['question'],0x50);return truncate(JSON['stringify'](_0x4b496c),0x50);}const _0x344cd5=_0x4b496c['questions'][0x0],_0x33132f=_0x344cd5['question']||_0x344cd5['header']||'',_0x2892ec=_0x4b496c['questions']['length']>0x1?'\x20(+'+(_0x4b496c['questions']['length']-0x1)+'\x20more)':'';return truncate(_0x33132f,0x46)+_0x2892ec;}function formatToolResult(_0x48a2b4,_0x56fb3d,_0x4afd97,_0xfb0da3,_0x12a15b){if(_0xfb0da3){if(_0x48a2b4==='ExitPlanMode')return{'toolName':'ExitPlanMode','plan':_0x4afd97?.['plan']||'','error':!![],'content':typeof _0x56fb3d==='string'?_0x56fb3d:JSON['stringify'](_0x56fb3d,null,0x2)};if(_0x48a2b4==='AskUserQuestion')return{'toolName':'AskUserQuestion','questions':_0x4afd97?.['questions']||(_0x4afd97?.['question']?[_0x4afd97]:[]),'error':!![],'denied':!![],'content':typeof _0x56fb3d==='string'?_0x56fb3d:JSON['stringify'](_0x56fb3d,null,0x2)};return{'toolName':_0x48a2b4,'toolInput':_0x4afd97,'error':!![],'content':typeof _0x56fb3d==='string'?_0x56fb3d:JSON['stringify'](_0x56fb3d,null,0x2)};}switch(_0x48a2b4){case'Bash':return{'toolName':'Bash','command':_0x4afd97?.['command']||'','output':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'Read':return{'toolName':'Read','filePath':_0x4afd97?.['path']||_0x4afd97?.['file_path']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'Write':return{'toolName':'Write','filePath':_0x4afd97?.['path']||_0x4afd97?.['file_path']||'','content':_0x4afd97?.['content']||'','result':typeof _0x56fb3d==='string'?_0x56fb3d:'File\x20written\x20successfully'};case'Edit':const _0x5e5b1a=_0x12a15b?.['structuredPatch']?.[0x0]?.['oldStart']||null;return{'toolName':'Edit','filePath':_0x4afd97?.['path']||_0x4afd97?.['file_path']||'','oldString':_0x4afd97?.['old_string']||'','newString':_0x4afd97?.['new_string']||'','replaceAll':_0x4afd97?.['replace_all']||![],'startLine':_0x5e5b1a,'result':typeof _0x56fb3d==='string'?_0x56fb3d:'File\x20edited\x20successfully'};case'Grep':return{'toolName':'Grep','pattern':_0x4afd97?.['pattern']||'','path':_0x4afd97?.['path']||'','outputMode':_0x4afd97?.['output_mode']||'files_with_matches','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'Glob':return{'toolName':'Glob','pattern':_0x4afd97?.['pattern']||'','path':_0x4afd97?.['path']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'WebFetch':return{'toolName':'WebFetch','url':_0x4afd97?.['url']||'','prompt':_0x4afd97?.['prompt']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'WebSearch':return{'toolName':'WebSearch','query':_0x4afd97?.['query']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'NotebookEdit':return{'toolName':'NotebookEdit','notebookPath':_0x4afd97?.['notebook_path']||'','cellId':_0x4afd97?.['cell_id']||'','newSource':_0x4afd97?.['new_source']||'','result':typeof _0x56fb3d==='string'?_0x56fb3d:'Notebook\x20cell\x20edited\x20successfully'};case'Agent':return{'toolName':'Agent','description':_0x4afd97?.['description']||'','subagentType':_0x4afd97?.['subagent_type']||'','model':_0x4afd97?.['model']||'','prompt':_0x4afd97?.['prompt']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'Skill':return{'toolName':'Skill','toolInput':_0x4afd97,'skill':_0x4afd97?.['skill']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'Task':return{'toolName':'Task','description':_0x4afd97?.['description']||'','subagentType':_0x4afd97?.['subagent_type']||'','prompt':_0x4afd97?.['prompt']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'AskUserQuestion':return{'toolName':'AskUserQuestion','questions':_0x4afd97?.['questions']||(_0x4afd97?.['question']?[_0x4afd97]:[]),'answer':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};case'ExitPlanMode':return{'toolName':'ExitPlanMode','plan':_0x4afd97?.['plan']||'','result':typeof _0x56fb3d==='string'?_0x56fb3d:''};case'SaveMemory':return{'toolName':'SaveMemory','key':_0x4afd97?.['key']||'','content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};default:return{'toolName':_0x48a2b4,'toolInput':_0x4afd97,'content':typeof _0x56fb3d==='string'?_0x56fb3d:_0x56fb3d?JSON['stringify'](_0x56fb3d,null,0x2):''};}}function formatCodexCommandResult(_0x246e33,_0xa4404e,_0x385477,_0x58ad7a,_0x331636){return{'toolName':'Bash','command':_0x246e33||'','stdout':_0xa4404e||'','stderr':_0x385477||'','exitCode':_0x58ad7a,'aggregated_output':_0x331636||''};}function promoteCodexTurnThinkingToResponse(_0x10a86d,_0x3dfcea=null){const _0x5161ba=Number['isInteger'](_0x3dfcea)&&_0x3dfcea>=0x0?_0x3dfcea:0x0;for(let _0x27ef2b=_0x10a86d['length']-0x1;_0x27ef2b>=_0x5161ba;_0x27ef2b--){const _0x3d8d9c=_0x10a86d[_0x27ef2b];if(!_0x3d8d9c?.['isCodexAgentMessage'])continue;if(_0x3d8d9c['action']==='Response'||_0x3d8d9c['isAgentResponse'])return;if(_0x3d8d9c['action']==='Thinking'){_0x3d8d9c['action']='Response',_0x3d8d9c['icon']='🤖',_0x3d8d9c['isAgentResponse']=!![];return;}}}function mergeRawData(_0x46b53b,_0x4bd0bb){if(!_0x4bd0bb)return _0x46b53b||null;const _0x4c2447=typeof _0x4bd0bb==='object'&&_0x4bd0bb!==null?_0x4bd0bb:{'value':_0x4bd0bb};if(!_0x46b53b)return _0x4c2447;if(typeof _0x46b53b==='object'&&_0x46b53b!==null&&!Array['isArray'](_0x46b53b))return{..._0x46b53b,..._0x4c2447};return{'initial':_0x46b53b,..._0x4c2447};}function truncate(_0x443eda,_0x64cb15){if(!_0x443eda||_0x443eda['length']<=_0x64cb15)return _0x443eda||'';return _0x443eda['substring'](0x0,_0x64cb15)+'...';}export function calculateEventStats(_0x5325fb){const _0x3a4740={'total':_0x5325fb['length'],'toolUses':0x0,'toolResults':0x0,'thinking':0x0,'messages':0x0};return _0x5325fb['forEach'](_0x2e98ba=>{if(_0x2e98ba['type']==='assistant'&&_0x2e98ba['message']?.['content'])_0x2e98ba['message']['content']['forEach'](_0x1b2996=>{if(_0x1b2996['type']==='tool_use')_0x3a4740['toolUses']++;else _0x1b2996['type']==='text'&&_0x3a4740['thinking']++;});else{if(_0x2e98ba['type']==='user'&&_0x2e98ba['message']?.['content'])_0x2e98ba['message']['content']['forEach'](_0x38f55d=>{_0x38f55d['type']==='tool_result'&&_0x3a4740['toolResults']++;});else{if((_0x2e98ba['type']==='item.completed'||_0x2e98ba['type']==='item.started')&&_0x2e98ba['item']){if(_0x2e98ba['item']['type']==='command_execution')_0x3a4740['toolUses']++,_0x2e98ba['type']==='item.completed'&&_0x2e98ba['item']['status']==='completed'&&_0x3a4740['toolResults']++;else{if(_0x2e98ba['item']['type']==='reasoning')_0x3a4740['thinking']++;else _0x2e98ba['item']['type']==='agent_message'&&_0x3a4740['messages']++;}}else{if(_0x2e98ba['type']==='message'&&_0x2e98ba['role']==='assistant'&&_0x2e98ba['content'])_0x3a4740['thinking']++;else{if(_0x2e98ba['type']==='tool_use'&&_0x2e98ba['tool_name'])_0x3a4740['toolUses']++;else _0x2e98ba['type']==='tool_result'&&_0x2e98ba['tool_id']&&_0x3a4740['toolResults']++;}}}}}),_0x3a4740;}
|