@profoundlogic/coderflow-server 0.6.1 → 0.6.3
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 +4 -2
- package/dist/base-image/agent-wrapper.sh +32 -4
- package/dist/base-image/entrypoint.sh +3 -0
- package/dist/coder-server.js +1 -1
- package/dist/config/cli-models.json +12 -0
- 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/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/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-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/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/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/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.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.html +39 -0
- 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/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +23 -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-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +101 -1
- package/dist/web-ui/public/task.html +46 -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
- package/dist/.claude/settings.local.json +0 -20
- package/dist/playwright-test-results/.last-run.json +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x229083=window['location']['pathname'],_0x58493e=_0x229083['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x58493e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x58493e[0x1]),_0x58493e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x11ab96={}){const _0x24aab5=new URLSearchParams();_0x11ab96['userId']&&_0x24aab5['set']('userId',String(_0x11ab96['userId']));_0x11ab96['automation']&&_0x24aab5['set']('automation',String(_0x11ab96['automation']));const _0x28bb2b=API_BASE+'/tasks/stats'+(_0x24aab5['toString']()?'?'+_0x24aab5['toString']():''),_0x12666d=await fetch(_0x28bb2b);if(!_0x12666d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x12666d['statusText']);return await _0x12666d['json']();},async 'getTasks'(_0x1c0f2c={}){const _0x496e10=new URLSearchParams();_0x1c0f2c['status']&&_0x496e10['set']('status',String(_0x1c0f2c['status']));_0x1c0f2c['environment']&&_0x496e10['set']('environment',String(_0x1c0f2c['environment']));_0x1c0f2c['automation']&&_0x496e10['set']('automation',String(_0x1c0f2c['automation']));if(_0x1c0f2c['include']){const _0x3a37c7=Array['isArray'](_0x1c0f2c['include'])?_0x1c0f2c['include']['join'](','):String(_0x1c0f2c['include']);_0x3a37c7&&_0x496e10['set']('include',_0x3a37c7);}_0x1c0f2c['filter']&&_0x496e10['set']('filter',String(_0x1c0f2c['filter']));_0x1c0f2c['page']&&_0x496e10['set']('page',String(_0x1c0f2c['page']));_0x1c0f2c['limit']&&_0x496e10['set']('limit',String(_0x1c0f2c['limit']));_0x1c0f2c['userId']&&_0x496e10['set']('userId',String(_0x1c0f2c['userId']));_0x1c0f2c['search']&&_0x496e10['set']('search',String(_0x1c0f2c['search']));_0x1c0f2c['includeChildTasks']&&_0x496e10['set']('includeChildTasks','true');const _0x810deb=API_BASE+'/tasks'+(_0x496e10['toString']()?'?'+_0x496e10['toString']():''),_0x5cea20=await fetch(_0x810deb);if(!_0x5cea20['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x5cea20['statusText']);return await _0x5cea20['json']();},async 'getAutomations'(_0x39783c={}){const _0x465ff7=new URLSearchParams();_0x39783c['environment']&&_0x465ff7['set']('environment',String(_0x39783c['environment']));const _0xcc7b4=await fetch(API_BASE+'/api/automations'+(_0x465ff7['toString']()?'?'+_0x465ff7['toString']():''));if(!_0xcc7b4['ok']){const _0x2eb720=await _0xcc7b4['json']()['catch'](()=>({}));throw new Error(_0x2eb720['message']||_0x2eb720['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xcc7b4['statusText']);}return await _0xcc7b4['json']();},async 'getAutomation'(_0x423788){const _0x117e46=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x423788));if(!_0x117e46['ok']){const _0x56bc47=await _0x117e46['json']()['catch'](()=>({}));throw new Error(_0x56bc47['message']||_0x56bc47['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x117e46['statusText']);}return await _0x117e46['json']();},async 'createAutomation'(_0x5664cd){const _0xa8e459=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5664cd||{})});if(!_0xa8e459['ok']){const _0x59d50f=await _0xa8e459['json']()['catch'](()=>({}));throw new Error(_0x59d50f['message']||_0x59d50f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xa8e459['statusText']);}return await _0xa8e459['json']();},async 'updateAutomation'(_0x5b0711,_0x4dff1a){const _0x350de1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5b0711),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dff1a||{})});if(!_0x350de1['ok']){const _0x4d992d=await _0x350de1['json']()['catch'](()=>({}));throw new Error(_0x4d992d['message']||_0x4d992d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x350de1['statusText']);}return await _0x350de1['json']();},async 'deleteAutomation'(_0x11a95c){const _0x2bb3b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x11a95c),{'method':'DELETE'});if(!_0x2bb3b7['ok']){const _0x503db7=await _0x2bb3b7['json']()['catch'](()=>({}));throw new Error(_0x503db7['message']||_0x503db7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x2bb3b7['statusText']);}return await _0x2bb3b7['json']();},async 'triggerAutomation'(_0x416d04){const _0x5a7a6a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x416d04)+'/trigger',{'method':'POST'});if(!_0x5a7a6a['ok']){const _0x27f181=await _0x5a7a6a['json']()['catch'](()=>({}));throw new Error(_0x27f181['message']||_0x27f181['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5a7a6a['statusText']);}return await _0x5a7a6a['json']();},async 'setAutomationEnabled'(_0x410c45,_0x56b341){const _0x4fea4f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x410c45)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x56b341})});if(!_0x4fea4f['ok']){const _0x22818e=await _0x4fea4f['json']()['catch'](()=>({}));throw new Error(_0x22818e['message']||_0x22818e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4fea4f['statusText']);}return await _0x4fea4f['json']();},async 'getAutomationHistory'(_0x4d86bd,_0x4cfbed=0x32){const _0x5ef4f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d86bd)+'/history?limit='+encodeURIComponent(String(_0x4cfbed)));if(!_0x5ef4f5['ok']){const _0xa082bd=await _0x5ef4f5['json']()['catch'](()=>({}));throw new Error(_0xa082bd['message']||_0xa082bd['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5ef4f5['statusText']);}return await _0x5ef4f5['json']();},async 'getTask'(_0x4b0c61,_0x129543={}){const _0xa28a94=new URLSearchParams();if(_0x129543['include']){const _0x41aeb3=Array['isArray'](_0x129543['include'])?_0x129543['include']['join'](','):String(_0x129543['include']);if(_0x41aeb3)_0xa28a94['set']('include',_0x41aeb3);}const _0x39a224=await fetch(API_BASE+'/tasks/'+_0x4b0c61+(_0xa28a94['toString']()?'?'+_0xa28a94['toString']():''));if(!_0x39a224['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39a224['statusText']);return await _0x39a224['json']();},async 'getTaskResults'(_0x3cda08){const _0xd1d5b7=await fetch(API_BASE+'/tasks/'+_0x3cda08+'/results');if(!_0xd1d5b7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xd1d5b7['statusText']);return await _0xd1d5b7['json']();},async 'getTaskPatches'(_0xf637e6){const _0x475ab5=await fetch(API_BASE+'/tasks/'+_0xf637e6+'/patches');if(!_0x475ab5['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x475ab5['statusText']);return await _0x475ab5['json']();},async 'getTaskAttachments'(_0x224164){const _0x2a0347=await fetch(API_BASE+'/tasks/'+_0x224164+'/attachments');if(!_0x2a0347['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2a0347['statusText']);return await _0x2a0347['json']();},async 'uploadAttachments'(_0x2fc9af,_0x34e054){const _0x4f1445=new FormData();for(const _0x10d473 of _0x34e054){_0x4f1445['append']('attachments',_0x10d473);}const _0x4b874b=await fetch(API_BASE+'/tasks/'+_0x2fc9af+'/attachments',{'method':'POST','body':_0x4f1445});if(!_0x4b874b['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4b874b['statusText']);return await _0x4b874b['json']();},async 'isAINameGenerationAvailable'(){try{const _0x41d761=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x41d761['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x41d761['json']();}catch(_0x32a20c){return{'available':![],'reason':_0x32a20c['message']};}},async 'generateTaskName'(_0x3d018e){try{const _0x287591=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x3d018e})});return await _0x287591['json']();}catch(_0x5df5c4){return{'success':![],'error':_0x5df5c4['message']};}},async 'createTask'(_0x25c41b){let _0x56288e,_0x3d75c1={};if(_0x25c41b['files']&&_0x25c41b['files']['length']>0x0){const _0x1e194a=new FormData();for(const [_0x43d711,_0x1e35fc]of Object['entries'](_0x25c41b)){if(_0x43d711!=='files'){if(_0x1e35fc==null)continue;typeof _0x1e35fc==='object'?_0x1e194a['append'](_0x43d711,JSON['stringify'](_0x1e35fc)):_0x1e194a['append'](_0x43d711,String(_0x1e35fc));}}for(const _0xa2a908 of _0x25c41b['files']){_0x1e194a['append']('attachments',_0xa2a908);}_0x56288e=_0x1e194a;}else _0x3d75c1['Content-Type']='application/json',_0x56288e=JSON['stringify'](_0x25c41b);const _0x1ebe70=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3d75c1,'body':_0x56288e});if(!_0x1ebe70['ok']){const _0x13fbcc=await _0x1ebe70['json'](),_0x18cc6c=new Error(_0x13fbcc['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1ebe70['statusText']),{message:_0x58df92,..._0x2c4c4f}=_0x13fbcc;Object['assign'](_0x18cc6c,_0x2c4c4f);throw _0x18cc6c;}return await _0x1ebe70['json']();},async 'createTestTask'(_0x21881e){const _0x3895d1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21881e)});if(!_0x3895d1['ok']){const _0x100595=await _0x3895d1['json']();throw new Error(_0x100595['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3895d1['statusText']);}return await _0x3895d1['json']();},async 'createEphemeralTest'(_0x4bb8b9){const _0x191f45=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb8b9)});if(!_0x191f45['ok']){const _0x5f1542=await _0x191f45['json']();throw new Error(_0x5f1542['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x191f45['statusText']);}return await _0x191f45['json']();},async 'createDeployTask'(_0x14c319){const _0x5b662f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x14c319)});if(!_0x5b662f['ok']){const _0x3867f0=await _0x5b662f['json']();throw new Error(_0x3867f0['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5b662f['statusText']);}return await _0x5b662f['json']();},async 'getEnvironments'(){const _0x27ea33=await fetch(API_BASE+'/environments');if(!_0x27ea33['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x27ea33['statusText']);return await _0x27ea33['json']();},async 'getEnvironment'(_0x4611a3){const _0x4cd911=await fetch(API_BASE+'/environments/'+_0x4611a3);if(!_0x4cd911['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4cd911['statusText']);return await _0x4cd911['json']();},async 'getEnvironmentRepoHistory'(_0x35c19d,_0x5c7794,_0x55ec2c={}){if(!_0x35c19d||!_0x5c7794)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x11d30b=new URLSearchParams();if(_0x55ec2c['limit'])_0x11d30b['set']('limit',String(_0x55ec2c['limit']));if(_0x55ec2c['offset'])_0x11d30b['set']('offset',String(_0x55ec2c['offset']));if(_0x55ec2c['search'])_0x11d30b['set']('search',String(_0x55ec2c['search']));if(_0x55ec2c['branch'])_0x11d30b['set']('branch',String(_0x55ec2c['branch']));const _0x6d95c1=API_BASE+'/environments/'+encodeURIComponent(_0x35c19d)+'/repos/'+encodeURIComponent(_0x5c7794)+'/git/history',_0x5aa716=await fetch(''+_0x6d95c1+(_0x11d30b['toString']()?'?'+_0x11d30b['toString']():''));if(!_0x5aa716['ok']){const _0x3fc348=await _0x5aa716['json']()['catch'](()=>({}));throw new Error(_0x3fc348['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5aa716['statusText']);}return await _0x5aa716['json']();},async 'getEnvironmentRepoCommit'(_0x16ca91,_0x3e548e,_0x14b333){if(!_0x16ca91||!_0x3e548e||!_0x14b333)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2ba090=API_BASE+'/environments/'+encodeURIComponent(_0x16ca91)+'/repos/'+encodeURIComponent(_0x3e548e)+'/git/commits/'+encodeURIComponent(_0x14b333),_0x1684b9=await fetch(_0x2ba090);if(!_0x1684b9['ok']){const _0x1c6ebb=await _0x1684b9['json']()['catch'](()=>({}));throw new Error(_0x1c6ebb['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1684b9['statusText']);}return await _0x1684b9['json']();},async 'getEnvironmentRepoBranches'(_0x204664,_0x3b31a2){if(!_0x204664||!_0x3b31a2)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4de03e=API_BASE+'/environments/'+encodeURIComponent(_0x204664)+'/repos/'+encodeURIComponent(_0x3b31a2)+'/git/branches',_0x2cbd7f=await fetch(_0x4de03e);if(!_0x2cbd7f['ok']){const _0x292527=await _0x2cbd7f['json']()['catch'](()=>({}));throw new Error(_0x292527['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2cbd7f['statusText']);}return await _0x2cbd7f['json']();},async 'revertEnvironmentRepoCommit'(_0x3a9136,_0xfbe155,_0x1d4ad2,_0x21a4e7={}){if(!_0x3a9136||!_0xfbe155||!_0x1d4ad2)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3a0238=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x3a9136)+'/repos/'+encodeURIComponent(_0xfbe155)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1d4ad2,..._0x21a4e7})});if(!_0x3a0238['ok']){const _0xa9cc5c=await _0x3a0238['json']()['catch'](()=>({}));throw new Error(_0xa9cc5c['message']||_0xa9cc5c['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3a0238['statusText']);}return await _0x3a0238['json']();},async 'getTemplates'(_0x23f847={}){const _0x565345=new URLSearchParams();if(_0x23f847['include']){const _0x43ace4=Array['isArray'](_0x23f847['include'])?_0x23f847['include']['join'](','):String(_0x23f847['include']);if(_0x43ace4)_0x565345['set']('include',_0x43ace4);}const _0x4a82fb=await fetch(API_BASE+'/templates'+(_0x565345['toString']()?'?'+_0x565345['toString']():''));if(!_0x4a82fb['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4a82fb['statusText']);return await _0x4a82fb['json']();},async 'getTemplatesForEnvironment'(_0x31a65b,_0x2dda94={}){if(!_0x31a65b)throw new Error('Environment\x20name\x20is\x20required');const _0x219d6a=new URLSearchParams();if(_0x2dda94['include']){const _0x131313=Array['isArray'](_0x2dda94['include'])?_0x2dda94['include']['join'](','):String(_0x2dda94['include']);if(_0x131313)_0x219d6a['set']('include',_0x131313);}const _0x38b5ca=await fetch(API_BASE+'/templates/'+_0x31a65b+(_0x219d6a['toString']()?'?'+_0x219d6a['toString']():''));if(!_0x38b5ca['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x31a65b+':\x20'+_0x38b5ca['statusText']);return await _0x38b5ca['json']();},async 'getTemplate'(_0x3347b1,_0x123869,_0x553bb2={}){if(!_0x3347b1||!_0x123869)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2807e2=new URLSearchParams();if(_0x553bb2['include']){const _0x4cabca=Array['isArray'](_0x553bb2['include'])?_0x553bb2['include']['join'](','):String(_0x553bb2['include']);if(_0x4cabca)_0x2807e2['set']('include',_0x4cabca);}const _0x490a60=await fetch(API_BASE+'/templates/'+_0x3347b1+'/'+_0x123869+(_0x2807e2['toString']()?'?'+_0x2807e2['toString']():''));if(!_0x490a60['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x490a60['statusText']);return await _0x490a60['json']();},async 'getTaskLogs'(_0x56b6db,_0x45accb={}){if(!_0x56b6db)throw new Error('Task\x20ID\x20is\x20required');const _0x56ae74=new URLSearchParams();_0x45accb['tail']&&_0x56ae74['set']('tail',String(_0x45accb['tail']));const _0xdc7c1e=await fetch(API_BASE+'/tasks/'+_0x56b6db+'/logs'+(_0x56ae74['toString']()?'?'+_0x56ae74['toString']():''));if(!_0xdc7c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0xdc7c1e['statusText']);return await _0xdc7c1e['text']();},async 'getContainers'(){const _0x351480=await fetch(API_BASE+'/containers');if(!_0x351480['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x351480['statusText']);return await _0x351480['json']();},async 'getContainer'(_0x4b6fbd){const _0xdf80c6=await fetch(API_BASE+'/containers/'+_0x4b6fbd);if(!_0xdf80c6['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xdf80c6['statusText']);return await _0xdf80c6['json']();},async 'startInteractiveContainer'(_0x3ba937){const _0x35ffda=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ba937)});if(!_0x35ffda['ok']){const _0x4684bf=await _0x35ffda['json']()['catch'](()=>({}));throw new Error(_0x4684bf['message']||'Failed\x20to\x20start\x20container:\x20'+_0x35ffda['statusText']);}return await _0x35ffda['json']();},async 'stopContainer'(_0x140e27){const _0x14b17f=await fetch(API_BASE+'/containers/'+_0x140e27,{'method':'DELETE'});if(!_0x14b17f['ok']){const _0x31de43=await _0x14b17f['json']()['catch'](()=>({}));throw new Error(_0x31de43['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x14b17f['statusText']);}return await _0x14b17f['json']();},async 'stopTask'(_0x437548){if(!_0x437548)throw new Error('Task\x20ID\x20is\x20required');const _0x36ef73=await fetch(API_BASE+'/tasks/'+_0x437548+'/stop',{'method':'POST'});if(!_0x36ef73['ok']){const _0xe4868b=await _0x36ef73['json']()['catch'](()=>({}));throw new Error(_0xe4868b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x36ef73['statusText']);}return await _0x36ef73['json']();},async 'interruptTask'(_0x56d8d6){if(!_0x56d8d6)throw new Error('Task\x20ID\x20is\x20required');const _0x4c15ec=await fetch(API_BASE+'/tasks/'+_0x56d8d6+'/interrupt',{'method':'POST'});if(!_0x4c15ec['ok']){const _0xbb2161=await _0x4c15ec['json']()['catch'](()=>({}));throw new Error(_0xbb2161['error']||_0xbb2161['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4c15ec['statusText']);}return await _0x4c15ec['json']();},async 'startTask'(_0x1ec50a){if(!_0x1ec50a)throw new Error('Task\x20ID\x20is\x20required');const _0x4a0a45=await fetch(API_BASE+'/tasks/'+_0x1ec50a+'/start',{'method':'POST'});if(!_0x4a0a45['ok']){const _0x17f93b=await _0x4a0a45['json']()['catch'](()=>({}));throw new Error(_0x17f93b['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4a0a45['statusText']);}return await _0x4a0a45['json']();},async 'deleteTask'(_0x3c3de9){if(!_0x3c3de9)throw new Error('Task\x20ID\x20is\x20required');const _0x65a60f=await fetch(API_BASE+'/tasks/'+_0x3c3de9,{'method':'DELETE'});if(!_0x65a60f['ok']){const _0x13c149=await _0x65a60f['json']()['catch'](()=>({}));throw new Error(_0x13c149['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x65a60f['statusText']);}return await _0x65a60f['json']();},async 'refreshTasksFromDisk'(){const _0xa20ac5=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xa20ac5['ok']){const _0x563e9c=await _0xa20ac5['json']()['catch'](()=>({}));throw new Error(_0x563e9c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xa20ac5['statusText']);}return await _0xa20ac5['json']();},async 'approveTask'(_0x5bc5e9,_0x4fa32f={}){if(!_0x5bc5e9)throw new Error('Task\x20ID\x20is\x20required');const _0x27c124={'commit_message':_0x4fa32f['commit_message']||'','pull':_0x4fa32f['pull']??![],'push':_0x4fa32f['push']??![]};_0x4fa32f['new_branch']&&(_0x27c124['new_branch']=_0x4fa32f['new_branch']);const _0x2d4734=await fetch(API_BASE+'/tasks/'+_0x5bc5e9+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x27c124)});if(!_0x2d4734['ok']){const _0x1bea20=await _0x2d4734['json']()['catch'](()=>({}));let _0x49b8f9=_0x1bea20['error']||_0x1bea20['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2d4734['statusText'];if(_0x1bea20['results']&&Array['isArray'](_0x1bea20['results'])){const _0x1e413f=_0x1bea20['results']['filter'](_0x4e1db5=>!_0x4e1db5['success']&&_0x4e1db5['error']);_0x1e413f['length']>0x0&&(_0x49b8f9=_0x1e413f[0x0]['error']);}throw new Error(_0x49b8f9);}return await _0x2d4734['json']();},async 'getPullRequestInfo'(_0x4c3ae3){if(!_0x4c3ae3)throw new Error('Task\x20ID\x20is\x20required');const _0x3d84ea=await fetch(API_BASE+'/tasks/'+_0x4c3ae3+'/pull-request-info');if(!_0x3d84ea['ok']){const _0x41b8c6=await _0x3d84ea['json']()['catch'](()=>({}));throw new Error(_0x41b8c6['error']||_0x41b8c6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d84ea['statusText']);}return await _0x3d84ea['json']();},async 'createPullRequests'(_0x425cf8,_0x37bdb9){if(!_0x425cf8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37bdb9||!Array['isArray'](_0x37bdb9))throw new Error('repos\x20array\x20is\x20required');const _0x58c5cb=await fetch(API_BASE+'/tasks/'+_0x425cf8+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37bdb9})});if(!_0x58c5cb['ok']){const _0xcc9f67=await _0x58c5cb['json']()['catch'](()=>({}));let _0x5a1a9a=_0xcc9f67['error']||_0xcc9f67['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c5cb['statusText'];if(_0xcc9f67['results']&&Array['isArray'](_0xcc9f67['results'])){const _0x33d7e7=_0xcc9f67['results']['filter'](_0x4fa5a7=>!_0x4fa5a7['success']&&_0x4fa5a7['error']);_0x33d7e7['length']>0x0&&(_0x5a1a9a=_0x33d7e7[0x0]['error']);}throw new Error(_0x5a1a9a);}return await _0x58c5cb['json']();},async 'syncRepos'(_0x13fabd){if(!_0x13fabd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d6321=await fetch(API_BASE+'/tasks/'+_0x13fabd+'/sync-repos',{'method':'POST'});if(!_0x4d6321['ok']){const _0x574cf2=await _0x4d6321['json']()['catch'](()=>({}));throw new Error(_0x574cf2['error']||_0x574cf2['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4d6321['statusText']);}return await _0x4d6321['json']();},async 'getIbmiSyncInfo'(_0x2c3132){if(!_0x2c3132)throw new Error('Task\x20ID\x20is\x20required');const _0x5ee9d3=await fetch(API_BASE+'/tasks/'+_0x2c3132+'/ibmi-sync-info');if(!_0x5ee9d3['ok']){const _0x60d2ff=await _0x5ee9d3['json']()['catch'](()=>({}));throw new Error(_0x60d2ff['error']||_0x60d2ff['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5ee9d3['json']();},async 'getSyncFiles'(_0x312b1b){if(!_0x312b1b)throw new Error('Task\x20ID\x20is\x20required');const _0x30e6d4=await fetch(API_BASE+'/tasks/'+_0x312b1b+'/sync-to-ibmi/files');if(!_0x30e6d4['ok']){const _0x1dbc2a=await _0x30e6d4['json']()['catch'](()=>({}));throw new Error(_0x1dbc2a['error']||_0x1dbc2a['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x30e6d4['json']();},async 'syncToIbmi'(_0x598fa3,_0x1a8be4,_0x3d8d38=null,_0x5883f5=null,_0x16ac4f=null){if(!_0x598fa3)throw new Error('Task\x20ID\x20is\x20required');const _0x1cbb6a={'library':_0x1a8be4};if(_0x3d8d38)_0x1cbb6a['user']=_0x3d8d38;if(_0x5883f5)_0x1cbb6a['password']=_0x5883f5;if(_0x16ac4f)_0x1cbb6a['files']=_0x16ac4f;const _0x53a64c=await fetch(API_BASE+'/tasks/'+_0x598fa3+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cbb6a)});if(!_0x53a64c['ok']){const _0x53fb41=await _0x53a64c['json']()['catch'](()=>({}));throw new Error(_0x53fb41['error']||_0x53fb41['message']||'Sync\x20failed');}return await _0x53a64c['json']();},async 'getIbmiSyncLog'(_0x83b36){if(!_0x83b36)throw new Error('Task\x20ID\x20is\x20required');const _0x4ebc9a=await fetch(API_BASE+'/tasks/'+_0x83b36+'/ibmi-sync-log');if(!_0x4ebc9a['ok']){const _0x431fd0=await _0x4ebc9a['json']()['catch'](()=>({}));throw new Error(_0x431fd0['error']||_0x431fd0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4ebc9a['json']();},async 'pullChanges'(_0x160cf6){if(!_0x160cf6)throw new Error('Task\x20ID\x20is\x20required');const _0x42e047=await fetch(API_BASE+'/tasks/'+_0x160cf6+'/pull-changes',{'method':'POST'});if(!_0x42e047['ok']){const _0x14ab00=await _0x42e047['json']()['catch'](()=>({}));throw new Error(_0x14ab00['error']||_0x14ab00['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x42e047['statusText']);}return await _0x42e047['json']();},async 'readFile'(_0x295da9,_0x23f4ca){if(!_0x295da9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23f4ca)throw new Error('File\x20path\x20is\x20required');const _0x46b551=await fetch(API_BASE+'/tasks/'+_0x295da9+'/files?path='+encodeURIComponent(_0x23f4ca));if(!_0x46b551['ok']){const _0x31e0f4=await _0x46b551['json']()['catch'](()=>({}));throw new Error(_0x31e0f4['error']||_0x31e0f4['message']||'Failed\x20to\x20read\x20file:\x20'+_0x46b551['statusText']);}return await _0x46b551['json']();},'getTaskFileDownloadUrl'(_0x58f072,_0x57f6db){if(!_0x58f072)throw new Error('Task\x20ID\x20is\x20required');if(!_0x57f6db)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x58f072+'/files/download?path='+encodeURIComponent(_0x57f6db);},async 'writeFile'(_0x2c3e5a,_0x29039b,_0x2ea222){if(!_0x2c3e5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x29039b)throw new Error('File\x20path\x20is\x20required');if(_0x2ea222===undefined)throw new Error('Content\x20is\x20required');const _0x787931=await fetch(API_BASE+'/tasks/'+_0x2c3e5a+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x29039b,'content':_0x2ea222})});if(!_0x787931['ok']){const _0x244615=await _0x787931['json']()['catch'](()=>({}));throw new Error(_0x244615['error']||_0x244615['message']||'Failed\x20to\x20write\x20file:\x20'+_0x787931['statusText']);}return await _0x787931['json']();},async 'uploadTaskFiles'(_0x5d7976,_0x4d3996,_0x2e0d8d){if(!_0x5d7976)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d3996)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2e0d8d||_0x2e0d8d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3ef37c=new FormData();_0x3ef37c['append']('targetDir',_0x4d3996);for(const _0x2383d9 of _0x2e0d8d){_0x3ef37c['append']('files',_0x2383d9,_0x2383d9['name']);}const _0xa50fb6=await fetch(API_BASE+'/tasks/'+_0x5d7976+'/files/upload',{'method':'POST','body':_0x3ef37c});if(!_0xa50fb6['ok']){const _0x2123e2=await _0xa50fb6['json']()['catch'](()=>({}));throw new Error(_0x2123e2['error']||_0x2123e2['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa50fb6['statusText']);}return await _0xa50fb6['json']();},async 'deleteFile'(_0x3b2497,_0x5a36d9){if(!_0x3b2497)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a36d9)throw new Error('File\x20path\x20is\x20required');const _0x140864=await fetch(API_BASE+'/tasks/'+_0x3b2497+'/files?path='+encodeURIComponent(_0x5a36d9),{'method':'DELETE'});if(!_0x140864['ok']){const _0x14cdc4=await _0x140864['json']()['catch'](()=>({}));throw new Error(_0x14cdc4['error']||_0x14cdc4['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x140864['statusText']);}return await _0x140864['json']();},async 'discardFile'(_0x2e5d81,_0x2275db,_0x3189cc){if(!_0x2e5d81)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2275db)throw new Error('File\x20path\x20is\x20required');if(!_0x3189cc)throw new Error('Repository\x20path\x20is\x20required');const _0x4f04fe=await fetch(API_BASE+'/tasks/'+_0x2e5d81+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2275db,'repoPath':_0x3189cc})});if(!_0x4f04fe['ok']){const _0x17ec6a=await _0x4f04fe['json']()['catch'](()=>({}));throw new Error(_0x17ec6a['error']||_0x17ec6a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4f04fe['statusText']);}return await _0x4f04fe['json']();},async 'followUpTask'(_0x1e3f0a,_0x5ce96a={}){if(!_0x1e3f0a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ce96a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x341251,_0x1d243b={};if(_0x5ce96a['files']&&_0x5ce96a['files']['length']>0x0){const _0x51504d=new FormData();_0x51504d['append']('instructions',_0x5ce96a['instructions']);for(const _0x574150 of _0x5ce96a['files']){_0x51504d['append']('attachments',_0x574150);}_0x341251=_0x51504d;}else _0x1d243b['Content-Type']='application/json',_0x341251=JSON['stringify']({'instructions':_0x5ce96a['instructions']});const _0x41454f=await fetch(API_BASE+'/tasks/'+_0x1e3f0a+'/follow-up',{'method':'POST','headers':_0x1d243b,'body':_0x341251});if(!_0x41454f['ok']){const _0x5a867d=await _0x41454f['json']()['catch'](()=>({}));throw new Error(_0x5a867d['error']||_0x5a867d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x41454f['statusText']);}return await _0x41454f['json']();},async 'getTaskRewindPoints'(_0x5df724){if(!_0x5df724)throw new Error('Task\x20ID\x20is\x20required');const _0xcea0ee=await fetch(API_BASE+'/tasks/'+_0x5df724+'/rewind-points');if(!_0xcea0ee['ok']){const _0x47bccb=await _0xcea0ee['json']()['catch'](()=>({}));throw new Error(_0x47bccb['error']||_0x47bccb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xcea0ee['statusText']);}return await _0xcea0ee['json']();},async 'rewindTask'(_0x54df15,_0x53d9f5={}){if(!_0x54df15)throw new Error('Task\x20ID\x20is\x20required');const _0x41ccf2=Number['isInteger'](_0x53d9f5['targetFollowUpCount'])?_0x53d9f5['targetFollowUpCount']:0x0,_0x4859f5={'targetFollowUpCount':_0x41ccf2};typeof _0x53d9f5['instructions']==='string'&&_0x53d9f5['instructions']['trim']()&&(_0x4859f5['instructions']=_0x53d9f5['instructions']['trim']());typeof _0x53d9f5['rewindFiles']==='boolean'&&(_0x4859f5['rewindFiles']=_0x53d9f5['rewindFiles']);const _0x588915=await fetch(API_BASE+'/tasks/'+_0x54df15+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4859f5)});if(!_0x588915['ok']){const _0x9d5789=await _0x588915['json']()['catch'](()=>({}));throw new Error(_0x9d5789['error']||_0x9d5789['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x588915['statusText']);}return await _0x588915['json']();},async 'login'(_0x44bca6,_0x2ed539){const _0x27f0d1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x44bca6,'password':_0x2ed539})});if(!_0x27f0d1['ok']){const _0x4d209b=await _0x27f0d1['json']();throw new Error(_0x4d209b['message']||'Login\x20failed');}return await _0x27f0d1['json']();},async 'logout'(){const _0x330d70=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x330d70['ok']){const _0x553591=await _0x330d70['json']();throw new Error(_0x553591['message']||'Logout\x20failed');}return await _0x330d70['json']();},async 'getCurrentUser'(){const _0x455e1c=await fetch(API_BASE+'/auth/me');if(!_0x455e1c['ok'])throw new Error('Not\x20authenticated');const _0x4acfe1=await _0x455e1c['json']();return _0x4acfe1['user'];},async 'getRolesInfo'(){const _0x337fb5=await fetch(API_BASE+'/users/roles');if(!_0x337fb5['ok']){const _0x4af7e1=await _0x337fb5['json']();throw new Error(_0x4af7e1['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x337fb5['json']();},async 'getUsers'(){const _0x2069af=await fetch(API_BASE+'/users');if(!_0x2069af['ok']){const _0x3df7ba=await _0x2069af['json']();throw new Error(_0x3df7ba['message']||'Failed\x20to\x20get\x20users');}return await _0x2069af['json']();},async 'getUser'(_0x1c72f4){const _0x534b14=await fetch(API_BASE+'/users/'+_0x1c72f4);if(!_0x534b14['ok']){const _0x31f1c8=await _0x534b14['json']();throw new Error(_0x31f1c8['message']||'Failed\x20to\x20get\x20user');}return await _0x534b14['json']();},async 'createUser'(_0x5b3627){const _0x34f2c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b3627)});if(!_0x34f2c0['ok']){const _0x36ca69=await _0x34f2c0['json']();throw new Error(_0x36ca69['message']||'Failed\x20to\x20create\x20user');}return await _0x34f2c0['json']();},async 'updateUser'(_0x22c85d,_0x336626){const _0x1c3253=await fetch(API_BASE+'/users/'+_0x22c85d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336626)});if(!_0x1c3253['ok']){const _0x4dc1de=await _0x1c3253['json']();throw new Error(_0x4dc1de['message']||'Failed\x20to\x20update\x20user');}return await _0x1c3253['json']();},async 'deleteUser'(_0x31f99e){const _0x312284=await fetch(API_BASE+'/users/'+_0x31f99e,{'method':'DELETE'});if(!_0x312284['ok']){const _0x56b348=await _0x312284['json']();throw new Error(_0x56b348['message']||'Failed\x20to\x20delete\x20user');}return await _0x312284['json']();},async 'stopAllContainers'(){const _0x5971ee=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x59aebe=await _0x5971ee['json']()['catch'](()=>({}));if(!_0x5971ee['ok'])throw new Error(_0x59aebe['message']||_0x59aebe['error']||'Failed\x20to\x20stop\x20containers');return _0x59aebe;},async 'removeStoppedContainers'(){const _0x3d666c=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x45d5e8=await _0x3d666c['json']()['catch'](()=>({}));if(!_0x3d666c['ok'])throw new Error(_0x45d5e8['message']||_0x45d5e8['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x45d5e8;},async 'pruneDockerResources'(){const _0x40412c=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xf25a82=await _0x40412c['json']()['catch'](()=>({}));if(!_0x40412c['ok'])throw new Error(_0xf25a82['message']||_0xf25a82['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xf25a82;},async 'createPasswordToken'(_0x11860d,_0xd19d93='setup',_0x5b807b=![]){const _0x2644a5=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x11860d,'type':_0xd19d93,'sendEmail':_0x5b807b})});if(!_0x2644a5['ok']){const _0x8e7a14=await _0x2644a5['json']();throw new Error(_0x8e7a14['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2644a5['json']();},async 'getEmailConfig'(){const _0x2ff86d=await fetch(API_BASE+'/password/email-config');if(!_0x2ff86d['ok']){const _0x5c00c6=await _0x2ff86d['json']();throw new Error(_0x5c00c6['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2ff86d['json']();},async 'updateTaskName'(_0x2c18af,_0x16252a){const _0x1a16d2=await fetch(API_BASE+'/tasks/'+_0x2c18af,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x16252a})});if(!_0x1a16d2['ok']){const _0x486537=await _0x1a16d2['json']();throw new Error(_0x486537['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1a16d2['json']();},async 'pinTask'(_0x19c533,_0x50e4a1,_0x137902=null){if(!_0x19c533)throw new Error('Task\x20ID\x20is\x20required');const _0x3072ec={'pinned':_0x50e4a1};_0x137902&&_0x137902['length']>0x0&&(_0x3072ec['additionalTaskIds']=_0x137902);const _0x5afee4=await fetch(API_BASE+'/tasks/'+_0x19c533+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072ec)});if(!_0x5afee4['ok']){const _0x2eb511=await _0x5afee4['json']();throw new Error(_0x2eb511['error']||'Failed\x20to\x20pin\x20task');}return await _0x5afee4['json']();},async 'setTaskWinner'(_0xb3d47f,_0x3be891,_0x551cca=[]){if(!_0xb3d47f)throw new Error('Task\x20ID\x20is\x20required');const _0x2599a5=await fetch(API_BASE+'/tasks/'+_0xb3d47f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3be891,'siblings':_0x551cca})});if(!_0x2599a5['ok']){const _0x199951=await _0x2599a5['json']();throw new Error(_0x199951['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2599a5['json']();},async 'setTaskLoser'(_0x45b06e,_0x2b1389){if(!_0x45b06e)throw new Error('Task\x20ID\x20is\x20required');const _0x2049c4=await fetch(API_BASE+'/tasks/'+_0x45b06e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2b1389})});if(!_0x2049c4['ok']){const _0x45aea6=await _0x2049c4['json']();throw new Error(_0x45aea6['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2049c4['json']();},async 'createTaskGroup'(_0x111faf){const _0x1d98bb=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111faf)});if(!_0x1d98bb['ok']){const _0x4751a3=await _0x1d98bb['json']();throw new Error(_0x4751a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1d98bb['json']();},async 'getTaskGroups'(_0x2dc4de={}){const _0xb2bacd=new URLSearchParams();if(_0x2dc4de['userId'])_0xb2bacd['set']('userId',String(_0x2dc4de['userId']));if(_0x2dc4de['status'])_0xb2bacd['set']('status',String(_0x2dc4de['status']));if(_0x2dc4de['limit'])_0xb2bacd['set']('limit',String(_0x2dc4de['limit']));const _0xfbe2ac=API_BASE+'/tasks/groups'+(_0xb2bacd['toString']()?'?'+_0xb2bacd['toString']():''),_0x2b9a23=await fetch(_0xfbe2ac);if(!_0x2b9a23['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b9a23['json']();},async 'getTaskGroup'(_0x360d97){const _0x5a8bef=await fetch(API_BASE+'/tasks/groups/'+_0x360d97);if(!_0x5a8bef['ok']){const _0x58315e=await _0x5a8bef['json']();throw new Error(_0x58315e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5a8bef['json']();},async 'updateTaskGroup'(_0x20700c,_0x50833c,_0x34494f){const _0x2e9d00=await fetch(API_BASE+'/tasks/'+_0x20700c+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50833c,'groupIndex':_0x34494f})});if(!_0x2e9d00['ok']){const _0x596ed0=await _0x2e9d00['json']();throw new Error(_0x596ed0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2e9d00['json']();},async 'removeTaskFromGroup'(_0x5b993c){return this['updateTaskGroup'](_0x5b993c,null,null);},async 'deleteTaskGroup'(_0x50198e,_0x40cecd=![]){const _0x55aeab=_0x40cecd?'?deleteTasks=true':'',_0x13bb47=await fetch(API_BASE+'/tasks/groups/'+_0x50198e+_0x55aeab,{'method':'DELETE'});if(!_0x13bb47['ok']){const _0x1d889e=await _0x13bb47['json']();throw new Error(_0x1d889e['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x4552b9,_0x1baed7){const _0xc393f2=await fetch(API_BASE+'/tasks/groups/'+_0x4552b9+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x1baed7})});if(!_0xc393f2['ok']){const _0x2c5066=await _0xc393f2['json']();throw new Error(_0x2c5066['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xc393f2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x37375d){if(!_0x37375d)throw new Error('Task\x20ID\x20is\x20required');const _0x11e421=await fetch(API_BASE+'/tasks/'+_0x37375d+'/comments');if(!_0x11e421['ok']){const _0x49ba8c=await _0x11e421['json']()['catch'](()=>({}));throw new Error(_0x49ba8c['error']||'Failed\x20to\x20get\x20comments');}return await _0x11e421['json']();},async 'addComment'(_0x191c53,_0x2d24cf){if(!_0x191c53)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d24cf)throw new Error('Comment\x20content\x20is\x20required');const _0xa11d57=await fetch(API_BASE+'/tasks/'+_0x191c53+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2d24cf})});if(!_0xa11d57['ok']){const _0x429ed2=await _0xa11d57['json']()['catch'](()=>({}));throw new Error(_0x429ed2['error']||'Failed\x20to\x20add\x20comment');}return await _0xa11d57['json']();},async 'updateComment'(_0x407f47,_0x445141,_0x1d4d89){if(!_0x407f47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x445141)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d4d89)throw new Error('Comment\x20content\x20is\x20required');const _0x1fa569=await fetch(API_BASE+'/tasks/'+_0x407f47+'/comments/'+_0x445141,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4d89})});if(!_0x1fa569['ok']){const _0xb48f61=await _0x1fa569['json']()['catch'](()=>({}));throw new Error(_0xb48f61['error']||'Failed\x20to\x20update\x20comment');}return await _0x1fa569['json']();},async 'deleteComment'(_0x5e972d,_0x3790de){if(!_0x5e972d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3790de)throw new Error('Comment\x20ID\x20is\x20required');const _0x203f84=await fetch(API_BASE+'/tasks/'+_0x5e972d+'/comments/'+_0x3790de,{'method':'DELETE'});if(!_0x203f84['ok']){const _0x3892b6=await _0x203f84['json']()['catch'](()=>({}));throw new Error(_0x3892b6['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203f84['json']();},async 'createObjective'(_0x598c06){const _0x67eed7={'objective':!![],'name':_0x598c06['name']||'','environment':_0x598c06['environment']||null,'agents':_0x598c06['agents']||[],'branches':_0x598c06['branches']||{},'isPinned':_0x598c06['isPinned']||![],'parentObjectiveId':_0x598c06['parentObjectiveId']||null,'env_vars':_0x598c06['envVars']||{},'parameters':{'instructions':_0x598c06['instructions']||''},'files':_0x598c06['files']||[],'jira':_0x598c06['jira']||null};return this['createTask'](_0x67eed7);},async 'updateObjective'(_0x5a2e52,_0x2cec87,_0x2ab3ba=[],_0x5d035c=[]){let _0x1c4487,_0x1b4b50={};const _0x1b5ddd={..._0x2cec87};_0x5d035c&&_0x5d035c['length']>0x0&&(_0x1b5ddd['removeAttachments']=_0x5d035c);if(_0x2ab3ba&&_0x2ab3ba['length']>0x0){const _0x78a83f=new FormData();for(const [_0x33c122,_0x4b18d2]of Object['entries'](_0x1b5ddd)){if(_0x4b18d2==null)continue;typeof _0x4b18d2==='object'?_0x78a83f['append'](_0x33c122,JSON['stringify'](_0x4b18d2)):_0x78a83f['append'](_0x33c122,String(_0x4b18d2));}for(const _0x10fc1c of _0x2ab3ba){_0x78a83f['append']('attachments',_0x10fc1c);}_0x1c4487=_0x78a83f;}else _0x1b4b50['Content-Type']='application/json',_0x1c4487=JSON['stringify'](_0x1b5ddd);const _0x28d716=await fetch(API_BASE+'/tasks/'+_0x5a2e52,{'method':'PATCH','headers':_0x1b4b50,'body':_0x1c4487});if(!_0x28d716['ok']){const _0x3db064=await _0x28d716['json']();throw new Error(_0x3db064['error']||'Failed\x20to\x20update\x20objective');}return await _0x28d716['json']();},async 'deleteObjective'(_0xb09d94){return this['deleteTask'](_0xb09d94);},async 'launchObjective'(_0x383a8a,_0x558f9e={}){const _0x12a286=await fetch(API_BASE+'/tasks/'+_0x383a8a+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x558f9e)});if(!_0x12a286['ok']){const _0x2aa4bd=await _0x12a286['json']();throw new Error(_0x2aa4bd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x12a286['json']();},async 'getObjectiveAttachments'(_0x365f34){return this['getTaskAttachments'](_0x365f34);},async 'createJudgeTask'({environment:_0x484bf5,judgeAgent:_0x30f5cc,groupId:_0x4283e2,taskIds:_0x590ce4,judgeCustomInstructions:_0xa0d4e7,isPinned:_0x37a681}){const _0x20b92c=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x484bf5,'judgeAgent':_0x30f5cc,'groupId':_0x4283e2,'taskIds':_0x590ce4,'judgeCustomInstructions':_0xa0d4e7,'isPinned':_0x37a681})});if(!_0x20b92c['ok']){const _0x180cb7=await _0x20b92c['json']();throw new Error(_0x180cb7['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x20b92c['json']();},async 'getJudgeTasks'(_0x48bd61){const _0x4f7d0c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x48bd61));if(!_0x4f7d0c['ok']){const _0x788803=await _0x4f7d0c['json']();throw new Error(_0x788803['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4f7d0c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1a3070,_0x14bda5,_0x9b4492=''){const _0xbb18b3=await fetch(API_BASE+'/tasks/'+_0x1a3070+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14bda5,'customPreamble':_0x9b4492})});if(!_0xbb18b3['ok']){const _0x2d680a=await _0xbb18b3['json']();throw new Error(_0x2d680a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xbb18b3['json']();},async 'getJiraConfig'(){const _0x3e5f8c=await fetch(API_BASE+'/jira/config');if(!_0x3e5f8c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3e5f8c['json']();},async 'getJiraIssue'(_0x1c3c22){const _0x4b5e13=await fetch(API_BASE+'/jira/issues/'+_0x1c3c22);if(!_0x4b5e13['ok']){const _0x2b1524=await _0x4b5e13['json']()['catch'](()=>({}));throw new Error(_0x2b1524['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4b5e13['statusText']);}return await _0x4b5e13['json']();},async 'searchJiraIssues'(_0x54e077,_0x44140a=0x14){const _0xcdd605=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x54e077,'maxResults':_0x44140a})});if(!_0xcdd605['ok']){const _0x16fb44=await _0xcdd605['json']()['catch'](()=>({}));throw new Error(_0x16fb44['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xcdd605['statusText']);}return await _0xcdd605['json']();},async 'postJiraComment'(_0x537221,_0xeea3a6){const _0x53dbf7=await fetch(API_BASE+'/jira/issues/'+_0x537221+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xeea3a6})});if(!_0x53dbf7['ok']){const _0x325168=await _0x53dbf7['json']()['catch'](()=>({}));throw new Error(_0x325168['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x53dbf7['statusText']);}return await _0x53dbf7['json']();},async 'getJiraComments'(_0x25473a){const _0x225564=await fetch(API_BASE+'/jira/issues/'+_0x25473a+'/comments');if(!_0x225564['ok']){const _0x25d8e9=await _0x225564['json']()['catch'](()=>({}));throw new Error(_0x25d8e9['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x225564['statusText']);}return await _0x225564['json']();},async 'promptParameter'({environment:_0xadeb33,command:_0x37317c,parser:parser='json'}){const _0x261577=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xadeb33,'command':_0x37317c,'parser':parser})});if(!_0x261577['ok']){const _0x28c258=await _0x261577['json']()['catch'](()=>({}));throw new Error(_0x28c258['message']||_0x28c258['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x261577['statusText']);}return await _0x261577['json']();},async 'promptParameterStream'(_0x3c0c9a,_0x3f89dc){const _0x5c09ed=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c0c9a)});if(!_0x5c09ed['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c09ed['statusText']);const _0x4b64b5=_0x5c09ed['body']['getReader'](),_0xbd794c=new TextDecoder();let _0x3cf11d='';return new Promise((_0x591f10,_0x114e6e)=>{const _0x270cef=async()=>{try{const {done:_0x5dd171,value:_0x57dff6}=await _0x4b64b5['read']();if(_0x5dd171)return;_0x3cf11d+=_0xbd794c['decode'](_0x57dff6,{'stream':!![]});const _0xa86b82=_0x3cf11d['split']('\x0a\x0a');_0x3cf11d=_0xa86b82['pop']()||'';for(const _0x1dd1ba of _0xa86b82){if(!_0x1dd1ba['trim']())continue;const _0x5d7861=_0x1dd1ba['split']('\x0a');let _0x2d7c07='message',_0x5235df='';for(const _0x273a45 of _0x5d7861){if(_0x273a45['startsWith']('event:'))_0x2d7c07=_0x273a45['substring'](0x6)['trim']();else _0x273a45['startsWith']('data:')&&(_0x5235df=_0x273a45['substring'](0x5)['trim']());}if(!_0x5235df)continue;try{const _0x4f893c=JSON['parse'](_0x5235df);if(_0x2d7c07==='progress'&&_0x3f89dc)_0x3f89dc(_0x4f893c['stage'],_0x4f893c['message']);else{if(_0x2d7c07==='result'){_0x591f10(_0x4f893c);return;}else{if(_0x2d7c07==='error'){let _0x184051=_0x4f893c['message']||_0x4f893c['error']||'Prompt\x20command\x20failed';_0x4f893c['rawOutput']&&(_0x184051+='\x0a\x0aRaw\x20output:\x0a'+_0x4f893c['rawOutput']);_0x114e6e(new Error(_0x184051));return;}}}}catch(_0x1d5e9c){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1d5e9c),console['error']('Event\x20type:',_0x2d7c07),console['error']('Event\x20data:',_0x5235df),console['error']('First\x20200\x20chars:',_0x5235df['substring'](0x0,0xc8)),_0x114e6e(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1d5e9c['message']+'\x0a\x0aData:\x20'+_0x5235df['substring'](0x0,0x1f4)));return;}}_0x270cef();}catch(_0x4e777b){_0x114e6e(_0x4e777b);}};_0x270cef();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xd20658){const _0x180568=await fetch(''+API_BASE+_0xd20658);if(!_0x180568['ok']){const _0x22c9eb=await _0x180568['json']()['catch'](()=>({'error':_0x180568['statusText']})),_0x40ef63=new Error(_0x22c9eb['error']||_0x22c9eb['message']||_0x180568['statusText']);if(_0x22c9eb['detail']!==undefined)_0x40ef63['detail']=_0x22c9eb['detail'];throw _0x40ef63;}return await _0x180568['json']();},async 'post'(_0x55a0f7,_0x2d2525){const _0x553c66=await fetch(''+API_BASE+_0x55a0f7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2525)});if(!_0x553c66['ok']){const _0x5dc01c=await _0x553c66['json']()['catch'](()=>({'error':_0x553c66['statusText']})),_0x1cf9b9=new Error(_0x5dc01c['error']||_0x5dc01c['message']||_0x553c66['statusText']);if(_0x5dc01c['detail']!==undefined)_0x1cf9b9['detail']=_0x5dc01c['detail'];throw _0x1cf9b9;}return await _0x553c66['json']();},async 'put'(_0x5db327,_0x546895){const _0x598dc9=await fetch(''+API_BASE+_0x5db327,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x546895)});if(!_0x598dc9['ok']){const _0x4c0ee7=await _0x598dc9['json']()['catch'](()=>({'error':_0x598dc9['statusText']})),_0x147b4e=new Error(_0x4c0ee7['error']||_0x4c0ee7['message']||_0x598dc9['statusText']);if(_0x4c0ee7['detail']!==undefined)_0x147b4e['detail']=_0x4c0ee7['detail'];throw _0x147b4e;}return await _0x598dc9['json']();},async 'delete'(_0xac8916,_0x502f18){const _0x2ec6de={'method':'DELETE'};_0x502f18&&(_0x2ec6de['headers']={'Content-Type':'application/json'},_0x2ec6de['body']=JSON['stringify'](_0x502f18));const _0x52a6b0=await fetch(''+API_BASE+_0xac8916,_0x2ec6de);if(!_0x52a6b0['ok']){const _0x20c900=await _0x52a6b0['json']()['catch'](()=>({'error':_0x52a6b0['statusText']})),_0x33d7b1=new Error(_0x20c900['error']||_0x20c900['message']||_0x52a6b0['statusText']);if(_0x20c900['detail']!==undefined)_0x33d7b1['detail']=_0x20c900['detail'];throw _0x33d7b1;}return await _0x52a6b0['json']();},async 'getSkills'(){const _0x41fad3=await fetch(API_BASE+'/skills');if(!_0x41fad3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x41fad3['statusText']);return await _0x41fad3['json']();},async 'getSkill'(_0x2632b8){const _0x213ea1=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2632b8));if(!_0x213ea1['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x213ea1['statusText']);return await _0x213ea1['json']();},async 'createSkill'(_0x559888){const _0x3b78ad=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x559888)});if(!_0x3b78ad['ok']){const _0x2baa18=await _0x3b78ad['json']()['catch'](()=>({'error':_0x3b78ad['statusText']})),_0x3ed6d9=new Error(_0x2baa18['error']||_0x2baa18['message']||_0x3b78ad['statusText']);if(_0x2baa18['detail']!==undefined)_0x3ed6d9['detail']=_0x2baa18['detail'];throw _0x3ed6d9;}return await _0x3b78ad['json']();},async 'updateSkill'(_0x16209c,_0x206422){const _0x6f3362=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x16209c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x206422)});if(!_0x6f3362['ok']){const _0x28e9dd=await _0x6f3362['json']()['catch'](()=>({'error':_0x6f3362['statusText']})),_0x897dbb=new Error(_0x28e9dd['error']||_0x28e9dd['message']||_0x6f3362['statusText']);if(_0x28e9dd['detail']!==undefined)_0x897dbb['detail']=_0x28e9dd['detail'];throw _0x897dbb;}return await _0x6f3362['json']();},async 'deleteSkill'(_0x433fa9){const _0x13703=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x433fa9),{'method':'DELETE'});if(!_0x13703['ok']){const _0x55b363=await _0x13703['json']()['catch'](()=>({'error':_0x13703['statusText']})),_0x3f0dc3=new Error(_0x55b363['error']||_0x55b363['message']||_0x13703['statusText']);if(_0x55b363['detail']!==undefined)_0x3f0dc3['detail']=_0x55b363['detail'];throw _0x3f0dc3;}return await _0x13703['json']();},async 'getSkillFile'(_0x17e140,_0x35dbba){const _0x5a84fe=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e140)+'/files/'+_0x35dbba);if(!_0x5a84fe['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a84fe['statusText']);return await _0x5a84fe['json']();},async 'saveSkillFile'(_0x25dded,_0x7f444a,_0x23c628){const _0x3c0fc5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x25dded)+'/files/'+_0x7f444a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23c628})});if(!_0x3c0fc5['ok']){const _0x6b01=await _0x3c0fc5['json']()['catch'](()=>({'error':_0x3c0fc5['statusText']})),_0x25765d=new Error(_0x6b01['error']||_0x6b01['message']||_0x3c0fc5['statusText']);if(_0x6b01['detail']!==undefined)_0x25765d['detail']=_0x6b01['detail'];throw _0x25765d;}return await _0x3c0fc5['json']();},async 'deleteSkillFile'(_0x4b9509,_0x4fe70a){const _0x3d1cc2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b9509)+'/files/'+_0x4fe70a,{'method':'DELETE'});if(!_0x3d1cc2['ok']){const _0x557260=await _0x3d1cc2['json']()['catch'](()=>({'error':_0x3d1cc2['statusText']})),_0x1fb12e=new Error(_0x557260['error']||_0x557260['message']||_0x3d1cc2['statusText']);if(_0x557260['detail']!==undefined)_0x1fb12e['detail']=_0x557260['detail'];throw _0x1fb12e;}return await _0x3d1cc2['json']();},async 'pullSkills'(){const _0x296bbc=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x296bbc['ok']){const _0x237c30=await _0x296bbc['json']()['catch'](()=>({'error':_0x296bbc['statusText']})),_0x4dd749=new Error(_0x237c30['error']||_0x237c30['message']||_0x296bbc['statusText']);if(_0x237c30['detail']!==undefined)_0x4dd749['detail']=_0x237c30['detail'];throw _0x4dd749;}return await _0x296bbc['json']();},async 'commitSkills'(_0x34920d,_0x3ef7de={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3ef7de,_0x129738=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x34920d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x129738['ok']){const _0x455124=await _0x129738['json']()['catch'](()=>({'error':_0x129738['statusText']})),_0x3591da=new Error(_0x455124['error']||_0x455124['message']||_0x129738['statusText']);if(_0x455124['detail']!==undefined)_0x3591da['detail']=_0x455124['detail'];throw _0x3591da;}return await _0x129738['json']();},async 'discardSkillsChanges'(){const _0x399e19=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x399e19['ok']){const _0x57cf4c=await _0x399e19['json']()['catch'](()=>({'error':_0x399e19['statusText']})),_0x2eb9b7=new Error(_0x57cf4c['error']||_0x57cf4c['message']||_0x399e19['statusText']);if(_0x57cf4c['detail']!==undefined)_0x2eb9b7['detail']=_0x57cf4c['detail'];throw _0x2eb9b7;}return await _0x399e19['json']();},async 'getSkillCatalog'(){const _0x5b7132=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5b7132['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5b7132['statusText']);return await _0x5b7132['json']();},async 'getImportedSkillsRegistry'(){const _0x137238=await fetch(API_BASE+'/external-skills/registry');if(!_0x137238['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x137238['statusText']);return await _0x137238['json']();},async 'importCatalogSkill'(_0x2ff205){const _0x50f88d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2ff205})});if(!_0x50f88d['ok']){const _0x41d5de=await _0x50f88d['json']()['catch'](()=>({'error':_0x50f88d['statusText']})),_0x9b7f17=new Error(_0x41d5de['error']||_0x41d5de['message']||_0x50f88d['statusText']);if(_0x41d5de['detail']!==undefined)_0x9b7f17['detail']=_0x41d5de['detail'];throw _0x9b7f17;}return await _0x50f88d['json']();},async 'importSkillFromGit'(_0x536a93,_0x215b61,_0x3d1f42='main',_0x564ec4=null){const _0x14b286=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x536a93,'skillPath':_0x215b61,'branch':_0x3d1f42,'skillId':_0x564ec4})});if(!_0x14b286['ok']){const _0x3806bf=await _0x14b286['json']()['catch'](()=>({'error':_0x14b286['statusText']})),_0x172a48=new Error(_0x3806bf['error']||_0x3806bf['message']||_0x14b286['statusText']);if(_0x3806bf['detail']!==undefined)_0x172a48['detail']=_0x3806bf['detail'];throw _0x172a48;}return await _0x14b286['json']();},async 'probeMarketplace'(_0xa926f1,_0x1dffb6='main'){const _0x4da08d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa926f1,'branch':_0x1dffb6})});if(!_0x4da08d['ok']){const _0x8413ad=await _0x4da08d['json']()['catch'](()=>({'error':_0x4da08d['statusText']})),_0x3e5b76=new Error(_0x8413ad['error']||_0x8413ad['message']||_0x4da08d['statusText']);if(_0x8413ad['detail']!==undefined)_0x3e5b76['detail']=_0x8413ad['detail'];throw _0x3e5b76;}return await _0x4da08d['json']();},async 'importMarketplaceBundle'(_0x432464,_0x1eb4fd,_0x39b275,_0x196a52=null){const _0x1af5cc=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x432464,'branch':_0x1eb4fd,'bundleId':_0x39b275,'selectedSkills':_0x196a52})});if(!_0x1af5cc['ok']){const _0x1e70a6=await _0x1af5cc['json']()['catch'](()=>({'error':_0x1af5cc['statusText']})),_0x48b28d=new Error(_0x1e70a6['error']||_0x1e70a6['message']||_0x1af5cc['statusText']);if(_0x1e70a6['detail']!==undefined)_0x48b28d['detail']=_0x1e70a6['detail'];throw _0x48b28d;}return await _0x1af5cc['json']();},async 'importSkillFromFolder'(_0x2de262,_0x2122ba=null){const _0x4ed6f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2de262,'skillId':_0x2122ba})});if(!_0x4ed6f7['ok']){const _0x189ecd=await _0x4ed6f7['json']()['catch'](()=>({'error':_0x4ed6f7['statusText']})),_0x214c15=new Error(_0x189ecd['error']||_0x189ecd['message']||_0x4ed6f7['statusText']);if(_0x189ecd['detail']!==undefined)_0x214c15['detail']=_0x189ecd['detail'];throw _0x214c15;}return await _0x4ed6f7['json']();},async 'importSkillFromNpm'(_0x54ed27,_0x4011d5='latest',_0x3239ac=null,_0x386f35=null){const _0x25edc0=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x54ed27,'version':_0x4011d5,'skillId':_0x3239ac,'registry':_0x386f35})});if(!_0x25edc0['ok']){const _0x519a9f=await _0x25edc0['json']()['catch'](()=>({'error':_0x25edc0['statusText']})),_0x219e17=new Error(_0x519a9f['error']||_0x519a9f['message']||_0x25edc0['statusText']);if(_0x519a9f['detail']!==undefined)_0x219e17['detail']=_0x519a9f['detail'];throw _0x219e17;}return await _0x25edc0['json']();},async 'checkSkillUpdates'(_0x164760){const _0x2b14db=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x164760)+'/check-updates',{'method':'POST'});if(!_0x2b14db['ok']){const _0x162df2=await _0x2b14db['json']()['catch'](()=>({'error':_0x2b14db['statusText']})),_0x5989d9=new Error(_0x162df2['error']||_0x162df2['message']||_0x2b14db['statusText']);if(_0x162df2['detail']!==undefined)_0x5989d9['detail']=_0x162df2['detail'];throw _0x5989d9;}return await _0x2b14db['json']();},async 'updateExternalSkill'(_0x2e0252){const _0x26c1cc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e0252)+'/update',{'method':'POST'});if(!_0x26c1cc['ok']){const _0x262cce=await _0x26c1cc['json']()['catch'](()=>({'error':_0x26c1cc['statusText']})),_0x39bb10=new Error(_0x262cce['error']||_0x262cce['message']||_0x26c1cc['statusText']);if(_0x262cce['detail']!==undefined)_0x39bb10['detail']=_0x262cce['detail'];throw _0x39bb10;}return await _0x26c1cc['json']();},async 'updateSkillFlags'(_0x48b1fc,_0x4e4730){const _0x1efcd9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48b1fc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4e4730})});if(!_0x1efcd9['ok']){const _0x1a86ad=await _0x1efcd9['json']()['catch'](()=>({'error':_0x1efcd9['statusText']})),_0x37c39c=new Error(_0x1a86ad['error']||_0x1a86ad['message']||_0x1efcd9['statusText']);if(_0x1a86ad['detail']!==undefined)_0x37c39c['detail']=_0x1a86ad['detail'];throw _0x37c39c;}return await _0x1efcd9['json']();},async 'removeFromImportedRegistry'(_0x330d72){const _0x10f501=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x330d72)+'/registry',{'method':'DELETE'});if(!_0x10f501['ok']){const _0x31e739=await _0x10f501['json']()['catch'](()=>({'error':_0x10f501['statusText']})),_0x58291d=new Error(_0x31e739['error']||_0x31e739['message']||_0x10f501['statusText']);if(_0x31e739['detail']!==undefined)_0x58291d['detail']=_0x31e739['detail'];throw _0x58291d;}return await _0x10f501['json']();},async 'getTeams'(){const _0x4ec490=await fetch(API_BASE+'/teams');if(!_0x4ec490['ok']){const _0x175474=await _0x4ec490['json']()['catch'](()=>({'message':_0x4ec490['statusText']}));throw new Error(_0x175474['message']||'Failed\x20to\x20get\x20teams');}return await _0x4ec490['json']();},async 'getTeam'(_0x3b2d82){const _0x3a50f2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b2d82));if(!_0x3a50f2['ok']){const _0x55e95d=await _0x3a50f2['json']()['catch'](()=>({'message':_0x3a50f2['statusText']}));throw new Error(_0x55e95d['message']||'Failed\x20to\x20get\x20team');}return await _0x3a50f2['json']();},async 'createTeam'(_0xcdd67b){const _0x766aae=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcdd67b)});if(!_0x766aae['ok']){const _0x398853=await _0x766aae['json']()['catch'](()=>({'message':_0x766aae['statusText']}));throw new Error(_0x398853['message']||'Failed\x20to\x20create\x20team');}return await _0x766aae['json']();},async 'updateTeam'(_0x15a0d1,_0x2e3085){const _0x4241e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15a0d1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3085)});if(!_0x4241e8['ok']){const _0x350c80=await _0x4241e8['json']()['catch'](()=>({'message':_0x4241e8['statusText']}));throw new Error(_0x350c80['message']||'Failed\x20to\x20update\x20team');}return await _0x4241e8['json']();},async 'deleteTeam'(_0xd6a32b){const _0x2cc9d2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd6a32b),{'method':'DELETE'});if(!_0x2cc9d2['ok']){const _0x51da6c=await _0x2cc9d2['json']()['catch'](()=>({'message':_0x2cc9d2['statusText']}));throw new Error(_0x51da6c['message']||'Failed\x20to\x20delete\x20team');}return await _0x2cc9d2['json']();},async 'addTeamMember'(_0x27fada,_0x3fa5cc){const _0x16f8c5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x27fada)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3fa5cc})});if(!_0x16f8c5['ok']){const _0x3abd7c=await _0x16f8c5['json']()['catch'](()=>({'message':_0x16f8c5['statusText']}));throw new Error(_0x3abd7c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x16f8c5['json']();},async 'removeTeamMember'(_0x4823f3,_0x553962){const _0x5d78fa=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4823f3)+'/members/'+encodeURIComponent(_0x553962),{'method':'DELETE'});if(!_0x5d78fa['ok']){const _0x2435bd=await _0x5d78fa['json']()['catch'](()=>({'message':_0x5d78fa['statusText']}));throw new Error(_0x2435bd['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x5d78fa['json']();},async 'getBindings'(_0x295fa8={}){const _0xbedc88=new URLSearchParams();if(_0x295fa8['resource_type'])_0xbedc88['set']('resource_type',_0x295fa8['resource_type']);if(_0x295fa8['resource_id'])_0xbedc88['set']('resource_id',_0x295fa8['resource_id']);if(_0x295fa8['subject_type'])_0xbedc88['set']('subject_type',_0x295fa8['subject_type']);if(_0x295fa8['subject_id'])_0xbedc88['set']('subject_id',_0x295fa8['subject_id']);const _0x13f0a8=_0xbedc88['toString'](),_0x8f8606=await fetch(API_BASE+'/bindings'+(_0x13f0a8?'?'+_0x13f0a8:''));if(!_0x8f8606['ok']){const _0x16b6f2=await _0x8f8606['json']()['catch'](()=>({'message':_0x8f8606['statusText']}));throw new Error(_0x16b6f2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8f8606['json']();},async 'createBinding'(_0x12f47b){const _0x366318=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12f47b)});if(!_0x366318['ok']){const _0x20e237=await _0x366318['json']()['catch'](()=>({'message':_0x366318['statusText']}));throw new Error(_0x20e237['message']||'Failed\x20to\x20create\x20binding');}return await _0x366318['json']();},async 'updateBinding'(_0x4fc73d,_0x5b39f8){const _0x276c30=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4fc73d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b39f8)});if(!_0x276c30['ok']){const _0x5a9918=await _0x276c30['json']()['catch'](()=>({'message':_0x276c30['statusText']}));throw new Error(_0x5a9918['message']||'Failed\x20to\x20update\x20binding');}return await _0x276c30['json']();},async 'deleteBinding'(_0x2b6467){const _0x24f299=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2b6467),{'method':'DELETE'});if(!_0x24f299['ok']){const _0x4e92c6=await _0x24f299['json']()['catch'](()=>({'message':_0x24f299['statusText']}));throw new Error(_0x4e92c6['message']||'Failed\x20to\x20delete\x20binding');}return await _0x24f299['json']();},async 'getRoleDefinitions'(){const _0x2f3d57=await fetch(API_BASE+'/roles');if(!_0x2f3d57['ok']){const _0x4eb6b4=await _0x2f3d57['json']()['catch'](()=>({'message':_0x2f3d57['statusText']}));throw new Error(_0x4eb6b4['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2f3d57['json']();},async 'getRoleDefinition'(_0x56fa0e){const _0x55f9ae=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x56fa0e));if(!_0x55f9ae['ok']){const _0x3f0879=await _0x55f9ae['json']()['catch'](()=>({'message':_0x55f9ae['statusText']}));throw new Error(_0x3f0879['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55f9ae['json']();},async 'createRoleDefinition'(_0x1271e3){const _0x482a9f=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1271e3)});if(!_0x482a9f['ok']){const _0x2b02f9=await _0x482a9f['json']()['catch'](()=>({'message':_0x482a9f['statusText']}));throw new Error(_0x2b02f9['message']||_0x2b02f9['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x482a9f['json']();},async 'updateRoleDefinition'(_0x5b861e,_0x10506d){const _0x23c451=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5b861e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10506d)});if(!_0x23c451['ok']){const _0x5eedd0=await _0x23c451['json']()['catch'](()=>({'message':_0x23c451['statusText']}));throw new Error(_0x5eedd0['message']||_0x5eedd0['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x23c451['json']();},async 'deleteRoleDefinition'(_0x425aa7){const _0x5241d9=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x425aa7),{'method':'DELETE'});if(!_0x5241d9['ok']){const _0x975d61=await _0x5241d9['json']()['catch'](()=>({'message':_0x5241d9['statusText']}));throw new Error(_0x975d61['message']||_0x975d61['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5241d9['json']();},async 'getAvailablePermissions'(){const _0x5de42a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5de42a['ok']){const _0x4a923f=await _0x5de42a['json']()['catch'](()=>({'message':_0x5de42a['statusText']}));throw new Error(_0x4a923f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5de42a['json']();},async 'getGitProviderAllowedTeams'(_0x14e463){const _0x49b567=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x14e463)+'/allowed-teams');if(!_0x49b567['ok']){const _0x2f6da4=await _0x49b567['json']()['catch'](()=>({'message':_0x49b567['statusText']}));throw new Error(_0x2f6da4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x49b567['json']();},async 'setGitProviderAllowedTeams'(_0x24c055,_0x2a73d7){const _0x61cf47=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24c055)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2a73d7})});if(!_0x61cf47['ok']){const _0x4dcfc1=await _0x61cf47['json']()['catch'](()=>({'message':_0x61cf47['statusText']}));throw new Error(_0x4dcfc1['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x61cf47['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 _0x4fa871=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3516c5=>{_0x3516c5['el']['style']['bottom']=_0x4fa871+'px';const _0xfec112=_0x3516c5['el']['offsetHeight']||toastState['defaultHeight'];_0x4fa871+=_0xfec112+toastState['gap'];});});}function removeToastById(_0x3c438d){const _0x46f2b5=toastState['toasts']['findIndex'](_0x203878=>_0x203878['id']===_0x3c438d);if(_0x46f2b5===-0x1)return;const _0x24757d=toastState['toasts'][_0x46f2b5];if(_0x24757d['timeoutId'])clearTimeout(_0x24757d['timeoutId']);_0x24757d['el']['classList']['remove']('show'),setTimeout(()=>_0x24757d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x46f2b5,0x1),repositionAllToasts();}function registerToast(_0x280b2b){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x280b2b),repositionAllToasts(),_0x280b2b['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(_0x3e6d68){if(_0x3e6d68===null||_0x3e6d68===undefined)return'';return String(_0x3e6d68)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xac8c54,_0x28910a){if(_0xac8c54&&typeof _0xac8c54==='object'&&!Array['isArray'](_0xac8c54))return{'code':typeof _0xac8c54['text']==='string'?_0xac8c54['text']:'','language':typeof _0xac8c54['lang']==='string'?_0xac8c54['lang']:''};return{'code':typeof _0xac8c54==='string'?_0xac8c54:'','language':typeof _0x28910a==='string'?_0x28910a:''};}function buildMermaidBlock(_0x3ade44){const _0x100f23=String(_0x3ade44||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x100f23))+'\x22>'+escapeHtmlValue(_0x100f23)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x39370b=new marked['Renderer'](),_0x3e015c=_0x39370b['code']['bind'](_0x39370b);return _0x39370b['code']=function(_0x2efffa,_0xb6092e,..._0x38dca0){const {code:_0x4c570f,language:_0x2c5b5b}=getMarkdownCodeBlockPayload(_0x2efffa,_0xb6092e),_0x2134d5=String(_0x2c5b5b||'')['trim']()['toLowerCase']();if(_0x2134d5==='mermaid')return buildMermaidBlock(_0x4c570f);const _0x1aa94c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1aa94c&&_0x2134d5)try{const _0x54d83c=_0x1aa94c['getLanguage'](_0x2134d5)?_0x2134d5:'plaintext',_0x22015d=_0x1aa94c['highlight'](_0x4c570f,{'language':_0x54d83c})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2134d5)+'\x22>'+_0x22015d+'</code></pre>';}catch(_0x1489ff){console['error']('Syntax\x20highlighting\x20error:',_0x1489ff);}return _0x3e015c(_0x2efffa,_0xb6092e,..._0x38dca0);},sharedMarkedRenderer=_0x39370b,_0x39370b;}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 _0x55fc6d=window['mermaid'];if(!_0x55fc6d||typeof _0x55fc6d['initialize']!=='function')return _0x55fc6d||null;return _0x55fc6d['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x55fc6d;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1a163f,_0x50dce8)=>{const _0x293f2a=()=>_0x1a163f(configureMermaidInstance()),_0x885e77=()=>{mermaidLoadPromise=null,_0x50dce8(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x16907b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x16907b&&(_0x16907b=document['createElement']('script'),_0x16907b['id']=MERMAID_SCRIPT_ID,_0x16907b['src']=MERMAID_SCRIPT_SRC,_0x16907b['async']=!![],document['head']['appendChild'](_0x16907b));if(window['mermaid']){_0x293f2a();return;}_0x16907b['addEventListener']('load',_0x293f2a,{'once':!![]}),_0x16907b['addEventListener']('error',_0x885e77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5b01e9){const _0x5a85cd=_0x5b01e9['getAttribute']('data-mermaid-source');if(!_0x5a85cd)return null;let _0x8c3aa9=_0x5a85cd;try{_0x8c3aa9=decodeURIComponent(_0x5a85cd);}catch{}return _0x5b01e9['textContent']=_0x8c3aa9,_0x5b01e9['removeAttribute']('data-processed'),_0x5b01e9['removeAttribute']('aria-roledescription'),_0x5b01e9['removeAttribute']('role'),_0x5b01e9['removeAttribute']('aria-label'),_0x8c3aa9;}function collectMermaidNodes(_0x474349,_0x224db7){if(!(_0x474349 instanceof Element))return;_0x474349['matches']('.mermaid[data-mermaid-source]')&&_0x224db7['add'](_0x474349),_0x474349['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x201440=>{_0x224db7['add'](_0x201440);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11cfb6=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x275478=>setTimeout(_0x275478,0x0);_0x11cfb6(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1bc65b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1bc65b);});});}function queueMermaidRender(_0x809dfd){const _0x4e4e1c=new Set();_0x809dfd instanceof Document||_0x809dfd instanceof DocumentFragment?_0x809dfd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x117268=>_0x4e4e1c['add'](_0x117268)):collectMermaidNodes(_0x809dfd,_0x4e4e1c);if(_0x4e4e1c['size']===0x0)return;_0x4e4e1c['forEach'](_0x51d30e=>pendingMermaidNodes['add'](_0x51d30e)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x36d0a5=Array['from'](pendingMermaidNodes)['filter'](_0x2c2f5a=>_0x2c2f5a['isConnected']);pendingMermaidNodes['clear']();if(_0x36d0a5['length']===0x0)return;const _0xd10ff5=await loadMermaid();if(!_0xd10ff5)return;configureMermaidInstance();const _0x41e7fe=getMermaidTheme();for(const _0x27179f of _0x36d0a5){const _0x164189=_0x27179f['getAttribute']('data-mermaid-source');if(!_0x164189)continue;const _0x1505a0=_0x27179f['getAttribute']('data-processed')==='true';if(_0x1505a0&&_0x27179f['dataset']['mermaidTheme']===_0x41e7fe)continue;restoreMermaidSource(_0x27179f);try{if(typeof _0xd10ff5['run']==='function')await _0xd10ff5['run']({'nodes':[_0x27179f]});else typeof _0xd10ff5['init']==='function'&&_0xd10ff5['init'](undefined,[_0x27179f]);_0x27179f['dataset']['mermaidTheme']=_0x41e7fe,delete _0x27179f['dataset']['mermaidError'];}catch(_0x260283){console['error']('Mermaid\x20render\x20failed:',_0x260283),restoreMermaidSource(_0x27179f),_0x27179f['dataset']['mermaidError']='true',delete _0x27179f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x549de1=>{_0x549de1['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x549de1);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1dbb58=>{_0x1dbb58['forEach'](_0x30b273=>{_0x30b273['addedNodes']['forEach'](_0xb5c048=>{_0xb5c048['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xb5c048);});});}),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'(_0x1cc4cb){const _0x5ec1f3=new Date(_0x1cc4cb),_0xce5009=new Date(),_0x57340e=_0xce5009-_0x5ec1f3,_0x44c44f=Math['floor'](_0x57340e/0x3e8),_0x48a8a5=Math['floor'](_0x44c44f/0x3c),_0x3fcbba=Math['floor'](_0x48a8a5/0x3c),_0x5391e2=Math['floor'](_0x3fcbba/0x18);if(_0x44c44f<0x3c)return'now';if(_0x48a8a5<0x3c)return _0x48a8a5+'m\x20ago';if(_0x3fcbba<0x18)return _0x3fcbba+'h\x20ago';return _0x5391e2+'d\x20ago';},'getStatusIcon'(_0x5544f0){switch(_0x5544f0){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a42bb){switch(_0x4a42bb){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'(_0x50494a,_0x323404=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x39f204={};_0x39f204['text/plain']=new Blob([_0x50494a],{'type':'text/plain'});_0x323404&&(_0x39f204['text/html']=new Blob([_0x323404],{'type':'text/html'}));const _0x5deda2=new ClipboardItem(_0x39f204);return await navigator['clipboard']['write']([_0x5deda2]),!![];}catch(_0xc19abc){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc19abc);}try{const _0x36f279=_0x1452be=>{_0x1452be['preventDefault'](),_0x1452be['clipboardData']['setData']('text/plain',_0x50494a),_0x323404&&_0x1452be['clipboardData']['setData']('text/html',_0x323404);};document['addEventListener']('copy',_0x36f279);const _0x209b8a=document['execCommand']('copy');document['removeEventListener']('copy',_0x36f279);if(_0x209b8a)return!![];}catch(_0x39556b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x39556b);}try{const _0x4bcba1=document['createElement']('textarea');_0x4bcba1['value']=_0x50494a,_0x4bcba1['style']['position']='fixed',_0x4bcba1['style']['opacity']='0',_0x4bcba1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4bcba1),_0x4bcba1['select']();const _0x401863=document['execCommand']('copy');return document['body']['removeChild'](_0x4bcba1),_0x401863;}catch(_0xfe77d8){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xfe77d8),![];}},'showToast'(_0x5d9341,_0x463245='info'){const _0x3afd8b=getNextToastId(),_0x323df9=document['createElement']('div');_0x323df9['className']='toast\x20toast-'+_0x463245,_0x323df9['textContent']=_0x5d9341,_0x323df9['dataset']['toastId']=_0x3afd8b,document['body']['appendChild'](_0x323df9);const _0x5a2ab8=_0x463245==='error'?0x2710:0xbb8,_0x29aedd=setTimeout(()=>{removeToastById(_0x3afd8b);},_0x5a2ab8),_0x107031={'id':_0x3afd8b,'el':_0x323df9,'timeoutId':_0x29aedd};return registerToast(_0x107031),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x323df9['classList']['add']('show');});}),_0x3afd8b;},'showError'(_0x47a311){console['error'](_0x47a311);const _0x18288a=typeof _0x47a311==='string'?_0x47a311:_0x47a311['message']||'An\x20error\x20occurred';this['showToast'](_0x18288a,'error');},'showSuccess'(_0xe80d63){this['showToast'](_0xe80d63,'success');},'capitalize'(_0x21174d){if(!_0x21174d)return'';return _0x21174d['charAt'](0x0)['toUpperCase']()+_0x21174d['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3338a3){return escapeHtmlValue(_0x3338a3);},'ansiToHtml'(_0x276d64){if(_0x276d64===null||_0x276d64===undefined)return'';let _0x18f1f7=this['escapeHtml'](_0x276d64);const _0x4906d7={'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'},_0x32db31={'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 _0x2372e8=0x0;return _0x18f1f7=_0x18f1f7['replace'](/\x1b\[([0-9;]*)m/g,(_0x5e0a99,_0x3d3f40)=>{if(!_0x3d3f40||_0x3d3f40==='0'){const _0x314b74='</span>'['repeat'](_0x2372e8);return _0x2372e8=0x0,_0x314b74;}const _0x2f6cb0=_0x3d3f40['split'](';'),_0x242fe1=[];for(const _0x1855e5 of _0x2f6cb0){if(_0x1855e5==='1')_0x242fe1['push']('font-weight:bold');else{if(_0x1855e5==='2')_0x242fe1['push']('opacity:0.7');else{if(_0x1855e5==='3')_0x242fe1['push']('font-style:italic');else{if(_0x1855e5==='4')_0x242fe1['push']('text-decoration:underline');else{if(_0x1855e5==='9')_0x242fe1['push']('text-decoration:line-through');else{if(_0x4906d7[_0x1855e5])_0x242fe1['push']('color:'+_0x4906d7[_0x1855e5]);else{if(_0x32db31[_0x1855e5])_0x242fe1['push']('background-color:'+_0x32db31[_0x1855e5]);}}}}}}}if(_0x242fe1['length']>0x0)return _0x2372e8++,'<span\x20style=\x22'+_0x242fe1['join'](';')+'\x22>';return'';}),_0x18f1f7+='</span>'['repeat'](_0x2372e8),_0x18f1f7=_0x18f1f7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x15e8f1,_0x4ea55c)=>{if(!_0x4ea55c||_0x4ea55c==='0')return'';const _0x1efdbc=_0x4ea55c['split'](';'),_0x174ff7=[];for(const _0x19d995 of _0x1efdbc){if(_0x19d995==='1')_0x174ff7['push']('font-weight:bold');else{if(_0x4906d7[_0x19d995])_0x174ff7['push']('color:'+_0x4906d7[_0x19d995]);else{if(_0x32db31[_0x19d995])_0x174ff7['push']('background-color:'+_0x32db31[_0x19d995]);}}}if(_0x174ff7['length']>0x0)return'<span\x20style=\x22'+_0x174ff7['join'](';')+'\x22>';return'';}),_0x18f1f7;},'showModal'({title:_0x5185a2,content:_0x29eaa1,buttons:buttons=[]}){const _0x484b42='\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'](_0x5185a2)+'</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'+_0x29eaa1+'\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']((_0x212d44,_0x49f117)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x212d44['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x49f117+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x212d44['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',_0x536f79=document['createElement']('div');_0x536f79['id']='utils-modal',_0x536f79['className']='modal',_0x536f79['innerHTML']=_0x484b42,document['body']['appendChild'](_0x536f79);const _0x56729a=document['getElementById']('utils-modal-close');_0x56729a&&_0x56729a['addEventListener']('click',()=>this['hideModal']());const _0x347d=_0x536f79['querySelectorAll']('[data-btn-index]');_0x347d['forEach'](_0x543c5e=>{const _0x1a04ef=parseInt(_0x543c5e['dataset']['btnIndex']);buttons[_0x1a04ef]?.['onClick']&&_0x543c5e['addEventListener']('click',buttons[_0x1a04ef]['onClick']);});const _0x388b98=document['getElementById']('utils-modal-overlay');_0x388b98&&_0x388b98['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1d6af0=document['getElementById']('utils-modal');_0x1d6af0&&_0x1d6af0['remove']();},'parseKeyValuePairs'(_0x1c008c){const _0x1eb68a={};if(!_0x1c008c)return _0x1eb68a;return _0x1c008c['split'](/\r?\n/)['map'](_0x128a36=>_0x128a36['trim']())['filter'](Boolean)['forEach'](_0x413fd6=>{const _0x4b1ab9=_0x413fd6['indexOf']('=');if(_0x4b1ab9>0x0){const _0x4c9ae9=_0x413fd6['slice'](0x0,_0x4b1ab9)['trim'](),_0x542bfd=_0x413fd6['slice'](_0x4b1ab9+0x1)['trim']();if(_0x4c9ae9)_0x1eb68a[_0x4c9ae9]=_0x542bfd;}}),_0x1eb68a;},'debounce'(_0x3cb44f,_0x38d998=0xfa){let _0x5c9606=null;return(..._0x51e903)=>{clearTimeout(_0x5c9606),_0x5c9606=setTimeout(()=>_0x3cb44f['apply'](this,_0x51e903),_0x38d998);};},'formatTimestamp'(_0x2f0cc4){if(!_0x2f0cc4)return'N/A';const _0x3ec1c2=new Date(_0x2f0cc4);return _0x3ec1c2['toLocaleDateString']()+'\x20'+_0x3ec1c2['toLocaleTimeString']();},'getQueryParams'(){const _0x7af1e=new URLSearchParams(window['location']['search']),_0x5f4ca7={};for(const [_0x1738b7,_0x239573]of _0x7af1e){_0x5f4ca7[_0x1738b7]=_0x239573;}return _0x5f4ca7;},'formatDuration'(_0x36b4e3,_0x37fc32){if(!_0x36b4e3)return'N/A';const _0x15a2d6=new Date(_0x36b4e3),_0x265079=_0x37fc32?new Date(_0x37fc32):new Date(),_0x1e8111=_0x265079-_0x15a2d6;if(_0x1e8111<0x0)return'0s';const _0x459eaa=Math['floor'](_0x1e8111/0x3e8),_0x57b5e8=Math['floor'](_0x459eaa/0x3c),_0x1a56eb=Math['floor'](_0x57b5e8/0x3c),_0x2ebbfe=Math['floor'](_0x1a56eb/0x18);if(_0x459eaa<0x3c)return _0x459eaa+'s';if(_0x57b5e8<0x3c)return _0x57b5e8+'m\x20'+_0x459eaa%0x3c+'s';if(_0x1a56eb<0x18)return _0x1a56eb+'h\x20'+_0x57b5e8%0x3c+'m\x20'+_0x459eaa%0x3c+'s';return _0x2ebbfe+'d\x20'+_0x1a56eb%0x18+'h\x20'+_0x57b5e8%0x3c+'m';},'renderMarkdown'(_0x485edd,_0x28dcae={}){if(!_0x485edd)return'';_0x485edd=this['rewriteAttachmentLinks'](_0x485edd,_0x28dcae),_0x485edd=this['rewriteColorSyntax'](_0x485edd);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x485edd);}catch(_0x50866b){return console['error']('Markdown\x20parsing\x20error:',_0x50866b),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);}},'rewriteAttachmentLinks'(_0x2df884,_0x3e9ea5={}){const _0x62310a=typeof _0x3e9ea5['resolveAttachmentUrl']==='function'?_0x3e9ea5['resolveAttachmentUrl']:_0x3e9ea5['taskId']?_0x2eb663=>API_BASE+'/tasks/'+_0x3e9ea5['taskId']+'/attachments/'+encodeURIComponent(_0x2eb663):null;if(!_0x62310a)return _0x2df884;return String(_0x2df884)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x54bd4c,_0x8dd37a)=>{const _0x445a77=String(_0x8dd37a||'')['trim']();if(!_0x445a77)return _0x54bd4c;let _0x27b056=_0x445a77;try{_0x27b056=decodeURIComponent(_0x445a77);}catch{}const _0x34f81f=_0x62310a(_0x27b056);if(!_0x34f81f)return _0x54bd4c;return']('+_0x34f81f+')';});},'rewriteColorSyntax'(_0x391ede){if(!_0x391ede)return _0x391ede;return String(_0x391ede)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1673ee,_0x444781,_0x53d931)=>{const _0x2519ab=this['rewriteColorSyntax'](_0x53d931);return'<span\x20style=\x22color:\x20'+_0x444781+'\x22>'+_0x2519ab+'</span>';});},'renderMarkdownFallback'(_0x1e1613,_0x516787={}){if(!_0x1e1613)return'';_0x1e1613=_0x1e1613['replace'](/\r\n/g,'\x0a'),_0x1e1613=_0x1e1613['replace'](/\r/g,'\x0a'),_0x1e1613=this['rewriteAttachmentLinks'](_0x1e1613,_0x516787);let _0x322186=this['escapeHtml'](_0x1e1613);return _0x322186=_0x322186['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x322186=_0x322186['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x322186=_0x322186['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x322186=_0x322186['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x322186=_0x322186['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x322186=_0x322186['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x322186=_0x322186['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x322186=_0x322186['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x322186=_0x322186['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x322186=_0x322186['replace'](/\n\n/g,'</p><p>'),_0x322186=_0x322186['replace'](/\n/g,'<br>'),'<p>'+_0x322186+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5d5e8c=new Uint8Array(0x10);crypto['getRandomValues'](_0x5d5e8c),_0x5d5e8c[0x6]=_0x5d5e8c[0x6]&0xf|0x40,_0x5d5e8c[0x8]=_0x5d5e8c[0x8]&0x3f|0x80;const _0x248b39=Array['from'](_0x5d5e8c,_0x3050e3=>_0x3050e3['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x248b39['slice'](0x0,0x8)+'-'+_0x248b39['slice'](0x8,0xc)+'-'+_0x248b39['slice'](0xc,0x10)+'-'+_0x248b39['slice'](0x10,0x14)+'-'+_0x248b39['slice'](0x14);}};export class CustomSelect{constructor(_0x43c675,_0x9039={}){this['nativeSelect']=_0x43c675,this['options']=_0x9039,this['isOpen']=![],this['selectedValue']=_0x43c675['value']||'',this['searchable']=_0x9039['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x320b74=document['createElement']('div');_0x320b74['className']='custom-select';const _0x378729=document['createElement']('div');_0x378729['className']='custom-select-trigger',_0x378729['setAttribute']('tabindex','0'),_0x378729['setAttribute']('role','button'),_0x378729['setAttribute']('aria-haspopup','listbox');const _0x3cb8de=document['createElement']('span');_0x3cb8de['className']='custom-select-trigger-text';const _0x109aae=document['createElement']('span');_0x109aae['className']='custom-select-arrow',_0x109aae['textContent']='▼',_0x378729['appendChild'](_0x3cb8de),_0x378729['appendChild'](_0x109aae);const _0x5692d8=document['createElement']('div');_0x5692d8['className']='custom-select-dropdown',_0x5692d8['setAttribute']('role','listbox');if(this['searchable']){const _0x3f026e=document['createElement']('div');_0x3f026e['className']='custom-select-search';const _0x551636=document['createElement']('input');_0x551636['type']='text',_0x551636['className']='custom-select-search-input',_0x551636['placeholder']='Type\x20to\x20search...',_0x551636['setAttribute']('aria-label','Search\x20options'),_0x551636['addEventListener']('input',_0x2cf364=>{this['searchQuery']=_0x2cf364['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x551636['addEventListener']('keydown',_0x2131ff=>{if(_0x2131ff['key']==='Escape')_0x2131ff['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2131ff['key']==='Enter'){_0x2131ff['preventDefault'](),_0x2131ff['stopPropagation']();const _0x1f60a0=_0x5692d8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1f60a0){const _0x4c7581=_0x1f60a0['getAttribute']('data-value');this['select'](_0x4c7581);}}}}),_0x3f026e['appendChild'](_0x551636),_0x5692d8['appendChild'](_0x3f026e),this['searchInput']=_0x551636;}const _0x51f1a3=document['createElement']('div');_0x51f1a3['className']='custom-select-options',_0x5692d8['appendChild'](_0x51f1a3),_0x320b74['appendChild'](_0x378729),_0x320b74['appendChild'](_0x5692d8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x320b74,this['nativeSelect']),this['wrapper']=_0x320b74,this['trigger']=_0x378729,this['triggerText']=_0x3cb8de,this['dropdown']=_0x5692d8,this['optionsContainer']=_0x51f1a3,_0x378729['addEventListener']('click',()=>this['toggle']()),_0x378729['addEventListener']('keydown',_0x161e94=>this['handleKeydown'](_0x161e94)),document['addEventListener']('click',_0xd0b7b4=>{!_0x320b74['contains'](_0xd0b7b4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x572de0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x572de0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x408edc=new MutationObserver(()=>{this['updateDisabledState']();});_0x408edc['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x569ade=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x569ade['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x53fe2e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x53fe2e),this['trigger']['setAttribute']('aria-disabled',_0x53fe2e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x53fe2e?'-1':'0'),_0x53fe2e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xacc49e=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x123461=_0xacc49e['filter'](_0x3c1032=>!_0x3c1032['disabled']&&!_0x3c1032['hidden']);_0xacc49e['forEach']((_0x76fb24,_0x2c9933)=>{const _0x1e62a9=document['createElement']('div');_0x1e62a9['className']='custom-select-option',_0x1e62a9['textContent']=_0x76fb24['textContent'],_0x1e62a9['setAttribute']('data-value',_0x76fb24['value']),_0x1e62a9['setAttribute']('data-index',_0x2c9933),_0x1e62a9['setAttribute']('role','option'),_0x76fb24['disabled']?_0x1e62a9['classList']['add']('disabled'):_0x1e62a9['addEventListener']('click',()=>this['select'](_0x76fb24['value'])),_0x76fb24['value']===this['selectedValue']&&_0x1e62a9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1e62a9),this['allOptions']['push']({'element':_0x1e62a9,'text':_0x76fb24['textContent']['toLowerCase'](),'value':_0x76fb24['value'],'disabled':_0x76fb24['disabled']});});if(this['searchable']&&this['searchInput']){const _0x18572b=this['searchInput']['parentElement'];_0x123461['length']>0x3?_0x18572b['style']['display']='':_0x18572b['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x41a89c=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2d008f=>{if(!_0x41a89c||_0x2d008f['disabled'])_0x2d008f['element']['style']['display']='';else{const _0x3b6fa9=_0x2d008f['text']['includes'](_0x41a89c);_0x2d008f['element']['style']['display']=_0x3b6fa9?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x19f510){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x19f510,this['nativeSelect']['value']=_0x19f510;const _0x13d6a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x13d6a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x55db19=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x55db19&&(this['triggerText']['textContent']=_0x55db19['textContent'],_0x55db19['disabled']||_0x55db19['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ec56a=>{_0x1ec56a['getAttribute']('data-value')===this['selectedValue']?_0x1ec56a['classList']['add']('selected'):_0x1ec56a['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 _0x5ea021=window['getComputedStyle'](this['dropdown']);if(_0x5ea021['position']==='fixed'){const _0x1fde6f=this['trigger']['getBoundingClientRect'](),_0x2cef97=parseInt(_0x5ea021['maxHeight'])||0xc8,_0x5a5297=window['innerHeight'],_0x443131=_0x5a5297-_0x1fde6f['bottom'],_0x476428=_0x1fde6f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x6279f2;_0x443131<_0x2cef97&&_0x476428>_0x443131?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5a5297-_0x1fde6f['top']+'px',_0x6279f2=Math['min'](_0x2cef97,_0x476428-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1fde6f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x6279f2=Math['min'](_0x2cef97,_0x443131-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px');if(this['optionsContainer']){let _0x5ec5a0=_0x6279f2;if(this['searchInput']){const _0x1ee1f0=this['searchInput']['parentElement'];_0x1ee1f0&&(_0x5ec5a0-=_0x1ee1f0['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ec5a0)+'px';}this['dropdown']['style']['left']=_0x1fde6f['left']+'px',this['dropdown']['style']['width']=_0x1fde6f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x25b4e1=this['searchInput']['parentElement'];_0x25b4e1&&_0x25b4e1['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'](_0x51d133){if(this['nativeSelect']['disabled'])return;if(_0x51d133['key']==='Enter'||_0x51d133['key']==='\x20')_0x51d133['preventDefault'](),this['toggle']();else _0x51d133['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ac308='\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',_0x4ac308),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2d0d71=document['getElementById']('confirm-dialog-close'),_0xa2b4da=document['getElementById']('confirm-dialog-cancel'),_0x5882ad=document['getElementById']('confirm-dialog-confirm'),_0x27a586=this['_modal']['querySelector']('.modal-overlay');_0x2d0d71['addEventListener']('click',()=>this['_resolve'](![])),_0xa2b4da['addEventListener']('click',()=>this['_resolve'](![])),_0x5882ad['addEventListener']('click',()=>this['_resolve'](!![])),_0x27a586['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x16d80a=>{if(_0x16d80a['key']==='Escape')_0x16d80a['preventDefault'](),this['_resolve'](![]);else _0x16d80a['key']==='Enter'&&(_0x16d80a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1c064c,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4b88d9=>{this['_resolvePromise']=_0x4b88d9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1c064c;const _0x978a3d=document['getElementById']('confirm-dialog-cancel'),_0x41e8b7=document['getElementById']('confirm-dialog-confirm');_0x978a3d['textContent']=cancelText,_0x41e8b7['textContent']=confirmText,_0x41e8b7['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x41e8b7['focus']();});},'_resolve'(_0x4b99a6){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4b99a6),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4f50d6,_0x12dd63={}){this['container']=_0x4f50d6,this['options']={'placeholder':_0x12dd63['placeholder']||'Type\x20to\x20search...','maxItems':_0x12dd63['maxItems']||0x64,'loadItems':_0x12dd63['loadItems']||(async()=>[]),'renderItem':_0x12dd63['renderItem']||(_0x224c0f=>({'primary':String(_0x224c0f),'secondary':''})),'onSelect':_0x12dd63['onSelect']||(()=>{}),'filterItems':_0x12dd63['filterItems']||null,'getItemValue':_0x12dd63['getItemValue']||(_0x4ee339=>_0x4ee339),'sortItems':_0x12dd63['sortItems']||null,'debounceMs':_0x12dd63['debounceMs']||0xc8,'minCharsForSearch':_0x12dd63['minCharsForSearch']||0x0,'emptyMessage':_0x12dd63['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x12dd63['loadingMessage']||'Loading...','preload':_0x12dd63['preload']!==![],'searchMode':_0x12dd63['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',_0x61e152=>this['onBlur'](_0x61e152)),this['input']['addEventListener']('input',_0x550fa1=>this['onInput'](_0x550fa1)),this['input']['addEventListener']('keydown',_0xba785e=>this['onKeydown'](_0xba785e)),this['clearBtn']['addEventListener']('mousedown',_0x21ceff=>{_0x21ceff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4a7c91=>{_0x4a7c91['preventDefault']();}),document['addEventListener']('click',_0x33e817=>{!this['wrapper']['contains'](_0x33e817['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(_0x29614f){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x29614f);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x195814){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x2dbfa0){const _0x3694ca=_0x2dbfa0['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3694ca);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3694ca):this['loadAndShow'](_0x3694ca);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48b142){switch(_0x48b142['key']){case'ArrowDown':_0x48b142['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48b142['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48b142['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48b142['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c0aab){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0xcfba6c=this['selectedIndex']+_0x5c0aab;if(_0xcfba6c>=0x0&&_0xcfba6c<this['filteredItems']['length']){this['selectedIndex']=_0xcfba6c,this['updateSelectionHighlight']();const _0x3c3261=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3c3261[this['selectedIndex']]&&_0x3c3261[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2d9120=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2d9120['forEach']((_0x39b9e4,_0x2ff62a)=>{_0x39b9e4['classList']['toggle']('keyboard-selected',_0x2ff62a===this['selectedIndex']);});}async['loadAndShow'](_0x5eb2f9){this['showLoading']();try{const _0x2217b1=await this['options']['loadItems'](_0x5eb2f9);if(this['options']['searchMode']==='server'){let _0x1a2da6=_0x2217b1;this['options']['sortItems']&&(_0x1a2da6=this['options']['sortItems']([..._0x2217b1]));this['filteredItems']=_0x1a2da6;const _0x1b4ded=this['filteredItems']['length']>=this['options']['maxItems'];_0x1b4ded&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x1b4ded),this['open']();}else this['allItems']=_0x2217b1,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5eb2f9);}catch(_0x19fcb8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x19fcb8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x406da6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x406da6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49acd9=this['filteredItems']['length']>=this['options']['maxItems'];_0x49acd9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49acd9),this['open']();}['renderItems'](_0xf5fab6){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']((_0x3efb8c,_0x574995)=>{const _0xf362ed=document['createElement']('div');_0xf362ed['className']='autocomplete-select-item',_0xf362ed['setAttribute']('role','option'),_0xf362ed['setAttribute']('data-index',_0x574995);const _0x4f28a0=this['options']['renderItem'](_0x3efb8c);let _0x44657b='';_0x4f28a0['icon']&&(_0x44657b='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4f28a0['iconClass']||'')+'\x22>'+_0x4f28a0['icon']+'</span>'),_0xf362ed['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x44657b+'\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'](_0x4f28a0['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4f28a0['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4f28a0['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf362ed['addEventListener']('click',()=>{this['selectItem'](_0x3efb8c);}),_0xf362ed['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x574995,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf362ed);}),_0xf5fab6?(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'](_0x1a2a0f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1a2a0f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x52714b){this['selectedItem']=_0x52714b;const _0x533785=this['options']['renderItem'](_0x52714b);this['input']['value']=_0x533785['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x52714b);}['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'](_0x3a6a2b){if(_0x3a6a2b){this['selectedItem']=_0x3a6a2b;const _0x25cebd=this['options']['renderItem'](_0x3a6a2b);this['input']['value']=_0x25cebd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1dd7cd){this['allItems']=_0x1dd7cd,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'](_0x2e4d66){this['input']['placeholder']=_0x2e4d66;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3c778b=null){const _0xa0613c=document['getElementById']('admin-menu-container'),_0x485ecb=document['getElementById']('admin-menu-btn'),_0x26badd=document['getElementById']('admin-menu');if(!_0xa0613c||!_0x485ecb||!_0x26badd)return;try{!_0x3c778b&&(_0x3c778b=await API['getCurrentUser']());if(_0x3c778b){const _0x5ee7e8=window['Permissions'],_0x5a5602=_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')||_0x5ee7e8['hasEnvPermission'](_0x3c778b,'environments:manage')||_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')||_0x5ee7e8['hasTeamPermission'](_0x3c778b,'teams:manage')||_0x5ee7e8['hasAnyEnvironment'](_0x3c778b);if(!_0x5a5602)return;_0xa0613c['hidden']=![];if(!_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')){const _0x12be6f=_0x26badd['querySelectorAll']('.admin-menu-item');_0x12be6f['forEach'](_0x325aca=>{const _0x4521ee=_0x325aca['querySelector']('.option-text')?.['textContent']?.['trim']();_0x4521ee==='Users'&&!_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')&&(_0x325aca['hidden']=!![]),_0x4521ee==='Skills'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Settings'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Health'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Git\x20History'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Roles'&&(_0x325aca['hidden']=!![]);});}_0x485ecb['addEventListener']('click',_0x3f4f3d=>{_0x3f4f3d['stopPropagation']();const _0x437e42=document['getElementById']('actions-menu');if(_0x437e42)_0x437e42['hidden']=!![];_0x26badd['hidden']=!_0x26badd['hidden'];}),document['addEventListener']('click',_0x36aecd=>{!_0x26badd['hidden']&&!_0x485ecb['contains'](_0x36aecd['target'])&&!_0x26badd['contains'](_0x36aecd['target'])&&(_0x26badd['hidden']=!![]);}),document['addEventListener']('keydown',_0x5971a7=>{_0x5971a7['key']==='Escape'&&!_0x26badd['hidden']&&(_0x26badd['hidden']=!![]);});const _0x5b1f48=document['getElementById']('server-health-btn');_0x5b1f48&&_0x5b1f48['addEventListener']('click',async()=>{_0x26badd['hidden']=!![];const {openServerHealthModal:_0x335146}=await import('./server-health.js');_0x335146();});}}catch(_0x581d97){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x581d97['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 _0xd86007=window['location']['pathname'],_0x1e0ab6=_0xd86007['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1e0ab6)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1e0ab6[0x1]),_0x1e0ab6[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4eb96e={}){const _0x3889b0=new URLSearchParams();_0x4eb96e['userId']&&_0x3889b0['set']('userId',String(_0x4eb96e['userId']));_0x4eb96e['automation']&&_0x3889b0['set']('automation',String(_0x4eb96e['automation']));const _0x351746=API_BASE+'/tasks/stats'+(_0x3889b0['toString']()?'?'+_0x3889b0['toString']():''),_0x1fb0e9=await fetch(_0x351746);if(!_0x1fb0e9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1fb0e9['statusText']);return await _0x1fb0e9['json']();},async 'getTasks'(_0x23187f={}){const _0x2a6129=new URLSearchParams();_0x23187f['status']&&_0x2a6129['set']('status',String(_0x23187f['status']));_0x23187f['environment']&&_0x2a6129['set']('environment',String(_0x23187f['environment']));_0x23187f['automation']&&_0x2a6129['set']('automation',String(_0x23187f['automation']));if(_0x23187f['include']){const _0x407284=Array['isArray'](_0x23187f['include'])?_0x23187f['include']['join'](','):String(_0x23187f['include']);_0x407284&&_0x2a6129['set']('include',_0x407284);}_0x23187f['filter']&&_0x2a6129['set']('filter',String(_0x23187f['filter']));_0x23187f['page']&&_0x2a6129['set']('page',String(_0x23187f['page']));_0x23187f['limit']&&_0x2a6129['set']('limit',String(_0x23187f['limit']));_0x23187f['userId']&&_0x2a6129['set']('userId',String(_0x23187f['userId']));_0x23187f['search']&&_0x2a6129['set']('search',String(_0x23187f['search']));_0x23187f['includeChildTasks']&&_0x2a6129['set']('includeChildTasks','true');const _0x161e56=API_BASE+'/tasks'+(_0x2a6129['toString']()?'?'+_0x2a6129['toString']():''),_0x28a52a=await fetch(_0x161e56);if(!_0x28a52a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x28a52a['statusText']);return await _0x28a52a['json']();},async 'getAutomations'(_0x55de9a={}){const _0x27a6b5=new URLSearchParams();_0x55de9a['environment']&&_0x27a6b5['set']('environment',String(_0x55de9a['environment']));const _0x267204=await fetch(API_BASE+'/api/automations'+(_0x27a6b5['toString']()?'?'+_0x27a6b5['toString']():''));if(!_0x267204['ok']){const _0x2bc365=await _0x267204['json']()['catch'](()=>({}));throw new Error(_0x2bc365['message']||_0x2bc365['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x267204['statusText']);}return await _0x267204['json']();},async 'getAutomation'(_0x235f1d){const _0x239ee6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235f1d));if(!_0x239ee6['ok']){const _0x2e07c2=await _0x239ee6['json']()['catch'](()=>({}));throw new Error(_0x2e07c2['message']||_0x2e07c2['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x239ee6['statusText']);}return await _0x239ee6['json']();},async 'createAutomation'(_0x39b233){const _0x43332b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39b233||{})});if(!_0x43332b['ok']){const _0x19709b=await _0x43332b['json']()['catch'](()=>({}));throw new Error(_0x19709b['message']||_0x19709b['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x43332b['statusText']);}return await _0x43332b['json']();},async 'updateAutomation'(_0x3930bd,_0x29afa5){const _0x90f734=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3930bd),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29afa5||{})});if(!_0x90f734['ok']){const _0x56f6d3=await _0x90f734['json']()['catch'](()=>({}));throw new Error(_0x56f6d3['message']||_0x56f6d3['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x90f734['statusText']);}return await _0x90f734['json']();},async 'deleteAutomation'(_0x350957){const _0x12a6f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x350957),{'method':'DELETE'});if(!_0x12a6f1['ok']){const _0x3f86ce=await _0x12a6f1['json']()['catch'](()=>({}));throw new Error(_0x3f86ce['message']||_0x3f86ce['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12a6f1['statusText']);}return await _0x12a6f1['json']();},async 'triggerAutomation'(_0xa685a7){const _0x52e777=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa685a7)+'/trigger',{'method':'POST'});if(!_0x52e777['ok']){const _0x389214=await _0x52e777['json']()['catch'](()=>({}));throw new Error(_0x389214['message']||_0x389214['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x52e777['statusText']);}return await _0x52e777['json']();},async 'setAutomationEnabled'(_0x1498ef,_0x5f9694){const _0x2eb172=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1498ef)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5f9694})});if(!_0x2eb172['ok']){const _0x3bcad0=await _0x2eb172['json']()['catch'](()=>({}));throw new Error(_0x3bcad0['message']||_0x3bcad0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x2eb172['statusText']);}return await _0x2eb172['json']();},async 'getAutomationHistory'(_0x258817,_0x4e6728=0x32){const _0x545266=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x258817)+'/history?limit='+encodeURIComponent(String(_0x4e6728)));if(!_0x545266['ok']){const _0x1f5e9c=await _0x545266['json']()['catch'](()=>({}));throw new Error(_0x1f5e9c['message']||_0x1f5e9c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x545266['statusText']);}return await _0x545266['json']();},async 'getTask'(_0x3ca4f8,_0x906524={}){const _0x4d0baa=new URLSearchParams();if(_0x906524['include']){const _0x5e0d45=Array['isArray'](_0x906524['include'])?_0x906524['include']['join'](','):String(_0x906524['include']);if(_0x5e0d45)_0x4d0baa['set']('include',_0x5e0d45);}const _0x1cd076=await fetch(API_BASE+'/tasks/'+_0x3ca4f8+(_0x4d0baa['toString']()?'?'+_0x4d0baa['toString']():''));if(!_0x1cd076['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1cd076['statusText']);return await _0x1cd076['json']();},async 'getTaskResults'(_0x3bcb2d){const _0x2a11a2=await fetch(API_BASE+'/tasks/'+_0x3bcb2d+'/results');if(!_0x2a11a2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a11a2['statusText']);return await _0x2a11a2['json']();},async 'getTaskPatches'(_0x4eede9){const _0x1e7bda=await fetch(API_BASE+'/tasks/'+_0x4eede9+'/patches');if(!_0x1e7bda['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1e7bda['statusText']);return await _0x1e7bda['json']();},async 'getTaskAttachments'(_0x4db3cc){const _0x361a24=await fetch(API_BASE+'/tasks/'+_0x4db3cc+'/attachments');if(!_0x361a24['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x361a24['statusText']);return await _0x361a24['json']();},async 'uploadAttachments'(_0x59f4b3,_0x4c3265){const _0x374600=new FormData();for(const _0x4ca9b2 of _0x4c3265){_0x374600['append']('attachments',_0x4ca9b2);}const _0x331eee=await fetch(API_BASE+'/tasks/'+_0x59f4b3+'/attachments',{'method':'POST','body':_0x374600});if(!_0x331eee['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x331eee['statusText']);return await _0x331eee['json']();},async 'isAINameGenerationAvailable'(){try{const _0x77f736=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x77f736['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x77f736['json']();}catch(_0x49b0c6){return{'available':![],'reason':_0x49b0c6['message']};}},async 'generateTaskName'(_0x396759){try{const _0x2571ea=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x396759})});return await _0x2571ea['json']();}catch(_0x473e9e){return{'success':![],'error':_0x473e9e['message']};}},async 'createTask'(_0xcd3da1){let _0x52538d,_0x1331a9={};if(_0xcd3da1['files']&&_0xcd3da1['files']['length']>0x0){const _0x59728b=new FormData();for(const [_0x10b937,_0x7f35f6]of Object['entries'](_0xcd3da1)){if(_0x10b937!=='files'){if(_0x7f35f6==null)continue;typeof _0x7f35f6==='object'?_0x59728b['append'](_0x10b937,JSON['stringify'](_0x7f35f6)):_0x59728b['append'](_0x10b937,String(_0x7f35f6));}}for(const _0x298d96 of _0xcd3da1['files']){_0x59728b['append']('attachments',_0x298d96);}_0x52538d=_0x59728b;}else _0x1331a9['Content-Type']='application/json',_0x52538d=JSON['stringify'](_0xcd3da1);const _0x15e7d3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x1331a9,'body':_0x52538d});if(!_0x15e7d3['ok']){const _0xf2c2=await _0x15e7d3['json'](),_0x1ef7be=new Error(_0xf2c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x15e7d3['statusText']),{message:_0x5807ed,..._0x52e880}=_0xf2c2;Object['assign'](_0x1ef7be,_0x52e880);throw _0x1ef7be;}return await _0x15e7d3['json']();},async 'createTestTask'(_0x4bc59d){const _0x5ef106=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc59d)});if(!_0x5ef106['ok']){const _0x509251=await _0x5ef106['json']();throw new Error(_0x509251['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5ef106['statusText']);}return await _0x5ef106['json']();},async 'createEphemeralTest'(_0x285e4a){const _0x180b1c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285e4a)});if(!_0x180b1c['ok']){const _0x9d4199=await _0x180b1c['json']();throw new Error(_0x9d4199['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x180b1c['statusText']);}return await _0x180b1c['json']();},async 'createDeployTask'(_0x44f50b){const _0x12a5e3=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44f50b)});if(!_0x12a5e3['ok']){const _0x27e48d=await _0x12a5e3['json']();throw new Error(_0x27e48d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x12a5e3['statusText']);}return await _0x12a5e3['json']();},async 'getEnvironments'(){const _0x2641d8=await fetch(API_BASE+'/environments');if(!_0x2641d8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2641d8['statusText']);return await _0x2641d8['json']();},async 'getEnvironment'(_0x12295b){const _0x306e60=await fetch(API_BASE+'/environments/'+_0x12295b);if(!_0x306e60['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x306e60['statusText']);return await _0x306e60['json']();},async 'getEnvironmentRepoHistory'(_0x15c2d0,_0x5050b7,_0x203522={}){if(!_0x15c2d0||!_0x5050b7)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3bd83f=new URLSearchParams();if(_0x203522['limit'])_0x3bd83f['set']('limit',String(_0x203522['limit']));if(_0x203522['offset'])_0x3bd83f['set']('offset',String(_0x203522['offset']));if(_0x203522['search'])_0x3bd83f['set']('search',String(_0x203522['search']));if(_0x203522['branch'])_0x3bd83f['set']('branch',String(_0x203522['branch']));const _0x4b1ddf=API_BASE+'/environments/'+encodeURIComponent(_0x15c2d0)+'/repos/'+encodeURIComponent(_0x5050b7)+'/git/history',_0x3c9b6c=await fetch(''+_0x4b1ddf+(_0x3bd83f['toString']()?'?'+_0x3bd83f['toString']():''));if(!_0x3c9b6c['ok']){const _0x476105=await _0x3c9b6c['json']()['catch'](()=>({}));throw new Error(_0x476105['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3c9b6c['statusText']);}return await _0x3c9b6c['json']();},async 'getEnvironmentRepoCommit'(_0x212f31,_0x3e9529,_0x2ae462){if(!_0x212f31||!_0x3e9529||!_0x2ae462)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xb6d515=API_BASE+'/environments/'+encodeURIComponent(_0x212f31)+'/repos/'+encodeURIComponent(_0x3e9529)+'/git/commits/'+encodeURIComponent(_0x2ae462),_0x5288b1=await fetch(_0xb6d515);if(!_0x5288b1['ok']){const _0x181b1a=await _0x5288b1['json']()['catch'](()=>({}));throw new Error(_0x181b1a['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5288b1['statusText']);}return await _0x5288b1['json']();},async 'getEnvironmentRepoBranches'(_0x58757c,_0x4e8bed){if(!_0x58757c||!_0x4e8bed)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1352a1=API_BASE+'/environments/'+encodeURIComponent(_0x58757c)+'/repos/'+encodeURIComponent(_0x4e8bed)+'/git/branches',_0x5053c2=await fetch(_0x1352a1);if(!_0x5053c2['ok']){const _0x2d5285=await _0x5053c2['json']()['catch'](()=>({}));throw new Error(_0x2d5285['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x5053c2['statusText']);}return await _0x5053c2['json']();},async 'revertEnvironmentRepoCommit'(_0x241f26,_0xb95a51,_0xeb8648,_0x3920a2={}){if(!_0x241f26||!_0xb95a51||!_0xeb8648)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e9011=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x241f26)+'/repos/'+encodeURIComponent(_0xb95a51)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xeb8648,..._0x3920a2})});if(!_0x5e9011['ok']){const _0x443875=await _0x5e9011['json']()['catch'](()=>({}));throw new Error(_0x443875['message']||_0x443875['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e9011['statusText']);}return await _0x5e9011['json']();},async 'getTemplates'(_0x20fcb7={}){const _0xcd9c2f=new URLSearchParams();if(_0x20fcb7['include']){const _0x345e68=Array['isArray'](_0x20fcb7['include'])?_0x20fcb7['include']['join'](','):String(_0x20fcb7['include']);if(_0x345e68)_0xcd9c2f['set']('include',_0x345e68);}const _0x480439=await fetch(API_BASE+'/templates'+(_0xcd9c2f['toString']()?'?'+_0xcd9c2f['toString']():''));if(!_0x480439['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x480439['statusText']);return await _0x480439['json']();},async 'getTemplatesForEnvironment'(_0x19f7b5,_0x3eb534={}){if(!_0x19f7b5)throw new Error('Environment\x20name\x20is\x20required');const _0x528c7c=new URLSearchParams();if(_0x3eb534['include']){const _0xb2b8dc=Array['isArray'](_0x3eb534['include'])?_0x3eb534['include']['join'](','):String(_0x3eb534['include']);if(_0xb2b8dc)_0x528c7c['set']('include',_0xb2b8dc);}const _0x4bc96e=await fetch(API_BASE+'/templates/'+_0x19f7b5+(_0x528c7c['toString']()?'?'+_0x528c7c['toString']():''));if(!_0x4bc96e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x19f7b5+':\x20'+_0x4bc96e['statusText']);return await _0x4bc96e['json']();},async 'getTemplate'(_0x3ddf73,_0x4c331a,_0x3f446e={}){if(!_0x3ddf73||!_0x4c331a)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x46d0f7=new URLSearchParams();if(_0x3f446e['include']){const _0x51c450=Array['isArray'](_0x3f446e['include'])?_0x3f446e['include']['join'](','):String(_0x3f446e['include']);if(_0x51c450)_0x46d0f7['set']('include',_0x51c450);}const _0x4dd2bc=await fetch(API_BASE+'/templates/'+_0x3ddf73+'/'+_0x4c331a+(_0x46d0f7['toString']()?'?'+_0x46d0f7['toString']():''));if(!_0x4dd2bc['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4dd2bc['statusText']);return await _0x4dd2bc['json']();},async 'getTaskLogs'(_0x4a905c,_0x53a357={}){if(!_0x4a905c)throw new Error('Task\x20ID\x20is\x20required');const _0x48739d=new URLSearchParams();_0x53a357['tail']&&_0x48739d['set']('tail',String(_0x53a357['tail']));const _0x662b63=await fetch(API_BASE+'/tasks/'+_0x4a905c+'/logs'+(_0x48739d['toString']()?'?'+_0x48739d['toString']():''));if(!_0x662b63['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x662b63['statusText']);return await _0x662b63['text']();},async 'getContainers'(){const _0x1bab0f=await fetch(API_BASE+'/containers');if(!_0x1bab0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1bab0f['statusText']);return await _0x1bab0f['json']();},async 'getContainer'(_0x4d0e7b){const _0x588e27=await fetch(API_BASE+'/containers/'+_0x4d0e7b);if(!_0x588e27['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x588e27['statusText']);return await _0x588e27['json']();},async 'startInteractiveContainer'(_0x3e5ff1){const _0xa582bc=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e5ff1)});if(!_0xa582bc['ok']){const _0x524d74=await _0xa582bc['json']()['catch'](()=>({}));throw new Error(_0x524d74['message']||'Failed\x20to\x20start\x20container:\x20'+_0xa582bc['statusText']);}return await _0xa582bc['json']();},async 'stopContainer'(_0x340fad){const _0x5547b4=await fetch(API_BASE+'/containers/'+_0x340fad,{'method':'DELETE'});if(!_0x5547b4['ok']){const _0x16aa49=await _0x5547b4['json']()['catch'](()=>({}));throw new Error(_0x16aa49['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5547b4['statusText']);}return await _0x5547b4['json']();},async 'stopTask'(_0x29947d){if(!_0x29947d)throw new Error('Task\x20ID\x20is\x20required');const _0x3ca9ea=await fetch(API_BASE+'/tasks/'+_0x29947d+'/stop',{'method':'POST'});if(!_0x3ca9ea['ok']){const _0x4a2ff6=await _0x3ca9ea['json']()['catch'](()=>({}));throw new Error(_0x4a2ff6['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x3ca9ea['statusText']);}return await _0x3ca9ea['json']();},async 'interruptTask'(_0x2ba5af){if(!_0x2ba5af)throw new Error('Task\x20ID\x20is\x20required');const _0x2af139=await fetch(API_BASE+'/tasks/'+_0x2ba5af+'/interrupt',{'method':'POST'});if(!_0x2af139['ok']){const _0xf649df=await _0x2af139['json']()['catch'](()=>({}));throw new Error(_0xf649df['error']||_0xf649df['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2af139['statusText']);}return await _0x2af139['json']();},async 'startTask'(_0x4acd5c){if(!_0x4acd5c)throw new Error('Task\x20ID\x20is\x20required');const _0x567221=await fetch(API_BASE+'/tasks/'+_0x4acd5c+'/start',{'method':'POST'});if(!_0x567221['ok']){const _0x2a7826=await _0x567221['json']()['catch'](()=>({}));throw new Error(_0x2a7826['error']||'Failed\x20to\x20start\x20task:\x20'+_0x567221['statusText']);}return await _0x567221['json']();},async 'deleteTask'(_0xa166c2){if(!_0xa166c2)throw new Error('Task\x20ID\x20is\x20required');const _0x3dc35a=await fetch(API_BASE+'/tasks/'+_0xa166c2,{'method':'DELETE'});if(!_0x3dc35a['ok']){const _0x513861=await _0x3dc35a['json']()['catch'](()=>({}));throw new Error(_0x513861['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x3dc35a['statusText']);}return await _0x3dc35a['json']();},async 'refreshTasksFromDisk'(){const _0x552a98=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x552a98['ok']){const _0x3ed662=await _0x552a98['json']()['catch'](()=>({}));throw new Error(_0x3ed662['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x552a98['statusText']);}return await _0x552a98['json']();},async 'approveTask'(_0x2867ab,_0x4de840={}){if(!_0x2867ab)throw new Error('Task\x20ID\x20is\x20required');const _0x386879={'commit_message':_0x4de840['commit_message']||'','pull':_0x4de840['pull']??![],'push':_0x4de840['push']??![]};_0x4de840['new_branch']&&(_0x386879['new_branch']=_0x4de840['new_branch']);const _0x38cc83=await fetch(API_BASE+'/tasks/'+_0x2867ab+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x386879)});if(!_0x38cc83['ok']){const _0x1e0b3f=await _0x38cc83['json']()['catch'](()=>({}));let _0x45deb7=_0x1e0b3f['error']||_0x1e0b3f['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x38cc83['statusText'];if(_0x1e0b3f['results']&&Array['isArray'](_0x1e0b3f['results'])){const _0x13e7c1=_0x1e0b3f['results']['filter'](_0xd0f91b=>!_0xd0f91b['success']&&_0xd0f91b['error']);_0x13e7c1['length']>0x0&&(_0x45deb7=_0x13e7c1[0x0]['error']);}throw new Error(_0x45deb7);}return await _0x38cc83['json']();},async 'getPullRequestInfo'(_0x2553b6){if(!_0x2553b6)throw new Error('Task\x20ID\x20is\x20required');const _0x593826=await fetch(API_BASE+'/tasks/'+_0x2553b6+'/pull-request-info');if(!_0x593826['ok']){const _0x370ba3=await _0x593826['json']()['catch'](()=>({}));throw new Error(_0x370ba3['error']||_0x370ba3['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x593826['statusText']);}return await _0x593826['json']();},async 'createPullRequests'(_0xfa1a3f,_0x393d24){if(!_0xfa1a3f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x393d24||!Array['isArray'](_0x393d24))throw new Error('repos\x20array\x20is\x20required');const _0x18ab36=await fetch(API_BASE+'/tasks/'+_0xfa1a3f+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x393d24})});if(!_0x18ab36['ok']){const _0x5114ab=await _0x18ab36['json']()['catch'](()=>({}));let _0x18bb02=_0x5114ab['error']||_0x5114ab['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x18ab36['statusText'];if(_0x5114ab['results']&&Array['isArray'](_0x5114ab['results'])){const _0xd7c49b=_0x5114ab['results']['filter'](_0x3801e8=>!_0x3801e8['success']&&_0x3801e8['error']);_0xd7c49b['length']>0x0&&(_0x18bb02=_0xd7c49b[0x0]['error']);}throw new Error(_0x18bb02);}return await _0x18ab36['json']();},async 'syncRepos'(_0xb43c36){if(!_0xb43c36)throw new Error('Task\x20ID\x20is\x20required');const _0x4a76aa=await fetch(API_BASE+'/tasks/'+_0xb43c36+'/sync-repos',{'method':'POST'});if(!_0x4a76aa['ok']){const _0x4e0d7b=await _0x4a76aa['json']()['catch'](()=>({}));throw new Error(_0x4e0d7b['error']||_0x4e0d7b['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4a76aa['statusText']);}return await _0x4a76aa['json']();},async 'getIbmiSyncInfo'(_0x25ab83){if(!_0x25ab83)throw new Error('Task\x20ID\x20is\x20required');const _0x208e08=await fetch(API_BASE+'/tasks/'+_0x25ab83+'/ibmi-sync-info');if(!_0x208e08['ok']){const _0x362189=await _0x208e08['json']()['catch'](()=>({}));throw new Error(_0x362189['error']||_0x362189['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x208e08['json']();},async 'getSyncFiles'(_0x3df87c){if(!_0x3df87c)throw new Error('Task\x20ID\x20is\x20required');const _0x11cc09=await fetch(API_BASE+'/tasks/'+_0x3df87c+'/sync-to-ibmi/files');if(!_0x11cc09['ok']){const _0x36f434=await _0x11cc09['json']()['catch'](()=>({}));throw new Error(_0x36f434['error']||_0x36f434['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x11cc09['json']();},async 'syncToIbmi'(_0x433e1f,_0x218d16,_0xc26911=null,_0x57735f=null,_0x24ecd9=null){if(!_0x433e1f)throw new Error('Task\x20ID\x20is\x20required');const _0x21857a={'library':_0x218d16};if(_0xc26911)_0x21857a['user']=_0xc26911;if(_0x57735f)_0x21857a['password']=_0x57735f;if(_0x24ecd9)_0x21857a['files']=_0x24ecd9;const _0xcf8f20=await fetch(API_BASE+'/tasks/'+_0x433e1f+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21857a)});if(!_0xcf8f20['ok']){const _0x3a8072=await _0xcf8f20['json']()['catch'](()=>({}));throw new Error(_0x3a8072['error']||_0x3a8072['message']||'Sync\x20failed');}return await _0xcf8f20['json']();},async 'getIbmiSyncLog'(_0x321450){if(!_0x321450)throw new Error('Task\x20ID\x20is\x20required');const _0x57ebd3=await fetch(API_BASE+'/tasks/'+_0x321450+'/ibmi-sync-log');if(!_0x57ebd3['ok']){const _0x3347d9=await _0x57ebd3['json']()['catch'](()=>({}));throw new Error(_0x3347d9['error']||_0x3347d9['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x57ebd3['json']();},async 'pullChanges'(_0x3c483c){if(!_0x3c483c)throw new Error('Task\x20ID\x20is\x20required');const _0x54ffc7=await fetch(API_BASE+'/tasks/'+_0x3c483c+'/pull-changes',{'method':'POST'});if(!_0x54ffc7['ok']){const _0x34b22a=await _0x54ffc7['json']()['catch'](()=>({}));throw new Error(_0x34b22a['error']||_0x34b22a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x54ffc7['statusText']);}return await _0x54ffc7['json']();},async 'readFile'(_0x5301f8,_0x41449a){if(!_0x5301f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41449a)throw new Error('File\x20path\x20is\x20required');const _0xa3a73c=await fetch(API_BASE+'/tasks/'+_0x5301f8+'/files?path='+encodeURIComponent(_0x41449a));if(!_0xa3a73c['ok']){const _0x3fcc65=await _0xa3a73c['json']()['catch'](()=>({}));throw new Error(_0x3fcc65['error']||_0x3fcc65['message']||'Failed\x20to\x20read\x20file:\x20'+_0xa3a73c['statusText']);}return await _0xa3a73c['json']();},'getTaskFileDownloadUrl'(_0x262e72,_0x5b22cb){if(!_0x262e72)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b22cb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x262e72+'/files/download?path='+encodeURIComponent(_0x5b22cb);},async 'writeFile'(_0xd01df3,_0x3a558b,_0x24b22f){if(!_0xd01df3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a558b)throw new Error('File\x20path\x20is\x20required');if(_0x24b22f===undefined)throw new Error('Content\x20is\x20required');const _0x3b1733=await fetch(API_BASE+'/tasks/'+_0xd01df3+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a558b,'content':_0x24b22f})});if(!_0x3b1733['ok']){const _0x439b78=await _0x3b1733['json']()['catch'](()=>({}));throw new Error(_0x439b78['error']||_0x439b78['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3b1733['statusText']);}return await _0x3b1733['json']();},async 'uploadTaskFiles'(_0x43f838,_0x1409a0,_0x518534){if(!_0x43f838)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1409a0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x518534||_0x518534['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x561af4=new FormData();_0x561af4['append']('targetDir',_0x1409a0);for(const _0x35a8b5 of _0x518534){_0x561af4['append']('files',_0x35a8b5,_0x35a8b5['name']);}const _0x1b5daf=await fetch(API_BASE+'/tasks/'+_0x43f838+'/files/upload',{'method':'POST','body':_0x561af4});if(!_0x1b5daf['ok']){const _0x5688aa=await _0x1b5daf['json']()['catch'](()=>({}));throw new Error(_0x5688aa['error']||_0x5688aa['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1b5daf['statusText']);}return await _0x1b5daf['json']();},async 'deleteFile'(_0x2e134a,_0x452cef){if(!_0x2e134a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x452cef)throw new Error('File\x20path\x20is\x20required');const _0x434cd2=await fetch(API_BASE+'/tasks/'+_0x2e134a+'/files?path='+encodeURIComponent(_0x452cef),{'method':'DELETE'});if(!_0x434cd2['ok']){const _0x43a47b=await _0x434cd2['json']()['catch'](()=>({}));throw new Error(_0x43a47b['error']||_0x43a47b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x434cd2['statusText']);}return await _0x434cd2['json']();},async 'discardFile'(_0x1bfcf5,_0x551901,_0x377eb8){if(!_0x1bfcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x551901)throw new Error('File\x20path\x20is\x20required');if(!_0x377eb8)throw new Error('Repository\x20path\x20is\x20required');const _0x4d675d=await fetch(API_BASE+'/tasks/'+_0x1bfcf5+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x551901,'repoPath':_0x377eb8})});if(!_0x4d675d['ok']){const _0x446fc5=await _0x4d675d['json']()['catch'](()=>({}));throw new Error(_0x446fc5['error']||_0x446fc5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4d675d['statusText']);}return await _0x4d675d['json']();},async 'followUpTask'(_0x37b037,_0x3d0863={}){if(!_0x37b037)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d0863['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x27c219,_0x3b56c4={};if(_0x3d0863['files']&&_0x3d0863['files']['length']>0x0){const _0xcdd3d7=new FormData();_0xcdd3d7['append']('instructions',_0x3d0863['instructions']);for(const _0x5c6e2d of _0x3d0863['files']){_0xcdd3d7['append']('attachments',_0x5c6e2d);}_0x27c219=_0xcdd3d7;}else _0x3b56c4['Content-Type']='application/json',_0x27c219=JSON['stringify']({'instructions':_0x3d0863['instructions']});const _0x4191b7=await fetch(API_BASE+'/tasks/'+_0x37b037+'/follow-up',{'method':'POST','headers':_0x3b56c4,'body':_0x27c219});if(!_0x4191b7['ok']){const _0x4c0652=await _0x4191b7['json']()['catch'](()=>({}));throw new Error(_0x4c0652['error']||_0x4c0652['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4191b7['statusText']);}return await _0x4191b7['json']();},async 'getTaskRewindPoints'(_0x31c508){if(!_0x31c508)throw new Error('Task\x20ID\x20is\x20required');const _0x13b6c3=await fetch(API_BASE+'/tasks/'+_0x31c508+'/rewind-points');if(!_0x13b6c3['ok']){const _0x7690be=await _0x13b6c3['json']()['catch'](()=>({}));throw new Error(_0x7690be['error']||_0x7690be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13b6c3['statusText']);}return await _0x13b6c3['json']();},async 'rewindTask'(_0x580de6,_0x27f0f2={}){if(!_0x580de6)throw new Error('Task\x20ID\x20is\x20required');const _0x5668a2=Number['isInteger'](_0x27f0f2['targetFollowUpCount'])?_0x27f0f2['targetFollowUpCount']:0x0,_0x29bdba={'targetFollowUpCount':_0x5668a2};typeof _0x27f0f2['instructions']==='string'&&_0x27f0f2['instructions']['trim']()&&(_0x29bdba['instructions']=_0x27f0f2['instructions']['trim']());typeof _0x27f0f2['rewindFiles']==='boolean'&&(_0x29bdba['rewindFiles']=_0x27f0f2['rewindFiles']);const _0x2cfe35=await fetch(API_BASE+'/tasks/'+_0x580de6+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29bdba)});if(!_0x2cfe35['ok']){const _0x35c130=await _0x2cfe35['json']()['catch'](()=>({}));throw new Error(_0x35c130['error']||_0x35c130['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2cfe35['statusText']);}return await _0x2cfe35['json']();},async 'login'(_0x342677,_0x11a591){const _0x5ba07d=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x342677,'password':_0x11a591})});if(!_0x5ba07d['ok']){const _0x5ec1fa=await _0x5ba07d['json']();throw new Error(_0x5ec1fa['message']||'Login\x20failed');}return await _0x5ba07d['json']();},async 'logout'(){const _0x2d7a8f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x2d7a8f['ok']){const _0x473d20=await _0x2d7a8f['json']();throw new Error(_0x473d20['message']||'Logout\x20failed');}return await _0x2d7a8f['json']();},async 'getCurrentUser'(){const _0x4bab83=await fetch(API_BASE+'/auth/me');if(!_0x4bab83['ok'])throw new Error('Not\x20authenticated');const _0x51b2b9=await _0x4bab83['json']();return _0x51b2b9['user'];},async 'getRolesInfo'(){const _0x4b2dab=await fetch(API_BASE+'/users/roles');if(!_0x4b2dab['ok']){const _0x5c3527=await _0x4b2dab['json']();throw new Error(_0x5c3527['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4b2dab['json']();},async 'getUsers'(){const _0x387130=await fetch(API_BASE+'/users');if(!_0x387130['ok']){const _0x1ec85f=await _0x387130['json']();throw new Error(_0x1ec85f['message']||'Failed\x20to\x20get\x20users');}return await _0x387130['json']();},async 'getUser'(_0x212d08){const _0x44ddbe=await fetch(API_BASE+'/users/'+_0x212d08);if(!_0x44ddbe['ok']){const _0xfe7319=await _0x44ddbe['json']();throw new Error(_0xfe7319['message']||'Failed\x20to\x20get\x20user');}return await _0x44ddbe['json']();},async 'createUser'(_0x575dab){const _0x14964d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x575dab)});if(!_0x14964d['ok']){const _0x31c96c=await _0x14964d['json']();throw new Error(_0x31c96c['message']||'Failed\x20to\x20create\x20user');}return await _0x14964d['json']();},async 'updateUser'(_0x2387b0,_0xc8242a){const _0x25e341=await fetch(API_BASE+'/users/'+_0x2387b0,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc8242a)});if(!_0x25e341['ok']){const _0x53507a=await _0x25e341['json']();throw new Error(_0x53507a['message']||'Failed\x20to\x20update\x20user');}return await _0x25e341['json']();},async 'deleteUser'(_0x2defbe){const _0x25a481=await fetch(API_BASE+'/users/'+_0x2defbe,{'method':'DELETE'});if(!_0x25a481['ok']){const _0x1cf76a=await _0x25a481['json']();throw new Error(_0x1cf76a['message']||'Failed\x20to\x20delete\x20user');}return await _0x25a481['json']();},async 'stopAllContainers'(){const _0x1eef2e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x54a6ce=await _0x1eef2e['json']()['catch'](()=>({}));if(!_0x1eef2e['ok'])throw new Error(_0x54a6ce['message']||_0x54a6ce['error']||'Failed\x20to\x20stop\x20containers');return _0x54a6ce;},async 'removeStoppedContainers'(){const _0x17bd67=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4b5ab0=await _0x17bd67['json']()['catch'](()=>({}));if(!_0x17bd67['ok'])throw new Error(_0x4b5ab0['message']||_0x4b5ab0['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4b5ab0;},async 'pruneDockerResources'(){const _0x16516e=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x340711=await _0x16516e['json']()['catch'](()=>({}));if(!_0x16516e['ok'])throw new Error(_0x340711['message']||_0x340711['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x340711;},async 'createPasswordToken'(_0x3f081e,_0x4f899b='setup',_0x54ad7c=![]){const _0x582f2c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f081e,'type':_0x4f899b,'sendEmail':_0x54ad7c})});if(!_0x582f2c['ok']){const _0x2c61c2=await _0x582f2c['json']();throw new Error(_0x2c61c2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x582f2c['json']();},async 'getEmailConfig'(){const _0x39ef29=await fetch(API_BASE+'/password/email-config');if(!_0x39ef29['ok']){const _0x19c165=await _0x39ef29['json']();throw new Error(_0x19c165['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x39ef29['json']();},async 'updateTaskName'(_0x563601,_0x67c408){const _0xd90ea1=await fetch(API_BASE+'/tasks/'+_0x563601,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x67c408})});if(!_0xd90ea1['ok']){const _0x5f526e=await _0xd90ea1['json']();throw new Error(_0x5f526e['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xd90ea1['json']();},async 'pinTask'(_0xaa7d0d,_0x46c068,_0x46cf8d=null){if(!_0xaa7d0d)throw new Error('Task\x20ID\x20is\x20required');const _0x342dd0={'pinned':_0x46c068};_0x46cf8d&&_0x46cf8d['length']>0x0&&(_0x342dd0['additionalTaskIds']=_0x46cf8d);const _0x2b91b8=await fetch(API_BASE+'/tasks/'+_0xaa7d0d+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x342dd0)});if(!_0x2b91b8['ok']){const _0x32cd03=await _0x2b91b8['json']();throw new Error(_0x32cd03['error']||'Failed\x20to\x20pin\x20task');}return await _0x2b91b8['json']();},async 'setTaskWinner'(_0x2680ae,_0x22cdd4,_0x288915=[]){if(!_0x2680ae)throw new Error('Task\x20ID\x20is\x20required');const _0xa44c17=await fetch(API_BASE+'/tasks/'+_0x2680ae+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x22cdd4,'siblings':_0x288915})});if(!_0xa44c17['ok']){const _0x164f04=await _0xa44c17['json']();throw new Error(_0x164f04['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xa44c17['json']();},async 'setTaskLoser'(_0x3f428e,_0x103981){if(!_0x3f428e)throw new Error('Task\x20ID\x20is\x20required');const _0x2ffaf1=await fetch(API_BASE+'/tasks/'+_0x3f428e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x103981})});if(!_0x2ffaf1['ok']){const _0x8a4539=await _0x2ffaf1['json']();throw new Error(_0x8a4539['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2ffaf1['json']();},async 'createTaskGroup'(_0x1c2a87){const _0x397bcc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c2a87)});if(!_0x397bcc['ok']){const _0x1336a3=await _0x397bcc['json']();throw new Error(_0x1336a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x397bcc['json']();},async 'getTaskGroups'(_0x453955={}){const _0x46c06d=new URLSearchParams();if(_0x453955['userId'])_0x46c06d['set']('userId',String(_0x453955['userId']));if(_0x453955['status'])_0x46c06d['set']('status',String(_0x453955['status']));if(_0x453955['limit'])_0x46c06d['set']('limit',String(_0x453955['limit']));const _0x40a712=API_BASE+'/tasks/groups'+(_0x46c06d['toString']()?'?'+_0x46c06d['toString']():''),_0x2983ec=await fetch(_0x40a712);if(!_0x2983ec['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2983ec['json']();},async 'getTaskGroup'(_0x12cb77){const _0x28bd1c=await fetch(API_BASE+'/tasks/groups/'+_0x12cb77);if(!_0x28bd1c['ok']){const _0x31d33c=await _0x28bd1c['json']();throw new Error(_0x31d33c['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x28bd1c['json']();},async 'updateTaskGroup'(_0x430f13,_0x4d9e16,_0x248965){const _0x1bd9f3=await fetch(API_BASE+'/tasks/'+_0x430f13+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d9e16,'groupIndex':_0x248965})});if(!_0x1bd9f3['ok']){const _0x5708f0=await _0x1bd9f3['json']();throw new Error(_0x5708f0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x1bd9f3['json']();},async 'removeTaskFromGroup'(_0x2552b3){return this['updateTaskGroup'](_0x2552b3,null,null);},async 'deleteTaskGroup'(_0x554dbe,_0x498367=![]){const _0x45cbdd=_0x498367?'?deleteTasks=true':'',_0x1e9ee6=await fetch(API_BASE+'/tasks/groups/'+_0x554dbe+_0x45cbdd,{'method':'DELETE'});if(!_0x1e9ee6['ok']){const _0x4926cb=await _0x1e9ee6['json']();throw new Error(_0x4926cb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5df683,_0x10725b){const _0x1a92b3=await fetch(API_BASE+'/tasks/groups/'+_0x5df683+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x10725b})});if(!_0x1a92b3['ok']){const _0x5383ba=await _0x1a92b3['json']();throw new Error(_0x5383ba['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a92b3['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x50d49c){if(!_0x50d49c)throw new Error('Task\x20ID\x20is\x20required');const _0x50e0e4=await fetch(API_BASE+'/tasks/'+_0x50d49c+'/comments');if(!_0x50e0e4['ok']){const _0x37800b=await _0x50e0e4['json']()['catch'](()=>({}));throw new Error(_0x37800b['error']||'Failed\x20to\x20get\x20comments');}return await _0x50e0e4['json']();},async 'addComment'(_0x211a46,_0x282c64){if(!_0x211a46)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282c64)throw new Error('Comment\x20content\x20is\x20required');const _0x20a4b3=await fetch(API_BASE+'/tasks/'+_0x211a46+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x282c64})});if(!_0x20a4b3['ok']){const _0x393dbd=await _0x20a4b3['json']()['catch'](()=>({}));throw new Error(_0x393dbd['error']||'Failed\x20to\x20add\x20comment');}return await _0x20a4b3['json']();},async 'updateComment'(_0x113b97,_0x1d2f30,_0x3feba6){if(!_0x113b97)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d2f30)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3feba6)throw new Error('Comment\x20content\x20is\x20required');const _0x32c86a=await fetch(API_BASE+'/tasks/'+_0x113b97+'/comments/'+_0x1d2f30,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3feba6})});if(!_0x32c86a['ok']){const _0x5639c4=await _0x32c86a['json']()['catch'](()=>({}));throw new Error(_0x5639c4['error']||'Failed\x20to\x20update\x20comment');}return await _0x32c86a['json']();},async 'deleteComment'(_0x52ab4a,_0x54e311){if(!_0x52ab4a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54e311)throw new Error('Comment\x20ID\x20is\x20required');const _0x410f48=await fetch(API_BASE+'/tasks/'+_0x52ab4a+'/comments/'+_0x54e311,{'method':'DELETE'});if(!_0x410f48['ok']){const _0x512d24=await _0x410f48['json']()['catch'](()=>({}));throw new Error(_0x512d24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x410f48['json']();},async 'createObjective'(_0x418dea){const _0x75be1e={'objective':!![],'name':_0x418dea['name']||'','environment':_0x418dea['environment']||null,'agents':_0x418dea['agents']||[],'branches':_0x418dea['branches']||{},'isPinned':_0x418dea['isPinned']||![],'parentObjectiveId':_0x418dea['parentObjectiveId']||null,'env_vars':_0x418dea['envVars']||{},'parameters':{'instructions':_0x418dea['instructions']||''},'files':_0x418dea['files']||[],'jira':_0x418dea['jira']||null};return this['createTask'](_0x75be1e);},async 'updateObjective'(_0x196f62,_0x4e3ed6,_0x146bc4=[],_0x5d115d=[]){let _0x2dea8c,_0x5d2c71={};const _0x18badb={..._0x4e3ed6};_0x5d115d&&_0x5d115d['length']>0x0&&(_0x18badb['removeAttachments']=_0x5d115d);if(_0x146bc4&&_0x146bc4['length']>0x0){const _0x732231=new FormData();for(const [_0x50990f,_0x503da9]of Object['entries'](_0x18badb)){if(_0x503da9==null)continue;typeof _0x503da9==='object'?_0x732231['append'](_0x50990f,JSON['stringify'](_0x503da9)):_0x732231['append'](_0x50990f,String(_0x503da9));}for(const _0x7a6e05 of _0x146bc4){_0x732231['append']('attachments',_0x7a6e05);}_0x2dea8c=_0x732231;}else _0x5d2c71['Content-Type']='application/json',_0x2dea8c=JSON['stringify'](_0x18badb);const _0x1981ae=await fetch(API_BASE+'/tasks/'+_0x196f62,{'method':'PATCH','headers':_0x5d2c71,'body':_0x2dea8c});if(!_0x1981ae['ok']){const _0x2d7383=await _0x1981ae['json']();throw new Error(_0x2d7383['error']||'Failed\x20to\x20update\x20objective');}return await _0x1981ae['json']();},async 'deleteObjective'(_0x1a746c){return this['deleteTask'](_0x1a746c);},async 'launchObjective'(_0x475594,_0x56a2a0={}){const _0x69ad99=await fetch(API_BASE+'/tasks/'+_0x475594+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56a2a0)});if(!_0x69ad99['ok']){const _0x26a6b4=await _0x69ad99['json']();throw new Error(_0x26a6b4['error']||'Failed\x20to\x20launch\x20objective');}return await _0x69ad99['json']();},async 'getObjectiveAttachments'(_0x406276){return this['getTaskAttachments'](_0x406276);},async 'createJudgeTask'({environment:_0xde9de9,judgeAgent:_0x89b3a2,groupId:_0x4f971a,taskIds:_0xbb58ea,judgeCustomInstructions:_0xcddeea,isPinned:_0x3dca2f}){const _0x257636=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xde9de9,'judgeAgent':_0x89b3a2,'groupId':_0x4f971a,'taskIds':_0xbb58ea,'judgeCustomInstructions':_0xcddeea,'isPinned':_0x3dca2f})});if(!_0x257636['ok']){const _0x3afa8b=await _0x257636['json']();throw new Error(_0x3afa8b['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x257636['json']();},async 'getJudgeTasks'(_0x16a42f){const _0x2570d2=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x16a42f));if(!_0x2570d2['ok']){const _0x8e6c86=await _0x2570d2['json']();throw new Error(_0x8e6c86['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2570d2['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1548f7,_0x246906,_0x2b53b2=''){const _0x404ca9=await fetch(API_BASE+'/tasks/'+_0x1548f7+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x246906,'customPreamble':_0x2b53b2})});if(!_0x404ca9['ok']){const _0x2cb7a3=await _0x404ca9['json']();throw new Error(_0x2cb7a3['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x404ca9['json']();},async 'getJiraConfig'(){const _0x1b1882=await fetch(API_BASE+'/jira/config');if(!_0x1b1882['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1b1882['json']();},async 'getJiraIssue'(_0x23181c){const _0x20e622=await fetch(API_BASE+'/jira/issues/'+_0x23181c);if(!_0x20e622['ok']){const _0x2b2124=await _0x20e622['json']()['catch'](()=>({}));throw new Error(_0x2b2124['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20e622['statusText']);}return await _0x20e622['json']();},async 'searchJiraIssues'(_0xe37722,_0x13320c=0x14){const _0x177e1f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xe37722,'maxResults':_0x13320c})});if(!_0x177e1f['ok']){const _0x17b72a=await _0x177e1f['json']()['catch'](()=>({}));throw new Error(_0x17b72a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x177e1f['statusText']);}return await _0x177e1f['json']();},async 'postJiraComment'(_0x103ec6,_0x3fd359){const _0x5431f0=await fetch(API_BASE+'/jira/issues/'+_0x103ec6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fd359})});if(!_0x5431f0['ok']){const _0x12d9c1=await _0x5431f0['json']()['catch'](()=>({}));throw new Error(_0x12d9c1['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5431f0['statusText']);}return await _0x5431f0['json']();},async 'getJiraComments'(_0x506142){const _0x4149b9=await fetch(API_BASE+'/jira/issues/'+_0x506142+'/comments');if(!_0x4149b9['ok']){const _0x29d5c3=await _0x4149b9['json']()['catch'](()=>({}));throw new Error(_0x29d5c3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4149b9['statusText']);}return await _0x4149b9['json']();},async 'promptParameter'({environment:_0x3e5d93,command:_0x47ee65,parser:parser='json'}){const _0x32f20f=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3e5d93,'command':_0x47ee65,'parser':parser})});if(!_0x32f20f['ok']){const _0x5717d0=await _0x32f20f['json']()['catch'](()=>({}));throw new Error(_0x5717d0['message']||_0x5717d0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x32f20f['statusText']);}return await _0x32f20f['json']();},async 'promptParameterStream'(_0x5211df,_0x5de542){const _0x1c8250=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5211df)});if(!_0x1c8250['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1c8250['statusText']);const _0x3117bf=_0x1c8250['body']['getReader'](),_0x7a1387=new TextDecoder();let _0x65ae97='';return new Promise((_0x66c3d9,_0x2bd640)=>{const _0x454ff8=async()=>{try{const {done:_0x17d6c5,value:_0x1611e0}=await _0x3117bf['read']();if(_0x17d6c5)return;_0x65ae97+=_0x7a1387['decode'](_0x1611e0,{'stream':!![]});const _0x557b5f=_0x65ae97['split']('\x0a\x0a');_0x65ae97=_0x557b5f['pop']()||'';for(const _0x5dc447 of _0x557b5f){if(!_0x5dc447['trim']())continue;const _0x478d76=_0x5dc447['split']('\x0a');let _0x2bbcb3='message',_0x1c3e0d='';for(const _0x5b2d87 of _0x478d76){if(_0x5b2d87['startsWith']('event:'))_0x2bbcb3=_0x5b2d87['substring'](0x6)['trim']();else _0x5b2d87['startsWith']('data:')&&(_0x1c3e0d=_0x5b2d87['substring'](0x5)['trim']());}if(!_0x1c3e0d)continue;try{const _0x1a1177=JSON['parse'](_0x1c3e0d);if(_0x2bbcb3==='progress'&&_0x5de542)_0x5de542(_0x1a1177['stage'],_0x1a1177['message']);else{if(_0x2bbcb3==='result'){_0x66c3d9(_0x1a1177);return;}else{if(_0x2bbcb3==='error'){let _0x4d7b34=_0x1a1177['message']||_0x1a1177['error']||'Prompt\x20command\x20failed';_0x1a1177['rawOutput']&&(_0x4d7b34+='\x0a\x0aRaw\x20output:\x0a'+_0x1a1177['rawOutput']);_0x2bd640(new Error(_0x4d7b34));return;}}}}catch(_0x5dbf42){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5dbf42),console['error']('Event\x20type:',_0x2bbcb3),console['error']('Event\x20data:',_0x1c3e0d),console['error']('First\x20200\x20chars:',_0x1c3e0d['substring'](0x0,0xc8)),_0x2bd640(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5dbf42['message']+'\x0a\x0aData:\x20'+_0x1c3e0d['substring'](0x0,0x1f4)));return;}}_0x454ff8();}catch(_0x1dfa09){_0x2bd640(_0x1dfa09);}};_0x454ff8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xa04450){const _0x6392de=await fetch(''+API_BASE+_0xa04450);if(!_0x6392de['ok']){const _0x1bf07e=await _0x6392de['json']()['catch'](()=>({'error':_0x6392de['statusText']})),_0x58d3f9=new Error(_0x1bf07e['error']||_0x1bf07e['message']||_0x6392de['statusText']);if(_0x1bf07e['detail']!==undefined)_0x58d3f9['detail']=_0x1bf07e['detail'];throw _0x58d3f9;}return await _0x6392de['json']();},async 'post'(_0x4baeee,_0x1f2329){const _0x42f695=await fetch(''+API_BASE+_0x4baeee,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f2329)});if(!_0x42f695['ok']){const _0x16eac9=await _0x42f695['json']()['catch'](()=>({'error':_0x42f695['statusText']})),_0x5aba9b=new Error(_0x16eac9['error']||_0x16eac9['message']||_0x42f695['statusText']);if(_0x16eac9['detail']!==undefined)_0x5aba9b['detail']=_0x16eac9['detail'];throw _0x5aba9b;}return await _0x42f695['json']();},async 'put'(_0x1d1252,_0x2df8d8){const _0x28c933=await fetch(''+API_BASE+_0x1d1252,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2df8d8)});if(!_0x28c933['ok']){const _0x51fc61=await _0x28c933['json']()['catch'](()=>({'error':_0x28c933['statusText']})),_0x36f04e=new Error(_0x51fc61['error']||_0x51fc61['message']||_0x28c933['statusText']);if(_0x51fc61['detail']!==undefined)_0x36f04e['detail']=_0x51fc61['detail'];throw _0x36f04e;}return await _0x28c933['json']();},async 'delete'(_0x3fb029,_0x4a3cbd){const _0xe83584={'method':'DELETE'};_0x4a3cbd&&(_0xe83584['headers']={'Content-Type':'application/json'},_0xe83584['body']=JSON['stringify'](_0x4a3cbd));const _0x1ea12f=await fetch(''+API_BASE+_0x3fb029,_0xe83584);if(!_0x1ea12f['ok']){const _0x2193d2=await _0x1ea12f['json']()['catch'](()=>({'error':_0x1ea12f['statusText']})),_0x12cc35=new Error(_0x2193d2['error']||_0x2193d2['message']||_0x1ea12f['statusText']);if(_0x2193d2['detail']!==undefined)_0x12cc35['detail']=_0x2193d2['detail'];throw _0x12cc35;}return await _0x1ea12f['json']();},async 'getSkills'(){const _0x2bd82d=await fetch(API_BASE+'/skills');if(!_0x2bd82d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2bd82d['statusText']);return await _0x2bd82d['json']();},async 'getSkill'(_0x135aa1){const _0x330c60=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x135aa1));if(!_0x330c60['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x330c60['statusText']);return await _0x330c60['json']();},async 'createSkill'(_0x3148d3){const _0x5d9bda=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3148d3)});if(!_0x5d9bda['ok']){const _0x21e97f=await _0x5d9bda['json']()['catch'](()=>({'error':_0x5d9bda['statusText']})),_0x3821d0=new Error(_0x21e97f['error']||_0x21e97f['message']||_0x5d9bda['statusText']);if(_0x21e97f['detail']!==undefined)_0x3821d0['detail']=_0x21e97f['detail'];throw _0x3821d0;}return await _0x5d9bda['json']();},async 'updateSkill'(_0x17e2fe,_0x4480c1){const _0x47f3c7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e2fe),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4480c1)});if(!_0x47f3c7['ok']){const _0x4ae3ab=await _0x47f3c7['json']()['catch'](()=>({'error':_0x47f3c7['statusText']})),_0x2a812e=new Error(_0x4ae3ab['error']||_0x4ae3ab['message']||_0x47f3c7['statusText']);if(_0x4ae3ab['detail']!==undefined)_0x2a812e['detail']=_0x4ae3ab['detail'];throw _0x2a812e;}return await _0x47f3c7['json']();},async 'deleteSkill'(_0x8b087a){const _0x15f1e4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x8b087a),{'method':'DELETE'});if(!_0x15f1e4['ok']){const _0x461a2c=await _0x15f1e4['json']()['catch'](()=>({'error':_0x15f1e4['statusText']})),_0x1cdec4=new Error(_0x461a2c['error']||_0x461a2c['message']||_0x15f1e4['statusText']);if(_0x461a2c['detail']!==undefined)_0x1cdec4['detail']=_0x461a2c['detail'];throw _0x1cdec4;}return await _0x15f1e4['json']();},async 'getSkillFile'(_0x3f5494,_0x8293d1){const _0x82cc1b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5494)+'/files/'+_0x8293d1);if(!_0x82cc1b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x82cc1b['statusText']);return await _0x82cc1b['json']();},async 'saveSkillFile'(_0x5b3869,_0x2f8480,_0x4bc561){const _0x58d922=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b3869)+'/files/'+_0x2f8480,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4bc561})});if(!_0x58d922['ok']){const _0x4240c7=await _0x58d922['json']()['catch'](()=>({'error':_0x58d922['statusText']})),_0x44ce91=new Error(_0x4240c7['error']||_0x4240c7['message']||_0x58d922['statusText']);if(_0x4240c7['detail']!==undefined)_0x44ce91['detail']=_0x4240c7['detail'];throw _0x44ce91;}return await _0x58d922['json']();},async 'deleteSkillFile'(_0x425e97,_0x51bd45){const _0x2862b2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x425e97)+'/files/'+_0x51bd45,{'method':'DELETE'});if(!_0x2862b2['ok']){const _0x2ae6b8=await _0x2862b2['json']()['catch'](()=>({'error':_0x2862b2['statusText']})),_0x2fa3c0=new Error(_0x2ae6b8['error']||_0x2ae6b8['message']||_0x2862b2['statusText']);if(_0x2ae6b8['detail']!==undefined)_0x2fa3c0['detail']=_0x2ae6b8['detail'];throw _0x2fa3c0;}return await _0x2862b2['json']();},async 'pullSkills'(){const _0x5d0693=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5d0693['ok']){const _0x208642=await _0x5d0693['json']()['catch'](()=>({'error':_0x5d0693['statusText']})),_0x57eb71=new Error(_0x208642['error']||_0x208642['message']||_0x5d0693['statusText']);if(_0x208642['detail']!==undefined)_0x57eb71['detail']=_0x208642['detail'];throw _0x57eb71;}return await _0x5d0693['json']();},async 'commitSkills'(_0x33f03e,_0x2e4605={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2e4605,_0x5a9c2a=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x33f03e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5a9c2a['ok']){const _0x5e5645=await _0x5a9c2a['json']()['catch'](()=>({'error':_0x5a9c2a['statusText']})),_0x2b050e=new Error(_0x5e5645['error']||_0x5e5645['message']||_0x5a9c2a['statusText']);if(_0x5e5645['detail']!==undefined)_0x2b050e['detail']=_0x5e5645['detail'];throw _0x2b050e;}return await _0x5a9c2a['json']();},async 'discardSkillsChanges'(){const _0x379014=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x379014['ok']){const _0xdce7bf=await _0x379014['json']()['catch'](()=>({'error':_0x379014['statusText']})),_0x1b7291=new Error(_0xdce7bf['error']||_0xdce7bf['message']||_0x379014['statusText']);if(_0xdce7bf['detail']!==undefined)_0x1b7291['detail']=_0xdce7bf['detail'];throw _0x1b7291;}return await _0x379014['json']();},async 'getSkillCatalog'(){const _0x32da05=await fetch(API_BASE+'/external-skills/catalog');if(!_0x32da05['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x32da05['statusText']);return await _0x32da05['json']();},async 'getImportedSkillsRegistry'(){const _0x221f4a=await fetch(API_BASE+'/external-skills/registry');if(!_0x221f4a['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x221f4a['statusText']);return await _0x221f4a['json']();},async 'importCatalogSkill'(_0x451e52){const _0x1e5401=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x451e52})});if(!_0x1e5401['ok']){const _0x110053=await _0x1e5401['json']()['catch'](()=>({'error':_0x1e5401['statusText']})),_0x2eb1ca=new Error(_0x110053['error']||_0x110053['message']||_0x1e5401['statusText']);if(_0x110053['detail']!==undefined)_0x2eb1ca['detail']=_0x110053['detail'];throw _0x2eb1ca;}return await _0x1e5401['json']();},async 'importSkillFromGit'(_0x1095af,_0x5134a3,_0x1ab5b3='main',_0x4a52cc=null){const _0x3fbc69=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1095af,'skillPath':_0x5134a3,'branch':_0x1ab5b3,'skillId':_0x4a52cc})});if(!_0x3fbc69['ok']){const _0x755b7c=await _0x3fbc69['json']()['catch'](()=>({'error':_0x3fbc69['statusText']})),_0x263336=new Error(_0x755b7c['error']||_0x755b7c['message']||_0x3fbc69['statusText']);if(_0x755b7c['detail']!==undefined)_0x263336['detail']=_0x755b7c['detail'];throw _0x263336;}return await _0x3fbc69['json']();},async 'probeMarketplace'(_0x546057,_0x5a8ea2='main'){const _0x1c69bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x546057,'branch':_0x5a8ea2})});if(!_0x1c69bd['ok']){const _0x5f3672=await _0x1c69bd['json']()['catch'](()=>({'error':_0x1c69bd['statusText']})),_0x309376=new Error(_0x5f3672['error']||_0x5f3672['message']||_0x1c69bd['statusText']);if(_0x5f3672['detail']!==undefined)_0x309376['detail']=_0x5f3672['detail'];throw _0x309376;}return await _0x1c69bd['json']();},async 'importMarketplaceBundle'(_0xba0155,_0x2adddf,_0x34f1c5,_0x393d12=null){const _0x49a764=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xba0155,'branch':_0x2adddf,'bundleId':_0x34f1c5,'selectedSkills':_0x393d12})});if(!_0x49a764['ok']){const _0x21ab45=await _0x49a764['json']()['catch'](()=>({'error':_0x49a764['statusText']})),_0x5bf1c2=new Error(_0x21ab45['error']||_0x21ab45['message']||_0x49a764['statusText']);if(_0x21ab45['detail']!==undefined)_0x5bf1c2['detail']=_0x21ab45['detail'];throw _0x5bf1c2;}return await _0x49a764['json']();},async 'importSkillFromFolder'(_0x2a3c19,_0x131c4a=null){const _0x44f528=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2a3c19,'skillId':_0x131c4a})});if(!_0x44f528['ok']){const _0x51c1a8=await _0x44f528['json']()['catch'](()=>({'error':_0x44f528['statusText']})),_0x15e16b=new Error(_0x51c1a8['error']||_0x51c1a8['message']||_0x44f528['statusText']);if(_0x51c1a8['detail']!==undefined)_0x15e16b['detail']=_0x51c1a8['detail'];throw _0x15e16b;}return await _0x44f528['json']();},async 'importSkillFromNpm'(_0x2f82d1,_0x4bdbf8='latest',_0x24e3f2=null,_0x465243=null){const _0x317891=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f82d1,'version':_0x4bdbf8,'skillId':_0x24e3f2,'registry':_0x465243})});if(!_0x317891['ok']){const _0x13571a=await _0x317891['json']()['catch'](()=>({'error':_0x317891['statusText']})),_0x3abe38=new Error(_0x13571a['error']||_0x13571a['message']||_0x317891['statusText']);if(_0x13571a['detail']!==undefined)_0x3abe38['detail']=_0x13571a['detail'];throw _0x3abe38;}return await _0x317891['json']();},async 'checkSkillUpdates'(_0x131e48){const _0x3219f4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x131e48)+'/check-updates',{'method':'POST'});if(!_0x3219f4['ok']){const _0x286dc7=await _0x3219f4['json']()['catch'](()=>({'error':_0x3219f4['statusText']})),_0x594f0d=new Error(_0x286dc7['error']||_0x286dc7['message']||_0x3219f4['statusText']);if(_0x286dc7['detail']!==undefined)_0x594f0d['detail']=_0x286dc7['detail'];throw _0x594f0d;}return await _0x3219f4['json']();},async 'updateExternalSkill'(_0x3bd65c){const _0x4cfe26=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3bd65c)+'/update',{'method':'POST'});if(!_0x4cfe26['ok']){const _0x408f2c=await _0x4cfe26['json']()['catch'](()=>({'error':_0x4cfe26['statusText']})),_0x466f97=new Error(_0x408f2c['error']||_0x408f2c['message']||_0x4cfe26['statusText']);if(_0x408f2c['detail']!==undefined)_0x466f97['detail']=_0x408f2c['detail'];throw _0x466f97;}return await _0x4cfe26['json']();},async 'updateSkillFlags'(_0x359813,_0x577a14){const _0x147946=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x359813)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x577a14})});if(!_0x147946['ok']){const _0xa05079=await _0x147946['json']()['catch'](()=>({'error':_0x147946['statusText']})),_0x3898bd=new Error(_0xa05079['error']||_0xa05079['message']||_0x147946['statusText']);if(_0xa05079['detail']!==undefined)_0x3898bd['detail']=_0xa05079['detail'];throw _0x3898bd;}return await _0x147946['json']();},async 'removeFromImportedRegistry'(_0x477908){const _0x3c84e0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x477908)+'/registry',{'method':'DELETE'});if(!_0x3c84e0['ok']){const _0x802807=await _0x3c84e0['json']()['catch'](()=>({'error':_0x3c84e0['statusText']})),_0x947ad3=new Error(_0x802807['error']||_0x802807['message']||_0x3c84e0['statusText']);if(_0x802807['detail']!==undefined)_0x947ad3['detail']=_0x802807['detail'];throw _0x947ad3;}return await _0x3c84e0['json']();},async 'getTeams'(){const _0x28c1f4=await fetch(API_BASE+'/teams');if(!_0x28c1f4['ok']){const _0x1fb82d=await _0x28c1f4['json']()['catch'](()=>({'message':_0x28c1f4['statusText']}));throw new Error(_0x1fb82d['message']||'Failed\x20to\x20get\x20teams');}return await _0x28c1f4['json']();},async 'getTeam'(_0xaeaf96){const _0x42c0c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xaeaf96));if(!_0x42c0c1['ok']){const _0x607ff4=await _0x42c0c1['json']()['catch'](()=>({'message':_0x42c0c1['statusText']}));throw new Error(_0x607ff4['message']||'Failed\x20to\x20get\x20team');}return await _0x42c0c1['json']();},async 'createTeam'(_0x266029){const _0x1cf5e0=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x266029)});if(!_0x1cf5e0['ok']){const _0xda138b=await _0x1cf5e0['json']()['catch'](()=>({'message':_0x1cf5e0['statusText']}));throw new Error(_0xda138b['message']||'Failed\x20to\x20create\x20team');}return await _0x1cf5e0['json']();},async 'updateTeam'(_0x98634f,_0x1abda9){const _0x2298d9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x98634f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abda9)});if(!_0x2298d9['ok']){const _0x25d2fe=await _0x2298d9['json']()['catch'](()=>({'message':_0x2298d9['statusText']}));throw new Error(_0x25d2fe['message']||'Failed\x20to\x20update\x20team');}return await _0x2298d9['json']();},async 'deleteTeam'(_0x475268){const _0xb72a63=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x475268),{'method':'DELETE'});if(!_0xb72a63['ok']){const _0x264512=await _0xb72a63['json']()['catch'](()=>({'message':_0xb72a63['statusText']}));throw new Error(_0x264512['message']||'Failed\x20to\x20delete\x20team');}return await _0xb72a63['json']();},async 'addTeamMember'(_0x295e9b,_0x2221e5){const _0x2b1d2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x295e9b)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2221e5})});if(!_0x2b1d2e['ok']){const _0x568f6d=await _0x2b1d2e['json']()['catch'](()=>({'message':_0x2b1d2e['statusText']}));throw new Error(_0x568f6d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2b1d2e['json']();},async 'removeTeamMember'(_0x534b63,_0x2a4105){const _0x47dc13=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x534b63)+'/members/'+encodeURIComponent(_0x2a4105),{'method':'DELETE'});if(!_0x47dc13['ok']){const _0x461b63=await _0x47dc13['json']()['catch'](()=>({'message':_0x47dc13['statusText']}));throw new Error(_0x461b63['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x47dc13['json']();},async 'getBindings'(_0x48926b={}){const _0x56e91a=new URLSearchParams();if(_0x48926b['resource_type'])_0x56e91a['set']('resource_type',_0x48926b['resource_type']);if(_0x48926b['resource_id'])_0x56e91a['set']('resource_id',_0x48926b['resource_id']);if(_0x48926b['subject_type'])_0x56e91a['set']('subject_type',_0x48926b['subject_type']);if(_0x48926b['subject_id'])_0x56e91a['set']('subject_id',_0x48926b['subject_id']);const _0xd0cc62=_0x56e91a['toString'](),_0x86b4f0=await fetch(API_BASE+'/bindings'+(_0xd0cc62?'?'+_0xd0cc62:''));if(!_0x86b4f0['ok']){const _0x2eaba6=await _0x86b4f0['json']()['catch'](()=>({'message':_0x86b4f0['statusText']}));throw new Error(_0x2eaba6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x86b4f0['json']();},async 'createBinding'(_0x198cd3){const _0xe8a51=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x198cd3)});if(!_0xe8a51['ok']){const _0x54c7b7=await _0xe8a51['json']()['catch'](()=>({'message':_0xe8a51['statusText']}));throw new Error(_0x54c7b7['message']||'Failed\x20to\x20create\x20binding');}return await _0xe8a51['json']();},async 'updateBinding'(_0x3a6b39,_0x2e3352){const _0x1dbaae=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3a6b39),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3352)});if(!_0x1dbaae['ok']){const _0x572306=await _0x1dbaae['json']()['catch'](()=>({'message':_0x1dbaae['statusText']}));throw new Error(_0x572306['message']||'Failed\x20to\x20update\x20binding');}return await _0x1dbaae['json']();},async 'deleteBinding'(_0x467c3c){const _0x2b2e9a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x467c3c),{'method':'DELETE'});if(!_0x2b2e9a['ok']){const _0x5382aa=await _0x2b2e9a['json']()['catch'](()=>({'message':_0x2b2e9a['statusText']}));throw new Error(_0x5382aa['message']||'Failed\x20to\x20delete\x20binding');}return await _0x2b2e9a['json']();},async 'getRoleDefinitions'(){const _0x196145=await fetch(API_BASE+'/roles');if(!_0x196145['ok']){const _0x2425fb=await _0x196145['json']()['catch'](()=>({'message':_0x196145['statusText']}));throw new Error(_0x2425fb['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x196145['json']();},async 'getRoleDefinition'(_0x146546){const _0x4d9536=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x146546));if(!_0x4d9536['ok']){const _0x39f6c3=await _0x4d9536['json']()['catch'](()=>({'message':_0x4d9536['statusText']}));throw new Error(_0x39f6c3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4d9536['json']();},async 'createRoleDefinition'(_0x36c156){const _0x4a6c5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36c156)});if(!_0x4a6c5e['ok']){const _0x20bc9d=await _0x4a6c5e['json']()['catch'](()=>({'message':_0x4a6c5e['statusText']}));throw new Error(_0x20bc9d['message']||_0x20bc9d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4a6c5e['json']();},async 'updateRoleDefinition'(_0x3682fc,_0x285ea0){const _0x452379=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3682fc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285ea0)});if(!_0x452379['ok']){const _0x2b9bb4=await _0x452379['json']()['catch'](()=>({'message':_0x452379['statusText']}));throw new Error(_0x2b9bb4['message']||_0x2b9bb4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x452379['json']();},async 'deleteRoleDefinition'(_0x25cf2c){const _0x474d7b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x25cf2c),{'method':'DELETE'});if(!_0x474d7b['ok']){const _0x5efa38=await _0x474d7b['json']()['catch'](()=>({'message':_0x474d7b['statusText']}));throw new Error(_0x5efa38['message']||_0x5efa38['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x474d7b['json']();},async 'getAvailablePermissions'(){const _0x199b10=await fetch(API_BASE+'/roles/available-permissions');if(!_0x199b10['ok']){const _0x24ff63=await _0x199b10['json']()['catch'](()=>({'message':_0x199b10['statusText']}));throw new Error(_0x24ff63['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x199b10['json']();},async 'getGitProviderAllowedTeams'(_0x3848a0){const _0x4cdd93=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3848a0)+'/allowed-teams');if(!_0x4cdd93['ok']){const _0x412b49=await _0x4cdd93['json']()['catch'](()=>({'message':_0x4cdd93['statusText']}));throw new Error(_0x412b49['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4cdd93['json']();},async 'setGitProviderAllowedTeams'(_0xa63a70,_0x371d37){const _0x160c70=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa63a70)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x371d37})});if(!_0x160c70['ok']){const _0x168a80=await _0x160c70['json']()['catch'](()=>({'message':_0x160c70['statusText']}));throw new Error(_0x168a80['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x160c70['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 _0x15bd8f=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4bc283=>{_0x4bc283['el']['style']['bottom']=_0x15bd8f+'px';const _0x4ea52d=_0x4bc283['el']['offsetHeight']||toastState['defaultHeight'];_0x15bd8f+=_0x4ea52d+toastState['gap'];});});}function removeToastById(_0x4a7074){const _0x106c5d=toastState['toasts']['findIndex'](_0x561fa9=>_0x561fa9['id']===_0x4a7074);if(_0x106c5d===-0x1)return;const _0x2218cc=toastState['toasts'][_0x106c5d];if(_0x2218cc['timeoutId'])clearTimeout(_0x2218cc['timeoutId']);_0x2218cc['el']['classList']['remove']('show'),setTimeout(()=>_0x2218cc['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x106c5d,0x1),repositionAllToasts();}function registerToast(_0x1ef539){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1ef539),repositionAllToasts(),_0x1ef539['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(_0x3c7c72){if(_0x3c7c72===null||_0x3c7c72===undefined)return'';return String(_0x3c7c72)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x23b010,_0xa2693a){if(_0x23b010&&typeof _0x23b010==='object'&&!Array['isArray'](_0x23b010))return{'code':typeof _0x23b010['text']==='string'?_0x23b010['text']:'','language':typeof _0x23b010['lang']==='string'?_0x23b010['lang']:''};return{'code':typeof _0x23b010==='string'?_0x23b010:'','language':typeof _0xa2693a==='string'?_0xa2693a:''};}function buildMermaidBlock(_0x40c8a8){const _0x34f119=String(_0x40c8a8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x34f119))+'\x22>'+escapeHtmlValue(_0x34f119)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x267afb=new marked['Renderer'](),_0x42cd3e=_0x267afb['code']['bind'](_0x267afb);return _0x267afb['code']=function(_0xc20bd3,_0x182cb9,..._0x29b7cd){const {code:_0x578284,language:_0x2ec8dd}=getMarkdownCodeBlockPayload(_0xc20bd3,_0x182cb9),_0x7e0a41=String(_0x2ec8dd||'')['trim']()['toLowerCase']();if(_0x7e0a41==='mermaid')return buildMermaidBlock(_0x578284);const _0xd07e0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xd07e0&&_0x7e0a41)try{const _0x18c402=_0xd07e0['getLanguage'](_0x7e0a41)?_0x7e0a41:'plaintext',_0x569ecc=_0xd07e0['highlight'](_0x578284,{'language':_0x18c402})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x7e0a41)+'\x22>'+_0x569ecc+'</code></pre>';}catch(_0x5169b7){console['error']('Syntax\x20highlighting\x20error:',_0x5169b7);}return _0x42cd3e(_0xc20bd3,_0x182cb9,..._0x29b7cd);},sharedMarkedRenderer=_0x267afb,_0x267afb;}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 _0x136d38=window['mermaid'];if(!_0x136d38||typeof _0x136d38['initialize']!=='function')return _0x136d38||null;return _0x136d38['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x136d38;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44f723,_0x356c42)=>{const _0x5c3ae7=()=>_0x44f723(configureMermaidInstance()),_0x13ad33=()=>{mermaidLoadPromise=null,_0x356c42(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x368ebd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x368ebd&&(_0x368ebd=document['createElement']('script'),_0x368ebd['id']=MERMAID_SCRIPT_ID,_0x368ebd['src']=MERMAID_SCRIPT_SRC,_0x368ebd['async']=!![],document['head']['appendChild'](_0x368ebd));if(window['mermaid']){_0x5c3ae7();return;}_0x368ebd['addEventListener']('load',_0x5c3ae7,{'once':!![]}),_0x368ebd['addEventListener']('error',_0x13ad33,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0xa7ead9){const _0x4829d2=_0xa7ead9['getAttribute']('data-mermaid-source');if(!_0x4829d2)return null;let _0x2c9fa5=_0x4829d2;try{_0x2c9fa5=decodeURIComponent(_0x4829d2);}catch{}return _0xa7ead9['textContent']=_0x2c9fa5,_0xa7ead9['removeAttribute']('data-processed'),_0xa7ead9['removeAttribute']('aria-roledescription'),_0xa7ead9['removeAttribute']('role'),_0xa7ead9['removeAttribute']('aria-label'),_0x2c9fa5;}function collectMermaidNodes(_0x4e8de4,_0x36b65a){if(!(_0x4e8de4 instanceof Element))return;_0x4e8de4['matches']('.mermaid[data-mermaid-source]')&&_0x36b65a['add'](_0x4e8de4),_0x4e8de4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x54f9cf=>{_0x36b65a['add'](_0x54f9cf);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x24acdc=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x97bb4d=>setTimeout(_0x97bb4d,0x0);_0x24acdc(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3ae204=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3ae204);});});}function queueMermaidRender(_0x948937){const _0x4550b3=new Set();_0x948937 instanceof Document||_0x948937 instanceof DocumentFragment?_0x948937['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x699d8e=>_0x4550b3['add'](_0x699d8e)):collectMermaidNodes(_0x948937,_0x4550b3);if(_0x4550b3['size']===0x0)return;_0x4550b3['forEach'](_0x1565f0=>pendingMermaidNodes['add'](_0x1565f0)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd31262=Array['from'](pendingMermaidNodes)['filter'](_0x1a96fb=>_0x1a96fb['isConnected']);pendingMermaidNodes['clear']();if(_0xd31262['length']===0x0)return;const _0x5a0fbc=await loadMermaid();if(!_0x5a0fbc)return;configureMermaidInstance();const _0x1e0e58=getMermaidTheme();for(const _0x34b9f3 of _0xd31262){const _0x44bfb9=_0x34b9f3['getAttribute']('data-mermaid-source');if(!_0x44bfb9)continue;const _0x3e93c7=_0x34b9f3['getAttribute']('data-processed')==='true';if(_0x3e93c7&&_0x34b9f3['dataset']['mermaidTheme']===_0x1e0e58)continue;restoreMermaidSource(_0x34b9f3);try{if(typeof _0x5a0fbc['run']==='function')await _0x5a0fbc['run']({'nodes':[_0x34b9f3]});else typeof _0x5a0fbc['init']==='function'&&_0x5a0fbc['init'](undefined,[_0x34b9f3]);_0x34b9f3['dataset']['mermaidTheme']=_0x1e0e58,delete _0x34b9f3['dataset']['mermaidError'];}catch(_0xb9df39){console['error']('Mermaid\x20render\x20failed:',_0xb9df39),restoreMermaidSource(_0x34b9f3),_0x34b9f3['dataset']['mermaidError']='true',delete _0x34b9f3['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x317912=>{_0x317912['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x317912);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c413f=>{_0x4c413f['forEach'](_0x46df75=>{_0x46df75['addedNodes']['forEach'](_0x2eb852=>{_0x2eb852['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2eb852);});});}),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'(_0x2b0c61){const _0x36e6a9=new Date(_0x2b0c61),_0xdbbd26=new Date(),_0x1c2d72=_0xdbbd26-_0x36e6a9,_0x2b2e0e=Math['floor'](_0x1c2d72/0x3e8),_0x125ddd=Math['floor'](_0x2b2e0e/0x3c),_0x39a0ae=Math['floor'](_0x125ddd/0x3c),_0x3ad77d=Math['floor'](_0x39a0ae/0x18);if(_0x2b2e0e<0x3c)return'now';if(_0x125ddd<0x3c)return _0x125ddd+'m\x20ago';if(_0x39a0ae<0x18)return _0x39a0ae+'h\x20ago';return _0x3ad77d+'d\x20ago';},'getStatusIcon'(_0x6406){switch(_0x6406){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x19d628){switch(_0x19d628){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'(_0x3e75da,_0x582498=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x389510={};_0x389510['text/plain']=new Blob([_0x3e75da],{'type':'text/plain'});_0x582498&&(_0x389510['text/html']=new Blob([_0x582498],{'type':'text/html'}));const _0x1919cd=new ClipboardItem(_0x389510);return await navigator['clipboard']['write']([_0x1919cd]),!![];}catch(_0x39f77e){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x39f77e);}try{const _0x55361a=_0xea956d=>{_0xea956d['preventDefault'](),_0xea956d['clipboardData']['setData']('text/plain',_0x3e75da),_0x582498&&_0xea956d['clipboardData']['setData']('text/html',_0x582498);};document['addEventListener']('copy',_0x55361a);const _0x4e1579=document['execCommand']('copy');document['removeEventListener']('copy',_0x55361a);if(_0x4e1579)return!![];}catch(_0x241b35){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x241b35);}try{const _0xaa27c2=document['createElement']('textarea');_0xaa27c2['value']=_0x3e75da,_0xaa27c2['style']['position']='fixed',_0xaa27c2['style']['opacity']='0',_0xaa27c2['style']['pointerEvents']='none',document['body']['appendChild'](_0xaa27c2),_0xaa27c2['select']();const _0x306a50=document['execCommand']('copy');return document['body']['removeChild'](_0xaa27c2),_0x306a50;}catch(_0x219d69){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x219d69),![];}},'showToast'(_0x381f75,_0xf763a4='info'){const _0x4d816c=getNextToastId(),_0x4d739c=document['createElement']('div');_0x4d739c['className']='toast\x20toast-'+_0xf763a4,_0x4d739c['textContent']=_0x381f75,_0x4d739c['dataset']['toastId']=_0x4d816c,document['body']['appendChild'](_0x4d739c);const _0x367776=_0xf763a4==='error'?0x2710:0xbb8,_0x200642=setTimeout(()=>{removeToastById(_0x4d816c);},_0x367776),_0x504a8f={'id':_0x4d816c,'el':_0x4d739c,'timeoutId':_0x200642};return registerToast(_0x504a8f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x4d739c['classList']['add']('show');});}),_0x4d816c;},'showError'(_0x512abf){console['error'](_0x512abf);const _0x274155=typeof _0x512abf==='string'?_0x512abf:_0x512abf['message']||'An\x20error\x20occurred';this['showToast'](_0x274155,'error');},'showSuccess'(_0x56bd35){this['showToast'](_0x56bd35,'success');},'capitalize'(_0x1fca37){if(!_0x1fca37)return'';return _0x1fca37['charAt'](0x0)['toUpperCase']()+_0x1fca37['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c7f67){return escapeHtmlValue(_0x2c7f67);},'ansiToHtml'(_0x286f57){if(_0x286f57===null||_0x286f57===undefined)return'';let _0x5956f8=this['escapeHtml'](_0x286f57);const _0x5eb35f={'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'},_0x4aa4ab={'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 _0x3a3675=0x0;return _0x5956f8=_0x5956f8['replace'](/\x1b\[([0-9;]*)m/g,(_0xcc3a52,_0x68e9e9)=>{if(!_0x68e9e9||_0x68e9e9==='0'){const _0x328768='</span>'['repeat'](_0x3a3675);return _0x3a3675=0x0,_0x328768;}const _0x12b13f=_0x68e9e9['split'](';'),_0x5922be=[];for(const _0x5a5a66 of _0x12b13f){if(_0x5a5a66==='1')_0x5922be['push']('font-weight:bold');else{if(_0x5a5a66==='2')_0x5922be['push']('opacity:0.7');else{if(_0x5a5a66==='3')_0x5922be['push']('font-style:italic');else{if(_0x5a5a66==='4')_0x5922be['push']('text-decoration:underline');else{if(_0x5a5a66==='9')_0x5922be['push']('text-decoration:line-through');else{if(_0x5eb35f[_0x5a5a66])_0x5922be['push']('color:'+_0x5eb35f[_0x5a5a66]);else{if(_0x4aa4ab[_0x5a5a66])_0x5922be['push']('background-color:'+_0x4aa4ab[_0x5a5a66]);}}}}}}}if(_0x5922be['length']>0x0)return _0x3a3675++,'<span\x20style=\x22'+_0x5922be['join'](';')+'\x22>';return'';}),_0x5956f8+='</span>'['repeat'](_0x3a3675),_0x5956f8=_0x5956f8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3558c6,_0x30f1db)=>{if(!_0x30f1db||_0x30f1db==='0')return'';const _0x24993f=_0x30f1db['split'](';'),_0x4a15f0=[];for(const _0x4616a7 of _0x24993f){if(_0x4616a7==='1')_0x4a15f0['push']('font-weight:bold');else{if(_0x5eb35f[_0x4616a7])_0x4a15f0['push']('color:'+_0x5eb35f[_0x4616a7]);else{if(_0x4aa4ab[_0x4616a7])_0x4a15f0['push']('background-color:'+_0x4aa4ab[_0x4616a7]);}}}if(_0x4a15f0['length']>0x0)return'<span\x20style=\x22'+_0x4a15f0['join'](';')+'\x22>';return'';}),_0x5956f8;},'showModal'({title:_0x34032c,content:_0x566ecd,buttons:buttons=[]}){const _0x5a7719='\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'](_0x34032c)+'</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'+_0x566ecd+'\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']((_0x4b80e7,_0x4948ec)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4b80e7['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4948ec+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4b80e7['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',_0x37dc66=document['createElement']('div');_0x37dc66['id']='utils-modal',_0x37dc66['className']='modal',_0x37dc66['innerHTML']=_0x5a7719,document['body']['appendChild'](_0x37dc66);const _0x42d43a=document['getElementById']('utils-modal-close');_0x42d43a&&_0x42d43a['addEventListener']('click',()=>this['hideModal']());const _0x138d3f=_0x37dc66['querySelectorAll']('[data-btn-index]');_0x138d3f['forEach'](_0x5691f5=>{const _0x4b074d=parseInt(_0x5691f5['dataset']['btnIndex']);buttons[_0x4b074d]?.['onClick']&&_0x5691f5['addEventListener']('click',buttons[_0x4b074d]['onClick']);});const _0x5b2381=document['getElementById']('utils-modal-overlay');_0x5b2381&&_0x5b2381['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x5dbd9d=document['getElementById']('utils-modal');_0x5dbd9d&&_0x5dbd9d['remove']();},'parseKeyValuePairs'(_0x42efb7){const _0x3475ae={};if(!_0x42efb7)return _0x3475ae;return _0x42efb7['split'](/\r?\n/)['map'](_0xd152b5=>_0xd152b5['trim']())['filter'](Boolean)['forEach'](_0x41cab0=>{const _0x16f08f=_0x41cab0['indexOf']('=');if(_0x16f08f>0x0){const _0x1d0ef6=_0x41cab0['slice'](0x0,_0x16f08f)['trim'](),_0x1e0969=_0x41cab0['slice'](_0x16f08f+0x1)['trim']();if(_0x1d0ef6)_0x3475ae[_0x1d0ef6]=_0x1e0969;}}),_0x3475ae;},'debounce'(_0x2de72a,_0x399cc8=0xfa){let _0x27f963=null;return(..._0x19e8c0)=>{clearTimeout(_0x27f963),_0x27f963=setTimeout(()=>_0x2de72a['apply'](this,_0x19e8c0),_0x399cc8);};},'formatTimestamp'(_0x2b62c1){if(!_0x2b62c1)return'N/A';const _0x55c984=new Date(_0x2b62c1);return _0x55c984['toLocaleDateString']()+'\x20'+_0x55c984['toLocaleTimeString']();},'getQueryParams'(){const _0x4e41d6=new URLSearchParams(window['location']['search']),_0x491de4={};for(const [_0x21d7f4,_0x27b3a9]of _0x4e41d6){_0x491de4[_0x21d7f4]=_0x27b3a9;}return _0x491de4;},'formatDuration'(_0x5c629a,_0x26c498){if(!_0x5c629a)return'N/A';const _0x8fdd6b=new Date(_0x5c629a),_0x3b538c=_0x26c498?new Date(_0x26c498):new Date(),_0x9c5866=_0x3b538c-_0x8fdd6b;if(_0x9c5866<0x0)return'0s';const _0x4ee8f7=Math['floor'](_0x9c5866/0x3e8),_0x4e895c=Math['floor'](_0x4ee8f7/0x3c),_0x45450c=Math['floor'](_0x4e895c/0x3c),_0x36ced4=Math['floor'](_0x45450c/0x18);if(_0x4ee8f7<0x3c)return _0x4ee8f7+'s';if(_0x4e895c<0x3c)return _0x4e895c+'m\x20'+_0x4ee8f7%0x3c+'s';if(_0x45450c<0x18)return _0x45450c+'h\x20'+_0x4e895c%0x3c+'m\x20'+_0x4ee8f7%0x3c+'s';return _0x36ced4+'d\x20'+_0x45450c%0x18+'h\x20'+_0x4e895c%0x3c+'m';},'renderMarkdown'(_0x52f66b,_0x16aef8={}){if(!_0x52f66b)return'';_0x52f66b=this['rewriteAttachmentLinks'](_0x52f66b,_0x16aef8),_0x52f66b=this['rewriteColorSyntax'](_0x52f66b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x52f66b);}catch(_0x5e6205){return console['error']('Markdown\x20parsing\x20error:',_0x5e6205),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);}},'rewriteAttachmentLinks'(_0x82cae,_0x41feb4={}){const _0x2bed05=typeof _0x41feb4['resolveAttachmentUrl']==='function'?_0x41feb4['resolveAttachmentUrl']:_0x41feb4['taskId']?_0x20be8b=>API_BASE+'/tasks/'+_0x41feb4['taskId']+'/attachments/'+encodeURIComponent(_0x20be8b):null;if(!_0x2bed05)return _0x82cae;return String(_0x82cae)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x533ac9,_0x3cf6a4)=>{const _0x32093a=String(_0x3cf6a4||'')['trim']();if(!_0x32093a)return _0x533ac9;let _0x150dd0=_0x32093a;try{_0x150dd0=decodeURIComponent(_0x32093a);}catch{}const _0x13a8c6=_0x2bed05(_0x150dd0);if(!_0x13a8c6)return _0x533ac9;return']('+_0x13a8c6+')';});},'rewriteColorSyntax'(_0x1c1ee8){if(!_0x1c1ee8)return _0x1c1ee8;return String(_0x1c1ee8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e3b12,_0x241d0d,_0x3b106e)=>{const _0x4039a9=this['rewriteColorSyntax'](_0x3b106e);return'<span\x20style=\x22color:\x20'+_0x241d0d+'\x22>'+_0x4039a9+'</span>';});},'renderMarkdownFallback'(_0x1345b8,_0xc84885={}){if(!_0x1345b8)return'';_0x1345b8=_0x1345b8['replace'](/\r\n/g,'\x0a'),_0x1345b8=_0x1345b8['replace'](/\r/g,'\x0a'),_0x1345b8=this['rewriteAttachmentLinks'](_0x1345b8,_0xc84885);let _0x136ee3=this['escapeHtml'](_0x1345b8);return _0x136ee3=_0x136ee3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x136ee3=_0x136ee3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x136ee3=_0x136ee3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x136ee3=_0x136ee3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x136ee3=_0x136ee3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x136ee3=_0x136ee3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x136ee3=_0x136ee3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x136ee3=_0x136ee3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x136ee3=_0x136ee3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x136ee3=_0x136ee3['replace'](/\n\n/g,'</p><p>'),_0x136ee3=_0x136ee3['replace'](/\n/g,'<br>'),'<p>'+_0x136ee3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0xcfeb7=new Uint8Array(0x10);crypto['getRandomValues'](_0xcfeb7),_0xcfeb7[0x6]=_0xcfeb7[0x6]&0xf|0x40,_0xcfeb7[0x8]=_0xcfeb7[0x8]&0x3f|0x80;const _0x52b1b5=Array['from'](_0xcfeb7,_0x2d9210=>_0x2d9210['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x52b1b5['slice'](0x0,0x8)+'-'+_0x52b1b5['slice'](0x8,0xc)+'-'+_0x52b1b5['slice'](0xc,0x10)+'-'+_0x52b1b5['slice'](0x10,0x14)+'-'+_0x52b1b5['slice'](0x14);}};export class CustomSelect{constructor(_0x5c2252,_0x2547f1={}){this['nativeSelect']=_0x5c2252,this['options']=_0x2547f1,this['isOpen']=![],this['selectedValue']=_0x5c2252['value']||'',this['searchable']=_0x2547f1['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x135976=document['createElement']('div');_0x135976['className']='custom-select';const _0x1733b8=document['createElement']('div');_0x1733b8['className']='custom-select-trigger',_0x1733b8['setAttribute']('tabindex','0'),_0x1733b8['setAttribute']('role','button'),_0x1733b8['setAttribute']('aria-haspopup','listbox');const _0x5e5ab3=document['createElement']('span');_0x5e5ab3['className']='custom-select-trigger-text';const _0x52aea9=document['createElement']('span');_0x52aea9['className']='custom-select-arrow',_0x52aea9['textContent']='▼',_0x1733b8['appendChild'](_0x5e5ab3),_0x1733b8['appendChild'](_0x52aea9);const _0x2662b6=document['createElement']('div');_0x2662b6['className']='custom-select-dropdown',_0x2662b6['setAttribute']('role','listbox');if(this['searchable']){const _0x4aabdd=document['createElement']('div');_0x4aabdd['className']='custom-select-search';const _0x1cf08c=document['createElement']('input');_0x1cf08c['type']='text',_0x1cf08c['className']='custom-select-search-input',_0x1cf08c['placeholder']='Type\x20to\x20search...',_0x1cf08c['setAttribute']('aria-label','Search\x20options'),_0x1cf08c['addEventListener']('input',_0x1fbe86=>{this['searchQuery']=_0x1fbe86['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1cf08c['addEventListener']('keydown',_0x192bab=>{if(_0x192bab['key']==='Escape')_0x192bab['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x192bab['key']==='Enter'){_0x192bab['preventDefault'](),_0x192bab['stopPropagation']();const _0x28b16c=_0x2662b6['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x28b16c){const _0x426263=_0x28b16c['getAttribute']('data-value');this['select'](_0x426263);}}}}),_0x4aabdd['appendChild'](_0x1cf08c),_0x2662b6['appendChild'](_0x4aabdd),this['searchInput']=_0x1cf08c;}const _0x58913a=document['createElement']('div');_0x58913a['className']='custom-select-options',_0x2662b6['appendChild'](_0x58913a),_0x135976['appendChild'](_0x1733b8),_0x135976['appendChild'](_0x2662b6),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x135976,this['nativeSelect']),this['wrapper']=_0x135976,this['trigger']=_0x1733b8,this['triggerText']=_0x5e5ab3,this['dropdown']=_0x2662b6,this['optionsContainer']=_0x58913a,_0x1733b8['addEventListener']('click',()=>this['toggle']()),_0x1733b8['addEventListener']('keydown',_0x5e9431=>this['handleKeydown'](_0x5e9431)),document['addEventListener']('click',_0x570845=>{!_0x135976['contains'](_0x570845['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4576ba=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4576ba['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x767460=new MutationObserver(()=>{this['updateDisabledState']();});_0x767460['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x454934=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x454934['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4121d2=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4121d2),this['trigger']['setAttribute']('aria-disabled',_0x4121d2?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4121d2?'-1':'0'),_0x4121d2&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x518edb=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x40e9f7=_0x518edb['filter'](_0xa634d6=>!_0xa634d6['disabled']&&!_0xa634d6['hidden']);_0x518edb['forEach']((_0x104f88,_0x12deed)=>{const _0x17697a=document['createElement']('div');_0x17697a['className']='custom-select-option',_0x17697a['textContent']=_0x104f88['textContent'],_0x17697a['setAttribute']('data-value',_0x104f88['value']),_0x17697a['setAttribute']('data-index',_0x12deed),_0x17697a['setAttribute']('role','option'),_0x104f88['disabled']?_0x17697a['classList']['add']('disabled'):_0x17697a['addEventListener']('click',()=>this['select'](_0x104f88['value'])),_0x104f88['value']===this['selectedValue']&&_0x17697a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x17697a),this['allOptions']['push']({'element':_0x17697a,'text':_0x104f88['textContent']['toLowerCase'](),'value':_0x104f88['value'],'disabled':_0x104f88['disabled']});});if(this['searchable']&&this['searchInput']){const _0xb68b4a=this['searchInput']['parentElement'];_0x40e9f7['length']>0x3?_0xb68b4a['style']['display']='':_0xb68b4a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd5e8b2=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x391ca5=>{if(!_0xd5e8b2||_0x391ca5['disabled'])_0x391ca5['element']['style']['display']='';else{const _0x1feb34=_0x391ca5['text']['includes'](_0xd5e8b2);_0x391ca5['element']['style']['display']=_0x1feb34?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4ee515){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4ee515,this['nativeSelect']['value']=_0x4ee515;const _0xe437e1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xe437e1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x424201=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x424201&&(this['triggerText']['textContent']=_0x424201['textContent'],_0x424201['disabled']||_0x424201['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x235378=>{_0x235378['getAttribute']('data-value')===this['selectedValue']?_0x235378['classList']['add']('selected'):_0x235378['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 _0x103b80=window['getComputedStyle'](this['dropdown']);if(_0x103b80['position']==='fixed'){const _0xea013a=this['trigger']['getBoundingClientRect'](),_0x5794a2=parseInt(_0x103b80['maxHeight'])||0xc8,_0x533912=window['innerHeight'],_0x1dc07e=_0x533912-_0xea013a['bottom'],_0x119fbd=_0xea013a['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3612ee;_0x1dc07e<_0x5794a2&&_0x119fbd>_0x1dc07e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x533912-_0xea013a['top']+'px',_0x3612ee=Math['min'](_0x5794a2,_0x119fbd-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xea013a['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3612ee=Math['min'](_0x5794a2,_0x1dc07e-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px');if(this['optionsContainer']){let _0x38ded0=_0x3612ee;if(this['searchInput']){const _0x3b8a3e=this['searchInput']['parentElement'];_0x3b8a3e&&(_0x38ded0-=_0x3b8a3e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x38ded0)+'px';}this['dropdown']['style']['left']=_0xea013a['left']+'px',this['dropdown']['style']['width']=_0xea013a['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3553a7=this['searchInput']['parentElement'];_0x3553a7&&_0x3553a7['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'](_0x3e4399){if(this['nativeSelect']['disabled'])return;if(_0x3e4399['key']==='Enter'||_0x3e4399['key']==='\x20')_0x3e4399['preventDefault'](),this['toggle']();else _0x3e4399['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5c3772='\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',_0x5c3772),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5a15ed=document['getElementById']('confirm-dialog-close'),_0x209da6=document['getElementById']('confirm-dialog-cancel'),_0x1a5e8b=document['getElementById']('confirm-dialog-confirm'),_0x48eac4=this['_modal']['querySelector']('.modal-overlay');_0x5a15ed['addEventListener']('click',()=>this['_resolve'](![])),_0x209da6['addEventListener']('click',()=>this['_resolve'](![])),_0x1a5e8b['addEventListener']('click',()=>this['_resolve'](!![])),_0x48eac4['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5a80f0=>{if(_0x5a80f0['key']==='Escape')_0x5a80f0['preventDefault'](),this['_resolve'](![]);else _0x5a80f0['key']==='Enter'&&(_0x5a80f0['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x287433,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4a6c0b=>{this['_resolvePromise']=_0x4a6c0b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x287433;const _0x100ed9=document['getElementById']('confirm-dialog-cancel'),_0x5e406e=document['getElementById']('confirm-dialog-confirm');_0x100ed9['textContent']=cancelText,_0x5e406e['textContent']=confirmText,_0x5e406e['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5e406e['focus']();});},'_resolve'(_0x4f54f0){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4f54f0),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e71bc,_0x57d1d7={}){this['container']=_0x3e71bc,this['options']={'placeholder':_0x57d1d7['placeholder']||'Type\x20to\x20search...','maxItems':_0x57d1d7['maxItems']||0x64,'loadItems':_0x57d1d7['loadItems']||(async()=>[]),'renderItem':_0x57d1d7['renderItem']||(_0x3ee633=>({'primary':String(_0x3ee633),'secondary':''})),'onSelect':_0x57d1d7['onSelect']||(()=>{}),'filterItems':_0x57d1d7['filterItems']||null,'getItemValue':_0x57d1d7['getItemValue']||(_0x421a25=>_0x421a25),'sortItems':_0x57d1d7['sortItems']||null,'debounceMs':_0x57d1d7['debounceMs']||0xc8,'minCharsForSearch':_0x57d1d7['minCharsForSearch']||0x0,'emptyMessage':_0x57d1d7['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x57d1d7['loadingMessage']||'Loading...','preload':_0x57d1d7['preload']!==![],'searchMode':_0x57d1d7['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',_0x467c93=>this['onBlur'](_0x467c93)),this['input']['addEventListener']('input',_0x495382=>this['onInput'](_0x495382)),this['input']['addEventListener']('keydown',_0x1affc2=>this['onKeydown'](_0x1affc2)),this['clearBtn']['addEventListener']('mousedown',_0x5bb182=>{_0x5bb182['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x375470=>{_0x375470['preventDefault']();}),document['addEventListener']('click',_0xa82868=>{!this['wrapper']['contains'](_0xa82868['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(_0x558d2b){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x558d2b);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x435f3f){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x1f953f){const _0x4d2fbf=_0x1f953f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4d2fbf);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4d2fbf):this['loadAndShow'](_0x4d2fbf);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1e0db9){switch(_0x1e0db9['key']){case'ArrowDown':_0x1e0db9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1e0db9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1e0db9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1e0db9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2feb26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5ca786=this['selectedIndex']+_0x2feb26;if(_0x5ca786>=0x0&&_0x5ca786<this['filteredItems']['length']){this['selectedIndex']=_0x5ca786,this['updateSelectionHighlight']();const _0x116633=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x116633[this['selectedIndex']]&&_0x116633[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c26ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c26ce['forEach']((_0x1572ca,_0xaad1b6)=>{_0x1572ca['classList']['toggle']('keyboard-selected',_0xaad1b6===this['selectedIndex']);});}async['loadAndShow'](_0x432d5c){this['showLoading']();try{const _0x3f6f2e=await this['options']['loadItems'](_0x432d5c);if(this['options']['searchMode']==='server'){let _0x588b3b=_0x3f6f2e;this['options']['sortItems']&&(_0x588b3b=this['options']['sortItems']([..._0x3f6f2e]));this['filteredItems']=_0x588b3b;const _0x148ea6=this['filteredItems']['length']>=this['options']['maxItems'];_0x148ea6&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x148ea6),this['open']();}else this['allItems']=_0x3f6f2e,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x432d5c);}catch(_0x1a6dbe){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x1a6dbe),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x35935a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x35935a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x12f432=this['filteredItems']['length']>=this['options']['maxItems'];_0x12f432&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x12f432),this['open']();}['renderItems'](_0x5dccab){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']((_0x2d45a4,_0x33bc5a)=>{const _0xb86fc3=document['createElement']('div');_0xb86fc3['className']='autocomplete-select-item',_0xb86fc3['setAttribute']('role','option'),_0xb86fc3['setAttribute']('data-index',_0x33bc5a);const _0x17e8e2=this['options']['renderItem'](_0x2d45a4);let _0x31798d='';_0x17e8e2['icon']&&(_0x31798d='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x17e8e2['iconClass']||'')+'\x22>'+_0x17e8e2['icon']+'</span>'),_0xb86fc3['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x31798d+'\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'](_0x17e8e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x17e8e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x17e8e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xb86fc3['addEventListener']('click',()=>{this['selectItem'](_0x2d45a4);}),_0xb86fc3['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x33bc5a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xb86fc3);}),_0x5dccab?(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'](_0xcc4cc7){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0xcc4cc7)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x12c987){this['selectedItem']=_0x12c987;const _0x4834df=this['options']['renderItem'](_0x12c987);this['input']['value']=_0x4834df['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x12c987);}['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'](_0x2b864c){if(_0x2b864c){this['selectedItem']=_0x2b864c;const _0x31cdef=this['options']['renderItem'](_0x2b864c);this['input']['value']=_0x31cdef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x659fad){this['allItems']=_0x659fad,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'](_0x3d3d88){this['input']['placeholder']=_0x3d3d88;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3f75b8=null){const _0x4dc393=document['getElementById']('admin-menu-container'),_0x4a33d8=document['getElementById']('admin-menu-btn'),_0x5f4f89=document['getElementById']('admin-menu');if(!_0x4dc393||!_0x4a33d8||!_0x5f4f89)return;try{!_0x3f75b8&&(_0x3f75b8=await API['getCurrentUser']());if(_0x3f75b8){const _0x5f082b=window['Permissions'],_0x5ad8bb=_0x5f082b['hasServerPermission'](_0x3f75b8,'*')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:manage')||_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')||_0x5f082b['hasTeamPermission'](_0x3f75b8,'teams:manage')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:view_details');if(!_0x5ad8bb)return;_0x4dc393['hidden']=![];if(!_0x5f082b['hasServerPermission'](_0x3f75b8,'*')){const _0x4debb5=_0x5f4f89['querySelectorAll']('.admin-menu-item');_0x4debb5['forEach'](_0x567e3c=>{const _0x8c1288=_0x567e3c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x8c1288==='Users'&&!_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Skills'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Settings'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Health'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Git\x20History'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Roles'&&(_0x567e3c['hidden']=!![]);});}_0x4a33d8['addEventListener']('click',_0x4cae85=>{_0x4cae85['stopPropagation']();const _0x1b5b15=document['getElementById']('actions-menu');if(_0x1b5b15)_0x1b5b15['hidden']=!![];_0x5f4f89['hidden']=!_0x5f4f89['hidden'];}),document['addEventListener']('click',_0x7989d0=>{!_0x5f4f89['hidden']&&!_0x4a33d8['contains'](_0x7989d0['target'])&&!_0x5f4f89['contains'](_0x7989d0['target'])&&(_0x5f4f89['hidden']=!![]);}),document['addEventListener']('keydown',_0x3393b9=>{_0x3393b9['key']==='Escape'&&!_0x5f4f89['hidden']&&(_0x5f4f89['hidden']=!![]);});const _0x4b8069=document['getElementById']('server-health-btn');_0x4b8069&&_0x4b8069['addEventListener']('click',async()=>{_0x5f4f89['hidden']=!![];const {openServerHealthModal:_0x5b6cae}=await import('./server-health.js');_0x5b6cae();});}}catch(_0x1f99f8){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1f99f8['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|