@profoundlogic/coderflow-server 0.8.6 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/Dockerfile +3 -2
- package/dist/base-image/agent-wrapper.sh +7 -2
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/slack-service.js +1 -0
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-container-init.js +1 -1
- package/dist/lib/task-context-usage.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/slack.js +1 -0
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.css +476 -0
- package/dist/web-ui/public/admin.html +96 -17
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/docs/_sidebar.md +1 -0
- package/dist/web-ui/public/docs/admin/container-lifecycle.md +102 -0
- package/dist/web-ui/public/docs/admin/jira.md +20 -3
- package/dist/web-ui/public/docs/docsify-proxy-helper.js +1 -0
- package/dist/web-ui/public/docs/index.html +25 -18
- package/dist/web-ui/public/environments.html +1 -0
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.html +245 -0
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-client.transport-warning.js +1 -0
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0xcd3f77=window['location']['pathname'],_0x455962=_0xcd3f77['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x455962)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x455962[0x1]),_0x455962[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1381b7={}){const _0x5cc8ca=new URLSearchParams();_0x1381b7['userId']&&_0x5cc8ca['set']('userId',String(_0x1381b7['userId']));_0x1381b7['automation']&&_0x5cc8ca['set']('automation',String(_0x1381b7['automation']));const _0x5dc559=API_BASE+'/tasks/stats'+(_0x5cc8ca['toString']()?'?'+_0x5cc8ca['toString']():''),_0x170f77=await fetch(_0x5dc559);if(!_0x170f77['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x170f77['statusText']);return await _0x170f77['json']();},async 'getTasks'(_0x68b639={}){const _0x538650=new URLSearchParams();_0x68b639['status']&&_0x538650['set']('status',String(_0x68b639['status']));_0x68b639['environment']&&_0x538650['set']('environment',String(_0x68b639['environment']));_0x68b639['automation']&&_0x538650['set']('automation',String(_0x68b639['automation']));if(_0x68b639['include']){const _0x3338ef=Array['isArray'](_0x68b639['include'])?_0x68b639['include']['join'](','):String(_0x68b639['include']);_0x3338ef&&_0x538650['set']('include',_0x3338ef);}_0x68b639['filter']&&_0x538650['set']('filter',String(_0x68b639['filter']));_0x68b639['page']&&_0x538650['set']('page',String(_0x68b639['page']));_0x68b639['limit']&&_0x538650['set']('limit',String(_0x68b639['limit']));_0x68b639['userId']&&_0x538650['set']('userId',String(_0x68b639['userId']));_0x68b639['search']&&_0x538650['set']('search',String(_0x68b639['search']));_0x68b639['includeChildTasks']&&_0x538650['set']('includeChildTasks','true');const _0x481b5c=API_BASE+'/tasks'+(_0x538650['toString']()?'?'+_0x538650['toString']():''),_0x48c0ec=await fetch(_0x481b5c);if(!_0x48c0ec['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x48c0ec['statusText']);return await _0x48c0ec['json']();},async 'getAutomations'(_0x37f92a={}){const _0x2cc2cd=new URLSearchParams();_0x37f92a['environment']&&_0x2cc2cd['set']('environment',String(_0x37f92a['environment']));const _0x4ef98d=await fetch(API_BASE+'/api/automations'+(_0x2cc2cd['toString']()?'?'+_0x2cc2cd['toString']():''));if(!_0x4ef98d['ok']){const _0x5f2166=await _0x4ef98d['json']()['catch'](()=>({}));throw new Error(_0x5f2166['message']||_0x5f2166['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4ef98d['statusText']);}return await _0x4ef98d['json']();},async 'getAutomation'(_0x390db0){const _0xce601e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x390db0));if(!_0xce601e['ok']){const _0xe48625=await _0xce601e['json']()['catch'](()=>({}));throw new Error(_0xe48625['message']||_0xe48625['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0xce601e['statusText']);}return await _0xce601e['json']();},async 'createAutomation'(_0x1bde51){const _0x44c1e1=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bde51||{})});if(!_0x44c1e1['ok']){const _0x3362a3=await _0x44c1e1['json']()['catch'](()=>({}));throw new Error(_0x3362a3['message']||_0x3362a3['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x44c1e1['statusText']);}return await _0x44c1e1['json']();},async 'updateAutomation'(_0x56a7ca,_0x577cd0){const _0x334573=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56a7ca),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x577cd0||{})});if(!_0x334573['ok']){const _0x1d7a3b=await _0x334573['json']()['catch'](()=>({}));throw new Error(_0x1d7a3b['message']||_0x1d7a3b['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x334573['statusText']);}return await _0x334573['json']();},async 'deleteAutomation'(_0x500b05){const _0x220586=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500b05),{'method':'DELETE'});if(!_0x220586['ok']){const _0x349599=await _0x220586['json']()['catch'](()=>({}));throw new Error(_0x349599['message']||_0x349599['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x220586['statusText']);}return await _0x220586['json']();},async 'triggerAutomation'(_0xdecdf3){const _0x418bb4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xdecdf3)+'/trigger',{'method':'POST'});if(!_0x418bb4['ok']){const _0x5e5d87=await _0x418bb4['json']()['catch'](()=>({}));throw new Error(_0x5e5d87['message']||_0x5e5d87['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x418bb4['statusText']);}return await _0x418bb4['json']();},async 'setAutomationEnabled'(_0xac9256,_0x264182){const _0x119858=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xac9256)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x264182})});if(!_0x119858['ok']){const _0x3e32d3=await _0x119858['json']()['catch'](()=>({}));throw new Error(_0x3e32d3['message']||_0x3e32d3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x119858['statusText']);}return await _0x119858['json']();},async 'getAutomationHistory'(_0x572429,_0xa300d3=0x32){const _0x4a43ff=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x572429)+'/history?limit='+encodeURIComponent(String(_0xa300d3)));if(!_0x4a43ff['ok']){const _0x3d5619=await _0x4a43ff['json']()['catch'](()=>({}));throw new Error(_0x3d5619['message']||_0x3d5619['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4a43ff['statusText']);}return await _0x4a43ff['json']();},async 'getTask'(_0x4c2163,_0x22edbb={}){const _0x51f8f7=new URLSearchParams();if(_0x22edbb['include']){const _0x49c479=Array['isArray'](_0x22edbb['include'])?_0x22edbb['include']['join'](','):String(_0x22edbb['include']);if(_0x49c479)_0x51f8f7['set']('include',_0x49c479);}const _0x10a22e=await fetch(API_BASE+'/tasks/'+_0x4c2163+(_0x51f8f7['toString']()?'?'+_0x51f8f7['toString']():''));if(!_0x10a22e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x10a22e['statusText']);return await _0x10a22e['json']();},async 'getTaskResults'(_0x7fcedd){const _0x57ed3d=await fetch(API_BASE+'/tasks/'+_0x7fcedd+'/results');if(!_0x57ed3d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57ed3d['statusText']);return await _0x57ed3d['json']();},async 'getTaskPatches'(_0x41fe6b){const _0x12c162=await fetch(API_BASE+'/tasks/'+_0x41fe6b+'/patches');if(!_0x12c162['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x12c162['statusText']);return await _0x12c162['json']();},async 'getTaskAttachments'(_0x1735b7){const _0x2e49c5=await fetch(API_BASE+'/tasks/'+_0x1735b7+'/attachments');if(!_0x2e49c5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2e49c5['statusText']);return await _0x2e49c5['json']();},async 'uploadAttachments'(_0x58cd6a,_0x5595fa){const _0x39a243=new FormData();for(const _0x48f003 of _0x5595fa){_0x39a243['append']('attachments',_0x48f003);}const _0x32af79=await fetch(API_BASE+'/tasks/'+_0x58cd6a+'/attachments',{'method':'POST','body':_0x39a243});if(!_0x32af79['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x32af79['statusText']);return await _0x32af79['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3831f4=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3831f4['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3831f4['json']();}catch(_0x40b96c){return{'available':![],'reason':_0x40b96c['message']};}},async 'generateTaskName'(_0x9ef1fd){try{const _0x3686ad=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x9ef1fd})});return await _0x3686ad['json']();}catch(_0x4b3082){return{'success':![],'error':_0x4b3082['message']};}},async 'createTask'(_0x2cbe88){let _0x6de749,_0x4b21ca={};if(_0x2cbe88['files']&&_0x2cbe88['files']['length']>0x0){const _0x57b203=new FormData();for(const [_0x13a44f,_0x57f9bf]of Object['entries'](_0x2cbe88)){if(_0x13a44f!=='files'){if(_0x57f9bf==null)continue;typeof _0x57f9bf==='object'?_0x57b203['append'](_0x13a44f,JSON['stringify'](_0x57f9bf)):_0x57b203['append'](_0x13a44f,String(_0x57f9bf));}}for(const _0x4473a7 of _0x2cbe88['files']){_0x57b203['append']('attachments',_0x4473a7);}_0x6de749=_0x57b203;}else _0x4b21ca['Content-Type']='application/json',_0x6de749=JSON['stringify'](_0x2cbe88);const _0x2005f3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b21ca,'body':_0x6de749});if(!_0x2005f3['ok']){const _0xe298f1=await _0x2005f3['json'](),_0x598211=new Error(_0xe298f1['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2005f3['statusText']),{message:_0x2bcafa,..._0x4e7883}=_0xe298f1;Object['assign'](_0x598211,_0x4e7883);throw _0x598211;}return await _0x2005f3['json']();},async 'createTestTask'(_0x10af26){const _0xcd0fa1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10af26)});if(!_0xcd0fa1['ok']){const _0x405eab=await _0xcd0fa1['json']();throw new Error(_0x405eab['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xcd0fa1['statusText']);}return await _0xcd0fa1['json']();},async 'createEphemeralTest'(_0x5b15bd){const _0x127b84=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b15bd)});if(!_0x127b84['ok']){const _0xe657b7=await _0x127b84['json']();throw new Error(_0xe657b7['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x127b84['statusText']);}return await _0x127b84['json']();},async 'createDeployTask'(_0x472e1c){const _0x3bf75d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x472e1c)});if(!_0x3bf75d['ok']){const _0x995740=await _0x3bf75d['json']();throw new Error(_0x995740['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3bf75d['statusText']);}return await _0x3bf75d['json']();},async 'getEnvironments'(){const _0x1d8db1=await fetch(API_BASE+'/environments');if(!_0x1d8db1['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x1d8db1['statusText']);return await _0x1d8db1['json']();},async 'getEnvironment'(_0xad77fd){const _0x409f6f=await fetch(API_BASE+'/environments/'+_0xad77fd);if(!_0x409f6f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x409f6f['statusText']);return await _0x409f6f['json']();},async 'getEnvironmentRepoHistory'(_0x446ff7,_0x5a8fe1,_0x5f3366={}){if(!_0x446ff7||!_0x5a8fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3137b4=new URLSearchParams();if(_0x5f3366['limit'])_0x3137b4['set']('limit',String(_0x5f3366['limit']));if(_0x5f3366['offset'])_0x3137b4['set']('offset',String(_0x5f3366['offset']));if(_0x5f3366['search'])_0x3137b4['set']('search',String(_0x5f3366['search']));if(_0x5f3366['branch'])_0x3137b4['set']('branch',String(_0x5f3366['branch']));const _0x307aca=API_BASE+'/environments/'+encodeURIComponent(_0x446ff7)+'/repos/'+encodeURIComponent(_0x5a8fe1)+'/git/history',_0x1517f4=await fetch(''+_0x307aca+(_0x3137b4['toString']()?'?'+_0x3137b4['toString']():''));if(!_0x1517f4['ok']){const _0x5837e1=await _0x1517f4['json']()['catch'](()=>({}));throw new Error(_0x5837e1['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x1517f4['statusText']);}return await _0x1517f4['json']();},async 'getEnvironmentRepoCommit'(_0x2e6d17,_0x50bee0,_0x20db36){if(!_0x2e6d17||!_0x50bee0||!_0x20db36)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5201a2=API_BASE+'/environments/'+encodeURIComponent(_0x2e6d17)+'/repos/'+encodeURIComponent(_0x50bee0)+'/git/commits/'+encodeURIComponent(_0x20db36),_0x2a295a=await fetch(_0x5201a2);if(!_0x2a295a['ok']){const _0x30fc38=await _0x2a295a['json']()['catch'](()=>({}));throw new Error(_0x30fc38['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2a295a['statusText']);}return await _0x2a295a['json']();},async 'getEnvironmentRepoBranches'(_0x598757,_0x1175a9){if(!_0x598757||!_0x1175a9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1f3fb5=API_BASE+'/environments/'+encodeURIComponent(_0x598757)+'/repos/'+encodeURIComponent(_0x1175a9)+'/git/branches',_0x168d30=await fetch(_0x1f3fb5);if(!_0x168d30['ok']){const _0x1e719a=await _0x168d30['json']()['catch'](()=>({}));throw new Error(_0x1e719a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x168d30['statusText']);}return await _0x168d30['json']();},async 'revertEnvironmentRepoCommit'(_0x2fd8f1,_0x2c4f09,_0x3f3c70,_0x140a0d={}){if(!_0x2fd8f1||!_0x2c4f09||!_0x3f3c70)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2e2f3e=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2fd8f1)+'/repos/'+encodeURIComponent(_0x2c4f09)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3f3c70,..._0x140a0d})});if(!_0x2e2f3e['ok']){const _0x4e2c5e=await _0x2e2f3e['json']()['catch'](()=>({}));throw new Error(_0x4e2c5e['message']||_0x4e2c5e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2e2f3e['statusText']);}return await _0x2e2f3e['json']();},async 'getTemplates'(_0xb4c23={}){const _0x36c4d9=new URLSearchParams();if(_0xb4c23['include']){const _0x88261b=Array['isArray'](_0xb4c23['include'])?_0xb4c23['include']['join'](','):String(_0xb4c23['include']);if(_0x88261b)_0x36c4d9['set']('include',_0x88261b);}const _0x30cfef=await fetch(API_BASE+'/templates'+(_0x36c4d9['toString']()?'?'+_0x36c4d9['toString']():''));if(!_0x30cfef['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x30cfef['statusText']);return await _0x30cfef['json']();},async 'getTemplatesForEnvironment'(_0x334b78,_0x58cb63={}){if(!_0x334b78)throw new Error('Environment\x20name\x20is\x20required');const _0xf5de51=new URLSearchParams();if(_0x58cb63['include']){const _0x565edd=Array['isArray'](_0x58cb63['include'])?_0x58cb63['include']['join'](','):String(_0x58cb63['include']);if(_0x565edd)_0xf5de51['set']('include',_0x565edd);}const _0x33ed3a=await fetch(API_BASE+'/templates/'+_0x334b78+(_0xf5de51['toString']()?'?'+_0xf5de51['toString']():''));if(!_0x33ed3a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x334b78+':\x20'+_0x33ed3a['statusText']);return await _0x33ed3a['json']();},async 'getTemplate'(_0x3f8fb0,_0x1a25b0,_0x3f6471={}){if(!_0x3f8fb0||!_0x1a25b0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x29311a=new URLSearchParams();if(_0x3f6471['include']){const _0x4342d1=Array['isArray'](_0x3f6471['include'])?_0x3f6471['include']['join'](','):String(_0x3f6471['include']);if(_0x4342d1)_0x29311a['set']('include',_0x4342d1);}const _0x47c72c=await fetch(API_BASE+'/templates/'+_0x3f8fb0+'/'+_0x1a25b0+(_0x29311a['toString']()?'?'+_0x29311a['toString']():''));if(!_0x47c72c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x47c72c['statusText']);return await _0x47c72c['json']();},async 'getTaskLogs'(_0x4a1d97,_0x3b51b7={}){if(!_0x4a1d97)throw new Error('Task\x20ID\x20is\x20required');const _0x43e109=new URLSearchParams();_0x3b51b7['tail']&&_0x43e109['set']('tail',String(_0x3b51b7['tail']));const _0x5da035=await fetch(API_BASE+'/tasks/'+_0x4a1d97+'/logs'+(_0x43e109['toString']()?'?'+_0x43e109['toString']():''));if(!_0x5da035['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x5da035['statusText']);return await _0x5da035['text']();},async 'getContainers'(){const _0x479f04=await fetch(API_BASE+'/containers');if(!_0x479f04['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x479f04['statusText']);return await _0x479f04['json']();},async 'getContainer'(_0x1a8e8b){const _0x324791=await fetch(API_BASE+'/containers/'+_0x1a8e8b);if(!_0x324791['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x324791['statusText']);return await _0x324791['json']();},async 'startInteractiveContainer'(_0x344cca){const _0x4b919f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344cca)});if(!_0x4b919f['ok']){const _0x181bd5=await _0x4b919f['json']()['catch'](()=>({}));throw new Error(_0x181bd5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4b919f['statusText']);}return await _0x4b919f['json']();},async 'startContainerCodeServer'(_0x46901a,_0xa99fdb={}){if(!_0x46901a)throw new Error('Container\x20ID\x20is\x20required');const _0x16cb84=new URLSearchParams();_0xa99fdb['theme']&&_0x16cb84['set']('theme',_0xa99fdb['theme']);const _0x35833b=await fetch(API_BASE+'/containers/'+_0x46901a+'/code-server'+(_0x16cb84['toString']()?'?'+_0x16cb84['toString']():'')),_0x4293f0=await _0x35833b['json']()['catch'](()=>({}));if(!_0x35833b['ok'])throw new Error(_0x4293f0['message']||_0x4293f0['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x35833b['statusText']);return _0x4293f0;},async 'stopContainer'(_0x28732c){const _0x59db5d=await fetch(API_BASE+'/containers/'+_0x28732c,{'method':'DELETE'});if(!_0x59db5d['ok']){const _0x5c533f=await _0x59db5d['json']()['catch'](()=>({}));throw new Error(_0x5c533f['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x59db5d['statusText']);}return await _0x59db5d['json']();},async 'stopTask'(_0x597fc4){if(!_0x597fc4)throw new Error('Task\x20ID\x20is\x20required');const _0x39fb9a=await fetch(API_BASE+'/tasks/'+_0x597fc4+'/stop',{'method':'POST'});if(!_0x39fb9a['ok']){const _0x2f9b91=await _0x39fb9a['json']()['catch'](()=>({}));throw new Error(_0x2f9b91['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x39fb9a['statusText']);}return await _0x39fb9a['json']();},async 'interruptTask'(_0x207deb){if(!_0x207deb)throw new Error('Task\x20ID\x20is\x20required');const _0x21b1a6=await fetch(API_BASE+'/tasks/'+_0x207deb+'/interrupt',{'method':'POST'});if(!_0x21b1a6['ok']){const _0x273817=await _0x21b1a6['json']()['catch'](()=>({}));throw new Error(_0x273817['error']||_0x273817['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x21b1a6['statusText']);}return await _0x21b1a6['json']();},async 'startTask'(_0x5c0bf1){if(!_0x5c0bf1)throw new Error('Task\x20ID\x20is\x20required');const _0xf2ef5f=await fetch(API_BASE+'/tasks/'+_0x5c0bf1+'/start',{'method':'POST'});if(!_0xf2ef5f['ok']){const _0x513ce3=await _0xf2ef5f['json']()['catch'](()=>({}));throw new Error(_0x513ce3['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf2ef5f['statusText']);}return await _0xf2ef5f['json']();},async 'deleteTask'(_0x3f357a){if(!_0x3f357a)throw new Error('Task\x20ID\x20is\x20required');const _0xbc0f7f=await fetch(API_BASE+'/tasks/'+_0x3f357a,{'method':'DELETE'});if(!_0xbc0f7f['ok']){const _0x1aec35=await _0xbc0f7f['json']()['catch'](()=>({}));throw new Error(_0x1aec35['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xbc0f7f['statusText']);}return await _0xbc0f7f['json']();},async 'refreshTasksFromDisk'(){const _0x32844d=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x32844d['ok']){const _0x16fee3=await _0x32844d['json']()['catch'](()=>({}));throw new Error(_0x16fee3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x32844d['statusText']);}return await _0x32844d['json']();},async 'approveTask'(_0x5a3023,_0x4ab29a={}){if(!_0x5a3023)throw new Error('Task\x20ID\x20is\x20required');const _0x475d08={'commit_message':_0x4ab29a['commit_message']||'','pull':_0x4ab29a['pull']??![],'push':_0x4ab29a['push']??![],'conflict_strategy':_0x4ab29a['conflict_strategy']||'rebase'};_0x4ab29a['new_branch']&&(_0x475d08['new_branch']=_0x4ab29a['new_branch']);const _0x47f346=await fetch(API_BASE+'/tasks/'+_0x5a3023+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x475d08)});if(!_0x47f346['ok']){const _0x1acc48=await _0x47f346['json']()['catch'](()=>({}));let _0x457af6=_0x1acc48['error']||_0x1acc48['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x47f346['statusText'];if(_0x1acc48['results']&&Array['isArray'](_0x1acc48['results'])){const _0x3400d4=_0x1acc48['results']['filter'](_0x46aaca=>!_0x46aaca['success']&&_0x46aaca['error']);_0x3400d4['length']>0x0&&(_0x457af6=_0x3400d4[0x0]['error']);}const _0x1c13bc=new Error(_0x457af6);_0x1c13bc['hasConflicts']=_0x1acc48['results']?.['some'](_0x2f2f0d=>_0x2f2f0d['conflict'])||![];throw _0x1c13bc;}return await _0x47f346['json']();},async 'getPullRequestInfo'(_0xbd5a93){if(!_0xbd5a93)throw new Error('Task\x20ID\x20is\x20required');const _0x3e90af=await fetch(API_BASE+'/tasks/'+_0xbd5a93+'/pull-request-info');if(!_0x3e90af['ok']){const _0x3ed8c2=await _0x3e90af['json']()['catch'](()=>({}));throw new Error(_0x3ed8c2['error']||_0x3ed8c2['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3e90af['statusText']);}return await _0x3e90af['json']();},async 'createPullRequests'(_0x15b7dd,_0x2ab332){if(!_0x15b7dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ab332||!Array['isArray'](_0x2ab332))throw new Error('repos\x20array\x20is\x20required');const _0x56391e=await fetch(API_BASE+'/tasks/'+_0x15b7dd+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2ab332})});if(!_0x56391e['ok']){const _0x4c12b2=await _0x56391e['json']()['catch'](()=>({}));let _0x4d4aea=_0x4c12b2['error']||_0x4c12b2['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x56391e['statusText'];if(_0x4c12b2['results']&&Array['isArray'](_0x4c12b2['results'])){const _0x2e3e2f=_0x4c12b2['results']['filter'](_0x32e730=>!_0x32e730['success']&&_0x32e730['error']);_0x2e3e2f['length']>0x0&&(_0x4d4aea=_0x2e3e2f[0x0]['error']);}throw new Error(_0x4d4aea);}return await _0x56391e['json']();},async 'syncRepos'(_0x3a803a){if(!_0x3a803a)throw new Error('Task\x20ID\x20is\x20required');const _0x2b21ca=await fetch(API_BASE+'/tasks/'+_0x3a803a+'/sync-repos',{'method':'POST'});if(!_0x2b21ca['ok']){const _0x210e55=await _0x2b21ca['json']()['catch'](()=>({}));throw new Error(_0x210e55['error']||_0x210e55['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2b21ca['statusText']);}return await _0x2b21ca['json']();},async 'getIbmiSyncInfo'(_0x4acbf8){if(!_0x4acbf8)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd36e=await fetch(API_BASE+'/tasks/'+_0x4acbf8+'/ibmi-sync-info');if(!_0x2dd36e['ok']){const _0x2e5ac7=await _0x2dd36e['json']()['catch'](()=>({}));throw new Error(_0x2e5ac7['error']||_0x2e5ac7['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2dd36e['json']();},async 'getSyncFiles'(_0x2ce93f){if(!_0x2ce93f)throw new Error('Task\x20ID\x20is\x20required');const _0x555c64=await fetch(API_BASE+'/tasks/'+_0x2ce93f+'/sync-to-ibmi/files');if(!_0x555c64['ok']){const _0x26c1b4=await _0x555c64['json']()['catch'](()=>({}));throw new Error(_0x26c1b4['error']||_0x26c1b4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x555c64['json']();},async 'syncToIbmi'(_0x1b7d8a,_0x1036ac,_0x160f1f=null,_0x521000=null,_0x1f4302=null){if(!_0x1b7d8a)throw new Error('Task\x20ID\x20is\x20required');const _0x250f5d={'library':_0x1036ac};if(_0x160f1f)_0x250f5d['user']=_0x160f1f;if(_0x521000)_0x250f5d['password']=_0x521000;if(_0x1f4302)_0x250f5d['files']=_0x1f4302;const _0x9230d1=await fetch(API_BASE+'/tasks/'+_0x1b7d8a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x250f5d)});if(!_0x9230d1['ok']){const _0x1ef749=await _0x9230d1['json']()['catch'](()=>({}));throw new Error(_0x1ef749['error']||_0x1ef749['message']||'Sync\x20failed');}return await _0x9230d1['json']();},async 'getIbmiSyncLog'(_0x397866){if(!_0x397866)throw new Error('Task\x20ID\x20is\x20required');const _0x695c=await fetch(API_BASE+'/tasks/'+_0x397866+'/ibmi-sync-log');if(!_0x695c['ok']){const _0x3a0dec=await _0x695c['json']()['catch'](()=>({}));throw new Error(_0x3a0dec['error']||_0x3a0dec['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x695c['json']();},async 'pullChanges'(_0x2933de){if(!_0x2933de)throw new Error('Task\x20ID\x20is\x20required');const _0x304c71=await fetch(API_BASE+'/tasks/'+_0x2933de+'/pull-changes',{'method':'POST'});if(!_0x304c71['ok']){const _0x5a53fb=await _0x304c71['json']()['catch'](()=>({}));throw new Error(_0x5a53fb['error']||_0x5a53fb['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x304c71['statusText']);}return await _0x304c71['json']();},async 'readFile'(_0x5218d7,_0x15ebd2){if(!_0x5218d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15ebd2)throw new Error('File\x20path\x20is\x20required');const _0x45ac75=await fetch(API_BASE+'/tasks/'+_0x5218d7+'/files?path='+encodeURIComponent(_0x15ebd2));if(!_0x45ac75['ok']){const _0x49b85c=await _0x45ac75['json']()['catch'](()=>({}));throw new Error(_0x49b85c['error']||_0x49b85c['message']||'Failed\x20to\x20read\x20file:\x20'+_0x45ac75['statusText']);}return await _0x45ac75['json']();},'getTaskFileDownloadUrl'(_0x13a371,_0x1ce86b){if(!_0x13a371)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ce86b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x13a371+'/files/download?path='+encodeURIComponent(_0x1ce86b);},async 'writeFile'(_0x1b2179,_0xd019d6,_0x3c9efe){if(!_0x1b2179)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd019d6)throw new Error('File\x20path\x20is\x20required');if(_0x3c9efe===undefined)throw new Error('Content\x20is\x20required');const _0x46deb0=await fetch(API_BASE+'/tasks/'+_0x1b2179+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd019d6,'content':_0x3c9efe})});if(!_0x46deb0['ok']){const _0x2dc115=await _0x46deb0['json']()['catch'](()=>({}));throw new Error(_0x2dc115['error']||_0x2dc115['message']||'Failed\x20to\x20write\x20file:\x20'+_0x46deb0['statusText']);}return await _0x46deb0['json']();},async 'uploadTaskFiles'(_0x3beb5c,_0x535cf0,_0x2b5edf){if(!_0x3beb5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x535cf0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2b5edf||_0x2b5edf['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x47fc4b=new FormData();_0x47fc4b['append']('targetDir',_0x535cf0);for(const _0x3b154b of _0x2b5edf){_0x47fc4b['append']('files',_0x3b154b,_0x3b154b['name']);}const _0x37b56d=await fetch(API_BASE+'/tasks/'+_0x3beb5c+'/files/upload',{'method':'POST','body':_0x47fc4b});if(!_0x37b56d['ok']){const _0x54fd37=await _0x37b56d['json']()['catch'](()=>({}));throw new Error(_0x54fd37['error']||_0x54fd37['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x37b56d['statusText']);}return await _0x37b56d['json']();},async 'createDirectory'(_0x208c20,_0x4b8221){if(!_0x208c20)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4b8221)throw new Error('Directory\x20path\x20is\x20required');const _0x54646b=await fetch(API_BASE+'/tasks/'+_0x208c20+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4b8221})});if(!_0x54646b['ok']){const _0x175e5c=await _0x54646b['json']()['catch'](()=>({}));throw new Error(_0x175e5c['error']||_0x175e5c['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x54646b['statusText']);}return await _0x54646b['json']();},async 'renamePath'(_0x1a536b,_0x15a1aa,_0x488b04){if(!_0x1a536b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15a1aa)throw new Error('Source\x20path\x20is\x20required');if(!_0x488b04)throw new Error('Destination\x20path\x20is\x20required');const _0x486ab9=await fetch(API_BASE+'/tasks/'+_0x1a536b+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x15a1aa,'newPath':_0x488b04})});if(!_0x486ab9['ok']){const _0x38c4ab=await _0x486ab9['json']()['catch'](()=>({}));throw new Error(_0x38c4ab['error']||_0x38c4ab['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x486ab9['statusText']);}return await _0x486ab9['json']();},async 'deleteFile'(_0x284094,_0x28c735){if(!_0x284094)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28c735)throw new Error('File\x20path\x20is\x20required');const _0x5a273f=await fetch(API_BASE+'/tasks/'+_0x284094+'/files?path='+encodeURIComponent(_0x28c735),{'method':'DELETE'});if(!_0x5a273f['ok']){const _0x5d8bd9=await _0x5a273f['json']()['catch'](()=>({}));throw new Error(_0x5d8bd9['error']||_0x5d8bd9['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5a273f['statusText']);}return await _0x5a273f['json']();},async 'deleteDirectory'(_0x103219,_0x16e46a){if(!_0x103219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16e46a)throw new Error('Directory\x20path\x20is\x20required');const _0x4f0fe6=await fetch(API_BASE+'/tasks/'+_0x103219+'/files/directory?path='+encodeURIComponent(_0x16e46a),{'method':'DELETE'});if(!_0x4f0fe6['ok']){const _0x1fca04=await _0x4f0fe6['json']()['catch'](()=>({}));throw new Error(_0x1fca04['error']||_0x1fca04['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f0fe6['statusText']);}return await _0x4f0fe6['json']();},async 'discardFile'(_0x201f71,_0x322427,_0x42941c){if(!_0x201f71)throw new Error('Task\x20ID\x20is\x20required');if(!_0x322427)throw new Error('File\x20path\x20is\x20required');if(!_0x42941c)throw new Error('Repository\x20path\x20is\x20required');const _0x49c4b3=await fetch(API_BASE+'/tasks/'+_0x201f71+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x322427,'repoPath':_0x42941c})});if(!_0x49c4b3['ok']){const _0x25fdc6=await _0x49c4b3['json']()['catch'](()=>({}));throw new Error(_0x25fdc6['error']||_0x25fdc6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x49c4b3['statusText']);}return await _0x49c4b3['json']();},async 'followUpTask'(_0x1c9922,_0x2673a4={}){if(!_0x1c9922)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2673a4['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x457954,_0xffb030={};if(_0x2673a4['files']&&_0x2673a4['files']['length']>0x0){const _0x11eeca=new FormData();_0x11eeca['append']('instructions',_0x2673a4['instructions']);for(const _0x374ecf of _0x2673a4['files']){_0x11eeca['append']('attachments',_0x374ecf);}_0x457954=_0x11eeca;}else _0xffb030['Content-Type']='application/json',_0x457954=JSON['stringify']({'instructions':_0x2673a4['instructions']});const _0xfcd7c6=await fetch(API_BASE+'/tasks/'+_0x1c9922+'/follow-up',{'method':'POST','headers':_0xffb030,'body':_0x457954});if(!_0xfcd7c6['ok']){const _0x17c23d=await _0xfcd7c6['json']()['catch'](()=>({}));throw new Error(_0x17c23d['error']||_0x17c23d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xfcd7c6['statusText']);}return await _0xfcd7c6['json']();},async 'getTaskRewindPoints'(_0x51fcaa){if(!_0x51fcaa)throw new Error('Task\x20ID\x20is\x20required');const _0x13d092=await fetch(API_BASE+'/tasks/'+_0x51fcaa+'/rewind-points');if(!_0x13d092['ok']){const _0x5d01b1=await _0x13d092['json']()['catch'](()=>({}));throw new Error(_0x5d01b1['error']||_0x5d01b1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13d092['statusText']);}return await _0x13d092['json']();},async 'rewindTask'(_0x1d36f4,_0x46e95e={}){if(!_0x1d36f4)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc985=Number['isInteger'](_0x46e95e['targetFollowUpCount'])?_0x46e95e['targetFollowUpCount']:0x0,_0x57cdb3={'targetFollowUpCount':_0x5dc985};typeof _0x46e95e['instructions']==='string'&&_0x46e95e['instructions']['trim']()&&(_0x57cdb3['instructions']=_0x46e95e['instructions']['trim']());typeof _0x46e95e['rewindFiles']==='boolean'&&(_0x57cdb3['rewindFiles']=_0x46e95e['rewindFiles']);const _0x1c7dcc=await fetch(API_BASE+'/tasks/'+_0x1d36f4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57cdb3)});if(!_0x1c7dcc['ok']){const _0x50cc4e=await _0x1c7dcc['json']()['catch'](()=>({}));throw new Error(_0x50cc4e['error']||_0x50cc4e['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x1c7dcc['statusText']);}return await _0x1c7dcc['json']();},async 'login'(_0xc206af,_0x92b686){const _0x5665c3=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc206af,'password':_0x92b686})});if(!_0x5665c3['ok']){const _0xa2afd8=await _0x5665c3['json']();throw new Error(_0xa2afd8['message']||'Login\x20failed');}return await _0x5665c3['json']();},async 'logout'(){const _0x16718c=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x16718c['ok']){const _0x471a58=await _0x16718c['json']();throw new Error(_0x471a58['message']||'Logout\x20failed');}return await _0x16718c['json']();},async 'getCurrentUser'(){const _0x438a2b=await fetch(API_BASE+'/auth/me');if(!_0x438a2b['ok'])throw new Error('Not\x20authenticated');const _0x3480eb=await _0x438a2b['json']();return _0x3480eb['user'];},async 'getRolesInfo'(){const _0x1df6fe=await fetch(API_BASE+'/users/roles');if(!_0x1df6fe['ok']){const _0x1224d6=await _0x1df6fe['json']();throw new Error(_0x1224d6['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1df6fe['json']();},async 'getUsers'(){const _0x569328=await fetch(API_BASE+'/users');if(!_0x569328['ok']){const _0x4c373f=await _0x569328['json']();throw new Error(_0x4c373f['message']||'Failed\x20to\x20get\x20users');}return await _0x569328['json']();},async 'getUser'(_0x14bedd){const _0x2e98d0=await fetch(API_BASE+'/users/'+_0x14bedd);if(!_0x2e98d0['ok']){const _0x2b3429=await _0x2e98d0['json']();throw new Error(_0x2b3429['message']||'Failed\x20to\x20get\x20user');}return await _0x2e98d0['json']();},async 'createUser'(_0x362102){const _0x5cf89d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x362102)});if(!_0x5cf89d['ok']){const _0x233dc0=await _0x5cf89d['json']();throw new Error(_0x233dc0['message']||'Failed\x20to\x20create\x20user');}return await _0x5cf89d['json']();},async 'updateUser'(_0x1d2c30,_0x31b12f){const _0x25a5d6=await fetch(API_BASE+'/users/'+_0x1d2c30,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31b12f)});if(!_0x25a5d6['ok']){const _0x1c3d88=await _0x25a5d6['json']();throw new Error(_0x1c3d88['message']||'Failed\x20to\x20update\x20user');}return await _0x25a5d6['json']();},async 'deleteUser'(_0x47dadc){const _0xdd6006=await fetch(API_BASE+'/users/'+_0x47dadc,{'method':'DELETE'});if(!_0xdd6006['ok']){const _0x14907f=await _0xdd6006['json']();throw new Error(_0x14907f['message']||'Failed\x20to\x20delete\x20user');}return await _0xdd6006['json']();},async 'stopAllContainers'(){const _0xe89d9a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2fe6f8=await _0xe89d9a['json']()['catch'](()=>({}));if(!_0xe89d9a['ok'])throw new Error(_0x2fe6f8['message']||_0x2fe6f8['error']||'Failed\x20to\x20stop\x20containers');return _0x2fe6f8;},async 'removeStoppedContainers'(){const _0x499e2b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4f70b4=await _0x499e2b['json']()['catch'](()=>({}));if(!_0x499e2b['ok'])throw new Error(_0x4f70b4['message']||_0x4f70b4['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4f70b4;},async 'pruneDockerResources'(){const _0x413eb6=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x10772a=await _0x413eb6['json']()['catch'](()=>({}));if(!_0x413eb6['ok'])throw new Error(_0x10772a['message']||_0x10772a['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x10772a;},async 'getUpdateSettings'(){const _0x169903=await fetch(API_BASE+'/health/update-settings'),_0x5e4a8a=await _0x169903['json']()['catch'](()=>({}));if(!_0x169903['ok'])throw new Error(_0x5e4a8a['message']||_0x5e4a8a['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5e4a8a;},async 'applyServerUpdate'(_0x4fc500){const _0x24c4ac=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x4fc500})}),_0x539366=await _0x24c4ac['json']()['catch'](()=>({}));if(!_0x24c4ac['ok']){const _0x435faf=new Error(_0x539366['message']||_0x539366['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x539366['output']!==undefined)_0x435faf['output']=_0x539366['output'];if(_0x539366['error']!==undefined)_0x435faf['commandError']=_0x539366['error'];throw _0x435faf;}return _0x539366;},async 'restartServer'(){const _0x36c59c=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x496aa5=await _0x36c59c['json']()['catch'](()=>({}));if(!_0x36c59c['ok'])throw new Error(_0x496aa5['message']||_0x496aa5['error']||'Failed\x20to\x20restart\x20server');return _0x496aa5;},async 'createPasswordToken'(_0x59ca27,_0x4dfc96='setup',_0x2cd5a2=![]){const _0x1580d8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59ca27,'type':_0x4dfc96,'sendEmail':_0x2cd5a2})});if(!_0x1580d8['ok']){const _0xca0c5=await _0x1580d8['json']();throw new Error(_0xca0c5['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1580d8['json']();},async 'getEmailConfig'(){const _0x5bce62=await fetch(API_BASE+'/password/email-config');if(!_0x5bce62['ok']){const _0x10c667=await _0x5bce62['json']();throw new Error(_0x10c667['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5bce62['json']();},async 'updateTaskName'(_0xc10d60,_0x173a73){const _0x1bdeb9=await fetch(API_BASE+'/tasks/'+_0xc10d60,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x173a73})});if(!_0x1bdeb9['ok']){const _0x33935a=await _0x1bdeb9['json']();throw new Error(_0x33935a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1bdeb9['json']();},async 'pinTask'(_0x3999e9,_0x8e739,_0x5a45b1=null){if(!_0x3999e9)throw new Error('Task\x20ID\x20is\x20required');const _0x17b923={'pinned':_0x8e739};_0x5a45b1&&_0x5a45b1['length']>0x0&&(_0x17b923['additionalTaskIds']=_0x5a45b1);const _0x2c119f=await fetch(API_BASE+'/tasks/'+_0x3999e9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17b923)});if(!_0x2c119f['ok']){const _0x572e08=await _0x2c119f['json']();throw new Error(_0x572e08['error']||'Failed\x20to\x20pin\x20task');}return await _0x2c119f['json']();},async 'setTaskWinner'(_0x45892a,_0x1641dc,_0x306735=[]){if(!_0x45892a)throw new Error('Task\x20ID\x20is\x20required');const _0x139709=await fetch(API_BASE+'/tasks/'+_0x45892a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1641dc,'siblings':_0x306735})});if(!_0x139709['ok']){const _0x4479b3=await _0x139709['json']();throw new Error(_0x4479b3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x139709['json']();},async 'setTaskLoser'(_0x3b699c,_0x27ff41){if(!_0x3b699c)throw new Error('Task\x20ID\x20is\x20required');const _0x83cd00=await fetch(API_BASE+'/tasks/'+_0x3b699c+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x27ff41})});if(!_0x83cd00['ok']){const _0x368afe=await _0x83cd00['json']();throw new Error(_0x368afe['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x83cd00['json']();},async 'createTaskGroup'(_0x37fc0d){const _0x512cc3=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37fc0d)});if(!_0x512cc3['ok']){const _0xb4e940=await _0x512cc3['json']();throw new Error(_0xb4e940['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x512cc3['json']();},async 'getTaskGroups'(_0x540e8c={}){const _0x26bda4=new URLSearchParams();if(_0x540e8c['userId'])_0x26bda4['set']('userId',String(_0x540e8c['userId']));if(_0x540e8c['status'])_0x26bda4['set']('status',String(_0x540e8c['status']));if(_0x540e8c['limit'])_0x26bda4['set']('limit',String(_0x540e8c['limit']));const _0xae2bcb=API_BASE+'/tasks/groups'+(_0x26bda4['toString']()?'?'+_0x26bda4['toString']():''),_0x65f93e=await fetch(_0xae2bcb);if(!_0x65f93e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x65f93e['json']();},async 'getTaskGroup'(_0x249986){const _0x24d517=await fetch(API_BASE+'/tasks/groups/'+_0x249986);if(!_0x24d517['ok']){const _0x2ce24e=await _0x24d517['json']();throw new Error(_0x2ce24e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x24d517['json']();},async 'updateTaskGroup'(_0x26122d,_0x8bc5e3,_0x30267e){const _0x193d2f=await fetch(API_BASE+'/tasks/'+_0x26122d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x8bc5e3,'groupIndex':_0x30267e})});if(!_0x193d2f['ok']){const _0x88fb55=await _0x193d2f['json']();throw new Error(_0x88fb55['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x193d2f['json']();},async 'removeTaskFromGroup'(_0x152976){return this['updateTaskGroup'](_0x152976,null,null);},async 'deleteTaskGroup'(_0x254cd0,_0x4d89ac=![]){const _0x49fefa=_0x4d89ac?'?deleteTasks=true':'',_0x295ce5=await fetch(API_BASE+'/tasks/groups/'+_0x254cd0+_0x49fefa,{'method':'DELETE'});if(!_0x295ce5['ok']){const _0x39c05f=await _0x295ce5['json']();throw new Error(_0x39c05f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5cd507,_0x4362ba){const _0x5c2ef7=await fetch(API_BASE+'/tasks/groups/'+_0x5cd507+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4362ba})});if(!_0x5c2ef7['ok']){const _0xf72933=await _0x5c2ef7['json']();throw new Error(_0xf72933['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5c2ef7['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x425dda){if(!_0x425dda)throw new Error('Task\x20ID\x20is\x20required');const _0x3d8ca2=await fetch(API_BASE+'/tasks/'+_0x425dda+'/comments');if(!_0x3d8ca2['ok']){const _0x2b7e82=await _0x3d8ca2['json']()['catch'](()=>({}));throw new Error(_0x2b7e82['error']||'Failed\x20to\x20get\x20comments');}return await _0x3d8ca2['json']();},async 'addComment'(_0x101b19,_0x25bee6){if(!_0x101b19)throw new Error('Task\x20ID\x20is\x20required');if(!_0x25bee6)throw new Error('Comment\x20content\x20is\x20required');const _0x590211=await fetch(API_BASE+'/tasks/'+_0x101b19+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25bee6})});if(!_0x590211['ok']){const _0x2686b1=await _0x590211['json']()['catch'](()=>({}));throw new Error(_0x2686b1['error']||'Failed\x20to\x20add\x20comment');}return await _0x590211['json']();},async 'updateComment'(_0xcdc24d,_0x2c2976,_0x3b9846){if(!_0xcdc24d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c2976)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3b9846)throw new Error('Comment\x20content\x20is\x20required');const _0x9f0c23=await fetch(API_BASE+'/tasks/'+_0xcdc24d+'/comments/'+_0x2c2976,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3b9846})});if(!_0x9f0c23['ok']){const _0x1b6f90=await _0x9f0c23['json']()['catch'](()=>({}));throw new Error(_0x1b6f90['error']||'Failed\x20to\x20update\x20comment');}return await _0x9f0c23['json']();},async 'deleteComment'(_0x2b4b08,_0x285d38){if(!_0x2b4b08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x285d38)throw new Error('Comment\x20ID\x20is\x20required');const _0x2f5854=await fetch(API_BASE+'/tasks/'+_0x2b4b08+'/comments/'+_0x285d38,{'method':'DELETE'});if(!_0x2f5854['ok']){const _0x3c2a24=await _0x2f5854['json']()['catch'](()=>({}));throw new Error(_0x3c2a24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2f5854['json']();},async 'createObjective'(_0x34cf44){const _0xbf3674={'objective':!![],'name':_0x34cf44['name']||'','environment':_0x34cf44['environment']||null,'agents':_0x34cf44['agents']||[],'branches':_0x34cf44['branches']||{},'isPinned':_0x34cf44['isPinned']||![],'parentObjectiveId':_0x34cf44['parentObjectiveId']||null,'env_vars':_0x34cf44['envVars']||{},'parameters':{'instructions':_0x34cf44['instructions']||''},'files':_0x34cf44['files']||[],'jira':_0x34cf44['jira']||null};return this['createTask'](_0xbf3674);},async 'updateObjective'(_0x2574b3,_0x35ca36,_0x6a4ef2=[],_0x53f79d=[]){let _0x74939f,_0x2a616a={};const _0x97da96={..._0x35ca36};_0x53f79d&&_0x53f79d['length']>0x0&&(_0x97da96['removeAttachments']=_0x53f79d);if(_0x6a4ef2&&_0x6a4ef2['length']>0x0){const _0x2c525c=new FormData();for(const [_0x1c0eea,_0x2f1d25]of Object['entries'](_0x97da96)){if(_0x2f1d25==null)continue;typeof _0x2f1d25==='object'?_0x2c525c['append'](_0x1c0eea,JSON['stringify'](_0x2f1d25)):_0x2c525c['append'](_0x1c0eea,String(_0x2f1d25));}for(const _0x52df5e of _0x6a4ef2){_0x2c525c['append']('attachments',_0x52df5e);}_0x74939f=_0x2c525c;}else _0x2a616a['Content-Type']='application/json',_0x74939f=JSON['stringify'](_0x97da96);const _0x450449=await fetch(API_BASE+'/tasks/'+_0x2574b3,{'method':'PATCH','headers':_0x2a616a,'body':_0x74939f});if(!_0x450449['ok']){const _0x1839eb=await _0x450449['json']();throw new Error(_0x1839eb['error']||'Failed\x20to\x20update\x20objective');}return await _0x450449['json']();},async 'deleteObjective'(_0x40c5cb){return this['deleteTask'](_0x40c5cb);},async 'launchObjective'(_0xf1ac85,_0x572636={}){const _0x3f5d21=await fetch(API_BASE+'/tasks/'+_0xf1ac85+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572636)});if(!_0x3f5d21['ok']){const _0x2beeaa=await _0x3f5d21['json']();throw new Error(_0x2beeaa['error']||'Failed\x20to\x20launch\x20objective');}return await _0x3f5d21['json']();},async 'getObjectiveAttachments'(_0x502939){return this['getTaskAttachments'](_0x502939);},async 'createJudgeTask'({environment:_0x20d4fe,judgeAgent:_0x4be713,groupId:_0x4db5b1,taskIds:_0x426187,judgeCustomInstructions:_0xadf2c6,isPinned:_0x31bc43}){const _0x2348c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x20d4fe,'judgeAgent':_0x4be713,'groupId':_0x4db5b1,'taskIds':_0x426187,'judgeCustomInstructions':_0xadf2c6,'isPinned':_0x31bc43})});if(!_0x2348c4['ok']){const _0x3fc757=await _0x2348c4['json']();throw new Error(_0x3fc757['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2348c4['json']();},async 'getJudgeTasks'(_0x1ed707){const _0x54037f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1ed707));if(!_0x54037f['ok']){const _0x101334=await _0x54037f['json']();throw new Error(_0x101334['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x54037f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xf9b284,_0x5bf6bc,_0x3e6a25=''){const _0x24d2a4=await fetch(API_BASE+'/tasks/'+_0xf9b284+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x5bf6bc,'customPreamble':_0x3e6a25})});if(!_0x24d2a4['ok']){const _0x585532=await _0x24d2a4['json']();throw new Error(_0x585532['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x24d2a4['json']();},async 'getJiraConfig'(){const _0x488fa5=await fetch(API_BASE+'/jira/config');if(!_0x488fa5['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x488fa5['json']();},async 'getJiraIssue'(_0x2288a5){const _0x56c718=await fetch(API_BASE+'/jira/issues/'+_0x2288a5);if(!_0x56c718['ok']){const _0x36ecb3=await _0x56c718['json']()['catch'](()=>({}));throw new Error(_0x36ecb3['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x56c718['statusText']);}return await _0x56c718['json']();},async 'searchJiraIssues'(_0x193dc3,_0x2d9904=0x14){const _0x52c41a=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x193dc3,'maxResults':_0x2d9904})});if(!_0x52c41a['ok']){const _0x1b5c5f=await _0x52c41a['json']()['catch'](()=>({}));throw new Error(_0x1b5c5f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x52c41a['statusText']);}return await _0x52c41a['json']();},async 'postJiraComment'(_0x814ef6,_0x5146ca){const _0x34a255=await fetch(API_BASE+'/jira/issues/'+_0x814ef6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5146ca})});if(!_0x34a255['ok']){const _0x15dd0c=await _0x34a255['json']()['catch'](()=>({}));throw new Error(_0x15dd0c['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x34a255['statusText']);}return await _0x34a255['json']();},async 'getJiraComments'(_0x17961b){const _0x3d82a4=await fetch(API_BASE+'/jira/issues/'+_0x17961b+'/comments');if(!_0x3d82a4['ok']){const _0x229a51=await _0x3d82a4['json']()['catch'](()=>({}));throw new Error(_0x229a51['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d82a4['statusText']);}return await _0x3d82a4['json']();},async 'promptParameter'({environment:_0x2b7286,command:_0x16056f,parser:parser='json'}){const _0x5508dd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2b7286,'command':_0x16056f,'parser':parser})});if(!_0x5508dd['ok']){const _0x28ea71=await _0x5508dd['json']()['catch'](()=>({}));throw new Error(_0x28ea71['message']||_0x28ea71['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5508dd['statusText']);}return await _0x5508dd['json']();},async 'promptParameterStream'(_0x45d240,_0x229483){const _0x47e4c0=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45d240)});if(!_0x47e4c0['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x47e4c0['statusText']);const _0x5d6456=_0x47e4c0['body']['getReader'](),_0xf8c532=new TextDecoder();let _0x5e6e50='';return new Promise((_0x567392,_0x49f9fd)=>{const _0x400fd8=async()=>{try{const {done:_0xc51adb,value:_0x179092}=await _0x5d6456['read']();if(_0xc51adb)return;_0x5e6e50+=_0xf8c532['decode'](_0x179092,{'stream':!![]});const _0x3f907c=_0x5e6e50['split']('\x0a\x0a');_0x5e6e50=_0x3f907c['pop']()||'';for(const _0x33aef0 of _0x3f907c){if(!_0x33aef0['trim']())continue;const _0x163c46=_0x33aef0['split']('\x0a');let _0x58f512='message',_0x5eb992='';for(const _0x1af229 of _0x163c46){if(_0x1af229['startsWith']('event:'))_0x58f512=_0x1af229['substring'](0x6)['trim']();else _0x1af229['startsWith']('data:')&&(_0x5eb992=_0x1af229['substring'](0x5)['trim']());}if(!_0x5eb992)continue;try{const _0x48963d=JSON['parse'](_0x5eb992);if(_0x58f512==='progress'&&_0x229483)_0x229483(_0x48963d['stage'],_0x48963d['message']);else{if(_0x58f512==='result'){_0x567392(_0x48963d);return;}else{if(_0x58f512==='error'){let _0x4e873a=_0x48963d['message']||_0x48963d['error']||'Prompt\x20command\x20failed';_0x48963d['rawOutput']&&(_0x4e873a+='\x0a\x0aRaw\x20output:\x0a'+_0x48963d['rawOutput']);_0x49f9fd(new Error(_0x4e873a));return;}}}}catch(_0x3c7ffb){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3c7ffb),console['error']('Event\x20type:',_0x58f512),console['error']('Event\x20data:',_0x5eb992),console['error']('First\x20200\x20chars:',_0x5eb992['substring'](0x0,0xc8)),_0x49f9fd(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3c7ffb['message']+'\x0a\x0aData:\x20'+_0x5eb992['substring'](0x0,0x1f4)));return;}}_0x400fd8();}catch(_0x29de8e){_0x49f9fd(_0x29de8e);}};_0x400fd8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4174e2){const _0x286dc7=await fetch(''+API_BASE+_0x4174e2);if(!_0x286dc7['ok']){const _0x4bb1b0=await _0x286dc7['json']()['catch'](()=>({'error':_0x286dc7['statusText']})),_0x5a3fd7=new Error(_0x4bb1b0['error']||_0x4bb1b0['message']||_0x286dc7['statusText']);if(_0x4bb1b0['detail']!==undefined)_0x5a3fd7['detail']=_0x4bb1b0['detail'];throw _0x5a3fd7;}return await _0x286dc7['json']();},async 'post'(_0x4f34c5,_0x5da428){const _0x13bda6=await fetch(''+API_BASE+_0x4f34c5,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da428)});if(!_0x13bda6['ok']){const _0x37bf2d=await _0x13bda6['json']()['catch'](()=>({'error':_0x13bda6['statusText']})),_0x4a5394=new Error(_0x37bf2d['error']||_0x37bf2d['message']||_0x13bda6['statusText']);if(_0x37bf2d['detail']!==undefined)_0x4a5394['detail']=_0x37bf2d['detail'];throw _0x4a5394;}return await _0x13bda6['json']();},async 'put'(_0x4a6f64,_0x3a2a27){const _0x127885=await fetch(''+API_BASE+_0x4a6f64,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2a27)});if(!_0x127885['ok']){const _0x20dbd8=await _0x127885['json']()['catch'](()=>({'error':_0x127885['statusText']})),_0x531c9b=new Error(_0x20dbd8['error']||_0x20dbd8['message']||_0x127885['statusText']);if(_0x20dbd8['detail']!==undefined)_0x531c9b['detail']=_0x20dbd8['detail'];throw _0x531c9b;}return await _0x127885['json']();},async 'delete'(_0x4119e6,_0x3b6e58){const _0x4f59bb={'method':'DELETE'};_0x3b6e58&&(_0x4f59bb['headers']={'Content-Type':'application/json'},_0x4f59bb['body']=JSON['stringify'](_0x3b6e58));const _0x478eec=await fetch(''+API_BASE+_0x4119e6,_0x4f59bb);if(!_0x478eec['ok']){const _0x320da2=await _0x478eec['json']()['catch'](()=>({'error':_0x478eec['statusText']})),_0x3adb10=new Error(_0x320da2['error']||_0x320da2['message']||_0x478eec['statusText']);if(_0x320da2['detail']!==undefined)_0x3adb10['detail']=_0x320da2['detail'];throw _0x3adb10;}return await _0x478eec['json']();},async 'getSkills'(){const _0x4a4a57=await fetch(API_BASE+'/skills');if(!_0x4a4a57['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a4a57['statusText']);return await _0x4a4a57['json']();},async 'getSkill'(_0x22aa44){const _0x4fc23d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x22aa44));if(!_0x4fc23d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4fc23d['statusText']);return await _0x4fc23d['json']();},async 'createSkill'(_0x5c0921){const _0x367a5b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c0921)});if(!_0x367a5b['ok']){const _0x4017e3=await _0x367a5b['json']()['catch'](()=>({'error':_0x367a5b['statusText']})),_0x13211c=new Error(_0x4017e3['error']||_0x4017e3['message']||_0x367a5b['statusText']);if(_0x4017e3['detail']!==undefined)_0x13211c['detail']=_0x4017e3['detail'];throw _0x13211c;}return await _0x367a5b['json']();},async 'updateSkill'(_0x5104b7,_0x38e2b9){const _0x3f6718=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5104b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38e2b9)});if(!_0x3f6718['ok']){const _0x4321ab=await _0x3f6718['json']()['catch'](()=>({'error':_0x3f6718['statusText']})),_0x5854de=new Error(_0x4321ab['error']||_0x4321ab['message']||_0x3f6718['statusText']);if(_0x4321ab['detail']!==undefined)_0x5854de['detail']=_0x4321ab['detail'];throw _0x5854de;}return await _0x3f6718['json']();},async 'deleteSkill'(_0xd9c72){const _0x11da37=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd9c72),{'method':'DELETE'});if(!_0x11da37['ok']){const _0x1432f7=await _0x11da37['json']()['catch'](()=>({'error':_0x11da37['statusText']})),_0x48668b=new Error(_0x1432f7['error']||_0x1432f7['message']||_0x11da37['statusText']);if(_0x1432f7['detail']!==undefined)_0x48668b['detail']=_0x1432f7['detail'];throw _0x48668b;}return await _0x11da37['json']();},async 'getSkillFile'(_0x54458c,_0x1a2c6e){const _0x1915f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x54458c)+'/files/'+_0x1a2c6e);if(!_0x1915f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x1915f4['statusText']);return await _0x1915f4['json']();},async 'saveSkillFile'(_0x15805f,_0x147db8,_0xc15e6a){const _0x5a7ad9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x15805f)+'/files/'+_0x147db8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc15e6a})});if(!_0x5a7ad9['ok']){const _0x1f518f=await _0x5a7ad9['json']()['catch'](()=>({'error':_0x5a7ad9['statusText']})),_0x1503cc=new Error(_0x1f518f['error']||_0x1f518f['message']||_0x5a7ad9['statusText']);if(_0x1f518f['detail']!==undefined)_0x1503cc['detail']=_0x1f518f['detail'];throw _0x1503cc;}return await _0x5a7ad9['json']();},async 'deleteSkillFile'(_0x558393,_0x4e53c8){const _0x26820b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x558393)+'/files/'+_0x4e53c8,{'method':'DELETE'});if(!_0x26820b['ok']){const _0x19a51c=await _0x26820b['json']()['catch'](()=>({'error':_0x26820b['statusText']})),_0x3c0e2b=new Error(_0x19a51c['error']||_0x19a51c['message']||_0x26820b['statusText']);if(_0x19a51c['detail']!==undefined)_0x3c0e2b['detail']=_0x19a51c['detail'];throw _0x3c0e2b;}return await _0x26820b['json']();},async 'pullSkills'(){const _0x167da3=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x167da3['ok']){const _0x492f07=await _0x167da3['json']()['catch'](()=>({'error':_0x167da3['statusText']})),_0x467a28=new Error(_0x492f07['error']||_0x492f07['message']||_0x167da3['statusText']);if(_0x492f07['detail']!==undefined)_0x467a28['detail']=_0x492f07['detail'];throw _0x467a28;}return await _0x167da3['json']();},async 'commitSkills'(_0x12f10e,_0x48eaa0={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x48eaa0,_0x4eec54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x12f10e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4eec54['ok']){const _0x3bebfb=await _0x4eec54['json']()['catch'](()=>({'error':_0x4eec54['statusText']})),_0x576c9e=new Error(_0x3bebfb['error']||_0x3bebfb['message']||_0x4eec54['statusText']);if(_0x3bebfb['detail']!==undefined)_0x576c9e['detail']=_0x3bebfb['detail'];throw _0x576c9e;}return await _0x4eec54['json']();},async 'discardSkillsChanges'(){const _0x409d89=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x409d89['ok']){const _0x319ccb=await _0x409d89['json']()['catch'](()=>({'error':_0x409d89['statusText']})),_0x480abf=new Error(_0x319ccb['error']||_0x319ccb['message']||_0x409d89['statusText']);if(_0x319ccb['detail']!==undefined)_0x480abf['detail']=_0x319ccb['detail'];throw _0x480abf;}return await _0x409d89['json']();},async 'getSkillCatalog'(){const _0x3928e2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x3928e2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x3928e2['statusText']);return await _0x3928e2['json']();},async 'getImportedSkillsRegistry'(){const _0x3f8328=await fetch(API_BASE+'/external-skills/registry');if(!_0x3f8328['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3f8328['statusText']);return await _0x3f8328['json']();},async 'importCatalogSkill'(_0x3326cb){const _0x494d22=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3326cb})});if(!_0x494d22['ok']){const _0x3b4e78=await _0x494d22['json']()['catch'](()=>({'error':_0x494d22['statusText']})),_0x46f831=new Error(_0x3b4e78['error']||_0x3b4e78['message']||_0x494d22['statusText']);if(_0x3b4e78['detail']!==undefined)_0x46f831['detail']=_0x3b4e78['detail'];throw _0x46f831;}return await _0x494d22['json']();},async 'importSkillFromGit'(_0x14a12b,_0x291452,_0x2138be='main',_0x545f7d=null){const _0x41eb57=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14a12b,'skillPath':_0x291452,'branch':_0x2138be,'skillId':_0x545f7d})});if(!_0x41eb57['ok']){const _0x234ae4=await _0x41eb57['json']()['catch'](()=>({'error':_0x41eb57['statusText']})),_0x13ea58=new Error(_0x234ae4['error']||_0x234ae4['message']||_0x41eb57['statusText']);if(_0x234ae4['detail']!==undefined)_0x13ea58['detail']=_0x234ae4['detail'];throw _0x13ea58;}return await _0x41eb57['json']();},async 'probeMarketplace'(_0x447443,_0x6010a3='main'){const _0xfe87fc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x447443,'branch':_0x6010a3})});if(!_0xfe87fc['ok']){const _0x2c047e=await _0xfe87fc['json']()['catch'](()=>({'error':_0xfe87fc['statusText']})),_0x15d401=new Error(_0x2c047e['error']||_0x2c047e['message']||_0xfe87fc['statusText']);if(_0x2c047e['detail']!==undefined)_0x15d401['detail']=_0x2c047e['detail'];throw _0x15d401;}return await _0xfe87fc['json']();},async 'importMarketplaceBundle'(_0x779a12,_0x1f4870,_0x1262af,_0xda3ed4=null){const _0x204083=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x779a12,'branch':_0x1f4870,'bundleId':_0x1262af,'selectedSkills':_0xda3ed4})});if(!_0x204083['ok']){const _0x229d47=await _0x204083['json']()['catch'](()=>({'error':_0x204083['statusText']})),_0x501bbd=new Error(_0x229d47['error']||_0x229d47['message']||_0x204083['statusText']);if(_0x229d47['detail']!==undefined)_0x501bbd['detail']=_0x229d47['detail'];throw _0x501bbd;}return await _0x204083['json']();},async 'importSkillFromFolder'(_0xe926a7,_0x1dc433=null){const _0x206399=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xe926a7,'skillId':_0x1dc433})});if(!_0x206399['ok']){const _0xb853c7=await _0x206399['json']()['catch'](()=>({'error':_0x206399['statusText']})),_0x3d8037=new Error(_0xb853c7['error']||_0xb853c7['message']||_0x206399['statusText']);if(_0xb853c7['detail']!==undefined)_0x3d8037['detail']=_0xb853c7['detail'];throw _0x3d8037;}return await _0x206399['json']();},async 'importSkillFromNpm'(_0x40070f,_0x1ae6b0='latest',_0x1b5954=null,_0x49d0ec=null){const _0x36fc1f=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x40070f,'version':_0x1ae6b0,'skillId':_0x1b5954,'registry':_0x49d0ec})});if(!_0x36fc1f['ok']){const _0x754a41=await _0x36fc1f['json']()['catch'](()=>({'error':_0x36fc1f['statusText']})),_0x94f1e4=new Error(_0x754a41['error']||_0x754a41['message']||_0x36fc1f['statusText']);if(_0x754a41['detail']!==undefined)_0x94f1e4['detail']=_0x754a41['detail'];throw _0x94f1e4;}return await _0x36fc1f['json']();},async 'checkSkillUpdates'(_0x2a4bbd){const _0x3b158f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2a4bbd)+'/check-updates',{'method':'POST'});if(!_0x3b158f['ok']){const _0x1a8e27=await _0x3b158f['json']()['catch'](()=>({'error':_0x3b158f['statusText']})),_0x5af517=new Error(_0x1a8e27['error']||_0x1a8e27['message']||_0x3b158f['statusText']);if(_0x1a8e27['detail']!==undefined)_0x5af517['detail']=_0x1a8e27['detail'];throw _0x5af517;}return await _0x3b158f['json']();},async 'updateExternalSkill'(_0x3443b5){const _0x1e31e6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3443b5)+'/update',{'method':'POST'});if(!_0x1e31e6['ok']){const _0x310b18=await _0x1e31e6['json']()['catch'](()=>({'error':_0x1e31e6['statusText']})),_0x3880c4=new Error(_0x310b18['error']||_0x310b18['message']||_0x1e31e6['statusText']);if(_0x310b18['detail']!==undefined)_0x3880c4['detail']=_0x310b18['detail'];throw _0x3880c4;}return await _0x1e31e6['json']();},async 'updateSkillFlags'(_0xae6a9c,_0x307780){const _0x32f2a8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xae6a9c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x307780})});if(!_0x32f2a8['ok']){const _0x2834f3=await _0x32f2a8['json']()['catch'](()=>({'error':_0x32f2a8['statusText']})),_0x768e71=new Error(_0x2834f3['error']||_0x2834f3['message']||_0x32f2a8['statusText']);if(_0x2834f3['detail']!==undefined)_0x768e71['detail']=_0x2834f3['detail'];throw _0x768e71;}return await _0x32f2a8['json']();},async 'removeFromImportedRegistry'(_0x36f4d9){const _0x2072a4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x36f4d9)+'/registry',{'method':'DELETE'});if(!_0x2072a4['ok']){const _0xd027ec=await _0x2072a4['json']()['catch'](()=>({'error':_0x2072a4['statusText']})),_0x369d37=new Error(_0xd027ec['error']||_0xd027ec['message']||_0x2072a4['statusText']);if(_0xd027ec['detail']!==undefined)_0x369d37['detail']=_0xd027ec['detail'];throw _0x369d37;}return await _0x2072a4['json']();},async 'getTeams'(){const _0x12c499=await fetch(API_BASE+'/teams');if(!_0x12c499['ok']){const _0x2dc0bc=await _0x12c499['json']()['catch'](()=>({'message':_0x12c499['statusText']}));throw new Error(_0x2dc0bc['message']||'Failed\x20to\x20get\x20teams');}return await _0x12c499['json']();},async 'getTeam'(_0x2d5bb6){const _0x5b04ae=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d5bb6));if(!_0x5b04ae['ok']){const _0x19c056=await _0x5b04ae['json']()['catch'](()=>({'message':_0x5b04ae['statusText']}));throw new Error(_0x19c056['message']||'Failed\x20to\x20get\x20team');}return await _0x5b04ae['json']();},async 'createTeam'(_0x226aff){const _0x450836=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x226aff)});if(!_0x450836['ok']){const _0x34de2f=await _0x450836['json']()['catch'](()=>({'message':_0x450836['statusText']}));throw new Error(_0x34de2f['message']||'Failed\x20to\x20create\x20team');}return await _0x450836['json']();},async 'updateTeam'(_0x1f7f3b,_0x3ebd9d){const _0x2a2f8e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1f7f3b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ebd9d)});if(!_0x2a2f8e['ok']){const _0x5ebe5f=await _0x2a2f8e['json']()['catch'](()=>({'message':_0x2a2f8e['statusText']}));throw new Error(_0x5ebe5f['message']||'Failed\x20to\x20update\x20team');}return await _0x2a2f8e['json']();},async 'deleteTeam'(_0x62bdfa){const _0x175167=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x62bdfa),{'method':'DELETE'});if(!_0x175167['ok']){const _0x1cf66a=await _0x175167['json']()['catch'](()=>({'message':_0x175167['statusText']}));throw new Error(_0x1cf66a['message']||'Failed\x20to\x20delete\x20team');}return await _0x175167['json']();},async 'addTeamMember'(_0x3949f3,_0x5360a2){const _0x44b09d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3949f3)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5360a2})});if(!_0x44b09d['ok']){const _0x59ee6b=await _0x44b09d['json']()['catch'](()=>({'message':_0x44b09d['statusText']}));throw new Error(_0x59ee6b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x44b09d['json']();},async 'removeTeamMember'(_0x54214f,_0x15123a){const _0x812414=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x54214f)+'/members/'+encodeURIComponent(_0x15123a),{'method':'DELETE'});if(!_0x812414['ok']){const _0x41e763=await _0x812414['json']()['catch'](()=>({'message':_0x812414['statusText']}));throw new Error(_0x41e763['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x812414['json']();},async 'getBindings'(_0x4a6b06={}){const _0x2386ff=new URLSearchParams();if(_0x4a6b06['resource_type'])_0x2386ff['set']('resource_type',_0x4a6b06['resource_type']);if(_0x4a6b06['resource_id'])_0x2386ff['set']('resource_id',_0x4a6b06['resource_id']);if(_0x4a6b06['subject_type'])_0x2386ff['set']('subject_type',_0x4a6b06['subject_type']);if(_0x4a6b06['subject_id'])_0x2386ff['set']('subject_id',_0x4a6b06['subject_id']);const _0x413168=_0x2386ff['toString'](),_0x28374b=await fetch(API_BASE+'/bindings'+(_0x413168?'?'+_0x413168:''));if(!_0x28374b['ok']){const _0x3829de=await _0x28374b['json']()['catch'](()=>({'message':_0x28374b['statusText']}));throw new Error(_0x3829de['message']||'Failed\x20to\x20get\x20bindings');}return await _0x28374b['json']();},async 'createBinding'(_0x433510){const _0xa08cf7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x433510)});if(!_0xa08cf7['ok']){const _0x45eb72=await _0xa08cf7['json']()['catch'](()=>({'message':_0xa08cf7['statusText']}));throw new Error(_0x45eb72['message']||'Failed\x20to\x20create\x20binding');}return await _0xa08cf7['json']();},async 'updateBinding'(_0x1a8186,_0xf149fd){const _0xd0a4f8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1a8186),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf149fd)});if(!_0xd0a4f8['ok']){const _0x52d5c2=await _0xd0a4f8['json']()['catch'](()=>({'message':_0xd0a4f8['statusText']}));throw new Error(_0x52d5c2['message']||'Failed\x20to\x20update\x20binding');}return await _0xd0a4f8['json']();},async 'deleteBinding'(_0x594244){const _0x5eb5d2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x594244),{'method':'DELETE'});if(!_0x5eb5d2['ok']){const _0x504d01=await _0x5eb5d2['json']()['catch'](()=>({'message':_0x5eb5d2['statusText']}));throw new Error(_0x504d01['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5eb5d2['json']();},async 'getRoleDefinitions'(){const _0x293f31=await fetch(API_BASE+'/roles');if(!_0x293f31['ok']){const _0x1a1380=await _0x293f31['json']()['catch'](()=>({'message':_0x293f31['statusText']}));throw new Error(_0x1a1380['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x293f31['json']();},async 'getRoleDefinition'(_0x7b7072){const _0x570b58=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x7b7072));if(!_0x570b58['ok']){const _0x886a34=await _0x570b58['json']()['catch'](()=>({'message':_0x570b58['statusText']}));throw new Error(_0x886a34['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x570b58['json']();},async 'createRoleDefinition'(_0x5c6c61){const _0x43bd5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c6c61)});if(!_0x43bd5e['ok']){const _0x27a19a=await _0x43bd5e['json']()['catch'](()=>({'message':_0x43bd5e['statusText']}));throw new Error(_0x27a19a['message']||_0x27a19a['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x43bd5e['json']();},async 'updateRoleDefinition'(_0x3ec1fa,_0x431a43){const _0x4f06f7=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3ec1fa),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x431a43)});if(!_0x4f06f7['ok']){const _0x3ba72a=await _0x4f06f7['json']()['catch'](()=>({'message':_0x4f06f7['statusText']}));throw new Error(_0x3ba72a['message']||_0x3ba72a['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f06f7['json']();},async 'deleteRoleDefinition'(_0x40229c){const _0x50d7bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x40229c),{'method':'DELETE'});if(!_0x50d7bb['ok']){const _0x41f741=await _0x50d7bb['json']()['catch'](()=>({'message':_0x50d7bb['statusText']}));throw new Error(_0x41f741['message']||_0x41f741['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x50d7bb['json']();},async 'getAvailablePermissions'(){const _0x599cd6=await fetch(API_BASE+'/roles/available-permissions');if(!_0x599cd6['ok']){const _0x45f13b=await _0x599cd6['json']()['catch'](()=>({'message':_0x599cd6['statusText']}));throw new Error(_0x45f13b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x599cd6['json']();},async 'getGitProviderAllowedTeams'(_0x36b180){const _0x3014e3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x36b180)+'/allowed-teams');if(!_0x3014e3['ok']){const _0x290313=await _0x3014e3['json']()['catch'](()=>({'message':_0x3014e3['statusText']}));throw new Error(_0x290313['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3014e3['json']();},async 'setGitProviderAllowedTeams'(_0xb01362,_0x11a4dc){const _0x3446c7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xb01362)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11a4dc})});if(!_0x3446c7['ok']){const _0x4044cc=await _0x3446c7['json']()['catch'](()=>({'message':_0x3446c7['statusText']}));throw new Error(_0x4044cc['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3446c7['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 _0x48a3b1=toastState['baseBottom'];toastState['toasts']['forEach'](_0xbb9e6c=>{_0xbb9e6c['el']['style']['bottom']=_0x48a3b1+'px';const _0x4aa18c=_0xbb9e6c['el']['offsetHeight']||toastState['defaultHeight'];_0x48a3b1+=_0x4aa18c+toastState['gap'];});});}function removeToastById(_0x380496){const _0x1557eb=toastState['toasts']['findIndex'](_0x46260e=>_0x46260e['id']===_0x380496);if(_0x1557eb===-0x1)return;const _0x175461=toastState['toasts'][_0x1557eb];if(_0x175461['timeoutId'])clearTimeout(_0x175461['timeoutId']);_0x175461['el']['classList']['remove']('show'),setTimeout(()=>_0x175461['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x1557eb,0x1),repositionAllToasts();}function registerToast(_0x4bce33){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4bce33),repositionAllToasts(),_0x4bce33['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(_0x3623ff){if(_0x3623ff===null||_0x3623ff===undefined)return'';return String(_0x3623ff)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2635ea,_0x2ea092){if(_0x2635ea&&typeof _0x2635ea==='object'&&!Array['isArray'](_0x2635ea))return{'code':typeof _0x2635ea['text']==='string'?_0x2635ea['text']:'','language':typeof _0x2635ea['lang']==='string'?_0x2635ea['lang']:''};return{'code':typeof _0x2635ea==='string'?_0x2635ea:'','language':typeof _0x2ea092==='string'?_0x2ea092:''};}function buildMermaidBlock(_0x4cc8){const _0x3d02fc=String(_0x4cc8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x3d02fc))+'\x22>'+escapeHtmlValue(_0x3d02fc)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x27a8fc=new marked['Renderer'](),_0x1d8cb6=_0x27a8fc['code']['bind'](_0x27a8fc);return _0x27a8fc['code']=function(_0x15a85f,_0x7e05d7,..._0x379a87){const {code:_0x3b5e83,language:_0x2f640a}=getMarkdownCodeBlockPayload(_0x15a85f,_0x7e05d7),_0x55976f=String(_0x2f640a||'')['trim']()['toLowerCase']();if(_0x55976f==='mermaid')return buildMermaidBlock(_0x3b5e83);const _0x25c01c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x25c01c&&_0x55976f)try{const _0x3c0be7=_0x25c01c['getLanguage'](_0x55976f)?_0x55976f:'plaintext',_0x35c232=_0x25c01c['highlight'](_0x3b5e83,{'language':_0x3c0be7})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x55976f)+'\x22>'+_0x35c232+'</code></pre>';}catch(_0x43dd38){console['error']('Syntax\x20highlighting\x20error:',_0x43dd38);}return _0x1d8cb6(_0x15a85f,_0x7e05d7,..._0x379a87);},sharedMarkedRenderer=_0x27a8fc,_0x27a8fc;}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 _0x1d8c8b=window['mermaid'];if(!_0x1d8c8b||typeof _0x1d8c8b['initialize']!=='function')return _0x1d8c8b||null;return _0x1d8c8b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1d8c8b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4a9401,_0x467c70)=>{const _0xbd0c45=()=>_0x4a9401(configureMermaidInstance()),_0x9c4813=()=>{mermaidLoadPromise=null,_0x467c70(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x12342a=document['getElementById'](MERMAID_SCRIPT_ID);!_0x12342a&&(_0x12342a=document['createElement']('script'),_0x12342a['id']=MERMAID_SCRIPT_ID,_0x12342a['src']=MERMAID_SCRIPT_SRC,_0x12342a['async']=!![],document['head']['appendChild'](_0x12342a));if(window['mermaid']){_0xbd0c45();return;}_0x12342a['addEventListener']('load',_0xbd0c45,{'once':!![]}),_0x12342a['addEventListener']('error',_0x9c4813,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e4a86){const _0x4c9c93=_0x3e4a86['getAttribute']('data-mermaid-source');if(!_0x4c9c93)return null;let _0x3fbf5f=_0x4c9c93;try{_0x3fbf5f=decodeURIComponent(_0x4c9c93);}catch{}return _0x3e4a86['textContent']=_0x3fbf5f,_0x3e4a86['removeAttribute']('data-processed'),_0x3e4a86['removeAttribute']('aria-roledescription'),_0x3e4a86['removeAttribute']('role'),_0x3e4a86['removeAttribute']('aria-label'),_0x3fbf5f;}function collectMermaidNodes(_0x3e9e3d,_0x57670f){if(!(_0x3e9e3d instanceof Element))return;_0x3e9e3d['matches']('.mermaid[data-mermaid-source]')&&_0x57670f['add'](_0x3e9e3d),_0x3e9e3d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13b148=>{_0x57670f['add'](_0x13b148);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2bb4a3=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2233f1=>setTimeout(_0x2233f1,0x0);_0x2bb4a3(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x54611d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x54611d);});});}function queueMermaidRender(_0x1f6924){const _0x37f4ec=new Set();_0x1f6924 instanceof Document||_0x1f6924 instanceof DocumentFragment?_0x1f6924['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2412d7=>_0x37f4ec['add'](_0x2412d7)):collectMermaidNodes(_0x1f6924,_0x37f4ec);if(_0x37f4ec['size']===0x0)return;_0x37f4ec['forEach'](_0x40a4e4=>pendingMermaidNodes['add'](_0x40a4e4)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x40ea77=Array['from'](pendingMermaidNodes)['filter'](_0x252ffb=>_0x252ffb['isConnected']);pendingMermaidNodes['clear']();if(_0x40ea77['length']===0x0)return;const _0x22104a=await loadMermaid();if(!_0x22104a)return;configureMermaidInstance();const _0x3aa285=getMermaidTheme();for(const _0x482886 of _0x40ea77){const _0xeffa27=_0x482886['getAttribute']('data-mermaid-source');if(!_0xeffa27)continue;const _0x3e7fc2=_0x482886['getAttribute']('data-processed')==='true';if(_0x3e7fc2&&_0x482886['dataset']['mermaidTheme']===_0x3aa285)continue;restoreMermaidSource(_0x482886);try{if(typeof _0x22104a['run']==='function')await _0x22104a['run']({'nodes':[_0x482886]});else typeof _0x22104a['init']==='function'&&_0x22104a['init'](undefined,[_0x482886]);_0x482886['dataset']['mermaidTheme']=_0x3aa285,delete _0x482886['dataset']['mermaidError'];}catch(_0xadfc5f){console['error']('Mermaid\x20render\x20failed:',_0xadfc5f),restoreMermaidSource(_0x482886),_0x482886['dataset']['mermaidError']='true',delete _0x482886['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2bc7de=>{_0x2bc7de['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x2bc7de);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x463f47=>{_0x463f47['forEach'](_0x4ee054=>{_0x4ee054['addedNodes']['forEach'](_0x15d750=>{_0x15d750['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x15d750);});});}),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'(_0x3a839e){const _0x38834f=new Date(_0x3a839e),_0x6640f6=new Date(),_0x5d49de=_0x6640f6-_0x38834f,_0x1bd437=Math['floor'](_0x5d49de/0x3e8),_0x185630=Math['floor'](_0x1bd437/0x3c),_0xa186d8=Math['floor'](_0x185630/0x3c),_0x347321=Math['floor'](_0xa186d8/0x18);if(_0x1bd437<0x3c)return'now';if(_0x185630<0x3c)return _0x185630+'m\x20ago';if(_0xa186d8<0x18)return _0xa186d8+'h\x20ago';return _0x347321+'d\x20ago';},'getStatusIcon'(_0x54ad65){switch(_0x54ad65){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x45bc1c){switch(_0x45bc1c){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'(_0x5d30ec,_0x332cd3=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1435ca={};_0x1435ca['text/plain']=new Blob([_0x5d30ec],{'type':'text/plain'});_0x332cd3&&(_0x1435ca['text/html']=new Blob([_0x332cd3],{'type':'text/html'}));const _0x1f7394=new ClipboardItem(_0x1435ca);return await navigator['clipboard']['write']([_0x1f7394]),!![];}catch(_0x1ad11b){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ad11b);}try{const _0x3aec80=_0x1bff0a=>{_0x1bff0a['preventDefault'](),_0x1bff0a['clipboardData']['setData']('text/plain',_0x5d30ec),_0x332cd3&&_0x1bff0a['clipboardData']['setData']('text/html',_0x332cd3);};document['addEventListener']('copy',_0x3aec80);const _0x1b6c1d=document['execCommand']('copy');document['removeEventListener']('copy',_0x3aec80);if(_0x1b6c1d)return!![];}catch(_0xdf2473){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xdf2473);}try{const _0x394800=document['createElement']('textarea');_0x394800['value']=_0x5d30ec,_0x394800['style']['position']='fixed',_0x394800['style']['opacity']='0',_0x394800['style']['pointerEvents']='none',document['body']['appendChild'](_0x394800),_0x394800['select']();const _0xb8f04a=document['execCommand']('copy');return document['body']['removeChild'](_0x394800),_0xb8f04a;}catch(_0x2e74e9){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x2e74e9),![];}},'showToast'(_0x387e92,_0x351a58='info'){const _0x31cbe1=getNextToastId(),_0x2bb523=document['createElement']('div');_0x2bb523['className']='toast\x20toast-'+_0x351a58,_0x2bb523['textContent']=_0x387e92,_0x2bb523['dataset']['toastId']=_0x31cbe1,document['body']['appendChild'](_0x2bb523);const _0x3fb8a6=_0x351a58==='error'?0x2710:0xbb8,_0x2b3672=setTimeout(()=>{removeToastById(_0x31cbe1);},_0x3fb8a6),_0x835661={'id':_0x31cbe1,'el':_0x2bb523,'timeoutId':_0x2b3672};return registerToast(_0x835661),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2bb523['classList']['add']('show');});}),_0x31cbe1;},'showError'(_0x200099){console['error'](_0x200099);const _0x5239d4=typeof _0x200099==='string'?_0x200099:_0x200099['message']||'An\x20error\x20occurred';this['showToast'](_0x5239d4,'error');},'showSuccess'(_0x8f4392){this['showToast'](_0x8f4392,'success');},'capitalize'(_0x56211e){if(!_0x56211e)return'';return _0x56211e['charAt'](0x0)['toUpperCase']()+_0x56211e['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54d921){return escapeHtmlValue(_0x54d921);},'ansiToHtml'(_0x47d17f){if(_0x47d17f===null||_0x47d17f===undefined)return'';let _0x462456=this['escapeHtml'](_0x47d17f);const _0xea8f33={'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'},_0x2cccb6={'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 _0x48151f=0x0;return _0x462456=_0x462456['replace'](/\x1b\[([0-9;]*)m/g,(_0x3d6e68,_0x351fe4)=>{if(!_0x351fe4||_0x351fe4==='0'){const _0xb2276f='</span>'['repeat'](_0x48151f);return _0x48151f=0x0,_0xb2276f;}const _0x1ecada=_0x351fe4['split'](';'),_0x5222c9=[];for(const _0x2a6c1b of _0x1ecada){if(_0x2a6c1b==='1')_0x5222c9['push']('font-weight:bold');else{if(_0x2a6c1b==='2')_0x5222c9['push']('opacity:0.7');else{if(_0x2a6c1b==='3')_0x5222c9['push']('font-style:italic');else{if(_0x2a6c1b==='4')_0x5222c9['push']('text-decoration:underline');else{if(_0x2a6c1b==='9')_0x5222c9['push']('text-decoration:line-through');else{if(_0xea8f33[_0x2a6c1b])_0x5222c9['push']('color:'+_0xea8f33[_0x2a6c1b]);else{if(_0x2cccb6[_0x2a6c1b])_0x5222c9['push']('background-color:'+_0x2cccb6[_0x2a6c1b]);}}}}}}}if(_0x5222c9['length']>0x0)return _0x48151f++,'<span\x20style=\x22'+_0x5222c9['join'](';')+'\x22>';return'';}),_0x462456+='</span>'['repeat'](_0x48151f),_0x462456=_0x462456['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1f90ed,_0x34f4d3)=>{if(!_0x34f4d3||_0x34f4d3==='0')return'';const _0x338b04=_0x34f4d3['split'](';'),_0x1032a2=[];for(const _0x5c97e7 of _0x338b04){if(_0x5c97e7==='1')_0x1032a2['push']('font-weight:bold');else{if(_0xea8f33[_0x5c97e7])_0x1032a2['push']('color:'+_0xea8f33[_0x5c97e7]);else{if(_0x2cccb6[_0x5c97e7])_0x1032a2['push']('background-color:'+_0x2cccb6[_0x5c97e7]);}}}if(_0x1032a2['length']>0x0)return'<span\x20style=\x22'+_0x1032a2['join'](';')+'\x22>';return'';}),_0x462456;},'showModal'({title:_0x23548c,content:_0x576e72,buttons:buttons=[]}){const _0x21e94b='\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'](_0x23548c)+'</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'+_0x576e72+'\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']((_0x59c8e3,_0x4d41ac)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59c8e3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4d41ac+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59c8e3['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',_0x3ed3df=document['createElement']('div');_0x3ed3df['id']='utils-modal',_0x3ed3df['className']='modal',_0x3ed3df['innerHTML']=_0x21e94b,document['body']['appendChild'](_0x3ed3df);const _0x59c28a=document['getElementById']('utils-modal-close');_0x59c28a&&_0x59c28a['addEventListener']('click',()=>this['hideModal']());const _0x2d8e71=_0x3ed3df['querySelectorAll']('[data-btn-index]');_0x2d8e71['forEach'](_0x270413=>{const _0x36ec08=parseInt(_0x270413['dataset']['btnIndex']);buttons[_0x36ec08]?.['onClick']&&_0x270413['addEventListener']('click',buttons[_0x36ec08]['onClick']);});const _0x5c5302=document['getElementById']('utils-modal-overlay');_0x5c5302&&_0x5c5302['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1aa2bb=document['getElementById']('utils-modal');_0x1aa2bb&&_0x1aa2bb['remove']();},'parseKeyValuePairs'(_0x478f0d){const _0x1a08ea={};if(!_0x478f0d)return _0x1a08ea;return _0x478f0d['split'](/\r?\n/)['map'](_0x30ea27=>_0x30ea27['trim']())['filter'](Boolean)['forEach'](_0x183f71=>{const _0x204ff6=_0x183f71['indexOf']('=');if(_0x204ff6>0x0){const _0x459ec4=_0x183f71['slice'](0x0,_0x204ff6)['trim'](),_0x26ea9e=_0x183f71['slice'](_0x204ff6+0x1)['trim']();if(_0x459ec4)_0x1a08ea[_0x459ec4]=_0x26ea9e;}}),_0x1a08ea;},'debounce'(_0x5166f5,_0x17563a=0xfa){let _0x3d79b8=null;return(..._0xeecc5e)=>{clearTimeout(_0x3d79b8),_0x3d79b8=setTimeout(()=>_0x5166f5['apply'](this,_0xeecc5e),_0x17563a);};},'formatTimestamp'(_0x364127){if(!_0x364127)return'N/A';const _0x386a4f=new Date(_0x364127);return _0x386a4f['toLocaleDateString']()+'\x20'+_0x386a4f['toLocaleTimeString']();},'getQueryParams'(){const _0x333299=new URLSearchParams(window['location']['search']),_0x142168={};for(const [_0x430975,_0x22f68e]of _0x333299){_0x142168[_0x430975]=_0x22f68e;}return _0x142168;},'formatDuration'(_0x229cf8,_0x57bb4f){if(!_0x229cf8)return'N/A';const _0x1978c3=new Date(_0x229cf8),_0x144cc7=_0x57bb4f?new Date(_0x57bb4f):new Date(),_0x1d0170=_0x144cc7-_0x1978c3;if(_0x1d0170<0x0)return'0s';const _0x3428ef=Math['floor'](_0x1d0170/0x3e8),_0x141ee2=Math['floor'](_0x3428ef/0x3c),_0x45474d=Math['floor'](_0x141ee2/0x3c),_0x4e1e8c=Math['floor'](_0x45474d/0x18);if(_0x3428ef<0x3c)return _0x3428ef+'s';if(_0x141ee2<0x3c)return _0x141ee2+'m\x20'+_0x3428ef%0x3c+'s';if(_0x45474d<0x18)return _0x45474d+'h\x20'+_0x141ee2%0x3c+'m\x20'+_0x3428ef%0x3c+'s';return _0x4e1e8c+'d\x20'+_0x45474d%0x18+'h\x20'+_0x141ee2%0x3c+'m';},'renderMarkdown'(_0x51bc8b,_0x3e2a78={}){if(!_0x51bc8b)return'';_0x51bc8b=this['rewriteAttachmentLinks'](_0x51bc8b,_0x3e2a78),_0x51bc8b=this['rewriteColorSyntax'](_0x51bc8b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x51bc8b);}catch(_0x22ef18){return console['error']('Markdown\x20parsing\x20error:',_0x22ef18),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);}},'rewriteAttachmentLinks'(_0x3d8c09,_0xe48a82={}){const _0x556d6f=typeof _0xe48a82['resolveAttachmentUrl']==='function'?_0xe48a82['resolveAttachmentUrl']:_0xe48a82['taskId']?_0xc0ce2=>API_BASE+'/tasks/'+_0xe48a82['taskId']+'/attachments/'+encodeURIComponent(_0xc0ce2):null;if(!_0x556d6f)return _0x3d8c09;return String(_0x3d8c09)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3048fb,_0x1a20c9)=>{const _0x2053ed=String(_0x1a20c9||'')['trim']();if(!_0x2053ed)return _0x3048fb;let _0x4d39f1=_0x2053ed;try{_0x4d39f1=decodeURIComponent(_0x2053ed);}catch{}const _0x5cd248=_0x556d6f(_0x4d39f1);if(!_0x5cd248)return _0x3048fb;return']('+_0x5cd248+')';});},'rewriteColorSyntax'(_0x215744){if(!_0x215744)return _0x215744;return String(_0x215744)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x298d03,_0x595855,_0x2c7979)=>{const _0x53680b=this['rewriteColorSyntax'](_0x2c7979);return'<span\x20style=\x22color:\x20'+_0x595855+'\x22>'+_0x53680b+'</span>';});},'renderMarkdownFallback'(_0x324140,_0x84097={}){if(!_0x324140)return'';_0x324140=_0x324140['replace'](/\r\n/g,'\x0a'),_0x324140=_0x324140['replace'](/\r/g,'\x0a'),_0x324140=this['rewriteAttachmentLinks'](_0x324140,_0x84097);let _0x3cd279=this['escapeHtml'](_0x324140);return _0x3cd279=_0x3cd279['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3cd279=_0x3cd279['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3cd279=_0x3cd279['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3cd279=_0x3cd279['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3cd279=_0x3cd279['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3cd279=_0x3cd279['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3cd279=_0x3cd279['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3cd279=_0x3cd279['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3cd279=_0x3cd279['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3cd279=_0x3cd279['replace'](/\n\n/g,'</p><p>'),_0x3cd279=_0x3cd279['replace'](/\n/g,'<br>'),'<p>'+_0x3cd279+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x16cf36=new Uint8Array(0x10);crypto['getRandomValues'](_0x16cf36),_0x16cf36[0x6]=_0x16cf36[0x6]&0xf|0x40,_0x16cf36[0x8]=_0x16cf36[0x8]&0x3f|0x80;const _0x33cb09=Array['from'](_0x16cf36,_0x288a0b=>_0x288a0b['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x33cb09['slice'](0x0,0x8)+'-'+_0x33cb09['slice'](0x8,0xc)+'-'+_0x33cb09['slice'](0xc,0x10)+'-'+_0x33cb09['slice'](0x10,0x14)+'-'+_0x33cb09['slice'](0x14);}};export class CustomSelect{constructor(_0x1f59b8,_0x4dc364={}){this['nativeSelect']=_0x1f59b8,this['options']=_0x4dc364,this['isOpen']=![],this['selectedValue']=_0x1f59b8['value']||'',this['searchable']=_0x4dc364['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5b475c=document['createElement']('div');_0x5b475c['className']='custom-select';const _0x51fcdc=document['createElement']('div');_0x51fcdc['className']='custom-select-trigger',_0x51fcdc['setAttribute']('tabindex','0'),_0x51fcdc['setAttribute']('role','button'),_0x51fcdc['setAttribute']('aria-haspopup','listbox');const _0x3269ab=document['createElement']('span');_0x3269ab['className']='custom-select-trigger-text';const _0x3abb98=document['createElement']('span');_0x3abb98['className']='custom-select-arrow',_0x3abb98['textContent']='▼',_0x51fcdc['appendChild'](_0x3269ab),_0x51fcdc['appendChild'](_0x3abb98);const _0x414efa=document['createElement']('div');_0x414efa['className']='custom-select-dropdown',_0x414efa['setAttribute']('role','listbox');if(this['searchable']){const _0x1ace7e=document['createElement']('div');_0x1ace7e['className']='custom-select-search';const _0x2f1ffe=document['createElement']('input');_0x2f1ffe['type']='text',_0x2f1ffe['className']='custom-select-search-input',_0x2f1ffe['placeholder']='Type\x20to\x20search...',_0x2f1ffe['setAttribute']('aria-label','Search\x20options'),_0x2f1ffe['addEventListener']('input',_0x1908bb=>{this['searchQuery']=_0x1908bb['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2f1ffe['addEventListener']('keydown',_0x47334c=>{if(_0x47334c['key']==='Escape')_0x47334c['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x47334c['key']==='Enter'){_0x47334c['preventDefault'](),_0x47334c['stopPropagation']();const _0x370530=_0x414efa['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x370530){const _0x306d4a=_0x370530['getAttribute']('data-value');this['select'](_0x306d4a);}}}}),_0x1ace7e['appendChild'](_0x2f1ffe),_0x414efa['appendChild'](_0x1ace7e),this['searchInput']=_0x2f1ffe;}const _0x39a390=document['createElement']('div');_0x39a390['className']='custom-select-options',_0x414efa['appendChild'](_0x39a390),_0x5b475c['appendChild'](_0x51fcdc),_0x5b475c['appendChild'](_0x414efa),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5b475c,this['nativeSelect']),this['wrapper']=_0x5b475c,this['trigger']=_0x51fcdc,this['triggerText']=_0x3269ab,this['dropdown']=_0x414efa,this['optionsContainer']=_0x39a390,_0x51fcdc['addEventListener']('click',()=>this['toggle']()),_0x51fcdc['addEventListener']('keydown',_0x2bafb7=>this['handleKeydown'](_0x2bafb7)),document['addEventListener']('click',_0x36edc8=>{!_0x5b475c['contains'](_0x36edc8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x38704f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x38704f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x3c64ed=new MutationObserver(()=>{this['updateDisabledState']();});_0x3c64ed['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x48d08e=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x48d08e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3afd3e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3afd3e),this['trigger']['setAttribute']('aria-disabled',_0x3afd3e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3afd3e?'-1':'0'),_0x3afd3e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x26bbf8=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ab1a7=_0x26bbf8['filter'](_0x2cd39c=>!_0x2cd39c['disabled']&&!_0x2cd39c['hidden']);_0x26bbf8['forEach']((_0x45a180,_0x441971)=>{const _0x509a6e=document['createElement']('div');_0x509a6e['className']='custom-select-option',_0x509a6e['textContent']=_0x45a180['textContent'],_0x509a6e['setAttribute']('data-value',_0x45a180['value']),_0x509a6e['setAttribute']('data-index',_0x441971),_0x509a6e['setAttribute']('role','option'),_0x45a180['disabled']?_0x509a6e['classList']['add']('disabled'):_0x509a6e['addEventListener']('click',()=>this['select'](_0x45a180['value'])),_0x45a180['value']===this['selectedValue']&&_0x509a6e['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x509a6e),this['allOptions']['push']({'element':_0x509a6e,'text':_0x45a180['textContent']['toLowerCase'](),'value':_0x45a180['value'],'disabled':_0x45a180['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3270c7=this['searchInput']['parentElement'];_0x1ab1a7['length']>0x3?_0x3270c7['style']['display']='':_0x3270c7['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2d9734=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4cb21a=>{if(!_0x2d9734||_0x4cb21a['disabled'])_0x4cb21a['element']['style']['display']='';else{const _0x3407aa=_0x4cb21a['text']['includes'](_0x2d9734);_0x4cb21a['element']['style']['display']=_0x3407aa?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x334609){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x334609,this['nativeSelect']['value']=_0x334609;const _0x3af17c=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3af17c),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x49285b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x49285b&&(this['triggerText']['textContent']=_0x49285b['textContent'],_0x49285b['disabled']||_0x49285b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x6940b5=>{_0x6940b5['getAttribute']('data-value')===this['selectedValue']?_0x6940b5['classList']['add']('selected'):_0x6940b5['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 _0x499972=window['getComputedStyle'](this['dropdown']);if(_0x499972['position']==='fixed'){const _0x2513e3=this['trigger']['getBoundingClientRect'](),_0x5d3a15=parseInt(_0x499972['maxHeight'])||0xc8,_0xcc3535=window['innerHeight'],_0x4049ed=_0xcc3535-_0x2513e3['bottom'],_0x19aee5=_0x2513e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x19d9b9;_0x4049ed<_0x5d3a15&&_0x19aee5>_0x4049ed?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xcc3535-_0x2513e3['top']+'px',_0x19d9b9=Math['min'](_0x5d3a15,_0x19aee5-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2513e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x19d9b9=Math['min'](_0x5d3a15,_0x4049ed-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px');if(this['optionsContainer']){let _0x1ec729=_0x19d9b9;if(this['searchInput']){const _0x4e4703=this['searchInput']['parentElement'];_0x4e4703&&(_0x1ec729-=_0x4e4703['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ec729)+'px';}this['dropdown']['style']['left']=_0x2513e3['left']+'px',this['dropdown']['style']['width']=_0x2513e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x12eaca=this['searchInput']['parentElement'];_0x12eaca&&_0x12eaca['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'](_0x3b111a){if(this['nativeSelect']['disabled'])return;if(_0x3b111a['key']==='Enter'||_0x3b111a['key']==='\x20')_0x3b111a['preventDefault'](),this['toggle']();else _0x3b111a['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xb2f5e3='\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',_0xb2f5e3),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4f1d53=document['getElementById']('confirm-dialog-close'),_0x8809c=document['getElementById']('confirm-dialog-cancel'),_0x4c817e=document['getElementById']('confirm-dialog-confirm'),_0x522254=this['_modal']['querySelector']('.modal-overlay');_0x4f1d53['addEventListener']('click',()=>this['_resolve'](![])),_0x8809c['addEventListener']('click',()=>this['_resolve'](![])),_0x4c817e['addEventListener']('click',()=>this['_resolve'](!![])),_0x522254['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1dcdb3=>{if(_0x1dcdb3['key']==='Escape')_0x1dcdb3['preventDefault'](),this['_resolve'](![]);else _0x1dcdb3['key']==='Enter'&&(_0x1dcdb3['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x3adf49,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5eb7e2=>{this['_resolvePromise']=_0x5eb7e2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x3adf49;const _0x52b052=document['getElementById']('confirm-dialog-cancel'),_0x2bbb27=document['getElementById']('confirm-dialog-confirm');_0x52b052['textContent']=cancelText,_0x2bbb27['textContent']=confirmText,_0x2bbb27['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x2bbb27['focus']();});},'_resolve'(_0x25d6ea){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x25d6ea),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4d4fc9,_0x35030c={}){this['container']=_0x4d4fc9,this['options']={'placeholder':_0x35030c['placeholder']||'Type\x20to\x20search...','maxItems':_0x35030c['maxItems']||0x64,'loadItems':_0x35030c['loadItems']||(async()=>[]),'renderItem':_0x35030c['renderItem']||(_0x27fc4e=>({'primary':String(_0x27fc4e),'secondary':''})),'onSelect':_0x35030c['onSelect']||(()=>{}),'filterItems':_0x35030c['filterItems']||null,'getItemValue':_0x35030c['getItemValue']||(_0x1e1c6c=>_0x1e1c6c),'sortItems':_0x35030c['sortItems']||null,'debounceMs':_0x35030c['debounceMs']||0xc8,'minCharsForSearch':_0x35030c['minCharsForSearch']||0x0,'emptyMessage':_0x35030c['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x35030c['loadingMessage']||'Loading...','preload':_0x35030c['preload']!==![],'searchMode':_0x35030c['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',_0x10e996=>this['onBlur'](_0x10e996)),this['input']['addEventListener']('input',_0x1f3bc2=>this['onInput'](_0x1f3bc2)),this['input']['addEventListener']('keydown',_0x144779=>this['onKeydown'](_0x144779)),this['clearBtn']['addEventListener']('mousedown',_0x483e51=>{_0x483e51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x75f6c1=>{_0x75f6c1['preventDefault']();}),document['addEventListener']('click',_0x1d9247=>{!this['wrapper']['contains'](_0x1d9247['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(_0x370961){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x370961);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2bbf11){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x422f2f){const _0x2f776e=_0x422f2f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2f776e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2f776e):this['loadAndShow'](_0x2f776e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2bcc0e){switch(_0x2bcc0e['key']){case'ArrowDown':_0x2bcc0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2bcc0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2bcc0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2bcc0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x3228b5){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x47426e=this['selectedIndex']+_0x3228b5;if(_0x47426e>=0x0&&_0x47426e<this['filteredItems']['length']){this['selectedIndex']=_0x47426e,this['updateSelectionHighlight']();const _0x2c8307=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c8307[this['selectedIndex']]&&_0x2c8307[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x90a955=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x90a955['forEach']((_0x44b2f3,_0x5bee86)=>{_0x44b2f3['classList']['toggle']('keyboard-selected',_0x5bee86===this['selectedIndex']);});}async['loadAndShow'](_0x14674c){this['showLoading']();try{const _0x371d61=await this['options']['loadItems'](_0x14674c);if(this['options']['searchMode']==='server'){let _0x13fd17=_0x371d61;this['options']['sortItems']&&(_0x13fd17=this['options']['sortItems']([..._0x371d61]));this['filteredItems']=_0x13fd17;const _0x5b0be8=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b0be8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b0be8),this['open']();}else this['allItems']=_0x371d61,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14674c);}catch(_0x515ea8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x515ea8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1912f5){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1912f5):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x9aa9f5=this['filteredItems']['length']>=this['options']['maxItems'];_0x9aa9f5&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x9aa9f5),this['open']();}['renderItems'](_0x1c7f9d){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']((_0x50f321,_0x440aa5)=>{const _0x3b1149=document['createElement']('div');_0x3b1149['className']='autocomplete-select-item',_0x3b1149['setAttribute']('role','option'),_0x3b1149['setAttribute']('data-index',_0x440aa5);const _0x45c743=this['options']['renderItem'](_0x50f321);let _0x450b75='';_0x45c743['icon']&&(_0x450b75='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x45c743['iconClass']||'')+'\x22>'+_0x45c743['icon']+'</span>'),_0x3b1149['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x450b75+'\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'](_0x45c743['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x45c743['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x45c743['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3b1149['addEventListener']('click',()=>{this['selectItem'](_0x50f321);}),_0x3b1149['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x440aa5,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3b1149);}),_0x1c7f9d?(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'](_0x1c376e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1c376e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x84fb6e){this['selectedItem']=_0x84fb6e;const _0x12b9ce=this['options']['renderItem'](_0x84fb6e);this['input']['value']=_0x12b9ce['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x84fb6e);}['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'](_0x53fa29){if(_0x53fa29){this['selectedItem']=_0x53fa29;const _0x5b2de2=this['options']['renderItem'](_0x53fa29);this['input']['value']=_0x5b2de2['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1bf0df){this['allItems']=_0x1bf0df,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'](_0x2b2f77){this['input']['placeholder']=_0x2b2f77;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1f8adc=null){const _0x37f8bf=document['getElementById']('admin-menu-container'),_0x13821e=document['getElementById']('admin-menu-btn'),_0x3a21c0=document['getElementById']('admin-menu');if(!_0x37f8bf||!_0x13821e||!_0x3a21c0)return;try{!_0x1f8adc&&(_0x1f8adc=await API['getCurrentUser']());if(_0x1f8adc){const _0x46ce5c=window['Permissions'],_0x310be1=_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:manage')||_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')||_0x46ce5c['hasTeamPermission'](_0x1f8adc,'teams:manage')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:view_details');if(!_0x310be1)return;_0x37f8bf['hidden']=![];if(!_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')){const _0x455832=_0x3a21c0['querySelectorAll']('.admin-menu-item');_0x455832['forEach'](_0x188c53=>{const _0x134b04=_0x188c53['querySelector']('.option-text')?.['textContent']?.['trim']();_0x134b04==='Users'&&!_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')&&(_0x188c53['hidden']=!![]),_0x134b04==='Skills'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Settings'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Administration'&&(_0x188c53['hidden']=!![]),_0x134b04==='Git\x20History'&&(_0x188c53['hidden']=!![]),_0x134b04==='Roles'&&(_0x188c53['hidden']=!![]);});}_0x13821e['addEventListener']('click',_0x4e18b1=>{_0x4e18b1['stopPropagation']();const _0x173464=document['getElementById']('actions-menu');if(_0x173464)_0x173464['hidden']=!![];_0x3a21c0['hidden']=!_0x3a21c0['hidden'];}),document['addEventListener']('click',_0x244c27=>{!_0x3a21c0['hidden']&&!_0x13821e['contains'](_0x244c27['target'])&&!_0x3a21c0['contains'](_0x244c27['target'])&&(_0x3a21c0['hidden']=!![]);}),document['addEventListener']('keydown',_0x4919e4=>{_0x4919e4['key']==='Escape'&&!_0x3a21c0['hidden']&&(_0x3a21c0['hidden']=!![]);});}}catch(_0x545e7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x545e7f['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|
|
1
|
+
function detectApiBase(){const _0x3cf725=window['location']['pathname'],_0x599206=_0x3cf725['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x599206)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x599206[0x1]),_0x599206[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x2a78fa={}){const _0x26d2f9=new URLSearchParams();_0x2a78fa['userId']&&_0x26d2f9['set']('userId',String(_0x2a78fa['userId']));_0x2a78fa['automation']&&_0x26d2f9['set']('automation',String(_0x2a78fa['automation']));const _0x40dae6=API_BASE+'/tasks/stats'+(_0x26d2f9['toString']()?'?'+_0x26d2f9['toString']():''),_0x5e164b=await fetch(_0x40dae6);if(!_0x5e164b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5e164b['statusText']);return await _0x5e164b['json']();},async 'getTasks'(_0x493bf7={}){const _0x230107=new URLSearchParams();_0x493bf7['status']&&_0x230107['set']('status',String(_0x493bf7['status']));_0x493bf7['environment']&&_0x230107['set']('environment',String(_0x493bf7['environment']));_0x493bf7['automation']&&_0x230107['set']('automation',String(_0x493bf7['automation']));if(_0x493bf7['include']){const _0xa7bc56=Array['isArray'](_0x493bf7['include'])?_0x493bf7['include']['join'](','):String(_0x493bf7['include']);_0xa7bc56&&_0x230107['set']('include',_0xa7bc56);}_0x493bf7['filter']&&_0x230107['set']('filter',String(_0x493bf7['filter']));_0x493bf7['page']&&_0x230107['set']('page',String(_0x493bf7['page']));_0x493bf7['limit']&&_0x230107['set']('limit',String(_0x493bf7['limit']));_0x493bf7['userId']&&_0x230107['set']('userId',String(_0x493bf7['userId']));_0x493bf7['search']&&_0x230107['set']('search',String(_0x493bf7['search']));_0x493bf7['includeChildTasks']&&_0x230107['set']('includeChildTasks','true');const _0x52be0c=API_BASE+'/tasks'+(_0x230107['toString']()?'?'+_0x230107['toString']():''),_0x117401=await fetch(_0x52be0c);if(!_0x117401['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x117401['statusText']);return await _0x117401['json']();},async 'getAutomations'(_0x9ec220={}){const _0x40887c=new URLSearchParams();_0x9ec220['environment']&&_0x40887c['set']('environment',String(_0x9ec220['environment']));const _0x35a2fe=await fetch(API_BASE+'/api/automations'+(_0x40887c['toString']()?'?'+_0x40887c['toString']():''));if(!_0x35a2fe['ok']){const _0x4b3391=await _0x35a2fe['json']()['catch'](()=>({}));throw new Error(_0x4b3391['message']||_0x4b3391['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x35a2fe['statusText']);}return await _0x35a2fe['json']();},async 'getAutomation'(_0x28f51a){const _0x3ddc6e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x28f51a));if(!_0x3ddc6e['ok']){const _0x390084=await _0x3ddc6e['json']()['catch'](()=>({}));throw new Error(_0x390084['message']||_0x390084['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3ddc6e['statusText']);}return await _0x3ddc6e['json']();},async 'createAutomation'(_0x18ce27){const _0x3c6425=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ce27||{})});if(!_0x3c6425['ok']){const _0x3c430e=await _0x3c6425['json']()['catch'](()=>({}));throw new Error(_0x3c430e['message']||_0x3c430e['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3c6425['statusText']);}return await _0x3c6425['json']();},async 'updateAutomation'(_0x7fa90e,_0x3dc0c4){const _0x185ff4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7fa90e),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3dc0c4||{})});if(!_0x185ff4['ok']){const _0x123008=await _0x185ff4['json']()['catch'](()=>({}));throw new Error(_0x123008['message']||_0x123008['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x185ff4['statusText']);}return await _0x185ff4['json']();},async 'deleteAutomation'(_0x11212e){const _0x331cfb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x11212e),{'method':'DELETE'});if(!_0x331cfb['ok']){const _0x3e9eae=await _0x331cfb['json']()['catch'](()=>({}));throw new Error(_0x3e9eae['message']||_0x3e9eae['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x331cfb['statusText']);}return await _0x331cfb['json']();},async 'triggerAutomation'(_0x1f69ed){const _0x3ef438=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f69ed)+'/trigger',{'method':'POST'});if(!_0x3ef438['ok']){const _0x2ac5ac=await _0x3ef438['json']()['catch'](()=>({}));throw new Error(_0x2ac5ac['message']||_0x2ac5ac['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3ef438['statusText']);}return await _0x3ef438['json']();},async 'setAutomationEnabled'(_0x1d31c2,_0x4a6ea4){const _0x6d3f59=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d31c2)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x4a6ea4})});if(!_0x6d3f59['ok']){const _0x1bb971=await _0x6d3f59['json']()['catch'](()=>({}));throw new Error(_0x1bb971['message']||_0x1bb971['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x6d3f59['statusText']);}return await _0x6d3f59['json']();},async 'getAutomationHistory'(_0x330678,_0x209182=0x32){const _0x2f3d60=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x330678)+'/history?limit='+encodeURIComponent(String(_0x209182)));if(!_0x2f3d60['ok']){const _0x12be40=await _0x2f3d60['json']()['catch'](()=>({}));throw new Error(_0x12be40['message']||_0x12be40['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x2f3d60['statusText']);}return await _0x2f3d60['json']();},async 'getTask'(_0x5b874e,_0x590c14={}){const _0x1c1efd=new URLSearchParams();if(_0x590c14['include']){const _0x2522f3=Array['isArray'](_0x590c14['include'])?_0x590c14['include']['join'](','):String(_0x590c14['include']);if(_0x2522f3)_0x1c1efd['set']('include',_0x2522f3);}const _0x1b9965=await fetch(API_BASE+'/tasks/'+_0x5b874e+(_0x1c1efd['toString']()?'?'+_0x1c1efd['toString']():''));if(!_0x1b9965['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1b9965['statusText']);return await _0x1b9965['json']();},async 'getTaskResults'(_0x2483e5){const _0x1a66d0=await fetch(API_BASE+'/tasks/'+_0x2483e5+'/results');if(!_0x1a66d0['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x1a66d0['statusText']);return await _0x1a66d0['json']();},async 'getTaskPatches'(_0x5c4a0c){const _0x48e501=await fetch(API_BASE+'/tasks/'+_0x5c4a0c+'/patches');if(!_0x48e501['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x48e501['statusText']);return await _0x48e501['json']();},async 'getTaskAttachments'(_0x5723d8){const _0x1e9a8d=await fetch(API_BASE+'/tasks/'+_0x5723d8+'/attachments');if(!_0x1e9a8d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1e9a8d['statusText']);return await _0x1e9a8d['json']();},async 'uploadAttachments'(_0x120561,_0x1b9c13){const _0x11ac9b=new FormData();for(const _0x4ff65e of _0x1b9c13){_0x11ac9b['append']('attachments',_0x4ff65e);}const _0x33af24=await fetch(API_BASE+'/tasks/'+_0x120561+'/attachments',{'method':'POST','body':_0x11ac9b});if(!_0x33af24['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x33af24['statusText']);return await _0x33af24['json']();},async 'isAINameGenerationAvailable'(){try{const _0x2ccd00=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x2ccd00['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x2ccd00['json']();}catch(_0x3fac95){return{'available':![],'reason':_0x3fac95['message']};}},async 'generateTaskName'(_0x588016){try{const _0x40354b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x588016})});return await _0x40354b['json']();}catch(_0x3deb32){return{'success':![],'error':_0x3deb32['message']};}},async 'createTask'(_0x55b290){let _0x46a36d,_0x146983={};if(_0x55b290['files']&&_0x55b290['files']['length']>0x0){const _0x393182=new FormData();for(const [_0x50e4a2,_0x11259c]of Object['entries'](_0x55b290)){if(_0x50e4a2!=='files'){if(_0x11259c==null)continue;typeof _0x11259c==='object'?_0x393182['append'](_0x50e4a2,JSON['stringify'](_0x11259c)):_0x393182['append'](_0x50e4a2,String(_0x11259c));}}for(const _0x59c05d of _0x55b290['files']){_0x393182['append']('attachments',_0x59c05d);}_0x46a36d=_0x393182;}else _0x146983['Content-Type']='application/json',_0x46a36d=JSON['stringify'](_0x55b290);const _0x3af45b=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x146983,'body':_0x46a36d});if(!_0x3af45b['ok']){const _0x50dcfc=await _0x3af45b['json'](),_0x204262=new Error(_0x50dcfc['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3af45b['statusText']),{message:_0x3e646c,..._0x1a578d}=_0x50dcfc;Object['assign'](_0x204262,_0x1a578d);throw _0x204262;}return await _0x3af45b['json']();},async 'createTestTask'(_0x44bc25){const _0x3c922f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44bc25)});if(!_0x3c922f['ok']){const _0x59c3f0=await _0x3c922f['json']();throw new Error(_0x59c3f0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c922f['statusText']);}return await _0x3c922f['json']();},async 'createEphemeralTest'(_0x551218){const _0x3a14a6=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x551218)});if(!_0x3a14a6['ok']){const _0x56db92=await _0x3a14a6['json']();throw new Error(_0x56db92['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3a14a6['statusText']);}return await _0x3a14a6['json']();},async 'createDeployTask'(_0x46ce22){const _0x3801fe=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46ce22)});if(!_0x3801fe['ok']){const _0x3fadae=await _0x3801fe['json']();throw new Error(_0x3fadae['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3801fe['statusText']);}return await _0x3801fe['json']();},async 'getEnvironments'(){const _0x3c78a9=await fetch(API_BASE+'/environments');if(!_0x3c78a9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3c78a9['statusText']);return await _0x3c78a9['json']();},async 'getEnvironment'(_0x5a7e48){const _0x14b3c2=await fetch(API_BASE+'/environments/'+_0x5a7e48);if(!_0x14b3c2['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x14b3c2['statusText']);return await _0x14b3c2['json']();},async 'getEnvironmentRepoHistory'(_0x1bf872,_0x199d40,_0xa369d4={}){if(!_0x1bf872||!_0x199d40)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xae5151=new URLSearchParams();if(_0xa369d4['limit'])_0xae5151['set']('limit',String(_0xa369d4['limit']));if(_0xa369d4['offset'])_0xae5151['set']('offset',String(_0xa369d4['offset']));if(_0xa369d4['search'])_0xae5151['set']('search',String(_0xa369d4['search']));if(_0xa369d4['branch'])_0xae5151['set']('branch',String(_0xa369d4['branch']));const _0xb04b65=API_BASE+'/environments/'+encodeURIComponent(_0x1bf872)+'/repos/'+encodeURIComponent(_0x199d40)+'/git/history',_0x245574=await fetch(''+_0xb04b65+(_0xae5151['toString']()?'?'+_0xae5151['toString']():''));if(!_0x245574['ok']){const _0x5830bb=await _0x245574['json']()['catch'](()=>({}));throw new Error(_0x5830bb['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x245574['statusText']);}return await _0x245574['json']();},async 'getEnvironmentRepoCommit'(_0x134eb1,_0x23d998,_0x325271){if(!_0x134eb1||!_0x23d998||!_0x325271)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21976c=API_BASE+'/environments/'+encodeURIComponent(_0x134eb1)+'/repos/'+encodeURIComponent(_0x23d998)+'/git/commits/'+encodeURIComponent(_0x325271),_0x32a18d=await fetch(_0x21976c);if(!_0x32a18d['ok']){const _0x259f71=await _0x32a18d['json']()['catch'](()=>({}));throw new Error(_0x259f71['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x32a18d['statusText']);}return await _0x32a18d['json']();},async 'getEnvironmentRepoBranches'(_0x18b54a,_0x54ab38){if(!_0x18b54a||!_0x54ab38)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x130ecb=API_BASE+'/environments/'+encodeURIComponent(_0x18b54a)+'/repos/'+encodeURIComponent(_0x54ab38)+'/git/branches',_0x801dc7=await fetch(_0x130ecb);if(!_0x801dc7['ok']){const _0x5bf7c8=await _0x801dc7['json']()['catch'](()=>({}));throw new Error(_0x5bf7c8['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x801dc7['statusText']);}return await _0x801dc7['json']();},async 'revertEnvironmentRepoCommit'(_0x4d28cb,_0x2a89d0,_0x5945be,_0x5b286e={}){if(!_0x4d28cb||!_0x2a89d0||!_0x5945be)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x49557a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4d28cb)+'/repos/'+encodeURIComponent(_0x2a89d0)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x5945be,..._0x5b286e})});if(!_0x49557a['ok']){const _0x50fa24=await _0x49557a['json']()['catch'](()=>({}));throw new Error(_0x50fa24['message']||_0x50fa24['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x49557a['statusText']);}return await _0x49557a['json']();},async 'getTemplates'(_0x222585={}){const _0x429c07=new URLSearchParams();if(_0x222585['include']){const _0xa31d26=Array['isArray'](_0x222585['include'])?_0x222585['include']['join'](','):String(_0x222585['include']);if(_0xa31d26)_0x429c07['set']('include',_0xa31d26);}const _0x31541e=await fetch(API_BASE+'/templates'+(_0x429c07['toString']()?'?'+_0x429c07['toString']():''));if(!_0x31541e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x31541e['statusText']);return await _0x31541e['json']();},async 'getTemplatesForEnvironment'(_0x558e51,_0x1e2782={}){if(!_0x558e51)throw new Error('Environment\x20name\x20is\x20required');const _0x1b0afa=new URLSearchParams();if(_0x1e2782['include']){const _0x244f8c=Array['isArray'](_0x1e2782['include'])?_0x1e2782['include']['join'](','):String(_0x1e2782['include']);if(_0x244f8c)_0x1b0afa['set']('include',_0x244f8c);}const _0x2b361d=await fetch(API_BASE+'/templates/'+_0x558e51+(_0x1b0afa['toString']()?'?'+_0x1b0afa['toString']():''));if(!_0x2b361d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x558e51+':\x20'+_0x2b361d['statusText']);return await _0x2b361d['json']();},async 'getTemplate'(_0x497071,_0x1e4941,_0x52e211={}){if(!_0x497071||!_0x1e4941)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x550665=new URLSearchParams();if(_0x52e211['include']){const _0x7d9676=Array['isArray'](_0x52e211['include'])?_0x52e211['include']['join'](','):String(_0x52e211['include']);if(_0x7d9676)_0x550665['set']('include',_0x7d9676);}const _0x2f5831=await fetch(API_BASE+'/templates/'+_0x497071+'/'+_0x1e4941+(_0x550665['toString']()?'?'+_0x550665['toString']():''));if(!_0x2f5831['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2f5831['statusText']);return await _0x2f5831['json']();},async 'getTaskLogs'(_0x4c2d77,_0x338116={}){if(!_0x4c2d77)throw new Error('Task\x20ID\x20is\x20required');const _0x2edefd=new URLSearchParams();_0x338116['tail']&&_0x2edefd['set']('tail',String(_0x338116['tail']));const _0x781017=await fetch(API_BASE+'/tasks/'+_0x4c2d77+'/logs'+(_0x2edefd['toString']()?'?'+_0x2edefd['toString']():''));if(!_0x781017['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x781017['statusText']);return await _0x781017['text']();},async 'getContainers'(){const _0x1deb60=await fetch(API_BASE+'/containers');if(!_0x1deb60['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1deb60['statusText']);return await _0x1deb60['json']();},async 'getContainer'(_0x426ebf){const _0x1f7056=await fetch(API_BASE+'/containers/'+_0x426ebf);if(!_0x1f7056['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1f7056['statusText']);return await _0x1f7056['json']();},async 'startInteractiveContainer'(_0x13b626){const _0x185077=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13b626)});if(!_0x185077['ok']){const _0x21ef38=await _0x185077['json']()['catch'](()=>({}));throw new Error(_0x21ef38['message']||'Failed\x20to\x20start\x20container:\x20'+_0x185077['statusText']);}return await _0x185077['json']();},async 'startContainerCodeServer'(_0x2573dc,_0x232318={}){if(!_0x2573dc)throw new Error('Container\x20ID\x20is\x20required');const _0x5cc505=new URLSearchParams();_0x232318['theme']&&_0x5cc505['set']('theme',_0x232318['theme']);const _0xaf622a=await fetch(API_BASE+'/containers/'+_0x2573dc+'/code-server'+(_0x5cc505['toString']()?'?'+_0x5cc505['toString']():'')),_0x43f654=await _0xaf622a['json']()['catch'](()=>({}));if(!_0xaf622a['ok'])throw new Error(_0x43f654['message']||_0x43f654['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0xaf622a['statusText']);return _0x43f654;},async 'stopContainer'(_0x286d5f){const _0x55477c=await fetch(API_BASE+'/containers/'+_0x286d5f,{'method':'DELETE'});if(!_0x55477c['ok']){const _0x20937f=await _0x55477c['json']()['catch'](()=>({}));throw new Error(_0x20937f['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x55477c['statusText']);}return await _0x55477c['json']();},async 'stopTask'(_0x32cad8){if(!_0x32cad8)throw new Error('Task\x20ID\x20is\x20required');const _0x204c5c=await fetch(API_BASE+'/tasks/'+_0x32cad8+'/stop',{'method':'POST'});if(!_0x204c5c['ok']){const _0x50782e=await _0x204c5c['json']()['catch'](()=>({}));throw new Error(_0x50782e['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x204c5c['statusText']);}return await _0x204c5c['json']();},async 'interruptTask'(_0x27e2eb){if(!_0x27e2eb)throw new Error('Task\x20ID\x20is\x20required');const _0x50c14a=await fetch(API_BASE+'/tasks/'+_0x27e2eb+'/interrupt',{'method':'POST'});if(!_0x50c14a['ok']){const _0x4fc022=await _0x50c14a['json']()['catch'](()=>({}));throw new Error(_0x4fc022['error']||_0x4fc022['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x50c14a['statusText']);}return await _0x50c14a['json']();},async 'startTask'(_0x3d8360){if(!_0x3d8360)throw new Error('Task\x20ID\x20is\x20required');const _0x431129=await fetch(API_BASE+'/tasks/'+_0x3d8360+'/start',{'method':'POST'});if(!_0x431129['ok']){const _0x4321cc=await _0x431129['json']()['catch'](()=>({}));throw new Error(_0x4321cc['error']||'Failed\x20to\x20start\x20task:\x20'+_0x431129['statusText']);}return await _0x431129['json']();},async 'deleteTask'(_0x11af7f){if(!_0x11af7f)throw new Error('Task\x20ID\x20is\x20required');const _0x113253=await fetch(API_BASE+'/tasks/'+_0x11af7f,{'method':'DELETE'});if(!_0x113253['ok']){const _0x212e89=await _0x113253['json']()['catch'](()=>({}));throw new Error(_0x212e89['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x113253['statusText']);}return await _0x113253['json']();},async 'refreshTasksFromDisk'(){const _0x550980=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x550980['ok']){const _0xe7c612=await _0x550980['json']()['catch'](()=>({}));throw new Error(_0xe7c612['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x550980['statusText']);}return await _0x550980['json']();},async 'approveTask'(_0x20e537,_0x48347c={}){if(!_0x20e537)throw new Error('Task\x20ID\x20is\x20required');const _0x458e56={'commit_message':_0x48347c['commit_message']||'','pull':_0x48347c['pull']??![],'push':_0x48347c['push']??![],'conflict_strategy':_0x48347c['conflict_strategy']||'rebase'};_0x48347c['new_branch']&&(_0x458e56['new_branch']=_0x48347c['new_branch']);const _0x296163=await fetch(API_BASE+'/tasks/'+_0x20e537+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x458e56)});if(!_0x296163['ok']){const _0x21c1bc=await _0x296163['json']()['catch'](()=>({}));let _0x2c76a5=_0x21c1bc['error']||_0x21c1bc['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x296163['statusText'];if(_0x21c1bc['results']&&Array['isArray'](_0x21c1bc['results'])){const _0xc6d83a=_0x21c1bc['results']['filter'](_0x32a9e0=>!_0x32a9e0['success']&&_0x32a9e0['error']);_0xc6d83a['length']>0x0&&(_0x2c76a5=_0xc6d83a[0x0]['error']);}const _0x13978e=new Error(_0x2c76a5);_0x13978e['hasConflicts']=_0x21c1bc['results']?.['some'](_0x27a9d5=>_0x27a9d5['conflict'])||![];throw _0x13978e;}return await _0x296163['json']();},async 'getPullRequestInfo'(_0x380435){if(!_0x380435)throw new Error('Task\x20ID\x20is\x20required');const _0x4d78bb=await fetch(API_BASE+'/tasks/'+_0x380435+'/pull-request-info');if(!_0x4d78bb['ok']){const _0x49f6a0=await _0x4d78bb['json']()['catch'](()=>({}));throw new Error(_0x49f6a0['error']||_0x49f6a0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4d78bb['statusText']);}return await _0x4d78bb['json']();},async 'createPullRequests'(_0x399535,_0x308a46){if(!_0x399535)throw new Error('Task\x20ID\x20is\x20required');if(!_0x308a46||!Array['isArray'](_0x308a46))throw new Error('repos\x20array\x20is\x20required');const _0x5c88b4=await fetch(API_BASE+'/tasks/'+_0x399535+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x308a46})});if(!_0x5c88b4['ok']){const _0x390e15=await _0x5c88b4['json']()['catch'](()=>({}));let _0x5c9ca6=_0x390e15['error']||_0x390e15['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5c88b4['statusText'];if(_0x390e15['results']&&Array['isArray'](_0x390e15['results'])){const _0x396d42=_0x390e15['results']['filter'](_0x849e4=>!_0x849e4['success']&&_0x849e4['error']);_0x396d42['length']>0x0&&(_0x5c9ca6=_0x396d42[0x0]['error']);}throw new Error(_0x5c9ca6);}return await _0x5c88b4['json']();},async 'syncRepos'(_0x197422){if(!_0x197422)throw new Error('Task\x20ID\x20is\x20required');const _0x56b347=await fetch(API_BASE+'/tasks/'+_0x197422+'/sync-repos',{'method':'POST'});if(!_0x56b347['ok']){const _0x3a191f=await _0x56b347['json']()['catch'](()=>({}));throw new Error(_0x3a191f['error']||_0x3a191f['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x56b347['statusText']);}return await _0x56b347['json']();},async 'getIbmiSyncInfo'(_0x32a851){if(!_0x32a851)throw new Error('Task\x20ID\x20is\x20required');const _0x10f6a0=await fetch(API_BASE+'/tasks/'+_0x32a851+'/ibmi-sync-info');if(!_0x10f6a0['ok']){const _0x24e72d=await _0x10f6a0['json']()['catch'](()=>({}));throw new Error(_0x24e72d['error']||_0x24e72d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x10f6a0['json']();},async 'getSyncFiles'(_0x3eb3ba){if(!_0x3eb3ba)throw new Error('Task\x20ID\x20is\x20required');const _0x48371f=await fetch(API_BASE+'/tasks/'+_0x3eb3ba+'/sync-to-ibmi/files');if(!_0x48371f['ok']){const _0x5251f9=await _0x48371f['json']()['catch'](()=>({}));throw new Error(_0x5251f9['error']||_0x5251f9['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x48371f['json']();},async 'syncToIbmi'(_0x45001c,_0x3351db,_0x16dfd7=null,_0x3d123c=null,_0x12234b=null){if(!_0x45001c)throw new Error('Task\x20ID\x20is\x20required');const _0x2e5299={'library':_0x3351db};if(_0x16dfd7)_0x2e5299['user']=_0x16dfd7;if(_0x3d123c)_0x2e5299['password']=_0x3d123c;if(_0x12234b)_0x2e5299['files']=_0x12234b;const _0x3aff33=await fetch(API_BASE+'/tasks/'+_0x45001c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e5299)});if(!_0x3aff33['ok']){const _0x51f489=await _0x3aff33['json']()['catch'](()=>({}));throw new Error(_0x51f489['error']||_0x51f489['message']||'Sync\x20failed');}return await _0x3aff33['json']();},async 'getIbmiSyncLog'(_0x537e1c){if(!_0x537e1c)throw new Error('Task\x20ID\x20is\x20required');const _0x12ff54=await fetch(API_BASE+'/tasks/'+_0x537e1c+'/ibmi-sync-log');if(!_0x12ff54['ok']){const _0x5ac2fb=await _0x12ff54['json']()['catch'](()=>({}));throw new Error(_0x5ac2fb['error']||_0x5ac2fb['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x12ff54['json']();},async 'pullChanges'(_0x1a0b22){if(!_0x1a0b22)throw new Error('Task\x20ID\x20is\x20required');const _0x4d03cd=await fetch(API_BASE+'/tasks/'+_0x1a0b22+'/pull-changes',{'method':'POST'});if(!_0x4d03cd['ok']){const _0x25b1f0=await _0x4d03cd['json']()['catch'](()=>({}));throw new Error(_0x25b1f0['error']||_0x25b1f0['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4d03cd['statusText']);}return await _0x4d03cd['json']();},async 'readFile'(_0x136eb7,_0x28672f){if(!_0x136eb7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28672f)throw new Error('File\x20path\x20is\x20required');const _0x2eed69=await fetch(API_BASE+'/tasks/'+_0x136eb7+'/files?path='+encodeURIComponent(_0x28672f));if(!_0x2eed69['ok']){const _0x13f526=await _0x2eed69['json']()['catch'](()=>({}));throw new Error(_0x13f526['error']||_0x13f526['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2eed69['statusText']);}return await _0x2eed69['json']();},'getTaskFileDownloadUrl'(_0x242727,_0x5f1413){if(!_0x242727)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5f1413)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x242727+'/files/download?path='+encodeURIComponent(_0x5f1413);},async 'writeFile'(_0x369780,_0x1c6c1d,_0x1392a5){if(!_0x369780)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c6c1d)throw new Error('File\x20path\x20is\x20required');if(_0x1392a5===undefined)throw new Error('Content\x20is\x20required');const _0x5790d6=await fetch(API_BASE+'/tasks/'+_0x369780+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1c6c1d,'content':_0x1392a5})});if(!_0x5790d6['ok']){const _0x805679=await _0x5790d6['json']()['catch'](()=>({}));throw new Error(_0x805679['error']||_0x805679['message']||'Failed\x20to\x20write\x20file:\x20'+_0x5790d6['statusText']);}return await _0x5790d6['json']();},async 'uploadTaskFiles'(_0x490017,_0xe39deb,_0x589741){if(!_0x490017)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe39deb)throw new Error('Target\x20directory\x20is\x20required');if(!_0x589741||_0x589741['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x356912=new FormData();_0x356912['append']('targetDir',_0xe39deb);for(const _0x98d20a of _0x589741){_0x356912['append']('files',_0x98d20a,_0x98d20a['name']);}const _0x1f7e23=await fetch(API_BASE+'/tasks/'+_0x490017+'/files/upload',{'method':'POST','body':_0x356912});if(!_0x1f7e23['ok']){const _0x36a3b3=await _0x1f7e23['json']()['catch'](()=>({}));throw new Error(_0x36a3b3['error']||_0x36a3b3['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1f7e23['statusText']);}return await _0x1f7e23['json']();},async 'createDirectory'(_0x370bff,_0x50a012){if(!_0x370bff)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50a012)throw new Error('Directory\x20path\x20is\x20required');const _0x7927d0=await fetch(API_BASE+'/tasks/'+_0x370bff+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x50a012})});if(!_0x7927d0['ok']){const _0x2d0c9f=await _0x7927d0['json']()['catch'](()=>({}));throw new Error(_0x2d0c9f['error']||_0x2d0c9f['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x7927d0['statusText']);}return await _0x7927d0['json']();},async 'renamePath'(_0x21af16,_0xe56c,_0x516436){if(!_0x21af16)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe56c)throw new Error('Source\x20path\x20is\x20required');if(!_0x516436)throw new Error('Destination\x20path\x20is\x20required');const _0x10e18a=await fetch(API_BASE+'/tasks/'+_0x21af16+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0xe56c,'newPath':_0x516436})});if(!_0x10e18a['ok']){const _0x558424=await _0x10e18a['json']()['catch'](()=>({}));throw new Error(_0x558424['error']||_0x558424['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x10e18a['statusText']);}return await _0x10e18a['json']();},async 'deleteFile'(_0x2207b6,_0x5ac070){if(!_0x2207b6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ac070)throw new Error('File\x20path\x20is\x20required');const _0x93f415=await fetch(API_BASE+'/tasks/'+_0x2207b6+'/files?path='+encodeURIComponent(_0x5ac070),{'method':'DELETE'});if(!_0x93f415['ok']){const _0x19ad17=await _0x93f415['json']()['catch'](()=>({}));throw new Error(_0x19ad17['error']||_0x19ad17['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x93f415['statusText']);}return await _0x93f415['json']();},async 'deleteDirectory'(_0x595d93,_0x23d0b5){if(!_0x595d93)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23d0b5)throw new Error('Directory\x20path\x20is\x20required');const _0x4d3523=await fetch(API_BASE+'/tasks/'+_0x595d93+'/files/directory?path='+encodeURIComponent(_0x23d0b5),{'method':'DELETE'});if(!_0x4d3523['ok']){const _0x1d59be=await _0x4d3523['json']()['catch'](()=>({}));throw new Error(_0x1d59be['error']||_0x1d59be['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4d3523['statusText']);}return await _0x4d3523['json']();},async 'discardFile'(_0x51e38f,_0x545875,_0x52d636){if(!_0x51e38f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x545875)throw new Error('File\x20path\x20is\x20required');if(!_0x52d636)throw new Error('Repository\x20path\x20is\x20required');const _0x12ee6e=await fetch(API_BASE+'/tasks/'+_0x51e38f+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x545875,'repoPath':_0x52d636})});if(!_0x12ee6e['ok']){const _0x3699d4=await _0x12ee6e['json']()['catch'](()=>({}));throw new Error(_0x3699d4['error']||_0x3699d4['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x12ee6e['statusText']);}return await _0x12ee6e['json']();},async 'followUpTask'(_0xc67766,_0x288a92={}){if(!_0xc67766)throw new Error('Task\x20ID\x20is\x20required');if(!_0x288a92['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x352351,_0xb06d1b={};if(_0x288a92['files']&&_0x288a92['files']['length']>0x0){const _0x4a1448=new FormData();_0x4a1448['append']('instructions',_0x288a92['instructions']);for(const _0x3e4a16 of _0x288a92['files']){_0x4a1448['append']('attachments',_0x3e4a16);}_0x352351=_0x4a1448;}else _0xb06d1b['Content-Type']='application/json',_0x352351=JSON['stringify']({'instructions':_0x288a92['instructions']});const _0x29e94c=await fetch(API_BASE+'/tasks/'+_0xc67766+'/follow-up',{'method':'POST','headers':_0xb06d1b,'body':_0x352351});if(!_0x29e94c['ok']){const _0x25e3b8=await _0x29e94c['json']()['catch'](()=>({}));throw new Error(_0x25e3b8['error']||_0x25e3b8['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x29e94c['statusText']);}return await _0x29e94c['json']();},async 'getTaskRewindPoints'(_0x411d38){if(!_0x411d38)throw new Error('Task\x20ID\x20is\x20required');const _0x1b07ee=await fetch(API_BASE+'/tasks/'+_0x411d38+'/rewind-points');if(!_0x1b07ee['ok']){const _0x264c5a=await _0x1b07ee['json']()['catch'](()=>({}));throw new Error(_0x264c5a['error']||_0x264c5a['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1b07ee['statusText']);}return await _0x1b07ee['json']();},async 'rewindTask'(_0x1d36f7,_0x166ab8={}){if(!_0x1d36f7)throw new Error('Task\x20ID\x20is\x20required');const _0x3064d8=Number['isInteger'](_0x166ab8['targetFollowUpCount'])?_0x166ab8['targetFollowUpCount']:0x0,_0x3d02ed={'targetFollowUpCount':_0x3064d8};typeof _0x166ab8['instructions']==='string'&&_0x166ab8['instructions']['trim']()&&(_0x3d02ed['instructions']=_0x166ab8['instructions']['trim']());typeof _0x166ab8['rewindFiles']==='boolean'&&(_0x3d02ed['rewindFiles']=_0x166ab8['rewindFiles']);const _0x365313=await fetch(API_BASE+'/tasks/'+_0x1d36f7+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d02ed)});if(!_0x365313['ok']){const _0x183a02=await _0x365313['json']()['catch'](()=>({}));throw new Error(_0x183a02['error']||_0x183a02['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x365313['statusText']);}return await _0x365313['json']();},async 'login'(_0x4a458f,_0x5c0aeb){const _0x46c011=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4a458f,'password':_0x5c0aeb})});if(!_0x46c011['ok']){const _0x1ed7da=await _0x46c011['json']();throw new Error(_0x1ed7da['message']||'Login\x20failed');}return await _0x46c011['json']();},async 'logout'(){const _0x4f759b=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4f759b['ok']){const _0x1946d1=await _0x4f759b['json']();throw new Error(_0x1946d1['message']||'Logout\x20failed');}return await _0x4f759b['json']();},async 'getCurrentUser'(){const _0x574475=await fetch(API_BASE+'/auth/me');if(!_0x574475['ok'])throw new Error('Not\x20authenticated');const _0x565aa0=await _0x574475['json']();return _0x565aa0['user'];},async 'getRolesInfo'(){const _0x5889e7=await fetch(API_BASE+'/users/roles');if(!_0x5889e7['ok']){const _0x145c93=await _0x5889e7['json']();throw new Error(_0x145c93['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x5889e7['json']();},async 'getUsers'(){const _0x38c4cc=await fetch(API_BASE+'/users');if(!_0x38c4cc['ok']){const _0x3b108c=await _0x38c4cc['json']();throw new Error(_0x3b108c['message']||'Failed\x20to\x20get\x20users');}return await _0x38c4cc['json']();},async 'getUser'(_0x352e9d){const _0x454440=await fetch(API_BASE+'/users/'+_0x352e9d);if(!_0x454440['ok']){const _0x21598b=await _0x454440['json']();throw new Error(_0x21598b['message']||'Failed\x20to\x20get\x20user');}return await _0x454440['json']();},async 'createUser'(_0x21ea58){const _0x51aebc=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ea58)});if(!_0x51aebc['ok']){const _0x1f69bd=await _0x51aebc['json']();throw new Error(_0x1f69bd['message']||'Failed\x20to\x20create\x20user');}return await _0x51aebc['json']();},async 'updateUser'(_0x539c97,_0x13e896){const _0x57942c=await fetch(API_BASE+'/users/'+_0x539c97,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13e896)});if(!_0x57942c['ok']){const _0x4049bf=await _0x57942c['json']();throw new Error(_0x4049bf['message']||'Failed\x20to\x20update\x20user');}return await _0x57942c['json']();},async 'deleteUser'(_0x1aa5b2){const _0x17c764=await fetch(API_BASE+'/users/'+_0x1aa5b2,{'method':'DELETE'});if(!_0x17c764['ok']){const _0x6fa0e8=await _0x17c764['json']();throw new Error(_0x6fa0e8['message']||'Failed\x20to\x20delete\x20user');}return await _0x17c764['json']();},async 'stopAllContainers'(){const _0x4ef704=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2eaed6=await _0x4ef704['json']()['catch'](()=>({}));if(!_0x4ef704['ok'])throw new Error(_0x2eaed6['message']||_0x2eaed6['error']||'Failed\x20to\x20stop\x20containers');return _0x2eaed6;},async 'removeStoppedContainers'(){const _0xd8c465=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x62293f=await _0xd8c465['json']()['catch'](()=>({}));if(!_0xd8c465['ok'])throw new Error(_0x62293f['message']||_0x62293f['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x62293f;},async 'pruneDockerResources'(){const _0x1e0488=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x486af1=await _0x1e0488['json']()['catch'](()=>({}));if(!_0x1e0488['ok'])throw new Error(_0x486af1['message']||_0x486af1['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x486af1;},async 'getUpdateSettings'(){const _0x554259=await fetch(API_BASE+'/health/update-settings'),_0x2c693e=await _0x554259['json']()['catch'](()=>({}));if(!_0x554259['ok'])throw new Error(_0x2c693e['message']||_0x2c693e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x2c693e;},async 'applyServerUpdate'(_0x3b5294){const _0x121ed4=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x3b5294})}),_0x5750f1=await _0x121ed4['json']()['catch'](()=>({}));if(!_0x121ed4['ok']){const _0x4f0ee1=new Error(_0x5750f1['message']||_0x5750f1['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x5750f1['output']!==undefined)_0x4f0ee1['output']=_0x5750f1['output'];if(_0x5750f1['error']!==undefined)_0x4f0ee1['commandError']=_0x5750f1['error'];throw _0x4f0ee1;}return _0x5750f1;},async 'restartServer'(){const _0xd62c14=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0xece1c4=await _0xd62c14['json']()['catch'](()=>({}));if(!_0xd62c14['ok'])throw new Error(_0xece1c4['message']||_0xece1c4['error']||'Failed\x20to\x20restart\x20server');return _0xece1c4;},async 'getDockerContainers'(){const _0x2c7dc9=await fetch(API_BASE+'/health/containers'),_0x27d5ed=await _0x2c7dc9['json']()['catch'](()=>({}));if(!_0x2c7dc9['ok'])throw new Error(_0x27d5ed['message']||_0x27d5ed['error']||'Failed\x20to\x20load\x20containers');return _0x27d5ed;},async 'getDockerImages'(){const _0x1be16d=await fetch(API_BASE+'/health/docker/images'),_0xae16a1=await _0x1be16d['json']()['catch'](()=>({}));if(!_0x1be16d['ok'])throw new Error(_0xae16a1['message']||_0xae16a1['error']||'Failed\x20to\x20load\x20images');return _0xae16a1;},async 'getDockerVolumes'(){const _0x154fc8=await fetch(API_BASE+'/health/docker/volumes'),_0x1209c4=await _0x154fc8['json']()['catch'](()=>({}));if(!_0x154fc8['ok'])throw new Error(_0x1209c4['message']||_0x1209c4['error']||'Failed\x20to\x20load\x20volumes');return _0x1209c4;},async 'getActiveSessions'(){const _0x5e6319=await fetch(API_BASE+'/health/sessions'),_0x40489b=await _0x5e6319['json']()['catch'](()=>({}));if(!_0x5e6319['ok'])throw new Error(_0x40489b['message']||_0x40489b['error']||'Failed\x20to\x20load\x20sessions');return _0x40489b;},async 'getSystemInfo'(){const _0x4bb39d=await fetch(API_BASE+'/health/system'),_0x26e506=await _0x4bb39d['json']()['catch'](()=>({}));if(!_0x4bb39d['ok'])throw new Error(_0x26e506['message']||_0x26e506['error']||'Failed\x20to\x20load\x20system\x20info');return _0x26e506;},async 'stopDockerContainer'(_0x4aa583){const _0x42cd0a=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x4aa583)+'/stop',{'method':'POST'}),_0x1f6a58=await _0x42cd0a['json']()['catch'](()=>({}));if(!_0x42cd0a['ok'])throw new Error(_0x1f6a58['message']||_0x1f6a58['error']||'Failed\x20to\x20stop\x20container');return _0x1f6a58;},async 'removeDockerContainer'(_0x4adf1){const _0x5f5b4a=await fetch(API_BASE+'/health/containers/'+encodeURIComponent(_0x4adf1),{'method':'DELETE'}),_0x108d5d=await _0x5f5b4a['json']()['catch'](()=>({}));if(!_0x5f5b4a['ok'])throw new Error(_0x108d5d['message']||_0x108d5d['error']||'Failed\x20to\x20remove\x20container');return _0x108d5d;},async 'createPasswordToken'(_0x29d4ca,_0x68e4c0='setup',_0x93732d=![]){const _0x51843c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x29d4ca,'type':_0x68e4c0,'sendEmail':_0x93732d})});if(!_0x51843c['ok']){const _0x474dca=await _0x51843c['json']();throw new Error(_0x474dca['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x51843c['json']();},async 'getEmailConfig'(){const _0x2729e0=await fetch(API_BASE+'/password/email-config');if(!_0x2729e0['ok']){const _0xb7cf76=await _0x2729e0['json']();throw new Error(_0xb7cf76['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2729e0['json']();},async 'updateTaskName'(_0x31ed69,_0x4b6dab){const _0x3c90a2=await fetch(API_BASE+'/tasks/'+_0x31ed69,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4b6dab})});if(!_0x3c90a2['ok']){const _0x50094a=await _0x3c90a2['json']();throw new Error(_0x50094a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3c90a2['json']();},async 'pinTask'(_0x22186b,_0x153c93,_0x5013d7=null){if(!_0x22186b)throw new Error('Task\x20ID\x20is\x20required');const _0x16b9a5={'pinned':_0x153c93};_0x5013d7&&_0x5013d7['length']>0x0&&(_0x16b9a5['additionalTaskIds']=_0x5013d7);const _0x413481=await fetch(API_BASE+'/tasks/'+_0x22186b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16b9a5)});if(!_0x413481['ok']){const _0x39afe8=await _0x413481['json']();throw new Error(_0x39afe8['error']||'Failed\x20to\x20pin\x20task');}return await _0x413481['json']();},async 'setTaskWinner'(_0x17638f,_0x27d8de,_0x13b4b4=[]){if(!_0x17638f)throw new Error('Task\x20ID\x20is\x20required');const _0x11b193=await fetch(API_BASE+'/tasks/'+_0x17638f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x27d8de,'siblings':_0x13b4b4})});if(!_0x11b193['ok']){const _0x5b7aee=await _0x11b193['json']();throw new Error(_0x5b7aee['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x11b193['json']();},async 'setTaskLoser'(_0x5399f5,_0x18fa65){if(!_0x5399f5)throw new Error('Task\x20ID\x20is\x20required');const _0x4ec4ce=await fetch(API_BASE+'/tasks/'+_0x5399f5+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x18fa65})});if(!_0x4ec4ce['ok']){const _0x142630=await _0x4ec4ce['json']();throw new Error(_0x142630['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4ec4ce['json']();},async 'createTaskGroup'(_0x25c38f){const _0x5ed3c6=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25c38f)});if(!_0x5ed3c6['ok']){const _0x3f26df=await _0x5ed3c6['json']();throw new Error(_0x3f26df['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x5ed3c6['json']();},async 'getTaskGroups'(_0x5a7d27={}){const _0x5d1731=new URLSearchParams();if(_0x5a7d27['userId'])_0x5d1731['set']('userId',String(_0x5a7d27['userId']));if(_0x5a7d27['status'])_0x5d1731['set']('status',String(_0x5a7d27['status']));if(_0x5a7d27['limit'])_0x5d1731['set']('limit',String(_0x5a7d27['limit']));const _0x4b741a=API_BASE+'/tasks/groups'+(_0x5d1731['toString']()?'?'+_0x5d1731['toString']():''),_0x557c20=await fetch(_0x4b741a);if(!_0x557c20['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x557c20['json']();},async 'getTaskGroup'(_0x1d16cf){const _0x2db40c=await fetch(API_BASE+'/tasks/groups/'+_0x1d16cf);if(!_0x2db40c['ok']){const _0x5b6b89=await _0x2db40c['json']();throw new Error(_0x5b6b89['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x2db40c['json']();},async 'updateTaskGroup'(_0x1729d7,_0x50a379,_0x24ff3f){const _0x41afb9=await fetch(API_BASE+'/tasks/'+_0x1729d7+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50a379,'groupIndex':_0x24ff3f})});if(!_0x41afb9['ok']){const _0x41e1fa=await _0x41afb9['json']();throw new Error(_0x41e1fa['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x41afb9['json']();},async 'removeTaskFromGroup'(_0x1c3243){return this['updateTaskGroup'](_0x1c3243,null,null);},async 'deleteTaskGroup'(_0x21ce27,_0x5b07a6=![]){const _0x637b66=_0x5b07a6?'?deleteTasks=true':'',_0x54aa7c=await fetch(API_BASE+'/tasks/groups/'+_0x21ce27+_0x637b66,{'method':'DELETE'});if(!_0x54aa7c['ok']){const _0x46ba7d=await _0x54aa7c['json']();throw new Error(_0x46ba7d['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3dbc2d,_0x30ea32){const _0xb844d7=await fetch(API_BASE+'/tasks/groups/'+_0x3dbc2d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x30ea32})});if(!_0xb844d7['ok']){const _0x3d2cc9=await _0xb844d7['json']();throw new Error(_0x3d2cc9['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xb844d7['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4fea0b){if(!_0x4fea0b)throw new Error('Task\x20ID\x20is\x20required');const _0x13859a=await fetch(API_BASE+'/tasks/'+_0x4fea0b+'/comments');if(!_0x13859a['ok']){const _0xc43a17=await _0x13859a['json']()['catch'](()=>({}));throw new Error(_0xc43a17['error']||'Failed\x20to\x20get\x20comments');}return await _0x13859a['json']();},async 'addComment'(_0x53907e,_0x322f32){if(!_0x53907e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x322f32)throw new Error('Comment\x20content\x20is\x20required');const _0x34fcda=await fetch(API_BASE+'/tasks/'+_0x53907e+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x322f32})});if(!_0x34fcda['ok']){const _0x4f5203=await _0x34fcda['json']()['catch'](()=>({}));throw new Error(_0x4f5203['error']||'Failed\x20to\x20add\x20comment');}return await _0x34fcda['json']();},async 'updateComment'(_0x47fbeb,_0x3593a5,_0x56f05f){if(!_0x47fbeb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3593a5)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x56f05f)throw new Error('Comment\x20content\x20is\x20required');const _0x3fdc95=await fetch(API_BASE+'/tasks/'+_0x47fbeb+'/comments/'+_0x3593a5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x56f05f})});if(!_0x3fdc95['ok']){const _0x5a572c=await _0x3fdc95['json']()['catch'](()=>({}));throw new Error(_0x5a572c['error']||'Failed\x20to\x20update\x20comment');}return await _0x3fdc95['json']();},async 'deleteComment'(_0x6354ef,_0x3990e9){if(!_0x6354ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3990e9)throw new Error('Comment\x20ID\x20is\x20required');const _0x15fa1c=await fetch(API_BASE+'/tasks/'+_0x6354ef+'/comments/'+_0x3990e9,{'method':'DELETE'});if(!_0x15fa1c['ok']){const _0x3a752e=await _0x15fa1c['json']()['catch'](()=>({}));throw new Error(_0x3a752e['error']||'Failed\x20to\x20delete\x20comment');}return await _0x15fa1c['json']();},async 'createObjective'(_0x5331b8){const _0xcee002={'objective':!![],'name':_0x5331b8['name']||'','environment':_0x5331b8['environment']||null,'agents':_0x5331b8['agents']||[],'branches':_0x5331b8['branches']||{},'isPinned':_0x5331b8['isPinned']||![],'parentObjectiveId':_0x5331b8['parentObjectiveId']||null,'env_vars':_0x5331b8['envVars']||{},'parameters':{'instructions':_0x5331b8['instructions']||''},'files':_0x5331b8['files']||[],'jira':_0x5331b8['jira']||null};return this['createTask'](_0xcee002);},async 'updateObjective'(_0x5e267d,_0x547ddc,_0x20c3db=[],_0x8f16cb=[]){let _0xc991df,_0x424a57={};const _0x3f258d={..._0x547ddc};_0x8f16cb&&_0x8f16cb['length']>0x0&&(_0x3f258d['removeAttachments']=_0x8f16cb);if(_0x20c3db&&_0x20c3db['length']>0x0){const _0x3a23be=new FormData();for(const [_0x83df65,_0x1c3e0e]of Object['entries'](_0x3f258d)){if(_0x1c3e0e==null)continue;typeof _0x1c3e0e==='object'?_0x3a23be['append'](_0x83df65,JSON['stringify'](_0x1c3e0e)):_0x3a23be['append'](_0x83df65,String(_0x1c3e0e));}for(const _0x3b6c4c of _0x20c3db){_0x3a23be['append']('attachments',_0x3b6c4c);}_0xc991df=_0x3a23be;}else _0x424a57['Content-Type']='application/json',_0xc991df=JSON['stringify'](_0x3f258d);const _0x489c76=await fetch(API_BASE+'/tasks/'+_0x5e267d,{'method':'PATCH','headers':_0x424a57,'body':_0xc991df});if(!_0x489c76['ok']){const _0x31c317=await _0x489c76['json']();throw new Error(_0x31c317['error']||'Failed\x20to\x20update\x20objective');}return await _0x489c76['json']();},async 'deleteObjective'(_0x5cd79b){return this['deleteTask'](_0x5cd79b);},async 'launchObjective'(_0x1937c2,_0xf03a95={}){const _0x1caea4=await fetch(API_BASE+'/tasks/'+_0x1937c2+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf03a95)});if(!_0x1caea4['ok']){const _0x215510=await _0x1caea4['json']();throw new Error(_0x215510['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1caea4['json']();},async 'getObjectiveAttachments'(_0x36e603){return this['getTaskAttachments'](_0x36e603);},async 'createJudgeTask'({environment:_0xea5b65,judgeAgent:_0x374856,groupId:_0x58b6ea,taskIds:_0x23d907,judgeCustomInstructions:_0x5c2108,isPinned:_0x10933f}){const _0x5cc159=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xea5b65,'judgeAgent':_0x374856,'groupId':_0x58b6ea,'taskIds':_0x23d907,'judgeCustomInstructions':_0x5c2108,'isPinned':_0x10933f})});if(!_0x5cc159['ok']){const _0x27e0f1=await _0x5cc159['json']();throw new Error(_0x27e0f1['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x5cc159['json']();},async 'getJudgeTasks'(_0x5b6339){const _0x39646d=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5b6339));if(!_0x39646d['ok']){const _0x3dcf52=await _0x39646d['json']();throw new Error(_0x3dcf52['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x39646d['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x21cbff,_0xca326a,_0x564b49=''){const _0x5a7853=await fetch(API_BASE+'/tasks/'+_0x21cbff+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0xca326a,'customPreamble':_0x564b49})});if(!_0x5a7853['ok']){const _0x34493a=await _0x5a7853['json']();throw new Error(_0x34493a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x5a7853['json']();},async 'getJiraConfig'(){const _0x7480c4=await fetch(API_BASE+'/jira/config');if(!_0x7480c4['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7480c4['json']();},async 'getJiraIssue'(_0x452e26){const _0x559e65=await fetch(API_BASE+'/jira/issues/'+_0x452e26);if(!_0x559e65['ok']){const _0x269ad6=await _0x559e65['json']()['catch'](()=>({}));throw new Error(_0x269ad6['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x559e65['statusText']);}return await _0x559e65['json']();},async 'searchJiraIssues'(_0xea36b6,_0x543283=0x14){const _0x268327=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xea36b6,'maxResults':_0x543283})});if(!_0x268327['ok']){const _0x2f3972=await _0x268327['json']()['catch'](()=>({}));throw new Error(_0x2f3972['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x268327['statusText']);}return await _0x268327['json']();},async 'postJiraComment'(_0x220953,_0x34d2a){const _0x59c499=await fetch(API_BASE+'/jira/issues/'+_0x220953+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x34d2a})});if(!_0x59c499['ok']){const _0x51e48b=await _0x59c499['json']()['catch'](()=>({}));throw new Error(_0x51e48b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x59c499['statusText']);}return await _0x59c499['json']();},async 'getJiraComments'(_0x4ced11){const _0x251029=await fetch(API_BASE+'/jira/issues/'+_0x4ced11+'/comments');if(!_0x251029['ok']){const _0x541071=await _0x251029['json']()['catch'](()=>({}));throw new Error(_0x541071['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x251029['statusText']);}return await _0x251029['json']();},async 'promptParameter'({environment:_0x2975e4,command:_0x5b9c95,parser:parser='json'}){const _0x3b3bc9=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2975e4,'command':_0x5b9c95,'parser':parser})});if(!_0x3b3bc9['ok']){const _0x33ff81=await _0x3b3bc9['json']()['catch'](()=>({}));throw new Error(_0x33ff81['message']||_0x33ff81['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x3b3bc9['statusText']);}return await _0x3b3bc9['json']();},async 'promptParameterStream'(_0x45beb3,_0x71c05f){const _0x4a5951=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45beb3)});if(!_0x4a5951['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4a5951['statusText']);const _0x1280c6=_0x4a5951['body']['getReader'](),_0x46506a=new TextDecoder();let _0x3f7ff3='';return new Promise((_0x1bc2e1,_0x26758d)=>{const _0x3743e0=async()=>{try{const {done:_0x2f8c43,value:_0x4cda78}=await _0x1280c6['read']();if(_0x2f8c43)return;_0x3f7ff3+=_0x46506a['decode'](_0x4cda78,{'stream':!![]});const _0x101182=_0x3f7ff3['split']('\x0a\x0a');_0x3f7ff3=_0x101182['pop']()||'';for(const _0x116a9f of _0x101182){if(!_0x116a9f['trim']())continue;const _0x4dcfbd=_0x116a9f['split']('\x0a');let _0x470902='message',_0x4c7b6c='';for(const _0x3e81ee of _0x4dcfbd){if(_0x3e81ee['startsWith']('event:'))_0x470902=_0x3e81ee['substring'](0x6)['trim']();else _0x3e81ee['startsWith']('data:')&&(_0x4c7b6c=_0x3e81ee['substring'](0x5)['trim']());}if(!_0x4c7b6c)continue;try{const _0x58577e=JSON['parse'](_0x4c7b6c);if(_0x470902==='progress'&&_0x71c05f)_0x71c05f(_0x58577e['stage'],_0x58577e['message']);else{if(_0x470902==='result'){_0x1bc2e1(_0x58577e);return;}else{if(_0x470902==='error'){let _0x185322=_0x58577e['message']||_0x58577e['error']||'Prompt\x20command\x20failed';_0x58577e['rawOutput']&&(_0x185322+='\x0a\x0aRaw\x20output:\x0a'+_0x58577e['rawOutput']);_0x26758d(new Error(_0x185322));return;}}}}catch(_0x379cc5){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x379cc5),console['error']('Event\x20type:',_0x470902),console['error']('Event\x20data:',_0x4c7b6c),console['error']('First\x20200\x20chars:',_0x4c7b6c['substring'](0x0,0xc8)),_0x26758d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x379cc5['message']+'\x0a\x0aData:\x20'+_0x4c7b6c['substring'](0x0,0x1f4)));return;}}_0x3743e0();}catch(_0xd4f26d){_0x26758d(_0xd4f26d);}};_0x3743e0();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4ef7d6){const _0xd37f44=await fetch(''+API_BASE+_0x4ef7d6);if(!_0xd37f44['ok']){const _0x146193=await _0xd37f44['json']()['catch'](()=>({'error':_0xd37f44['statusText']})),_0x1ba4ce=new Error(_0x146193['error']||_0x146193['message']||_0xd37f44['statusText']);if(_0x146193['detail']!==undefined)_0x1ba4ce['detail']=_0x146193['detail'];throw _0x1ba4ce;}return await _0xd37f44['json']();},async 'post'(_0x141149,_0x55352e){const _0x713bc8=await fetch(''+API_BASE+_0x141149,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55352e)});if(!_0x713bc8['ok']){const _0xbd888c=await _0x713bc8['json']()['catch'](()=>({'error':_0x713bc8['statusText']})),_0x2e0e50=new Error(_0xbd888c['error']||_0xbd888c['message']||_0x713bc8['statusText']);if(_0xbd888c['detail']!==undefined)_0x2e0e50['detail']=_0xbd888c['detail'];throw _0x2e0e50;}return await _0x713bc8['json']();},async 'put'(_0x2a27d4,_0x424e57){const _0x3c7312=await fetch(''+API_BASE+_0x2a27d4,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x424e57)});if(!_0x3c7312['ok']){const _0x1d1ced=await _0x3c7312['json']()['catch'](()=>({'error':_0x3c7312['statusText']})),_0x31fe0d=new Error(_0x1d1ced['error']||_0x1d1ced['message']||_0x3c7312['statusText']);if(_0x1d1ced['detail']!==undefined)_0x31fe0d['detail']=_0x1d1ced['detail'];throw _0x31fe0d;}return await _0x3c7312['json']();},async 'delete'(_0x1a8bde,_0x495dfe){const _0x283cc2={'method':'DELETE'};_0x495dfe&&(_0x283cc2['headers']={'Content-Type':'application/json'},_0x283cc2['body']=JSON['stringify'](_0x495dfe));const _0x1a9b67=await fetch(''+API_BASE+_0x1a8bde,_0x283cc2);if(!_0x1a9b67['ok']){const _0x34ecfe=await _0x1a9b67['json']()['catch'](()=>({'error':_0x1a9b67['statusText']})),_0x4929b6=new Error(_0x34ecfe['error']||_0x34ecfe['message']||_0x1a9b67['statusText']);if(_0x34ecfe['detail']!==undefined)_0x4929b6['detail']=_0x34ecfe['detail'];throw _0x4929b6;}return await _0x1a9b67['json']();},async 'getSkills'(){const _0x4dc163=await fetch(API_BASE+'/skills');if(!_0x4dc163['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4dc163['statusText']);return await _0x4dc163['json']();},async 'getSkill'(_0x3ee9ec){const _0x3294c5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3ee9ec));if(!_0x3294c5['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3294c5['statusText']);return await _0x3294c5['json']();},async 'createSkill'(_0xf09839){const _0x25d9f6=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf09839)});if(!_0x25d9f6['ok']){const _0x402cfb=await _0x25d9f6['json']()['catch'](()=>({'error':_0x25d9f6['statusText']})),_0x4cf438=new Error(_0x402cfb['error']||_0x402cfb['message']||_0x25d9f6['statusText']);if(_0x402cfb['detail']!==undefined)_0x4cf438['detail']=_0x402cfb['detail'];throw _0x4cf438;}return await _0x25d9f6['json']();},async 'updateSkill'(_0x187771,_0x1b14a0){const _0x32c325=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x187771),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b14a0)});if(!_0x32c325['ok']){const _0x23c3b9=await _0x32c325['json']()['catch'](()=>({'error':_0x32c325['statusText']})),_0x2fbddf=new Error(_0x23c3b9['error']||_0x23c3b9['message']||_0x32c325['statusText']);if(_0x23c3b9['detail']!==undefined)_0x2fbddf['detail']=_0x23c3b9['detail'];throw _0x2fbddf;}return await _0x32c325['json']();},async 'deleteSkill'(_0x350878){const _0x4ebc30=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x350878),{'method':'DELETE'});if(!_0x4ebc30['ok']){const _0x317838=await _0x4ebc30['json']()['catch'](()=>({'error':_0x4ebc30['statusText']})),_0x2cd3ef=new Error(_0x317838['error']||_0x317838['message']||_0x4ebc30['statusText']);if(_0x317838['detail']!==undefined)_0x2cd3ef['detail']=_0x317838['detail'];throw _0x2cd3ef;}return await _0x4ebc30['json']();},async 'getSkillFile'(_0x542969,_0x3ff4e0){const _0x55dfa6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x542969)+'/files/'+_0x3ff4e0);if(!_0x55dfa6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x55dfa6['statusText']);return await _0x55dfa6['json']();},async 'saveSkillFile'(_0x21bd5e,_0x4120d6,_0x4038f9){const _0x1f9bb6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x21bd5e)+'/files/'+_0x4120d6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4038f9})});if(!_0x1f9bb6['ok']){const _0x223601=await _0x1f9bb6['json']()['catch'](()=>({'error':_0x1f9bb6['statusText']})),_0x42e9ce=new Error(_0x223601['error']||_0x223601['message']||_0x1f9bb6['statusText']);if(_0x223601['detail']!==undefined)_0x42e9ce['detail']=_0x223601['detail'];throw _0x42e9ce;}return await _0x1f9bb6['json']();},async 'deleteSkillFile'(_0x11fdd5,_0x2681e9){const _0xfe9504=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x11fdd5)+'/files/'+_0x2681e9,{'method':'DELETE'});if(!_0xfe9504['ok']){const _0x3d647f=await _0xfe9504['json']()['catch'](()=>({'error':_0xfe9504['statusText']})),_0x2f7d22=new Error(_0x3d647f['error']||_0x3d647f['message']||_0xfe9504['statusText']);if(_0x3d647f['detail']!==undefined)_0x2f7d22['detail']=_0x3d647f['detail'];throw _0x2f7d22;}return await _0xfe9504['json']();},async 'pullSkills'(){const _0x638b3e=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x638b3e['ok']){const _0x52da7b=await _0x638b3e['json']()['catch'](()=>({'error':_0x638b3e['statusText']})),_0xc7f352=new Error(_0x52da7b['error']||_0x52da7b['message']||_0x638b3e['statusText']);if(_0x52da7b['detail']!==undefined)_0xc7f352['detail']=_0x52da7b['detail'];throw _0xc7f352;}return await _0x638b3e['json']();},async 'commitSkills'(_0x1787af,_0x70aa0a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x70aa0a,_0x2c1449=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1787af,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2c1449['ok']){const _0x3b7827=await _0x2c1449['json']()['catch'](()=>({'error':_0x2c1449['statusText']})),_0x3f2c32=new Error(_0x3b7827['error']||_0x3b7827['message']||_0x2c1449['statusText']);if(_0x3b7827['detail']!==undefined)_0x3f2c32['detail']=_0x3b7827['detail'];throw _0x3f2c32;}return await _0x2c1449['json']();},async 'discardSkillsChanges'(){const _0x29851f=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x29851f['ok']){const _0x45eaa0=await _0x29851f['json']()['catch'](()=>({'error':_0x29851f['statusText']})),_0x3065fa=new Error(_0x45eaa0['error']||_0x45eaa0['message']||_0x29851f['statusText']);if(_0x45eaa0['detail']!==undefined)_0x3065fa['detail']=_0x45eaa0['detail'];throw _0x3065fa;}return await _0x29851f['json']();},async 'getSkillCatalog'(){const _0x38577e=await fetch(API_BASE+'/external-skills/catalog');if(!_0x38577e['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x38577e['statusText']);return await _0x38577e['json']();},async 'getImportedSkillsRegistry'(){const _0x159435=await fetch(API_BASE+'/external-skills/registry');if(!_0x159435['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x159435['statusText']);return await _0x159435['json']();},async 'importCatalogSkill'(_0x2565e2){const _0x179a1a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2565e2})});if(!_0x179a1a['ok']){const _0x679ad9=await _0x179a1a['json']()['catch'](()=>({'error':_0x179a1a['statusText']})),_0x3e019b=new Error(_0x679ad9['error']||_0x679ad9['message']||_0x179a1a['statusText']);if(_0x679ad9['detail']!==undefined)_0x3e019b['detail']=_0x679ad9['detail'];throw _0x3e019b;}return await _0x179a1a['json']();},async 'importSkillFromGit'(_0x9113e7,_0x49a4e2,_0x3ca854='main',_0x1143fc=null){const _0x2e87ba=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x9113e7,'skillPath':_0x49a4e2,'branch':_0x3ca854,'skillId':_0x1143fc})});if(!_0x2e87ba['ok']){const _0x4f5f16=await _0x2e87ba['json']()['catch'](()=>({'error':_0x2e87ba['statusText']})),_0x2c07cf=new Error(_0x4f5f16['error']||_0x4f5f16['message']||_0x2e87ba['statusText']);if(_0x4f5f16['detail']!==undefined)_0x2c07cf['detail']=_0x4f5f16['detail'];throw _0x2c07cf;}return await _0x2e87ba['json']();},async 'probeMarketplace'(_0x4a2eca,_0x2fd74f='main'){const _0x4c33db=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4a2eca,'branch':_0x2fd74f})});if(!_0x4c33db['ok']){const _0x1b2e4a=await _0x4c33db['json']()['catch'](()=>({'error':_0x4c33db['statusText']})),_0x11d345=new Error(_0x1b2e4a['error']||_0x1b2e4a['message']||_0x4c33db['statusText']);if(_0x1b2e4a['detail']!==undefined)_0x11d345['detail']=_0x1b2e4a['detail'];throw _0x11d345;}return await _0x4c33db['json']();},async 'importMarketplaceBundle'(_0x4236a1,_0x3e5483,_0x2b2f81,_0x57eebe=null){const _0x32884e=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4236a1,'branch':_0x3e5483,'bundleId':_0x2b2f81,'selectedSkills':_0x57eebe})});if(!_0x32884e['ok']){const _0x33f0e2=await _0x32884e['json']()['catch'](()=>({'error':_0x32884e['statusText']})),_0xafd107=new Error(_0x33f0e2['error']||_0x33f0e2['message']||_0x32884e['statusText']);if(_0x33f0e2['detail']!==undefined)_0xafd107['detail']=_0x33f0e2['detail'];throw _0xafd107;}return await _0x32884e['json']();},async 'importSkillFromFolder'(_0x27df54,_0x8f2a9d=null){const _0x5e1307=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x27df54,'skillId':_0x8f2a9d})});if(!_0x5e1307['ok']){const _0x3c0bc8=await _0x5e1307['json']()['catch'](()=>({'error':_0x5e1307['statusText']})),_0xb8e210=new Error(_0x3c0bc8['error']||_0x3c0bc8['message']||_0x5e1307['statusText']);if(_0x3c0bc8['detail']!==undefined)_0xb8e210['detail']=_0x3c0bc8['detail'];throw _0xb8e210;}return await _0x5e1307['json']();},async 'importSkillFromNpm'(_0x46e23f,_0x415673='latest',_0x268bf5=null,_0x567afe=null){const _0x1d488f=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x46e23f,'version':_0x415673,'skillId':_0x268bf5,'registry':_0x567afe})});if(!_0x1d488f['ok']){const _0x32670e=await _0x1d488f['json']()['catch'](()=>({'error':_0x1d488f['statusText']})),_0x50145a=new Error(_0x32670e['error']||_0x32670e['message']||_0x1d488f['statusText']);if(_0x32670e['detail']!==undefined)_0x50145a['detail']=_0x32670e['detail'];throw _0x50145a;}return await _0x1d488f['json']();},async 'checkSkillUpdates'(_0x463560){const _0x15d7f7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x463560)+'/check-updates',{'method':'POST'});if(!_0x15d7f7['ok']){const _0x372ae1=await _0x15d7f7['json']()['catch'](()=>({'error':_0x15d7f7['statusText']})),_0x1a9101=new Error(_0x372ae1['error']||_0x372ae1['message']||_0x15d7f7['statusText']);if(_0x372ae1['detail']!==undefined)_0x1a9101['detail']=_0x372ae1['detail'];throw _0x1a9101;}return await _0x15d7f7['json']();},async 'updateExternalSkill'(_0x1ebeb9){const _0x1dd271=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1ebeb9)+'/update',{'method':'POST'});if(!_0x1dd271['ok']){const _0x509179=await _0x1dd271['json']()['catch'](()=>({'error':_0x1dd271['statusText']})),_0x4f814c=new Error(_0x509179['error']||_0x509179['message']||_0x1dd271['statusText']);if(_0x509179['detail']!==undefined)_0x4f814c['detail']=_0x509179['detail'];throw _0x4f814c;}return await _0x1dd271['json']();},async 'updateSkillFlags'(_0x30ee67,_0x39eb5d){const _0x1baccf=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x30ee67)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x39eb5d})});if(!_0x1baccf['ok']){const _0x2b96d7=await _0x1baccf['json']()['catch'](()=>({'error':_0x1baccf['statusText']})),_0x2dfb1c=new Error(_0x2b96d7['error']||_0x2b96d7['message']||_0x1baccf['statusText']);if(_0x2b96d7['detail']!==undefined)_0x2dfb1c['detail']=_0x2b96d7['detail'];throw _0x2dfb1c;}return await _0x1baccf['json']();},async 'removeFromImportedRegistry'(_0x14a78d){const _0x2f8fa5=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x14a78d)+'/registry',{'method':'DELETE'});if(!_0x2f8fa5['ok']){const _0x1ce37e=await _0x2f8fa5['json']()['catch'](()=>({'error':_0x2f8fa5['statusText']})),_0x271a7f=new Error(_0x1ce37e['error']||_0x1ce37e['message']||_0x2f8fa5['statusText']);if(_0x1ce37e['detail']!==undefined)_0x271a7f['detail']=_0x1ce37e['detail'];throw _0x271a7f;}return await _0x2f8fa5['json']();},async 'getTeams'(){const _0x2193bc=await fetch(API_BASE+'/teams');if(!_0x2193bc['ok']){const _0x4de4f2=await _0x2193bc['json']()['catch'](()=>({'message':_0x2193bc['statusText']}));throw new Error(_0x4de4f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2193bc['json']();},async 'getTeam'(_0x11201b){const _0x54bb10=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11201b));if(!_0x54bb10['ok']){const _0x860e4a=await _0x54bb10['json']()['catch'](()=>({'message':_0x54bb10['statusText']}));throw new Error(_0x860e4a['message']||'Failed\x20to\x20get\x20team');}return await _0x54bb10['json']();},async 'createTeam'(_0x43a9e0){const _0x264f1d=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43a9e0)});if(!_0x264f1d['ok']){const _0x31f21b=await _0x264f1d['json']()['catch'](()=>({'message':_0x264f1d['statusText']}));throw new Error(_0x31f21b['message']||'Failed\x20to\x20create\x20team');}return await _0x264f1d['json']();},async 'updateTeam'(_0x242cf5,_0x4e8a1e){const _0x453062=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x242cf5),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e8a1e)});if(!_0x453062['ok']){const _0x589f6f=await _0x453062['json']()['catch'](()=>({'message':_0x453062['statusText']}));throw new Error(_0x589f6f['message']||'Failed\x20to\x20update\x20team');}return await _0x453062['json']();},async 'deleteTeam'(_0x41ac21){const _0x4fafb2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x41ac21),{'method':'DELETE'});if(!_0x4fafb2['ok']){const _0x9ec391=await _0x4fafb2['json']()['catch'](()=>({'message':_0x4fafb2['statusText']}));throw new Error(_0x9ec391['message']||'Failed\x20to\x20delete\x20team');}return await _0x4fafb2['json']();},async 'addTeamMember'(_0x386bad,_0x35e9eb){const _0x69922c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x386bad)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x35e9eb})});if(!_0x69922c['ok']){const _0x24db7c=await _0x69922c['json']()['catch'](()=>({'message':_0x69922c['statusText']}));throw new Error(_0x24db7c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x69922c['json']();},async 'removeTeamMember'(_0x452cb1,_0x11890c){const _0x1b8eff=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x452cb1)+'/members/'+encodeURIComponent(_0x11890c),{'method':'DELETE'});if(!_0x1b8eff['ok']){const _0x4760cc=await _0x1b8eff['json']()['catch'](()=>({'message':_0x1b8eff['statusText']}));throw new Error(_0x4760cc['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1b8eff['json']();},async 'getBindings'(_0x2436cb={}){const _0x172817=new URLSearchParams();if(_0x2436cb['resource_type'])_0x172817['set']('resource_type',_0x2436cb['resource_type']);if(_0x2436cb['resource_id'])_0x172817['set']('resource_id',_0x2436cb['resource_id']);if(_0x2436cb['subject_type'])_0x172817['set']('subject_type',_0x2436cb['subject_type']);if(_0x2436cb['subject_id'])_0x172817['set']('subject_id',_0x2436cb['subject_id']);const _0xbcdbdd=_0x172817['toString'](),_0xf10d9b=await fetch(API_BASE+'/bindings'+(_0xbcdbdd?'?'+_0xbcdbdd:''));if(!_0xf10d9b['ok']){const _0x2e0367=await _0xf10d9b['json']()['catch'](()=>({'message':_0xf10d9b['statusText']}));throw new Error(_0x2e0367['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf10d9b['json']();},async 'createBinding'(_0x34a7e6){const _0x596011=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x34a7e6)});if(!_0x596011['ok']){const _0x34fbe2=await _0x596011['json']()['catch'](()=>({'message':_0x596011['statusText']}));throw new Error(_0x34fbe2['message']||'Failed\x20to\x20create\x20binding');}return await _0x596011['json']();},async 'updateBinding'(_0x3ab504,_0x4e94c9){const _0xb10721=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3ab504),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e94c9)});if(!_0xb10721['ok']){const _0x13c4c1=await _0xb10721['json']()['catch'](()=>({'message':_0xb10721['statusText']}));throw new Error(_0x13c4c1['message']||'Failed\x20to\x20update\x20binding');}return await _0xb10721['json']();},async 'deleteBinding'(_0x37c3d4){const _0x34f5f0=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37c3d4),{'method':'DELETE'});if(!_0x34f5f0['ok']){const _0x445a4f=await _0x34f5f0['json']()['catch'](()=>({'message':_0x34f5f0['statusText']}));throw new Error(_0x445a4f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x34f5f0['json']();},async 'getRoleDefinitions'(){const _0x314386=await fetch(API_BASE+'/roles');if(!_0x314386['ok']){const _0x47e5ef=await _0x314386['json']()['catch'](()=>({'message':_0x314386['statusText']}));throw new Error(_0x47e5ef['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x314386['json']();},async 'getRoleDefinition'(_0x556a08){const _0x2b6a9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x556a08));if(!_0x2b6a9a['ok']){const _0x1ef5dc=await _0x2b6a9a['json']()['catch'](()=>({'message':_0x2b6a9a['statusText']}));throw new Error(_0x1ef5dc['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x2b6a9a['json']();},async 'createRoleDefinition'(_0x480eeb){const _0x153f87=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x480eeb)});if(!_0x153f87['ok']){const _0x19611a=await _0x153f87['json']()['catch'](()=>({'message':_0x153f87['statusText']}));throw new Error(_0x19611a['message']||_0x19611a['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x153f87['json']();},async 'updateRoleDefinition'(_0x55d661,_0x5e09ae){const _0x58612c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x55d661),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e09ae)});if(!_0x58612c['ok']){const _0x29b42b=await _0x58612c['json']()['catch'](()=>({'message':_0x58612c['statusText']}));throw new Error(_0x29b42b['message']||_0x29b42b['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x58612c['json']();},async 'deleteRoleDefinition'(_0x1967dd){const _0x42705d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1967dd),{'method':'DELETE'});if(!_0x42705d['ok']){const _0x13a6d3=await _0x42705d['json']()['catch'](()=>({'message':_0x42705d['statusText']}));throw new Error(_0x13a6d3['message']||_0x13a6d3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x42705d['json']();},async 'getAvailablePermissions'(){const _0x3808ca=await fetch(API_BASE+'/roles/available-permissions');if(!_0x3808ca['ok']){const _0x2f5573=await _0x3808ca['json']()['catch'](()=>({'message':_0x3808ca['statusText']}));throw new Error(_0x2f5573['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x3808ca['json']();},async 'getGitProviderAllowedTeams'(_0xce2592){const _0x21545c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xce2592)+'/allowed-teams');if(!_0x21545c['ok']){const _0x98b765=await _0x21545c['json']()['catch'](()=>({'message':_0x21545c['statusText']}));throw new Error(_0x98b765['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x21545c['json']();},async 'setGitProviderAllowedTeams'(_0x4e1459,_0x47c855){const _0x133986=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4e1459)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x47c855})});if(!_0x133986['ok']){const _0x132c60=await _0x133986['json']()['catch'](()=>({'message':_0x133986['statusText']}));throw new Error(_0x132c60['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x133986['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x5d39d6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x225632=>{_0x225632['el']['style']['bottom']=_0x5d39d6+'px';const _0x32da7f=_0x225632['el']['offsetHeight']||toastState['defaultHeight'];_0x5d39d6+=_0x32da7f+toastState['gap'];});});}function removeToastById(_0x38b45e){const _0x3e29cc=toastState['toasts']['findIndex'](_0x1843d6=>_0x1843d6['id']===_0x38b45e);if(_0x3e29cc===-0x1)return;const _0x3fec47=toastState['toasts'][_0x3e29cc];if(_0x3fec47['timeoutId'])clearTimeout(_0x3fec47['timeoutId']);_0x3fec47['el']['classList']['remove']('show'),setTimeout(()=>_0x3fec47['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3e29cc,0x1),repositionAllToasts();}function registerToast(_0x1d33ab){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1d33ab),repositionAllToasts(),_0x1d33ab['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x56716e){if(_0x56716e===null||_0x56716e===undefined)return'';return String(_0x56716e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xb16861,_0x79f445){if(_0xb16861&&typeof _0xb16861==='object'&&!Array['isArray'](_0xb16861))return{'code':typeof _0xb16861['text']==='string'?_0xb16861['text']:'','language':typeof _0xb16861['lang']==='string'?_0xb16861['lang']:''};return{'code':typeof _0xb16861==='string'?_0xb16861:'','language':typeof _0x79f445==='string'?_0x79f445:''};}function buildMermaidBlock(_0x4eb9c8){const _0x1f05c1=String(_0x4eb9c8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1f05c1))+'\x22>'+escapeHtmlValue(_0x1f05c1)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x590ccd=new marked['Renderer'](),_0x339b65=_0x590ccd['code']['bind'](_0x590ccd);return _0x590ccd['code']=function(_0x3bf0f2,_0x42b5e4,..._0x36f52e){const {code:_0x2ff360,language:_0xd72810}=getMarkdownCodeBlockPayload(_0x3bf0f2,_0x42b5e4),_0x1a2fe9=String(_0xd72810||'')['trim']()['toLowerCase']();if(_0x1a2fe9==='mermaid')return buildMermaidBlock(_0x2ff360);const _0x2f54e2=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2f54e2&&_0x1a2fe9)try{const _0x507bd7=_0x2f54e2['getLanguage'](_0x1a2fe9)?_0x1a2fe9:'plaintext',_0x57f623=_0x2f54e2['highlight'](_0x2ff360,{'language':_0x507bd7})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1a2fe9)+'\x22>'+_0x57f623+'</code></pre>';}catch(_0x3a2e3d){console['error']('Syntax\x20highlighting\x20error:',_0x3a2e3d);}return _0x339b65(_0x3bf0f2,_0x42b5e4,..._0x36f52e);},sharedMarkedRenderer=_0x590ccd,_0x590ccd;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x2b2d0b=window['mermaid'];if(!_0x2b2d0b||typeof _0x2b2d0b['initialize']!=='function')return _0x2b2d0b||null;return _0x2b2d0b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x2b2d0b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x294f1a,_0x544bbf)=>{const _0x41460f=()=>_0x294f1a(configureMermaidInstance()),_0x38ba76=()=>{mermaidLoadPromise=null,_0x544bbf(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x18ae27=document['getElementById'](MERMAID_SCRIPT_ID);!_0x18ae27&&(_0x18ae27=document['createElement']('script'),_0x18ae27['id']=MERMAID_SCRIPT_ID,_0x18ae27['src']=MERMAID_SCRIPT_SRC,_0x18ae27['async']=!![],document['head']['appendChild'](_0x18ae27));if(window['mermaid']){_0x41460f();return;}_0x18ae27['addEventListener']('load',_0x41460f,{'once':!![]}),_0x18ae27['addEventListener']('error',_0x38ba76,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4968d1){const _0x2ae8e2=_0x4968d1['getAttribute']('data-mermaid-source');if(!_0x2ae8e2)return null;let _0x3a6cf8=_0x2ae8e2;try{_0x3a6cf8=decodeURIComponent(_0x2ae8e2);}catch{}return _0x4968d1['textContent']=_0x3a6cf8,_0x4968d1['removeAttribute']('data-processed'),_0x4968d1['removeAttribute']('aria-roledescription'),_0x4968d1['removeAttribute']('role'),_0x4968d1['removeAttribute']('aria-label'),_0x3a6cf8;}function collectMermaidNodes(_0x211d37,_0x51d721){if(!(_0x211d37 instanceof Element))return;_0x211d37['matches']('.mermaid[data-mermaid-source]')&&_0x51d721['add'](_0x211d37),_0x211d37['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a732f=>{_0x51d721['add'](_0x5a732f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x135f33=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xf3a95b=>setTimeout(_0xf3a95b,0x0);_0x135f33(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x29059e=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x29059e);});});}function queueMermaidRender(_0x3f8fd5){const _0x413d6b=new Set();_0x3f8fd5 instanceof Document||_0x3f8fd5 instanceof DocumentFragment?_0x3f8fd5['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5503f1=>_0x413d6b['add'](_0x5503f1)):collectMermaidNodes(_0x3f8fd5,_0x413d6b);if(_0x413d6b['size']===0x0)return;_0x413d6b['forEach'](_0x1874c1=>pendingMermaidNodes['add'](_0x1874c1)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x1d3f0b=Array['from'](pendingMermaidNodes)['filter'](_0xf80245=>_0xf80245['isConnected']);pendingMermaidNodes['clear']();if(_0x1d3f0b['length']===0x0)return;const _0x40718c=await loadMermaid();if(!_0x40718c)return;configureMermaidInstance();const _0x46334f=getMermaidTheme();for(const _0x58cd14 of _0x1d3f0b){const _0x1db774=_0x58cd14['getAttribute']('data-mermaid-source');if(!_0x1db774)continue;const _0x370118=_0x58cd14['getAttribute']('data-processed')==='true';if(_0x370118&&_0x58cd14['dataset']['mermaidTheme']===_0x46334f)continue;restoreMermaidSource(_0x58cd14);try{if(typeof _0x40718c['run']==='function')await _0x40718c['run']({'nodes':[_0x58cd14]});else typeof _0x40718c['init']==='function'&&_0x40718c['init'](undefined,[_0x58cd14]);_0x58cd14['dataset']['mermaidTheme']=_0x46334f,delete _0x58cd14['dataset']['mermaidError'];}catch(_0xc17683){console['error']('Mermaid\x20render\x20failed:',_0xc17683),restoreMermaidSource(_0x58cd14),_0x58cd14['dataset']['mermaidError']='true',delete _0x58cd14['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2c9648=>{_0x2c9648['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x2c9648);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x15748b=>{_0x15748b['forEach'](_0x3fa856=>{_0x3fa856['addedNodes']['forEach'](_0x37d166=>{_0x37d166['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x37d166);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x3273bb){const _0x293896=new Date(_0x3273bb),_0x39dd0c=new Date(),_0x148f8d=_0x39dd0c-_0x293896,_0x31b583=Math['floor'](_0x148f8d/0x3e8),_0x197319=Math['floor'](_0x31b583/0x3c),_0x43fc38=Math['floor'](_0x197319/0x3c),_0x5686b8=Math['floor'](_0x43fc38/0x18);if(_0x31b583<0x3c)return'now';if(_0x197319<0x3c)return _0x197319+'m\x20ago';if(_0x43fc38<0x18)return _0x43fc38+'h\x20ago';return _0x5686b8+'d\x20ago';},'getStatusIcon'(_0x38e401){switch(_0x38e401){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x1c4668){switch(_0x1c4668){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x3042fa,_0x57377b=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x29f711={};_0x29f711['text/plain']=new Blob([_0x3042fa],{'type':'text/plain'});_0x57377b&&(_0x29f711['text/html']=new Blob([_0x57377b],{'type':'text/html'}));const _0x5c5c74=new ClipboardItem(_0x29f711);return await navigator['clipboard']['write']([_0x5c5c74]),!![];}catch(_0x4214ec){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4214ec);}try{const _0x272a06=_0x5a1e6d=>{_0x5a1e6d['preventDefault'](),_0x5a1e6d['clipboardData']['setData']('text/plain',_0x3042fa),_0x57377b&&_0x5a1e6d['clipboardData']['setData']('text/html',_0x57377b);};document['addEventListener']('copy',_0x272a06);const _0xb6f765=document['execCommand']('copy');document['removeEventListener']('copy',_0x272a06);if(_0xb6f765)return!![];}catch(_0x499498){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x499498);}try{const _0x16da3f=document['createElement']('textarea');_0x16da3f['value']=_0x3042fa,_0x16da3f['style']['position']='fixed',_0x16da3f['style']['opacity']='0',_0x16da3f['style']['pointerEvents']='none',document['body']['appendChild'](_0x16da3f),_0x16da3f['select']();const _0xb8752c=document['execCommand']('copy');return document['body']['removeChild'](_0x16da3f),_0xb8752c;}catch(_0x1d1955){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1d1955),![];}},'showToast'(_0x38ed37,_0x47266c='info'){const _0x5a3ab2=getNextToastId(),_0x47395b=document['createElement']('div');_0x47395b['className']='toast\x20toast-'+_0x47266c,_0x47395b['textContent']=_0x38ed37,_0x47395b['dataset']['toastId']=_0x5a3ab2,document['body']['appendChild'](_0x47395b);const _0x1f437b=_0x47266c==='error'?0x2710:0xbb8,_0x50f98a=setTimeout(()=>{removeToastById(_0x5a3ab2);},_0x1f437b),_0xa17abf={'id':_0x5a3ab2,'el':_0x47395b,'timeoutId':_0x50f98a};return registerToast(_0xa17abf),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x47395b['classList']['add']('show');});}),_0x5a3ab2;},'showError'(_0x558c11){console['error'](_0x558c11);const _0x47cd15=typeof _0x558c11==='string'?_0x558c11:_0x558c11['message']||'An\x20error\x20occurred';this['showToast'](_0x47cd15,'error');},'showSuccess'(_0x3d3010){this['showToast'](_0x3d3010,'success');},'capitalize'(_0x434c2e){if(!_0x434c2e)return'';return _0x434c2e['charAt'](0x0)['toUpperCase']()+_0x434c2e['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x381c03){return escapeHtmlValue(_0x381c03);},'ansiToHtml'(_0x31853b){if(_0x31853b===null||_0x31853b===undefined)return'';let _0x185bf9=this['escapeHtml'](_0x31853b);const _0x1d7e3b={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x2cfb14={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x3cede1=0x0;return _0x185bf9=_0x185bf9['replace'](/\x1b\[([0-9;]*)m/g,(_0xad35a9,_0x5ae529)=>{if(!_0x5ae529||_0x5ae529==='0'){const _0x5f4a09='</span>'['repeat'](_0x3cede1);return _0x3cede1=0x0,_0x5f4a09;}const _0x599cfe=_0x5ae529['split'](';'),_0x23f814=[];for(const _0x1975e5 of _0x599cfe){if(_0x1975e5==='1')_0x23f814['push']('font-weight:bold');else{if(_0x1975e5==='2')_0x23f814['push']('opacity:0.7');else{if(_0x1975e5==='3')_0x23f814['push']('font-style:italic');else{if(_0x1975e5==='4')_0x23f814['push']('text-decoration:underline');else{if(_0x1975e5==='9')_0x23f814['push']('text-decoration:line-through');else{if(_0x1d7e3b[_0x1975e5])_0x23f814['push']('color:'+_0x1d7e3b[_0x1975e5]);else{if(_0x2cfb14[_0x1975e5])_0x23f814['push']('background-color:'+_0x2cfb14[_0x1975e5]);}}}}}}}if(_0x23f814['length']>0x0)return _0x3cede1++,'<span\x20style=\x22'+_0x23f814['join'](';')+'\x22>';return'';}),_0x185bf9+='</span>'['repeat'](_0x3cede1),_0x185bf9=_0x185bf9['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4f7c98,_0x205ab5)=>{if(!_0x205ab5||_0x205ab5==='0')return'';const _0x2d007e=_0x205ab5['split'](';'),_0x4bb12a=[];for(const _0x59ce87 of _0x2d007e){if(_0x59ce87==='1')_0x4bb12a['push']('font-weight:bold');else{if(_0x1d7e3b[_0x59ce87])_0x4bb12a['push']('color:'+_0x1d7e3b[_0x59ce87]);else{if(_0x2cfb14[_0x59ce87])_0x4bb12a['push']('background-color:'+_0x2cfb14[_0x59ce87]);}}}if(_0x4bb12a['length']>0x0)return'<span\x20style=\x22'+_0x4bb12a['join'](';')+'\x22>';return'';}),_0x185bf9;},'showModal'({title:_0x5ab56b,content:_0x5e17e5,buttons:buttons=[]}){const _0x1f70aa='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x5ab56b)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5e17e5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x2a4c0d,_0x3079dd)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2a4c0d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3079dd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2a4c0d['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x4f31a2=document['createElement']('div');_0x4f31a2['id']='utils-modal',_0x4f31a2['className']='modal',_0x4f31a2['innerHTML']=_0x1f70aa,document['body']['appendChild'](_0x4f31a2);const _0x12aad4=document['getElementById']('utils-modal-close');_0x12aad4&&_0x12aad4['addEventListener']('click',()=>this['hideModal']());const _0x3dfd41=_0x4f31a2['querySelectorAll']('[data-btn-index]');_0x3dfd41['forEach'](_0x51faa3=>{const _0x10305f=parseInt(_0x51faa3['dataset']['btnIndex']);buttons[_0x10305f]?.['onClick']&&_0x51faa3['addEventListener']('click',buttons[_0x10305f]['onClick']);});const _0xb79a9c=document['getElementById']('utils-modal-overlay');_0xb79a9c&&_0xb79a9c['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x231b73=document['getElementById']('utils-modal');_0x231b73&&_0x231b73['remove']();},'parseKeyValuePairs'(_0x484cbd){const _0x3ab1eb={};if(!_0x484cbd)return _0x3ab1eb;return _0x484cbd['split'](/\r?\n/)['map'](_0x3a113f=>_0x3a113f['trim']())['filter'](Boolean)['forEach'](_0x282b0b=>{const _0x4aee4c=_0x282b0b['indexOf']('=');if(_0x4aee4c>0x0){const _0x1893be=_0x282b0b['slice'](0x0,_0x4aee4c)['trim'](),_0xee9959=_0x282b0b['slice'](_0x4aee4c+0x1)['trim']();if(_0x1893be)_0x3ab1eb[_0x1893be]=_0xee9959;}}),_0x3ab1eb;},'debounce'(_0x20b6c1,_0x5034e8=0xfa){let _0x170d13=null;return(..._0x3bb20a)=>{clearTimeout(_0x170d13),_0x170d13=setTimeout(()=>_0x20b6c1['apply'](this,_0x3bb20a),_0x5034e8);};},'formatTimestamp'(_0x420b59){if(!_0x420b59)return'N/A';const _0x473962=new Date(_0x420b59);return _0x473962['toLocaleDateString']()+'\x20'+_0x473962['toLocaleTimeString']();},'getQueryParams'(){const _0x425104=new URLSearchParams(window['location']['search']),_0x5bfbfc={};for(const [_0x58c873,_0x5d9109]of _0x425104){_0x5bfbfc[_0x58c873]=_0x5d9109;}return _0x5bfbfc;},'formatDuration'(_0x172c10,_0xb4178b){if(!_0x172c10)return'N/A';const _0x7a1bad=new Date(_0x172c10),_0x42314e=_0xb4178b?new Date(_0xb4178b):new Date(),_0xf11ba5=_0x42314e-_0x7a1bad;if(_0xf11ba5<0x0)return'0s';const _0x1aa1ea=Math['floor'](_0xf11ba5/0x3e8),_0x32762f=Math['floor'](_0x1aa1ea/0x3c),_0x3572ab=Math['floor'](_0x32762f/0x3c),_0x242677=Math['floor'](_0x3572ab/0x18);if(_0x1aa1ea<0x3c)return _0x1aa1ea+'s';if(_0x32762f<0x3c)return _0x32762f+'m\x20'+_0x1aa1ea%0x3c+'s';if(_0x3572ab<0x18)return _0x3572ab+'h\x20'+_0x32762f%0x3c+'m\x20'+_0x1aa1ea%0x3c+'s';return _0x242677+'d\x20'+_0x3572ab%0x18+'h\x20'+_0x32762f%0x3c+'m';},'renderMarkdown'(_0x41d044,_0x33a489={}){if(!_0x41d044)return'';_0x41d044=this['rewriteAttachmentLinks'](_0x41d044,_0x33a489),_0x41d044=this['rewriteColorSyntax'](_0x41d044);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x41d044,_0x33a489);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x41d044);}catch(_0x148902){return console['error']('Markdown\x20parsing\x20error:',_0x148902),this['renderMarkdownFallback'](_0x41d044,_0x33a489);}},'rewriteAttachmentLinks'(_0x23f313,_0x18dccb={}){const _0x44faf2=typeof _0x18dccb['resolveAttachmentUrl']==='function'?_0x18dccb['resolveAttachmentUrl']:_0x18dccb['taskId']?_0x808619=>API_BASE+'/tasks/'+_0x18dccb['taskId']+'/attachments/'+encodeURIComponent(_0x808619):null;if(!_0x44faf2)return _0x23f313;return String(_0x23f313)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x4718c5,_0x36626e)=>{const _0x4c63db=String(_0x36626e||'')['trim']();if(!_0x4c63db)return _0x4718c5;let _0x54c2cd=_0x4c63db;try{_0x54c2cd=decodeURIComponent(_0x4c63db);}catch{}const _0x5abe6e=_0x44faf2(_0x54c2cd);if(!_0x5abe6e)return _0x4718c5;return']('+_0x5abe6e+')';});},'rewriteColorSyntax'(_0xb33ac8){if(!_0xb33ac8)return _0xb33ac8;return String(_0xb33ac8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x20fbc9,_0x18012a,_0x46054a)=>{const _0x42e987=this['rewriteColorSyntax'](_0x46054a);return'<span\x20style=\x22color:\x20'+_0x18012a+'\x22>'+_0x42e987+'</span>';});},'renderMarkdownFallback'(_0x2cd6f7,_0x26ec44={}){if(!_0x2cd6f7)return'';_0x2cd6f7=_0x2cd6f7['replace'](/\r\n/g,'\x0a'),_0x2cd6f7=_0x2cd6f7['replace'](/\r/g,'\x0a'),_0x2cd6f7=this['rewriteAttachmentLinks'](_0x2cd6f7,_0x26ec44);let _0x3bc40e=this['escapeHtml'](_0x2cd6f7);return _0x3bc40e=_0x3bc40e['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3bc40e=_0x3bc40e['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3bc40e=_0x3bc40e['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3bc40e=_0x3bc40e['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3bc40e=_0x3bc40e['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3bc40e=_0x3bc40e['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3bc40e=_0x3bc40e['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3bc40e=_0x3bc40e['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3bc40e=_0x3bc40e['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3bc40e=_0x3bc40e['replace'](/\n\n/g,'</p><p>'),_0x3bc40e=_0x3bc40e['replace'](/\n/g,'<br>'),'<p>'+_0x3bc40e+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x581a27=new Uint8Array(0x10);crypto['getRandomValues'](_0x581a27),_0x581a27[0x6]=_0x581a27[0x6]&0xf|0x40,_0x581a27[0x8]=_0x581a27[0x8]&0x3f|0x80;const _0x34b9d5=Array['from'](_0x581a27,_0x1171dc=>_0x1171dc['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x34b9d5['slice'](0x0,0x8)+'-'+_0x34b9d5['slice'](0x8,0xc)+'-'+_0x34b9d5['slice'](0xc,0x10)+'-'+_0x34b9d5['slice'](0x10,0x14)+'-'+_0x34b9d5['slice'](0x14);}};export class CustomSelect{constructor(_0x5e9448,_0x2d4424={}){this['nativeSelect']=_0x5e9448,this['options']=_0x2d4424,this['isOpen']=![],this['selectedValue']=_0x5e9448['value']||'',this['searchable']=_0x2d4424['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x209b02=document['createElement']('div');_0x209b02['className']='custom-select';const _0x11cde0=document['createElement']('div');_0x11cde0['className']='custom-select-trigger',_0x11cde0['setAttribute']('tabindex','0'),_0x11cde0['setAttribute']('role','button'),_0x11cde0['setAttribute']('aria-haspopup','listbox');const _0xca7ca5=document['createElement']('span');_0xca7ca5['className']='custom-select-trigger-text';const _0x2f6386=document['createElement']('span');_0x2f6386['className']='custom-select-arrow',_0x2f6386['textContent']='▼',_0x11cde0['appendChild'](_0xca7ca5),_0x11cde0['appendChild'](_0x2f6386);const _0x1c6644=document['createElement']('div');_0x1c6644['className']='custom-select-dropdown',_0x1c6644['setAttribute']('role','listbox');if(this['searchable']){const _0x79cd69=document['createElement']('div');_0x79cd69['className']='custom-select-search';const _0xbe426a=document['createElement']('input');_0xbe426a['type']='text',_0xbe426a['className']='custom-select-search-input',_0xbe426a['placeholder']='Type\x20to\x20search...',_0xbe426a['setAttribute']('aria-label','Search\x20options'),_0xbe426a['addEventListener']('input',_0x529fd2=>{this['searchQuery']=_0x529fd2['target']['value']['toLowerCase'](),this['filterOptions']();}),_0xbe426a['addEventListener']('keydown',_0x3ca657=>{if(_0x3ca657['key']==='Escape')_0x3ca657['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3ca657['key']==='Enter'){_0x3ca657['preventDefault'](),_0x3ca657['stopPropagation']();const _0x4d121a=_0x1c6644['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x4d121a){const _0x4181ea=_0x4d121a['getAttribute']('data-value');this['select'](_0x4181ea);}}}}),_0x79cd69['appendChild'](_0xbe426a),_0x1c6644['appendChild'](_0x79cd69),this['searchInput']=_0xbe426a;}const _0xb20478=document['createElement']('div');_0xb20478['className']='custom-select-options',_0x1c6644['appendChild'](_0xb20478),_0x209b02['appendChild'](_0x11cde0),_0x209b02['appendChild'](_0x1c6644),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x209b02,this['nativeSelect']),this['wrapper']=_0x209b02,this['trigger']=_0x11cde0,this['triggerText']=_0xca7ca5,this['dropdown']=_0x1c6644,this['optionsContainer']=_0xb20478,_0x11cde0['addEventListener']('click',()=>this['toggle']()),_0x11cde0['addEventListener']('keydown',_0x258ea1=>this['handleKeydown'](_0x258ea1)),document['addEventListener']('click',_0x15cb04=>{!_0x209b02['contains'](_0x15cb04['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x31b28b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x31b28b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x3bd89e=new MutationObserver(()=>{this['updateDisabledState']();});_0x3bd89e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x14aace=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x14aace['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4052f9=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4052f9),this['trigger']['setAttribute']('aria-disabled',_0x4052f9?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4052f9?'-1':'0'),_0x4052f9&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2c49c9=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x8aab76=_0x2c49c9['filter'](_0x2926e7=>!_0x2926e7['disabled']&&!_0x2926e7['hidden']);_0x2c49c9['forEach']((_0x5ba3f5,_0x435eee)=>{const _0x5eeda=document['createElement']('div');_0x5eeda['className']='custom-select-option',_0x5eeda['textContent']=_0x5ba3f5['textContent'],_0x5eeda['setAttribute']('data-value',_0x5ba3f5['value']),_0x5eeda['setAttribute']('data-index',_0x435eee),_0x5eeda['setAttribute']('role','option'),_0x5ba3f5['disabled']?_0x5eeda['classList']['add']('disabled'):_0x5eeda['addEventListener']('click',()=>this['select'](_0x5ba3f5['value'])),_0x5ba3f5['value']===this['selectedValue']&&_0x5eeda['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5eeda),this['allOptions']['push']({'element':_0x5eeda,'text':_0x5ba3f5['textContent']['toLowerCase'](),'value':_0x5ba3f5['value'],'disabled':_0x5ba3f5['disabled']});});if(this['searchable']&&this['searchInput']){const _0x26e770=this['searchInput']['parentElement'];_0x8aab76['length']>0x3?_0x26e770['style']['display']='':_0x26e770['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2196c6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x49c949=>{if(!_0x2196c6||_0x49c949['disabled'])_0x49c949['element']['style']['display']='';else{const _0x2fa928=_0x49c949['text']['includes'](_0x2196c6);_0x49c949['element']['style']['display']=_0x2fa928?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x10d04d){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x10d04d,this['nativeSelect']['value']=_0x10d04d;const _0x51cbd1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x51cbd1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1cae12=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1cae12&&(this['triggerText']['textContent']=_0x1cae12['textContent'],_0x1cae12['disabled']||_0x1cae12['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x44257b=>{_0x44257b['getAttribute']('data-value')===this['selectedValue']?_0x44257b['classList']['add']('selected'):_0x44257b['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x468bcf=window['getComputedStyle'](this['dropdown']);if(_0x468bcf['position']==='fixed'){const _0x48f4d4=this['trigger']['getBoundingClientRect'](),_0xe7985c=parseInt(_0x468bcf['maxHeight'])||0xc8,_0x285797=window['innerHeight'],_0x2d8892=_0x285797-_0x48f4d4['bottom'],_0x3928e6=_0x48f4d4['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4aeeb2;_0x2d8892<_0xe7985c&&_0x3928e6>_0x2d8892?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x285797-_0x48f4d4['top']+'px',_0x4aeeb2=Math['min'](_0xe7985c,_0x3928e6-0xa),this['dropdown']['style']['maxHeight']=_0x4aeeb2+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x48f4d4['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4aeeb2=Math['min'](_0xe7985c,_0x2d8892-0xa),this['dropdown']['style']['maxHeight']=_0x4aeeb2+'px');if(this['optionsContainer']){let _0x1330ab=_0x4aeeb2;if(this['searchInput']){const _0x3cfb72=this['searchInput']['parentElement'];_0x3cfb72&&(_0x1330ab-=_0x3cfb72['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1330ab)+'px';}this['dropdown']['style']['left']=_0x48f4d4['left']+'px',this['dropdown']['style']['width']=_0x48f4d4['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x41f907=this['searchInput']['parentElement'];_0x41f907&&_0x41f907['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x137652){if(this['nativeSelect']['disabled'])return;if(_0x137652['key']==='Enter'||_0x137652['key']==='\x20')_0x137652['preventDefault'](),this['toggle']();else _0x137652['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x45e1eb='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x45e1eb),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2030bb=document['getElementById']('confirm-dialog-close'),_0x487eef=document['getElementById']('confirm-dialog-cancel'),_0x54b182=document['getElementById']('confirm-dialog-confirm'),_0x1d5170=this['_modal']['querySelector']('.modal-overlay');_0x2030bb['addEventListener']('click',()=>this['_resolve'](![])),_0x487eef['addEventListener']('click',()=>this['_resolve'](![])),_0x54b182['addEventListener']('click',()=>this['_resolve'](!![])),_0x1d5170['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2c215d=>{if(_0x2c215d['key']==='Escape')_0x2c215d['preventDefault'](),this['_resolve'](![]);else _0x2c215d['key']==='Enter'&&(_0x2c215d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x39b14a,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1ec886=>{this['_resolvePromise']=_0x1ec886,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x39b14a;const _0x502249=document['getElementById']('confirm-dialog-cancel'),_0x33e062=document['getElementById']('confirm-dialog-confirm');_0x502249['textContent']=cancelText,_0x33e062['textContent']=confirmText,_0x33e062['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x33e062['focus']();});},'_resolve'(_0x55b2d9){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x55b2d9),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x57586a,_0xe49423={}){this['container']=_0x57586a,this['options']={'placeholder':_0xe49423['placeholder']||'Type\x20to\x20search...','maxItems':_0xe49423['maxItems']||0x64,'loadItems':_0xe49423['loadItems']||(async()=>[]),'renderItem':_0xe49423['renderItem']||(_0x37494a=>({'primary':String(_0x37494a),'secondary':''})),'onSelect':_0xe49423['onSelect']||(()=>{}),'filterItems':_0xe49423['filterItems']||null,'getItemValue':_0xe49423['getItemValue']||(_0x1c2b21=>_0x1c2b21),'sortItems':_0xe49423['sortItems']||null,'debounceMs':_0xe49423['debounceMs']||0xc8,'minCharsForSearch':_0xe49423['minCharsForSearch']||0x0,'emptyMessage':_0xe49423['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xe49423['loadingMessage']||'Loading...','preload':_0xe49423['preload']!==![],'searchMode':_0xe49423['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3a2502=>this['onBlur'](_0x3a2502)),this['input']['addEventListener']('input',_0x39a7ee=>this['onInput'](_0x39a7ee)),this['input']['addEventListener']('keydown',_0x3af13b=>this['onKeydown'](_0x3af13b)),this['clearBtn']['addEventListener']('mousedown',_0x4cbd5f=>{_0x4cbd5f['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x33d35a=>{_0x33d35a['preventDefault']();}),document['addEventListener']('click',_0x462927=>{!this['wrapper']['contains'](_0x462927['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x1aad50){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1aad50);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5cea1e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xdf1254){const _0x5cc36b=_0xdf1254['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5cc36b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5cc36b):this['loadAndShow'](_0x5cc36b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x8fcafa){switch(_0x8fcafa['key']){case'ArrowDown':_0x8fcafa['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x8fcafa['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x8fcafa['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x8fcafa['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x53b854){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x272314=this['selectedIndex']+_0x53b854;if(_0x272314>=0x0&&_0x272314<this['filteredItems']['length']){this['selectedIndex']=_0x272314,this['updateSelectionHighlight']();const _0x5959df=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5959df[this['selectedIndex']]&&_0x5959df[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x3e60ed=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3e60ed['forEach']((_0x22ebeb,_0x495d0a)=>{_0x22ebeb['classList']['toggle']('keyboard-selected',_0x495d0a===this['selectedIndex']);});}async['loadAndShow'](_0x268e65){this['showLoading']();try{const _0x2f26ff=await this['options']['loadItems'](_0x268e65);if(this['options']['searchMode']==='server'){let _0x57b75e=_0x2f26ff;this['options']['sortItems']&&(_0x57b75e=this['options']['sortItems']([..._0x2f26ff]));this['filteredItems']=_0x57b75e;const _0x78becf=this['filteredItems']['length']>=this['options']['maxItems'];_0x78becf&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x78becf),this['open']();}else this['allItems']=_0x2f26ff,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x268e65);}catch(_0x29e758){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x29e758),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x594f2b){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x594f2b):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x3f69f5=this['filteredItems']['length']>=this['options']['maxItems'];_0x3f69f5&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3f69f5),this['open']();}['renderItems'](_0x393b29){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0xa7520,_0x341f3d)=>{const _0x288623=document['createElement']('div');_0x288623['className']='autocomplete-select-item',_0x288623['setAttribute']('role','option'),_0x288623['setAttribute']('data-index',_0x341f3d);const _0x4bd251=this['options']['renderItem'](_0xa7520);let _0x59bb12='';_0x4bd251['icon']&&(_0x59bb12='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4bd251['iconClass']||'')+'\x22>'+_0x4bd251['icon']+'</span>'),_0x288623['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x59bb12+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x4bd251['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4bd251['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4bd251['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x288623['addEventListener']('click',()=>{this['selectItem'](_0xa7520);}),_0x288623['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x341f3d,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x288623);}),_0x393b29?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x48fee8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x48fee8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x13f102){this['selectedItem']=_0x13f102;const _0x1603b7=this['options']['renderItem'](_0x13f102);this['input']['value']=_0x1603b7['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x13f102);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x202f9f){if(_0x202f9f){this['selectedItem']=_0x202f9f;const _0x117c62=this['options']['renderItem'](_0x202f9f);this['input']['value']=_0x117c62['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x46ffc0){this['allItems']=_0x46ffc0,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x4be099){this['input']['placeholder']=_0x4be099;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1dbad0=null){const _0x30987c=document['getElementById']('admin-menu-container'),_0xd7d096=document['getElementById']('admin-menu-btn'),_0x4d7c67=document['getElementById']('admin-menu');if(!_0x30987c||!_0xd7d096||!_0x4d7c67)return;try{!_0x1dbad0&&(_0x1dbad0=await API['getCurrentUser']());if(_0x1dbad0){const _0x21f637=window['Permissions'],_0x23c497=_0x21f637['hasServerPermission'](_0x1dbad0,'*')||_0x21f637['hasEnvPermission'](_0x1dbad0,'environments:manage')||_0x21f637['hasServerPermission'](_0x1dbad0,'users:create')||_0x21f637['hasTeamPermission'](_0x1dbad0,'teams:manage')||_0x21f637['hasEnvPermission'](_0x1dbad0,'environments:view_details');if(!_0x23c497)return;_0x30987c['hidden']=![];if(!_0x21f637['hasServerPermission'](_0x1dbad0,'*')){const _0x163aa5=_0x4d7c67['querySelectorAll']('.admin-menu-item');_0x163aa5['forEach'](_0x5dad9d=>{const _0x5c39cc=_0x5dad9d['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5c39cc==='Users'&&!_0x21f637['hasServerPermission'](_0x1dbad0,'users:create')&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Skills'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Server\x20Settings'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Server\x20Administration'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Git\x20History'&&(_0x5dad9d['hidden']=!![]),_0x5c39cc==='Roles'&&(_0x5dad9d['hidden']=!![]);});}_0xd7d096['addEventListener']('click',_0x2b668e=>{_0x2b668e['stopPropagation']();const _0x48f144=document['getElementById']('actions-menu');if(_0x48f144)_0x48f144['hidden']=!![];_0x4d7c67['hidden']=!_0x4d7c67['hidden'];}),document['addEventListener']('click',_0x5cb311=>{!_0x4d7c67['hidden']&&!_0xd7d096['contains'](_0x5cb311['target'])&&!_0x4d7c67['contains'](_0x5cb311['target'])&&(_0x4d7c67['hidden']=!![]);}),document['addEventListener']('keydown',_0x229c88=>{_0x229c88['key']==='Escape'&&!_0x4d7c67['hidden']&&(_0x4d7c67['hidden']=!![]);});}}catch(_0x452782){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x452782['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|