@profoundlogic/coderflow-server 0.8.7 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/slack-service.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/slack.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 +476 -0
- package/dist/web-ui/public/admin.html +96 -17
- 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/docs/_sidebar.md +1 -0
- package/dist/web-ui/public/docs/admin/container-lifecycle.md +102 -0
- package/dist/web-ui/public/docs/admin/jira.md +20 -3
- package/dist/web-ui/public/docs/docsify-proxy-helper.js +1 -0
- package/dist/web-ui/public/docs/index.html +25 -18
- package/dist/web-ui/public/environments.html +1 -0
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.html +101 -2
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-client.transport-warning.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x1575c2=window['location']['pathname'],_0x3d5be0=_0x1575c2['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3d5be0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3d5be0[0x1]),_0x3d5be0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3546d0={}){const _0x3698b0=new URLSearchParams();_0x3546d0['userId']&&_0x3698b0['set']('userId',String(_0x3546d0['userId']));_0x3546d0['automation']&&_0x3698b0['set']('automation',String(_0x3546d0['automation']));const _0x8f2db3=API_BASE+'/tasks/stats'+(_0x3698b0['toString']()?'?'+_0x3698b0['toString']():''),_0xdd21f8=await fetch(_0x8f2db3);if(!_0xdd21f8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0xdd21f8['statusText']);return await _0xdd21f8['json']();},async 'getTasks'(_0x20fd1d={}){const _0x3ba158=new URLSearchParams();_0x20fd1d['status']&&_0x3ba158['set']('status',String(_0x20fd1d['status']));_0x20fd1d['environment']&&_0x3ba158['set']('environment',String(_0x20fd1d['environment']));_0x20fd1d['automation']&&_0x3ba158['set']('automation',String(_0x20fd1d['automation']));if(_0x20fd1d['include']){const _0x2d09c6=Array['isArray'](_0x20fd1d['include'])?_0x20fd1d['include']['join'](','):String(_0x20fd1d['include']);_0x2d09c6&&_0x3ba158['set']('include',_0x2d09c6);}_0x20fd1d['filter']&&_0x3ba158['set']('filter',String(_0x20fd1d['filter']));_0x20fd1d['page']&&_0x3ba158['set']('page',String(_0x20fd1d['page']));_0x20fd1d['limit']&&_0x3ba158['set']('limit',String(_0x20fd1d['limit']));_0x20fd1d['userId']&&_0x3ba158['set']('userId',String(_0x20fd1d['userId']));_0x20fd1d['search']&&_0x3ba158['set']('search',String(_0x20fd1d['search']));_0x20fd1d['includeChildTasks']&&_0x3ba158['set']('includeChildTasks','true');const _0xa4c25d=API_BASE+'/tasks'+(_0x3ba158['toString']()?'?'+_0x3ba158['toString']():''),_0x366033=await fetch(_0xa4c25d);if(!_0x366033['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x366033['statusText']);return await _0x366033['json']();},async 'getAutomations'(_0x46ab70={}){const _0x1f4a9f=new URLSearchParams();_0x46ab70['environment']&&_0x1f4a9f['set']('environment',String(_0x46ab70['environment']));const _0x2533db=await fetch(API_BASE+'/api/automations'+(_0x1f4a9f['toString']()?'?'+_0x1f4a9f['toString']():''));if(!_0x2533db['ok']){const _0x414195=await _0x2533db['json']()['catch'](()=>({}));throw new Error(_0x414195['message']||_0x414195['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2533db['statusText']);}return await _0x2533db['json']();},async 'getAutomation'(_0x34651d){const _0x3a60b3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34651d));if(!_0x3a60b3['ok']){const _0x4152f3=await _0x3a60b3['json']()['catch'](()=>({}));throw new Error(_0x4152f3['message']||_0x4152f3['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3a60b3['statusText']);}return await _0x3a60b3['json']();},async 'createAutomation'(_0x5393a4){const _0x130c1f=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5393a4||{})});if(!_0x130c1f['ok']){const _0x332fe3=await _0x130c1f['json']()['catch'](()=>({}));throw new Error(_0x332fe3['message']||_0x332fe3['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x130c1f['statusText']);}return await _0x130c1f['json']();},async 'updateAutomation'(_0x31ab15,_0x59fb4b){const _0x52b433=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31ab15),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59fb4b||{})});if(!_0x52b433['ok']){const _0x4d5b85=await _0x52b433['json']()['catch'](()=>({}));throw new Error(_0x4d5b85['message']||_0x4d5b85['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x52b433['statusText']);}return await _0x52b433['json']();},async 'deleteAutomation'(_0x42011d){const _0x2c29d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x42011d),{'method':'DELETE'});if(!_0x2c29d8['ok']){const _0x36670e=await _0x2c29d8['json']()['catch'](()=>({}));throw new Error(_0x36670e['message']||_0x36670e['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x2c29d8['statusText']);}return await _0x2c29d8['json']();},async 'triggerAutomation'(_0x37b5b5){const _0x3760bc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37b5b5)+'/trigger',{'method':'POST'});if(!_0x3760bc['ok']){const _0x283a0b=await _0x3760bc['json']()['catch'](()=>({}));throw new Error(_0x283a0b['message']||_0x283a0b['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3760bc['statusText']);}return await _0x3760bc['json']();},async 'setAutomationEnabled'(_0x56a114,_0x142e75){const _0x538c04=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56a114)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x142e75})});if(!_0x538c04['ok']){const _0x2a78cc=await _0x538c04['json']()['catch'](()=>({}));throw new Error(_0x2a78cc['message']||_0x2a78cc['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x538c04['statusText']);}return await _0x538c04['json']();},async 'getAutomationHistory'(_0x2a5521,_0x2d4dc0=0x32){const _0x360ef9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2a5521)+'/history?limit='+encodeURIComponent(String(_0x2d4dc0)));if(!_0x360ef9['ok']){const _0x332bff=await _0x360ef9['json']()['catch'](()=>({}));throw new Error(_0x332bff['message']||_0x332bff['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x360ef9['statusText']);}return await _0x360ef9['json']();},async 'getTask'(_0x31e633,_0x210022={}){const _0x33c97c=new URLSearchParams();if(_0x210022['include']){const _0x2bef44=Array['isArray'](_0x210022['include'])?_0x210022['include']['join'](','):String(_0x210022['include']);if(_0x2bef44)_0x33c97c['set']('include',_0x2bef44);}const _0x42c0cd=await fetch(API_BASE+'/tasks/'+_0x31e633+(_0x33c97c['toString']()?'?'+_0x33c97c['toString']():''));if(!_0x42c0cd['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x42c0cd['statusText']);return await _0x42c0cd['json']();},async 'getTaskResults'(_0x6038a1){const _0x2bcad7=await fetch(API_BASE+'/tasks/'+_0x6038a1+'/results');if(!_0x2bcad7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2bcad7['statusText']);return await _0x2bcad7['json']();},async 'getTaskPatches'(_0x43601e){const _0x566b74=await fetch(API_BASE+'/tasks/'+_0x43601e+'/patches');if(!_0x566b74['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x566b74['statusText']);return await _0x566b74['json']();},async 'getTaskAttachments'(_0x207572){const _0x281c16=await fetch(API_BASE+'/tasks/'+_0x207572+'/attachments');if(!_0x281c16['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x281c16['statusText']);return await _0x281c16['json']();},async 'uploadAttachments'(_0x28a68f,_0x1fe91a){const _0x55beb8=new FormData();for(const _0x4ab9d9 of _0x1fe91a){_0x55beb8['append']('attachments',_0x4ab9d9);}const _0x2efebf=await fetch(API_BASE+'/tasks/'+_0x28a68f+'/attachments',{'method':'POST','body':_0x55beb8});if(!_0x2efebf['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2efebf['statusText']);return await _0x2efebf['json']();},async 'isAINameGenerationAvailable'(){try{const _0x221b95=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x221b95['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x221b95['json']();}catch(_0x54a59c){return{'available':![],'reason':_0x54a59c['message']};}},async 'generateTaskName'(_0x2d98ec){try{const _0x4265c5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d98ec})});return await _0x4265c5['json']();}catch(_0x1b70fd){return{'success':![],'error':_0x1b70fd['message']};}},async 'createTask'(_0x485bfd){let _0x311ee3,_0x5a6db7={};if(_0x485bfd['files']&&_0x485bfd['files']['length']>0x0){const _0x125a86=new FormData();for(const [_0x36c34b,_0x4f66c6]of Object['entries'](_0x485bfd)){if(_0x36c34b!=='files'){if(_0x4f66c6==null)continue;typeof _0x4f66c6==='object'?_0x125a86['append'](_0x36c34b,JSON['stringify'](_0x4f66c6)):_0x125a86['append'](_0x36c34b,String(_0x4f66c6));}}for(const _0x40f222 of _0x485bfd['files']){_0x125a86['append']('attachments',_0x40f222);}_0x311ee3=_0x125a86;}else _0x5a6db7['Content-Type']='application/json',_0x311ee3=JSON['stringify'](_0x485bfd);const _0x1e9acd=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5a6db7,'body':_0x311ee3});if(!_0x1e9acd['ok']){const _0x4cf321=await _0x1e9acd['json'](),_0x53e194=new Error(_0x4cf321['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1e9acd['statusText']),{message:_0x2b405c,..._0x208c10}=_0x4cf321;Object['assign'](_0x53e194,_0x208c10);throw _0x53e194;}return await _0x1e9acd['json']();},async 'createTestTask'(_0x1bd828){const _0x575c5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bd828)});if(!_0x575c5f['ok']){const _0x234b12=await _0x575c5f['json']();throw new Error(_0x234b12['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x575c5f['statusText']);}return await _0x575c5f['json']();},async 'createEphemeralTest'(_0x4ed1ac){const _0x2a9e65=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ed1ac)});if(!_0x2a9e65['ok']){const _0x5e0687=await _0x2a9e65['json']();throw new Error(_0x5e0687['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2a9e65['statusText']);}return await _0x2a9e65['json']();},async 'createDeployTask'(_0x1da051){const _0x461a70=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1da051)});if(!_0x461a70['ok']){const _0xff9e75=await _0x461a70['json']();throw new Error(_0xff9e75['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x461a70['statusText']);}return await _0x461a70['json']();},async 'getEnvironments'(){const _0x2e6b22=await fetch(API_BASE+'/environments');if(!_0x2e6b22['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2e6b22['statusText']);return await _0x2e6b22['json']();},async 'getEnvironment'(_0x4f7c5a){const _0x36196c=await fetch(API_BASE+'/environments/'+_0x4f7c5a);if(!_0x36196c['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x36196c['statusText']);return await _0x36196c['json']();},async 'getEnvironmentRepoHistory'(_0x2ad0e2,_0x5dc3e9,_0x240516={}){if(!_0x2ad0e2||!_0x5dc3e9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1672b7=new URLSearchParams();if(_0x240516['limit'])_0x1672b7['set']('limit',String(_0x240516['limit']));if(_0x240516['offset'])_0x1672b7['set']('offset',String(_0x240516['offset']));if(_0x240516['search'])_0x1672b7['set']('search',String(_0x240516['search']));if(_0x240516['branch'])_0x1672b7['set']('branch',String(_0x240516['branch']));const _0x56acd0=API_BASE+'/environments/'+encodeURIComponent(_0x2ad0e2)+'/repos/'+encodeURIComponent(_0x5dc3e9)+'/git/history',_0x420012=await fetch(''+_0x56acd0+(_0x1672b7['toString']()?'?'+_0x1672b7['toString']():''));if(!_0x420012['ok']){const _0x5b9303=await _0x420012['json']()['catch'](()=>({}));throw new Error(_0x5b9303['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x420012['statusText']);}return await _0x420012['json']();},async 'getEnvironmentRepoCommit'(_0x35fda2,_0xf257e8,_0x526a1e){if(!_0x35fda2||!_0xf257e8||!_0x526a1e)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2fe329=API_BASE+'/environments/'+encodeURIComponent(_0x35fda2)+'/repos/'+encodeURIComponent(_0xf257e8)+'/git/commits/'+encodeURIComponent(_0x526a1e),_0x32c808=await fetch(_0x2fe329);if(!_0x32c808['ok']){const _0x28a080=await _0x32c808['json']()['catch'](()=>({}));throw new Error(_0x28a080['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x32c808['statusText']);}return await _0x32c808['json']();},async 'getEnvironmentRepoBranches'(_0x2c22ad,_0x4f7675){if(!_0x2c22ad||!_0x4f7675)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3fee68=API_BASE+'/environments/'+encodeURIComponent(_0x2c22ad)+'/repos/'+encodeURIComponent(_0x4f7675)+'/git/branches',_0x281e81=await fetch(_0x3fee68);if(!_0x281e81['ok']){const _0xd10b89=await _0x281e81['json']()['catch'](()=>({}));throw new Error(_0xd10b89['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x281e81['statusText']);}return await _0x281e81['json']();},async 'revertEnvironmentRepoCommit'(_0x55bb1d,_0x3b5e19,_0x565c4d,_0x10b2e9={}){if(!_0x55bb1d||!_0x3b5e19||!_0x565c4d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x274743=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x55bb1d)+'/repos/'+encodeURIComponent(_0x3b5e19)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x565c4d,..._0x10b2e9})});if(!_0x274743['ok']){const _0x5eb66d=await _0x274743['json']()['catch'](()=>({}));throw new Error(_0x5eb66d['message']||_0x5eb66d['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x274743['statusText']);}return await _0x274743['json']();},async 'getTemplates'(_0x4c458a={}){const _0x1e97e6=new URLSearchParams();if(_0x4c458a['include']){const _0x50bcfa=Array['isArray'](_0x4c458a['include'])?_0x4c458a['include']['join'](','):String(_0x4c458a['include']);if(_0x50bcfa)_0x1e97e6['set']('include',_0x50bcfa);}const _0x2cd469=await fetch(API_BASE+'/templates'+(_0x1e97e6['toString']()?'?'+_0x1e97e6['toString']():''));if(!_0x2cd469['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2cd469['statusText']);return await _0x2cd469['json']();},async 'getTemplatesForEnvironment'(_0x2c7a49,_0xc0200a={}){if(!_0x2c7a49)throw new Error('Environment\x20name\x20is\x20required');const _0x2a7427=new URLSearchParams();if(_0xc0200a['include']){const _0x793af4=Array['isArray'](_0xc0200a['include'])?_0xc0200a['include']['join'](','):String(_0xc0200a['include']);if(_0x793af4)_0x2a7427['set']('include',_0x793af4);}const _0x1bc1c9=await fetch(API_BASE+'/templates/'+_0x2c7a49+(_0x2a7427['toString']()?'?'+_0x2a7427['toString']():''));if(!_0x1bc1c9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x2c7a49+':\x20'+_0x1bc1c9['statusText']);return await _0x1bc1c9['json']();},async 'getTemplate'(_0x126ac9,_0x13515e,_0x213f60={}){if(!_0x126ac9||!_0x13515e)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x40b61f=new URLSearchParams();if(_0x213f60['include']){const _0x1a812e=Array['isArray'](_0x213f60['include'])?_0x213f60['include']['join'](','):String(_0x213f60['include']);if(_0x1a812e)_0x40b61f['set']('include',_0x1a812e);}const _0x227c7f=await fetch(API_BASE+'/templates/'+_0x126ac9+'/'+_0x13515e+(_0x40b61f['toString']()?'?'+_0x40b61f['toString']():''));if(!_0x227c7f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x227c7f['statusText']);return await _0x227c7f['json']();},async 'getTaskLogs'(_0x99de1c,_0x5c0c05={}){if(!_0x99de1c)throw new Error('Task\x20ID\x20is\x20required');const _0x2cef21=new URLSearchParams();_0x5c0c05['tail']&&_0x2cef21['set']('tail',String(_0x5c0c05['tail']));const _0x2c2e95=await fetch(API_BASE+'/tasks/'+_0x99de1c+'/logs'+(_0x2cef21['toString']()?'?'+_0x2cef21['toString']():''));if(!_0x2c2e95['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2c2e95['statusText']);return await _0x2c2e95['text']();},async 'getContainers'(){const _0x13b38e=await fetch(API_BASE+'/containers');if(!_0x13b38e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x13b38e['statusText']);return await _0x13b38e['json']();},async 'getContainer'(_0x58df97){const _0x1da928=await fetch(API_BASE+'/containers/'+_0x58df97);if(!_0x1da928['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1da928['statusText']);return await _0x1da928['json']();},async 'startInteractiveContainer'(_0x332190){const _0x57669e=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x332190)});if(!_0x57669e['ok']){const _0x119b0a=await _0x57669e['json']()['catch'](()=>({}));throw new Error(_0x119b0a['message']||'Failed\x20to\x20start\x20container:\x20'+_0x57669e['statusText']);}return await _0x57669e['json']();},async 'startContainerCodeServer'(_0xc0aaa6,_0xbb088={}){if(!_0xc0aaa6)throw new Error('Container\x20ID\x20is\x20required');const _0x261e93=new URLSearchParams();_0xbb088['theme']&&_0x261e93['set']('theme',_0xbb088['theme']);const _0x329bfb=await fetch(API_BASE+'/containers/'+_0xc0aaa6+'/code-server'+(_0x261e93['toString']()?'?'+_0x261e93['toString']():'')),_0xbf0fb8=await _0x329bfb['json']()['catch'](()=>({}));if(!_0x329bfb['ok'])throw new Error(_0xbf0fb8['message']||_0xbf0fb8['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x329bfb['statusText']);return _0xbf0fb8;},async 'stopContainer'(_0x58e40e){const _0x59492b=await fetch(API_BASE+'/containers/'+_0x58e40e,{'method':'DELETE'});if(!_0x59492b['ok']){const _0x4934d9=await _0x59492b['json']()['catch'](()=>({}));throw new Error(_0x4934d9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x59492b['statusText']);}return await _0x59492b['json']();},async 'stopTask'(_0xd16f65){if(!_0xd16f65)throw new Error('Task\x20ID\x20is\x20required');const _0x16a7f0=await fetch(API_BASE+'/tasks/'+_0xd16f65+'/stop',{'method':'POST'});if(!_0x16a7f0['ok']){const _0x585709=await _0x16a7f0['json']()['catch'](()=>({}));throw new Error(_0x585709['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x16a7f0['statusText']);}return await _0x16a7f0['json']();},async 'interruptTask'(_0xf2942f){if(!_0xf2942f)throw new Error('Task\x20ID\x20is\x20required');const _0x10a3fc=await fetch(API_BASE+'/tasks/'+_0xf2942f+'/interrupt',{'method':'POST'});if(!_0x10a3fc['ok']){const _0x46ca3a=await _0x10a3fc['json']()['catch'](()=>({}));throw new Error(_0x46ca3a['error']||_0x46ca3a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x10a3fc['statusText']);}return await _0x10a3fc['json']();},async 'startTask'(_0x28f3f7){if(!_0x28f3f7)throw new Error('Task\x20ID\x20is\x20required');const _0x3a9332=await fetch(API_BASE+'/tasks/'+_0x28f3f7+'/start',{'method':'POST'});if(!_0x3a9332['ok']){const _0x397cca=await _0x3a9332['json']()['catch'](()=>({}));throw new Error(_0x397cca['error']||'Failed\x20to\x20start\x20task:\x20'+_0x3a9332['statusText']);}return await _0x3a9332['json']();},async 'deleteTask'(_0x421ef9){if(!_0x421ef9)throw new Error('Task\x20ID\x20is\x20required');const _0x5cb625=await fetch(API_BASE+'/tasks/'+_0x421ef9,{'method':'DELETE'});if(!_0x5cb625['ok']){const _0x3b8a6c=await _0x5cb625['json']()['catch'](()=>({}));throw new Error(_0x3b8a6c['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5cb625['statusText']);}return await _0x5cb625['json']();},async 'refreshTasksFromDisk'(){const _0x5aa35d=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x5aa35d['ok']){const _0x52add6=await _0x5aa35d['json']()['catch'](()=>({}));throw new Error(_0x52add6['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x5aa35d['statusText']);}return await _0x5aa35d['json']();},async 'approveTask'(_0x36f664,_0x16c7e6={}){if(!_0x36f664)throw new Error('Task\x20ID\x20is\x20required');const _0x23396c={'commit_message':_0x16c7e6['commit_message']||'','pull':_0x16c7e6['pull']??![],'push':_0x16c7e6['push']??![],'conflict_strategy':_0x16c7e6['conflict_strategy']||'rebase'};_0x16c7e6['new_branch']&&(_0x23396c['new_branch']=_0x16c7e6['new_branch']);const _0x1c988d=await fetch(API_BASE+'/tasks/'+_0x36f664+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23396c)});if(!_0x1c988d['ok']){const _0x297e2f=await _0x1c988d['json']()['catch'](()=>({}));let _0x58c71e=_0x297e2f['error']||_0x297e2f['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1c988d['statusText'];if(_0x297e2f['results']&&Array['isArray'](_0x297e2f['results'])){const _0x40e963=_0x297e2f['results']['filter'](_0x1f06bf=>!_0x1f06bf['success']&&_0x1f06bf['error']);_0x40e963['length']>0x0&&(_0x58c71e=_0x40e963[0x0]['error']);}const _0x383297=new Error(_0x58c71e);_0x383297['hasConflicts']=_0x297e2f['results']?.['some'](_0x33a121=>_0x33a121['conflict'])||![];throw _0x383297;}return await _0x1c988d['json']();},async 'getPullRequestInfo'(_0x153930){if(!_0x153930)throw new Error('Task\x20ID\x20is\x20required');const _0x2ac041=await fetch(API_BASE+'/tasks/'+_0x153930+'/pull-request-info');if(!_0x2ac041['ok']){const _0xa0613=await _0x2ac041['json']()['catch'](()=>({}));throw new Error(_0xa0613['error']||_0xa0613['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x2ac041['statusText']);}return await _0x2ac041['json']();},async 'createPullRequests'(_0x4f65f4,_0x5e0b0e){if(!_0x4f65f4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5e0b0e||!Array['isArray'](_0x5e0b0e))throw new Error('repos\x20array\x20is\x20required');const _0x511424=await fetch(API_BASE+'/tasks/'+_0x4f65f4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x5e0b0e})});if(!_0x511424['ok']){const _0x4b27f0=await _0x511424['json']()['catch'](()=>({}));let _0x4f27bf=_0x4b27f0['error']||_0x4b27f0['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x511424['statusText'];if(_0x4b27f0['results']&&Array['isArray'](_0x4b27f0['results'])){const _0x9ec0ee=_0x4b27f0['results']['filter'](_0x464e2f=>!_0x464e2f['success']&&_0x464e2f['error']);_0x9ec0ee['length']>0x0&&(_0x4f27bf=_0x9ec0ee[0x0]['error']);}throw new Error(_0x4f27bf);}return await _0x511424['json']();},async 'syncRepos'(_0xe77124){if(!_0xe77124)throw new Error('Task\x20ID\x20is\x20required');const _0x23049d=await fetch(API_BASE+'/tasks/'+_0xe77124+'/sync-repos',{'method':'POST'});if(!_0x23049d['ok']){const _0x34c2c1=await _0x23049d['json']()['catch'](()=>({}));throw new Error(_0x34c2c1['error']||_0x34c2c1['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x23049d['statusText']);}return await _0x23049d['json']();},async 'getIbmiSyncInfo'(_0x2a0937){if(!_0x2a0937)throw new Error('Task\x20ID\x20is\x20required');const _0x16b796=await fetch(API_BASE+'/tasks/'+_0x2a0937+'/ibmi-sync-info');if(!_0x16b796['ok']){const _0x25df23=await _0x16b796['json']()['catch'](()=>({}));throw new Error(_0x25df23['error']||_0x25df23['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x16b796['json']();},async 'getSyncFiles'(_0x5ea8ea){if(!_0x5ea8ea)throw new Error('Task\x20ID\x20is\x20required');const _0x8d2546=await fetch(API_BASE+'/tasks/'+_0x5ea8ea+'/sync-to-ibmi/files');if(!_0x8d2546['ok']){const _0x21f580=await _0x8d2546['json']()['catch'](()=>({}));throw new Error(_0x21f580['error']||_0x21f580['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x8d2546['json']();},async 'syncToIbmi'(_0x53faa3,_0xa3af8f,_0x45a170=null,_0xb37f65=null,_0x5aeb6c=null){if(!_0x53faa3)throw new Error('Task\x20ID\x20is\x20required');const _0x590805={'library':_0xa3af8f};if(_0x45a170)_0x590805['user']=_0x45a170;if(_0xb37f65)_0x590805['password']=_0xb37f65;if(_0x5aeb6c)_0x590805['files']=_0x5aeb6c;const _0x52c9da=await fetch(API_BASE+'/tasks/'+_0x53faa3+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x590805)});if(!_0x52c9da['ok']){const _0x31f97e=await _0x52c9da['json']()['catch'](()=>({}));throw new Error(_0x31f97e['error']||_0x31f97e['message']||'Sync\x20failed');}return await _0x52c9da['json']();},async 'getIbmiSyncLog'(_0x1dde02){if(!_0x1dde02)throw new Error('Task\x20ID\x20is\x20required');const _0x47ee70=await fetch(API_BASE+'/tasks/'+_0x1dde02+'/ibmi-sync-log');if(!_0x47ee70['ok']){const _0x1d41a2=await _0x47ee70['json']()['catch'](()=>({}));throw new Error(_0x1d41a2['error']||_0x1d41a2['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x47ee70['json']();},async 'pullChanges'(_0x589ce4){if(!_0x589ce4)throw new Error('Task\x20ID\x20is\x20required');const _0x31e73b=await fetch(API_BASE+'/tasks/'+_0x589ce4+'/pull-changes',{'method':'POST'});if(!_0x31e73b['ok']){const _0x5238b3=await _0x31e73b['json']()['catch'](()=>({}));throw new Error(_0x5238b3['error']||_0x5238b3['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x31e73b['statusText']);}return await _0x31e73b['json']();},async 'readFile'(_0x1c363b,_0x27822a){if(!_0x1c363b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27822a)throw new Error('File\x20path\x20is\x20required');const _0x4c5c92=await fetch(API_BASE+'/tasks/'+_0x1c363b+'/files?path='+encodeURIComponent(_0x27822a));if(!_0x4c5c92['ok']){const _0x430404=await _0x4c5c92['json']()['catch'](()=>({}));throw new Error(_0x430404['error']||_0x430404['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4c5c92['statusText']);}return await _0x4c5c92['json']();},'getTaskFileDownloadUrl'(_0x2e6359,_0x36eab6){if(!_0x2e6359)throw new Error('Task\x20ID\x20is\x20required');if(!_0x36eab6)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2e6359+'/files/download?path='+encodeURIComponent(_0x36eab6);},async 'writeFile'(_0x1db349,_0x30a9fe,_0x40e899){if(!_0x1db349)throw new Error('Task\x20ID\x20is\x20required');if(!_0x30a9fe)throw new Error('File\x20path\x20is\x20required');if(_0x40e899===undefined)throw new Error('Content\x20is\x20required');const _0x5eea4d=await fetch(API_BASE+'/tasks/'+_0x1db349+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x30a9fe,'content':_0x40e899})});if(!_0x5eea4d['ok']){const _0x4861a7=await _0x5eea4d['json']()['catch'](()=>({}));throw new Error(_0x4861a7['error']||_0x4861a7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x5eea4d['statusText']);}return await _0x5eea4d['json']();},async 'uploadTaskFiles'(_0x20dae2,_0x38f457,_0x15bbc1){if(!_0x20dae2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38f457)throw new Error('Target\x20directory\x20is\x20required');if(!_0x15bbc1||_0x15bbc1['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x59a0a2=new FormData();_0x59a0a2['append']('targetDir',_0x38f457);for(const _0x463580 of _0x15bbc1){_0x59a0a2['append']('files',_0x463580,_0x463580['name']);}const _0x13abd3=await fetch(API_BASE+'/tasks/'+_0x20dae2+'/files/upload',{'method':'POST','body':_0x59a0a2});if(!_0x13abd3['ok']){const _0x1e2928=await _0x13abd3['json']()['catch'](()=>({}));throw new Error(_0x1e2928['error']||_0x1e2928['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x13abd3['statusText']);}return await _0x13abd3['json']();},async 'createDirectory'(_0x257347,_0x563e4f){if(!_0x257347)throw new Error('Task\x20ID\x20is\x20required');if(!_0x563e4f)throw new Error('Directory\x20path\x20is\x20required');const _0x414a52=await fetch(API_BASE+'/tasks/'+_0x257347+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x563e4f})});if(!_0x414a52['ok']){const _0x3313a3=await _0x414a52['json']()['catch'](()=>({}));throw new Error(_0x3313a3['error']||_0x3313a3['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x414a52['statusText']);}return await _0x414a52['json']();},async 'renamePath'(_0x52af8f,_0xe3d645,_0x3da508){if(!_0x52af8f)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe3d645)throw new Error('Source\x20path\x20is\x20required');if(!_0x3da508)throw new Error('Destination\x20path\x20is\x20required');const _0x1b0c11=await fetch(API_BASE+'/tasks/'+_0x52af8f+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0xe3d645,'newPath':_0x3da508})});if(!_0x1b0c11['ok']){const _0x3b0678=await _0x1b0c11['json']()['catch'](()=>({}));throw new Error(_0x3b0678['error']||_0x3b0678['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x1b0c11['statusText']);}return await _0x1b0c11['json']();},async 'deleteFile'(_0x5dcaf4,_0x2b8f28){if(!_0x5dcaf4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2b8f28)throw new Error('File\x20path\x20is\x20required');const _0x1fec5d=await fetch(API_BASE+'/tasks/'+_0x5dcaf4+'/files?path='+encodeURIComponent(_0x2b8f28),{'method':'DELETE'});if(!_0x1fec5d['ok']){const _0x5ba288=await _0x1fec5d['json']()['catch'](()=>({}));throw new Error(_0x5ba288['error']||_0x5ba288['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1fec5d['statusText']);}return await _0x1fec5d['json']();},async 'deleteDirectory'(_0x29cdac,_0x2cbfe6){if(!_0x29cdac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2cbfe6)throw new Error('Directory\x20path\x20is\x20required');const _0x53a0bc=await fetch(API_BASE+'/tasks/'+_0x29cdac+'/files/directory?path='+encodeURIComponent(_0x2cbfe6),{'method':'DELETE'});if(!_0x53a0bc['ok']){const _0x1c6743=await _0x53a0bc['json']()['catch'](()=>({}));throw new Error(_0x1c6743['error']||_0x1c6743['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x53a0bc['statusText']);}return await _0x53a0bc['json']();},async 'discardFile'(_0x3ae98a,_0x10bc82,_0x15fd0c){if(!_0x3ae98a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x10bc82)throw new Error('File\x20path\x20is\x20required');if(!_0x15fd0c)throw new Error('Repository\x20path\x20is\x20required');const _0x58c805=await fetch(API_BASE+'/tasks/'+_0x3ae98a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x10bc82,'repoPath':_0x15fd0c})});if(!_0x58c805['ok']){const _0xc2fd4=await _0x58c805['json']()['catch'](()=>({}));throw new Error(_0xc2fd4['error']||_0xc2fd4['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x58c805['statusText']);}return await _0x58c805['json']();},async 'followUpTask'(_0x4947a4,_0x1df9fc={}){if(!_0x4947a4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1df9fc['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0xb987f8,_0x3552fd={};if(_0x1df9fc['files']&&_0x1df9fc['files']['length']>0x0){const _0x221778=new FormData();_0x221778['append']('instructions',_0x1df9fc['instructions']);for(const _0x3a4366 of _0x1df9fc['files']){_0x221778['append']('attachments',_0x3a4366);}_0xb987f8=_0x221778;}else _0x3552fd['Content-Type']='application/json',_0xb987f8=JSON['stringify']({'instructions':_0x1df9fc['instructions']});const _0x18a15c=await fetch(API_BASE+'/tasks/'+_0x4947a4+'/follow-up',{'method':'POST','headers':_0x3552fd,'body':_0xb987f8});if(!_0x18a15c['ok']){const _0x587206=await _0x18a15c['json']()['catch'](()=>({}));throw new Error(_0x587206['error']||_0x587206['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x18a15c['statusText']);}return await _0x18a15c['json']();},async 'getTaskRewindPoints'(_0x423e0f){if(!_0x423e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x5199a4=await fetch(API_BASE+'/tasks/'+_0x423e0f+'/rewind-points');if(!_0x5199a4['ok']){const _0x482362=await _0x5199a4['json']()['catch'](()=>({}));throw new Error(_0x482362['error']||_0x482362['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x5199a4['statusText']);}return await _0x5199a4['json']();},async 'rewindTask'(_0x29a645,_0x207dbc={}){if(!_0x29a645)throw new Error('Task\x20ID\x20is\x20required');const _0xa7f19d=Number['isInteger'](_0x207dbc['targetFollowUpCount'])?_0x207dbc['targetFollowUpCount']:0x0,_0x3d924e={'targetFollowUpCount':_0xa7f19d};typeof _0x207dbc['instructions']==='string'&&_0x207dbc['instructions']['trim']()&&(_0x3d924e['instructions']=_0x207dbc['instructions']['trim']());typeof _0x207dbc['rewindFiles']==='boolean'&&(_0x3d924e['rewindFiles']=_0x207dbc['rewindFiles']);const _0x5520a8=await fetch(API_BASE+'/tasks/'+_0x29a645+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d924e)});if(!_0x5520a8['ok']){const _0x2ca505=await _0x5520a8['json']()['catch'](()=>({}));throw new Error(_0x2ca505['error']||_0x2ca505['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5520a8['statusText']);}return await _0x5520a8['json']();},async 'login'(_0x4eca7e,_0x5b1b7d){const _0x106f9c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4eca7e,'password':_0x5b1b7d})});if(!_0x106f9c['ok']){const _0x3c4f68=await _0x106f9c['json']();throw new Error(_0x3c4f68['message']||'Login\x20failed');}return await _0x106f9c['json']();},async 'logout'(){const _0x538f13=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x538f13['ok']){const _0x13cc47=await _0x538f13['json']();throw new Error(_0x13cc47['message']||'Logout\x20failed');}return await _0x538f13['json']();},async 'getCurrentUser'(){const _0x15e27a=await fetch(API_BASE+'/auth/me');if(!_0x15e27a['ok'])throw new Error('Not\x20authenticated');const _0x359c67=await _0x15e27a['json']();return _0x359c67['user'];},async 'getRolesInfo'(){const _0x42aef4=await fetch(API_BASE+'/users/roles');if(!_0x42aef4['ok']){const _0x58d475=await _0x42aef4['json']();throw new Error(_0x58d475['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42aef4['json']();},async 'getUsers'(){const _0x522437=await fetch(API_BASE+'/users');if(!_0x522437['ok']){const _0x2d811e=await _0x522437['json']();throw new Error(_0x2d811e['message']||'Failed\x20to\x20get\x20users');}return await _0x522437['json']();},async 'getUser'(_0x292a08){const _0x3e1142=await fetch(API_BASE+'/users/'+_0x292a08);if(!_0x3e1142['ok']){const _0x47acd8=await _0x3e1142['json']();throw new Error(_0x47acd8['message']||'Failed\x20to\x20get\x20user');}return await _0x3e1142['json']();},async 'createUser'(_0x27c309){const _0x3a7221=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x27c309)});if(!_0x3a7221['ok']){const _0x7de1e1=await _0x3a7221['json']();throw new Error(_0x7de1e1['message']||'Failed\x20to\x20create\x20user');}return await _0x3a7221['json']();},async 'updateUser'(_0x23c5c5,_0xd501da){const _0x5c2fb0=await fetch(API_BASE+'/users/'+_0x23c5c5,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd501da)});if(!_0x5c2fb0['ok']){const _0x4e78e7=await _0x5c2fb0['json']();throw new Error(_0x4e78e7['message']||'Failed\x20to\x20update\x20user');}return await _0x5c2fb0['json']();},async 'deleteUser'(_0x405012){const _0x1c7052=await fetch(API_BASE+'/users/'+_0x405012,{'method':'DELETE'});if(!_0x1c7052['ok']){const _0x4f3b71=await _0x1c7052['json']();throw new Error(_0x4f3b71['message']||'Failed\x20to\x20delete\x20user');}return await _0x1c7052['json']();},async 'stopAllContainers'(){const _0x503e6c=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3a3e64=await _0x503e6c['json']()['catch'](()=>({}));if(!_0x503e6c['ok'])throw new Error(_0x3a3e64['message']||_0x3a3e64['error']||'Failed\x20to\x20stop\x20containers');return _0x3a3e64;},async 'removeStoppedContainers'(){const _0x19cb7f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bf9ed=await _0x19cb7f['json']()['catch'](()=>({}));if(!_0x19cb7f['ok'])throw new Error(_0x2bf9ed['message']||_0x2bf9ed['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bf9ed;},async 'pruneDockerResources'(){const _0xca26c4=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xd73b8e=await _0xca26c4['json']()['catch'](()=>({}));if(!_0xca26c4['ok'])throw new Error(_0xd73b8e['message']||_0xd73b8e['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xd73b8e;},async 'getUpdateSettings'(){const _0x14a1ce=await fetch(API_BASE+'/health/update-settings'),_0x49839e=await _0x14a1ce['json']()['catch'](()=>({}));if(!_0x14a1ce['ok'])throw new Error(_0x49839e['message']||_0x49839e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x49839e;},async 'applyServerUpdate'(_0x2f4097){const _0xaf364d=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2f4097})}),_0x5c938c=await _0xaf364d['json']()['catch'](()=>({}));if(!_0xaf364d['ok']){const _0x14786e=new Error(_0x5c938c['message']||_0x5c938c['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x5c938c['output']!==undefined)_0x14786e['output']=_0x5c938c['output'];if(_0x5c938c['error']!==undefined)_0x14786e['commandError']=_0x5c938c['error'];throw _0x14786e;}return _0x5c938c;},async 'restartServer'(){const _0x5ac725=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0xc1174=await _0x5ac725['json']()['catch'](()=>({}));if(!_0x5ac725['ok'])throw new Error(_0xc1174['message']||_0xc1174['error']||'Failed\x20to\x20restart\x20server');return _0xc1174;},async 'createPasswordToken'(_0x2ab1da,_0x4669c8='setup',_0x47aca7=![]){const _0x2db658=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab1da,'type':_0x4669c8,'sendEmail':_0x47aca7})});if(!_0x2db658['ok']){const _0x373432=await _0x2db658['json']();throw new Error(_0x373432['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2db658['json']();},async 'getEmailConfig'(){const _0x588945=await fetch(API_BASE+'/password/email-config');if(!_0x588945['ok']){const _0x4f2388=await _0x588945['json']();throw new Error(_0x4f2388['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x588945['json']();},async 'updateTaskName'(_0x568e9c,_0x1a3142){const _0x5a4882=await fetch(API_BASE+'/tasks/'+_0x568e9c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1a3142})});if(!_0x5a4882['ok']){const _0x168bbe=await _0x5a4882['json']();throw new Error(_0x168bbe['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a4882['json']();},async 'pinTask'(_0x258ed2,_0x408d46,_0x2c058e=null){if(!_0x258ed2)throw new Error('Task\x20ID\x20is\x20required');const _0x4b2fbf={'pinned':_0x408d46};_0x2c058e&&_0x2c058e['length']>0x0&&(_0x4b2fbf['additionalTaskIds']=_0x2c058e);const _0x56e6b7=await fetch(API_BASE+'/tasks/'+_0x258ed2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b2fbf)});if(!_0x56e6b7['ok']){const _0x5467cb=await _0x56e6b7['json']();throw new Error(_0x5467cb['error']||'Failed\x20to\x20pin\x20task');}return await _0x56e6b7['json']();},async 'setTaskWinner'(_0x209e25,_0x400168,_0x1f043a=[]){if(!_0x209e25)throw new Error('Task\x20ID\x20is\x20required');const _0x26b77a=await fetch(API_BASE+'/tasks/'+_0x209e25+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x400168,'siblings':_0x1f043a})});if(!_0x26b77a['ok']){const _0x1cd2bb=await _0x26b77a['json']();throw new Error(_0x1cd2bb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x26b77a['json']();},async 'setTaskLoser'(_0x2a578a,_0x3627f6){if(!_0x2a578a)throw new Error('Task\x20ID\x20is\x20required');const _0x10fa45=await fetch(API_BASE+'/tasks/'+_0x2a578a+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3627f6})});if(!_0x10fa45['ok']){const _0x3cbbda=await _0x10fa45['json']();throw new Error(_0x3cbbda['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x10fa45['json']();},async 'createTaskGroup'(_0x30bb49){const _0x3a3373=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30bb49)});if(!_0x3a3373['ok']){const _0x535ada=await _0x3a3373['json']();throw new Error(_0x535ada['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x3a3373['json']();},async 'getTaskGroups'(_0x21958b={}){const _0x59169f=new URLSearchParams();if(_0x21958b['userId'])_0x59169f['set']('userId',String(_0x21958b['userId']));if(_0x21958b['status'])_0x59169f['set']('status',String(_0x21958b['status']));if(_0x21958b['limit'])_0x59169f['set']('limit',String(_0x21958b['limit']));const _0x561d47=API_BASE+'/tasks/groups'+(_0x59169f['toString']()?'?'+_0x59169f['toString']():''),_0x47278c=await fetch(_0x561d47);if(!_0x47278c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x47278c['json']();},async 'getTaskGroup'(_0x24cbdf){const _0x3853d8=await fetch(API_BASE+'/tasks/groups/'+_0x24cbdf);if(!_0x3853d8['ok']){const _0x4defe7=await _0x3853d8['json']();throw new Error(_0x4defe7['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3853d8['json']();},async 'updateTaskGroup'(_0x332396,_0x4bdf0f,_0x1fe4a2){const _0x250821=await fetch(API_BASE+'/tasks/'+_0x332396+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4bdf0f,'groupIndex':_0x1fe4a2})});if(!_0x250821['ok']){const _0x2b3c46=await _0x250821['json']();throw new Error(_0x2b3c46['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x250821['json']();},async 'removeTaskFromGroup'(_0x191e09){return this['updateTaskGroup'](_0x191e09,null,null);},async 'deleteTaskGroup'(_0x30de95,_0x59eb80=![]){const _0x4869af=_0x59eb80?'?deleteTasks=true':'',_0x4e71c1=await fetch(API_BASE+'/tasks/groups/'+_0x30de95+_0x4869af,{'method':'DELETE'});if(!_0x4e71c1['ok']){const _0x2db073=await _0x4e71c1['json']();throw new Error(_0x2db073['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x2018f7,_0xd14cbf){const _0x3ea58a=await fetch(API_BASE+'/tasks/groups/'+_0x2018f7+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0xd14cbf})});if(!_0x3ea58a['ok']){const _0x113df7=await _0x3ea58a['json']();throw new Error(_0x113df7['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ea58a['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x2fd182){if(!_0x2fd182)throw new Error('Task\x20ID\x20is\x20required');const _0x4a98e9=await fetch(API_BASE+'/tasks/'+_0x2fd182+'/comments');if(!_0x4a98e9['ok']){const _0x911fed=await _0x4a98e9['json']()['catch'](()=>({}));throw new Error(_0x911fed['error']||'Failed\x20to\x20get\x20comments');}return await _0x4a98e9['json']();},async 'addComment'(_0x1bbf8d,_0x4565e5){if(!_0x1bbf8d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4565e5)throw new Error('Comment\x20content\x20is\x20required');const _0x167ae1=await fetch(API_BASE+'/tasks/'+_0x1bbf8d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4565e5})});if(!_0x167ae1['ok']){const _0x1a4cd0=await _0x167ae1['json']()['catch'](()=>({}));throw new Error(_0x1a4cd0['error']||'Failed\x20to\x20add\x20comment');}return await _0x167ae1['json']();},async 'updateComment'(_0x160e2a,_0x4e08fe,_0x1cedcb){if(!_0x160e2a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e08fe)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1cedcb)throw new Error('Comment\x20content\x20is\x20required');const _0x37f933=await fetch(API_BASE+'/tasks/'+_0x160e2a+'/comments/'+_0x4e08fe,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1cedcb})});if(!_0x37f933['ok']){const _0x5e18f4=await _0x37f933['json']()['catch'](()=>({}));throw new Error(_0x5e18f4['error']||'Failed\x20to\x20update\x20comment');}return await _0x37f933['json']();},async 'deleteComment'(_0x48f968,_0xce8cc4){if(!_0x48f968)throw new Error('Task\x20ID\x20is\x20required');if(!_0xce8cc4)throw new Error('Comment\x20ID\x20is\x20required');const _0xc34ce8=await fetch(API_BASE+'/tasks/'+_0x48f968+'/comments/'+_0xce8cc4,{'method':'DELETE'});if(!_0xc34ce8['ok']){const _0x19674c=await _0xc34ce8['json']()['catch'](()=>({}));throw new Error(_0x19674c['error']||'Failed\x20to\x20delete\x20comment');}return await _0xc34ce8['json']();},async 'createObjective'(_0x1a5ba7){const _0x3953b6={'objective':!![],'name':_0x1a5ba7['name']||'','environment':_0x1a5ba7['environment']||null,'agents':_0x1a5ba7['agents']||[],'branches':_0x1a5ba7['branches']||{},'isPinned':_0x1a5ba7['isPinned']||![],'parentObjectiveId':_0x1a5ba7['parentObjectiveId']||null,'env_vars':_0x1a5ba7['envVars']||{},'parameters':{'instructions':_0x1a5ba7['instructions']||''},'files':_0x1a5ba7['files']||[],'jira':_0x1a5ba7['jira']||null};return this['createTask'](_0x3953b6);},async 'updateObjective'(_0x21653f,_0x29992c,_0x1f57cf=[],_0x5d470f=[]){let _0x59ae3c,_0x502078={};const _0xf87e79={..._0x29992c};_0x5d470f&&_0x5d470f['length']>0x0&&(_0xf87e79['removeAttachments']=_0x5d470f);if(_0x1f57cf&&_0x1f57cf['length']>0x0){const _0x55f7b2=new FormData();for(const [_0x2f23a5,_0x3b771d]of Object['entries'](_0xf87e79)){if(_0x3b771d==null)continue;typeof _0x3b771d==='object'?_0x55f7b2['append'](_0x2f23a5,JSON['stringify'](_0x3b771d)):_0x55f7b2['append'](_0x2f23a5,String(_0x3b771d));}for(const _0x58a13e of _0x1f57cf){_0x55f7b2['append']('attachments',_0x58a13e);}_0x59ae3c=_0x55f7b2;}else _0x502078['Content-Type']='application/json',_0x59ae3c=JSON['stringify'](_0xf87e79);const _0x12a48a=await fetch(API_BASE+'/tasks/'+_0x21653f,{'method':'PATCH','headers':_0x502078,'body':_0x59ae3c});if(!_0x12a48a['ok']){const _0x117323=await _0x12a48a['json']();throw new Error(_0x117323['error']||'Failed\x20to\x20update\x20objective');}return await _0x12a48a['json']();},async 'deleteObjective'(_0x4dd611){return this['deleteTask'](_0x4dd611);},async 'launchObjective'(_0x32d235,_0x5824c4={}){const _0xaf41f3=await fetch(API_BASE+'/tasks/'+_0x32d235+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5824c4)});if(!_0xaf41f3['ok']){const _0x2895eb=await _0xaf41f3['json']();throw new Error(_0x2895eb['error']||'Failed\x20to\x20launch\x20objective');}return await _0xaf41f3['json']();},async 'getObjectiveAttachments'(_0x1cf694){return this['getTaskAttachments'](_0x1cf694);},async 'createJudgeTask'({environment:_0x115499,judgeAgent:_0xc6bb73,groupId:_0x445d92,taskIds:_0x13d231,judgeCustomInstructions:_0x9568ac,isPinned:_0x2e0ae9}){const _0x355605=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x115499,'judgeAgent':_0xc6bb73,'groupId':_0x445d92,'taskIds':_0x13d231,'judgeCustomInstructions':_0x9568ac,'isPinned':_0x2e0ae9})});if(!_0x355605['ok']){const _0x295452=await _0x355605['json']();throw new Error(_0x295452['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x355605['json']();},async 'getJudgeTasks'(_0x36fcfb){const _0x3b99e3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x36fcfb));if(!_0x3b99e3['ok']){const _0x569366=await _0x3b99e3['json']();throw new Error(_0x569366['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x3b99e3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ced1a,_0x48f738,_0x405950=''){const _0x145110=await fetch(API_BASE+'/tasks/'+_0x4ced1a+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x48f738,'customPreamble':_0x405950})});if(!_0x145110['ok']){const _0x36a2e5=await _0x145110['json']();throw new Error(_0x36a2e5['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x145110['json']();},async 'getJiraConfig'(){const _0x139820=await fetch(API_BASE+'/jira/config');if(!_0x139820['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x139820['json']();},async 'getJiraIssue'(_0x3d9769){const _0x1dc8b7=await fetch(API_BASE+'/jira/issues/'+_0x3d9769);if(!_0x1dc8b7['ok']){const _0x51835f=await _0x1dc8b7['json']()['catch'](()=>({}));throw new Error(_0x51835f['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1dc8b7['statusText']);}return await _0x1dc8b7['json']();},async 'searchJiraIssues'(_0x10ef8a,_0x4aded2=0x14){const _0x81d13f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x10ef8a,'maxResults':_0x4aded2})});if(!_0x81d13f['ok']){const _0x5263d7=await _0x81d13f['json']()['catch'](()=>({}));throw new Error(_0x5263d7['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x81d13f['statusText']);}return await _0x81d13f['json']();},async 'postJiraComment'(_0x49c0ad,_0x45b5a8){const _0x4198a1=await fetch(API_BASE+'/jira/issues/'+_0x49c0ad+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x45b5a8})});if(!_0x4198a1['ok']){const _0xb346f3=await _0x4198a1['json']()['catch'](()=>({}));throw new Error(_0xb346f3['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4198a1['statusText']);}return await _0x4198a1['json']();},async 'getJiraComments'(_0x400c82){const _0xc9b72a=await fetch(API_BASE+'/jira/issues/'+_0x400c82+'/comments');if(!_0xc9b72a['ok']){const _0x21c6f2=await _0xc9b72a['json']()['catch'](()=>({}));throw new Error(_0x21c6f2['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0xc9b72a['statusText']);}return await _0xc9b72a['json']();},async 'promptParameter'({environment:_0x4500c4,command:_0x7ab843,parser:parser='json'}){const _0xd55b3b=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4500c4,'command':_0x7ab843,'parser':parser})});if(!_0xd55b3b['ok']){const _0x532bf5=await _0xd55b3b['json']()['catch'](()=>({}));throw new Error(_0x532bf5['message']||_0x532bf5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xd55b3b['statusText']);}return await _0xd55b3b['json']();},async 'promptParameterStream'(_0x589855,_0x86256b){const _0x4b3bfb=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x589855)});if(!_0x4b3bfb['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b3bfb['statusText']);const _0x269171=_0x4b3bfb['body']['getReader'](),_0x5c3f08=new TextDecoder();let _0x524bb6='';return new Promise((_0x2cae59,_0x43953f)=>{const _0x227f23=async()=>{try{const {done:_0x3cc8b,value:_0x4a828d}=await _0x269171['read']();if(_0x3cc8b)return;_0x524bb6+=_0x5c3f08['decode'](_0x4a828d,{'stream':!![]});const _0x53b7c1=_0x524bb6['split']('\x0a\x0a');_0x524bb6=_0x53b7c1['pop']()||'';for(const _0x50a460 of _0x53b7c1){if(!_0x50a460['trim']())continue;const _0x4e6b27=_0x50a460['split']('\x0a');let _0x3393de='message',_0xd0f98c='';for(const _0x56417b of _0x4e6b27){if(_0x56417b['startsWith']('event:'))_0x3393de=_0x56417b['substring'](0x6)['trim']();else _0x56417b['startsWith']('data:')&&(_0xd0f98c=_0x56417b['substring'](0x5)['trim']());}if(!_0xd0f98c)continue;try{const _0x259a2c=JSON['parse'](_0xd0f98c);if(_0x3393de==='progress'&&_0x86256b)_0x86256b(_0x259a2c['stage'],_0x259a2c['message']);else{if(_0x3393de==='result'){_0x2cae59(_0x259a2c);return;}else{if(_0x3393de==='error'){let _0x58c42c=_0x259a2c['message']||_0x259a2c['error']||'Prompt\x20command\x20failed';_0x259a2c['rawOutput']&&(_0x58c42c+='\x0a\x0aRaw\x20output:\x0a'+_0x259a2c['rawOutput']);_0x43953f(new Error(_0x58c42c));return;}}}}catch(_0x53d1b7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x53d1b7),console['error']('Event\x20type:',_0x3393de),console['error']('Event\x20data:',_0xd0f98c),console['error']('First\x20200\x20chars:',_0xd0f98c['substring'](0x0,0xc8)),_0x43953f(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x53d1b7['message']+'\x0a\x0aData:\x20'+_0xd0f98c['substring'](0x0,0x1f4)));return;}}_0x227f23();}catch(_0x189ef1){_0x43953f(_0x189ef1);}};_0x227f23();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3680e0){const _0x47a625=await fetch(''+API_BASE+_0x3680e0);if(!_0x47a625['ok']){const _0x137bc4=await _0x47a625['json']()['catch'](()=>({'error':_0x47a625['statusText']})),_0x35202d=new Error(_0x137bc4['error']||_0x137bc4['message']||_0x47a625['statusText']);if(_0x137bc4['detail']!==undefined)_0x35202d['detail']=_0x137bc4['detail'];throw _0x35202d;}return await _0x47a625['json']();},async 'post'(_0x40f7b5,_0x5906c8){const _0x40eb7f=await fetch(''+API_BASE+_0x40f7b5,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5906c8)});if(!_0x40eb7f['ok']){const _0x5e84fb=await _0x40eb7f['json']()['catch'](()=>({'error':_0x40eb7f['statusText']})),_0x1db70f=new Error(_0x5e84fb['error']||_0x5e84fb['message']||_0x40eb7f['statusText']);if(_0x5e84fb['detail']!==undefined)_0x1db70f['detail']=_0x5e84fb['detail'];throw _0x1db70f;}return await _0x40eb7f['json']();},async 'put'(_0x2e0533,_0x10c703){const _0x4c76d8=await fetch(''+API_BASE+_0x2e0533,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c703)});if(!_0x4c76d8['ok']){const _0xf9215f=await _0x4c76d8['json']()['catch'](()=>({'error':_0x4c76d8['statusText']})),_0x95d78e=new Error(_0xf9215f['error']||_0xf9215f['message']||_0x4c76d8['statusText']);if(_0xf9215f['detail']!==undefined)_0x95d78e['detail']=_0xf9215f['detail'];throw _0x95d78e;}return await _0x4c76d8['json']();},async 'delete'(_0x24f5c0,_0xdce819){const _0x30ce4d={'method':'DELETE'};_0xdce819&&(_0x30ce4d['headers']={'Content-Type':'application/json'},_0x30ce4d['body']=JSON['stringify'](_0xdce819));const _0x152284=await fetch(''+API_BASE+_0x24f5c0,_0x30ce4d);if(!_0x152284['ok']){const _0x185601=await _0x152284['json']()['catch'](()=>({'error':_0x152284['statusText']})),_0xa4b9b=new Error(_0x185601['error']||_0x185601['message']||_0x152284['statusText']);if(_0x185601['detail']!==undefined)_0xa4b9b['detail']=_0x185601['detail'];throw _0xa4b9b;}return await _0x152284['json']();},async 'getSkills'(){const _0x370159=await fetch(API_BASE+'/skills');if(!_0x370159['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x370159['statusText']);return await _0x370159['json']();},async 'getSkill'(_0x110ac1){const _0x712089=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x110ac1));if(!_0x712089['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x712089['statusText']);return await _0x712089['json']();},async 'createSkill'(_0x26a896){const _0x2d6767=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26a896)});if(!_0x2d6767['ok']){const _0x1b1c7b=await _0x2d6767['json']()['catch'](()=>({'error':_0x2d6767['statusText']})),_0x41586b=new Error(_0x1b1c7b['error']||_0x1b1c7b['message']||_0x2d6767['statusText']);if(_0x1b1c7b['detail']!==undefined)_0x41586b['detail']=_0x1b1c7b['detail'];throw _0x41586b;}return await _0x2d6767['json']();},async 'updateSkill'(_0xe3bc3b,_0x1bc545){const _0x22d0a9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xe3bc3b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bc545)});if(!_0x22d0a9['ok']){const _0x5b3324=await _0x22d0a9['json']()['catch'](()=>({'error':_0x22d0a9['statusText']})),_0x417ff9=new Error(_0x5b3324['error']||_0x5b3324['message']||_0x22d0a9['statusText']);if(_0x5b3324['detail']!==undefined)_0x417ff9['detail']=_0x5b3324['detail'];throw _0x417ff9;}return await _0x22d0a9['json']();},async 'deleteSkill'(_0xbeb4e7){const _0x279975=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xbeb4e7),{'method':'DELETE'});if(!_0x279975['ok']){const _0x158204=await _0x279975['json']()['catch'](()=>({'error':_0x279975['statusText']})),_0x43bcb9=new Error(_0x158204['error']||_0x158204['message']||_0x279975['statusText']);if(_0x158204['detail']!==undefined)_0x43bcb9['detail']=_0x158204['detail'];throw _0x43bcb9;}return await _0x279975['json']();},async 'getSkillFile'(_0x762216,_0xf1c4f2){const _0x39a974=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x762216)+'/files/'+_0xf1c4f2);if(!_0x39a974['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x39a974['statusText']);return await _0x39a974['json']();},async 'saveSkillFile'(_0x4e1ab1,_0x122a15,_0x59183d){const _0x44bd5d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4e1ab1)+'/files/'+_0x122a15,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x59183d})});if(!_0x44bd5d['ok']){const _0x4e667b=await _0x44bd5d['json']()['catch'](()=>({'error':_0x44bd5d['statusText']})),_0x4d9361=new Error(_0x4e667b['error']||_0x4e667b['message']||_0x44bd5d['statusText']);if(_0x4e667b['detail']!==undefined)_0x4d9361['detail']=_0x4e667b['detail'];throw _0x4d9361;}return await _0x44bd5d['json']();},async 'deleteSkillFile'(_0x45ed0b,_0x1d8f00){const _0x4c043d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x45ed0b)+'/files/'+_0x1d8f00,{'method':'DELETE'});if(!_0x4c043d['ok']){const _0x567a05=await _0x4c043d['json']()['catch'](()=>({'error':_0x4c043d['statusText']})),_0x32f569=new Error(_0x567a05['error']||_0x567a05['message']||_0x4c043d['statusText']);if(_0x567a05['detail']!==undefined)_0x32f569['detail']=_0x567a05['detail'];throw _0x32f569;}return await _0x4c043d['json']();},async 'pullSkills'(){const _0xf9bff5=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0xf9bff5['ok']){const _0x1760d5=await _0xf9bff5['json']()['catch'](()=>({'error':_0xf9bff5['statusText']})),_0x181b57=new Error(_0x1760d5['error']||_0x1760d5['message']||_0xf9bff5['statusText']);if(_0x1760d5['detail']!==undefined)_0x181b57['detail']=_0x1760d5['detail'];throw _0x181b57;}return await _0xf9bff5['json']();},async 'commitSkills'(_0x296c91,_0x42ed6b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x42ed6b,_0x3b5deb=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x296c91,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3b5deb['ok']){const _0xa1242a=await _0x3b5deb['json']()['catch'](()=>({'error':_0x3b5deb['statusText']})),_0x565e23=new Error(_0xa1242a['error']||_0xa1242a['message']||_0x3b5deb['statusText']);if(_0xa1242a['detail']!==undefined)_0x565e23['detail']=_0xa1242a['detail'];throw _0x565e23;}return await _0x3b5deb['json']();},async 'discardSkillsChanges'(){const _0x2c0ae6=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2c0ae6['ok']){const _0x4ad962=await _0x2c0ae6['json']()['catch'](()=>({'error':_0x2c0ae6['statusText']})),_0x288d1c=new Error(_0x4ad962['error']||_0x4ad962['message']||_0x2c0ae6['statusText']);if(_0x4ad962['detail']!==undefined)_0x288d1c['detail']=_0x4ad962['detail'];throw _0x288d1c;}return await _0x2c0ae6['json']();},async 'getSkillCatalog'(){const _0x124bb0=await fetch(API_BASE+'/external-skills/catalog');if(!_0x124bb0['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x124bb0['statusText']);return await _0x124bb0['json']();},async 'getImportedSkillsRegistry'(){const _0x291e15=await fetch(API_BASE+'/external-skills/registry');if(!_0x291e15['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x291e15['statusText']);return await _0x291e15['json']();},async 'importCatalogSkill'(_0x2eeef9){const _0x5b0466=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2eeef9})});if(!_0x5b0466['ok']){const _0x441b05=await _0x5b0466['json']()['catch'](()=>({'error':_0x5b0466['statusText']})),_0x1873fd=new Error(_0x441b05['error']||_0x441b05['message']||_0x5b0466['statusText']);if(_0x441b05['detail']!==undefined)_0x1873fd['detail']=_0x441b05['detail'];throw _0x1873fd;}return await _0x5b0466['json']();},async 'importSkillFromGit'(_0x3818e3,_0x5a3467,_0x3a2e0f='main',_0x291088=null){const _0x25df2e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3818e3,'skillPath':_0x5a3467,'branch':_0x3a2e0f,'skillId':_0x291088})});if(!_0x25df2e['ok']){const _0x12b205=await _0x25df2e['json']()['catch'](()=>({'error':_0x25df2e['statusText']})),_0x9d9d24=new Error(_0x12b205['error']||_0x12b205['message']||_0x25df2e['statusText']);if(_0x12b205['detail']!==undefined)_0x9d9d24['detail']=_0x12b205['detail'];throw _0x9d9d24;}return await _0x25df2e['json']();},async 'probeMarketplace'(_0x6f13ad,_0x178a8a='main'){const _0x543a55=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x6f13ad,'branch':_0x178a8a})});if(!_0x543a55['ok']){const _0x471d3b=await _0x543a55['json']()['catch'](()=>({'error':_0x543a55['statusText']})),_0x5d5387=new Error(_0x471d3b['error']||_0x471d3b['message']||_0x543a55['statusText']);if(_0x471d3b['detail']!==undefined)_0x5d5387['detail']=_0x471d3b['detail'];throw _0x5d5387;}return await _0x543a55['json']();},async 'importMarketplaceBundle'(_0x4165e4,_0x58575e,_0x4a6d83,_0x5b8c43=null){const _0x50c97d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4165e4,'branch':_0x58575e,'bundleId':_0x4a6d83,'selectedSkills':_0x5b8c43})});if(!_0x50c97d['ok']){const _0x178bbe=await _0x50c97d['json']()['catch'](()=>({'error':_0x50c97d['statusText']})),_0xfba7b6=new Error(_0x178bbe['error']||_0x178bbe['message']||_0x50c97d['statusText']);if(_0x178bbe['detail']!==undefined)_0xfba7b6['detail']=_0x178bbe['detail'];throw _0xfba7b6;}return await _0x50c97d['json']();},async 'importSkillFromFolder'(_0x32a3bb,_0x36e4d5=null){const _0x117cfd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x32a3bb,'skillId':_0x36e4d5})});if(!_0x117cfd['ok']){const _0x12190f=await _0x117cfd['json']()['catch'](()=>({'error':_0x117cfd['statusText']})),_0x46f3fc=new Error(_0x12190f['error']||_0x12190f['message']||_0x117cfd['statusText']);if(_0x12190f['detail']!==undefined)_0x46f3fc['detail']=_0x12190f['detail'];throw _0x46f3fc;}return await _0x117cfd['json']();},async 'importSkillFromNpm'(_0x2edc06,_0x518e09='latest',_0x1c42a5=null,_0x256635=null){const _0x41206c=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2edc06,'version':_0x518e09,'skillId':_0x1c42a5,'registry':_0x256635})});if(!_0x41206c['ok']){const _0x1619ce=await _0x41206c['json']()['catch'](()=>({'error':_0x41206c['statusText']})),_0x3fa85f=new Error(_0x1619ce['error']||_0x1619ce['message']||_0x41206c['statusText']);if(_0x1619ce['detail']!==undefined)_0x3fa85f['detail']=_0x1619ce['detail'];throw _0x3fa85f;}return await _0x41206c['json']();},async 'checkSkillUpdates'(_0x59e292){const _0x521292=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x59e292)+'/check-updates',{'method':'POST'});if(!_0x521292['ok']){const _0x18eeac=await _0x521292['json']()['catch'](()=>({'error':_0x521292['statusText']})),_0x23b245=new Error(_0x18eeac['error']||_0x18eeac['message']||_0x521292['statusText']);if(_0x18eeac['detail']!==undefined)_0x23b245['detail']=_0x18eeac['detail'];throw _0x23b245;}return await _0x521292['json']();},async 'updateExternalSkill'(_0x505259){const _0x24aaad=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x505259)+'/update',{'method':'POST'});if(!_0x24aaad['ok']){const _0x134429=await _0x24aaad['json']()['catch'](()=>({'error':_0x24aaad['statusText']})),_0xb3f2e9=new Error(_0x134429['error']||_0x134429['message']||_0x24aaad['statusText']);if(_0x134429['detail']!==undefined)_0xb3f2e9['detail']=_0x134429['detail'];throw _0xb3f2e9;}return await _0x24aaad['json']();},async 'updateSkillFlags'(_0xfd368e,_0x2d1a47){const _0x42381e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfd368e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x2d1a47})});if(!_0x42381e['ok']){const _0x1da010=await _0x42381e['json']()['catch'](()=>({'error':_0x42381e['statusText']})),_0xfde568=new Error(_0x1da010['error']||_0x1da010['message']||_0x42381e['statusText']);if(_0x1da010['detail']!==undefined)_0xfde568['detail']=_0x1da010['detail'];throw _0xfde568;}return await _0x42381e['json']();},async 'removeFromImportedRegistry'(_0x2082e6){const _0x315cca=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2082e6)+'/registry',{'method':'DELETE'});if(!_0x315cca['ok']){const _0x198673=await _0x315cca['json']()['catch'](()=>({'error':_0x315cca['statusText']})),_0x4e53bc=new Error(_0x198673['error']||_0x198673['message']||_0x315cca['statusText']);if(_0x198673['detail']!==undefined)_0x4e53bc['detail']=_0x198673['detail'];throw _0x4e53bc;}return await _0x315cca['json']();},async 'getTeams'(){const _0x3941d3=await fetch(API_BASE+'/teams');if(!_0x3941d3['ok']){const _0x16f933=await _0x3941d3['json']()['catch'](()=>({'message':_0x3941d3['statusText']}));throw new Error(_0x16f933['message']||'Failed\x20to\x20get\x20teams');}return await _0x3941d3['json']();},async 'getTeam'(_0x4878ac){const _0x36c3ca=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4878ac));if(!_0x36c3ca['ok']){const _0x42f41c=await _0x36c3ca['json']()['catch'](()=>({'message':_0x36c3ca['statusText']}));throw new Error(_0x42f41c['message']||'Failed\x20to\x20get\x20team');}return await _0x36c3ca['json']();},async 'createTeam'(_0x32f87d){const _0x5c9c13=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32f87d)});if(!_0x5c9c13['ok']){const _0x1222ed=await _0x5c9c13['json']()['catch'](()=>({'message':_0x5c9c13['statusText']}));throw new Error(_0x1222ed['message']||'Failed\x20to\x20create\x20team');}return await _0x5c9c13['json']();},async 'updateTeam'(_0x34bb8e,_0x19f3c5){const _0x5625df=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x34bb8e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19f3c5)});if(!_0x5625df['ok']){const _0x49c013=await _0x5625df['json']()['catch'](()=>({'message':_0x5625df['statusText']}));throw new Error(_0x49c013['message']||'Failed\x20to\x20update\x20team');}return await _0x5625df['json']();},async 'deleteTeam'(_0x55dafe){const _0x5328b9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55dafe),{'method':'DELETE'});if(!_0x5328b9['ok']){const _0x34ad63=await _0x5328b9['json']()['catch'](()=>({'message':_0x5328b9['statusText']}));throw new Error(_0x34ad63['message']||'Failed\x20to\x20delete\x20team');}return await _0x5328b9['json']();},async 'addTeamMember'(_0x33745b,_0x9a445e){const _0x5e49f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x33745b)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x9a445e})});if(!_0x5e49f1['ok']){const _0x409d84=await _0x5e49f1['json']()['catch'](()=>({'message':_0x5e49f1['statusText']}));throw new Error(_0x409d84['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5e49f1['json']();},async 'removeTeamMember'(_0x51de48,_0x49e6ac){const _0x5be939=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51de48)+'/members/'+encodeURIComponent(_0x49e6ac),{'method':'DELETE'});if(!_0x5be939['ok']){const _0x21264e=await _0x5be939['json']()['catch'](()=>({'message':_0x5be939['statusText']}));throw new Error(_0x21264e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x5be939['json']();},async 'getBindings'(_0x31b6f3={}){const _0x306f39=new URLSearchParams();if(_0x31b6f3['resource_type'])_0x306f39['set']('resource_type',_0x31b6f3['resource_type']);if(_0x31b6f3['resource_id'])_0x306f39['set']('resource_id',_0x31b6f3['resource_id']);if(_0x31b6f3['subject_type'])_0x306f39['set']('subject_type',_0x31b6f3['subject_type']);if(_0x31b6f3['subject_id'])_0x306f39['set']('subject_id',_0x31b6f3['subject_id']);const _0x37172e=_0x306f39['toString'](),_0xe9e77a=await fetch(API_BASE+'/bindings'+(_0x37172e?'?'+_0x37172e:''));if(!_0xe9e77a['ok']){const _0x28de2f=await _0xe9e77a['json']()['catch'](()=>({'message':_0xe9e77a['statusText']}));throw new Error(_0x28de2f['message']||'Failed\x20to\x20get\x20bindings');}return await _0xe9e77a['json']();},async 'createBinding'(_0x2cb2c7){const _0xdb14d7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cb2c7)});if(!_0xdb14d7['ok']){const _0x1029c7=await _0xdb14d7['json']()['catch'](()=>({'message':_0xdb14d7['statusText']}));throw new Error(_0x1029c7['message']||'Failed\x20to\x20create\x20binding');}return await _0xdb14d7['json']();},async 'updateBinding'(_0x527cd7,_0x4f4b01){const _0x5fd878=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x527cd7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f4b01)});if(!_0x5fd878['ok']){const _0x41ab28=await _0x5fd878['json']()['catch'](()=>({'message':_0x5fd878['statusText']}));throw new Error(_0x41ab28['message']||'Failed\x20to\x20update\x20binding');}return await _0x5fd878['json']();},async 'deleteBinding'(_0x25b4d4){const _0x367431=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x25b4d4),{'method':'DELETE'});if(!_0x367431['ok']){const _0x2e5c02=await _0x367431['json']()['catch'](()=>({'message':_0x367431['statusText']}));throw new Error(_0x2e5c02['message']||'Failed\x20to\x20delete\x20binding');}return await _0x367431['json']();},async 'getRoleDefinitions'(){const _0x4c970d=await fetch(API_BASE+'/roles');if(!_0x4c970d['ok']){const _0x4368ae=await _0x4c970d['json']()['catch'](()=>({'message':_0x4c970d['statusText']}));throw new Error(_0x4368ae['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4c970d['json']();},async 'getRoleDefinition'(_0x2037e5){const _0xad5a67=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2037e5));if(!_0xad5a67['ok']){const _0x45359b=await _0xad5a67['json']()['catch'](()=>({'message':_0xad5a67['statusText']}));throw new Error(_0x45359b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0xad5a67['json']();},async 'createRoleDefinition'(_0x4fb22a){const _0x56784d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fb22a)});if(!_0x56784d['ok']){const _0x18a273=await _0x56784d['json']()['catch'](()=>({'message':_0x56784d['statusText']}));throw new Error(_0x18a273['message']||_0x18a273['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x56784d['json']();},async 'updateRoleDefinition'(_0x5c53fc,_0x92c45b){const _0x2ca8bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5c53fc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x92c45b)});if(!_0x2ca8bb['ok']){const _0x14ac3d=await _0x2ca8bb['json']()['catch'](()=>({'message':_0x2ca8bb['statusText']}));throw new Error(_0x14ac3d['message']||_0x14ac3d['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x2ca8bb['json']();},async 'deleteRoleDefinition'(_0x1f3b67){const _0xb1d5de=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1f3b67),{'method':'DELETE'});if(!_0xb1d5de['ok']){const _0x5ec44a=await _0xb1d5de['json']()['catch'](()=>({'message':_0xb1d5de['statusText']}));throw new Error(_0x5ec44a['message']||_0x5ec44a['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0xb1d5de['json']();},async 'getAvailablePermissions'(){const _0x514053=await fetch(API_BASE+'/roles/available-permissions');if(!_0x514053['ok']){const _0x58ea28=await _0x514053['json']()['catch'](()=>({'message':_0x514053['statusText']}));throw new Error(_0x58ea28['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x514053['json']();},async 'getGitProviderAllowedTeams'(_0x5b318b){const _0x15195a=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5b318b)+'/allowed-teams');if(!_0x15195a['ok']){const _0x194546=await _0x15195a['json']()['catch'](()=>({'message':_0x15195a['statusText']}));throw new Error(_0x194546['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x15195a['json']();},async 'setGitProviderAllowedTeams'(_0x96cc65,_0x36cc46){const _0x274a5f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x96cc65)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x36cc46})});if(!_0x274a5f['ok']){const _0x4f23dc=await _0x274a5f['json']()['catch'](()=>({'message':_0x274a5f['statusText']}));throw new Error(_0x4f23dc['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x274a5f['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x32af83=toastState['baseBottom'];toastState['toasts']['forEach'](_0x1187d4=>{_0x1187d4['el']['style']['bottom']=_0x32af83+'px';const _0x1ee1a2=_0x1187d4['el']['offsetHeight']||toastState['defaultHeight'];_0x32af83+=_0x1ee1a2+toastState['gap'];});});}function removeToastById(_0x450ad6){const _0xfb6530=toastState['toasts']['findIndex'](_0x200949=>_0x200949['id']===_0x450ad6);if(_0xfb6530===-0x1)return;const _0x310d2a=toastState['toasts'][_0xfb6530];if(_0x310d2a['timeoutId'])clearTimeout(_0x310d2a['timeoutId']);_0x310d2a['el']['classList']['remove']('show'),setTimeout(()=>_0x310d2a['el']['remove'](),0x12c),toastState['toasts']['splice'](_0xfb6530,0x1),repositionAllToasts();}function registerToast(_0x40fffd){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x40fffd),repositionAllToasts(),_0x40fffd['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x501a76){if(_0x501a76===null||_0x501a76===undefined)return'';return String(_0x501a76)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x30e41c,_0x44dcc2){if(_0x30e41c&&typeof _0x30e41c==='object'&&!Array['isArray'](_0x30e41c))return{'code':typeof _0x30e41c['text']==='string'?_0x30e41c['text']:'','language':typeof _0x30e41c['lang']==='string'?_0x30e41c['lang']:''};return{'code':typeof _0x30e41c==='string'?_0x30e41c:'','language':typeof _0x44dcc2==='string'?_0x44dcc2:''};}function buildMermaidBlock(_0x4d9349){const _0x35af8e=String(_0x4d9349||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x35af8e))+'\x22>'+escapeHtmlValue(_0x35af8e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x39be5b=new marked['Renderer'](),_0x3b882a=_0x39be5b['code']['bind'](_0x39be5b);return _0x39be5b['code']=function(_0x36d02b,_0x46ccf1,..._0x101bd5){const {code:_0x571ccb,language:_0x545123}=getMarkdownCodeBlockPayload(_0x36d02b,_0x46ccf1),_0x231eb9=String(_0x545123||'')['trim']()['toLowerCase']();if(_0x231eb9==='mermaid')return buildMermaidBlock(_0x571ccb);const _0x16a4c4=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x16a4c4&&_0x231eb9)try{const _0x5a41e2=_0x16a4c4['getLanguage'](_0x231eb9)?_0x231eb9:'plaintext',_0x15499d=_0x16a4c4['highlight'](_0x571ccb,{'language':_0x5a41e2})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x231eb9)+'\x22>'+_0x15499d+'</code></pre>';}catch(_0x31d640){console['error']('Syntax\x20highlighting\x20error:',_0x31d640);}return _0x3b882a(_0x36d02b,_0x46ccf1,..._0x101bd5);},sharedMarkedRenderer=_0x39be5b,_0x39be5b;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x45e6ea=window['mermaid'];if(!_0x45e6ea||typeof _0x45e6ea['initialize']!=='function')return _0x45e6ea||null;return _0x45e6ea['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x45e6ea;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x431d27,_0x1a68a4)=>{const _0x3572ea=()=>_0x431d27(configureMermaidInstance()),_0x48df0c=()=>{mermaidLoadPromise=null,_0x1a68a4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x10e8d7=document['getElementById'](MERMAID_SCRIPT_ID);!_0x10e8d7&&(_0x10e8d7=document['createElement']('script'),_0x10e8d7['id']=MERMAID_SCRIPT_ID,_0x10e8d7['src']=MERMAID_SCRIPT_SRC,_0x10e8d7['async']=!![],document['head']['appendChild'](_0x10e8d7));if(window['mermaid']){_0x3572ea();return;}_0x10e8d7['addEventListener']('load',_0x3572ea,{'once':!![]}),_0x10e8d7['addEventListener']('error',_0x48df0c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x59ebd1){const _0x294f75=_0x59ebd1['getAttribute']('data-mermaid-source');if(!_0x294f75)return null;let _0x596b28=_0x294f75;try{_0x596b28=decodeURIComponent(_0x294f75);}catch{}return _0x59ebd1['textContent']=_0x596b28,_0x59ebd1['removeAttribute']('data-processed'),_0x59ebd1['removeAttribute']('aria-roledescription'),_0x59ebd1['removeAttribute']('role'),_0x59ebd1['removeAttribute']('aria-label'),_0x596b28;}function collectMermaidNodes(_0x44e3c3,_0x1d4481){if(!(_0x44e3c3 instanceof Element))return;_0x44e3c3['matches']('.mermaid[data-mermaid-source]')&&_0x1d4481['add'](_0x44e3c3),_0x44e3c3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x48b856=>{_0x1d4481['add'](_0x48b856);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x34aed1=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x30c388=>setTimeout(_0x30c388,0x0);_0x34aed1(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5cdbb4=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5cdbb4);});});}function queueMermaidRender(_0x5adb2d){const _0x304556=new Set();_0x5adb2d instanceof Document||_0x5adb2d instanceof DocumentFragment?_0x5adb2d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2c0293=>_0x304556['add'](_0x2c0293)):collectMermaidNodes(_0x5adb2d,_0x304556);if(_0x304556['size']===0x0)return;_0x304556['forEach'](_0xccbb1b=>pendingMermaidNodes['add'](_0xccbb1b)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x474d0b=Array['from'](pendingMermaidNodes)['filter'](_0x4e9dd7=>_0x4e9dd7['isConnected']);pendingMermaidNodes['clear']();if(_0x474d0b['length']===0x0)return;const _0x572251=await loadMermaid();if(!_0x572251)return;configureMermaidInstance();const _0x4de329=getMermaidTheme();for(const _0x2ddce5 of _0x474d0b){const _0x202a5c=_0x2ddce5['getAttribute']('data-mermaid-source');if(!_0x202a5c)continue;const _0x42130d=_0x2ddce5['getAttribute']('data-processed')==='true';if(_0x42130d&&_0x2ddce5['dataset']['mermaidTheme']===_0x4de329)continue;restoreMermaidSource(_0x2ddce5);try{if(typeof _0x572251['run']==='function')await _0x572251['run']({'nodes':[_0x2ddce5]});else typeof _0x572251['init']==='function'&&_0x572251['init'](undefined,[_0x2ddce5]);_0x2ddce5['dataset']['mermaidTheme']=_0x4de329,delete _0x2ddce5['dataset']['mermaidError'];}catch(_0x4ca0e1){console['error']('Mermaid\x20render\x20failed:',_0x4ca0e1),restoreMermaidSource(_0x2ddce5),_0x2ddce5['dataset']['mermaidError']='true',delete _0x2ddce5['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27a659=>{_0x27a659['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x27a659);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4e5df5=>{_0x4e5df5['forEach'](_0x5c7f7e=>{_0x5c7f7e['addedNodes']['forEach'](_0x2e1e69=>{_0x2e1e69['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e1e69);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x1d46c0){const _0x3b1c31=new Date(_0x1d46c0),_0x59beca=new Date(),_0x50d14a=_0x59beca-_0x3b1c31,_0x20e2da=Math['floor'](_0x50d14a/0x3e8),_0x1d9cb8=Math['floor'](_0x20e2da/0x3c),_0x54f668=Math['floor'](_0x1d9cb8/0x3c),_0x2ea167=Math['floor'](_0x54f668/0x18);if(_0x20e2da<0x3c)return'now';if(_0x1d9cb8<0x3c)return _0x1d9cb8+'m\x20ago';if(_0x54f668<0x18)return _0x54f668+'h\x20ago';return _0x2ea167+'d\x20ago';},'getStatusIcon'(_0x48932f){switch(_0x48932f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x2214f9){switch(_0x2214f9){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x5cf6bf,_0x387007=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x68d54e={};_0x68d54e['text/plain']=new Blob([_0x5cf6bf],{'type':'text/plain'});_0x387007&&(_0x68d54e['text/html']=new Blob([_0x387007],{'type':'text/html'}));const _0x5f35a=new ClipboardItem(_0x68d54e);return await navigator['clipboard']['write']([_0x5f35a]),!![];}catch(_0x7ef472){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x7ef472);}try{const _0x1fc7a5=_0x119381=>{_0x119381['preventDefault'](),_0x119381['clipboardData']['setData']('text/plain',_0x5cf6bf),_0x387007&&_0x119381['clipboardData']['setData']('text/html',_0x387007);};document['addEventListener']('copy',_0x1fc7a5);const _0x10a8b2=document['execCommand']('copy');document['removeEventListener']('copy',_0x1fc7a5);if(_0x10a8b2)return!![];}catch(_0x2a8fd3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2a8fd3);}try{const _0x4a2de5=document['createElement']('textarea');_0x4a2de5['value']=_0x5cf6bf,_0x4a2de5['style']['position']='fixed',_0x4a2de5['style']['opacity']='0',_0x4a2de5['style']['pointerEvents']='none',document['body']['appendChild'](_0x4a2de5),_0x4a2de5['select']();const _0x56c7d2=document['execCommand']('copy');return document['body']['removeChild'](_0x4a2de5),_0x56c7d2;}catch(_0x2fe3ca){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x2fe3ca),![];}},'showToast'(_0x4f2df4,_0x50735d='info'){const _0x4e8e19=getNextToastId(),_0x4a528b=document['createElement']('div');_0x4a528b['className']='toast\x20toast-'+_0x50735d,_0x4a528b['textContent']=_0x4f2df4,_0x4a528b['dataset']['toastId']=_0x4e8e19,document['body']['appendChild'](_0x4a528b);const _0x4c2934=_0x50735d==='error'?0x2710:0xbb8,_0x297e04=setTimeout(()=>{removeToastById(_0x4e8e19);},_0x4c2934),_0x367977={'id':_0x4e8e19,'el':_0x4a528b,'timeoutId':_0x297e04};return registerToast(_0x367977),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x4a528b['classList']['add']('show');});}),_0x4e8e19;},'showError'(_0x43f859){console['error'](_0x43f859);const _0x4b8cc2=typeof _0x43f859==='string'?_0x43f859:_0x43f859['message']||'An\x20error\x20occurred';this['showToast'](_0x4b8cc2,'error');},'showSuccess'(_0x54d137){this['showToast'](_0x54d137,'success');},'capitalize'(_0x374867){if(!_0x374867)return'';return _0x374867['charAt'](0x0)['toUpperCase']()+_0x374867['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0xbccbb7){return escapeHtmlValue(_0xbccbb7);},'ansiToHtml'(_0x5593b6){if(_0x5593b6===null||_0x5593b6===undefined)return'';let _0x4be462=this['escapeHtml'](_0x5593b6);const _0x29daa9={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x42f0b0={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x572fff=0x0;return _0x4be462=_0x4be462['replace'](/\x1b\[([0-9;]*)m/g,(_0xe330ca,_0x179cde)=>{if(!_0x179cde||_0x179cde==='0'){const _0x349ae0='</span>'['repeat'](_0x572fff);return _0x572fff=0x0,_0x349ae0;}const _0x2c86da=_0x179cde['split'](';'),_0x32bdff=[];for(const _0x358977 of _0x2c86da){if(_0x358977==='1')_0x32bdff['push']('font-weight:bold');else{if(_0x358977==='2')_0x32bdff['push']('opacity:0.7');else{if(_0x358977==='3')_0x32bdff['push']('font-style:italic');else{if(_0x358977==='4')_0x32bdff['push']('text-decoration:underline');else{if(_0x358977==='9')_0x32bdff['push']('text-decoration:line-through');else{if(_0x29daa9[_0x358977])_0x32bdff['push']('color:'+_0x29daa9[_0x358977]);else{if(_0x42f0b0[_0x358977])_0x32bdff['push']('background-color:'+_0x42f0b0[_0x358977]);}}}}}}}if(_0x32bdff['length']>0x0)return _0x572fff++,'<span\x20style=\x22'+_0x32bdff['join'](';')+'\x22>';return'';}),_0x4be462+='</span>'['repeat'](_0x572fff),_0x4be462=_0x4be462['replace'](/\\u001b\[([0-9;]*)m/g,(_0x55ce5f,_0x1abd37)=>{if(!_0x1abd37||_0x1abd37==='0')return'';const _0x16e993=_0x1abd37['split'](';'),_0x4659d0=[];for(const _0x365b29 of _0x16e993){if(_0x365b29==='1')_0x4659d0['push']('font-weight:bold');else{if(_0x29daa9[_0x365b29])_0x4659d0['push']('color:'+_0x29daa9[_0x365b29]);else{if(_0x42f0b0[_0x365b29])_0x4659d0['push']('background-color:'+_0x42f0b0[_0x365b29]);}}}if(_0x4659d0['length']>0x0)return'<span\x20style=\x22'+_0x4659d0['join'](';')+'\x22>';return'';}),_0x4be462;},'showModal'({title:_0x38416f,content:_0x414b59,buttons:buttons=[]}){const _0x3ff0e7='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x38416f)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x414b59+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x178f60,_0x3bc683)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x178f60['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3bc683+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x178f60['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x59b04e=document['createElement']('div');_0x59b04e['id']='utils-modal',_0x59b04e['className']='modal',_0x59b04e['innerHTML']=_0x3ff0e7,document['body']['appendChild'](_0x59b04e);const _0xfc0da3=document['getElementById']('utils-modal-close');_0xfc0da3&&_0xfc0da3['addEventListener']('click',()=>this['hideModal']());const _0x29a0ac=_0x59b04e['querySelectorAll']('[data-btn-index]');_0x29a0ac['forEach'](_0x3d4629=>{const _0x5b631c=parseInt(_0x3d4629['dataset']['btnIndex']);buttons[_0x5b631c]?.['onClick']&&_0x3d4629['addEventListener']('click',buttons[_0x5b631c]['onClick']);});const _0x18683d=document['getElementById']('utils-modal-overlay');_0x18683d&&_0x18683d['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x5a6a27=document['getElementById']('utils-modal');_0x5a6a27&&_0x5a6a27['remove']();},'parseKeyValuePairs'(_0x4a51b4){const _0x278962={};if(!_0x4a51b4)return _0x278962;return _0x4a51b4['split'](/\r?\n/)['map'](_0x593b9c=>_0x593b9c['trim']())['filter'](Boolean)['forEach'](_0x11a86f=>{const _0x32eab5=_0x11a86f['indexOf']('=');if(_0x32eab5>0x0){const _0x4afcf5=_0x11a86f['slice'](0x0,_0x32eab5)['trim'](),_0x57e589=_0x11a86f['slice'](_0x32eab5+0x1)['trim']();if(_0x4afcf5)_0x278962[_0x4afcf5]=_0x57e589;}}),_0x278962;},'debounce'(_0x1980a8,_0x25ba4b=0xfa){let _0x340f4a=null;return(..._0x2b7b91)=>{clearTimeout(_0x340f4a),_0x340f4a=setTimeout(()=>_0x1980a8['apply'](this,_0x2b7b91),_0x25ba4b);};},'formatTimestamp'(_0x15c79d){if(!_0x15c79d)return'N/A';const _0xb5595a=new Date(_0x15c79d);return _0xb5595a['toLocaleDateString']()+'\x20'+_0xb5595a['toLocaleTimeString']();},'getQueryParams'(){const _0x23168e=new URLSearchParams(window['location']['search']),_0x56015f={};for(const [_0x3e7533,_0x3ddbbb]of _0x23168e){_0x56015f[_0x3e7533]=_0x3ddbbb;}return _0x56015f;},'formatDuration'(_0x29e199,_0x54a163){if(!_0x29e199)return'N/A';const _0x2a8125=new Date(_0x29e199),_0x5b4fc5=_0x54a163?new Date(_0x54a163):new Date(),_0x5e3eaa=_0x5b4fc5-_0x2a8125;if(_0x5e3eaa<0x0)return'0s';const _0x2c6dcc=Math['floor'](_0x5e3eaa/0x3e8),_0x5ec103=Math['floor'](_0x2c6dcc/0x3c),_0xdc797c=Math['floor'](_0x5ec103/0x3c),_0x277fff=Math['floor'](_0xdc797c/0x18);if(_0x2c6dcc<0x3c)return _0x2c6dcc+'s';if(_0x5ec103<0x3c)return _0x5ec103+'m\x20'+_0x2c6dcc%0x3c+'s';if(_0xdc797c<0x18)return _0xdc797c+'h\x20'+_0x5ec103%0x3c+'m\x20'+_0x2c6dcc%0x3c+'s';return _0x277fff+'d\x20'+_0xdc797c%0x18+'h\x20'+_0x5ec103%0x3c+'m';},'renderMarkdown'(_0x299065,_0x325b7f={}){if(!_0x299065)return'';_0x299065=this['rewriteAttachmentLinks'](_0x299065,_0x325b7f),_0x299065=this['rewriteColorSyntax'](_0x299065);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x299065,_0x325b7f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x299065);}catch(_0x28f1d3){return console['error']('Markdown\x20parsing\x20error:',_0x28f1d3),this['renderMarkdownFallback'](_0x299065,_0x325b7f);}},'rewriteAttachmentLinks'(_0x13e68d,_0x1ff625={}){const _0x2843b8=typeof _0x1ff625['resolveAttachmentUrl']==='function'?_0x1ff625['resolveAttachmentUrl']:_0x1ff625['taskId']?_0xe543ad=>API_BASE+'/tasks/'+_0x1ff625['taskId']+'/attachments/'+encodeURIComponent(_0xe543ad):null;if(!_0x2843b8)return _0x13e68d;return String(_0x13e68d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x434141,_0x325d81)=>{const _0x5e7149=String(_0x325d81||'')['trim']();if(!_0x5e7149)return _0x434141;let _0x4f66a7=_0x5e7149;try{_0x4f66a7=decodeURIComponent(_0x5e7149);}catch{}const _0x5ae7e3=_0x2843b8(_0x4f66a7);if(!_0x5ae7e3)return _0x434141;return']('+_0x5ae7e3+')';});},'rewriteColorSyntax'(_0x5d3dc6){if(!_0x5d3dc6)return _0x5d3dc6;return String(_0x5d3dc6)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x404c91,_0x4e8792,_0x5a19b0)=>{const _0x5c0029=this['rewriteColorSyntax'](_0x5a19b0);return'<span\x20style=\x22color:\x20'+_0x4e8792+'\x22>'+_0x5c0029+'</span>';});},'renderMarkdownFallback'(_0x5eee21,_0x3d797a={}){if(!_0x5eee21)return'';_0x5eee21=_0x5eee21['replace'](/\r\n/g,'\x0a'),_0x5eee21=_0x5eee21['replace'](/\r/g,'\x0a'),_0x5eee21=this['rewriteAttachmentLinks'](_0x5eee21,_0x3d797a);let _0x55a138=this['escapeHtml'](_0x5eee21);return _0x55a138=_0x55a138['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x55a138=_0x55a138['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x55a138=_0x55a138['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x55a138=_0x55a138['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x55a138=_0x55a138['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x55a138=_0x55a138['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x55a138=_0x55a138['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x55a138=_0x55a138['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x55a138=_0x55a138['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x55a138=_0x55a138['replace'](/\n\n/g,'</p><p>'),_0x55a138=_0x55a138['replace'](/\n/g,'<br>'),'<p>'+_0x55a138+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x4b0cd3=new Uint8Array(0x10);crypto['getRandomValues'](_0x4b0cd3),_0x4b0cd3[0x6]=_0x4b0cd3[0x6]&0xf|0x40,_0x4b0cd3[0x8]=_0x4b0cd3[0x8]&0x3f|0x80;const _0x2566df=Array['from'](_0x4b0cd3,_0x4167ea=>_0x4167ea['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2566df['slice'](0x0,0x8)+'-'+_0x2566df['slice'](0x8,0xc)+'-'+_0x2566df['slice'](0xc,0x10)+'-'+_0x2566df['slice'](0x10,0x14)+'-'+_0x2566df['slice'](0x14);}};export class CustomSelect{constructor(_0x60813b,_0x35744b={}){this['nativeSelect']=_0x60813b,this['options']=_0x35744b,this['isOpen']=![],this['selectedValue']=_0x60813b['value']||'',this['searchable']=_0x35744b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0xf54fc3=document['createElement']('div');_0xf54fc3['className']='custom-select';const _0x5bcde6=document['createElement']('div');_0x5bcde6['className']='custom-select-trigger',_0x5bcde6['setAttribute']('tabindex','0'),_0x5bcde6['setAttribute']('role','button'),_0x5bcde6['setAttribute']('aria-haspopup','listbox');const _0x2f67ce=document['createElement']('span');_0x2f67ce['className']='custom-select-trigger-text';const _0x201f41=document['createElement']('span');_0x201f41['className']='custom-select-arrow',_0x201f41['textContent']='▼',_0x5bcde6['appendChild'](_0x2f67ce),_0x5bcde6['appendChild'](_0x201f41);const _0x45fd47=document['createElement']('div');_0x45fd47['className']='custom-select-dropdown',_0x45fd47['setAttribute']('role','listbox');if(this['searchable']){const _0x4e852f=document['createElement']('div');_0x4e852f['className']='custom-select-search';const _0x7df019=document['createElement']('input');_0x7df019['type']='text',_0x7df019['className']='custom-select-search-input',_0x7df019['placeholder']='Type\x20to\x20search...',_0x7df019['setAttribute']('aria-label','Search\x20options'),_0x7df019['addEventListener']('input',_0x33c538=>{this['searchQuery']=_0x33c538['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x7df019['addEventListener']('keydown',_0x1e3349=>{if(_0x1e3349['key']==='Escape')_0x1e3349['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1e3349['key']==='Enter'){_0x1e3349['preventDefault'](),_0x1e3349['stopPropagation']();const _0x456ec1=_0x45fd47['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x456ec1){const _0x33db42=_0x456ec1['getAttribute']('data-value');this['select'](_0x33db42);}}}}),_0x4e852f['appendChild'](_0x7df019),_0x45fd47['appendChild'](_0x4e852f),this['searchInput']=_0x7df019;}const _0x299053=document['createElement']('div');_0x299053['className']='custom-select-options',_0x45fd47['appendChild'](_0x299053),_0xf54fc3['appendChild'](_0x5bcde6),_0xf54fc3['appendChild'](_0x45fd47),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0xf54fc3,this['nativeSelect']),this['wrapper']=_0xf54fc3,this['trigger']=_0x5bcde6,this['triggerText']=_0x2f67ce,this['dropdown']=_0x45fd47,this['optionsContainer']=_0x299053,_0x5bcde6['addEventListener']('click',()=>this['toggle']()),_0x5bcde6['addEventListener']('keydown',_0x3ec434=>this['handleKeydown'](_0x3ec434)),document['addEventListener']('click',_0x914153=>{!_0xf54fc3['contains'](_0x914153['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x41a0de=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x41a0de['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x24ef36=new MutationObserver(()=>{this['updateDisabledState']();});_0x24ef36['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x7a42d5=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x7a42d5['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3f9e5c=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3f9e5c),this['trigger']['setAttribute']('aria-disabled',_0x3f9e5c?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3f9e5c?'-1':'0'),_0x3f9e5c&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x3fc72a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x23f846=_0x3fc72a['filter'](_0x237710=>!_0x237710['disabled']&&!_0x237710['hidden']);_0x3fc72a['forEach']((_0x53188b,_0x5451e1)=>{const _0x4e8da5=document['createElement']('div');_0x4e8da5['className']='custom-select-option',_0x4e8da5['textContent']=_0x53188b['textContent'],_0x4e8da5['setAttribute']('data-value',_0x53188b['value']),_0x4e8da5['setAttribute']('data-index',_0x5451e1),_0x4e8da5['setAttribute']('role','option'),_0x53188b['disabled']?_0x4e8da5['classList']['add']('disabled'):_0x4e8da5['addEventListener']('click',()=>this['select'](_0x53188b['value'])),_0x53188b['value']===this['selectedValue']&&_0x4e8da5['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4e8da5),this['allOptions']['push']({'element':_0x4e8da5,'text':_0x53188b['textContent']['toLowerCase'](),'value':_0x53188b['value'],'disabled':_0x53188b['disabled']});});if(this['searchable']&&this['searchInput']){const _0x511503=this['searchInput']['parentElement'];_0x23f846['length']>0x3?_0x511503['style']['display']='':_0x511503['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3473ae=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4302a9=>{if(!_0x3473ae||_0x4302a9['disabled'])_0x4302a9['element']['style']['display']='';else{const _0x477f32=_0x4302a9['text']['includes'](_0x3473ae);_0x4302a9['element']['style']['display']=_0x477f32?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xbf173b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xbf173b,this['nativeSelect']['value']=_0xbf173b;const _0x2e5853=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2e5853),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xb5cb8f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xb5cb8f&&(this['triggerText']['textContent']=_0xb5cb8f['textContent'],_0xb5cb8f['disabled']||_0xb5cb8f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x384b07=>{_0x384b07['getAttribute']('data-value')===this['selectedValue']?_0x384b07['classList']['add']('selected'):_0x384b07['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x18f726=window['getComputedStyle'](this['dropdown']);if(_0x18f726['position']==='fixed'){const _0x5035b1=this['trigger']['getBoundingClientRect'](),_0xa137e8=parseInt(_0x18f726['maxHeight'])||0xc8,_0x198488=window['innerHeight'],_0x2e32cd=_0x198488-_0x5035b1['bottom'],_0x48981=_0x5035b1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x111def;_0x2e32cd<_0xa137e8&&_0x48981>_0x2e32cd?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x198488-_0x5035b1['top']+'px',_0x111def=Math['min'](_0xa137e8,_0x48981-0xa),this['dropdown']['style']['maxHeight']=_0x111def+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5035b1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x111def=Math['min'](_0xa137e8,_0x2e32cd-0xa),this['dropdown']['style']['maxHeight']=_0x111def+'px');if(this['optionsContainer']){let _0x1ecd86=_0x111def;if(this['searchInput']){const _0x357fd5=this['searchInput']['parentElement'];_0x357fd5&&(_0x1ecd86-=_0x357fd5['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ecd86)+'px';}this['dropdown']['style']['left']=_0x5035b1['left']+'px',this['dropdown']['style']['width']=_0x5035b1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x509adf=this['searchInput']['parentElement'];_0x509adf&&_0x509adf['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x4d6a34){if(this['nativeSelect']['disabled'])return;if(_0x4d6a34['key']==='Enter'||_0x4d6a34['key']==='\x20')_0x4d6a34['preventDefault'](),this['toggle']();else _0x4d6a34['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2b2b2c='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x2b2b2c),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2a4bff=document['getElementById']('confirm-dialog-close'),_0x301c7e=document['getElementById']('confirm-dialog-cancel'),_0x468456=document['getElementById']('confirm-dialog-confirm'),_0x4e0eb9=this['_modal']['querySelector']('.modal-overlay');_0x2a4bff['addEventListener']('click',()=>this['_resolve'](![])),_0x301c7e['addEventListener']('click',()=>this['_resolve'](![])),_0x468456['addEventListener']('click',()=>this['_resolve'](!![])),_0x4e0eb9['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x237090=>{if(_0x237090['key']==='Escape')_0x237090['preventDefault'](),this['_resolve'](![]);else _0x237090['key']==='Enter'&&(_0x237090['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x5d998a,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x549097=>{this['_resolvePromise']=_0x549097,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x5d998a;const _0x58315a=document['getElementById']('confirm-dialog-cancel'),_0x112535=document['getElementById']('confirm-dialog-confirm');_0x58315a['textContent']=cancelText,_0x112535['textContent']=confirmText,_0x112535['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x112535['focus']();});},'_resolve'(_0x4684ae){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4684ae),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x57b0d3,_0x10be17={}){this['container']=_0x57b0d3,this['options']={'placeholder':_0x10be17['placeholder']||'Type\x20to\x20search...','maxItems':_0x10be17['maxItems']||0x64,'loadItems':_0x10be17['loadItems']||(async()=>[]),'renderItem':_0x10be17['renderItem']||(_0x828599=>({'primary':String(_0x828599),'secondary':''})),'onSelect':_0x10be17['onSelect']||(()=>{}),'filterItems':_0x10be17['filterItems']||null,'getItemValue':_0x10be17['getItemValue']||(_0x2b734a=>_0x2b734a),'sortItems':_0x10be17['sortItems']||null,'debounceMs':_0x10be17['debounceMs']||0xc8,'minCharsForSearch':_0x10be17['minCharsForSearch']||0x0,'emptyMessage':_0x10be17['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x10be17['loadingMessage']||'Loading...','preload':_0x10be17['preload']!==![],'searchMode':_0x10be17['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3ef3a7=>this['onBlur'](_0x3ef3a7)),this['input']['addEventListener']('input',_0x231325=>this['onInput'](_0x231325)),this['input']['addEventListener']('keydown',_0x32e140=>this['onKeydown'](_0x32e140)),this['clearBtn']['addEventListener']('mousedown',_0x118dfa=>{_0x118dfa['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x33db79=>{_0x33db79['preventDefault']();}),document['addEventListener']('click',_0x28dd8c=>{!this['wrapper']['contains'](_0x28dd8c['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x414703){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x414703);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x30e0f8){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xc46384){const _0x3eb93f=_0xc46384['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3eb93f);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3eb93f):this['loadAndShow'](_0x3eb93f);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1cc48e){switch(_0x1cc48e['key']){case'ArrowDown':_0x1cc48e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1cc48e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1cc48e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1cc48e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2a56cf){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x281926=this['selectedIndex']+_0x2a56cf;if(_0x281926>=0x0&&_0x281926<this['filteredItems']['length']){this['selectedIndex']=_0x281926,this['updateSelectionHighlight']();const _0x4b401d=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4b401d[this['selectedIndex']]&&_0x4b401d[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0xedc25b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xedc25b['forEach']((_0x116eae,_0x408fbc)=>{_0x116eae['classList']['toggle']('keyboard-selected',_0x408fbc===this['selectedIndex']);});}async['loadAndShow'](_0x527000){this['showLoading']();try{const _0xd5d4c1=await this['options']['loadItems'](_0x527000);if(this['options']['searchMode']==='server'){let _0x273c7b=_0xd5d4c1;this['options']['sortItems']&&(_0x273c7b=this['options']['sortItems']([..._0xd5d4c1]));this['filteredItems']=_0x273c7b;const _0x11874e=this['filteredItems']['length']>=this['options']['maxItems'];_0x11874e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x11874e),this['open']();}else this['allItems']=_0xd5d4c1,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x527000);}catch(_0x388819){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x388819),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3d3abf){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3d3abf):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x27a67c=this['filteredItems']['length']>=this['options']['maxItems'];_0x27a67c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x27a67c),this['open']();}['renderItems'](_0x47147f){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x2d7a35,_0x246314)=>{const _0x408241=document['createElement']('div');_0x408241['className']='autocomplete-select-item',_0x408241['setAttribute']('role','option'),_0x408241['setAttribute']('data-index',_0x246314);const _0x846128=this['options']['renderItem'](_0x2d7a35);let _0x322a35='';_0x846128['icon']&&(_0x322a35='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x846128['iconClass']||'')+'\x22>'+_0x846128['icon']+'</span>'),_0x408241['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x322a35+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x846128['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x846128['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x846128['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x408241['addEventListener']('click',()=>{this['selectItem'](_0x2d7a35);}),_0x408241['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x246314,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x408241);}),_0x47147f?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x42a9b8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x42a9b8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x10548d){this['selectedItem']=_0x10548d;const _0x4804df=this['options']['renderItem'](_0x10548d);this['input']['value']=_0x4804df['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x10548d);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x1230cb){if(_0x1230cb){this['selectedItem']=_0x1230cb;const _0x549013=this['options']['renderItem'](_0x1230cb);this['input']['value']=_0x549013['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x3b476d){this['allItems']=_0x3b476d,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x14ed46){this['input']['placeholder']=_0x14ed46;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x144820=null){const _0x16351f=document['getElementById']('admin-menu-container'),_0x88faec=document['getElementById']('admin-menu-btn'),_0x2a0556=document['getElementById']('admin-menu');if(!_0x16351f||!_0x88faec||!_0x2a0556)return;try{!_0x144820&&(_0x144820=await API['getCurrentUser']());if(_0x144820){const _0x2df919=window['Permissions'],_0x2fd3ce=_0x2df919['hasServerPermission'](_0x144820,'*')||_0x2df919['hasEnvPermission'](_0x144820,'environments:manage')||_0x2df919['hasServerPermission'](_0x144820,'users:create')||_0x2df919['hasTeamPermission'](_0x144820,'teams:manage')||_0x2df919['hasEnvPermission'](_0x144820,'environments:view_details');if(!_0x2fd3ce)return;_0x16351f['hidden']=![];if(!_0x2df919['hasServerPermission'](_0x144820,'*')){const _0x2d5a03=_0x2a0556['querySelectorAll']('.admin-menu-item');_0x2d5a03['forEach'](_0x4eb8db=>{const _0x489f88=_0x4eb8db['querySelector']('.option-text')?.['textContent']?.['trim']();_0x489f88==='Users'&&!_0x2df919['hasServerPermission'](_0x144820,'users:create')&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Skills'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Server\x20Settings'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Server\x20Administration'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Git\x20History'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Roles'&&(_0x4eb8db['hidden']=!![]);});}_0x88faec['addEventListener']('click',_0x222a9f=>{_0x222a9f['stopPropagation']();const _0x2b94a0=document['getElementById']('actions-menu');if(_0x2b94a0)_0x2b94a0['hidden']=!![];_0x2a0556['hidden']=!_0x2a0556['hidden'];}),document['addEventListener']('click',_0x2eff59=>{!_0x2a0556['hidden']&&!_0x88faec['contains'](_0x2eff59['target'])&&!_0x2a0556['contains'](_0x2eff59['target'])&&(_0x2a0556['hidden']=!![]);}),document['addEventListener']('keydown',_0x1d02c5=>{_0x1d02c5['key']==='Escape'&&!_0x2a0556['hidden']&&(_0x2a0556['hidden']=!![]);});}}catch(_0x38be0c){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x38be0c['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|
|
1
|
+
function detectApiBase(){const _0x3cf725=window['location']['pathname'],_0x599206=_0x3cf725['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x599206)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x599206[0x1]),_0x599206[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x2a78fa={}){const _0x26d2f9=new URLSearchParams();_0x2a78fa['userId']&&_0x26d2f9['set']('userId',String(_0x2a78fa['userId']));_0x2a78fa['automation']&&_0x26d2f9['set']('automation',String(_0x2a78fa['automation']));const _0x40dae6=API_BASE+'/tasks/stats'+(_0x26d2f9['toString']()?'?'+_0x26d2f9['toString']():''),_0x5e164b=await fetch(_0x40dae6);if(!_0x5e164b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5e164b['statusText']);return await _0x5e164b['json']();},async 'getTasks'(_0x493bf7={}){const _0x230107=new URLSearchParams();_0x493bf7['status']&&_0x230107['set']('status',String(_0x493bf7['status']));_0x493bf7['environment']&&_0x230107['set']('environment',String(_0x493bf7['environment']));_0x493bf7['automation']&&_0x230107['set']('automation',String(_0x493bf7['automation']));if(_0x493bf7['include']){const _0xa7bc56=Array['isArray'](_0x493bf7['include'])?_0x493bf7['include']['join'](','):String(_0x493bf7['include']);_0xa7bc56&&_0x230107['set']('include',_0xa7bc56);}_0x493bf7['filter']&&_0x230107['set']('filter',String(_0x493bf7['filter']));_0x493bf7['page']&&_0x230107['set']('page',String(_0x493bf7['page']));_0x493bf7['limit']&&_0x230107['set']('limit',String(_0x493bf7['limit']));_0x493bf7['userId']&&_0x230107['set']('userId',String(_0x493bf7['userId']));_0x493bf7['search']&&_0x230107['set']('search',String(_0x493bf7['search']));_0x493bf7['includeChildTasks']&&_0x230107['set']('includeChildTasks','true');const _0x52be0c=API_BASE+'/tasks'+(_0x230107['toString']()?'?'+_0x230107['toString']():''),_0x117401=await fetch(_0x52be0c);if(!_0x117401['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x117401['statusText']);return await _0x117401['json']();},async 'getAutomations'(_0x9ec220={}){const _0x40887c=new URLSearchParams();_0x9ec220['environment']&&_0x40887c['set']('environment',String(_0x9ec220['environment']));const _0x35a2fe=await fetch(API_BASE+'/api/automations'+(_0x40887c['toString']()?'?'+_0x40887c['toString']():''));if(!_0x35a2fe['ok']){const _0x4b3391=await _0x35a2fe['json']()['catch'](()=>({}));throw new Error(_0x4b3391['message']||_0x4b3391['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x35a2fe['statusText']);}return await _0x35a2fe['json']();},async 'getAutomation'(_0x28f51a){const _0x3ddc6e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x28f51a));if(!_0x3ddc6e['ok']){const _0x390084=await _0x3ddc6e['json']()['catch'](()=>({}));throw new Error(_0x390084['message']||_0x390084['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3ddc6e['statusText']);}return await _0x3ddc6e['json']();},async 'createAutomation'(_0x18ce27){const _0x3c6425=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ce27||{})});if(!_0x3c6425['ok']){const _0x3c430e=await _0x3c6425['json']()['catch'](()=>({}));throw new Error(_0x3c430e['message']||_0x3c430e['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3c6425['statusText']);}return await _0x3c6425['json']();},async 'updateAutomation'(_0x7fa90e,_0x3dc0c4){const _0x185ff4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7fa90e),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3dc0c4||{})});if(!_0x185ff4['ok']){const _0x123008=await _0x185ff4['json']()['catch'](()=>({}));throw new Error(_0x123008['message']||_0x123008['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x185ff4['statusText']);}return await _0x185ff4['json']();},async 'deleteAutomation'(_0x11212e){const _0x331cfb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x11212e),{'method':'DELETE'});if(!_0x331cfb['ok']){const _0x3e9eae=await _0x331cfb['json']()['catch'](()=>({}));throw new Error(_0x3e9eae['message']||_0x3e9eae['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x331cfb['statusText']);}return await _0x331cfb['json']();},async 'triggerAutomation'(_0x1f69ed){const _0x3ef438=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f69ed)+'/trigger',{'method':'POST'});if(!_0x3ef438['ok']){const _0x2ac5ac=await _0x3ef438['json']()['catch'](()=>({}));throw new Error(_0x2ac5ac['message']||_0x2ac5ac['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3ef438['statusText']);}return await _0x3ef438['json']();},async 'setAutomationEnabled'(_0x1d31c2,_0x4a6ea4){const _0x6d3f59=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d31c2)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x4a6ea4})});if(!_0x6d3f59['ok']){const _0x1bb971=await _0x6d3f59['json']()['catch'](()=>({}));throw new Error(_0x1bb971['message']||_0x1bb971['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x6d3f59['statusText']);}return await _0x6d3f59['json']();},async 'getAutomationHistory'(_0x330678,_0x209182=0x32){const _0x2f3d60=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x330678)+'/history?limit='+encodeURIComponent(String(_0x209182)));if(!_0x2f3d60['ok']){const _0x12be40=await _0x2f3d60['json']()['catch'](()=>({}));throw new Error(_0x12be40['message']||_0x12be40['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x2f3d60['statusText']);}return await _0x2f3d60['json']();},async 'getTask'(_0x5b874e,_0x590c14={}){const _0x1c1efd=new URLSearchParams();if(_0x590c14['include']){const _0x2522f3=Array['isArray'](_0x590c14['include'])?_0x590c14['include']['join'](','):String(_0x590c14['include']);if(_0x2522f3)_0x1c1efd['set']('include',_0x2522f3);}const _0x1b9965=await fetch(API_BASE+'/tasks/'+_0x5b874e+(_0x1c1efd['toString']()?'?'+_0x1c1efd['toString']():''));if(!_0x1b9965['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1b9965['statusText']);return await _0x1b9965['json']();},async 'getTaskResults'(_0x2483e5){const _0x1a66d0=await fetch(API_BASE+'/tasks/'+_0x2483e5+'/results');if(!_0x1a66d0['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x1a66d0['statusText']);return await _0x1a66d0['json']();},async 'getTaskPatches'(_0x5c4a0c){const _0x48e501=await fetch(API_BASE+'/tasks/'+_0x5c4a0c+'/patches');if(!_0x48e501['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x48e501['statusText']);return await _0x48e501['json']();},async 'getTaskAttachments'(_0x5723d8){const _0x1e9a8d=await fetch(API_BASE+'/tasks/'+_0x5723d8+'/attachments');if(!_0x1e9a8d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1e9a8d['statusText']);return await _0x1e9a8d['json']();},async 'uploadAttachments'(_0x120561,_0x1b9c13){const _0x11ac9b=new FormData();for(const _0x4ff65e of _0x1b9c13){_0x11ac9b['append']('attachments',_0x4ff65e);}const _0x33af24=await fetch(API_BASE+'/tasks/'+_0x120561+'/attachments',{'method':'POST','body':_0x11ac9b});if(!_0x33af24['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x33af24['statusText']);return await _0x33af24['json']();},async 'isAINameGenerationAvailable'(){try{const _0x2ccd00=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x2ccd00['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x2ccd00['json']();}catch(_0x3fac95){return{'available':![],'reason':_0x3fac95['message']};}},async 'generateTaskName'(_0x588016){try{const _0x40354b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x588016})});return await _0x40354b['json']();}catch(_0x3deb32){return{'success':![],'error':_0x3deb32['message']};}},async 'createTask'(_0x55b290){let _0x46a36d,_0x146983={};if(_0x55b290['files']&&_0x55b290['files']['length']>0x0){const _0x393182=new FormData();for(const [_0x50e4a2,_0x11259c]of Object['entries'](_0x55b290)){if(_0x50e4a2!=='files'){if(_0x11259c==null)continue;typeof _0x11259c==='object'?_0x393182['append'](_0x50e4a2,JSON['stringify'](_0x11259c)):_0x393182['append'](_0x50e4a2,String(_0x11259c));}}for(const _0x59c05d of _0x55b290['files']){_0x393182['append']('attachments',_0x59c05d);}_0x46a36d=_0x393182;}else _0x146983['Content-Type']='application/json',_0x46a36d=JSON['stringify'](_0x55b290);const _0x3af45b=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x146983,'body':_0x46a36d});if(!_0x3af45b['ok']){const _0x50dcfc=await _0x3af45b['json'](),_0x204262=new Error(_0x50dcfc['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3af45b['statusText']),{message:_0x3e646c,..._0x1a578d}=_0x50dcfc;Object['assign'](_0x204262,_0x1a578d);throw _0x204262;}return await _0x3af45b['json']();},async 'createTestTask'(_0x44bc25){const _0x3c922f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44bc25)});if(!_0x3c922f['ok']){const _0x59c3f0=await _0x3c922f['json']();throw new Error(_0x59c3f0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c922f['statusText']);}return await _0x3c922f['json']();},async 'createEphemeralTest'(_0x551218){const _0x3a14a6=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x551218)});if(!_0x3a14a6['ok']){const _0x56db92=await _0x3a14a6['json']();throw new Error(_0x56db92['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3a14a6['statusText']);}return await _0x3a14a6['json']();},async 'createDeployTask'(_0x46ce22){const _0x3801fe=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46ce22)});if(!_0x3801fe['ok']){const _0x3fadae=await _0x3801fe['json']();throw new Error(_0x3fadae['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3801fe['statusText']);}return await _0x3801fe['json']();},async 'getEnvironments'(){const _0x3c78a9=await fetch(API_BASE+'/environments');if(!_0x3c78a9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3c78a9['statusText']);return await _0x3c78a9['json']();},async 'getEnvironment'(_0x5a7e48){const _0x14b3c2=await fetch(API_BASE+'/environments/'+_0x5a7e48);if(!_0x14b3c2['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x14b3c2['statusText']);return await _0x14b3c2['json']();},async 'getEnvironmentRepoHistory'(_0x1bf872,_0x199d40,_0xa369d4={}){if(!_0x1bf872||!_0x199d40)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xae5151=new URLSearchParams();if(_0xa369d4['limit'])_0xae5151['set']('limit',String(_0xa369d4['limit']));if(_0xa369d4['offset'])_0xae5151['set']('offset',String(_0xa369d4['offset']));if(_0xa369d4['search'])_0xae5151['set']('search',String(_0xa369d4['search']));if(_0xa369d4['branch'])_0xae5151['set']('branch',String(_0xa369d4['branch']));const _0xb04b65=API_BASE+'/environments/'+encodeURIComponent(_0x1bf872)+'/repos/'+encodeURIComponent(_0x199d40)+'/git/history',_0x245574=await fetch(''+_0xb04b65+(_0xae5151['toString']()?'?'+_0xae5151['toString']():''));if(!_0x245574['ok']){const _0x5830bb=await _0x245574['json']()['catch'](()=>({}));throw new Error(_0x5830bb['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x245574['statusText']);}return await _0x245574['json']();},async 'getEnvironmentRepoCommit'(_0x134eb1,_0x23d998,_0x325271){if(!_0x134eb1||!_0x23d998||!_0x325271)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21976c=API_BASE+'/environments/'+encodeURIComponent(_0x134eb1)+'/repos/'+encodeURIComponent(_0x23d998)+'/git/commits/'+encodeURIComponent(_0x325271),_0x32a18d=await fetch(_0x21976c);if(!_0x32a18d['ok']){const _0x259f71=await _0x32a18d['json']()['catch'](()=>({}));throw new Error(_0x259f71['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x32a18d['statusText']);}return await _0x32a18d['json']();},async 'getEnvironmentRepoBranches'(_0x18b54a,_0x54ab38){if(!_0x18b54a||!_0x54ab38)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x130ecb=API_BASE+'/environments/'+encodeURIComponent(_0x18b54a)+'/repos/'+encodeURIComponent(_0x54ab38)+'/git/branches',_0x801dc7=await fetch(_0x130ecb);if(!_0x801dc7['ok']){const _0x5bf7c8=await _0x801dc7['json']()['catch'](()=>({}));throw new Error(_0x5bf7c8['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x801dc7['statusText']);}return await _0x801dc7['json']();},async 'revertEnvironmentRepoCommit'(_0x4d28cb,_0x2a89d0,_0x5945be,_0x5b286e={}){if(!_0x4d28cb||!_0x2a89d0||!_0x5945be)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x49557a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4d28cb)+'/repos/'+encodeURIComponent(_0x2a89d0)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x5945be,..._0x5b286e})});if(!_0x49557a['ok']){const _0x50fa24=await _0x49557a['json']()['catch'](()=>({}));throw new Error(_0x50fa24['message']||_0x50fa24['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x49557a['statusText']);}return await _0x49557a['json']();},async 'getTemplates'(_0x222585={}){const _0x429c07=new URLSearchParams();if(_0x222585['include']){const _0xa31d26=Array['isArray'](_0x222585['include'])?_0x222585['include']['join'](','):String(_0x222585['include']);if(_0xa31d26)_0x429c07['set']('include',_0xa31d26);}const _0x31541e=await fetch(API_BASE+'/templates'+(_0x429c07['toString']()?'?'+_0x429c07['toString']():''));if(!_0x31541e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x31541e['statusText']);return await _0x31541e['json']();},async 'getTemplatesForEnvironment'(_0x558e51,_0x1e2782={}){if(!_0x558e51)throw new Error('Environment\x20name\x20is\x20required');const _0x1b0afa=new URLSearchParams();if(_0x1e2782['include']){const _0x244f8c=Array['isArray'](_0x1e2782['include'])?_0x1e2782['include']['join'](','):String(_0x1e2782['include']);if(_0x244f8c)_0x1b0afa['set']('include',_0x244f8c);}const _0x2b361d=await fetch(API_BASE+'/templates/'+_0x558e51+(_0x1b0afa['toString']()?'?'+_0x1b0afa['toString']():''));if(!_0x2b361d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x558e51+':\x20'+_0x2b361d['statusText']);return await _0x2b361d['json']();},async 'getTemplate'(_0x497071,_0x1e4941,_0x52e211={}){if(!_0x497071||!_0x1e4941)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x550665=new URLSearchParams();if(_0x52e211['include']){const _0x7d9676=Array['isArray'](_0x52e211['include'])?_0x52e211['include']['join'](','):String(_0x52e211['include']);if(_0x7d9676)_0x550665['set']('include',_0x7d9676);}const _0x2f5831=await fetch(API_BASE+'/templates/'+_0x497071+'/'+_0x1e4941+(_0x550665['toString']()?'?'+_0x550665['toString']():''));if(!_0x2f5831['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2f5831['statusText']);return await _0x2f5831['json']();},async 'getTaskLogs'(_0x4c2d77,_0x338116={}){if(!_0x4c2d77)throw new Error('Task\x20ID\x20is\x20required');const _0x2edefd=new URLSearchParams();_0x338116['tail']&&_0x2edefd['set']('tail',String(_0x338116['tail']));const _0x781017=await fetch(API_BASE+'/tasks/'+_0x4c2d77+'/logs'+(_0x2edefd['toString']()?'?'+_0x2edefd['toString']():''));if(!_0x781017['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x781017['statusText']);return await _0x781017['text']();},async 'getContainers'(){const _0x1deb60=await fetch(API_BASE+'/containers');if(!_0x1deb60['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1deb60['statusText']);return await _0x1deb60['json']();},async 'getContainer'(_0x426ebf){const _0x1f7056=await fetch(API_BASE+'/containers/'+_0x426ebf);if(!_0x1f7056['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1f7056['statusText']);return await _0x1f7056['json']();},async 'startInteractiveContainer'(_0x13b626){const _0x185077=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13b626)});if(!_0x185077['ok']){const _0x21ef38=await _0x185077['json']()['catch'](()=>({}));throw new Error(_0x21ef38['message']||'Failed\x20to\x20start\x20container:\x20'+_0x185077['statusText']);}return await _0x185077['json']();},async 'startContainerCodeServer'(_0x2573dc,_0x232318={}){if(!_0x2573dc)throw new Error('Container\x20ID\x20is\x20required');const _0x5cc505=new URLSearchParams();_0x232318['theme']&&_0x5cc505['set']('theme',_0x232318['theme']);const _0xaf622a=await fetch(API_BASE+'/containers/'+_0x2573dc+'/code-server'+(_0x5cc505['toString']()?'?'+_0x5cc505['toString']():'')),_0x43f654=await _0xaf622a['json']()['catch'](()=>({}));if(!_0xaf622a['ok'])throw new Error(_0x43f654['message']||_0x43f654['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0xaf622a['statusText']);return _0x43f654;},async 'stopContainer'(_0x286d5f){const _0x55477c=await fetch(API_BASE+'/containers/'+_0x286d5f,{'method':'DELETE'});if(!_0x55477c['ok']){const _0x20937f=await _0x55477c['json']()['catch'](()=>({}));throw new Error(_0x20937f['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x55477c['statusText']);}return await _0x55477c['json']();},async 'stopTask'(_0x32cad8){if(!_0x32cad8)throw new Error('Task\x20ID\x20is\x20required');const _0x204c5c=await fetch(API_BASE+'/tasks/'+_0x32cad8+'/stop',{'method':'POST'});if(!_0x204c5c['ok']){const _0x50782e=await _0x204c5c['json']()['catch'](()=>({}));throw new Error(_0x50782e['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x204c5c['statusText']);}return await _0x204c5c['json']();},async 'interruptTask'(_0x27e2eb){if(!_0x27e2eb)throw new Error('Task\x20ID\x20is\x20required');const _0x50c14a=await fetch(API_BASE+'/tasks/'+_0x27e2eb+'/interrupt',{'method':'POST'});if(!_0x50c14a['ok']){const _0x4fc022=await _0x50c14a['json']()['catch'](()=>({}));throw new Error(_0x4fc022['error']||_0x4fc022['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x50c14a['statusText']);}return await _0x50c14a['json']();},async 'startTask'(_0x3d8360){if(!_0x3d8360)throw new Error('Task\x20ID\x20is\x20required');const _0x431129=await fetch(API_BASE+'/tasks/'+_0x3d8360+'/start',{'method':'POST'});if(!_0x431129['ok']){const _0x4321cc=await _0x431129['json']()['catch'](()=>({}));throw new Error(_0x4321cc['error']||'Failed\x20to\x20start\x20task:\x20'+_0x431129['statusText']);}return await _0x431129['json']();},async 'deleteTask'(_0x11af7f){if(!_0x11af7f)throw new Error('Task\x20ID\x20is\x20required');const _0x113253=await fetch(API_BASE+'/tasks/'+_0x11af7f,{'method':'DELETE'});if(!_0x113253['ok']){const _0x212e89=await _0x113253['json']()['catch'](()=>({}));throw new Error(_0x212e89['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x113253['statusText']);}return await _0x113253['json']();},async 'refreshTasksFromDisk'(){const _0x550980=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x550980['ok']){const _0xe7c612=await _0x550980['json']()['catch'](()=>({}));throw new Error(_0xe7c612['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x550980['statusText']);}return await _0x550980['json']();},async 'approveTask'(_0x20e537,_0x48347c={}){if(!_0x20e537)throw new Error('Task\x20ID\x20is\x20required');const _0x458e56={'commit_message':_0x48347c['commit_message']||'','pull':_0x48347c['pull']??![],'push':_0x48347c['push']??![],'conflict_strategy':_0x48347c['conflict_strategy']||'rebase'};_0x48347c['new_branch']&&(_0x458e56['new_branch']=_0x48347c['new_branch']);const _0x296163=await fetch(API_BASE+'/tasks/'+_0x20e537+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x458e56)});if(!_0x296163['ok']){const _0x21c1bc=await _0x296163['json']()['catch'](()=>({}));let _0x2c76a5=_0x21c1bc['error']||_0x21c1bc['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x296163['statusText'];if(_0x21c1bc['results']&&Array['isArray'](_0x21c1bc['results'])){const _0xc6d83a=_0x21c1bc['results']['filter'](_0x32a9e0=>!_0x32a9e0['success']&&_0x32a9e0['error']);_0xc6d83a['length']>0x0&&(_0x2c76a5=_0xc6d83a[0x0]['error']);}const _0x13978e=new Error(_0x2c76a5);_0x13978e['hasConflicts']=_0x21c1bc['results']?.['some'](_0x27a9d5=>_0x27a9d5['conflict'])||![];throw _0x13978e;}return await _0x296163['json']();},async 'getPullRequestInfo'(_0x380435){if(!_0x380435)throw new Error('Task\x20ID\x20is\x20required');const _0x4d78bb=await fetch(API_BASE+'/tasks/'+_0x380435+'/pull-request-info');if(!_0x4d78bb['ok']){const _0x49f6a0=await _0x4d78bb['json']()['catch'](()=>({}));throw new Error(_0x49f6a0['error']||_0x49f6a0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4d78bb['statusText']);}return await _0x4d78bb['json']();},async 'createPullRequests'(_0x399535,_0x308a46){if(!_0x399535)throw new Error('Task\x20ID\x20is\x20required');if(!_0x308a46||!Array['isArray'](_0x308a46))throw new Error('repos\x20array\x20is\x20required');const _0x5c88b4=await fetch(API_BASE+'/tasks/'+_0x399535+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x308a46})});if(!_0x5c88b4['ok']){const _0x390e15=await _0x5c88b4['json']()['catch'](()=>({}));let _0x5c9ca6=_0x390e15['error']||_0x390e15['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5c88b4['statusText'];if(_0x390e15['results']&&Array['isArray'](_0x390e15['results'])){const _0x396d42=_0x390e15['results']['filter'](_0x849e4=>!_0x849e4['success']&&_0x849e4['error']);_0x396d42['length']>0x0&&(_0x5c9ca6=_0x396d42[0x0]['error']);}throw new Error(_0x5c9ca6);}return await _0x5c88b4['json']();},async 'syncRepos'(_0x197422){if(!_0x197422)throw new Error('Task\x20ID\x20is\x20required');const _0x56b347=await fetch(API_BASE+'/tasks/'+_0x197422+'/sync-repos',{'method':'POST'});if(!_0x56b347['ok']){const _0x3a191f=await _0x56b347['json']()['catch'](()=>({}));throw new Error(_0x3a191f['error']||_0x3a191f['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x56b347['statusText']);}return await _0x56b347['json']();},async 'getIbmiSyncInfo'(_0x32a851){if(!_0x32a851)throw new Error('Task\x20ID\x20is\x20required');const _0x10f6a0=await fetch(API_BASE+'/tasks/'+_0x32a851+'/ibmi-sync-info');if(!_0x10f6a0['ok']){const _0x24e72d=await _0x10f6a0['json']()['catch'](()=>({}));throw new Error(_0x24e72d['error']||_0x24e72d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x10f6a0['json']();},async 'getSyncFiles'(_0x3eb3ba){if(!_0x3eb3ba)throw new Error('Task\x20ID\x20is\x20required');const _0x48371f=await fetch(API_BASE+'/tasks/'+_0x3eb3ba+'/sync-to-ibmi/files');if(!_0x48371f['ok']){const _0x5251f9=await _0x48371f['json']()['catch'](()=>({}));throw new Error(_0x5251f9['error']||_0x5251f9['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x48371f['json']();},async 'syncToIbmi'(_0x45001c,_0x3351db,_0x16dfd7=null,_0x3d123c=null,_0x12234b=null){if(!_0x45001c)throw new Error('Task\x20ID\x20is\x20required');const _0x2e5299={'library':_0x3351db};if(_0x16dfd7)_0x2e5299['user']=_0x16dfd7;if(_0x3d123c)_0x2e5299['password']=_0x3d123c;if(_0x12234b)_0x2e5299['files']=_0x12234b;const _0x3aff33=await fetch(API_BASE+'/tasks/'+_0x45001c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e5299)});if(!_0x3aff33['ok']){const _0x51f489=await _0x3aff33['json']()['catch'](()=>({}));throw new Error(_0x51f489['error']||_0x51f489['message']||'Sync\x20failed');}return await _0x3aff33['json']();},async 'getIbmiSyncLog'(_0x537e1c){if(!_0x537e1c)throw new Error('Task\x20ID\x20is\x20required');const _0x12ff54=await fetch(API_BASE+'/tasks/'+_0x537e1c+'/ibmi-sync-log');if(!_0x12ff54['ok']){const _0x5ac2fb=await _0x12ff54['json']()['catch'](()=>({}));throw new Error(_0x5ac2fb['error']||_0x5ac2fb['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x12ff54['json']();},async 'pullChanges'(_0x1a0b22){if(!_0x1a0b22)throw new Error('Task\x20ID\x20is\x20required');const _0x4d03cd=await fetch(API_BASE+'/tasks/'+_0x1a0b22+'/pull-changes',{'method':'POST'});if(!_0x4d03cd['ok']){const _0x25b1f0=await _0x4d03cd['json']()['catch'](()=>({}));throw new Error(_0x25b1f0['error']||_0x25b1f0['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4d03cd['statusText']);}return await _0x4d03cd['json']();},async 'readFile'(_0x136eb7,_0x28672f){if(!_0x136eb7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28672f)throw new Error('File\x20path\x20is\x20required');const _0x2eed69=await fetch(API_BASE+'/tasks/'+_0x136eb7+'/files?path='+encodeURIComponent(_0x28672f));if(!_0x2eed69['ok']){const _0x13f526=await _0x2eed69['json']()['catch'](()=>({}));throw new Error(_0x13f526['error']||_0x13f526['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2eed69['statusText']);}return await _0x2eed69['json']();},'getTaskFileDownloadUrl'(_0x242727,_0x5f1413){if(!_0x242727)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5f1413)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x242727+'/files/download?path='+encodeURIComponent(_0x5f1413);},async 'writeFile'(_0x369780,_0x1c6c1d,_0x1392a5){if(!_0x369780)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c6c1d)throw new Error('File\x20path\x20is\x20required');if(_0x1392a5===undefined)throw new Error('Content\x20is\x20required');const _0x5790d6=await fetch(API_BASE+'/tasks/'+_0x369780+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1c6c1d,'content':_0x1392a5})});if(!_0x5790d6['ok']){const _0x805679=await _0x5790d6['json']()['catch'](()=>({}));throw new Error(_0x805679['error']||_0x805679['message']||'Failed\x20to\x20write\x20file:\x20'+_0x5790d6['statusText']);}return await _0x5790d6['json']();},async 'uploadTaskFiles'(_0x490017,_0xe39deb,_0x589741){if(!_0x490017)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe39deb)throw new Error('Target\x20directory\x20is\x20required');if(!_0x589741||_0x589741['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x356912=new FormData();_0x356912['append']('targetDir',_0xe39deb);for(const _0x98d20a of _0x589741){_0x356912['append']('files',_0x98d20a,_0x98d20a['name']);}const _0x1f7e23=await fetch(API_BASE+'/tasks/'+_0x490017+'/files/upload',{'method':'POST','body':_0x356912});if(!_0x1f7e23['ok']){const _0x36a3b3=await _0x1f7e23['json']()['catch'](()=>({}));throw new Error(_0x36a3b3['error']||_0x36a3b3['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1f7e23['statusText']);}return await _0x1f7e23['json']();},async 'createDirectory'(_0x370bff,_0x50a012){if(!_0x370bff)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50a012)throw new Error('Directory\x20path\x20is\x20required');const _0x7927d0=await fetch(API_BASE+'/tasks/'+_0x370bff+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x50a012})});if(!_0x7927d0['ok']){const _0x2d0c9f=await _0x7927d0['json']()['catch'](()=>({}));throw new Error(_0x2d0c9f['error']||_0x2d0c9f['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x7927d0['statusText']);}return await _0x7927d0['json']();},async 'renamePath'(_0x21af16,_0xe56c,_0x516436){if(!_0x21af16)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe56c)throw new Error('Source\x20path\x20is\x20required');if(!_0x516436)throw new Error('Destination\x20path\x20is\x20required');const _0x10e18a=await fetch(API_BASE+'/tasks/'+_0x21af16+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0xe56c,'newPath':_0x516436})});if(!_0x10e18a['ok']){const _0x558424=await _0x10e18a['json']()['catch'](()=>({}));throw new Error(_0x558424['error']||_0x558424['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x10e18a['statusText']);}return await _0x10e18a['json']();},async 'deleteFile'(_0x2207b6,_0x5ac070){if(!_0x2207b6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ac070)throw new Error('File\x20path\x20is\x20required');const _0x93f415=await fetch(API_BASE+'/tasks/'+_0x2207b6+'/files?path='+encodeURIComponent(_0x5ac070),{'method':'DELETE'});if(!_0x93f415['ok']){const _0x19ad17=await _0x93f415['json']()['catch'](()=>({}));throw new Error(_0x19ad17['error']||_0x19ad17['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x93f415['statusText']);}return await _0x93f415['json']();},async 'deleteDirectory'(_0x595d93,_0x23d0b5){if(!_0x595d93)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23d0b5)throw new Error('Directory\x20path\x20is\x20required');const _0x4d3523=await fetch(API_BASE+'/tasks/'+_0x595d93+'/files/directory?path='+encodeURIComponent(_0x23d0b5),{'method':'DELETE'});if(!_0x4d3523['ok']){const _0x1d59be=await _0x4d3523['json']()['catch'](()=>({}));throw new Error(_0x1d59be['error']||_0x1d59be['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4d3523['statusText']);}return await _0x4d3523['json']();},async 'discardFile'(_0x51e38f,_0x545875,_0x52d636){if(!_0x51e38f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x545875)throw new Error('File\x20path\x20is\x20required');if(!_0x52d636)throw new Error('Repository\x20path\x20is\x20required');const _0x12ee6e=await fetch(API_BASE+'/tasks/'+_0x51e38f+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x545875,'repoPath':_0x52d636})});if(!_0x12ee6e['ok']){const _0x3699d4=await _0x12ee6e['json']()['catch'](()=>({}));throw new Error(_0x3699d4['error']||_0x3699d4['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x12ee6e['statusText']);}return await _0x12ee6e['json']();},async 'followUpTask'(_0xc67766,_0x288a92={}){if(!_0xc67766)throw new Error('Task\x20ID\x20is\x20required');if(!_0x288a92['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x352351,_0xb06d1b={};if(_0x288a92['files']&&_0x288a92['files']['length']>0x0){const _0x4a1448=new FormData();_0x4a1448['append']('instructions',_0x288a92['instructions']);for(const _0x3e4a16 of _0x288a92['files']){_0x4a1448['append']('attachments',_0x3e4a16);}_0x352351=_0x4a1448;}else _0xb06d1b['Content-Type']='application/json',_0x352351=JSON['stringify']({'instructions':_0x288a92['instructions']});const _0x29e94c=await fetch(API_BASE+'/tasks/'+_0xc67766+'/follow-up',{'method':'POST','headers':_0xb06d1b,'body':_0x352351});if(!_0x29e94c['ok']){const _0x25e3b8=await _0x29e94c['json']()['catch'](()=>({}));throw new Error(_0x25e3b8['error']||_0x25e3b8['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x29e94c['statusText']);}return await _0x29e94c['json']();},async 'getTaskRewindPoints'(_0x411d38){if(!_0x411d38)throw new Error('Task\x20ID\x20is\x20required');const _0x1b07ee=await fetch(API_BASE+'/tasks/'+_0x411d38+'/rewind-points');if(!_0x1b07ee['ok']){const _0x264c5a=await _0x1b07ee['json']()['catch'](()=>({}));throw new Error(_0x264c5a['error']||_0x264c5a['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1b07ee['statusText']);}return await _0x1b07ee['json']();},async 'rewindTask'(_0x1d36f7,_0x166ab8={}){if(!_0x1d36f7)throw new Error('Task\x20ID\x20is\x20required');const _0x3064d8=Number['isInteger'](_0x166ab8['targetFollowUpCount'])?_0x166ab8['targetFollowUpCount']:0x0,_0x3d02ed={'targetFollowUpCount':_0x3064d8};typeof _0x166ab8['instructions']==='string'&&_0x166ab8['instructions']['trim']()&&(_0x3d02ed['instructions']=_0x166ab8['instructions']['trim']());typeof _0x166ab8['rewindFiles']==='boolean'&&(_0x3d02ed['rewindFiles']=_0x166ab8['rewindFiles']);const _0x365313=await fetch(API_BASE+'/tasks/'+_0x1d36f7+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d02ed)});if(!_0x365313['ok']){const _0x183a02=await _0x365313['json']()['catch'](()=>({}));throw new Error(_0x183a02['error']||_0x183a02['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x365313['statusText']);}return await _0x365313['json']();},async 'login'(_0x4a458f,_0x5c0aeb){const _0x46c011=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4a458f,'password':_0x5c0aeb})});if(!_0x46c011['ok']){const _0x1ed7da=await _0x46c011['json']();throw new Error(_0x1ed7da['message']||'Login\x20failed');}return await _0x46c011['json']();},async 'logout'(){const _0x4f759b=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4f759b['ok']){const _0x1946d1=await _0x4f759b['json']();throw new Error(_0x1946d1['message']||'Logout\x20failed');}return await _0x4f759b['json']();},async 'getCurrentUser'(){const _0x574475=await fetch(API_BASE+'/auth/me');if(!_0x574475['ok'])throw new Error('Not\x20authenticated');const _0x565aa0=await _0x574475['json']();return _0x565aa0['user'];},async 'getRolesInfo'(){const _0x5889e7=await fetch(API_BASE+'/users/roles');if(!_0x5889e7['ok']){const _0x145c93=await _0x5889e7['json']();throw new Error(_0x145c93['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x5889e7['json']();},async 'getUsers'(){const _0x38c4cc=await fetch(API_BASE+'/users');if(!_0x38c4cc['ok']){const _0x3b108c=await _0x38c4cc['json']();throw new Error(_0x3b108c['message']||'Failed\x20to\x20get\x20users');}return await _0x38c4cc['json']();},async 'getUser'(_0x352e9d){const _0x454440=await fetch(API_BASE+'/users/'+_0x352e9d);if(!_0x454440['ok']){const _0x21598b=await _0x454440['json']();throw new Error(_0x21598b['message']||'Failed\x20to\x20get\x20user');}return await _0x454440['json']();},async 'createUser'(_0x21ea58){const _0x51aebc=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ea58)});if(!_0x51aebc['ok']){const _0x1f69bd=await _0x51aebc['json']();throw new Error(_0x1f69bd['message']||'Failed\x20to\x20create\x20user');}return await _0x51aebc['json']();},async 'updateUser'(_0x539c97,_0x13e896){const _0x57942c=await fetch(API_BASE+'/users/'+_0x539c97,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13e896)});if(!_0x57942c['ok']){const _0x4049bf=await _0x57942c['json']();throw new Error(_0x4049bf['message']||'Failed\x20to\x20update\x20user');}return await _0x57942c['json']();},async 'deleteUser'(_0x1aa5b2){const _0x17c764=await fetch(API_BASE+'/users/'+_0x1aa5b2,{'method':'DELETE'});if(!_0x17c764['ok']){const _0x6fa0e8=await _0x17c764['json']();throw new Error(_0x6fa0e8['message']||'Failed\x20to\x20delete\x20user');}return await _0x17c764['json']();},async 'stopAllContainers'(){const _0x4ef704=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2eaed6=await _0x4ef704['json']()['catch'](()=>({}));if(!_0x4ef704['ok'])throw new Error(_0x2eaed6['message']||_0x2eaed6['error']||'Failed\x20to\x20stop\x20containers');return _0x2eaed6;},async 'removeStoppedContainers'(){const _0xd8c465=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x62293f=await _0xd8c465['json']()['catch'](()=>({}));if(!_0xd8c465['ok'])throw new Error(_0x62293f['message']||_0x62293f['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x62293f;},async 'pruneDockerResources'(){const _0x1e0488=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x486af1=await _0x1e0488['json']()['catch'](()=>({}));if(!_0x1e0488['ok'])throw new Error(_0x486af1['message']||_0x486af1['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x486af1;},async 'getUpdateSettings'(){const _0x554259=await fetch(API_BASE+'/health/update-settings'),_0x2c693e=await _0x554259['json']()['catch'](()=>({}));if(!_0x554259['ok'])throw new Error(_0x2c693e['message']||_0x2c693e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x2c693e;},async 'applyServerUpdate'(_0x3b5294){const _0x121ed4=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x3b5294})}),_0x5750f1=await _0x121ed4['json']()['catch'](()=>({}));if(!_0x121ed4['ok']){const _0x4f0ee1=new Error(_0x5750f1['message']||_0x5750f1['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x5750f1['output']!==undefined)_0x4f0ee1['output']=_0x5750f1['output'];if(_0x5750f1['error']!==undefined)_0x4f0ee1['commandError']=_0x5750f1['error'];throw _0x4f0ee1;}return _0x5750f1;},async 'restartServer'(){const _0xd62c14=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0xece1c4=await _0xd62c14['json']()['catch'](()=>({}));if(!_0xd62c14['ok'])throw new Error(_0xece1c4['message']||_0xece1c4['error']||'Failed\x20to\x20restart\x20server');return _0xece1c4;},async 'getDockerContainers'(){const _0x2c7dc9=await fetch(API_BASE+'/health/containers'),_0x27d5ed=await _0x2c7dc9['json']()['catch'](()=>({}));if(!_0x2c7dc9['ok'])throw new Error(_0x27d5ed['message']||_0x27d5ed['error']||'Failed\x20to\x20load\x20containers');return _0x27d5ed;},async 'getDockerImages'(){const _0x1be16d=await fetch(API_BASE+'/health/docker/images'),_0xae16a1=await _0x1be16d['json']()['catch'](()=>({}));if(!_0x1be16d['ok'])throw new Error(_0xae16a1['message']||_0xae16a1['error']||'Failed\x20to\x20load\x20images');return _0xae16a1;},async 'getDockerVolumes'(){const _0x154fc8=await fetch(API_BASE+'/health/docker/volumes'),_0x1209c4=await _0x154fc8['json']()['catch'](()=>({}));if(!_0x154fc8['ok'])throw new Error(_0x1209c4['message']||_0x1209c4['error']||'Failed\x20to\x20load\x20volumes');return _0x1209c4;},async 'getActiveSessions'(){const _0x5e6319=await fetch(API_BASE+'/health/sessions'),_0x40489b=await _0x5e6319['json']()['catch'](()=>({}));if(!_0x5e6319['ok'])throw new Error(_0x40489b['message']||_0x40489b['error']||'Failed\x20to\x20load\x20sessions');return _0x40489b;},async 'getSystemInfo'(){const _0x4bb39d=await fetch(API_BASE+'/health/system'),_0x26e506=await _0x4bb39d['json']()['catch'](()=>({}));if(!_0x4bb39d['ok'])throw new Error(_0x26e506['message']||_0x26e506['error']||'Failed\x20to\x20load\x20system\x20info');return _0x26e506;},async 'stopDockerContainer'(_0x4aa583){const _0x42cd0a=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x4aa583)+'/stop',{'method':'POST'}),_0x1f6a58=await _0x42cd0a['json']()['catch'](()=>({}));if(!_0x42cd0a['ok'])throw new Error(_0x1f6a58['message']||_0x1f6a58['error']||'Failed\x20to\x20stop\x20container');return _0x1f6a58;},async 'removeDockerContainer'(_0x4adf1){const _0x5f5b4a=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x4adf1),{'method':'DELETE'}),_0x108d5d=await _0x5f5b4a['json']()['catch'](()=>({}));if(!_0x5f5b4a['ok'])throw new Error(_0x108d5d['message']||_0x108d5d['error']||'Failed\x20to\x20remove\x20container');return _0x108d5d;},async 'createPasswordToken'(_0x29d4ca,_0x68e4c0='setup',_0x93732d=![]){const _0x51843c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x29d4ca,'type':_0x68e4c0,'sendEmail':_0x93732d})});if(!_0x51843c['ok']){const _0x474dca=await _0x51843c['json']();throw new Error(_0x474dca['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x51843c['json']();},async 'getEmailConfig'(){const _0x2729e0=await fetch(API_BASE+'/password/email-config');if(!_0x2729e0['ok']){const _0xb7cf76=await _0x2729e0['json']();throw new Error(_0xb7cf76['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2729e0['json']();},async 'updateTaskName'(_0x31ed69,_0x4b6dab){const _0x3c90a2=await fetch(API_BASE+'/tasks/'+_0x31ed69,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4b6dab})});if(!_0x3c90a2['ok']){const _0x50094a=await _0x3c90a2['json']();throw new Error(_0x50094a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3c90a2['json']();},async 'pinTask'(_0x22186b,_0x153c93,_0x5013d7=null){if(!_0x22186b)throw new Error('Task\x20ID\x20is\x20required');const _0x16b9a5={'pinned':_0x153c93};_0x5013d7&&_0x5013d7['length']>0x0&&(_0x16b9a5['additionalTaskIds']=_0x5013d7);const _0x413481=await fetch(API_BASE+'/tasks/'+_0x22186b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16b9a5)});if(!_0x413481['ok']){const _0x39afe8=await _0x413481['json']();throw new Error(_0x39afe8['error']||'Failed\x20to\x20pin\x20task');}return await _0x413481['json']();},async 'setTaskWinner'(_0x17638f,_0x27d8de,_0x13b4b4=[]){if(!_0x17638f)throw new Error('Task\x20ID\x20is\x20required');const _0x11b193=await fetch(API_BASE+'/tasks/'+_0x17638f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x27d8de,'siblings':_0x13b4b4})});if(!_0x11b193['ok']){const _0x5b7aee=await _0x11b193['json']();throw new Error(_0x5b7aee['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x11b193['json']();},async 'setTaskLoser'(_0x5399f5,_0x18fa65){if(!_0x5399f5)throw new Error('Task\x20ID\x20is\x20required');const _0x4ec4ce=await fetch(API_BASE+'/tasks/'+_0x5399f5+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x18fa65})});if(!_0x4ec4ce['ok']){const _0x142630=await _0x4ec4ce['json']();throw new Error(_0x142630['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4ec4ce['json']();},async 'createTaskGroup'(_0x25c38f){const _0x5ed3c6=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25c38f)});if(!_0x5ed3c6['ok']){const _0x3f26df=await _0x5ed3c6['json']();throw new Error(_0x3f26df['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x5ed3c6['json']();},async 'getTaskGroups'(_0x5a7d27={}){const _0x5d1731=new URLSearchParams();if(_0x5a7d27['userId'])_0x5d1731['set']('userId',String(_0x5a7d27['userId']));if(_0x5a7d27['status'])_0x5d1731['set']('status',String(_0x5a7d27['status']));if(_0x5a7d27['limit'])_0x5d1731['set']('limit',String(_0x5a7d27['limit']));const _0x4b741a=API_BASE+'/tasks/groups'+(_0x5d1731['toString']()?'?'+_0x5d1731['toString']():''),_0x557c20=await fetch(_0x4b741a);if(!_0x557c20['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x557c20['json']();},async 'getTaskGroup'(_0x1d16cf){const _0x2db40c=await fetch(API_BASE+'/tasks/groups/'+_0x1d16cf);if(!_0x2db40c['ok']){const _0x5b6b89=await _0x2db40c['json']();throw new Error(_0x5b6b89['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x2db40c['json']();},async 'updateTaskGroup'(_0x1729d7,_0x50a379,_0x24ff3f){const _0x41afb9=await fetch(API_BASE+'/tasks/'+_0x1729d7+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50a379,'groupIndex':_0x24ff3f})});if(!_0x41afb9['ok']){const _0x41e1fa=await _0x41afb9['json']();throw new Error(_0x41e1fa['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x41afb9['json']();},async 'removeTaskFromGroup'(_0x1c3243){return this['updateTaskGroup'](_0x1c3243,null,null);},async 'deleteTaskGroup'(_0x21ce27,_0x5b07a6=![]){const _0x637b66=_0x5b07a6?'?deleteTasks=true':'',_0x54aa7c=await fetch(API_BASE+'/tasks/groups/'+_0x21ce27+_0x637b66,{'method':'DELETE'});if(!_0x54aa7c['ok']){const _0x46ba7d=await _0x54aa7c['json']();throw new Error(_0x46ba7d['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3dbc2d,_0x30ea32){const _0xb844d7=await fetch(API_BASE+'/tasks/groups/'+_0x3dbc2d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x30ea32})});if(!_0xb844d7['ok']){const _0x3d2cc9=await _0xb844d7['json']();throw new Error(_0x3d2cc9['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xb844d7['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4fea0b){if(!_0x4fea0b)throw new Error('Task\x20ID\x20is\x20required');const _0x13859a=await fetch(API_BASE+'/tasks/'+_0x4fea0b+'/comments');if(!_0x13859a['ok']){const _0xc43a17=await _0x13859a['json']()['catch'](()=>({}));throw new Error(_0xc43a17['error']||'Failed\x20to\x20get\x20comments');}return await _0x13859a['json']();},async 'addComment'(_0x53907e,_0x322f32){if(!_0x53907e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x322f32)throw new Error('Comment\x20content\x20is\x20required');const _0x34fcda=await fetch(API_BASE+'/tasks/'+_0x53907e+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x322f32})});if(!_0x34fcda['ok']){const _0x4f5203=await _0x34fcda['json']()['catch'](()=>({}));throw new Error(_0x4f5203['error']||'Failed\x20to\x20add\x20comment');}return await _0x34fcda['json']();},async 'updateComment'(_0x47fbeb,_0x3593a5,_0x56f05f){if(!_0x47fbeb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3593a5)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x56f05f)throw new Error('Comment\x20content\x20is\x20required');const _0x3fdc95=await fetch(API_BASE+'/tasks/'+_0x47fbeb+'/comments/'+_0x3593a5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x56f05f})});if(!_0x3fdc95['ok']){const _0x5a572c=await _0x3fdc95['json']()['catch'](()=>({}));throw new Error(_0x5a572c['error']||'Failed\x20to\x20update\x20comment');}return await _0x3fdc95['json']();},async 'deleteComment'(_0x6354ef,_0x3990e9){if(!_0x6354ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3990e9)throw new Error('Comment\x20ID\x20is\x20required');const _0x15fa1c=await fetch(API_BASE+'/tasks/'+_0x6354ef+'/comments/'+_0x3990e9,{'method':'DELETE'});if(!_0x15fa1c['ok']){const _0x3a752e=await _0x15fa1c['json']()['catch'](()=>({}));throw new Error(_0x3a752e['error']||'Failed\x20to\x20delete\x20comment');}return await _0x15fa1c['json']();},async 'createObjective'(_0x5331b8){const _0xcee002={'objective':!![],'name':_0x5331b8['name']||'','environment':_0x5331b8['environment']||null,'agents':_0x5331b8['agents']||[],'branches':_0x5331b8['branches']||{},'isPinned':_0x5331b8['isPinned']||![],'parentObjectiveId':_0x5331b8['parentObjectiveId']||null,'env_vars':_0x5331b8['envVars']||{},'parameters':{'instructions':_0x5331b8['instructions']||''},'files':_0x5331b8['files']||[],'jira':_0x5331b8['jira']||null};return this['createTask'](_0xcee002);},async 'updateObjective'(_0x5e267d,_0x547ddc,_0x20c3db=[],_0x8f16cb=[]){let _0xc991df,_0x424a57={};const _0x3f258d={..._0x547ddc};_0x8f16cb&&_0x8f16cb['length']>0x0&&(_0x3f258d['removeAttachments']=_0x8f16cb);if(_0x20c3db&&_0x20c3db['length']>0x0){const _0x3a23be=new FormData();for(const [_0x83df65,_0x1c3e0e]of Object['entries'](_0x3f258d)){if(_0x1c3e0e==null)continue;typeof _0x1c3e0e==='object'?_0x3a23be['append'](_0x83df65,JSON['stringify'](_0x1c3e0e)):_0x3a23be['append'](_0x83df65,String(_0x1c3e0e));}for(const _0x3b6c4c of _0x20c3db){_0x3a23be['append']('attachments',_0x3b6c4c);}_0xc991df=_0x3a23be;}else _0x424a57['Content-Type']='application/json',_0xc991df=JSON['stringify'](_0x3f258d);const _0x489c76=await fetch(API_BASE+'/tasks/'+_0x5e267d,{'method':'PATCH','headers':_0x424a57,'body':_0xc991df});if(!_0x489c76['ok']){const _0x31c317=await _0x489c76['json']();throw new Error(_0x31c317['error']||'Failed\x20to\x20update\x20objective');}return await _0x489c76['json']();},async 'deleteObjective'(_0x5cd79b){return this['deleteTask'](_0x5cd79b);},async 'launchObjective'(_0x1937c2,_0xf03a95={}){const _0x1caea4=await fetch(API_BASE+'/tasks/'+_0x1937c2+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf03a95)});if(!_0x1caea4['ok']){const _0x215510=await _0x1caea4['json']();throw new Error(_0x215510['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1caea4['json']();},async 'getObjectiveAttachments'(_0x36e603){return this['getTaskAttachments'](_0x36e603);},async 'createJudgeTask'({environment:_0xea5b65,judgeAgent:_0x374856,groupId:_0x58b6ea,taskIds:_0x23d907,judgeCustomInstructions:_0x5c2108,isPinned:_0x10933f}){const _0x5cc159=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xea5b65,'judgeAgent':_0x374856,'groupId':_0x58b6ea,'taskIds':_0x23d907,'judgeCustomInstructions':_0x5c2108,'isPinned':_0x10933f})});if(!_0x5cc159['ok']){const _0x27e0f1=await _0x5cc159['json']();throw new Error(_0x27e0f1['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x5cc159['json']();},async 'getJudgeTasks'(_0x5b6339){const _0x39646d=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5b6339));if(!_0x39646d['ok']){const _0x3dcf52=await _0x39646d['json']();throw new Error(_0x3dcf52['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x39646d['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x21cbff,_0xca326a,_0x564b49=''){const _0x5a7853=await fetch(API_BASE+'/tasks/'+_0x21cbff+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0xca326a,'customPreamble':_0x564b49})});if(!_0x5a7853['ok']){const _0x34493a=await _0x5a7853['json']();throw new Error(_0x34493a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x5a7853['json']();},async 'getJiraConfig'(){const _0x7480c4=await fetch(API_BASE+'/jira/config');if(!_0x7480c4['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7480c4['json']();},async 'getJiraIssue'(_0x452e26){const _0x559e65=await fetch(API_BASE+'/jira/issues/'+_0x452e26);if(!_0x559e65['ok']){const _0x269ad6=await _0x559e65['json']()['catch'](()=>({}));throw new Error(_0x269ad6['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x559e65['statusText']);}return await _0x559e65['json']();},async 'searchJiraIssues'(_0xea36b6,_0x543283=0x14){const _0x268327=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xea36b6,'maxResults':_0x543283})});if(!_0x268327['ok']){const _0x2f3972=await _0x268327['json']()['catch'](()=>({}));throw new Error(_0x2f3972['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x268327['statusText']);}return await _0x268327['json']();},async 'postJiraComment'(_0x220953,_0x34d2a){const _0x59c499=await fetch(API_BASE+'/jira/issues/'+_0x220953+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x34d2a})});if(!_0x59c499['ok']){const _0x51e48b=await _0x59c499['json']()['catch'](()=>({}));throw new Error(_0x51e48b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x59c499['statusText']);}return await _0x59c499['json']();},async 'getJiraComments'(_0x4ced11){const _0x251029=await fetch(API_BASE+'/jira/issues/'+_0x4ced11+'/comments');if(!_0x251029['ok']){const _0x541071=await _0x251029['json']()['catch'](()=>({}));throw new Error(_0x541071['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x251029['statusText']);}return await _0x251029['json']();},async 'promptParameter'({environment:_0x2975e4,command:_0x5b9c95,parser:parser='json'}){const _0x3b3bc9=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2975e4,'command':_0x5b9c95,'parser':parser})});if(!_0x3b3bc9['ok']){const _0x33ff81=await _0x3b3bc9['json']()['catch'](()=>({}));throw new Error(_0x33ff81['message']||_0x33ff81['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x3b3bc9['statusText']);}return await _0x3b3bc9['json']();},async 'promptParameterStream'(_0x45beb3,_0x71c05f){const _0x4a5951=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45beb3)});if(!_0x4a5951['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4a5951['statusText']);const _0x1280c6=_0x4a5951['body']['getReader'](),_0x46506a=new TextDecoder();let _0x3f7ff3='';return new Promise((_0x1bc2e1,_0x26758d)=>{const _0x3743e0=async()=>{try{const {done:_0x2f8c43,value:_0x4cda78}=await _0x1280c6['read']();if(_0x2f8c43)return;_0x3f7ff3+=_0x46506a['decode'](_0x4cda78,{'stream':!![]});const _0x101182=_0x3f7ff3['split']('\x0a\x0a');_0x3f7ff3=_0x101182['pop']()||'';for(const _0x116a9f of _0x101182){if(!_0x116a9f['trim']())continue;const _0x4dcfbd=_0x116a9f['split']('\x0a');let _0x470902='message',_0x4c7b6c='';for(const _0x3e81ee of _0x4dcfbd){if(_0x3e81ee['startsWith']('event:'))_0x470902=_0x3e81ee['substring'](0x6)['trim']();else _0x3e81ee['startsWith']('data:')&&(_0x4c7b6c=_0x3e81ee['substring'](0x5)['trim']());}if(!_0x4c7b6c)continue;try{const _0x58577e=JSON['parse'](_0x4c7b6c);if(_0x470902==='progress'&&_0x71c05f)_0x71c05f(_0x58577e['stage'],_0x58577e['message']);else{if(_0x470902==='result'){_0x1bc2e1(_0x58577e);return;}else{if(_0x470902==='error'){let _0x185322=_0x58577e['message']||_0x58577e['error']||'Prompt\x20command\x20failed';_0x58577e['rawOutput']&&(_0x185322+='\x0a\x0aRaw\x20output:\x0a'+_0x58577e['rawOutput']);_0x26758d(new Error(_0x185322));return;}}}}catch(_0x379cc5){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x379cc5),console['error']('Event\x20type:',_0x470902),console['error']('Event\x20data:',_0x4c7b6c),console['error']('First\x20200\x20chars:',_0x4c7b6c['substring'](0x0,0xc8)),_0x26758d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x379cc5['message']+'\x0a\x0aData:\x20'+_0x4c7b6c['substring'](0x0,0x1f4)));return;}}_0x3743e0();}catch(_0xd4f26d){_0x26758d(_0xd4f26d);}};_0x3743e0();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4ef7d6){const _0xd37f44=await fetch(''+API_BASE+_0x4ef7d6);if(!_0xd37f44['ok']){const _0x146193=await _0xd37f44['json']()['catch'](()=>({'error':_0xd37f44['statusText']})),_0x1ba4ce=new Error(_0x146193['error']||_0x146193['message']||_0xd37f44['statusText']);if(_0x146193['detail']!==undefined)_0x1ba4ce['detail']=_0x146193['detail'];throw _0x1ba4ce;}return await _0xd37f44['json']();},async 'post'(_0x141149,_0x55352e){const _0x713bc8=await fetch(''+API_BASE+_0x141149,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55352e)});if(!_0x713bc8['ok']){const _0xbd888c=await _0x713bc8['json']()['catch'](()=>({'error':_0x713bc8['statusText']})),_0x2e0e50=new Error(_0xbd888c['error']||_0xbd888c['message']||_0x713bc8['statusText']);if(_0xbd888c['detail']!==undefined)_0x2e0e50['detail']=_0xbd888c['detail'];throw _0x2e0e50;}return await _0x713bc8['json']();},async 'put'(_0x2a27d4,_0x424e57){const _0x3c7312=await fetch(''+API_BASE+_0x2a27d4,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x424e57)});if(!_0x3c7312['ok']){const _0x1d1ced=await _0x3c7312['json']()['catch'](()=>({'error':_0x3c7312['statusText']})),_0x31fe0d=new Error(_0x1d1ced['error']||_0x1d1ced['message']||_0x3c7312['statusText']);if(_0x1d1ced['detail']!==undefined)_0x31fe0d['detail']=_0x1d1ced['detail'];throw _0x31fe0d;}return await _0x3c7312['json']();},async 'delete'(_0x1a8bde,_0x495dfe){const _0x283cc2={'method':'DELETE'};_0x495dfe&&(_0x283cc2['headers']={'Content-Type':'application/json'},_0x283cc2['body']=JSON['stringify'](_0x495dfe));const _0x1a9b67=await fetch(''+API_BASE+_0x1a8bde,_0x283cc2);if(!_0x1a9b67['ok']){const _0x34ecfe=await _0x1a9b67['json']()['catch'](()=>({'error':_0x1a9b67['statusText']})),_0x4929b6=new Error(_0x34ecfe['error']||_0x34ecfe['message']||_0x1a9b67['statusText']);if(_0x34ecfe['detail']!==undefined)_0x4929b6['detail']=_0x34ecfe['detail'];throw _0x4929b6;}return await _0x1a9b67['json']();},async 'getSkills'(){const _0x4dc163=await fetch(API_BASE+'/skills');if(!_0x4dc163['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4dc163['statusText']);return await _0x4dc163['json']();},async 'getSkill'(_0x3ee9ec){const _0x3294c5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3ee9ec));if(!_0x3294c5['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3294c5['statusText']);return await _0x3294c5['json']();},async 'createSkill'(_0xf09839){const _0x25d9f6=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf09839)});if(!_0x25d9f6['ok']){const _0x402cfb=await _0x25d9f6['json']()['catch'](()=>({'error':_0x25d9f6['statusText']})),_0x4cf438=new Error(_0x402cfb['error']||_0x402cfb['message']||_0x25d9f6['statusText']);if(_0x402cfb['detail']!==undefined)_0x4cf438['detail']=_0x402cfb['detail'];throw _0x4cf438;}return await _0x25d9f6['json']();},async 'updateSkill'(_0x187771,_0x1b14a0){const _0x32c325=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x187771),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b14a0)});if(!_0x32c325['ok']){const _0x23c3b9=await _0x32c325['json']()['catch'](()=>({'error':_0x32c325['statusText']})),_0x2fbddf=new Error(_0x23c3b9['error']||_0x23c3b9['message']||_0x32c325['statusText']);if(_0x23c3b9['detail']!==undefined)_0x2fbddf['detail']=_0x23c3b9['detail'];throw _0x2fbddf;}return await _0x32c325['json']();},async 'deleteSkill'(_0x350878){const _0x4ebc30=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x350878),{'method':'DELETE'});if(!_0x4ebc30['ok']){const _0x317838=await _0x4ebc30['json']()['catch'](()=>({'error':_0x4ebc30['statusText']})),_0x2cd3ef=new Error(_0x317838['error']||_0x317838['message']||_0x4ebc30['statusText']);if(_0x317838['detail']!==undefined)_0x2cd3ef['detail']=_0x317838['detail'];throw _0x2cd3ef;}return await _0x4ebc30['json']();},async 'getSkillFile'(_0x542969,_0x3ff4e0){const _0x55dfa6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x542969)+'/files/'+_0x3ff4e0);if(!_0x55dfa6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x55dfa6['statusText']);return await _0x55dfa6['json']();},async 'saveSkillFile'(_0x21bd5e,_0x4120d6,_0x4038f9){const _0x1f9bb6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x21bd5e)+'/files/'+_0x4120d6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4038f9})});if(!_0x1f9bb6['ok']){const _0x223601=await _0x1f9bb6['json']()['catch'](()=>({'error':_0x1f9bb6['statusText']})),_0x42e9ce=new Error(_0x223601['error']||_0x223601['message']||_0x1f9bb6['statusText']);if(_0x223601['detail']!==undefined)_0x42e9ce['detail']=_0x223601['detail'];throw _0x42e9ce;}return await _0x1f9bb6['json']();},async 'deleteSkillFile'(_0x11fdd5,_0x2681e9){const _0xfe9504=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x11fdd5)+'/files/'+_0x2681e9,{'method':'DELETE'});if(!_0xfe9504['ok']){const _0x3d647f=await _0xfe9504['json']()['catch'](()=>({'error':_0xfe9504['statusText']})),_0x2f7d22=new Error(_0x3d647f['error']||_0x3d647f['message']||_0xfe9504['statusText']);if(_0x3d647f['detail']!==undefined)_0x2f7d22['detail']=_0x3d647f['detail'];throw _0x2f7d22;}return await _0xfe9504['json']();},async 'pullSkills'(){const _0x638b3e=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x638b3e['ok']){const _0x52da7b=await _0x638b3e['json']()['catch'](()=>({'error':_0x638b3e['statusText']})),_0xc7f352=new Error(_0x52da7b['error']||_0x52da7b['message']||_0x638b3e['statusText']);if(_0x52da7b['detail']!==undefined)_0xc7f352['detail']=_0x52da7b['detail'];throw _0xc7f352;}return await _0x638b3e['json']();},async 'commitSkills'(_0x1787af,_0x70aa0a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x70aa0a,_0x2c1449=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1787af,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2c1449['ok']){const _0x3b7827=await _0x2c1449['json']()['catch'](()=>({'error':_0x2c1449['statusText']})),_0x3f2c32=new Error(_0x3b7827['error']||_0x3b7827['message']||_0x2c1449['statusText']);if(_0x3b7827['detail']!==undefined)_0x3f2c32['detail']=_0x3b7827['detail'];throw _0x3f2c32;}return await _0x2c1449['json']();},async 'discardSkillsChanges'(){const _0x29851f=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x29851f['ok']){const _0x45eaa0=await _0x29851f['json']()['catch'](()=>({'error':_0x29851f['statusText']})),_0x3065fa=new Error(_0x45eaa0['error']||_0x45eaa0['message']||_0x29851f['statusText']);if(_0x45eaa0['detail']!==undefined)_0x3065fa['detail']=_0x45eaa0['detail'];throw _0x3065fa;}return await _0x29851f['json']();},async 'getSkillCatalog'(){const _0x38577e=await fetch(API_BASE+'/external-skills/catalog');if(!_0x38577e['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x38577e['statusText']);return await _0x38577e['json']();},async 'getImportedSkillsRegistry'(){const _0x159435=await fetch(API_BASE+'/external-skills/registry');if(!_0x159435['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x159435['statusText']);return await _0x159435['json']();},async 'importCatalogSkill'(_0x2565e2){const _0x179a1a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2565e2})});if(!_0x179a1a['ok']){const _0x679ad9=await _0x179a1a['json']()['catch'](()=>({'error':_0x179a1a['statusText']})),_0x3e019b=new Error(_0x679ad9['error']||_0x679ad9['message']||_0x179a1a['statusText']);if(_0x679ad9['detail']!==undefined)_0x3e019b['detail']=_0x679ad9['detail'];throw _0x3e019b;}return await _0x179a1a['json']();},async 'importSkillFromGit'(_0x9113e7,_0x49a4e2,_0x3ca854='main',_0x1143fc=null){const _0x2e87ba=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x9113e7,'skillPath':_0x49a4e2,'branch':_0x3ca854,'skillId':_0x1143fc})});if(!_0x2e87ba['ok']){const _0x4f5f16=await _0x2e87ba['json']()['catch'](()=>({'error':_0x2e87ba['statusText']})),_0x2c07cf=new Error(_0x4f5f16['error']||_0x4f5f16['message']||_0x2e87ba['statusText']);if(_0x4f5f16['detail']!==undefined)_0x2c07cf['detail']=_0x4f5f16['detail'];throw _0x2c07cf;}return await _0x2e87ba['json']();},async 'probeMarketplace'(_0x4a2eca,_0x2fd74f='main'){const _0x4c33db=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4a2eca,'branch':_0x2fd74f})});if(!_0x4c33db['ok']){const _0x1b2e4a=await _0x4c33db['json']()['catch'](()=>({'error':_0x4c33db['statusText']})),_0x11d345=new Error(_0x1b2e4a['error']||_0x1b2e4a['message']||_0x4c33db['statusText']);if(_0x1b2e4a['detail']!==undefined)_0x11d345['detail']=_0x1b2e4a['detail'];throw _0x11d345;}return await _0x4c33db['json']();},async 'importMarketplaceBundle'(_0x4236a1,_0x3e5483,_0x2b2f81,_0x57eebe=null){const _0x32884e=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4236a1,'branch':_0x3e5483,'bundleId':_0x2b2f81,'selectedSkills':_0x57eebe})});if(!_0x32884e['ok']){const _0x33f0e2=await _0x32884e['json']()['catch'](()=>({'error':_0x32884e['statusText']})),_0xafd107=new Error(_0x33f0e2['error']||_0x33f0e2['message']||_0x32884e['statusText']);if(_0x33f0e2['detail']!==undefined)_0xafd107['detail']=_0x33f0e2['detail'];throw _0xafd107;}return await _0x32884e['json']();},async 'importSkillFromFolder'(_0x27df54,_0x8f2a9d=null){const _0x5e1307=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x27df54,'skillId':_0x8f2a9d})});if(!_0x5e1307['ok']){const _0x3c0bc8=await _0x5e1307['json']()['catch'](()=>({'error':_0x5e1307['statusText']})),_0xb8e210=new Error(_0x3c0bc8['error']||_0x3c0bc8['message']||_0x5e1307['statusText']);if(_0x3c0bc8['detail']!==undefined)_0xb8e210['detail']=_0x3c0bc8['detail'];throw _0xb8e210;}return await _0x5e1307['json']();},async 'importSkillFromNpm'(_0x46e23f,_0x415673='latest',_0x268bf5=null,_0x567afe=null){const _0x1d488f=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x46e23f,'version':_0x415673,'skillId':_0x268bf5,'registry':_0x567afe})});if(!_0x1d488f['ok']){const _0x32670e=await _0x1d488f['json']()['catch'](()=>({'error':_0x1d488f['statusText']})),_0x50145a=new Error(_0x32670e['error']||_0x32670e['message']||_0x1d488f['statusText']);if(_0x32670e['detail']!==undefined)_0x50145a['detail']=_0x32670e['detail'];throw _0x50145a;}return await _0x1d488f['json']();},async 'checkSkillUpdates'(_0x463560){const _0x15d7f7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x463560)+'/check-updates',{'method':'POST'});if(!_0x15d7f7['ok']){const _0x372ae1=await _0x15d7f7['json']()['catch'](()=>({'error':_0x15d7f7['statusText']})),_0x1a9101=new Error(_0x372ae1['error']||_0x372ae1['message']||_0x15d7f7['statusText']);if(_0x372ae1['detail']!==undefined)_0x1a9101['detail']=_0x372ae1['detail'];throw _0x1a9101;}return await _0x15d7f7['json']();},async 'updateExternalSkill'(_0x1ebeb9){const _0x1dd271=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1ebeb9)+'/update',{'method':'POST'});if(!_0x1dd271['ok']){const _0x509179=await _0x1dd271['json']()['catch'](()=>({'error':_0x1dd271['statusText']})),_0x4f814c=new Error(_0x509179['error']||_0x509179['message']||_0x1dd271['statusText']);if(_0x509179['detail']!==undefined)_0x4f814c['detail']=_0x509179['detail'];throw _0x4f814c;}return await _0x1dd271['json']();},async 'updateSkillFlags'(_0x30ee67,_0x39eb5d){const _0x1baccf=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x30ee67)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x39eb5d})});if(!_0x1baccf['ok']){const _0x2b96d7=await _0x1baccf['json']()['catch'](()=>({'error':_0x1baccf['statusText']})),_0x2dfb1c=new Error(_0x2b96d7['error']||_0x2b96d7['message']||_0x1baccf['statusText']);if(_0x2b96d7['detail']!==undefined)_0x2dfb1c['detail']=_0x2b96d7['detail'];throw _0x2dfb1c;}return await _0x1baccf['json']();},async 'removeFromImportedRegistry'(_0x14a78d){const _0x2f8fa5=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x14a78d)+'/registry',{'method':'DELETE'});if(!_0x2f8fa5['ok']){const _0x1ce37e=await _0x2f8fa5['json']()['catch'](()=>({'error':_0x2f8fa5['statusText']})),_0x271a7f=new Error(_0x1ce37e['error']||_0x1ce37e['message']||_0x2f8fa5['statusText']);if(_0x1ce37e['detail']!==undefined)_0x271a7f['detail']=_0x1ce37e['detail'];throw _0x271a7f;}return await _0x2f8fa5['json']();},async 'getTeams'(){const _0x2193bc=await fetch(API_BASE+'/teams');if(!_0x2193bc['ok']){const _0x4de4f2=await _0x2193bc['json']()['catch'](()=>({'message':_0x2193bc['statusText']}));throw new Error(_0x4de4f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2193bc['json']();},async 'getTeam'(_0x11201b){const _0x54bb10=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11201b));if(!_0x54bb10['ok']){const _0x860e4a=await _0x54bb10['json']()['catch'](()=>({'message':_0x54bb10['statusText']}));throw new Error(_0x860e4a['message']||'Failed\x20to\x20get\x20team');}return await _0x54bb10['json']();},async 'createTeam'(_0x43a9e0){const _0x264f1d=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43a9e0)});if(!_0x264f1d['ok']){const _0x31f21b=await _0x264f1d['json']()['catch'](()=>({'message':_0x264f1d['statusText']}));throw new Error(_0x31f21b['message']||'Failed\x20to\x20create\x20team');}return await _0x264f1d['json']();},async 'updateTeam'(_0x242cf5,_0x4e8a1e){const _0x453062=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x242cf5),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e8a1e)});if(!_0x453062['ok']){const _0x589f6f=await _0x453062['json']()['catch'](()=>({'message':_0x453062['statusText']}));throw new Error(_0x589f6f['message']||'Failed\x20to\x20update\x20team');}return await _0x453062['json']();},async 'deleteTeam'(_0x41ac21){const _0x4fafb2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x41ac21),{'method':'DELETE'});if(!_0x4fafb2['ok']){const _0x9ec391=await _0x4fafb2['json']()['catch'](()=>({'message':_0x4fafb2['statusText']}));throw new Error(_0x9ec391['message']||'Failed\x20to\x20delete\x20team');}return await _0x4fafb2['json']();},async 'addTeamMember'(_0x386bad,_0x35e9eb){const _0x69922c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x386bad)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x35e9eb})});if(!_0x69922c['ok']){const _0x24db7c=await _0x69922c['json']()['catch'](()=>({'message':_0x69922c['statusText']}));throw new Error(_0x24db7c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x69922c['json']();},async 'removeTeamMember'(_0x452cb1,_0x11890c){const _0x1b8eff=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x452cb1)+'/members/'+encodeURIComponent(_0x11890c),{'method':'DELETE'});if(!_0x1b8eff['ok']){const _0x4760cc=await _0x1b8eff['json']()['catch'](()=>({'message':_0x1b8eff['statusText']}));throw new Error(_0x4760cc['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1b8eff['json']();},async 'getBindings'(_0x2436cb={}){const _0x172817=new URLSearchParams();if(_0x2436cb['resource_type'])_0x172817['set']('resource_type',_0x2436cb['resource_type']);if(_0x2436cb['resource_id'])_0x172817['set']('resource_id',_0x2436cb['resource_id']);if(_0x2436cb['subject_type'])_0x172817['set']('subject_type',_0x2436cb['subject_type']);if(_0x2436cb['subject_id'])_0x172817['set']('subject_id',_0x2436cb['subject_id']);const _0xbcdbdd=_0x172817['toString'](),_0xf10d9b=await fetch(API_BASE+'/bindings'+(_0xbcdbdd?'?'+_0xbcdbdd:''));if(!_0xf10d9b['ok']){const _0x2e0367=await _0xf10d9b['json']()['catch'](()=>({'message':_0xf10d9b['statusText']}));throw new Error(_0x2e0367['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf10d9b['json']();},async 'createBinding'(_0x34a7e6){const _0x596011=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x34a7e6)});if(!_0x596011['ok']){const _0x34fbe2=await _0x596011['json']()['catch'](()=>({'message':_0x596011['statusText']}));throw new Error(_0x34fbe2['message']||'Failed\x20to\x20create\x20binding');}return await _0x596011['json']();},async 'updateBinding'(_0x3ab504,_0x4e94c9){const _0xb10721=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3ab504),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e94c9)});if(!_0xb10721['ok']){const _0x13c4c1=await _0xb10721['json']()['catch'](()=>({'message':_0xb10721['statusText']}));throw new Error(_0x13c4c1['message']||'Failed\x20to\x20update\x20binding');}return await _0xb10721['json']();},async 'deleteBinding'(_0x37c3d4){const _0x34f5f0=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37c3d4),{'method':'DELETE'});if(!_0x34f5f0['ok']){const _0x445a4f=await _0x34f5f0['json']()['catch'](()=>({'message':_0x34f5f0['statusText']}));throw new Error(_0x445a4f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x34f5f0['json']();},async 'getRoleDefinitions'(){const _0x314386=await fetch(API_BASE+'/roles');if(!_0x314386['ok']){const _0x47e5ef=await _0x314386['json']()['catch'](()=>({'message':_0x314386['statusText']}));throw new Error(_0x47e5ef['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x314386['json']();},async 'getRoleDefinition'(_0x556a08){const _0x2b6a9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x556a08));if(!_0x2b6a9a['ok']){const _0x1ef5dc=await _0x2b6a9a['json']()['catch'](()=>({'message':_0x2b6a9a['statusText']}));throw new Error(_0x1ef5dc['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x2b6a9a['json']();},async 'createRoleDefinition'(_0x480eeb){const _0x153f87=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x480eeb)});if(!_0x153f87['ok']){const _0x19611a=await _0x153f87['json']()['catch'](()=>({'message':_0x153f87['statusText']}));throw new Error(_0x19611a['message']||_0x19611a['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x153f87['json']();},async 'updateRoleDefinition'(_0x55d661,_0x5e09ae){const _0x58612c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x55d661),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e09ae)});if(!_0x58612c['ok']){const _0x29b42b=await _0x58612c['json']()['catch'](()=>({'message':_0x58612c['statusText']}));throw new Error(_0x29b42b['message']||_0x29b42b['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x58612c['json']();},async 'deleteRoleDefinition'(_0x1967dd){const _0x42705d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1967dd),{'method':'DELETE'});if(!_0x42705d['ok']){const _0x13a6d3=await _0x42705d['json']()['catch'](()=>({'message':_0x42705d['statusText']}));throw new Error(_0x13a6d3['message']||_0x13a6d3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x42705d['json']();},async 'getAvailablePermissions'(){const _0x3808ca=await fetch(API_BASE+'/roles/available-permissions');if(!_0x3808ca['ok']){const _0x2f5573=await _0x3808ca['json']()['catch'](()=>({'message':_0x3808ca['statusText']}));throw new Error(_0x2f5573['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x3808ca['json']();},async 'getGitProviderAllowedTeams'(_0xce2592){const _0x21545c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xce2592)+'/allowed-teams');if(!_0x21545c['ok']){const _0x98b765=await _0x21545c['json']()['catch'](()=>({'message':_0x21545c['statusText']}));throw new Error(_0x98b765['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x21545c['json']();},async 'setGitProviderAllowedTeams'(_0x4e1459,_0x47c855){const _0x133986=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4e1459)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x47c855})});if(!_0x133986['ok']){const _0x132c60=await _0x133986['json']()['catch'](()=>({'message':_0x133986['statusText']}));throw new Error(_0x132c60['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x133986['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x5d39d6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x225632=>{_0x225632['el']['style']['bottom']=_0x5d39d6+'px';const _0x32da7f=_0x225632['el']['offsetHeight']||toastState['defaultHeight'];_0x5d39d6+=_0x32da7f+toastState['gap'];});});}function removeToastById(_0x38b45e){const _0x3e29cc=toastState['toasts']['findIndex'](_0x1843d6=>_0x1843d6['id']===_0x38b45e);if(_0x3e29cc===-0x1)return;const _0x3fec47=toastState['toasts'][_0x3e29cc];if(_0x3fec47['timeoutId'])clearTimeout(_0x3fec47['timeoutId']);_0x3fec47['el']['classList']['remove']('show'),setTimeout(()=>_0x3fec47['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3e29cc,0x1),repositionAllToasts();}function registerToast(_0x1d33ab){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1d33ab),repositionAllToasts(),_0x1d33ab['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x56716e){if(_0x56716e===null||_0x56716e===undefined)return'';return String(_0x56716e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xb16861,_0x79f445){if(_0xb16861&&typeof _0xb16861==='object'&&!Array['isArray'](_0xb16861))return{'code':typeof _0xb16861['text']==='string'?_0xb16861['text']:'','language':typeof _0xb16861['lang']==='string'?_0xb16861['lang']:''};return{'code':typeof _0xb16861==='string'?_0xb16861:'','language':typeof _0x79f445==='string'?_0x79f445:''};}function buildMermaidBlock(_0x4eb9c8){const _0x1f05c1=String(_0x4eb9c8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1f05c1))+'\x22>'+escapeHtmlValue(_0x1f05c1)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x590ccd=new marked['Renderer'](),_0x339b65=_0x590ccd['code']['bind'](_0x590ccd);return _0x590ccd['code']=function(_0x3bf0f2,_0x42b5e4,..._0x36f52e){const {code:_0x2ff360,language:_0xd72810}=getMarkdownCodeBlockPayload(_0x3bf0f2,_0x42b5e4),_0x1a2fe9=String(_0xd72810||'')['trim']()['toLowerCase']();if(_0x1a2fe9==='mermaid')return buildMermaidBlock(_0x2ff360);const _0x2f54e2=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2f54e2&&_0x1a2fe9)try{const _0x507bd7=_0x2f54e2['getLanguage'](_0x1a2fe9)?_0x1a2fe9:'plaintext',_0x57f623=_0x2f54e2['highlight'](_0x2ff360,{'language':_0x507bd7})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1a2fe9)+'\x22>'+_0x57f623+'</code></pre>';}catch(_0x3a2e3d){console['error']('Syntax\x20highlighting\x20error:',_0x3a2e3d);}return _0x339b65(_0x3bf0f2,_0x42b5e4,..._0x36f52e);},sharedMarkedRenderer=_0x590ccd,_0x590ccd;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x2b2d0b=window['mermaid'];if(!_0x2b2d0b||typeof _0x2b2d0b['initialize']!=='function')return _0x2b2d0b||null;return _0x2b2d0b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x2b2d0b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x294f1a,_0x544bbf)=>{const _0x41460f=()=>_0x294f1a(configureMermaidInstance()),_0x38ba76=()=>{mermaidLoadPromise=null,_0x544bbf(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x18ae27=document['getElementById'](MERMAID_SCRIPT_ID);!_0x18ae27&&(_0x18ae27=document['createElement']('script'),_0x18ae27['id']=MERMAID_SCRIPT_ID,_0x18ae27['src']=MERMAID_SCRIPT_SRC,_0x18ae27['async']=!![],document['head']['appendChild'](_0x18ae27));if(window['mermaid']){_0x41460f();return;}_0x18ae27['addEventListener']('load',_0x41460f,{'once':!![]}),_0x18ae27['addEventListener']('error',_0x38ba76,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4968d1){const _0x2ae8e2=_0x4968d1['getAttribute']('data-mermaid-source');if(!_0x2ae8e2)return null;let _0x3a6cf8=_0x2ae8e2;try{_0x3a6cf8=decodeURIComponent(_0x2ae8e2);}catch{}return _0x4968d1['textContent']=_0x3a6cf8,_0x4968d1['removeAttribute']('data-processed'),_0x4968d1['removeAttribute']('aria-roledescription'),_0x4968d1['removeAttribute']('role'),_0x4968d1['removeAttribute']('aria-label'),_0x3a6cf8;}function collectMermaidNodes(_0x211d37,_0x51d721){if(!(_0x211d37 instanceof Element))return;_0x211d37['matches']('.mermaid[data-mermaid-source]')&&_0x51d721['add'](_0x211d37),_0x211d37['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a732f=>{_0x51d721['add'](_0x5a732f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x135f33=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xf3a95b=>setTimeout(_0xf3a95b,0x0);_0x135f33(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x29059e=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x29059e);});});}function queueMermaidRender(_0x3f8fd5){const _0x413d6b=new Set();_0x3f8fd5 instanceof Document||_0x3f8fd5 instanceof DocumentFragment?_0x3f8fd5['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5503f1=>_0x413d6b['add'](_0x5503f1)):collectMermaidNodes(_0x3f8fd5,_0x413d6b);if(_0x413d6b['size']===0x0)return;_0x413d6b['forEach'](_0x1874c1=>pendingMermaidNodes['add'](_0x1874c1)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x1d3f0b=Array['from'](pendingMermaidNodes)['filter'](_0xf80245=>_0xf80245['isConnected']);pendingMermaidNodes['clear']();if(_0x1d3f0b['length']===0x0)return;const _0x40718c=await loadMermaid();if(!_0x40718c)return;configureMermaidInstance();const _0x46334f=getMermaidTheme();for(const _0x58cd14 of _0x1d3f0b){const _0x1db774=_0x58cd14['getAttribute']('data-mermaid-source');if(!_0x1db774)continue;const _0x370118=_0x58cd14['getAttribute']('data-processed')==='true';if(_0x370118&&_0x58cd14['dataset']['mermaidTheme']===_0x46334f)continue;restoreMermaidSource(_0x58cd14);try{if(typeof _0x40718c['run']==='function')await _0x40718c['run']({'nodes':[_0x58cd14]});else typeof _0x40718c['init']==='function'&&_0x40718c['init'](undefined,[_0x58cd14]);_0x58cd14['dataset']['mermaidTheme']=_0x46334f,delete _0x58cd14['dataset']['mermaidError'];}catch(_0xc17683){console['error']('Mermaid\x20render\x20failed:',_0xc17683),restoreMermaidSource(_0x58cd14),_0x58cd14['dataset']['mermaidError']='true',delete _0x58cd14['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2c9648=>{_0x2c9648['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x2c9648);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x15748b=>{_0x15748b['forEach'](_0x3fa856=>{_0x3fa856['addedNodes']['forEach'](_0x37d166=>{_0x37d166['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x37d166);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x3273bb){const _0x293896=new Date(_0x3273bb),_0x39dd0c=new Date(),_0x148f8d=_0x39dd0c-_0x293896,_0x31b583=Math['floor'](_0x148f8d/0x3e8),_0x197319=Math['floor'](_0x31b583/0x3c),_0x43fc38=Math['floor'](_0x197319/0x3c),_0x5686b8=Math['floor'](_0x43fc38/0x18);if(_0x31b583<0x3c)return'now';if(_0x197319<0x3c)return _0x197319+'m\x20ago';if(_0x43fc38<0x18)return _0x43fc38+'h\x20ago';return _0x5686b8+'d\x20ago';},'getStatusIcon'(_0x38e401){switch(_0x38e401){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x1c4668){switch(_0x1c4668){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x3042fa,_0x57377b=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x29f711={};_0x29f711['text/plain']=new Blob([_0x3042fa],{'type':'text/plain'});_0x57377b&&(_0x29f711['text/html']=new Blob([_0x57377b],{'type':'text/html'}));const _0x5c5c74=new ClipboardItem(_0x29f711);return await navigator['clipboard']['write']([_0x5c5c74]),!![];}catch(_0x4214ec){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4214ec);}try{const _0x272a06=_0x5a1e6d=>{_0x5a1e6d['preventDefault'](),_0x5a1e6d['clipboardData']['setData']('text/plain',_0x3042fa),_0x57377b&&_0x5a1e6d['clipboardData']['setData']('text/html',_0x57377b);};document['addEventListener']('copy',_0x272a06);const _0xb6f765=document['execCommand']('copy');document['removeEventListener']('copy',_0x272a06);if(_0xb6f765)return!![];}catch(_0x499498){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x499498);}try{const _0x16da3f=document['createElement']('textarea');_0x16da3f['value']=_0x3042fa,_0x16da3f['style']['position']='fixed',_0x16da3f['style']['opacity']='0',_0x16da3f['style']['pointerEvents']='none',document['body']['appendChild'](_0x16da3f),_0x16da3f['select']();const _0xb8752c=document['execCommand']('copy');return document['body']['removeChild'](_0x16da3f),_0xb8752c;}catch(_0x1d1955){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1d1955),![];}},'showToast'(_0x38ed37,_0x47266c='info'){const _0x5a3ab2=getNextToastId(),_0x47395b=document['createElement']('div');_0x47395b['className']='toast\x20toast-'+_0x47266c,_0x47395b['textContent']=_0x38ed37,_0x47395b['dataset']['toastId']=_0x5a3ab2,document['body']['appendChild'](_0x47395b);const _0x1f437b=_0x47266c==='error'?0x2710:0xbb8,_0x50f98a=setTimeout(()=>{removeToastById(_0x5a3ab2);},_0x1f437b),_0xa17abf={'id':_0x5a3ab2,'el':_0x47395b,'timeoutId':_0x50f98a};return registerToast(_0xa17abf),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x47395b['classList']['add']('show');});}),_0x5a3ab2;},'showError'(_0x558c11){console['error'](_0x558c11);const _0x47cd15=typeof _0x558c11==='string'?_0x558c11:_0x558c11['message']||'An\x20error\x20occurred';this['showToast'](_0x47cd15,'error');},'showSuccess'(_0x3d3010){this['showToast'](_0x3d3010,'success');},'capitalize'(_0x434c2e){if(!_0x434c2e)return'';return _0x434c2e['charAt'](0x0)['toUpperCase']()+_0x434c2e['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x381c03){return escapeHtmlValue(_0x381c03);},'ansiToHtml'(_0x31853b){if(_0x31853b===null||_0x31853b===undefined)return'';let _0x185bf9=this['escapeHtml'](_0x31853b);const _0x1d7e3b={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x2cfb14={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x3cede1=0x0;return _0x185bf9=_0x185bf9['replace'](/\x1b\[([0-9;]*)m/g,(_0xad35a9,_0x5ae529)=>{if(!_0x5ae529||_0x5ae529==='0'){const _0x5f4a09='</span>'['repeat'](_0x3cede1);return _0x3cede1=0x0,_0x5f4a09;}const _0x599cfe=_0x5ae529['split'](';'),_0x23f814=[];for(const _0x1975e5 of _0x599cfe){if(_0x1975e5==='1')_0x23f814['push']('font-weight:bold');else{if(_0x1975e5==='2')_0x23f814['push']('opacity:0.7');else{if(_0x1975e5==='3')_0x23f814['push']('font-style:italic');else{if(_0x1975e5==='4')_0x23f814['push']('text-decoration:underline');else{if(_0x1975e5==='9')_0x23f814['push']('text-decoration:line-through');else{if(_0x1d7e3b[_0x1975e5])_0x23f814['push']('color:'+_0x1d7e3b[_0x1975e5]);else{if(_0x2cfb14[_0x1975e5])_0x23f814['push']('background-color:'+_0x2cfb14[_0x1975e5]);}}}}}}}if(_0x23f814['length']>0x0)return _0x3cede1++,'<span\x20style=\x22'+_0x23f814['join'](';')+'\x22>';return'';}),_0x185bf9+='</span>'['repeat'](_0x3cede1),_0x185bf9=_0x185bf9['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4f7c98,_0x205ab5)=>{if(!_0x205ab5||_0x205ab5==='0')return'';const _0x2d007e=_0x205ab5['split'](';'),_0x4bb12a=[];for(const _0x59ce87 of _0x2d007e){if(_0x59ce87==='1')_0x4bb12a['push']('font-weight:bold');else{if(_0x1d7e3b[_0x59ce87])_0x4bb12a['push']('color:'+_0x1d7e3b[_0x59ce87]);else{if(_0x2cfb14[_0x59ce87])_0x4bb12a['push']('background-color:'+_0x2cfb14[_0x59ce87]);}}}if(_0x4bb12a['length']>0x0)return'<span\x20style=\x22'+_0x4bb12a['join'](';')+'\x22>';return'';}),_0x185bf9;},'showModal'({title:_0x5ab56b,content:_0x5e17e5,buttons:buttons=[]}){const _0x1f70aa='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x5ab56b)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5e17e5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x2a4c0d,_0x3079dd)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2a4c0d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3079dd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2a4c0d['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x4f31a2=document['createElement']('div');_0x4f31a2['id']='utils-modal',_0x4f31a2['className']='modal',_0x4f31a2['innerHTML']=_0x1f70aa,document['body']['appendChild'](_0x4f31a2);const _0x12aad4=document['getElementById']('utils-modal-close');_0x12aad4&&_0x12aad4['addEventListener']('click',()=>this['hideModal']());const _0x3dfd41=_0x4f31a2['querySelectorAll']('[data-btn-index]');_0x3dfd41['forEach'](_0x51faa3=>{const _0x10305f=parseInt(_0x51faa3['dataset']['btnIndex']);buttons[_0x10305f]?.['onClick']&&_0x51faa3['addEventListener']('click',buttons[_0x10305f]['onClick']);});const _0xb79a9c=document['getElementById']('utils-modal-overlay');_0xb79a9c&&_0xb79a9c['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x231b73=document['getElementById']('utils-modal');_0x231b73&&_0x231b73['remove']();},'parseKeyValuePairs'(_0x484cbd){const _0x3ab1eb={};if(!_0x484cbd)return _0x3ab1eb;return _0x484cbd['split'](/\r?\n/)['map'](_0x3a113f=>_0x3a113f['trim']())['filter'](Boolean)['forEach'](_0x282b0b=>{const _0x4aee4c=_0x282b0b['indexOf']('=');if(_0x4aee4c>0x0){const _0x1893be=_0x282b0b['slice'](0x0,_0x4aee4c)['trim'](),_0xee9959=_0x282b0b['slice'](_0x4aee4c+0x1)['trim']();if(_0x1893be)_0x3ab1eb[_0x1893be]=_0xee9959;}}),_0x3ab1eb;},'debounce'(_0x20b6c1,_0x5034e8=0xfa){let _0x170d13=null;return(..._0x3bb20a)=>{clearTimeout(_0x170d13),_0x170d13=setTimeout(()=>_0x20b6c1['apply'](this,_0x3bb20a),_0x5034e8);};},'formatTimestamp'(_0x420b59){if(!_0x420b59)return'N/A';const _0x473962=new Date(_0x420b59);return _0x473962['toLocaleDateString']()+'\x20'+_0x473962['toLocaleTimeString']();},'getQueryParams'(){const _0x425104=new URLSearchParams(window['location']['search']),_0x5bfbfc={};for(const [_0x58c873,_0x5d9109]of _0x425104){_0x5bfbfc[_0x58c873]=_0x5d9109;}return _0x5bfbfc;},'formatDuration'(_0x172c10,_0xb4178b){if(!_0x172c10)return'N/A';const _0x7a1bad=new Date(_0x172c10),_0x42314e=_0xb4178b?new Date(_0xb4178b):new Date(),_0xf11ba5=_0x42314e-_0x7a1bad;if(_0xf11ba5<0x0)return'0s';const _0x1aa1ea=Math['floor'](_0xf11ba5/0x3e8),_0x32762f=Math['floor'](_0x1aa1ea/0x3c),_0x3572ab=Math['floor'](_0x32762f/0x3c),_0x242677=Math['floor'](_0x3572ab/0x18);if(_0x1aa1ea<0x3c)return _0x1aa1ea+'s';if(_0x32762f<0x3c)return _0x32762f+'m\x20'+_0x1aa1ea%0x3c+'s';if(_0x3572ab<0x18)return _0x3572ab+'h\x20'+_0x32762f%0x3c+'m\x20'+_0x1aa1ea%0x3c+'s';return _0x242677+'d\x20'+_0x3572ab%0x18+'h\x20'+_0x32762f%0x3c+'m';},'renderMarkdown'(_0x41d044,_0x33a489={}){if(!_0x41d044)return'';_0x41d044=this['rewriteAttachmentLinks'](_0x41d044,_0x33a489),_0x41d044=this['rewriteColorSyntax'](_0x41d044);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x41d044,_0x33a489);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x41d044);}catch(_0x148902){return console['error']('Markdown\x20parsing\x20error:',_0x148902),this['renderMarkdownFallback'](_0x41d044,_0x33a489);}},'rewriteAttachmentLinks'(_0x23f313,_0x18dccb={}){const _0x44faf2=typeof _0x18dccb['resolveAttachmentUrl']==='function'?_0x18dccb['resolveAttachmentUrl']:_0x18dccb['taskId']?_0x808619=>API_BASE+'/tasks/'+_0x18dccb['taskId']+'/attachments/'+encodeURIComponent(_0x808619):null;if(!_0x44faf2)return _0x23f313;return String(_0x23f313)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x4718c5,_0x36626e)=>{const _0x4c63db=String(_0x36626e||'')['trim']();if(!_0x4c63db)return _0x4718c5;let _0x54c2cd=_0x4c63db;try{_0x54c2cd=decodeURIComponent(_0x4c63db);}catch{}const _0x5abe6e=_0x44faf2(_0x54c2cd);if(!_0x5abe6e)return _0x4718c5;return']('+_0x5abe6e+')';});},'rewriteColorSyntax'(_0xb33ac8){if(!_0xb33ac8)return _0xb33ac8;return String(_0xb33ac8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x20fbc9,_0x18012a,_0x46054a)=>{const _0x42e987=this['rewriteColorSyntax'](_0x46054a);return'<span\x20style=\x22color:\x20'+_0x18012a+'\x22>'+_0x42e987+'</span>';});},'renderMarkdownFallback'(_0x2cd6f7,_0x26ec44={}){if(!_0x2cd6f7)return'';_0x2cd6f7=_0x2cd6f7['replace'](/\r\n/g,'\x0a'),_0x2cd6f7=_0x2cd6f7['replace'](/\r/g,'\x0a'),_0x2cd6f7=this['rewriteAttachmentLinks'](_0x2cd6f7,_0x26ec44);let _0x3bc40e=this['escapeHtml'](_0x2cd6f7);return _0x3bc40e=_0x3bc40e['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3bc40e=_0x3bc40e['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3bc40e=_0x3bc40e['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3bc40e=_0x3bc40e['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3bc40e=_0x3bc40e['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3bc40e=_0x3bc40e['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3bc40e=_0x3bc40e['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3bc40e=_0x3bc40e['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3bc40e=_0x3bc40e['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3bc40e=_0x3bc40e['replace'](/\n\n/g,'</p><p>'),_0x3bc40e=_0x3bc40e['replace'](/\n/g,'<br>'),'<p>'+_0x3bc40e+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x581a27=new Uint8Array(0x10);crypto['getRandomValues'](_0x581a27),_0x581a27[0x6]=_0x581a27[0x6]&0xf|0x40,_0x581a27[0x8]=_0x581a27[0x8]&0x3f|0x80;const _0x34b9d5=Array['from'](_0x581a27,_0x1171dc=>_0x1171dc['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x34b9d5['slice'](0x0,0x8)+'-'+_0x34b9d5['slice'](0x8,0xc)+'-'+_0x34b9d5['slice'](0xc,0x10)+'-'+_0x34b9d5['slice'](0x10,0x14)+'-'+_0x34b9d5['slice'](0x14);}};export class CustomSelect{constructor(_0x5e9448,_0x2d4424={}){this['nativeSelect']=_0x5e9448,this['options']=_0x2d4424,this['isOpen']=![],this['selectedValue']=_0x5e9448['value']||'',this['searchable']=_0x2d4424['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x209b02=document['createElement']('div');_0x209b02['className']='custom-select';const _0x11cde0=document['createElement']('div');_0x11cde0['className']='custom-select-trigger',_0x11cde0['setAttribute']('tabindex','0'),_0x11cde0['setAttribute']('role','button'),_0x11cde0['setAttribute']('aria-haspopup','listbox');const _0xca7ca5=document['createElement']('span');_0xca7ca5['className']='custom-select-trigger-text';const _0x2f6386=document['createElement']('span');_0x2f6386['className']='custom-select-arrow',_0x2f6386['textContent']='▼',_0x11cde0['appendChild'](_0xca7ca5),_0x11cde0['appendChild'](_0x2f6386);const _0x1c6644=document['createElement']('div');_0x1c6644['className']='custom-select-dropdown',_0x1c6644['setAttribute']('role','listbox');if(this['searchable']){const _0x79cd69=document['createElement']('div');_0x79cd69['className']='custom-select-search';const _0xbe426a=document['createElement']('input');_0xbe426a['type']='text',_0xbe426a['className']='custom-select-search-input',_0xbe426a['placeholder']='Type\x20to\x20search...',_0xbe426a['setAttribute']('aria-label','Search\x20options'),_0xbe426a['addEventListener']('input',_0x529fd2=>{this['searchQuery']=_0x529fd2['target']['value']['toLowerCase'](),this['filterOptions']();}),_0xbe426a['addEventListener']('keydown',_0x3ca657=>{if(_0x3ca657['key']==='Escape')_0x3ca657['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3ca657['key']==='Enter'){_0x3ca657['preventDefault'](),_0x3ca657['stopPropagation']();const _0x4d121a=_0x1c6644['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x4d121a){const _0x4181ea=_0x4d121a['getAttribute']('data-value');this['select'](_0x4181ea);}}}}),_0x79cd69['appendChild'](_0xbe426a),_0x1c6644['appendChild'](_0x79cd69),this['searchInput']=_0xbe426a;}const _0xb20478=document['createElement']('div');_0xb20478['className']='custom-select-options',_0x1c6644['appendChild'](_0xb20478),_0x209b02['appendChild'](_0x11cde0),_0x209b02['appendChild'](_0x1c6644),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x209b02,this['nativeSelect']),this['wrapper']=_0x209b02,this['trigger']=_0x11cde0,this['triggerText']=_0xca7ca5,this['dropdown']=_0x1c6644,this['optionsContainer']=_0xb20478,_0x11cde0['addEventListener']('click',()=>this['toggle']()),_0x11cde0['addEventListener']('keydown',_0x258ea1=>this['handleKeydown'](_0x258ea1)),document['addEventListener']('click',_0x15cb04=>{!_0x209b02['contains'](_0x15cb04['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x31b28b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x31b28b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x3bd89e=new MutationObserver(()=>{this['updateDisabledState']();});_0x3bd89e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x14aace=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x14aace['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4052f9=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4052f9),this['trigger']['setAttribute']('aria-disabled',_0x4052f9?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4052f9?'-1':'0'),_0x4052f9&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2c49c9=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x8aab76=_0x2c49c9['filter'](_0x2926e7=>!_0x2926e7['disabled']&&!_0x2926e7['hidden']);_0x2c49c9['forEach']((_0x5ba3f5,_0x435eee)=>{const _0x5eeda=document['createElement']('div');_0x5eeda['className']='custom-select-option',_0x5eeda['textContent']=_0x5ba3f5['textContent'],_0x5eeda['setAttribute']('data-value',_0x5ba3f5['value']),_0x5eeda['setAttribute']('data-index',_0x435eee),_0x5eeda['setAttribute']('role','option'),_0x5ba3f5['disabled']?_0x5eeda['classList']['add']('disabled'):_0x5eeda['addEventListener']('click',()=>this['select'](_0x5ba3f5['value'])),_0x5ba3f5['value']===this['selectedValue']&&_0x5eeda['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5eeda),this['allOptions']['push']({'element':_0x5eeda,'text':_0x5ba3f5['textContent']['toLowerCase'](),'value':_0x5ba3f5['value'],'disabled':_0x5ba3f5['disabled']});});if(this['searchable']&&this['searchInput']){const _0x26e770=this['searchInput']['parentElement'];_0x8aab76['length']>0x3?_0x26e770['style']['display']='':_0x26e770['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2196c6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x49c949=>{if(!_0x2196c6||_0x49c949['disabled'])_0x49c949['element']['style']['display']='';else{const _0x2fa928=_0x49c949['text']['includes'](_0x2196c6);_0x49c949['element']['style']['display']=_0x2fa928?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x10d04d){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x10d04d,this['nativeSelect']['value']=_0x10d04d;const _0x51cbd1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x51cbd1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1cae12=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1cae12&&(this['triggerText']['textContent']=_0x1cae12['textContent'],_0x1cae12['disabled']||_0x1cae12['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x44257b=>{_0x44257b['getAttribute']('data-value')===this['selectedValue']?_0x44257b['classList']['add']('selected'):_0x44257b['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x468bcf=window['getComputedStyle'](this['dropdown']);if(_0x468bcf['position']==='fixed'){const _0x48f4d4=this['trigger']['getBoundingClientRect'](),_0xe7985c=parseInt(_0x468bcf['maxHeight'])||0xc8,_0x285797=window['innerHeight'],_0x2d8892=_0x285797-_0x48f4d4['bottom'],_0x3928e6=_0x48f4d4['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4aeeb2;_0x2d8892<_0xe7985c&&_0x3928e6>_0x2d8892?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x285797-_0x48f4d4['top']+'px',_0x4aeeb2=Math['min'](_0xe7985c,_0x3928e6-0xa),this['dropdown']['style']['maxHeight']=_0x4aeeb2+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x48f4d4['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4aeeb2=Math['min'](_0xe7985c,_0x2d8892-0xa),this['dropdown']['style']['maxHeight']=_0x4aeeb2+'px');if(this['optionsContainer']){let _0x1330ab=_0x4aeeb2;if(this['searchInput']){const _0x3cfb72=this['searchInput']['parentElement'];_0x3cfb72&&(_0x1330ab-=_0x3cfb72['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1330ab)+'px';}this['dropdown']['style']['left']=_0x48f4d4['left']+'px',this['dropdown']['style']['width']=_0x48f4d4['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x41f907=this['searchInput']['parentElement'];_0x41f907&&_0x41f907['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x137652){if(this['nativeSelect']['disabled'])return;if(_0x137652['key']==='Enter'||_0x137652['key']==='\x20')_0x137652['preventDefault'](),this['toggle']();else _0x137652['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x45e1eb='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x45e1eb),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2030bb=document['getElementById']('confirm-dialog-close'),_0x487eef=document['getElementById']('confirm-dialog-cancel'),_0x54b182=document['getElementById']('confirm-dialog-confirm'),_0x1d5170=this['_modal']['querySelector']('.modal-overlay');_0x2030bb['addEventListener']('click',()=>this['_resolve'](![])),_0x487eef['addEventListener']('click',()=>this['_resolve'](![])),_0x54b182['addEventListener']('click',()=>this['_resolve'](!![])),_0x1d5170['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2c215d=>{if(_0x2c215d['key']==='Escape')_0x2c215d['preventDefault'](),this['_resolve'](![]);else _0x2c215d['key']==='Enter'&&(_0x2c215d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x39b14a,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1ec886=>{this['_resolvePromise']=_0x1ec886,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x39b14a;const _0x502249=document['getElementById']('confirm-dialog-cancel'),_0x33e062=document['getElementById']('confirm-dialog-confirm');_0x502249['textContent']=cancelText,_0x33e062['textContent']=confirmText,_0x33e062['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x33e062['focus']();});},'_resolve'(_0x55b2d9){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x55b2d9),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x57586a,_0xe49423={}){this['container']=_0x57586a,this['options']={'placeholder':_0xe49423['placeholder']||'Type\x20to\x20search...','maxItems':_0xe49423['maxItems']||0x64,'loadItems':_0xe49423['loadItems']||(async()=>[]),'renderItem':_0xe49423['renderItem']||(_0x37494a=>({'primary':String(_0x37494a),'secondary':''})),'onSelect':_0xe49423['onSelect']||(()=>{}),'filterItems':_0xe49423['filterItems']||null,'getItemValue':_0xe49423['getItemValue']||(_0x1c2b21=>_0x1c2b21),'sortItems':_0xe49423['sortItems']||null,'debounceMs':_0xe49423['debounceMs']||0xc8,'minCharsForSearch':_0xe49423['minCharsForSearch']||0x0,'emptyMessage':_0xe49423['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xe49423['loadingMessage']||'Loading...','preload':_0xe49423['preload']!==![],'searchMode':_0xe49423['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3a2502=>this['onBlur'](_0x3a2502)),this['input']['addEventListener']('input',_0x39a7ee=>this['onInput'](_0x39a7ee)),this['input']['addEventListener']('keydown',_0x3af13b=>this['onKeydown'](_0x3af13b)),this['clearBtn']['addEventListener']('mousedown',_0x4cbd5f=>{_0x4cbd5f['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x33d35a=>{_0x33d35a['preventDefault']();}),document['addEventListener']('click',_0x462927=>{!this['wrapper']['contains'](_0x462927['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x1aad50){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1aad50);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5cea1e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xdf1254){const _0x5cc36b=_0xdf1254['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5cc36b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5cc36b):this['loadAndShow'](_0x5cc36b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x8fcafa){switch(_0x8fcafa['key']){case'ArrowDown':_0x8fcafa['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x8fcafa['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x8fcafa['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x8fcafa['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x53b854){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x272314=this['selectedIndex']+_0x53b854;if(_0x272314>=0x0&&_0x272314<this['filteredItems']['length']){this['selectedIndex']=_0x272314,this['updateSelectionHighlight']();const _0x5959df=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5959df[this['selectedIndex']]&&_0x5959df[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x3e60ed=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3e60ed['forEach']((_0x22ebeb,_0x495d0a)=>{_0x22ebeb['classList']['toggle']('keyboard-selected',_0x495d0a===this['selectedIndex']);});}async['loadAndShow'](_0x268e65){this['showLoading']();try{const _0x2f26ff=await this['options']['loadItems'](_0x268e65);if(this['options']['searchMode']==='server'){let _0x57b75e=_0x2f26ff;this['options']['sortItems']&&(_0x57b75e=this['options']['sortItems']([..._0x2f26ff]));this['filteredItems']=_0x57b75e;const _0x78becf=this['filteredItems']['length']>=this['options']['maxItems'];_0x78becf&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x78becf),this['open']();}else this['allItems']=_0x2f26ff,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x268e65);}catch(_0x29e758){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x29e758),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x594f2b){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x594f2b):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x3f69f5=this['filteredItems']['length']>=this['options']['maxItems'];_0x3f69f5&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3f69f5),this['open']();}['renderItems'](_0x393b29){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0xa7520,_0x341f3d)=>{const _0x288623=document['createElement']('div');_0x288623['className']='autocomplete-select-item',_0x288623['setAttribute']('role','option'),_0x288623['setAttribute']('data-index',_0x341f3d);const _0x4bd251=this['options']['renderItem'](_0xa7520);let _0x59bb12='';_0x4bd251['icon']&&(_0x59bb12='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4bd251['iconClass']||'')+'\x22>'+_0x4bd251['icon']+'</span>'),_0x288623['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x59bb12+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x4bd251['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4bd251['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4bd251['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x288623['addEventListener']('click',()=>{this['selectItem'](_0xa7520);}),_0x288623['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x341f3d,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x288623);}),_0x393b29?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x48fee8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x48fee8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x13f102){this['selectedItem']=_0x13f102;const _0x1603b7=this['options']['renderItem'](_0x13f102);this['input']['value']=_0x1603b7['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x13f102);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x202f9f){if(_0x202f9f){this['selectedItem']=_0x202f9f;const _0x117c62=this['options']['renderItem'](_0x202f9f);this['input']['value']=_0x117c62['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x46ffc0){this['allItems']=_0x46ffc0,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x4be099){this['input']['placeholder']=_0x4be099;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1dbad0=null){const _0x30987c=document['getElementById']('admin-menu-container'),_0xd7d096=document['getElementById']('admin-menu-btn'),_0x4d7c67=document['getElementById']('admin-menu');if(!_0x30987c||!_0xd7d096||!_0x4d7c67)return;try{!_0x1dbad0&&(_0x1dbad0=await API['getCurrentUser']());if(_0x1dbad0){const _0x21f637=window['Permissions'],_0x23c497=_0x21f637['hasServerPermission'](_0x1dbad0,'*')||_0x21f637['hasEnvPermission'](_0x1dbad0,'environments:manage')||_0x21f637['hasServerPermission'](_0x1dbad0,'users:create')||_0x21f637['hasTeamPermission'](_0x1dbad0,'teams:manage')||_0x21f637['hasEnvPermission'](_0x1dbad0,'environments:view_details');if(!_0x23c497)return;_0x30987c['hidden']=![];if(!_0x21f637['hasServerPermission'](_0x1dbad0,'*')){const _0x163aa5=_0x4d7c67['querySelectorAll']('.admin-menu-item');_0x163aa5['forEach'](_0x5dad9d=>{const _0x5c39cc=_0x5dad9d['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5c39cc==='Users'&&!_0x21f637['hasServerPermission'](_0x1dbad0,'users:create')&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Skills'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Server\x20Settings'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Server\x20Administration'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Git\x20History'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Roles'&&(_0x5dad9d['hidden']=!![]);});}_0xd7d096['addEventListener']('click',_0x2b668e=>{_0x2b668e['stopPropagation']();const _0x48f144=document['getElementById']('actions-menu');if(_0x48f144)_0x48f144['hidden']=!![];_0x4d7c67['hidden']=!_0x4d7c67['hidden'];}),document['addEventListener']('click',_0x5cb311=>{!_0x4d7c67['hidden']&&!_0xd7d096['contains'](_0x5cb311['target'])&&!_0x4d7c67['contains'](_0x5cb311['target'])&&(_0x4d7c67['hidden']=!![]);}),document['addEventListener']('keydown',_0x229c88=>{_0x229c88['key']==='Escape'&&!_0x4d7c67['hidden']&&(_0x4d7c67['hidden']=!![]);});}}catch(_0x452782){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x452782['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|