@profoundlogic/coderflow-server 0.8.7 → 0.8.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/coder-git-credential-helper +4 -1
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/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-git-auth-errors.js +1 -0
- 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/automations.md +8 -7
- 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/code/files-and-editing.md +11 -0
- 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 +20 -7
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.css +59 -2
- 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/styles.css +20 -0
- 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 _0x2fd19f=window['location']['pathname'],_0x7d15a2=_0x2fd19f['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x7d15a2)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x7d15a2[0x1]),_0x7d15a2[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x130352={}){const _0x125b8e=new URLSearchParams();_0x130352['userId']&&_0x125b8e['set']('userId',String(_0x130352['userId']));_0x130352['automation']&&_0x125b8e['set']('automation',String(_0x130352['automation']));const _0xec10cf=API_BASE+'/tasks/stats'+(_0x125b8e['toString']()?'?'+_0x125b8e['toString']():''),_0x199538=await fetch(_0xec10cf);if(!_0x199538['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x199538['statusText']);return await _0x199538['json']();},async 'getTasks'(_0x3aa03a={}){const _0x1d1e37=new URLSearchParams();_0x3aa03a['status']&&_0x1d1e37['set']('status',String(_0x3aa03a['status']));_0x3aa03a['environment']&&_0x1d1e37['set']('environment',String(_0x3aa03a['environment']));_0x3aa03a['automation']&&_0x1d1e37['set']('automation',String(_0x3aa03a['automation']));if(_0x3aa03a['include']){const _0x5dc8f3=Array['isArray'](_0x3aa03a['include'])?_0x3aa03a['include']['join'](','):String(_0x3aa03a['include']);_0x5dc8f3&&_0x1d1e37['set']('include',_0x5dc8f3);}_0x3aa03a['filter']&&_0x1d1e37['set']('filter',String(_0x3aa03a['filter']));_0x3aa03a['page']&&_0x1d1e37['set']('page',String(_0x3aa03a['page']));_0x3aa03a['limit']&&_0x1d1e37['set']('limit',String(_0x3aa03a['limit']));_0x3aa03a['userId']&&_0x1d1e37['set']('userId',String(_0x3aa03a['userId']));_0x3aa03a['search']&&_0x1d1e37['set']('search',String(_0x3aa03a['search']));_0x3aa03a['includeChildTasks']&&_0x1d1e37['set']('includeChildTasks','true');const _0x57656e=API_BASE+'/tasks'+(_0x1d1e37['toString']()?'?'+_0x1d1e37['toString']():''),_0xbd64c9=await fetch(_0x57656e);if(!_0xbd64c9['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xbd64c9['statusText']);return await _0xbd64c9['json']();},async 'getAutomations'(_0x18f768={}){const _0x5e21de=new URLSearchParams();_0x18f768['environment']&&_0x5e21de['set']('environment',String(_0x18f768['environment']));const _0x336d50=await fetch(API_BASE+'/api/automations'+(_0x5e21de['toString']()?'?'+_0x5e21de['toString']():''));if(!_0x336d50['ok']){const _0x256ae2=await _0x336d50['json']()['catch'](()=>({}));throw new Error(_0x256ae2['message']||_0x256ae2['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x336d50['statusText']);}return await _0x336d50['json']();},async 'getAutomation'(_0x36b72c){const _0x579940=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x36b72c));if(!_0x579940['ok']){const _0x467cd9=await _0x579940['json']()['catch'](()=>({}));throw new Error(_0x467cd9['message']||_0x467cd9['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x579940['statusText']);}return await _0x579940['json']();},async 'createAutomation'(_0x563cca){const _0x29910b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x563cca||{})});if(!_0x29910b['ok']){const _0x4982ed=await _0x29910b['json']()['catch'](()=>({}));throw new Error(_0x4982ed['message']||_0x4982ed['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x29910b['statusText']);}return await _0x29910b['json']();},async 'updateAutomation'(_0x14f3ea,_0x4dd22f){const _0x4d953d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x14f3ea),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dd22f||{})});if(!_0x4d953d['ok']){const _0xb0c568=await _0x4d953d['json']()['catch'](()=>({}));throw new Error(_0xb0c568['message']||_0xb0c568['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4d953d['statusText']);}return await _0x4d953d['json']();},async 'deleteAutomation'(_0x67274b){const _0xdb0317=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x67274b),{'method':'DELETE'});if(!_0xdb0317['ok']){const _0x4a28e3=await _0xdb0317['json']()['catch'](()=>({}));throw new Error(_0x4a28e3['message']||_0x4a28e3['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xdb0317['statusText']);}return await _0xdb0317['json']();},async 'triggerAutomation'(_0x226ca4){const _0x3c9066=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x226ca4)+'/trigger',{'method':'POST'});if(!_0x3c9066['ok']){const _0x544474=await _0x3c9066['json']()['catch'](()=>({}));throw new Error(_0x544474['message']||_0x544474['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3c9066['statusText']);}return await _0x3c9066['json']();},async 'setAutomationEnabled'(_0x3ac3cd,_0x1a5e8f){const _0x44986b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3ac3cd)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x1a5e8f})});if(!_0x44986b['ok']){const _0x5a5c7c=await _0x44986b['json']()['catch'](()=>({}));throw new Error(_0x5a5c7c['message']||_0x5a5c7c['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x44986b['statusText']);}return await _0x44986b['json']();},async 'getAutomationHistory'(_0x2ca864,_0x46233f=0x32){const _0x37c793=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2ca864)+'/history?limit='+encodeURIComponent(String(_0x46233f)));if(!_0x37c793['ok']){const _0x50340b=await _0x37c793['json']()['catch'](()=>({}));throw new Error(_0x50340b['message']||_0x50340b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x37c793['statusText']);}return await _0x37c793['json']();},async 'getTask'(_0x35de6e,_0x835f85={}){const _0x294b2b=new URLSearchParams();if(_0x835f85['include']){const _0x2b4995=Array['isArray'](_0x835f85['include'])?_0x835f85['include']['join'](','):String(_0x835f85['include']);if(_0x2b4995)_0x294b2b['set']('include',_0x2b4995);}const _0x5f178=await fetch(API_BASE+'/tasks/'+_0x35de6e+(_0x294b2b['toString']()?'?'+_0x294b2b['toString']():''));if(!_0x5f178['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x5f178['statusText']);return await _0x5f178['json']();},async 'getTaskResults'(_0x1a7ad3){const _0x393af4=await fetch(API_BASE+'/tasks/'+_0x1a7ad3+'/results');if(!_0x393af4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x393af4['statusText']);return await _0x393af4['json']();},async 'getTaskPatches'(_0x63d952){const _0x38bf41=await fetch(API_BASE+'/tasks/'+_0x63d952+'/patches');if(!_0x38bf41['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x38bf41['statusText']);return await _0x38bf41['json']();},async 'getTaskAttachments'(_0x38572a){const _0x1f62a3=await fetch(API_BASE+'/tasks/'+_0x38572a+'/attachments');if(!_0x1f62a3['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1f62a3['statusText']);return await _0x1f62a3['json']();},async 'uploadAttachments'(_0x535f55,_0x280298){const _0x1201dd=new FormData();for(const _0x215aca of _0x280298){_0x1201dd['append']('attachments',_0x215aca);}const _0x48e6e6=await fetch(API_BASE+'/tasks/'+_0x535f55+'/attachments',{'method':'POST','body':_0x1201dd});if(!_0x48e6e6['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x48e6e6['statusText']);return await _0x48e6e6['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1bf65c=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1bf65c['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1bf65c['json']();}catch(_0x308590){return{'available':![],'reason':_0x308590['message']};}},async 'generateTaskName'(_0x44aa78){try{const _0x453033=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x44aa78})});return await _0x453033['json']();}catch(_0x3064d6){return{'success':![],'error':_0x3064d6['message']};}},async 'createTask'(_0x5bcb2e){let _0x2e7057,_0x4d0cf8={};if(_0x5bcb2e['files']&&_0x5bcb2e['files']['length']>0x0){const _0x34e00f=new FormData();for(const [_0x5eb7fb,_0x140958]of Object['entries'](_0x5bcb2e)){if(_0x5eb7fb!=='files'){if(_0x140958==null)continue;typeof _0x140958==='object'?_0x34e00f['append'](_0x5eb7fb,JSON['stringify'](_0x140958)):_0x34e00f['append'](_0x5eb7fb,String(_0x140958));}}for(const _0x57f6c1 of _0x5bcb2e['files']){_0x34e00f['append']('attachments',_0x57f6c1);}_0x2e7057=_0x34e00f;}else _0x4d0cf8['Content-Type']='application/json',_0x2e7057=JSON['stringify'](_0x5bcb2e);const _0x20b617=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4d0cf8,'body':_0x2e7057});if(!_0x20b617['ok']){const _0x1aa3c6=await _0x20b617['json'](),_0x3ba39a=new Error(_0x1aa3c6['error']||'Failed\x20to\x20create\x20task:\x20'+_0x20b617['statusText']),{message:_0xbe5fcb,..._0xee2a10}=_0x1aa3c6;Object['assign'](_0x3ba39a,_0xee2a10);throw _0x3ba39a;}return await _0x20b617['json']();},async 'createTestTask'(_0x3688ee){const _0x22bb0d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3688ee)});if(!_0x22bb0d['ok']){const _0x4b9489=await _0x22bb0d['json']();throw new Error(_0x4b9489['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x22bb0d['statusText']);}return await _0x22bb0d['json']();},async 'createEphemeralTest'(_0x124ef5){const _0x4fa64e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x124ef5)});if(!_0x4fa64e['ok']){const _0x48279c=await _0x4fa64e['json']();throw new Error(_0x48279c['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4fa64e['statusText']);}return await _0x4fa64e['json']();},async 'createDeployTask'(_0x3e0db4){const _0xe12ce7=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e0db4)});if(!_0xe12ce7['ok']){const _0x537243=await _0xe12ce7['json']();throw new Error(_0x537243['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xe12ce7['statusText']);}return await _0xe12ce7['json']();},async 'getEnvironments'(){const _0x2c368a=await fetch(API_BASE+'/environments');if(!_0x2c368a['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2c368a['statusText']);return await _0x2c368a['json']();},async 'getEnvironment'(_0x53fa06){const _0x211568=await fetch(API_BASE+'/environments/'+_0x53fa06);if(!_0x211568['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x211568['statusText']);return await _0x211568['json']();},async 'getEnvironmentRepoHistory'(_0x17d83f,_0x526a36,_0x3b37e6={}){if(!_0x17d83f||!_0x526a36)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x25a40a=new URLSearchParams();if(_0x3b37e6['limit'])_0x25a40a['set']('limit',String(_0x3b37e6['limit']));if(_0x3b37e6['offset'])_0x25a40a['set']('offset',String(_0x3b37e6['offset']));if(_0x3b37e6['search'])_0x25a40a['set']('search',String(_0x3b37e6['search']));if(_0x3b37e6['branch'])_0x25a40a['set']('branch',String(_0x3b37e6['branch']));const _0x362cb3=API_BASE+'/environments/'+encodeURIComponent(_0x17d83f)+'/repos/'+encodeURIComponent(_0x526a36)+'/git/history',_0x560a60=await fetch(''+_0x362cb3+(_0x25a40a['toString']()?'?'+_0x25a40a['toString']():''));if(!_0x560a60['ok']){const _0x43671d=await _0x560a60['json']()['catch'](()=>({}));throw new Error(_0x43671d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x560a60['statusText']);}return await _0x560a60['json']();},async 'getEnvironmentRepoCommit'(_0x17289b,_0x5ad29b,_0x465de5){if(!_0x17289b||!_0x5ad29b||!_0x465de5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1ac195=API_BASE+'/environments/'+encodeURIComponent(_0x17289b)+'/repos/'+encodeURIComponent(_0x5ad29b)+'/git/commits/'+encodeURIComponent(_0x465de5),_0x1d9718=await fetch(_0x1ac195);if(!_0x1d9718['ok']){const _0x48b89e=await _0x1d9718['json']()['catch'](()=>({}));throw new Error(_0x48b89e['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1d9718['statusText']);}return await _0x1d9718['json']();},async 'getEnvironmentRepoBranches'(_0x1e93a2,_0xa8c3d8){if(!_0x1e93a2||!_0xa8c3d8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x47f919=API_BASE+'/environments/'+encodeURIComponent(_0x1e93a2)+'/repos/'+encodeURIComponent(_0xa8c3d8)+'/git/branches',_0x5a4da8=await fetch(_0x47f919);if(!_0x5a4da8['ok']){const _0x51d9b3=await _0x5a4da8['json']()['catch'](()=>({}));throw new Error(_0x51d9b3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x5a4da8['statusText']);}return await _0x5a4da8['json']();},async 'revertEnvironmentRepoCommit'(_0x32f528,_0x2ca418,_0x14e1f0,_0x323426={}){if(!_0x32f528||!_0x2ca418||!_0x14e1f0)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4163ef=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x32f528)+'/repos/'+encodeURIComponent(_0x2ca418)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x14e1f0,..._0x323426})});if(!_0x4163ef['ok']){const _0x3ea57d=await _0x4163ef['json']()['catch'](()=>({}));throw new Error(_0x3ea57d['message']||_0x3ea57d['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4163ef['statusText']);}return await _0x4163ef['json']();},async 'getTemplates'(_0x3fead6={}){const _0x12e891=new URLSearchParams();if(_0x3fead6['include']){const _0xf09f20=Array['isArray'](_0x3fead6['include'])?_0x3fead6['include']['join'](','):String(_0x3fead6['include']);if(_0xf09f20)_0x12e891['set']('include',_0xf09f20);}const _0x144998=await fetch(API_BASE+'/templates'+(_0x12e891['toString']()?'?'+_0x12e891['toString']():''));if(!_0x144998['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x144998['statusText']);return await _0x144998['json']();},async 'getTemplatesForEnvironment'(_0x5110c0,_0x39d8d3={}){if(!_0x5110c0)throw new Error('Environment\x20name\x20is\x20required');const _0x2d2ba0=new URLSearchParams();if(_0x39d8d3['include']){const _0x26fee8=Array['isArray'](_0x39d8d3['include'])?_0x39d8d3['include']['join'](','):String(_0x39d8d3['include']);if(_0x26fee8)_0x2d2ba0['set']('include',_0x26fee8);}const _0x32c947=await fetch(API_BASE+'/templates/'+_0x5110c0+(_0x2d2ba0['toString']()?'?'+_0x2d2ba0['toString']():''));if(!_0x32c947['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5110c0+':\x20'+_0x32c947['statusText']);return await _0x32c947['json']();},async 'getTemplate'(_0x1012d6,_0x5910c1,_0xc95c58={}){if(!_0x1012d6||!_0x5910c1)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x40484c=new URLSearchParams();if(_0xc95c58['include']){const _0x4a7efd=Array['isArray'](_0xc95c58['include'])?_0xc95c58['include']['join'](','):String(_0xc95c58['include']);if(_0x4a7efd)_0x40484c['set']('include',_0x4a7efd);}const _0x28d17b=await fetch(API_BASE+'/templates/'+_0x1012d6+'/'+_0x5910c1+(_0x40484c['toString']()?'?'+_0x40484c['toString']():''));if(!_0x28d17b['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x28d17b['statusText']);return await _0x28d17b['json']();},async 'getTaskLogs'(_0x1d7e3a,_0x10ab0c={}){if(!_0x1d7e3a)throw new Error('Task\x20ID\x20is\x20required');const _0x1d6904=new URLSearchParams();_0x10ab0c['tail']&&_0x1d6904['set']('tail',String(_0x10ab0c['tail']));const _0x2dcb29=await fetch(API_BASE+'/tasks/'+_0x1d7e3a+'/logs'+(_0x1d6904['toString']()?'?'+_0x1d6904['toString']():''));if(!_0x2dcb29['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2dcb29['statusText']);return await _0x2dcb29['text']();},async 'getContainers'(){const _0x1fbf06=await fetch(API_BASE+'/containers');if(!_0x1fbf06['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1fbf06['statusText']);return await _0x1fbf06['json']();},async 'getContainer'(_0xcad55d){const _0xf39740=await fetch(API_BASE+'/containers/'+_0xcad55d);if(!_0xf39740['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xf39740['statusText']);return await _0xf39740['json']();},async 'startInteractiveContainer'(_0xe68056){const _0x4f4b01=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe68056)});if(!_0x4f4b01['ok']){const _0x4bdb25=await _0x4f4b01['json']()['catch'](()=>({}));throw new Error(_0x4bdb25['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4f4b01['statusText']);}return await _0x4f4b01['json']();},async 'startContainerCodeServer'(_0x2617f7,_0x5de463={}){if(!_0x2617f7)throw new Error('Container\x20ID\x20is\x20required');const _0xfe7d4=new URLSearchParams();_0x5de463['theme']&&_0xfe7d4['set']('theme',_0x5de463['theme']);const _0x225788=await fetch(API_BASE+'/containers/'+_0x2617f7+'/code-server'+(_0xfe7d4['toString']()?'?'+_0xfe7d4['toString']():'')),_0x20edae=await _0x225788['json']()['catch'](()=>({}));if(!_0x225788['ok'])throw new Error(_0x20edae['message']||_0x20edae['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x225788['statusText']);return _0x20edae;},async 'stopContainer'(_0x493533){const _0x38458f=await fetch(API_BASE+'/containers/'+_0x493533,{'method':'DELETE'});if(!_0x38458f['ok']){const _0x46ca26=await _0x38458f['json']()['catch'](()=>({}));throw new Error(_0x46ca26['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x38458f['statusText']);}return await _0x38458f['json']();},async 'stopTask'(_0x3c6649){if(!_0x3c6649)throw new Error('Task\x20ID\x20is\x20required');const _0xaf65c2=await fetch(API_BASE+'/tasks/'+_0x3c6649+'/stop',{'method':'POST'});if(!_0xaf65c2['ok']){const _0x3394cc=await _0xaf65c2['json']()['catch'](()=>({}));throw new Error(_0x3394cc['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xaf65c2['statusText']);}return await _0xaf65c2['json']();},async 'interruptTask'(_0x9ac80a){if(!_0x9ac80a)throw new Error('Task\x20ID\x20is\x20required');const _0x2b22ed=await fetch(API_BASE+'/tasks/'+_0x9ac80a+'/interrupt',{'method':'POST'});if(!_0x2b22ed['ok']){const _0x3d2ff8=await _0x2b22ed['json']()['catch'](()=>({}));throw new Error(_0x3d2ff8['error']||_0x3d2ff8['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2b22ed['statusText']);}return await _0x2b22ed['json']();},async 'startTask'(_0x5f4522){if(!_0x5f4522)throw new Error('Task\x20ID\x20is\x20required');const _0x29305e=await fetch(API_BASE+'/tasks/'+_0x5f4522+'/start',{'method':'POST'});if(!_0x29305e['ok']){const _0x4a4c57=await _0x29305e['json']()['catch'](()=>({}));throw new Error(_0x4a4c57['error']||'Failed\x20to\x20start\x20task:\x20'+_0x29305e['statusText']);}return await _0x29305e['json']();},async 'deleteTask'(_0x238c1f){if(!_0x238c1f)throw new Error('Task\x20ID\x20is\x20required');const _0x5d8a2e=await fetch(API_BASE+'/tasks/'+_0x238c1f,{'method':'DELETE'});if(!_0x5d8a2e['ok']){const _0x195d36=await _0x5d8a2e['json']()['catch'](()=>({}));throw new Error(_0x195d36['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5d8a2e['statusText']);}return await _0x5d8a2e['json']();},async 'refreshTasksFromDisk'(){const _0x2fa277=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2fa277['ok']){const _0x1c3998=await _0x2fa277['json']()['catch'](()=>({}));throw new Error(_0x1c3998['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2fa277['statusText']);}return await _0x2fa277['json']();},async 'approveTask'(_0x4d67c7,_0x461d2d={}){if(!_0x4d67c7)throw new Error('Task\x20ID\x20is\x20required');const _0x3a667c={'commit_message':_0x461d2d['commit_message']||'','pull':_0x461d2d['pull']??![],'push':_0x461d2d['push']??![],'conflict_strategy':_0x461d2d['conflict_strategy']||'rebase'};_0x461d2d['new_branch']&&(_0x3a667c['new_branch']=_0x461d2d['new_branch']);const _0x56a7d3=await fetch(API_BASE+'/tasks/'+_0x4d67c7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a667c)});if(!_0x56a7d3['ok']){const _0x199759=await _0x56a7d3['json']()['catch'](()=>({})),_0x1d1b62=Array['isArray'](_0x199759['results'])?_0x199759['results']['filter'](_0x33a550=>!_0x33a550['success']&&(_0x33a550['error']||_0x33a550['error_code'])):[],_0x571fa0=_0x1d1b62[0x0]||null;let _0x5c3ec3=_0x199759['error']||_0x199759['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x56a7d3['statusText'];if(_0x571fa0?.['error'])_0x5c3ec3=_0x571fa0['error'];else _0x199759['message']&&(_0x5c3ec3=_0x199759['message']);const _0x1987f7=new Error(_0x5c3ec3);_0x1987f7['code']=_0x571fa0?.['error_code']||_0x199759['error_code']||null,_0x1987f7['details']=_0x571fa0?.['details']||_0x199759['details']||null,_0x1987f7['tokenExpiryDays']=_0x571fa0?.['token_expiry_days']||_0x199759['token_expiry_days']||null,_0x1987f7['hasConflicts']=_0x199759['results']?.['some'](_0x324b6a=>_0x324b6a['conflict'])||![];throw _0x1987f7;}return await _0x56a7d3['json']();},async 'getPullRequestInfo'(_0x1c133f){if(!_0x1c133f)throw new Error('Task\x20ID\x20is\x20required');const _0x478489=await fetch(API_BASE+'/tasks/'+_0x1c133f+'/pull-request-info');if(!_0x478489['ok']){const _0xf05a6c=await _0x478489['json']()['catch'](()=>({}));throw new Error(_0xf05a6c['error']||_0xf05a6c['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x478489['statusText']);}return await _0x478489['json']();},async 'createPullRequests'(_0x4b27fb,_0x308331){if(!_0x4b27fb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x308331||!Array['isArray'](_0x308331))throw new Error('repos\x20array\x20is\x20required');const _0x343074=await fetch(API_BASE+'/tasks/'+_0x4b27fb+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x308331})});if(!_0x343074['ok']){const _0x4a092c=await _0x343074['json']()['catch'](()=>({}));let _0x5a5c3f=_0x4a092c['error']||_0x4a092c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x343074['statusText'];if(_0x4a092c['results']&&Array['isArray'](_0x4a092c['results'])){const _0x12e43e=_0x4a092c['results']['filter'](_0x4e1bd0=>!_0x4e1bd0['success']&&_0x4e1bd0['error']);_0x12e43e['length']>0x0&&(_0x5a5c3f=_0x12e43e[0x0]['error']);}throw new Error(_0x5a5c3f);}return await _0x343074['json']();},async 'syncRepos'(_0x49dd59){if(!_0x49dd59)throw new Error('Task\x20ID\x20is\x20required');const _0x1e807a=await fetch(API_BASE+'/tasks/'+_0x49dd59+'/sync-repos',{'method':'POST'});if(!_0x1e807a['ok']){const _0x3155b5=await _0x1e807a['json']()['catch'](()=>({}));throw new Error(_0x3155b5['error']||_0x3155b5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x1e807a['statusText']);}return await _0x1e807a['json']();},async 'getIbmiSyncInfo'(_0x1db791){if(!_0x1db791)throw new Error('Task\x20ID\x20is\x20required');const _0x39184e=await fetch(API_BASE+'/tasks/'+_0x1db791+'/ibmi-sync-info');if(!_0x39184e['ok']){const _0x88218b=await _0x39184e['json']()['catch'](()=>({}));throw new Error(_0x88218b['error']||_0x88218b['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x39184e['json']();},async 'getSyncFiles'(_0x3a0dee){if(!_0x3a0dee)throw new Error('Task\x20ID\x20is\x20required');const _0x49a8b1=await fetch(API_BASE+'/tasks/'+_0x3a0dee+'/sync-to-ibmi/files');if(!_0x49a8b1['ok']){const _0x3c08c1=await _0x49a8b1['json']()['catch'](()=>({}));throw new Error(_0x3c08c1['error']||_0x3c08c1['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x49a8b1['json']();},async 'syncToIbmi'(_0x279a11,_0x2aee61,_0x1f2a3c=null,_0x52e1c1=null,_0x59ad47=null){if(!_0x279a11)throw new Error('Task\x20ID\x20is\x20required');const _0x420761={'library':_0x2aee61};if(_0x1f2a3c)_0x420761['user']=_0x1f2a3c;if(_0x52e1c1)_0x420761['password']=_0x52e1c1;if(_0x59ad47)_0x420761['files']=_0x59ad47;const _0x2675da=await fetch(API_BASE+'/tasks/'+_0x279a11+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x420761)});if(!_0x2675da['ok']){const _0x4f322f=await _0x2675da['json']()['catch'](()=>({}));throw new Error(_0x4f322f['error']||_0x4f322f['message']||'Sync\x20failed');}return await _0x2675da['json']();},async 'getIbmiSyncLog'(_0x2abc8a){if(!_0x2abc8a)throw new Error('Task\x20ID\x20is\x20required');const _0x36bb05=await fetch(API_BASE+'/tasks/'+_0x2abc8a+'/ibmi-sync-log');if(!_0x36bb05['ok']){const _0x18cae6=await _0x36bb05['json']()['catch'](()=>({}));throw new Error(_0x18cae6['error']||_0x18cae6['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x36bb05['json']();},async 'pullChanges'(_0x350327){if(!_0x350327)throw new Error('Task\x20ID\x20is\x20required');const _0xd3e300=await fetch(API_BASE+'/tasks/'+_0x350327+'/pull-changes',{'method':'POST'});if(!_0xd3e300['ok']){const _0x594d75=await _0xd3e300['json']()['catch'](()=>({})),_0x4bcd82=new Error(_0x594d75['message']||_0x594d75['error']||'Failed\x20to\x20pull\x20changes:\x20'+_0xd3e300['statusText']);_0x4bcd82['code']=_0x594d75['error_code']||null,_0x4bcd82['details']=_0x594d75['details']||null,_0x4bcd82['tokenExpiryDays']=_0x594d75['token_expiry_days']||null;throw _0x4bcd82;}return await _0xd3e300['json']();},async 'readFile'(_0x72d64a,_0x1d899b){if(!_0x72d64a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d899b)throw new Error('File\x20path\x20is\x20required');const _0x818d0a=await fetch(API_BASE+'/tasks/'+_0x72d64a+'/files?path='+encodeURIComponent(_0x1d899b));if(!_0x818d0a['ok']){const _0x151591=await _0x818d0a['json']()['catch'](()=>({}));throw new Error(_0x151591['error']||_0x151591['message']||'Failed\x20to\x20read\x20file:\x20'+_0x818d0a['statusText']);}return await _0x818d0a['json']();},'getTaskFileDownloadUrl'(_0x4f784d,_0x1862bf){if(!_0x4f784d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1862bf)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x4f784d+'/files/download?path='+encodeURIComponent(_0x1862bf);},async 'writeFile'(_0x136379,_0xb942e,_0x87434d){if(!_0x136379)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb942e)throw new Error('File\x20path\x20is\x20required');if(_0x87434d===undefined)throw new Error('Content\x20is\x20required');const _0x19f84b=await fetch(API_BASE+'/tasks/'+_0x136379+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xb942e,'content':_0x87434d})});if(!_0x19f84b['ok']){const _0x30f688=await _0x19f84b['json']()['catch'](()=>({}));throw new Error(_0x30f688['error']||_0x30f688['message']||'Failed\x20to\x20write\x20file:\x20'+_0x19f84b['statusText']);}return await _0x19f84b['json']();},async 'uploadTaskFiles'(_0x192c17,_0x3bab31,_0x4bb3af){if(!_0x192c17)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3bab31)throw new Error('Target\x20directory\x20is\x20required');if(!_0x4bb3af||_0x4bb3af['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x56a261=new FormData();_0x56a261['append']('targetDir',_0x3bab31);for(const _0x388dfc of _0x4bb3af){_0x56a261['append']('files',_0x388dfc,_0x388dfc['name']);}const _0x5ae72b=await fetch(API_BASE+'/tasks/'+_0x192c17+'/files/upload',{'method':'POST','body':_0x56a261});if(!_0x5ae72b['ok']){const _0x290407=await _0x5ae72b['json']()['catch'](()=>({}));throw new Error(_0x290407['error']||_0x290407['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x5ae72b['statusText']);}return await _0x5ae72b['json']();},async 'createDirectory'(_0x24b363,_0x3f8594){if(!_0x24b363)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f8594)throw new Error('Directory\x20path\x20is\x20required');const _0x398e8a=await fetch(API_BASE+'/tasks/'+_0x24b363+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3f8594})});if(!_0x398e8a['ok']){const _0x1606cc=await _0x398e8a['json']()['catch'](()=>({}));throw new Error(_0x1606cc['error']||_0x1606cc['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x398e8a['statusText']);}return await _0x398e8a['json']();},async 'renamePath'(_0x1d50de,_0x4e40c2,_0x2aecab){if(!_0x1d50de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e40c2)throw new Error('Source\x20path\x20is\x20required');if(!_0x2aecab)throw new Error('Destination\x20path\x20is\x20required');const _0x288b42=await fetch(API_BASE+'/tasks/'+_0x1d50de+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x4e40c2,'newPath':_0x2aecab})});if(!_0x288b42['ok']){const _0x575081=await _0x288b42['json']()['catch'](()=>({}));throw new Error(_0x575081['error']||_0x575081['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x288b42['statusText']);}return await _0x288b42['json']();},async 'deleteFile'(_0x2f7829,_0x2fe646){if(!_0x2f7829)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fe646)throw new Error('File\x20path\x20is\x20required');const _0x389fe1=await fetch(API_BASE+'/tasks/'+_0x2f7829+'/files?path='+encodeURIComponent(_0x2fe646),{'method':'DELETE'});if(!_0x389fe1['ok']){const _0x54d00c=await _0x389fe1['json']()['catch'](()=>({}));throw new Error(_0x54d00c['error']||_0x54d00c['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x389fe1['statusText']);}return await _0x389fe1['json']();},async 'deleteDirectory'(_0x5082c4,_0x5de369){if(!_0x5082c4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5de369)throw new Error('Directory\x20path\x20is\x20required');const _0x5ab974=await fetch(API_BASE+'/tasks/'+_0x5082c4+'/files/directory?path='+encodeURIComponent(_0x5de369),{'method':'DELETE'});if(!_0x5ab974['ok']){const _0x1ff072=await _0x5ab974['json']()['catch'](()=>({}));throw new Error(_0x1ff072['error']||_0x1ff072['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5ab974['statusText']);}return await _0x5ab974['json']();},async 'discardFile'(_0x1e75e6,_0x151dbb,_0x47cec3){if(!_0x1e75e6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x151dbb)throw new Error('File\x20path\x20is\x20required');if(!_0x47cec3)throw new Error('Repository\x20path\x20is\x20required');const _0x4273f3=await fetch(API_BASE+'/tasks/'+_0x1e75e6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x151dbb,'repoPath':_0x47cec3})});if(!_0x4273f3['ok']){const _0x105b2d=await _0x4273f3['json']()['catch'](()=>({}));throw new Error(_0x105b2d['error']||_0x105b2d['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4273f3['statusText']);}return await _0x4273f3['json']();},async 'followUpTask'(_0x5c1899,_0x2da5cd={}){if(!_0x5c1899)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2da5cd['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2469ba,_0x22b843={};if(_0x2da5cd['files']&&_0x2da5cd['files']['length']>0x0){const _0x5643c3=new FormData();_0x5643c3['append']('instructions',_0x2da5cd['instructions']);for(const _0x4a1763 of _0x2da5cd['files']){_0x5643c3['append']('attachments',_0x4a1763);}_0x2469ba=_0x5643c3;}else _0x22b843['Content-Type']='application/json',_0x2469ba=JSON['stringify']({'instructions':_0x2da5cd['instructions']});const _0x1ebdc2=await fetch(API_BASE+'/tasks/'+_0x5c1899+'/follow-up',{'method':'POST','headers':_0x22b843,'body':_0x2469ba});if(!_0x1ebdc2['ok']){const _0x37b251=await _0x1ebdc2['json']()['catch'](()=>({}));throw new Error(_0x37b251['error']||_0x37b251['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1ebdc2['statusText']);}return await _0x1ebdc2['json']();},async 'getTaskRewindPoints'(_0x502418){if(!_0x502418)throw new Error('Task\x20ID\x20is\x20required');const _0x5ecd07=await fetch(API_BASE+'/tasks/'+_0x502418+'/rewind-points');if(!_0x5ecd07['ok']){const _0x13b101=await _0x5ecd07['json']()['catch'](()=>({}));throw new Error(_0x13b101['error']||_0x13b101['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x5ecd07['statusText']);}return await _0x5ecd07['json']();},async 'rewindTask'(_0x5c220b,_0x14f87a={}){if(!_0x5c220b)throw new Error('Task\x20ID\x20is\x20required');const _0x57dd34=Number['isInteger'](_0x14f87a['targetFollowUpCount'])?_0x14f87a['targetFollowUpCount']:0x0,_0x4bae01={'targetFollowUpCount':_0x57dd34};typeof _0x14f87a['instructions']==='string'&&_0x14f87a['instructions']['trim']()&&(_0x4bae01['instructions']=_0x14f87a['instructions']['trim']());typeof _0x14f87a['rewindFiles']==='boolean'&&(_0x4bae01['rewindFiles']=_0x14f87a['rewindFiles']);const _0x21dfad=await fetch(API_BASE+'/tasks/'+_0x5c220b+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bae01)});if(!_0x21dfad['ok']){const _0x5d7c1d=await _0x21dfad['json']()['catch'](()=>({}));throw new Error(_0x5d7c1d['error']||_0x5d7c1d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x21dfad['statusText']);}return await _0x21dfad['json']();},async 'login'(_0x1dd84f,_0x4d8206){const _0x45657e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1dd84f,'password':_0x4d8206})});if(!_0x45657e['ok']){const _0x1783e9=await _0x45657e['json']();throw new Error(_0x1783e9['message']||'Login\x20failed');}return await _0x45657e['json']();},async 'logout'(){const _0x4098dd=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4098dd['ok']){const _0x3a9f58=await _0x4098dd['json']();throw new Error(_0x3a9f58['message']||'Logout\x20failed');}return await _0x4098dd['json']();},async 'getCurrentUser'(){const _0x47c8c4=await fetch(API_BASE+'/auth/me');if(!_0x47c8c4['ok'])throw new Error('Not\x20authenticated');const _0x1c9d99=await _0x47c8c4['json']();return _0x1c9d99['user'];},async 'getRolesInfo'(){const _0x15403c=await fetch(API_BASE+'/users/roles');if(!_0x15403c['ok']){const _0x1d80ff=await _0x15403c['json']();throw new Error(_0x1d80ff['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x15403c['json']();},async 'getUsers'(){const _0x2ffe16=await fetch(API_BASE+'/users');if(!_0x2ffe16['ok']){const _0x41dfa9=await _0x2ffe16['json']();throw new Error(_0x41dfa9['message']||'Failed\x20to\x20get\x20users');}return await _0x2ffe16['json']();},async 'getUser'(_0x533721){const _0x5b2c88=await fetch(API_BASE+'/users/'+_0x533721);if(!_0x5b2c88['ok']){const _0x241ff3=await _0x5b2c88['json']();throw new Error(_0x241ff3['message']||'Failed\x20to\x20get\x20user');}return await _0x5b2c88['json']();},async 'createUser'(_0x23a22f){const _0x20fe8f=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23a22f)});if(!_0x20fe8f['ok']){const _0x33eb0c=await _0x20fe8f['json']();throw new Error(_0x33eb0c['message']||'Failed\x20to\x20create\x20user');}return await _0x20fe8f['json']();},async 'updateUser'(_0x2a8fce,_0x4d9d73){const _0x398304=await fetch(API_BASE+'/users/'+_0x2a8fce,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4d9d73)});if(!_0x398304['ok']){const _0x5b2784=await _0x398304['json']();throw new Error(_0x5b2784['message']||'Failed\x20to\x20update\x20user');}return await _0x398304['json']();},async 'deleteUser'(_0x5227ae){const _0x2ef901=await fetch(API_BASE+'/users/'+_0x5227ae,{'method':'DELETE'});if(!_0x2ef901['ok']){const _0x3f8075=await _0x2ef901['json']();throw new Error(_0x3f8075['message']||'Failed\x20to\x20delete\x20user');}return await _0x2ef901['json']();},async 'stopAllContainers'(){const _0x1a7ee0=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x16e544=await _0x1a7ee0['json']()['catch'](()=>({}));if(!_0x1a7ee0['ok'])throw new Error(_0x16e544['message']||_0x16e544['error']||'Failed\x20to\x20stop\x20containers');return _0x16e544;},async 'removeStoppedContainers'(){const _0x25e424=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x554e40=await _0x25e424['json']()['catch'](()=>({}));if(!_0x25e424['ok'])throw new Error(_0x554e40['message']||_0x554e40['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x554e40;},async 'pruneDockerResources'(){const _0x1b7522=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x6c3f8=await _0x1b7522['json']()['catch'](()=>({}));if(!_0x1b7522['ok'])throw new Error(_0x6c3f8['message']||_0x6c3f8['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x6c3f8;},async 'getUpdateSettings'(){const _0x28e1dc=await fetch(API_BASE+'/health/update-settings'),_0x342065=await _0x28e1dc['json']()['catch'](()=>({}));if(!_0x28e1dc['ok'])throw new Error(_0x342065['message']||_0x342065['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x342065;},async 'applyServerUpdate'(_0x1f1f45){const _0x2cc585=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x1f1f45})}),_0x57860e=await _0x2cc585['json']()['catch'](()=>({}));if(!_0x2cc585['ok']){const _0x2b3b90=new Error(_0x57860e['message']||_0x57860e['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x57860e['output']!==undefined)_0x2b3b90['output']=_0x57860e['output'];if(_0x57860e['error']!==undefined)_0x2b3b90['commandError']=_0x57860e['error'];throw _0x2b3b90;}return _0x57860e;},async 'restartServer'(){const _0x1b2b3e=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2cb8f6=await _0x1b2b3e['json']()['catch'](()=>({}));if(!_0x1b2b3e['ok'])throw new Error(_0x2cb8f6['message']||_0x2cb8f6['error']||'Failed\x20to\x20restart\x20server');return _0x2cb8f6;},async 'getDockerContainers'(){const _0x31edbd=await fetch(API_BASE+'/health/containers'),_0x5f1f2e=await _0x31edbd['json']()['catch'](()=>({}));if(!_0x31edbd['ok'])throw new Error(_0x5f1f2e['message']||_0x5f1f2e['error']||'Failed\x20to\x20load\x20containers');return _0x5f1f2e;},async 'getDockerImages'(){const _0x4348c=await fetch(API_BASE+'/health/docker/images'),_0x59f4a2=await _0x4348c['json']()['catch'](()=>({}));if(!_0x4348c['ok'])throw new Error(_0x59f4a2['message']||_0x59f4a2['error']||'Failed\x20to\x20load\x20images');return _0x59f4a2;},async 'getDockerVolumes'(){const _0x4544c1=await fetch(API_BASE+'/health/docker/volumes'),_0x361700=await _0x4544c1['json']()['catch'](()=>({}));if(!_0x4544c1['ok'])throw new Error(_0x361700['message']||_0x361700['error']||'Failed\x20to\x20load\x20volumes');return _0x361700;},async 'getActiveSessions'(){const _0x15e55c=await fetch(API_BASE+'/health/sessions'),_0x514e04=await _0x15e55c['json']()['catch'](()=>({}));if(!_0x15e55c['ok'])throw new Error(_0x514e04['message']||_0x514e04['error']||'Failed\x20to\x20load\x20sessions');return _0x514e04;},async 'getSystemInfo'(){const _0x4b8b30=await fetch(API_BASE+'/health/system'),_0x5945e0=await _0x4b8b30['json']()['catch'](()=>({}));if(!_0x4b8b30['ok'])throw new Error(_0x5945e0['message']||_0x5945e0['error']||'Failed\x20to\x20load\x20system\x20info');return _0x5945e0;},async 'stopDockerContainer'(_0x121042){const _0x498ef5=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x121042)+'/stop',{'method':'POST'}),_0x5b40cd=await _0x498ef5['json']()['catch'](()=>({}));if(!_0x498ef5['ok'])throw new Error(_0x5b40cd['message']||_0x5b40cd['error']||'Failed\x20to\x20stop\x20container');return _0x5b40cd;},async 'removeDockerContainer'(_0x3375fe){const _0x58f02e=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x3375fe),{'method':'DELETE'}),_0x12a041=await _0x58f02e['json']()['catch'](()=>({}));if(!_0x58f02e['ok'])throw new Error(_0x12a041['message']||_0x12a041['error']||'Failed\x20to\x20remove\x20container');return _0x12a041;},async 'createPasswordToken'(_0x132232,_0x406b8e='setup',_0x507cc4=![]){const _0x455ea0=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x132232,'type':_0x406b8e,'sendEmail':_0x507cc4})});if(!_0x455ea0['ok']){const _0x473f36=await _0x455ea0['json']();throw new Error(_0x473f36['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x455ea0['json']();},async 'getEmailConfig'(){const _0xb8b7f1=await fetch(API_BASE+'/password/email-config');if(!_0xb8b7f1['ok']){const _0x29b805=await _0xb8b7f1['json']();throw new Error(_0x29b805['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0xb8b7f1['json']();},async 'updateTaskName'(_0x4f59be,_0x529677){const _0x17d0f4=await fetch(API_BASE+'/tasks/'+_0x4f59be,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x529677})});if(!_0x17d0f4['ok']){const _0x474c5e=await _0x17d0f4['json']();throw new Error(_0x474c5e['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x17d0f4['json']();},async 'pinTask'(_0x5b4634,_0x22ea7d,_0x1d762c=null){if(!_0x5b4634)throw new Error('Task\x20ID\x20is\x20required');const _0x4d23e2={'pinned':_0x22ea7d};_0x1d762c&&_0x1d762c['length']>0x0&&(_0x4d23e2['additionalTaskIds']=_0x1d762c);const _0x3f571f=await fetch(API_BASE+'/tasks/'+_0x5b4634+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4d23e2)});if(!_0x3f571f['ok']){const _0x20e8c6=await _0x3f571f['json']();throw new Error(_0x20e8c6['error']||'Failed\x20to\x20pin\x20task');}return await _0x3f571f['json']();},async 'setTaskWinner'(_0x47821b,_0x4cf184,_0xa43d4=[]){if(!_0x47821b)throw new Error('Task\x20ID\x20is\x20required');const _0x5a6956=await fetch(API_BASE+'/tasks/'+_0x47821b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4cf184,'siblings':_0xa43d4})});if(!_0x5a6956['ok']){const _0x55664a=await _0x5a6956['json']();throw new Error(_0x55664a['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x5a6956['json']();},async 'setTaskLoser'(_0x542a66,_0xb9c0d8){if(!_0x542a66)throw new Error('Task\x20ID\x20is\x20required');const _0x445603=await fetch(API_BASE+'/tasks/'+_0x542a66+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xb9c0d8})});if(!_0x445603['ok']){const _0x1ab813=await _0x445603['json']();throw new Error(_0x1ab813['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x445603['json']();},async 'createTaskGroup'(_0x2f88d5){const _0x12c7bc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f88d5)});if(!_0x12c7bc['ok']){const _0x49565e=await _0x12c7bc['json']();throw new Error(_0x49565e['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x12c7bc['json']();},async 'getTaskGroups'(_0x25a74f={}){const _0x5d1bb9=new URLSearchParams();if(_0x25a74f['userId'])_0x5d1bb9['set']('userId',String(_0x25a74f['userId']));if(_0x25a74f['status'])_0x5d1bb9['set']('status',String(_0x25a74f['status']));if(_0x25a74f['limit'])_0x5d1bb9['set']('limit',String(_0x25a74f['limit']));const _0x5c3d9e=API_BASE+'/tasks/groups'+(_0x5d1bb9['toString']()?'?'+_0x5d1bb9['toString']():''),_0x55ea70=await fetch(_0x5c3d9e);if(!_0x55ea70['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x55ea70['json']();},async 'getTaskGroup'(_0xb7d317){const _0x39b6dc=await fetch(API_BASE+'/tasks/groups/'+_0xb7d317);if(!_0x39b6dc['ok']){const _0x42655f=await _0x39b6dc['json']();throw new Error(_0x42655f['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x39b6dc['json']();},async 'updateTaskGroup'(_0x1ef7d3,_0x11a784,_0x5403ed){const _0x1b7343=await fetch(API_BASE+'/tasks/'+_0x1ef7d3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x11a784,'groupIndex':_0x5403ed})});if(!_0x1b7343['ok']){const _0x59f362=await _0x1b7343['json']();throw new Error(_0x59f362['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x1b7343['json']();},async 'removeTaskFromGroup'(_0x1b05ef){return this['updateTaskGroup'](_0x1b05ef,null,null);},async 'deleteTaskGroup'(_0x25b3d3,_0xefa145=![]){const _0x3fb18b=_0xefa145?'?deleteTasks=true':'',_0x11be91=await fetch(API_BASE+'/tasks/groups/'+_0x25b3d3+_0x3fb18b,{'method':'DELETE'});if(!_0x11be91['ok']){const _0x57e0bd=await _0x11be91['json']();throw new Error(_0x57e0bd['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x585383,_0x1a063f){const _0x3533b2=await fetch(API_BASE+'/tasks/groups/'+_0x585383+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x1a063f})});if(!_0x3533b2['ok']){const _0x4002d0=await _0x3533b2['json']();throw new Error(_0x4002d0['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3533b2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5235ae){if(!_0x5235ae)throw new Error('Task\x20ID\x20is\x20required');const _0xfd0d=await fetch(API_BASE+'/tasks/'+_0x5235ae+'/comments');if(!_0xfd0d['ok']){const _0x4d466c=await _0xfd0d['json']()['catch'](()=>({}));throw new Error(_0x4d466c['error']||'Failed\x20to\x20get\x20comments');}return await _0xfd0d['json']();},async 'addComment'(_0x36bc83,_0x2249f2){if(!_0x36bc83)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2249f2)throw new Error('Comment\x20content\x20is\x20required');const _0x492913=await fetch(API_BASE+'/tasks/'+_0x36bc83+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2249f2})});if(!_0x492913['ok']){const _0x51644c=await _0x492913['json']()['catch'](()=>({}));throw new Error(_0x51644c['error']||'Failed\x20to\x20add\x20comment');}return await _0x492913['json']();},async 'updateComment'(_0x4ccbcf,_0x23d13c,_0x235a1f){if(!_0x4ccbcf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23d13c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x235a1f)throw new Error('Comment\x20content\x20is\x20required');const _0x53d46b=await fetch(API_BASE+'/tasks/'+_0x4ccbcf+'/comments/'+_0x23d13c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x235a1f})});if(!_0x53d46b['ok']){const _0x593533=await _0x53d46b['json']()['catch'](()=>({}));throw new Error(_0x593533['error']||'Failed\x20to\x20update\x20comment');}return await _0x53d46b['json']();},async 'deleteComment'(_0x46311d,_0x12144c){if(!_0x46311d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12144c)throw new Error('Comment\x20ID\x20is\x20required');const _0x15e77b=await fetch(API_BASE+'/tasks/'+_0x46311d+'/comments/'+_0x12144c,{'method':'DELETE'});if(!_0x15e77b['ok']){const _0x214ec4=await _0x15e77b['json']()['catch'](()=>({}));throw new Error(_0x214ec4['error']||'Failed\x20to\x20delete\x20comment');}return await _0x15e77b['json']();},async 'createObjective'(_0x145ba3){const _0x35d4cd={'objective':!![],'name':_0x145ba3['name']||'','environment':_0x145ba3['environment']||null,'agents':_0x145ba3['agents']||[],'branches':_0x145ba3['branches']||{},'isPinned':_0x145ba3['isPinned']||![],'parentObjectiveId':_0x145ba3['parentObjectiveId']||null,'env_vars':_0x145ba3['envVars']||{},'parameters':{'instructions':_0x145ba3['instructions']||''},'files':_0x145ba3['files']||[],'jira':_0x145ba3['jira']||null};return this['createTask'](_0x35d4cd);},async 'updateObjective'(_0x5cbb1a,_0x4bc6a1,_0x56fd1a=[],_0x2935fa=[]){let _0x3a3cd8,_0x2f72fc={};const _0x3255af={..._0x4bc6a1};_0x2935fa&&_0x2935fa['length']>0x0&&(_0x3255af['removeAttachments']=_0x2935fa);if(_0x56fd1a&&_0x56fd1a['length']>0x0){const _0x31f1b5=new FormData();for(const [_0x4a2686,_0x3d05f6]of Object['entries'](_0x3255af)){if(_0x3d05f6==null)continue;typeof _0x3d05f6==='object'?_0x31f1b5['append'](_0x4a2686,JSON['stringify'](_0x3d05f6)):_0x31f1b5['append'](_0x4a2686,String(_0x3d05f6));}for(const _0x19002e of _0x56fd1a){_0x31f1b5['append']('attachments',_0x19002e);}_0x3a3cd8=_0x31f1b5;}else _0x2f72fc['Content-Type']='application/json',_0x3a3cd8=JSON['stringify'](_0x3255af);const _0x32f145=await fetch(API_BASE+'/tasks/'+_0x5cbb1a,{'method':'PATCH','headers':_0x2f72fc,'body':_0x3a3cd8});if(!_0x32f145['ok']){const _0x16d8d0=await _0x32f145['json']();throw new Error(_0x16d8d0['error']||'Failed\x20to\x20update\x20objective');}return await _0x32f145['json']();},async 'deleteObjective'(_0x436a33){return this['deleteTask'](_0x436a33);},async 'launchObjective'(_0x4ef32f,_0x5ee3da={}){const _0x473526=await fetch(API_BASE+'/tasks/'+_0x4ef32f+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ee3da)});if(!_0x473526['ok']){const _0x2d22a3=await _0x473526['json']();throw new Error(_0x2d22a3['error']||'Failed\x20to\x20launch\x20objective');}return await _0x473526['json']();},async 'getObjectiveAttachments'(_0x3fc024){return this['getTaskAttachments'](_0x3fc024);},async 'createJudgeTask'({environment:_0x5dd238,judgeAgent:_0x27ed11,groupId:_0x5a6beb,taskIds:_0x5e9ff3,judgeCustomInstructions:_0x24e053,isPinned:_0x483f7b}){const _0xe76dd0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5dd238,'judgeAgent':_0x27ed11,'groupId':_0x5a6beb,'taskIds':_0x5e9ff3,'judgeCustomInstructions':_0x24e053,'isPinned':_0x483f7b})});if(!_0xe76dd0['ok']){const _0x2c81ca=await _0xe76dd0['json']();throw new Error(_0x2c81ca['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xe76dd0['json']();},async 'getJudgeTasks'(_0x3a4f47){const _0x4997a9=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3a4f47));if(!_0x4997a9['ok']){const _0x3e367f=await _0x4997a9['json']();throw new Error(_0x3e367f['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4997a9['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1bb6ef,_0x2c03ee,_0x432e7d=''){const _0x316c17=await fetch(API_BASE+'/tasks/'+_0x1bb6ef+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2c03ee,'customPreamble':_0x432e7d})});if(!_0x316c17['ok']){const _0x354e9b=await _0x316c17['json']();throw new Error(_0x354e9b['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x316c17['json']();},async 'getJiraConfig'(){const _0x9acb51=await fetch(API_BASE+'/jira/config');if(!_0x9acb51['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x9acb51['json']();},async 'getJiraIssue'(_0x1c4fba){const _0x571ff6=await fetch(API_BASE+'/jira/issues/'+_0x1c4fba);if(!_0x571ff6['ok']){const _0x9eca9d=await _0x571ff6['json']()['catch'](()=>({}));throw new Error(_0x9eca9d['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x571ff6['statusText']);}return await _0x571ff6['json']();},async 'searchJiraIssues'(_0x3799c2,_0x1afddd=0x14){const _0x473064=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3799c2,'maxResults':_0x1afddd})});if(!_0x473064['ok']){const _0x4b8257=await _0x473064['json']()['catch'](()=>({}));throw new Error(_0x4b8257['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x473064['statusText']);}return await _0x473064['json']();},async 'postJiraComment'(_0x602037,_0x232cab){const _0x29e0a0=await fetch(API_BASE+'/jira/issues/'+_0x602037+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x232cab})});if(!_0x29e0a0['ok']){const _0x73c905=await _0x29e0a0['json']()['catch'](()=>({}));throw new Error(_0x73c905['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x29e0a0['statusText']);}return await _0x29e0a0['json']();},async 'getJiraComments'(_0x45eecf){const _0x59be43=await fetch(API_BASE+'/jira/issues/'+_0x45eecf+'/comments');if(!_0x59be43['ok']){const _0x4ada5e=await _0x59be43['json']()['catch'](()=>({}));throw new Error(_0x4ada5e['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x59be43['statusText']);}return await _0x59be43['json']();},async 'promptParameter'({environment:_0xe3cc2a,command:_0x308fd6,parser:parser='json'}){const _0x55b8c2=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xe3cc2a,'command':_0x308fd6,'parser':parser})});if(!_0x55b8c2['ok']){const _0x19e458=await _0x55b8c2['json']()['catch'](()=>({}));throw new Error(_0x19e458['message']||_0x19e458['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x55b8c2['statusText']);}return await _0x55b8c2['json']();},async 'promptParameterStream'(_0x2cd975,_0x58f5fc){const _0xe99f3d=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cd975)});if(!_0xe99f3d['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xe99f3d['statusText']);const _0x78909e=_0xe99f3d['body']['getReader'](),_0x5b533e=new TextDecoder();let _0x2b9e1b='';return new Promise((_0x3cc41e,_0x29df1c)=>{const _0x608dd=async()=>{try{const {done:_0x5500be,value:_0x4849a9}=await _0x78909e['read']();if(_0x5500be)return;_0x2b9e1b+=_0x5b533e['decode'](_0x4849a9,{'stream':!![]});const _0x4b66f7=_0x2b9e1b['split']('\x0a\x0a');_0x2b9e1b=_0x4b66f7['pop']()||'';for(const _0x172c63 of _0x4b66f7){if(!_0x172c63['trim']())continue;const _0xa44ff=_0x172c63['split']('\x0a');let _0x2317af='message',_0x6f863='';for(const _0x5af178 of _0xa44ff){if(_0x5af178['startsWith']('event:'))_0x2317af=_0x5af178['substring'](0x6)['trim']();else _0x5af178['startsWith']('data:')&&(_0x6f863=_0x5af178['substring'](0x5)['trim']());}if(!_0x6f863)continue;try{const _0x3b802b=JSON['parse'](_0x6f863);if(_0x2317af==='progress'&&_0x58f5fc)_0x58f5fc(_0x3b802b['stage'],_0x3b802b['message']);else{if(_0x2317af==='result'){_0x3cc41e(_0x3b802b);return;}else{if(_0x2317af==='error'){let _0x3ac715=_0x3b802b['message']||_0x3b802b['error']||'Prompt\x20command\x20failed';_0x3b802b['rawOutput']&&(_0x3ac715+='\x0a\x0aRaw\x20output:\x0a'+_0x3b802b['rawOutput']);_0x29df1c(new Error(_0x3ac715));return;}}}}catch(_0x19673b){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x19673b),console['error']('Event\x20type:',_0x2317af),console['error']('Event\x20data:',_0x6f863),console['error']('First\x20200\x20chars:',_0x6f863['substring'](0x0,0xc8)),_0x29df1c(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x19673b['message']+'\x0a\x0aData:\x20'+_0x6f863['substring'](0x0,0x1f4)));return;}}_0x608dd();}catch(_0x475946){_0x29df1c(_0x475946);}};_0x608dd();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x16bb97){const _0x2d5652=await fetch(''+API_BASE+_0x16bb97);if(!_0x2d5652['ok']){const _0x23dea1=await _0x2d5652['json']()['catch'](()=>({'error':_0x2d5652['statusText']})),_0x4c0321=new Error(_0x23dea1['error']||_0x23dea1['message']||_0x2d5652['statusText']);if(_0x23dea1['detail']!==undefined)_0x4c0321['detail']=_0x23dea1['detail'];throw _0x4c0321;}return await _0x2d5652['json']();},async 'post'(_0x7a2d71,_0xacc93f){const _0x2f2419=await fetch(''+API_BASE+_0x7a2d71,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xacc93f)});if(!_0x2f2419['ok']){const _0x2e6f6a=await _0x2f2419['json']()['catch'](()=>({'error':_0x2f2419['statusText']})),_0xa3f6ec=new Error(_0x2e6f6a['error']||_0x2e6f6a['message']||_0x2f2419['statusText']);if(_0x2e6f6a['detail']!==undefined)_0xa3f6ec['detail']=_0x2e6f6a['detail'];throw _0xa3f6ec;}return await _0x2f2419['json']();},async 'put'(_0x40dae7,_0xa75060){const _0x238bdc=await fetch(''+API_BASE+_0x40dae7,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa75060)});if(!_0x238bdc['ok']){const _0x249921=await _0x238bdc['json']()['catch'](()=>({'error':_0x238bdc['statusText']})),_0x1b6d4a=new Error(_0x249921['error']||_0x249921['message']||_0x238bdc['statusText']);if(_0x249921['detail']!==undefined)_0x1b6d4a['detail']=_0x249921['detail'];throw _0x1b6d4a;}return await _0x238bdc['json']();},async 'delete'(_0x164576,_0x32a580){const _0x3bc510={'method':'DELETE'};_0x32a580&&(_0x3bc510['headers']={'Content-Type':'application/json'},_0x3bc510['body']=JSON['stringify'](_0x32a580));const _0x2341a0=await fetch(''+API_BASE+_0x164576,_0x3bc510);if(!_0x2341a0['ok']){const _0xdb92eb=await _0x2341a0['json']()['catch'](()=>({'error':_0x2341a0['statusText']})),_0xc0ffc7=new Error(_0xdb92eb['error']||_0xdb92eb['message']||_0x2341a0['statusText']);if(_0xdb92eb['detail']!==undefined)_0xc0ffc7['detail']=_0xdb92eb['detail'];throw _0xc0ffc7;}return await _0x2341a0['json']();},async 'getSkills'(){const _0x8cbcf=await fetch(API_BASE+'/skills');if(!_0x8cbcf['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x8cbcf['statusText']);return await _0x8cbcf['json']();},async 'getSkill'(_0x200f89){const _0x5c7641=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x200f89));if(!_0x5c7641['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5c7641['statusText']);return await _0x5c7641['json']();},async 'createSkill'(_0x5967db){const _0x14e972=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5967db)});if(!_0x14e972['ok']){const _0x877056=await _0x14e972['json']()['catch'](()=>({'error':_0x14e972['statusText']})),_0x3fb4e4=new Error(_0x877056['error']||_0x877056['message']||_0x14e972['statusText']);if(_0x877056['detail']!==undefined)_0x3fb4e4['detail']=_0x877056['detail'];throw _0x3fb4e4;}return await _0x14e972['json']();},async 'updateSkill'(_0x1919a5,_0xee0692){const _0x536930=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1919a5),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xee0692)});if(!_0x536930['ok']){const _0x4610f0=await _0x536930['json']()['catch'](()=>({'error':_0x536930['statusText']})),_0x1e01f4=new Error(_0x4610f0['error']||_0x4610f0['message']||_0x536930['statusText']);if(_0x4610f0['detail']!==undefined)_0x1e01f4['detail']=_0x4610f0['detail'];throw _0x1e01f4;}return await _0x536930['json']();},async 'deleteSkill'(_0x470e70){const _0x2b4f0c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x470e70),{'method':'DELETE'});if(!_0x2b4f0c['ok']){const _0x967374=await _0x2b4f0c['json']()['catch'](()=>({'error':_0x2b4f0c['statusText']})),_0x3c1aa5=new Error(_0x967374['error']||_0x967374['message']||_0x2b4f0c['statusText']);if(_0x967374['detail']!==undefined)_0x3c1aa5['detail']=_0x967374['detail'];throw _0x3c1aa5;}return await _0x2b4f0c['json']();},async 'getSkillFile'(_0x4ed4f3,_0x22993e){const _0x4b34e8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4ed4f3)+'/files/'+_0x22993e);if(!_0x4b34e8['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x4b34e8['statusText']);return await _0x4b34e8['json']();},async 'saveSkillFile'(_0x49d81e,_0x2d086a,_0x3bb4a5){const _0x43894c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x49d81e)+'/files/'+_0x2d086a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3bb4a5})});if(!_0x43894c['ok']){const _0x877f75=await _0x43894c['json']()['catch'](()=>({'error':_0x43894c['statusText']})),_0x146d55=new Error(_0x877f75['error']||_0x877f75['message']||_0x43894c['statusText']);if(_0x877f75['detail']!==undefined)_0x146d55['detail']=_0x877f75['detail'];throw _0x146d55;}return await _0x43894c['json']();},async 'deleteSkillFile'(_0x1b8dff,_0x17c088){const _0x3f94c9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b8dff)+'/files/'+_0x17c088,{'method':'DELETE'});if(!_0x3f94c9['ok']){const _0x5c7585=await _0x3f94c9['json']()['catch'](()=>({'error':_0x3f94c9['statusText']})),_0x4fe6d6=new Error(_0x5c7585['error']||_0x5c7585['message']||_0x3f94c9['statusText']);if(_0x5c7585['detail']!==undefined)_0x4fe6d6['detail']=_0x5c7585['detail'];throw _0x4fe6d6;}return await _0x3f94c9['json']();},async 'pullSkills'(){const _0xf5c4e1=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0xf5c4e1['ok']){const _0x4e74ba=await _0xf5c4e1['json']()['catch'](()=>({'error':_0xf5c4e1['statusText']})),_0x59e281=new Error(_0x4e74ba['error']||_0x4e74ba['message']||_0xf5c4e1['statusText']);if(_0x4e74ba['detail']!==undefined)_0x59e281['detail']=_0x4e74ba['detail'];throw _0x59e281;}return await _0xf5c4e1['json']();},async 'commitSkills'(_0x319002,_0x3aea36={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3aea36,_0x5c0b28=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x319002,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5c0b28['ok']){const _0x538c60=await _0x5c0b28['json']()['catch'](()=>({'error':_0x5c0b28['statusText']})),_0xd155c=new Error(_0x538c60['error']||_0x538c60['message']||_0x5c0b28['statusText']);if(_0x538c60['detail']!==undefined)_0xd155c['detail']=_0x538c60['detail'];throw _0xd155c;}return await _0x5c0b28['json']();},async 'discardSkillsChanges'(){const _0x1b1d39=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1b1d39['ok']){const _0x3bfc25=await _0x1b1d39['json']()['catch'](()=>({'error':_0x1b1d39['statusText']})),_0x397e24=new Error(_0x3bfc25['error']||_0x3bfc25['message']||_0x1b1d39['statusText']);if(_0x3bfc25['detail']!==undefined)_0x397e24['detail']=_0x3bfc25['detail'];throw _0x397e24;}return await _0x1b1d39['json']();},async 'getSkillCatalog'(){const _0x4e618e=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4e618e['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4e618e['statusText']);return await _0x4e618e['json']();},async 'getImportedSkillsRegistry'(){const _0x47c646=await fetch(API_BASE+'/external-skills/registry');if(!_0x47c646['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x47c646['statusText']);return await _0x47c646['json']();},async 'importCatalogSkill'(_0x43c788){const _0x17f94c=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x43c788})});if(!_0x17f94c['ok']){const _0x7439d0=await _0x17f94c['json']()['catch'](()=>({'error':_0x17f94c['statusText']})),_0x167671=new Error(_0x7439d0['error']||_0x7439d0['message']||_0x17f94c['statusText']);if(_0x7439d0['detail']!==undefined)_0x167671['detail']=_0x7439d0['detail'];throw _0x167671;}return await _0x17f94c['json']();},async 'importSkillFromGit'(_0x4d24a1,_0x411664,_0x29c980='main',_0x346e9b=null){const _0x5dfffe=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4d24a1,'skillPath':_0x411664,'branch':_0x29c980,'skillId':_0x346e9b})});if(!_0x5dfffe['ok']){const _0x362fd2=await _0x5dfffe['json']()['catch'](()=>({'error':_0x5dfffe['statusText']})),_0x4818ad=new Error(_0x362fd2['error']||_0x362fd2['message']||_0x5dfffe['statusText']);if(_0x362fd2['detail']!==undefined)_0x4818ad['detail']=_0x362fd2['detail'];throw _0x4818ad;}return await _0x5dfffe['json']();},async 'probeMarketplace'(_0x3fb731,_0x425451='main'){const _0x54644f=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3fb731,'branch':_0x425451})});if(!_0x54644f['ok']){const _0x30f3e4=await _0x54644f['json']()['catch'](()=>({'error':_0x54644f['statusText']})),_0xc2fcc5=new Error(_0x30f3e4['error']||_0x30f3e4['message']||_0x54644f['statusText']);if(_0x30f3e4['detail']!==undefined)_0xc2fcc5['detail']=_0x30f3e4['detail'];throw _0xc2fcc5;}return await _0x54644f['json']();},async 'importMarketplaceBundle'(_0x4252da,_0x2aab4b,_0x593d8d,_0x482896=null){const _0x57ccf5=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4252da,'branch':_0x2aab4b,'bundleId':_0x593d8d,'selectedSkills':_0x482896})});if(!_0x57ccf5['ok']){const _0x5cf0e6=await _0x57ccf5['json']()['catch'](()=>({'error':_0x57ccf5['statusText']})),_0x4fba32=new Error(_0x5cf0e6['error']||_0x5cf0e6['message']||_0x57ccf5['statusText']);if(_0x5cf0e6['detail']!==undefined)_0x4fba32['detail']=_0x5cf0e6['detail'];throw _0x4fba32;}return await _0x57ccf5['json']();},async 'importSkillFromFolder'(_0x519c3f,_0x56058a=null){const _0x41d83a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x519c3f,'skillId':_0x56058a})});if(!_0x41d83a['ok']){const _0x44c353=await _0x41d83a['json']()['catch'](()=>({'error':_0x41d83a['statusText']})),_0x1fbf41=new Error(_0x44c353['error']||_0x44c353['message']||_0x41d83a['statusText']);if(_0x44c353['detail']!==undefined)_0x1fbf41['detail']=_0x44c353['detail'];throw _0x1fbf41;}return await _0x41d83a['json']();},async 'importSkillFromNpm'(_0x6df35b,_0xc605f2='latest',_0x16094b=null,_0x5b2cb2=null){const _0x3f6e58=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x6df35b,'version':_0xc605f2,'skillId':_0x16094b,'registry':_0x5b2cb2})});if(!_0x3f6e58['ok']){const _0x5c3e93=await _0x3f6e58['json']()['catch'](()=>({'error':_0x3f6e58['statusText']})),_0x3b68c2=new Error(_0x5c3e93['error']||_0x5c3e93['message']||_0x3f6e58['statusText']);if(_0x5c3e93['detail']!==undefined)_0x3b68c2['detail']=_0x5c3e93['detail'];throw _0x3b68c2;}return await _0x3f6e58['json']();},async 'checkSkillUpdates'(_0x33c236){const _0x261c00=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x33c236)+'/check-updates',{'method':'POST'});if(!_0x261c00['ok']){const _0x37f5cf=await _0x261c00['json']()['catch'](()=>({'error':_0x261c00['statusText']})),_0x2d5b50=new Error(_0x37f5cf['error']||_0x37f5cf['message']||_0x261c00['statusText']);if(_0x37f5cf['detail']!==undefined)_0x2d5b50['detail']=_0x37f5cf['detail'];throw _0x2d5b50;}return await _0x261c00['json']();},async 'updateExternalSkill'(_0x40f814){const _0x1055e7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40f814)+'/update',{'method':'POST'});if(!_0x1055e7['ok']){const _0x4e6420=await _0x1055e7['json']()['catch'](()=>({'error':_0x1055e7['statusText']})),_0x308aae=new Error(_0x4e6420['error']||_0x4e6420['message']||_0x1055e7['statusText']);if(_0x4e6420['detail']!==undefined)_0x308aae['detail']=_0x4e6420['detail'];throw _0x308aae;}return await _0x1055e7['json']();},async 'updateSkillFlags'(_0x60d66f,_0x581721){const _0x2f401a=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x60d66f)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x581721})});if(!_0x2f401a['ok']){const _0x317c38=await _0x2f401a['json']()['catch'](()=>({'error':_0x2f401a['statusText']})),_0x410685=new Error(_0x317c38['error']||_0x317c38['message']||_0x2f401a['statusText']);if(_0x317c38['detail']!==undefined)_0x410685['detail']=_0x317c38['detail'];throw _0x410685;}return await _0x2f401a['json']();},async 'removeFromImportedRegistry'(_0x4f19ff){const _0x1758b0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4f19ff)+'/registry',{'method':'DELETE'});if(!_0x1758b0['ok']){const _0x7b6c73=await _0x1758b0['json']()['catch'](()=>({'error':_0x1758b0['statusText']})),_0x3b35da=new Error(_0x7b6c73['error']||_0x7b6c73['message']||_0x1758b0['statusText']);if(_0x7b6c73['detail']!==undefined)_0x3b35da['detail']=_0x7b6c73['detail'];throw _0x3b35da;}return await _0x1758b0['json']();},async 'getTeams'(){const _0xca0ffa=await fetch(API_BASE+'/teams');if(!_0xca0ffa['ok']){const _0x2ea3c3=await _0xca0ffa['json']()['catch'](()=>({'message':_0xca0ffa['statusText']}));throw new Error(_0x2ea3c3['message']||'Failed\x20to\x20get\x20teams');}return await _0xca0ffa['json']();},async 'getTeam'(_0x2b42e6){const _0x219804=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b42e6));if(!_0x219804['ok']){const _0x2c1c33=await _0x219804['json']()['catch'](()=>({'message':_0x219804['statusText']}));throw new Error(_0x2c1c33['message']||'Failed\x20to\x20get\x20team');}return await _0x219804['json']();},async 'createTeam'(_0x399f54){const _0x45cdce=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x399f54)});if(!_0x45cdce['ok']){const _0x1b7f9b=await _0x45cdce['json']()['catch'](()=>({'message':_0x45cdce['statusText']}));throw new Error(_0x1b7f9b['message']||'Failed\x20to\x20create\x20team');}return await _0x45cdce['json']();},async 'updateTeam'(_0x542a51,_0x264f4e){const _0x3c7d16=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x542a51),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x264f4e)});if(!_0x3c7d16['ok']){const _0x41c421=await _0x3c7d16['json']()['catch'](()=>({'message':_0x3c7d16['statusText']}));throw new Error(_0x41c421['message']||'Failed\x20to\x20update\x20team');}return await _0x3c7d16['json']();},async 'deleteTeam'(_0xca647a){const _0x4564e6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xca647a),{'method':'DELETE'});if(!_0x4564e6['ok']){const _0x2c212d=await _0x4564e6['json']()['catch'](()=>({'message':_0x4564e6['statusText']}));throw new Error(_0x2c212d['message']||'Failed\x20to\x20delete\x20team');}return await _0x4564e6['json']();},async 'addTeamMember'(_0x3abda5,_0x57f893){const _0x210685=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3abda5)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x57f893})});if(!_0x210685['ok']){const _0x190ca4=await _0x210685['json']()['catch'](()=>({'message':_0x210685['statusText']}));throw new Error(_0x190ca4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x210685['json']();},async 'removeTeamMember'(_0x46cafa,_0x4e181e){const _0x199420=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46cafa)+'/members/'+encodeURIComponent(_0x4e181e),{'method':'DELETE'});if(!_0x199420['ok']){const _0xf90a46=await _0x199420['json']()['catch'](()=>({'message':_0x199420['statusText']}));throw new Error(_0xf90a46['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x199420['json']();},async 'getBindings'(_0xe85569={}){const _0x472dba=new URLSearchParams();if(_0xe85569['resource_type'])_0x472dba['set']('resource_type',_0xe85569['resource_type']);if(_0xe85569['resource_id'])_0x472dba['set']('resource_id',_0xe85569['resource_id']);if(_0xe85569['subject_type'])_0x472dba['set']('subject_type',_0xe85569['subject_type']);if(_0xe85569['subject_id'])_0x472dba['set']('subject_id',_0xe85569['subject_id']);const _0x27d3a7=_0x472dba['toString'](),_0x11a783=await fetch(API_BASE+'/bindings'+(_0x27d3a7?'?'+_0x27d3a7:''));if(!_0x11a783['ok']){const _0x2e73f4=await _0x11a783['json']()['catch'](()=>({'message':_0x11a783['statusText']}));throw new Error(_0x2e73f4['message']||'Failed\x20to\x20get\x20bindings');}return await _0x11a783['json']();},async 'createBinding'(_0x59c120){const _0x54a385=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59c120)});if(!_0x54a385['ok']){const _0x142917=await _0x54a385['json']()['catch'](()=>({'message':_0x54a385['statusText']}));throw new Error(_0x142917['message']||'Failed\x20to\x20create\x20binding');}return await _0x54a385['json']();},async 'updateBinding'(_0x2a4411,_0x1ea116){const _0x2d9ff5=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2a4411),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ea116)});if(!_0x2d9ff5['ok']){const _0x4e3eee=await _0x2d9ff5['json']()['catch'](()=>({'message':_0x2d9ff5['statusText']}));throw new Error(_0x4e3eee['message']||'Failed\x20to\x20update\x20binding');}return await _0x2d9ff5['json']();},async 'deleteBinding'(_0x11e5de){const _0x8debb2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x11e5de),{'method':'DELETE'});if(!_0x8debb2['ok']){const _0x47c077=await _0x8debb2['json']()['catch'](()=>({'message':_0x8debb2['statusText']}));throw new Error(_0x47c077['message']||'Failed\x20to\x20delete\x20binding');}return await _0x8debb2['json']();},async 'getRoleDefinitions'(){const _0x3a2320=await fetch(API_BASE+'/roles');if(!_0x3a2320['ok']){const _0x1d47a8=await _0x3a2320['json']()['catch'](()=>({'message':_0x3a2320['statusText']}));throw new Error(_0x1d47a8['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x3a2320['json']();},async 'getRoleDefinition'(_0x461629){const _0x137edf=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x461629));if(!_0x137edf['ok']){const _0x1bddc9=await _0x137edf['json']()['catch'](()=>({'message':_0x137edf['statusText']}));throw new Error(_0x1bddc9['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x137edf['json']();},async 'createRoleDefinition'(_0x4e2178){const _0x3dda47=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e2178)});if(!_0x3dda47['ok']){const _0x3f1a22=await _0x3dda47['json']()['catch'](()=>({'message':_0x3dda47['statusText']}));throw new Error(_0x3f1a22['message']||_0x3f1a22['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3dda47['json']();},async 'updateRoleDefinition'(_0x373d5a,_0x3ff7c6){const _0x4386bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x373d5a),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ff7c6)});if(!_0x4386bb['ok']){const _0x416419=await _0x4386bb['json']()['catch'](()=>({'message':_0x4386bb['statusText']}));throw new Error(_0x416419['message']||_0x416419['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4386bb['json']();},async 'deleteRoleDefinition'(_0x22e8a0){const _0x38b6b9=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x22e8a0),{'method':'DELETE'});if(!_0x38b6b9['ok']){const _0x2abca3=await _0x38b6b9['json']()['catch'](()=>({'message':_0x38b6b9['statusText']}));throw new Error(_0x2abca3['message']||_0x2abca3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x38b6b9['json']();},async 'getAvailablePermissions'(){const _0x20a3d0=await fetch(API_BASE+'/roles/available-permissions');if(!_0x20a3d0['ok']){const _0x310815=await _0x20a3d0['json']()['catch'](()=>({'message':_0x20a3d0['statusText']}));throw new Error(_0x310815['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x20a3d0['json']();},async 'getGitProviderAllowedTeams'(_0x58edd6){const _0xf75254=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x58edd6)+'/allowed-teams');if(!_0xf75254['ok']){const _0x57b6d3=await _0xf75254['json']()['catch'](()=>({'message':_0xf75254['statusText']}));throw new Error(_0x57b6d3['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0xf75254['json']();},async 'setGitProviderAllowedTeams'(_0x32f1a3,_0x2b9e2e){const _0x3bf6d0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x32f1a3)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2b9e2e})});if(!_0x3bf6d0['ok']){const _0x370f60=await _0x3bf6d0['json']()['catch'](()=>({'message':_0x3bf6d0['statusText']}));throw new Error(_0x370f60['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3bf6d0['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 _0x1a32ff=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2fc0b3=>{_0x2fc0b3['el']['style']['bottom']=_0x1a32ff+'px';const _0x3d6d25=_0x2fc0b3['el']['offsetHeight']||toastState['defaultHeight'];_0x1a32ff+=_0x3d6d25+toastState['gap'];});});}function removeToastById(_0x19d087){const _0x440a30=toastState['toasts']['findIndex'](_0x1388ea=>_0x1388ea['id']===_0x19d087);if(_0x440a30===-0x1)return;const _0x373857=toastState['toasts'][_0x440a30];if(_0x373857['timeoutId'])clearTimeout(_0x373857['timeoutId']);_0x373857['el']['classList']['remove']('show'),setTimeout(()=>_0x373857['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x440a30,0x1),repositionAllToasts();}function registerToast(_0x4f9476){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4f9476),repositionAllToasts(),_0x4f9476['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(_0x4e3899){if(_0x4e3899===null||_0x4e3899===undefined)return'';return String(_0x4e3899)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x4fb0f9,_0x57049e){if(_0x4fb0f9&&typeof _0x4fb0f9==='object'&&!Array['isArray'](_0x4fb0f9))return{'code':typeof _0x4fb0f9['text']==='string'?_0x4fb0f9['text']:'','language':typeof _0x4fb0f9['lang']==='string'?_0x4fb0f9['lang']:''};return{'code':typeof _0x4fb0f9==='string'?_0x4fb0f9:'','language':typeof _0x57049e==='string'?_0x57049e:''};}function buildMermaidBlock(_0x25f7c2){const _0x120428=String(_0x25f7c2||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x120428))+'\x22>'+escapeHtmlValue(_0x120428)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x317f2e=new marked['Renderer'](),_0xd5bc90=_0x317f2e['code']['bind'](_0x317f2e);return _0x317f2e['code']=function(_0x55170,_0xf3ebe5,..._0x13d2d4){const {code:_0x5d217a,language:_0x58784f}=getMarkdownCodeBlockPayload(_0x55170,_0xf3ebe5),_0x1c180a=String(_0x58784f||'')['trim']()['toLowerCase']();if(_0x1c180a==='mermaid')return buildMermaidBlock(_0x5d217a);const _0xb627d8=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xb627d8&&_0x1c180a)try{const _0x105a35=_0xb627d8['getLanguage'](_0x1c180a)?_0x1c180a:'plaintext',_0x448870=_0xb627d8['highlight'](_0x5d217a,{'language':_0x105a35})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1c180a)+'\x22>'+_0x448870+'</code></pre>';}catch(_0x11e8ac){console['error']('Syntax\x20highlighting\x20error:',_0x11e8ac);}return _0xd5bc90(_0x55170,_0xf3ebe5,..._0x13d2d4);},sharedMarkedRenderer=_0x317f2e,_0x317f2e;}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 _0x425159=window['mermaid'];if(!_0x425159||typeof _0x425159['initialize']!=='function')return _0x425159||null;return _0x425159['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x425159;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x567676,_0x486120)=>{const _0x37ed74=()=>_0x567676(configureMermaidInstance()),_0x239fb5=()=>{mermaidLoadPromise=null,_0x486120(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x53b6d4=document['getElementById'](MERMAID_SCRIPT_ID);!_0x53b6d4&&(_0x53b6d4=document['createElement']('script'),_0x53b6d4['id']=MERMAID_SCRIPT_ID,_0x53b6d4['src']=MERMAID_SCRIPT_SRC,_0x53b6d4['async']=!![],document['head']['appendChild'](_0x53b6d4));if(window['mermaid']){_0x37ed74();return;}_0x53b6d4['addEventListener']('load',_0x37ed74,{'once':!![]}),_0x53b6d4['addEventListener']('error',_0x239fb5,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3819c0){const _0x3c2178=_0x3819c0['getAttribute']('data-mermaid-source');if(!_0x3c2178)return null;let _0x557d0f=_0x3c2178;try{_0x557d0f=decodeURIComponent(_0x3c2178);}catch{}return _0x3819c0['textContent']=_0x557d0f,_0x3819c0['removeAttribute']('data-processed'),_0x3819c0['removeAttribute']('aria-roledescription'),_0x3819c0['removeAttribute']('role'),_0x3819c0['removeAttribute']('aria-label'),_0x557d0f;}function collectMermaidNodes(_0x188b38,_0x2dc0df){if(!(_0x188b38 instanceof Element))return;_0x188b38['matches']('.mermaid[data-mermaid-source]')&&_0x2dc0df['add'](_0x188b38),_0x188b38['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3e1deb=>{_0x2dc0df['add'](_0x3e1deb);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3b191d=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x5c73e5=>setTimeout(_0x5c73e5,0x0);_0x3b191d(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x7d65b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x7d65b);});});}function queueMermaidRender(_0x2458e3){const _0x5851c9=new Set();_0x2458e3 instanceof Document||_0x2458e3 instanceof DocumentFragment?_0x2458e3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1b6c99=>_0x5851c9['add'](_0x1b6c99)):collectMermaidNodes(_0x2458e3,_0x5851c9);if(_0x5851c9['size']===0x0)return;_0x5851c9['forEach'](_0x465bd8=>pendingMermaidNodes['add'](_0x465bd8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x17a59d=Array['from'](pendingMermaidNodes)['filter'](_0xaa83d1=>_0xaa83d1['isConnected']);pendingMermaidNodes['clear']();if(_0x17a59d['length']===0x0)return;const _0x296b5d=await loadMermaid();if(!_0x296b5d)return;configureMermaidInstance();const _0x494a6a=getMermaidTheme();for(const _0x44d538 of _0x17a59d){const _0x3addb5=_0x44d538['getAttribute']('data-mermaid-source');if(!_0x3addb5)continue;const _0x226388=_0x44d538['getAttribute']('data-processed')==='true';if(_0x226388&&_0x44d538['dataset']['mermaidTheme']===_0x494a6a)continue;restoreMermaidSource(_0x44d538);try{if(typeof _0x296b5d['run']==='function')await _0x296b5d['run']({'nodes':[_0x44d538]});else typeof _0x296b5d['init']==='function'&&_0x296b5d['init'](undefined,[_0x44d538]);_0x44d538['dataset']['mermaidTheme']=_0x494a6a,delete _0x44d538['dataset']['mermaidError'];}catch(_0x7a81ac){console['error']('Mermaid\x20render\x20failed:',_0x7a81ac),restoreMermaidSource(_0x44d538),_0x44d538['dataset']['mermaidError']='true',delete _0x44d538['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x277854=>{_0x277854['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x277854);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4e3e8c=>{_0x4e3e8c['forEach'](_0xe09cc6=>{_0xe09cc6['addedNodes']['forEach'](_0x449fa3=>{_0x449fa3['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x449fa3);});});}),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'(_0x224a65){const _0x131a57=new Date(_0x224a65),_0xcdbedb=new Date(),_0x4bac67=_0xcdbedb-_0x131a57,_0x3f3108=Math['floor'](_0x4bac67/0x3e8),_0x2840a3=Math['floor'](_0x3f3108/0x3c),_0x536202=Math['floor'](_0x2840a3/0x3c),_0x462e52=Math['floor'](_0x536202/0x18);if(_0x3f3108<0x3c)return'now';if(_0x2840a3<0x3c)return _0x2840a3+'m\x20ago';if(_0x536202<0x18)return _0x536202+'h\x20ago';return _0x462e52+'d\x20ago';},'getStatusIcon'(_0x347fb2){switch(_0x347fb2){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x49c700){switch(_0x49c700){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'(_0x1d8039,_0x4be7c3=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x4682c3={};_0x4682c3['text/plain']=new Blob([_0x1d8039],{'type':'text/plain'});_0x4be7c3&&(_0x4682c3['text/html']=new Blob([_0x4be7c3],{'type':'text/html'}));const _0x472018=new ClipboardItem(_0x4682c3);return await navigator['clipboard']['write']([_0x472018]),!![];}catch(_0x48e026){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x48e026);}try{const _0x10ac39=_0x55ac8b=>{_0x55ac8b['preventDefault'](),_0x55ac8b['clipboardData']['setData']('text/plain',_0x1d8039),_0x4be7c3&&_0x55ac8b['clipboardData']['setData']('text/html',_0x4be7c3);};document['addEventListener']('copy',_0x10ac39);const _0x5ab472=document['execCommand']('copy');document['removeEventListener']('copy',_0x10ac39);if(_0x5ab472)return!![];}catch(_0x4b1558){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4b1558);}try{const _0x2107e1=document['createElement']('textarea');_0x2107e1['value']=_0x1d8039,_0x2107e1['style']['position']='fixed',_0x2107e1['style']['opacity']='0',_0x2107e1['style']['pointerEvents']='none',document['body']['appendChild'](_0x2107e1),_0x2107e1['select']();const _0x1acf2c=document['execCommand']('copy');return document['body']['removeChild'](_0x2107e1),_0x1acf2c;}catch(_0x574569){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x574569),![];}},'showToast'(_0x26a298,_0x2a3e4c='info'){const _0x533780=getNextToastId(),_0x34e859=document['createElement']('div');_0x34e859['className']='toast\x20toast-'+_0x2a3e4c,_0x34e859['textContent']=_0x26a298,_0x34e859['dataset']['toastId']=_0x533780,document['body']['appendChild'](_0x34e859);const _0x5ac104=_0x2a3e4c==='error'?0x2710:0xbb8,_0x3f8b1c=setTimeout(()=>{removeToastById(_0x533780);},_0x5ac104),_0x36d517={'id':_0x533780,'el':_0x34e859,'timeoutId':_0x3f8b1c};return registerToast(_0x36d517),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x34e859['classList']['add']('show');});}),_0x533780;},'showError'(_0xda94cc){console['error'](_0xda94cc);const _0x3f43d8=typeof _0xda94cc==='string'?_0xda94cc:_0xda94cc['message']||'An\x20error\x20occurred';this['showToast'](_0x3f43d8,'error');},'showSuccess'(_0x64720e){this['showToast'](_0x64720e,'success');},'capitalize'(_0xeaa3b0){if(!_0xeaa3b0)return'';return _0xeaa3b0['charAt'](0x0)['toUpperCase']()+_0xeaa3b0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4406f7){return escapeHtmlValue(_0x4406f7);},'ansiToHtml'(_0x1da414){if(_0x1da414===null||_0x1da414===undefined)return'';let _0x350502=this['escapeHtml'](_0x1da414);const _0x3f736c={'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'},_0x429f68={'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 _0x8845dc=0x0;return _0x350502=_0x350502['replace'](/\x1b\[([0-9;]*)m/g,(_0x4bc6e3,_0x2adb08)=>{if(!_0x2adb08||_0x2adb08==='0'){const _0x211426='</span>'['repeat'](_0x8845dc);return _0x8845dc=0x0,_0x211426;}const _0x278beb=_0x2adb08['split'](';'),_0x5a7f8f=[];for(const _0x4aa881 of _0x278beb){if(_0x4aa881==='1')_0x5a7f8f['push']('font-weight:bold');else{if(_0x4aa881==='2')_0x5a7f8f['push']('opacity:0.7');else{if(_0x4aa881==='3')_0x5a7f8f['push']('font-style:italic');else{if(_0x4aa881==='4')_0x5a7f8f['push']('text-decoration:underline');else{if(_0x4aa881==='9')_0x5a7f8f['push']('text-decoration:line-through');else{if(_0x3f736c[_0x4aa881])_0x5a7f8f['push']('color:'+_0x3f736c[_0x4aa881]);else{if(_0x429f68[_0x4aa881])_0x5a7f8f['push']('background-color:'+_0x429f68[_0x4aa881]);}}}}}}}if(_0x5a7f8f['length']>0x0)return _0x8845dc++,'<span\x20style=\x22'+_0x5a7f8f['join'](';')+'\x22>';return'';}),_0x350502+='</span>'['repeat'](_0x8845dc),_0x350502=_0x350502['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4ce79b,_0x22ea2d)=>{if(!_0x22ea2d||_0x22ea2d==='0')return'';const _0x3a08be=_0x22ea2d['split'](';'),_0x4beabc=[];for(const _0x19e98c of _0x3a08be){if(_0x19e98c==='1')_0x4beabc['push']('font-weight:bold');else{if(_0x3f736c[_0x19e98c])_0x4beabc['push']('color:'+_0x3f736c[_0x19e98c]);else{if(_0x429f68[_0x19e98c])_0x4beabc['push']('background-color:'+_0x429f68[_0x19e98c]);}}}if(_0x4beabc['length']>0x0)return'<span\x20style=\x22'+_0x4beabc['join'](';')+'\x22>';return'';}),_0x350502;},'showModal'({title:_0x28c07a,content:_0x265299,buttons:buttons=[]}){const _0x417f1f='\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'](_0x28c07a)+'</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'+_0x265299+'\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']((_0x267022,_0x58e02e)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x267022['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x58e02e+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x267022['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',_0x3d1ae1=document['createElement']('div');_0x3d1ae1['id']='utils-modal',_0x3d1ae1['className']='modal',_0x3d1ae1['innerHTML']=_0x417f1f,document['body']['appendChild'](_0x3d1ae1);const _0x48d493=document['getElementById']('utils-modal-close');_0x48d493&&_0x48d493['addEventListener']('click',()=>this['hideModal']());const _0xf44219=_0x3d1ae1['querySelectorAll']('[data-btn-index]');_0xf44219['forEach'](_0x711a1f=>{const _0x1c9a61=parseInt(_0x711a1f['dataset']['btnIndex']);buttons[_0x1c9a61]?.['onClick']&&_0x711a1f['addEventListener']('click',buttons[_0x1c9a61]['onClick']);});const _0x5e5190=document['getElementById']('utils-modal-overlay');_0x5e5190&&_0x5e5190['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x32b6ce=document['getElementById']('utils-modal');_0x32b6ce&&_0x32b6ce['remove']();},'parseKeyValuePairs'(_0x5095c0){const _0x128c47={};if(!_0x5095c0)return _0x128c47;return _0x5095c0['split'](/\r?\n/)['map'](_0x5e448e=>_0x5e448e['trim']())['filter'](Boolean)['forEach'](_0x45f4c1=>{const _0x44ca11=_0x45f4c1['indexOf']('=');if(_0x44ca11>0x0){const _0x39e408=_0x45f4c1['slice'](0x0,_0x44ca11)['trim'](),_0x221484=_0x45f4c1['slice'](_0x44ca11+0x1)['trim']();if(_0x39e408)_0x128c47[_0x39e408]=_0x221484;}}),_0x128c47;},'debounce'(_0x1901da,_0xe95c21=0xfa){let _0x29b144=null;return(..._0x18f3bb)=>{clearTimeout(_0x29b144),_0x29b144=setTimeout(()=>_0x1901da['apply'](this,_0x18f3bb),_0xe95c21);};},'formatTimestamp'(_0x13bf2e){if(!_0x13bf2e)return'N/A';const _0x684ebf=new Date(_0x13bf2e);return _0x684ebf['toLocaleDateString']()+'\x20'+_0x684ebf['toLocaleTimeString']();},'getQueryParams'(){const _0xf74cfc=new URLSearchParams(window['location']['search']),_0x34b0a2={};for(const [_0x21b160,_0x1b83a2]of _0xf74cfc){_0x34b0a2[_0x21b160]=_0x1b83a2;}return _0x34b0a2;},'formatDuration'(_0x1c8b05,_0x3a5ff4){if(!_0x1c8b05)return'N/A';const _0x177fee=new Date(_0x1c8b05),_0x375b1d=_0x3a5ff4?new Date(_0x3a5ff4):new Date(),_0x174263=_0x375b1d-_0x177fee;if(_0x174263<0x0)return'0s';const _0x3404cd=Math['floor'](_0x174263/0x3e8),_0x2e1987=Math['floor'](_0x3404cd/0x3c),_0xc4160c=Math['floor'](_0x2e1987/0x3c),_0x5a1c78=Math['floor'](_0xc4160c/0x18);if(_0x3404cd<0x3c)return _0x3404cd+'s';if(_0x2e1987<0x3c)return _0x2e1987+'m\x20'+_0x3404cd%0x3c+'s';if(_0xc4160c<0x18)return _0xc4160c+'h\x20'+_0x2e1987%0x3c+'m\x20'+_0x3404cd%0x3c+'s';return _0x5a1c78+'d\x20'+_0xc4160c%0x18+'h\x20'+_0x2e1987%0x3c+'m';},'renderMarkdown'(_0x5b1524,_0x153429={}){if(!_0x5b1524)return'';_0x5b1524=this['rewriteAttachmentLinks'](_0x5b1524,_0x153429),_0x5b1524=this['rewriteColorSyntax'](_0x5b1524);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5b1524,_0x153429);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5b1524);}catch(_0xc4018c){return console['error']('Markdown\x20parsing\x20error:',_0xc4018c),this['renderMarkdownFallback'](_0x5b1524,_0x153429);}},'rewriteAttachmentLinks'(_0x448fb8,_0x51c50f={}){const _0x59ea71=typeof _0x51c50f['resolveAttachmentUrl']==='function'?_0x51c50f['resolveAttachmentUrl']:_0x51c50f['taskId']?_0xb4b998=>API_BASE+'/tasks/'+_0x51c50f['taskId']+'/attachments/'+encodeURIComponent(_0xb4b998):null;if(!_0x59ea71)return _0x448fb8;return String(_0x448fb8)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x813a97,_0x5f0bc1)=>{const _0x3b3088=String(_0x5f0bc1||'')['trim']();if(!_0x3b3088)return _0x813a97;let _0x51477e=_0x3b3088;try{_0x51477e=decodeURIComponent(_0x3b3088);}catch{}const _0x5c1f7b=_0x59ea71(_0x51477e);if(!_0x5c1f7b)return _0x813a97;return']('+_0x5c1f7b+')';});},'rewriteColorSyntax'(_0x299c69){if(!_0x299c69)return _0x299c69;return String(_0x299c69)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0xb88d8e,_0x2f65f4,_0x276d25)=>{const _0x41d39c=this['rewriteColorSyntax'](_0x276d25);return'<span\x20style=\x22color:\x20'+_0x2f65f4+'\x22>'+_0x41d39c+'</span>';});},'renderMarkdownFallback'(_0x1f45dc,_0x44e76a={}){if(!_0x1f45dc)return'';_0x1f45dc=_0x1f45dc['replace'](/\r\n/g,'\x0a'),_0x1f45dc=_0x1f45dc['replace'](/\r/g,'\x0a'),_0x1f45dc=this['rewriteAttachmentLinks'](_0x1f45dc,_0x44e76a);let _0x3c80fd=this['escapeHtml'](_0x1f45dc);return _0x3c80fd=_0x3c80fd['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3c80fd=_0x3c80fd['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3c80fd=_0x3c80fd['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3c80fd=_0x3c80fd['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3c80fd=_0x3c80fd['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3c80fd=_0x3c80fd['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3c80fd=_0x3c80fd['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3c80fd=_0x3c80fd['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3c80fd=_0x3c80fd['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3c80fd=_0x3c80fd['replace'](/\n\n/g,'</p><p>'),_0x3c80fd=_0x3c80fd['replace'](/\n/g,'<br>'),'<p>'+_0x3c80fd+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x229672=new Uint8Array(0x10);crypto['getRandomValues'](_0x229672),_0x229672[0x6]=_0x229672[0x6]&0xf|0x40,_0x229672[0x8]=_0x229672[0x8]&0x3f|0x80;const _0x23d5b1=Array['from'](_0x229672,_0x311182=>_0x311182['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x23d5b1['slice'](0x0,0x8)+'-'+_0x23d5b1['slice'](0x8,0xc)+'-'+_0x23d5b1['slice'](0xc,0x10)+'-'+_0x23d5b1['slice'](0x10,0x14)+'-'+_0x23d5b1['slice'](0x14);}};export class CustomSelect{constructor(_0x4f3cc7,_0x33c667={}){this['nativeSelect']=_0x4f3cc7,this['options']=_0x33c667,this['isOpen']=![],this['selectedValue']=_0x4f3cc7['value']||'',this['searchable']=_0x33c667['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x30f4b9=document['createElement']('div');_0x30f4b9['className']='custom-select';const _0x1a85b8=document['createElement']('div');_0x1a85b8['className']='custom-select-trigger',_0x1a85b8['setAttribute']('tabindex','0'),_0x1a85b8['setAttribute']('role','button'),_0x1a85b8['setAttribute']('aria-haspopup','listbox');const _0x1b5e08=document['createElement']('span');_0x1b5e08['className']='custom-select-trigger-text';const _0x54738f=document['createElement']('span');_0x54738f['className']='custom-select-arrow',_0x54738f['textContent']='▼',_0x1a85b8['appendChild'](_0x1b5e08),_0x1a85b8['appendChild'](_0x54738f);const _0x43da45=document['createElement']('div');_0x43da45['className']='custom-select-dropdown',_0x43da45['setAttribute']('role','listbox');if(this['searchable']){const _0xf0a3aa=document['createElement']('div');_0xf0a3aa['className']='custom-select-search';const _0x2af9b9=document['createElement']('input');_0x2af9b9['type']='text',_0x2af9b9['className']='custom-select-search-input',_0x2af9b9['placeholder']='Type\x20to\x20search...',_0x2af9b9['setAttribute']('aria-label','Search\x20options'),_0x2af9b9['addEventListener']('input',_0x3d79f7=>{this['searchQuery']=_0x3d79f7['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2af9b9['addEventListener']('keydown',_0x18a97e=>{if(_0x18a97e['key']==='Escape')_0x18a97e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x18a97e['key']==='Enter'){_0x18a97e['preventDefault'](),_0x18a97e['stopPropagation']();const _0x543df6=_0x43da45['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x543df6){const _0x45914b=_0x543df6['getAttribute']('data-value');this['select'](_0x45914b);}}}}),_0xf0a3aa['appendChild'](_0x2af9b9),_0x43da45['appendChild'](_0xf0a3aa),this['searchInput']=_0x2af9b9;}const _0x395455=document['createElement']('div');_0x395455['className']='custom-select-options',_0x43da45['appendChild'](_0x395455),_0x30f4b9['appendChild'](_0x1a85b8),_0x30f4b9['appendChild'](_0x43da45),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x30f4b9,this['nativeSelect']),this['wrapper']=_0x30f4b9,this['trigger']=_0x1a85b8,this['triggerText']=_0x1b5e08,this['dropdown']=_0x43da45,this['optionsContainer']=_0x395455,_0x1a85b8['addEventListener']('click',()=>this['toggle']()),_0x1a85b8['addEventListener']('keydown',_0xcc933e=>this['handleKeydown'](_0xcc933e)),document['addEventListener']('click',_0x49bd54=>{!_0x30f4b9['contains'](_0x49bd54['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2e116b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2e116b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1bbdaa=new MutationObserver(()=>{this['updateDisabledState']();});_0x1bbdaa['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x1658e8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x1658e8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4cca61=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4cca61),this['trigger']['setAttribute']('aria-disabled',_0x4cca61?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4cca61?'-1':'0'),_0x4cca61&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x18b1cf=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x198b96=_0x18b1cf['filter'](_0x4da201=>!_0x4da201['disabled']&&!_0x4da201['hidden']);_0x18b1cf['forEach']((_0x3a6faa,_0x150812)=>{const _0x23b9e0=document['createElement']('div');_0x23b9e0['className']='custom-select-option',_0x23b9e0['textContent']=_0x3a6faa['textContent'],_0x23b9e0['setAttribute']('data-value',_0x3a6faa['value']),_0x23b9e0['setAttribute']('data-index',_0x150812),_0x23b9e0['setAttribute']('role','option'),_0x3a6faa['disabled']?_0x23b9e0['classList']['add']('disabled'):_0x23b9e0['addEventListener']('click',()=>this['select'](_0x3a6faa['value'])),_0x3a6faa['value']===this['selectedValue']&&_0x23b9e0['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x23b9e0),this['allOptions']['push']({'element':_0x23b9e0,'text':_0x3a6faa['textContent']['toLowerCase'](),'value':_0x3a6faa['value'],'disabled':_0x3a6faa['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4bf2aa=this['searchInput']['parentElement'];_0x198b96['length']>0x3?_0x4bf2aa['style']['display']='':_0x4bf2aa['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x24d4d4=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x288271=>{if(!_0x24d4d4||_0x288271['disabled'])_0x288271['element']['style']['display']='';else{const _0x391dfd=_0x288271['text']['includes'](_0x24d4d4);_0x288271['element']['style']['display']=_0x391dfd?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xef20a4){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xef20a4,this['nativeSelect']['value']=_0xef20a4;const _0x30aaf2=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x30aaf2),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x25b232=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x25b232&&(this['triggerText']['textContent']=_0x25b232['textContent'],_0x25b232['disabled']||_0x25b232['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x916a25=>{_0x916a25['getAttribute']('data-value')===this['selectedValue']?_0x916a25['classList']['add']('selected'):_0x916a25['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 _0x2ff1b8=window['getComputedStyle'](this['dropdown']);if(_0x2ff1b8['position']==='fixed'){const _0x3da3ff=this['trigger']['getBoundingClientRect'](),_0x54b28d=parseInt(_0x2ff1b8['maxHeight'])||0xc8,_0x4270b0=window['innerHeight'],_0x497231=_0x4270b0-_0x3da3ff['bottom'],_0x333898=_0x3da3ff['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0xbeeb6d;_0x497231<_0x54b28d&&_0x333898>_0x497231?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4270b0-_0x3da3ff['top']+'px',_0xbeeb6d=Math['min'](_0x54b28d,_0x333898-0xa),this['dropdown']['style']['maxHeight']=_0xbeeb6d+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3da3ff['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0xbeeb6d=Math['min'](_0x54b28d,_0x497231-0xa),this['dropdown']['style']['maxHeight']=_0xbeeb6d+'px');if(this['optionsContainer']){let _0x4401ed=_0xbeeb6d;if(this['searchInput']){const _0x54340e=this['searchInput']['parentElement'];_0x54340e&&(_0x4401ed-=_0x54340e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4401ed)+'px';}this['dropdown']['style']['left']=_0x3da3ff['left']+'px',this['dropdown']['style']['width']=_0x3da3ff['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x518053=this['searchInput']['parentElement'];_0x518053&&_0x518053['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'](_0x34f143){if(this['nativeSelect']['disabled'])return;if(_0x34f143['key']==='Enter'||_0x34f143['key']==='\x20')_0x34f143['preventDefault'](),this['toggle']();else _0x34f143['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x469eb7='\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',_0x469eb7),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x834681=document['getElementById']('confirm-dialog-close'),_0x4930c4=document['getElementById']('confirm-dialog-cancel'),_0x4f7182=document['getElementById']('confirm-dialog-confirm'),_0x4da606=this['_modal']['querySelector']('.modal-overlay');_0x834681['addEventListener']('click',()=>this['_resolve'](![])),_0x4930c4['addEventListener']('click',()=>this['_resolve'](![])),_0x4f7182['addEventListener']('click',()=>this['_resolve'](!![])),_0x4da606['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1eede=>{if(_0x1eede['key']==='Escape')_0x1eede['preventDefault'](),this['_resolve'](![]);else _0x1eede['key']==='Enter'&&(_0x1eede['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x51ac10,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x8d7248=>{this['_resolvePromise']=_0x8d7248,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x51ac10;const _0x4c3349=document['getElementById']('confirm-dialog-cancel'),_0x5c764b=document['getElementById']('confirm-dialog-confirm');_0x4c3349['textContent']=cancelText,_0x5c764b['textContent']=confirmText,_0x5c764b['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5c764b['focus']();});},'_resolve'(_0x6df270){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x6df270),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x31ec19,_0x220dee={}){this['container']=_0x31ec19,this['options']={'placeholder':_0x220dee['placeholder']||'Type\x20to\x20search...','maxItems':_0x220dee['maxItems']||0x64,'loadItems':_0x220dee['loadItems']||(async()=>[]),'renderItem':_0x220dee['renderItem']||(_0x105db6=>({'primary':String(_0x105db6),'secondary':''})),'onSelect':_0x220dee['onSelect']||(()=>{}),'filterItems':_0x220dee['filterItems']||null,'getItemValue':_0x220dee['getItemValue']||(_0xe5e0d7=>_0xe5e0d7),'sortItems':_0x220dee['sortItems']||null,'debounceMs':_0x220dee['debounceMs']||0xc8,'minCharsForSearch':_0x220dee['minCharsForSearch']||0x0,'emptyMessage':_0x220dee['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x220dee['loadingMessage']||'Loading...','preload':_0x220dee['preload']!==![],'searchMode':_0x220dee['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',_0x2339c7=>this['onBlur'](_0x2339c7)),this['input']['addEventListener']('input',_0x1703d4=>this['onInput'](_0x1703d4)),this['input']['addEventListener']('keydown',_0x13174e=>this['onKeydown'](_0x13174e)),this['clearBtn']['addEventListener']('mousedown',_0x48672c=>{_0x48672c['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x144189=>{_0x144189['preventDefault']();}),document['addEventListener']('click',_0x45e69f=>{!this['wrapper']['contains'](_0x45e69f['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(_0x4946e5){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x4946e5);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5008cf){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x47f601){const _0x4c41ab=_0x47f601['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4c41ab);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4c41ab):this['loadAndShow'](_0x4c41ab);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x37cedf){switch(_0x37cedf['key']){case'ArrowDown':_0x37cedf['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x37cedf['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x37cedf['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x37cedf['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2bf6bd){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x38ca68=this['selectedIndex']+_0x2bf6bd;if(_0x38ca68>=0x0&&_0x38ca68<this['filteredItems']['length']){this['selectedIndex']=_0x38ca68,this['updateSelectionHighlight']();const _0x3d5ddb=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3d5ddb[this['selectedIndex']]&&_0x3d5ddb[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x124b05=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x124b05['forEach']((_0x9e82d6,_0x1e2b42)=>{_0x9e82d6['classList']['toggle']('keyboard-selected',_0x1e2b42===this['selectedIndex']);});}async['loadAndShow'](_0x2df97b){this['showLoading']();try{const _0x4aa47d=await this['options']['loadItems'](_0x2df97b);if(this['options']['searchMode']==='server'){let _0x1d9912=_0x4aa47d;this['options']['sortItems']&&(_0x1d9912=this['options']['sortItems']([..._0x4aa47d]));this['filteredItems']=_0x1d9912;const _0x549eeb=this['filteredItems']['length']>=this['options']['maxItems'];_0x549eeb&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x549eeb),this['open']();}else this['allItems']=_0x4aa47d,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2df97b);}catch(_0x48486d){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x48486d),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1a5fd3){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1a5fd3):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x42476e=this['filteredItems']['length']>=this['options']['maxItems'];_0x42476e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x42476e),this['open']();}['renderItems'](_0x4ca519){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']((_0x422b99,_0x5bb20e)=>{const _0x5ef669=document['createElement']('div');_0x5ef669['className']='autocomplete-select-item',_0x5ef669['setAttribute']('role','option'),_0x5ef669['setAttribute']('data-index',_0x5bb20e);const _0x9e1bb1=this['options']['renderItem'](_0x422b99);let _0x3380c5='';_0x9e1bb1['icon']&&(_0x3380c5='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x9e1bb1['iconClass']||'')+'\x22>'+_0x9e1bb1['icon']+'</span>'),_0x5ef669['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3380c5+'\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'](_0x9e1bb1['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x9e1bb1['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x9e1bb1['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5ef669['addEventListener']('click',()=>{this['selectItem'](_0x422b99);}),_0x5ef669['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x5bb20e,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5ef669);}),_0x4ca519?(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'](_0x369b2b){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x369b2b)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x41a76d){this['selectedItem']=_0x41a76d;const _0x14885a=this['options']['renderItem'](_0x41a76d);this['input']['value']=_0x14885a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x41a76d);}['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'](_0x1eeb00){if(_0x1eeb00){this['selectedItem']=_0x1eeb00;const _0x18ca0a=this['options']['renderItem'](_0x1eeb00);this['input']['value']=_0x18ca0a['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x270420){this['allItems']=_0x270420,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'](_0x307f5d){this['input']['placeholder']=_0x307f5d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5cc577=null){const _0x310637=document['getElementById']('admin-menu-container'),_0x549898=document['getElementById']('admin-menu-btn'),_0x6a5aaf=document['getElementById']('admin-menu');if(!_0x310637||!_0x549898||!_0x6a5aaf)return;try{!_0x5cc577&&(_0x5cc577=await API['getCurrentUser']());if(_0x5cc577){const _0x3565a8=window['Permissions'],_0x3b37e7=_0x3565a8['hasServerPermission'](_0x5cc577,'*')||_0x3565a8['hasEnvPermission'](_0x5cc577,'environments:manage')||_0x3565a8['hasServerPermission'](_0x5cc577,'users:create')||_0x3565a8['hasTeamPermission'](_0x5cc577,'teams:manage')||_0x3565a8['hasEnvPermission'](_0x5cc577,'environments:view_details');if(!_0x3b37e7)return;_0x310637['hidden']=![];if(!_0x3565a8['hasServerPermission'](_0x5cc577,'*')){const _0x7f49aa=_0x6a5aaf['querySelectorAll']('.admin-menu-item');_0x7f49aa['forEach'](_0x592209=>{const _0x38f5a1=_0x592209['querySelector']('.option-text')?.['textContent']?.['trim']();_0x38f5a1==='Users'&&!_0x3565a8['hasServerPermission'](_0x5cc577,'users:create')&&(_0x592209['hidden']=!![]),_0x38f5a1==='Skills'&&(_0x592209['hidden']=!![]),_0x38f5a1==='Server\x20Settings'&&(_0x592209['hidden']=!![]),_0x38f5a1==='Server\x20Administration'&&(_0x592209['hidden']=!![]),_0x38f5a1==='Git\x20History'&&(_0x592209['hidden']=!![]),_0x38f5a1==='Roles'&&(_0x592209['hidden']=!![]);});}_0x549898['addEventListener']('click',_0x8b5454=>{_0x8b5454['stopPropagation']();const _0x535af5=document['getElementById']('actions-menu');if(_0x535af5)_0x535af5['hidden']=!![];_0x6a5aaf['hidden']=!_0x6a5aaf['hidden'];}),document['addEventListener']('click',_0x1b1742=>{!_0x6a5aaf['hidden']&&!_0x549898['contains'](_0x1b1742['target'])&&!_0x6a5aaf['contains'](_0x1b1742['target'])&&(_0x6a5aaf['hidden']=!![]);}),document['addEventListener']('keydown',_0x4a413c=>{_0x4a413c['key']==='Escape'&&!_0x6a5aaf['hidden']&&(_0x6a5aaf['hidden']=!![]);});}}catch(_0x447d53){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x447d53['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|