@profoundlogic/coderflow-server 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/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/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.html +6 -6
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.html +4 -4
- 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/index.html +4 -4
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.html +2 -2
- 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/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.html +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 +4 -4
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.html +2 -2
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.html +6 -6
- 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/task.html +5 -5
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.html +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.html +2 -2
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.html +2 -2
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0xd99b36=window['location']['pathname'],_0x32bbe3=_0xd99b36['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x32bbe3)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x32bbe3[0x1]),_0x32bbe3[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x5c6b55={}){const _0x4d3aec=new URLSearchParams();_0x5c6b55['userId']&&_0x4d3aec['set']('userId',String(_0x5c6b55['userId']));_0x5c6b55['automation']&&_0x4d3aec['set']('automation',String(_0x5c6b55['automation']));const _0x1734c0=API_BASE+'/tasks/stats'+(_0x4d3aec['toString']()?'?'+_0x4d3aec['toString']():''),_0x1cd69c=await fetch(_0x1734c0);if(!_0x1cd69c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1cd69c['statusText']);return await _0x1cd69c['json']();},async 'getTasks'(_0x55a7aa={}){const _0x171ad9=new URLSearchParams();_0x55a7aa['status']&&_0x171ad9['set']('status',String(_0x55a7aa['status']));_0x55a7aa['environment']&&_0x171ad9['set']('environment',String(_0x55a7aa['environment']));_0x55a7aa['automation']&&_0x171ad9['set']('automation',String(_0x55a7aa['automation']));if(_0x55a7aa['include']){const _0x558a46=Array['isArray'](_0x55a7aa['include'])?_0x55a7aa['include']['join'](','):String(_0x55a7aa['include']);_0x558a46&&_0x171ad9['set']('include',_0x558a46);}_0x55a7aa['filter']&&_0x171ad9['set']('filter',String(_0x55a7aa['filter']));_0x55a7aa['page']&&_0x171ad9['set']('page',String(_0x55a7aa['page']));_0x55a7aa['limit']&&_0x171ad9['set']('limit',String(_0x55a7aa['limit']));_0x55a7aa['userId']&&_0x171ad9['set']('userId',String(_0x55a7aa['userId']));_0x55a7aa['search']&&_0x171ad9['set']('search',String(_0x55a7aa['search']));_0x55a7aa['includeChildTasks']&&_0x171ad9['set']('includeChildTasks','true');const _0x1cd0d2=API_BASE+'/tasks'+(_0x171ad9['toString']()?'?'+_0x171ad9['toString']():''),_0x4a3e09=await fetch(_0x1cd0d2);if(!_0x4a3e09['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4a3e09['statusText']);return await _0x4a3e09['json']();},async 'getAutomations'(_0x43decf={}){const _0x488260=new URLSearchParams();_0x43decf['environment']&&_0x488260['set']('environment',String(_0x43decf['environment']));const _0x633de6=await fetch(API_BASE+'/api/automations'+(_0x488260['toString']()?'?'+_0x488260['toString']():''));if(!_0x633de6['ok']){const _0x4149df=await _0x633de6['json']()['catch'](()=>({}));throw new Error(_0x4149df['message']||_0x4149df['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x633de6['statusText']);}return await _0x633de6['json']();},async 'getAutomation'(_0x4a5495){const _0x3f4803=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4a5495));if(!_0x3f4803['ok']){const _0x26c8c8=await _0x3f4803['json']()['catch'](()=>({}));throw new Error(_0x26c8c8['message']||_0x26c8c8['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3f4803['statusText']);}return await _0x3f4803['json']();},async 'createAutomation'(_0x10a214){const _0x457ff2=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10a214||{})});if(!_0x457ff2['ok']){const _0x438b7d=await _0x457ff2['json']()['catch'](()=>({}));throw new Error(_0x438b7d['message']||_0x438b7d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x457ff2['statusText']);}return await _0x457ff2['json']();},async 'updateAutomation'(_0x38fdcd,_0x1c826e){const _0x389e21=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x38fdcd),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c826e||{})});if(!_0x389e21['ok']){const _0x8c5fd8=await _0x389e21['json']()['catch'](()=>({}));throw new Error(_0x8c5fd8['message']||_0x8c5fd8['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x389e21['statusText']);}return await _0x389e21['json']();},async 'deleteAutomation'(_0x7e3dbc){const _0x113cfa=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7e3dbc),{'method':'DELETE'});if(!_0x113cfa['ok']){const _0xfce235=await _0x113cfa['json']()['catch'](()=>({}));throw new Error(_0xfce235['message']||_0xfce235['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x113cfa['statusText']);}return await _0x113cfa['json']();},async 'triggerAutomation'(_0x284800){const _0x3698b4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x284800)+'/trigger',{'method':'POST'});if(!_0x3698b4['ok']){const _0x4c2b6a=await _0x3698b4['json']()['catch'](()=>({}));throw new Error(_0x4c2b6a['message']||_0x4c2b6a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3698b4['statusText']);}return await _0x3698b4['json']();},async 'setAutomationEnabled'(_0x4d9067,_0xb06d6f){const _0x58c5fb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d9067)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xb06d6f})});if(!_0x58c5fb['ok']){const _0x5a039c=await _0x58c5fb['json']()['catch'](()=>({}));throw new Error(_0x5a039c['message']||_0x5a039c['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x58c5fb['statusText']);}return await _0x58c5fb['json']();},async 'getAutomationHistory'(_0x25cbfb,_0x51dd1c=0x32){const _0x1300fe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x25cbfb)+'/history?limit='+encodeURIComponent(String(_0x51dd1c)));if(!_0x1300fe['ok']){const _0xab6ab7=await _0x1300fe['json']()['catch'](()=>({}));throw new Error(_0xab6ab7['message']||_0xab6ab7['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1300fe['statusText']);}return await _0x1300fe['json']();},async 'getTask'(_0x479b3d,_0x4f6c5f={}){const _0x4fb881=new URLSearchParams();if(_0x4f6c5f['include']){const _0x460fbd=Array['isArray'](_0x4f6c5f['include'])?_0x4f6c5f['include']['join'](','):String(_0x4f6c5f['include']);if(_0x460fbd)_0x4fb881['set']('include',_0x460fbd);}const _0x29dd84=await fetch(API_BASE+'/tasks/'+_0x479b3d+(_0x4fb881['toString']()?'?'+_0x4fb881['toString']():''));if(!_0x29dd84['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x29dd84['statusText']);return await _0x29dd84['json']();},async 'getTaskResults'(_0x2a4f62){const _0x4b6c64=await fetch(API_BASE+'/tasks/'+_0x2a4f62+'/results');if(!_0x4b6c64['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4b6c64['statusText']);return await _0x4b6c64['json']();},async 'getTaskPatches'(_0x578316){const _0x42a0b1=await fetch(API_BASE+'/tasks/'+_0x578316+'/patches');if(!_0x42a0b1['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x42a0b1['statusText']);return await _0x42a0b1['json']();},async 'getTaskAttachments'(_0xff0530){const _0x43683d=await fetch(API_BASE+'/tasks/'+_0xff0530+'/attachments');if(!_0x43683d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x43683d['statusText']);return await _0x43683d['json']();},async 'uploadAttachments'(_0x3edf2b,_0x540d6b){const _0x30e6d5=new FormData();for(const _0x1b32b9 of _0x540d6b){_0x30e6d5['append']('attachments',_0x1b32b9);}const _0x5d4f1a=await fetch(API_BASE+'/tasks/'+_0x3edf2b+'/attachments',{'method':'POST','body':_0x30e6d5});if(!_0x5d4f1a['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5d4f1a['statusText']);return await _0x5d4f1a['json']();},async 'isAINameGenerationAvailable'(){try{const _0xb1e187=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0xb1e187['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0xb1e187['json']();}catch(_0x260c49){return{'available':![],'reason':_0x260c49['message']};}},async 'generateTaskName'(_0x3dc668){try{const _0x5e7a47=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x3dc668})});return await _0x5e7a47['json']();}catch(_0x5dfdb8){return{'success':![],'error':_0x5dfdb8['message']};}},async 'createTask'(_0x271588){let _0x1320ea,_0x49c048={};if(_0x271588['files']&&_0x271588['files']['length']>0x0){const _0x3b707b=new FormData();for(const [_0x26b90c,_0x4fd459]of Object['entries'](_0x271588)){if(_0x26b90c!=='files'){if(_0x4fd459==null)continue;typeof _0x4fd459==='object'?_0x3b707b['append'](_0x26b90c,JSON['stringify'](_0x4fd459)):_0x3b707b['append'](_0x26b90c,String(_0x4fd459));}}for(const _0x72fc16 of _0x271588['files']){_0x3b707b['append']('attachments',_0x72fc16);}_0x1320ea=_0x3b707b;}else _0x49c048['Content-Type']='application/json',_0x1320ea=JSON['stringify'](_0x271588);const _0x18929c=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x49c048,'body':_0x1320ea});if(!_0x18929c['ok']){const _0x459e6a=await _0x18929c['json'](),_0x5d1971=new Error(_0x459e6a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x18929c['statusText']),{message:_0x4faf80,..._0x23661b}=_0x459e6a;Object['assign'](_0x5d1971,_0x23661b);throw _0x5d1971;}return await _0x18929c['json']();},async 'createTestTask'(_0xc7e952){const _0x5ae8c8=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7e952)});if(!_0x5ae8c8['ok']){const _0x1b8f15=await _0x5ae8c8['json']();throw new Error(_0x1b8f15['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5ae8c8['statusText']);}return await _0x5ae8c8['json']();},async 'createEphemeralTest'(_0x1927f5){const _0x517f6c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1927f5)});if(!_0x517f6c['ok']){const _0x547bd1=await _0x517f6c['json']();throw new Error(_0x547bd1['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x517f6c['statusText']);}return await _0x517f6c['json']();},async 'createDeployTask'(_0x5e3ba7){const _0x3447c9=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e3ba7)});if(!_0x3447c9['ok']){const _0x122efb=await _0x3447c9['json']();throw new Error(_0x122efb['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3447c9['statusText']);}return await _0x3447c9['json']();},async 'getEnvironments'(){const _0x22571c=await fetch(API_BASE+'/environments');if(!_0x22571c['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x22571c['statusText']);return await _0x22571c['json']();},async 'getEnvironment'(_0x16c14c){const _0x2e33dd=await fetch(API_BASE+'/environments/'+_0x16c14c);if(!_0x2e33dd['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x2e33dd['statusText']);return await _0x2e33dd['json']();},async 'getEnvironmentRepoHistory'(_0x45d6d7,_0x8d3fe0,_0x268919={}){if(!_0x45d6d7||!_0x8d3fe0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3c02af=new URLSearchParams();if(_0x268919['limit'])_0x3c02af['set']('limit',String(_0x268919['limit']));if(_0x268919['offset'])_0x3c02af['set']('offset',String(_0x268919['offset']));if(_0x268919['search'])_0x3c02af['set']('search',String(_0x268919['search']));if(_0x268919['branch'])_0x3c02af['set']('branch',String(_0x268919['branch']));const _0x573a44=API_BASE+'/environments/'+encodeURIComponent(_0x45d6d7)+'/repos/'+encodeURIComponent(_0x8d3fe0)+'/git/history',_0x366f88=await fetch(''+_0x573a44+(_0x3c02af['toString']()?'?'+_0x3c02af['toString']():''));if(!_0x366f88['ok']){const _0x338267=await _0x366f88['json']()['catch'](()=>({}));throw new Error(_0x338267['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x366f88['statusText']);}return await _0x366f88['json']();},async 'getEnvironmentRepoCommit'(_0x292975,_0x1cee17,_0x276dbc){if(!_0x292975||!_0x1cee17||!_0x276dbc)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x473f3b=API_BASE+'/environments/'+encodeURIComponent(_0x292975)+'/repos/'+encodeURIComponent(_0x1cee17)+'/git/commits/'+encodeURIComponent(_0x276dbc),_0x5dce38=await fetch(_0x473f3b);if(!_0x5dce38['ok']){const _0xc077f2=await _0x5dce38['json']()['catch'](()=>({}));throw new Error(_0xc077f2['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5dce38['statusText']);}return await _0x5dce38['json']();},async 'getEnvironmentRepoBranches'(_0x261b57,_0x4466a4){if(!_0x261b57||!_0x4466a4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xba4d2=API_BASE+'/environments/'+encodeURIComponent(_0x261b57)+'/repos/'+encodeURIComponent(_0x4466a4)+'/git/branches',_0x142ef1=await fetch(_0xba4d2);if(!_0x142ef1['ok']){const _0x36744b=await _0x142ef1['json']()['catch'](()=>({}));throw new Error(_0x36744b['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x142ef1['statusText']);}return await _0x142ef1['json']();},async 'revertEnvironmentRepoCommit'(_0x1ae3ea,_0x2f390d,_0x354b87,_0x1f5718={}){if(!_0x1ae3ea||!_0x2f390d||!_0x354b87)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x506fa1=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1ae3ea)+'/repos/'+encodeURIComponent(_0x2f390d)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x354b87,..._0x1f5718})});if(!_0x506fa1['ok']){const _0x10aa45=await _0x506fa1['json']()['catch'](()=>({}));throw new Error(_0x10aa45['message']||_0x10aa45['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x506fa1['statusText']);}return await _0x506fa1['json']();},async 'getTemplates'(_0x5e5def={}){const _0x4c842b=new URLSearchParams();if(_0x5e5def['include']){const _0x1cc89d=Array['isArray'](_0x5e5def['include'])?_0x5e5def['include']['join'](','):String(_0x5e5def['include']);if(_0x1cc89d)_0x4c842b['set']('include',_0x1cc89d);}const _0x3ed864=await fetch(API_BASE+'/templates'+(_0x4c842b['toString']()?'?'+_0x4c842b['toString']():''));if(!_0x3ed864['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3ed864['statusText']);return await _0x3ed864['json']();},async 'getTemplatesForEnvironment'(_0x46fae5,_0xa5b8e0={}){if(!_0x46fae5)throw new Error('Environment\x20name\x20is\x20required');const _0x4aa98f=new URLSearchParams();if(_0xa5b8e0['include']){const _0x2ef37c=Array['isArray'](_0xa5b8e0['include'])?_0xa5b8e0['include']['join'](','):String(_0xa5b8e0['include']);if(_0x2ef37c)_0x4aa98f['set']('include',_0x2ef37c);}const _0x190eb8=await fetch(API_BASE+'/templates/'+_0x46fae5+(_0x4aa98f['toString']()?'?'+_0x4aa98f['toString']():''));if(!_0x190eb8['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x46fae5+':\x20'+_0x190eb8['statusText']);return await _0x190eb8['json']();},async 'getTemplate'(_0xc182b9,_0x487d91,_0xcadf19={}){if(!_0xc182b9||!_0x487d91)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2846b6=new URLSearchParams();if(_0xcadf19['include']){const _0x45abf4=Array['isArray'](_0xcadf19['include'])?_0xcadf19['include']['join'](','):String(_0xcadf19['include']);if(_0x45abf4)_0x2846b6['set']('include',_0x45abf4);}const _0x3284ee=await fetch(API_BASE+'/templates/'+_0xc182b9+'/'+_0x487d91+(_0x2846b6['toString']()?'?'+_0x2846b6['toString']():''));if(!_0x3284ee['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x3284ee['statusText']);return await _0x3284ee['json']();},async 'getTaskLogs'(_0x321a2c,_0x263d2a={}){if(!_0x321a2c)throw new Error('Task\x20ID\x20is\x20required');const _0x220734=new URLSearchParams();_0x263d2a['tail']&&_0x220734['set']('tail',String(_0x263d2a['tail']));const _0x4e30af=await fetch(API_BASE+'/tasks/'+_0x321a2c+'/logs'+(_0x220734['toString']()?'?'+_0x220734['toString']():''));if(!_0x4e30af['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x4e30af['statusText']);return await _0x4e30af['text']();},async 'getContainers'(){const _0xef3e00=await fetch(API_BASE+'/containers');if(!_0xef3e00['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xef3e00['statusText']);return await _0xef3e00['json']();},async 'getContainer'(_0x572d19){const _0x3524c4=await fetch(API_BASE+'/containers/'+_0x572d19);if(!_0x3524c4['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x3524c4['statusText']);return await _0x3524c4['json']();},async 'startInteractiveContainer'(_0x466169){const _0x263397=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x466169)});if(!_0x263397['ok']){const _0x1df2e5=await _0x263397['json']()['catch'](()=>({}));throw new Error(_0x1df2e5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x263397['statusText']);}return await _0x263397['json']();},async 'stopContainer'(_0x4c57c6){const _0x227369=await fetch(API_BASE+'/containers/'+_0x4c57c6,{'method':'DELETE'});if(!_0x227369['ok']){const _0x3c36bc=await _0x227369['json']()['catch'](()=>({}));throw new Error(_0x3c36bc['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x227369['statusText']);}return await _0x227369['json']();},async 'stopTask'(_0x1f2c63){if(!_0x1f2c63)throw new Error('Task\x20ID\x20is\x20required');const _0x24a5a3=await fetch(API_BASE+'/tasks/'+_0x1f2c63+'/stop',{'method':'POST'});if(!_0x24a5a3['ok']){const _0x16960b=await _0x24a5a3['json']()['catch'](()=>({}));throw new Error(_0x16960b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x24a5a3['statusText']);}return await _0x24a5a3['json']();},async 'interruptTask'(_0x1bd694){if(!_0x1bd694)throw new Error('Task\x20ID\x20is\x20required');const _0xb376b9=await fetch(API_BASE+'/tasks/'+_0x1bd694+'/interrupt',{'method':'POST'});if(!_0xb376b9['ok']){const _0x4bb436=await _0xb376b9['json']()['catch'](()=>({}));throw new Error(_0x4bb436['error']||_0x4bb436['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0xb376b9['statusText']);}return await _0xb376b9['json']();},async 'startTask'(_0x327af7){if(!_0x327af7)throw new Error('Task\x20ID\x20is\x20required');const _0x5efe03=await fetch(API_BASE+'/tasks/'+_0x327af7+'/start',{'method':'POST'});if(!_0x5efe03['ok']){const _0x26e1c2=await _0x5efe03['json']()['catch'](()=>({}));throw new Error(_0x26e1c2['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5efe03['statusText']);}return await _0x5efe03['json']();},async 'deleteTask'(_0x38c033){if(!_0x38c033)throw new Error('Task\x20ID\x20is\x20required');const _0x276506=await fetch(API_BASE+'/tasks/'+_0x38c033,{'method':'DELETE'});if(!_0x276506['ok']){const _0x1e6746=await _0x276506['json']()['catch'](()=>({}));throw new Error(_0x1e6746['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x276506['statusText']);}return await _0x276506['json']();},async 'refreshTasksFromDisk'(){const _0x3c99c2=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3c99c2['ok']){const _0x17b385=await _0x3c99c2['json']()['catch'](()=>({}));throw new Error(_0x17b385['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3c99c2['statusText']);}return await _0x3c99c2['json']();},async 'approveTask'(_0x12df32,_0x34e5eb={}){if(!_0x12df32)throw new Error('Task\x20ID\x20is\x20required');const _0x32fead={'commit_message':_0x34e5eb['commit_message']||'','pull':_0x34e5eb['pull']??![],'push':_0x34e5eb['push']??![]};_0x34e5eb['new_branch']&&(_0x32fead['new_branch']=_0x34e5eb['new_branch']);const _0x538634=await fetch(API_BASE+'/tasks/'+_0x12df32+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32fead)});if(!_0x538634['ok']){const _0x7da7ea=await _0x538634['json']()['catch'](()=>({}));let _0x35820d=_0x7da7ea['error']||_0x7da7ea['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x538634['statusText'];if(_0x7da7ea['results']&&Array['isArray'](_0x7da7ea['results'])){const _0x3ccdfe=_0x7da7ea['results']['filter'](_0x5cd49e=>!_0x5cd49e['success']&&_0x5cd49e['error']);_0x3ccdfe['length']>0x0&&(_0x35820d=_0x3ccdfe[0x0]['error']);}throw new Error(_0x35820d);}return await _0x538634['json']();},async 'getPullRequestInfo'(_0x5723b2){if(!_0x5723b2)throw new Error('Task\x20ID\x20is\x20required');const _0x44834e=await fetch(API_BASE+'/tasks/'+_0x5723b2+'/pull-request-info');if(!_0x44834e['ok']){const _0x2fba92=await _0x44834e['json']()['catch'](()=>({}));throw new Error(_0x2fba92['error']||_0x2fba92['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x44834e['statusText']);}return await _0x44834e['json']();},async 'createPullRequests'(_0x5527ef,_0x10a35b){if(!_0x5527ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x10a35b||!Array['isArray'](_0x10a35b))throw new Error('repos\x20array\x20is\x20required');const _0x379d44=await fetch(API_BASE+'/tasks/'+_0x5527ef+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x10a35b})});if(!_0x379d44['ok']){const _0x450e81=await _0x379d44['json']()['catch'](()=>({}));let _0x23e87d=_0x450e81['error']||_0x450e81['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x379d44['statusText'];if(_0x450e81['results']&&Array['isArray'](_0x450e81['results'])){const _0x3b34ab=_0x450e81['results']['filter'](_0x1eb093=>!_0x1eb093['success']&&_0x1eb093['error']);_0x3b34ab['length']>0x0&&(_0x23e87d=_0x3b34ab[0x0]['error']);}throw new Error(_0x23e87d);}return await _0x379d44['json']();},async 'syncRepos'(_0x57d856){if(!_0x57d856)throw new Error('Task\x20ID\x20is\x20required');const _0x34e884=await fetch(API_BASE+'/tasks/'+_0x57d856+'/sync-repos',{'method':'POST'});if(!_0x34e884['ok']){const _0x5b493d=await _0x34e884['json']()['catch'](()=>({}));throw new Error(_0x5b493d['error']||_0x5b493d['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x34e884['statusText']);}return await _0x34e884['json']();},async 'getIbmiSyncInfo'(_0x5c8861){if(!_0x5c8861)throw new Error('Task\x20ID\x20is\x20required');const _0x2498aa=await fetch(API_BASE+'/tasks/'+_0x5c8861+'/ibmi-sync-info');if(!_0x2498aa['ok']){const _0x4f7d77=await _0x2498aa['json']()['catch'](()=>({}));throw new Error(_0x4f7d77['error']||_0x4f7d77['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2498aa['json']();},async 'syncToIbmi'(_0x591c3c,_0x336891){if(!_0x591c3c)throw new Error('Task\x20ID\x20is\x20required');const _0x37da73=await fetch(API_BASE+'/tasks/'+_0x591c3c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x336891})});if(!_0x37da73['ok']){const _0x267f5f=await _0x37da73['json']()['catch'](()=>({}));throw new Error(_0x267f5f['error']||_0x267f5f['message']||'Sync\x20failed');}return await _0x37da73['json']();},async 'getIbmiSyncLog'(_0x47c5b3){if(!_0x47c5b3)throw new Error('Task\x20ID\x20is\x20required');const _0x500340=await fetch(API_BASE+'/tasks/'+_0x47c5b3+'/ibmi-sync-log');if(!_0x500340['ok']){const _0x2bd3d5=await _0x500340['json']()['catch'](()=>({}));throw new Error(_0x2bd3d5['error']||_0x2bd3d5['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x500340['json']();},async 'pullChanges'(_0x4fe513){if(!_0x4fe513)throw new Error('Task\x20ID\x20is\x20required');const _0x1f8b2d=await fetch(API_BASE+'/tasks/'+_0x4fe513+'/pull-changes',{'method':'POST'});if(!_0x1f8b2d['ok']){const _0x5eee34=await _0x1f8b2d['json']()['catch'](()=>({}));throw new Error(_0x5eee34['error']||_0x5eee34['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1f8b2d['statusText']);}return await _0x1f8b2d['json']();},async 'readFile'(_0xa8c335,_0x4ba381){if(!_0xa8c335)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ba381)throw new Error('File\x20path\x20is\x20required');const _0x5dc698=await fetch(API_BASE+'/tasks/'+_0xa8c335+'/files?path='+encodeURIComponent(_0x4ba381));if(!_0x5dc698['ok']){const _0xa0b927=await _0x5dc698['json']()['catch'](()=>({}));throw new Error(_0xa0b927['error']||_0xa0b927['message']||'Failed\x20to\x20read\x20file:\x20'+_0x5dc698['statusText']);}return await _0x5dc698['json']();},async 'writeFile'(_0xcb47a4,_0x4ec51f,_0x2e12a7){if(!_0xcb47a4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ec51f)throw new Error('File\x20path\x20is\x20required');if(_0x2e12a7===undefined)throw new Error('Content\x20is\x20required');const _0x2749c8=await fetch(API_BASE+'/tasks/'+_0xcb47a4+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4ec51f,'content':_0x2e12a7})});if(!_0x2749c8['ok']){const _0x3d7952=await _0x2749c8['json']()['catch'](()=>({}));throw new Error(_0x3d7952['error']||_0x3d7952['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2749c8['statusText']);}return await _0x2749c8['json']();},async 'discardFile'(_0x4f4797,_0xeb651d,_0x3d9c12){if(!_0x4f4797)throw new Error('Task\x20ID\x20is\x20required');if(!_0xeb651d)throw new Error('File\x20path\x20is\x20required');if(!_0x3d9c12)throw new Error('Repository\x20path\x20is\x20required');const _0x29ae40=await fetch(API_BASE+'/tasks/'+_0x4f4797+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xeb651d,'repoPath':_0x3d9c12})});if(!_0x29ae40['ok']){const _0x57bf99=await _0x29ae40['json']()['catch'](()=>({}));throw new Error(_0x57bf99['error']||_0x57bf99['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x29ae40['statusText']);}return await _0x29ae40['json']();},async 'followUpTask'(_0x38e937,_0xf96541={}){if(!_0x38e937)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf96541['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x443e88,_0x56b6ec={};if(_0xf96541['files']&&_0xf96541['files']['length']>0x0){const _0x4490ef=new FormData();_0x4490ef['append']('instructions',_0xf96541['instructions']);for(const _0x4c82d2 of _0xf96541['files']){_0x4490ef['append']('attachments',_0x4c82d2);}_0x443e88=_0x4490ef;}else _0x56b6ec['Content-Type']='application/json',_0x443e88=JSON['stringify']({'instructions':_0xf96541['instructions']});const _0x3fafd8=await fetch(API_BASE+'/tasks/'+_0x38e937+'/follow-up',{'method':'POST','headers':_0x56b6ec,'body':_0x443e88});if(!_0x3fafd8['ok']){const _0x36add3=await _0x3fafd8['json']()['catch'](()=>({}));throw new Error(_0x36add3['error']||_0x36add3['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x3fafd8['statusText']);}return await _0x3fafd8['json']();},async 'getTaskRewindPoints'(_0x2728b6){if(!_0x2728b6)throw new Error('Task\x20ID\x20is\x20required');const _0x1aa493=await fetch(API_BASE+'/tasks/'+_0x2728b6+'/rewind-points');if(!_0x1aa493['ok']){const _0x9fdd7d=await _0x1aa493['json']()['catch'](()=>({}));throw new Error(_0x9fdd7d['error']||_0x9fdd7d['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1aa493['statusText']);}return await _0x1aa493['json']();},async 'rewindTask'(_0x34e467,_0x28ddc7={}){if(!_0x34e467)throw new Error('Task\x20ID\x20is\x20required');const _0x373ae3=Number['isInteger'](_0x28ddc7['targetFollowUpCount'])?_0x28ddc7['targetFollowUpCount']:0x0,_0x436159={'targetFollowUpCount':_0x373ae3};typeof _0x28ddc7['instructions']==='string'&&_0x28ddc7['instructions']['trim']()&&(_0x436159['instructions']=_0x28ddc7['instructions']['trim']());typeof _0x28ddc7['rewindFiles']==='boolean'&&(_0x436159['rewindFiles']=_0x28ddc7['rewindFiles']);const _0x14adec=await fetch(API_BASE+'/tasks/'+_0x34e467+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x436159)});if(!_0x14adec['ok']){const _0x309b79=await _0x14adec['json']()['catch'](()=>({}));throw new Error(_0x309b79['error']||_0x309b79['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x14adec['statusText']);}return await _0x14adec['json']();},async 'login'(_0x36b0fb,_0x3d061d){const _0xe20c0=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x36b0fb,'password':_0x3d061d})});if(!_0xe20c0['ok']){const _0xe4053e=await _0xe20c0['json']();throw new Error(_0xe4053e['message']||'Login\x20failed');}return await _0xe20c0['json']();},async 'logout'(){const _0x16b8e5=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x16b8e5['ok']){const _0x1eb3b6=await _0x16b8e5['json']();throw new Error(_0x1eb3b6['message']||'Logout\x20failed');}return await _0x16b8e5['json']();},async 'getCurrentUser'(){const _0x2871aa=await fetch(API_BASE+'/auth/me');if(!_0x2871aa['ok'])throw new Error('Not\x20authenticated');const _0x3d3927=await _0x2871aa['json']();return _0x3d3927['user'];},async 'getRolesInfo'(){const _0x127f15=await fetch(API_BASE+'/users/roles');if(!_0x127f15['ok']){const _0x26e73d=await _0x127f15['json']();throw new Error(_0x26e73d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x127f15['json']();},async 'getUsers'(){const _0x470aaf=await fetch(API_BASE+'/users');if(!_0x470aaf['ok']){const _0x4d8ee3=await _0x470aaf['json']();throw new Error(_0x4d8ee3['message']||'Failed\x20to\x20get\x20users');}return await _0x470aaf['json']();},async 'getUser'(_0xf6cecb){const _0xd12665=await fetch(API_BASE+'/users/'+_0xf6cecb);if(!_0xd12665['ok']){const _0x44c2d5=await _0xd12665['json']();throw new Error(_0x44c2d5['message']||'Failed\x20to\x20get\x20user');}return await _0xd12665['json']();},async 'createUser'(_0x1f12cd){const _0x5a36d6=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f12cd)});if(!_0x5a36d6['ok']){const _0x362f40=await _0x5a36d6['json']();throw new Error(_0x362f40['message']||'Failed\x20to\x20create\x20user');}return await _0x5a36d6['json']();},async 'updateUser'(_0x50bf03,_0x45f5bd){const _0x765b64=await fetch(API_BASE+'/users/'+_0x50bf03,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45f5bd)});if(!_0x765b64['ok']){const _0x47ed5a=await _0x765b64['json']();throw new Error(_0x47ed5a['message']||'Failed\x20to\x20update\x20user');}return await _0x765b64['json']();},async 'deleteUser'(_0x4466fa){const _0x10f571=await fetch(API_BASE+'/users/'+_0x4466fa,{'method':'DELETE'});if(!_0x10f571['ok']){const _0x24c0ee=await _0x10f571['json']();throw new Error(_0x24c0ee['message']||'Failed\x20to\x20delete\x20user');}return await _0x10f571['json']();},async 'stopAllContainers'(){const _0x2bf78b=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4f3e2e=await _0x2bf78b['json']()['catch'](()=>({}));if(!_0x2bf78b['ok'])throw new Error(_0x4f3e2e['message']||_0x4f3e2e['error']||'Failed\x20to\x20stop\x20containers');return _0x4f3e2e;},async 'removeStoppedContainers'(){const _0x5576c4=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x3e87eb=await _0x5576c4['json']()['catch'](()=>({}));if(!_0x5576c4['ok'])throw new Error(_0x3e87eb['message']||_0x3e87eb['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x3e87eb;},async 'pruneDockerResources'(){const _0x6e6c02=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x40134d=await _0x6e6c02['json']()['catch'](()=>({}));if(!_0x6e6c02['ok'])throw new Error(_0x40134d['message']||_0x40134d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x40134d;},async 'createPasswordToken'(_0x291acb,_0x52d1a1='setup',_0xcfd751=![]){const _0x414793=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x291acb,'type':_0x52d1a1,'sendEmail':_0xcfd751})});if(!_0x414793['ok']){const _0x31b008=await _0x414793['json']();throw new Error(_0x31b008['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x414793['json']();},async 'getEmailConfig'(){const _0x1ee023=await fetch(API_BASE+'/password/email-config');if(!_0x1ee023['ok']){const _0x24242c=await _0x1ee023['json']();throw new Error(_0x24242c['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x1ee023['json']();},async 'updateTaskName'(_0x2625d9,_0x575756){const _0x2a4715=await fetch(API_BASE+'/tasks/'+_0x2625d9,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x575756})});if(!_0x2a4715['ok']){const _0x7cfa70=await _0x2a4715['json']();throw new Error(_0x7cfa70['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2a4715['json']();},async 'pinTask'(_0xd372ae,_0x202b36,_0x160e6e=null){if(!_0xd372ae)throw new Error('Task\x20ID\x20is\x20required');const _0x20d6e2={'pinned':_0x202b36};_0x160e6e&&_0x160e6e['length']>0x0&&(_0x20d6e2['additionalTaskIds']=_0x160e6e);const _0x291628=await fetch(API_BASE+'/tasks/'+_0xd372ae+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20d6e2)});if(!_0x291628['ok']){const _0x57a3f5=await _0x291628['json']();throw new Error(_0x57a3f5['error']||'Failed\x20to\x20pin\x20task');}return await _0x291628['json']();},async 'setTaskWinner'(_0x340c2b,_0x2cdeec,_0x5b5974=[]){if(!_0x340c2b)throw new Error('Task\x20ID\x20is\x20required');const _0x176c4c=await fetch(API_BASE+'/tasks/'+_0x340c2b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x2cdeec,'siblings':_0x5b5974})});if(!_0x176c4c['ok']){const _0xa93819=await _0x176c4c['json']();throw new Error(_0xa93819['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x176c4c['json']();},async 'setTaskLoser'(_0x1c0523,_0x9be7bd){if(!_0x1c0523)throw new Error('Task\x20ID\x20is\x20required');const _0x4f4cd7=await fetch(API_BASE+'/tasks/'+_0x1c0523+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x9be7bd})});if(!_0x4f4cd7['ok']){const _0x25a5c7=await _0x4f4cd7['json']();throw new Error(_0x25a5c7['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4f4cd7['json']();},async 'createTaskGroup'(_0x5c4c2c){const _0x55b1ea=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c4c2c)});if(!_0x55b1ea['ok']){const _0x22c88e=await _0x55b1ea['json']();throw new Error(_0x22c88e['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x55b1ea['json']();},async 'getTaskGroups'(_0x20ee6a={}){const _0xdf8128=new URLSearchParams();if(_0x20ee6a['userId'])_0xdf8128['set']('userId',String(_0x20ee6a['userId']));if(_0x20ee6a['status'])_0xdf8128['set']('status',String(_0x20ee6a['status']));if(_0x20ee6a['limit'])_0xdf8128['set']('limit',String(_0x20ee6a['limit']));const _0x2989c1=API_BASE+'/tasks/groups'+(_0xdf8128['toString']()?'?'+_0xdf8128['toString']():''),_0x33351e=await fetch(_0x2989c1);if(!_0x33351e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x33351e['json']();},async 'getTaskGroup'(_0x35b204){const _0x4f188f=await fetch(API_BASE+'/tasks/groups/'+_0x35b204);if(!_0x4f188f['ok']){const _0x1eee8c=await _0x4f188f['json']();throw new Error(_0x1eee8c['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f188f['json']();},async 'updateTaskGroup'(_0x3cde80,_0x126584,_0x1b973c){const _0x3d72fb=await fetch(API_BASE+'/tasks/'+_0x3cde80+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x126584,'groupIndex':_0x1b973c})});if(!_0x3d72fb['ok']){const _0x5e989b=await _0x3d72fb['json']();throw new Error(_0x5e989b['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3d72fb['json']();},async 'removeTaskFromGroup'(_0x24744c){return this['updateTaskGroup'](_0x24744c,null,null);},async 'deleteTaskGroup'(_0xac4913,_0x4651bf=![]){const _0x4f4806=_0x4651bf?'?deleteTasks=true':'',_0x3c65bc=await fetch(API_BASE+'/tasks/groups/'+_0xac4913+_0x4f4806,{'method':'DELETE'});if(!_0x3c65bc['ok']){const _0x3c5786=await _0x3c65bc['json']();throw new Error(_0x3c5786['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x206f56,_0x5005d6){const _0x50663e=await fetch(API_BASE+'/tasks/groups/'+_0x206f56+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5005d6})});if(!_0x50663e['ok']){const _0x6c2d57=await _0x50663e['json']();throw new Error(_0x6c2d57['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x50663e['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x151fc6){if(!_0x151fc6)throw new Error('Task\x20ID\x20is\x20required');const _0x16ffaa=await fetch(API_BASE+'/tasks/'+_0x151fc6+'/comments');if(!_0x16ffaa['ok']){const _0x5bc483=await _0x16ffaa['json']()['catch'](()=>({}));throw new Error(_0x5bc483['error']||'Failed\x20to\x20get\x20comments');}return await _0x16ffaa['json']();},async 'addComment'(_0x556858,_0x1fa280){if(!_0x556858)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1fa280)throw new Error('Comment\x20content\x20is\x20required');const _0x1b4394=await fetch(API_BASE+'/tasks/'+_0x556858+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1fa280})});if(!_0x1b4394['ok']){const _0x296796=await _0x1b4394['json']()['catch'](()=>({}));throw new Error(_0x296796['error']||'Failed\x20to\x20add\x20comment');}return await _0x1b4394['json']();},async 'updateComment'(_0x225800,_0x532e1d,_0x245049){if(!_0x225800)throw new Error('Task\x20ID\x20is\x20required');if(!_0x532e1d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x245049)throw new Error('Comment\x20content\x20is\x20required');const _0x4d838c=await fetch(API_BASE+'/tasks/'+_0x225800+'/comments/'+_0x532e1d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x245049})});if(!_0x4d838c['ok']){const _0x256473=await _0x4d838c['json']()['catch'](()=>({}));throw new Error(_0x256473['error']||'Failed\x20to\x20update\x20comment');}return await _0x4d838c['json']();},async 'deleteComment'(_0x1c0364,_0x4c0f5f){if(!_0x1c0364)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4c0f5f)throw new Error('Comment\x20ID\x20is\x20required');const _0x56f277=await fetch(API_BASE+'/tasks/'+_0x1c0364+'/comments/'+_0x4c0f5f,{'method':'DELETE'});if(!_0x56f277['ok']){const _0x173822=await _0x56f277['json']()['catch'](()=>({}));throw new Error(_0x173822['error']||'Failed\x20to\x20delete\x20comment');}return await _0x56f277['json']();},async 'createObjective'(_0x1ffaac){const _0x25a3f9={'objective':!![],'name':_0x1ffaac['name']||'','environment':_0x1ffaac['environment']||null,'agents':_0x1ffaac['agents']||[],'branches':_0x1ffaac['branches']||{},'isPinned':_0x1ffaac['isPinned']||![],'parentObjectiveId':_0x1ffaac['parentObjectiveId']||null,'env_vars':_0x1ffaac['envVars']||{},'parameters':{'instructions':_0x1ffaac['instructions']||''},'files':_0x1ffaac['files']||[],'jira':_0x1ffaac['jira']||null};return this['createTask'](_0x25a3f9);},async 'updateObjective'(_0x1ed3ee,_0x21c25a,_0x469a34=[],_0x4d5205=[]){let _0x20bdba,_0x5e6381={};const _0x25c0c3={..._0x21c25a};_0x4d5205&&_0x4d5205['length']>0x0&&(_0x25c0c3['removeAttachments']=_0x4d5205);if(_0x469a34&&_0x469a34['length']>0x0){const _0x5f9c4b=new FormData();for(const [_0x32702c,_0x392259]of Object['entries'](_0x25c0c3)){if(_0x392259==null)continue;typeof _0x392259==='object'?_0x5f9c4b['append'](_0x32702c,JSON['stringify'](_0x392259)):_0x5f9c4b['append'](_0x32702c,String(_0x392259));}for(const _0x31d248 of _0x469a34){_0x5f9c4b['append']('attachments',_0x31d248);}_0x20bdba=_0x5f9c4b;}else _0x5e6381['Content-Type']='application/json',_0x20bdba=JSON['stringify'](_0x25c0c3);const _0x2a3320=await fetch(API_BASE+'/tasks/'+_0x1ed3ee,{'method':'PATCH','headers':_0x5e6381,'body':_0x20bdba});if(!_0x2a3320['ok']){const _0x18e5d1=await _0x2a3320['json']();throw new Error(_0x18e5d1['error']||'Failed\x20to\x20update\x20objective');}return await _0x2a3320['json']();},async 'deleteObjective'(_0x5acca5){return this['deleteTask'](_0x5acca5);},async 'launchObjective'(_0x17b477,_0x548d38={}){const _0xeaa26e=await fetch(API_BASE+'/tasks/'+_0x17b477+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x548d38)});if(!_0xeaa26e['ok']){const _0x3f0f8e=await _0xeaa26e['json']();throw new Error(_0x3f0f8e['error']||'Failed\x20to\x20launch\x20objective');}return await _0xeaa26e['json']();},async 'getObjectiveAttachments'(_0xfa1989){return this['getTaskAttachments'](_0xfa1989);},async 'createJudgeTask'({environment:_0x3db416,judgeAgent:_0x5298cc,groupId:_0x141324,taskIds:_0x5c644e,judgeCustomInstructions:_0x3e3ac3,isPinned:_0x754f4}){const _0xb234f5=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3db416,'judgeAgent':_0x5298cc,'groupId':_0x141324,'taskIds':_0x5c644e,'judgeCustomInstructions':_0x3e3ac3,'isPinned':_0x754f4})});if(!_0xb234f5['ok']){const _0x62701f=await _0xb234f5['json']();throw new Error(_0x62701f['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xb234f5['json']();},async 'getJudgeTasks'(_0x1ecff2){const _0x34e40=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1ecff2));if(!_0x34e40['ok']){const _0x5943e7=await _0x34e40['json']();throw new Error(_0x5943e7['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x34e40['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x81d33e,_0x244806,_0x55a658=''){const _0x1e6564=await fetch(API_BASE+'/tasks/'+_0x81d33e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x244806,'customPreamble':_0x55a658})});if(!_0x1e6564['ok']){const _0x10abad=await _0x1e6564['json']();throw new Error(_0x10abad['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1e6564['json']();},async 'getJiraConfig'(){const _0x34d62d=await fetch(API_BASE+'/jira/config');if(!_0x34d62d['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x34d62d['json']();},async 'getJiraIssue'(_0x4fca34){const _0x4e552b=await fetch(API_BASE+'/jira/issues/'+_0x4fca34);if(!_0x4e552b['ok']){const _0x517a62=await _0x4e552b['json']()['catch'](()=>({}));throw new Error(_0x517a62['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4e552b['statusText']);}return await _0x4e552b['json']();},async 'searchJiraIssues'(_0x552ddf,_0x39750d=0x14){const _0x4d2b9f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x552ddf,'maxResults':_0x39750d})});if(!_0x4d2b9f['ok']){const _0x2aabcb=await _0x4d2b9f['json']()['catch'](()=>({}));throw new Error(_0x2aabcb['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x4d2b9f['statusText']);}return await _0x4d2b9f['json']();},async 'postJiraComment'(_0x22e508,_0x574362){const _0x4b4f61=await fetch(API_BASE+'/jira/issues/'+_0x22e508+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x574362})});if(!_0x4b4f61['ok']){const _0x1ab3e0=await _0x4b4f61['json']()['catch'](()=>({}));throw new Error(_0x1ab3e0['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4b4f61['statusText']);}return await _0x4b4f61['json']();},async 'getJiraComments'(_0x3ab14a){const _0x2335b8=await fetch(API_BASE+'/jira/issues/'+_0x3ab14a+'/comments');if(!_0x2335b8['ok']){const _0x715b58=await _0x2335b8['json']()['catch'](()=>({}));throw new Error(_0x715b58['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2335b8['statusText']);}return await _0x2335b8['json']();},async 'promptParameter'({environment:_0x3b2de5,command:_0x4d7658,parser:parser='json'}){const _0x4c337a=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3b2de5,'command':_0x4d7658,'parser':parser})});if(!_0x4c337a['ok']){const _0x1e9cde=await _0x4c337a['json']()['catch'](()=>({}));throw new Error(_0x1e9cde['message']||_0x1e9cde['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4c337a['statusText']);}return await _0x4c337a['json']();},async 'promptParameterStream'(_0x5c9bc9,_0x19d68e){const _0x1ec387=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c9bc9)});if(!_0x1ec387['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1ec387['statusText']);const _0x34ffa9=_0x1ec387['body']['getReader'](),_0x5d6b74=new TextDecoder();let _0x17e913='';return new Promise((_0xb1efbf,_0x529711)=>{const _0x511719=async()=>{try{const {done:_0x17e017,value:_0xa5049e}=await _0x34ffa9['read']();if(_0x17e017)return;_0x17e913+=_0x5d6b74['decode'](_0xa5049e,{'stream':!![]});const _0x3892d7=_0x17e913['split']('\x0a\x0a');_0x17e913=_0x3892d7['pop']()||'';for(const _0x2d65d3 of _0x3892d7){if(!_0x2d65d3['trim']())continue;const _0x330c71=_0x2d65d3['split']('\x0a');let _0x152f72='message',_0x2e25a5='';for(const _0x25ccec of _0x330c71){if(_0x25ccec['startsWith']('event:'))_0x152f72=_0x25ccec['substring'](0x6)['trim']();else _0x25ccec['startsWith']('data:')&&(_0x2e25a5=_0x25ccec['substring'](0x5)['trim']());}if(!_0x2e25a5)continue;try{const _0x378424=JSON['parse'](_0x2e25a5);if(_0x152f72==='progress'&&_0x19d68e)_0x19d68e(_0x378424['stage'],_0x378424['message']);else{if(_0x152f72==='result'){_0xb1efbf(_0x378424);return;}else{if(_0x152f72==='error'){let _0x11c8f7=_0x378424['message']||_0x378424['error']||'Prompt\x20command\x20failed';_0x378424['rawOutput']&&(_0x11c8f7+='\x0a\x0aRaw\x20output:\x0a'+_0x378424['rawOutput']);_0x529711(new Error(_0x11c8f7));return;}}}}catch(_0x939394){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x939394),console['error']('Event\x20type:',_0x152f72),console['error']('Event\x20data:',_0x2e25a5),console['error']('First\x20200\x20chars:',_0x2e25a5['substring'](0x0,0xc8)),_0x529711(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x939394['message']+'\x0a\x0aData:\x20'+_0x2e25a5['substring'](0x0,0x1f4)));return;}}_0x511719();}catch(_0x46401b){_0x529711(_0x46401b);}};_0x511719();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x51acdc){const _0x3f4b0a=await fetch(''+API_BASE+_0x51acdc);if(!_0x3f4b0a['ok']){const _0x5ee781=await _0x3f4b0a['json']()['catch'](()=>({'error':_0x3f4b0a['statusText']})),_0x3aed95=new Error(_0x5ee781['error']||_0x5ee781['message']||_0x3f4b0a['statusText']);if(_0x5ee781['detail']!==undefined)_0x3aed95['detail']=_0x5ee781['detail'];throw _0x3aed95;}return await _0x3f4b0a['json']();},async 'post'(_0x5cb447,_0x15e283){const _0x3d9d56=await fetch(''+API_BASE+_0x5cb447,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x15e283)});if(!_0x3d9d56['ok']){const _0x404aef=await _0x3d9d56['json']()['catch'](()=>({'error':_0x3d9d56['statusText']})),_0x504e46=new Error(_0x404aef['error']||_0x404aef['message']||_0x3d9d56['statusText']);if(_0x404aef['detail']!==undefined)_0x504e46['detail']=_0x404aef['detail'];throw _0x504e46;}return await _0x3d9d56['json']();},async 'put'(_0x2d6f7e,_0x25275c){const _0x45409d=await fetch(''+API_BASE+_0x2d6f7e,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25275c)});if(!_0x45409d['ok']){const _0x4d5f88=await _0x45409d['json']()['catch'](()=>({'error':_0x45409d['statusText']})),_0x314177=new Error(_0x4d5f88['error']||_0x4d5f88['message']||_0x45409d['statusText']);if(_0x4d5f88['detail']!==undefined)_0x314177['detail']=_0x4d5f88['detail'];throw _0x314177;}return await _0x45409d['json']();},async 'delete'(_0x40df91,_0xbce3f){const _0x46abe6={'method':'DELETE'};_0xbce3f&&(_0x46abe6['headers']={'Content-Type':'application/json'},_0x46abe6['body']=JSON['stringify'](_0xbce3f));const _0x186f9a=await fetch(''+API_BASE+_0x40df91,_0x46abe6);if(!_0x186f9a['ok']){const _0x293114=await _0x186f9a['json']()['catch'](()=>({'error':_0x186f9a['statusText']})),_0x506ea3=new Error(_0x293114['error']||_0x293114['message']||_0x186f9a['statusText']);if(_0x293114['detail']!==undefined)_0x506ea3['detail']=_0x293114['detail'];throw _0x506ea3;}return await _0x186f9a['json']();},async 'getSkills'(){const _0x67ea7=await fetch(API_BASE+'/skills');if(!_0x67ea7['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x67ea7['statusText']);return await _0x67ea7['json']();},async 'getSkill'(_0x35f093){const _0x31c451=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35f093));if(!_0x31c451['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x31c451['statusText']);return await _0x31c451['json']();},async 'createSkill'(_0x77a3b8){const _0x288b07=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x77a3b8)});if(!_0x288b07['ok']){const _0x313bc2=await _0x288b07['json']()['catch'](()=>({'error':_0x288b07['statusText']})),_0x50dc54=new Error(_0x313bc2['error']||_0x313bc2['message']||_0x288b07['statusText']);if(_0x313bc2['detail']!==undefined)_0x50dc54['detail']=_0x313bc2['detail'];throw _0x50dc54;}return await _0x288b07['json']();},async 'updateSkill'(_0x46343b,_0x2c40e1){const _0x51c7eb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x46343b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2c40e1)});if(!_0x51c7eb['ok']){const _0x21f06f=await _0x51c7eb['json']()['catch'](()=>({'error':_0x51c7eb['statusText']})),_0x2ead63=new Error(_0x21f06f['error']||_0x21f06f['message']||_0x51c7eb['statusText']);if(_0x21f06f['detail']!==undefined)_0x2ead63['detail']=_0x21f06f['detail'];throw _0x2ead63;}return await _0x51c7eb['json']();},async 'deleteSkill'(_0x12db84){const _0x1d03e2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12db84),{'method':'DELETE'});if(!_0x1d03e2['ok']){const _0x1edaa7=await _0x1d03e2['json']()['catch'](()=>({'error':_0x1d03e2['statusText']})),_0x1628f4=new Error(_0x1edaa7['error']||_0x1edaa7['message']||_0x1d03e2['statusText']);if(_0x1edaa7['detail']!==undefined)_0x1628f4['detail']=_0x1edaa7['detail'];throw _0x1628f4;}return await _0x1d03e2['json']();},async 'getSkillFile'(_0x2d4130,_0x47865a){const _0x21e74e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d4130)+'/files/'+_0x47865a);if(!_0x21e74e['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x21e74e['statusText']);return await _0x21e74e['json']();},async 'saveSkillFile'(_0xcdaaad,_0x4e6bf2,_0x1b4a54){const _0x1fc5a5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xcdaaad)+'/files/'+_0x4e6bf2,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b4a54})});if(!_0x1fc5a5['ok']){const _0xcc0f9d=await _0x1fc5a5['json']()['catch'](()=>({'error':_0x1fc5a5['statusText']})),_0x29b76e=new Error(_0xcc0f9d['error']||_0xcc0f9d['message']||_0x1fc5a5['statusText']);if(_0xcc0f9d['detail']!==undefined)_0x29b76e['detail']=_0xcc0f9d['detail'];throw _0x29b76e;}return await _0x1fc5a5['json']();},async 'deleteSkillFile'(_0x5cd345,_0x2a8a12){const _0x1abdf7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5cd345)+'/files/'+_0x2a8a12,{'method':'DELETE'});if(!_0x1abdf7['ok']){const _0x201dfc=await _0x1abdf7['json']()['catch'](()=>({'error':_0x1abdf7['statusText']})),_0x3a0222=new Error(_0x201dfc['error']||_0x201dfc['message']||_0x1abdf7['statusText']);if(_0x201dfc['detail']!==undefined)_0x3a0222['detail']=_0x201dfc['detail'];throw _0x3a0222;}return await _0x1abdf7['json']();},async 'pullSkills'(){const _0x22ba51=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x22ba51['ok']){const _0x5b53bb=await _0x22ba51['json']()['catch'](()=>({'error':_0x22ba51['statusText']})),_0x8301f8=new Error(_0x5b53bb['error']||_0x5b53bb['message']||_0x22ba51['statusText']);if(_0x5b53bb['detail']!==undefined)_0x8301f8['detail']=_0x5b53bb['detail'];throw _0x8301f8;}return await _0x22ba51['json']();},async 'commitSkills'(_0x3eceb7,_0xc0987={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xc0987,_0x18e528=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x3eceb7,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x18e528['ok']){const _0x245074=await _0x18e528['json']()['catch'](()=>({'error':_0x18e528['statusText']})),_0x18ddc5=new Error(_0x245074['error']||_0x245074['message']||_0x18e528['statusText']);if(_0x245074['detail']!==undefined)_0x18ddc5['detail']=_0x245074['detail'];throw _0x18ddc5;}return await _0x18e528['json']();},async 'discardSkillsChanges'(){const _0x427c23=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x427c23['ok']){const _0x2c2b07=await _0x427c23['json']()['catch'](()=>({'error':_0x427c23['statusText']})),_0x2b958a=new Error(_0x2c2b07['error']||_0x2c2b07['message']||_0x427c23['statusText']);if(_0x2c2b07['detail']!==undefined)_0x2b958a['detail']=_0x2c2b07['detail'];throw _0x2b958a;}return await _0x427c23['json']();},async 'getSkillCatalog'(){const _0x540433=await fetch(API_BASE+'/external-skills/catalog');if(!_0x540433['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x540433['statusText']);return await _0x540433['json']();},async 'getImportedSkillsRegistry'(){const _0x28db0d=await fetch(API_BASE+'/external-skills/registry');if(!_0x28db0d['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x28db0d['statusText']);return await _0x28db0d['json']();},async 'importCatalogSkill'(_0x354de5){const _0x3ce3f1=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x354de5})});if(!_0x3ce3f1['ok']){const _0x4bf753=await _0x3ce3f1['json']()['catch'](()=>({'error':_0x3ce3f1['statusText']})),_0x5f2d1e=new Error(_0x4bf753['error']||_0x4bf753['message']||_0x3ce3f1['statusText']);if(_0x4bf753['detail']!==undefined)_0x5f2d1e['detail']=_0x4bf753['detail'];throw _0x5f2d1e;}return await _0x3ce3f1['json']();},async 'importSkillFromGit'(_0x43e56a,_0x1f4f77,_0x27adaf='main',_0x3700de=null){const _0x27764e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x43e56a,'skillPath':_0x1f4f77,'branch':_0x27adaf,'skillId':_0x3700de})});if(!_0x27764e['ok']){const _0x31a7e7=await _0x27764e['json']()['catch'](()=>({'error':_0x27764e['statusText']})),_0x510644=new Error(_0x31a7e7['error']||_0x31a7e7['message']||_0x27764e['statusText']);if(_0x31a7e7['detail']!==undefined)_0x510644['detail']=_0x31a7e7['detail'];throw _0x510644;}return await _0x27764e['json']();},async 'probeMarketplace'(_0x16ad96,_0x4dc4b5='main'){const _0x425755=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x16ad96,'branch':_0x4dc4b5})});if(!_0x425755['ok']){const _0x2af1ca=await _0x425755['json']()['catch'](()=>({'error':_0x425755['statusText']})),_0x4a4bd8=new Error(_0x2af1ca['error']||_0x2af1ca['message']||_0x425755['statusText']);if(_0x2af1ca['detail']!==undefined)_0x4a4bd8['detail']=_0x2af1ca['detail'];throw _0x4a4bd8;}return await _0x425755['json']();},async 'importMarketplaceBundle'(_0x3a5efd,_0x2f01a1,_0x51b797,_0x324ed9=null){const _0x5a9cfc=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3a5efd,'branch':_0x2f01a1,'bundleId':_0x51b797,'selectedSkills':_0x324ed9})});if(!_0x5a9cfc['ok']){const _0x368ea1=await _0x5a9cfc['json']()['catch'](()=>({'error':_0x5a9cfc['statusText']})),_0x3b63a4=new Error(_0x368ea1['error']||_0x368ea1['message']||_0x5a9cfc['statusText']);if(_0x368ea1['detail']!==undefined)_0x3b63a4['detail']=_0x368ea1['detail'];throw _0x3b63a4;}return await _0x5a9cfc['json']();},async 'importSkillFromFolder'(_0x51381f,_0x1b0faa=null){const _0x51f431=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x51381f,'skillId':_0x1b0faa})});if(!_0x51f431['ok']){const _0x4850=await _0x51f431['json']()['catch'](()=>({'error':_0x51f431['statusText']})),_0x4ee386=new Error(_0x4850['error']||_0x4850['message']||_0x51f431['statusText']);if(_0x4850['detail']!==undefined)_0x4ee386['detail']=_0x4850['detail'];throw _0x4ee386;}return await _0x51f431['json']();},async 'importSkillFromNpm'(_0x2b6b18,_0xa3ddb='latest',_0x1edfa1=null,_0x18767e=null){const _0x103982=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2b6b18,'version':_0xa3ddb,'skillId':_0x1edfa1,'registry':_0x18767e})});if(!_0x103982['ok']){const _0x18e184=await _0x103982['json']()['catch'](()=>({'error':_0x103982['statusText']})),_0x15d502=new Error(_0x18e184['error']||_0x18e184['message']||_0x103982['statusText']);if(_0x18e184['detail']!==undefined)_0x15d502['detail']=_0x18e184['detail'];throw _0x15d502;}return await _0x103982['json']();},async 'checkSkillUpdates'(_0x5f2964){const _0x9c0b70=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f2964)+'/check-updates',{'method':'POST'});if(!_0x9c0b70['ok']){const _0x17ad32=await _0x9c0b70['json']()['catch'](()=>({'error':_0x9c0b70['statusText']})),_0x2f09b5=new Error(_0x17ad32['error']||_0x17ad32['message']||_0x9c0b70['statusText']);if(_0x17ad32['detail']!==undefined)_0x2f09b5['detail']=_0x17ad32['detail'];throw _0x2f09b5;}return await _0x9c0b70['json']();},async 'updateExternalSkill'(_0x2f825e){const _0x2b9c7e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2f825e)+'/update',{'method':'POST'});if(!_0x2b9c7e['ok']){const _0x275c59=await _0x2b9c7e['json']()['catch'](()=>({'error':_0x2b9c7e['statusText']})),_0x26c9c2=new Error(_0x275c59['error']||_0x275c59['message']||_0x2b9c7e['statusText']);if(_0x275c59['detail']!==undefined)_0x26c9c2['detail']=_0x275c59['detail'];throw _0x26c9c2;}return await _0x2b9c7e['json']();},async 'updateSkillFlags'(_0xe0d083,_0x353b31){const _0x2f9301=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xe0d083)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x353b31})});if(!_0x2f9301['ok']){const _0x5eba38=await _0x2f9301['json']()['catch'](()=>({'error':_0x2f9301['statusText']})),_0xdd6665=new Error(_0x5eba38['error']||_0x5eba38['message']||_0x2f9301['statusText']);if(_0x5eba38['detail']!==undefined)_0xdd6665['detail']=_0x5eba38['detail'];throw _0xdd6665;}return await _0x2f9301['json']();},async 'removeFromImportedRegistry'(_0x28bae1){const _0x292df5=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x28bae1)+'/registry',{'method':'DELETE'});if(!_0x292df5['ok']){const _0x425999=await _0x292df5['json']()['catch'](()=>({'error':_0x292df5['statusText']})),_0x532caf=new Error(_0x425999['error']||_0x425999['message']||_0x292df5['statusText']);if(_0x425999['detail']!==undefined)_0x532caf['detail']=_0x425999['detail'];throw _0x532caf;}return await _0x292df5['json']();},async 'getTeams'(){const _0x410c23=await fetch(API_BASE+'/teams');if(!_0x410c23['ok']){const _0x38836b=await _0x410c23['json']()['catch'](()=>({'message':_0x410c23['statusText']}));throw new Error(_0x38836b['message']||'Failed\x20to\x20get\x20teams');}return await _0x410c23['json']();},async 'getTeam'(_0x15ab29){const _0x119900=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15ab29));if(!_0x119900['ok']){const _0x242c42=await _0x119900['json']()['catch'](()=>({'message':_0x119900['statusText']}));throw new Error(_0x242c42['message']||'Failed\x20to\x20get\x20team');}return await _0x119900['json']();},async 'createTeam'(_0x1d5f87){const _0x2a9813=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d5f87)});if(!_0x2a9813['ok']){const _0x304cff=await _0x2a9813['json']()['catch'](()=>({'message':_0x2a9813['statusText']}));throw new Error(_0x304cff['message']||'Failed\x20to\x20create\x20team');}return await _0x2a9813['json']();},async 'updateTeam'(_0x26bc35,_0xba8106){const _0x3353d7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x26bc35),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xba8106)});if(!_0x3353d7['ok']){const _0x14c63d=await _0x3353d7['json']()['catch'](()=>({'message':_0x3353d7['statusText']}));throw new Error(_0x14c63d['message']||'Failed\x20to\x20update\x20team');}return await _0x3353d7['json']();},async 'deleteTeam'(_0x369bf9){const _0x1ad983=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x369bf9),{'method':'DELETE'});if(!_0x1ad983['ok']){const _0x194cd7=await _0x1ad983['json']()['catch'](()=>({'message':_0x1ad983['statusText']}));throw new Error(_0x194cd7['message']||'Failed\x20to\x20delete\x20team');}return await _0x1ad983['json']();},async 'addTeamMember'(_0x2cd1e1,_0xbe8fe1){const _0x29adc7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2cd1e1)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xbe8fe1})});if(!_0x29adc7['ok']){const _0xd4b0f1=await _0x29adc7['json']()['catch'](()=>({'message':_0x29adc7['statusText']}));throw new Error(_0xd4b0f1['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x29adc7['json']();},async 'removeTeamMember'(_0x19b34f,_0x2f68e5){const _0x589eaa=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x19b34f)+'/members/'+encodeURIComponent(_0x2f68e5),{'method':'DELETE'});if(!_0x589eaa['ok']){const _0x4304a5=await _0x589eaa['json']()['catch'](()=>({'message':_0x589eaa['statusText']}));throw new Error(_0x4304a5['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x589eaa['json']();},async 'getBindings'(_0x6b8d61={}){const _0x143ceb=new URLSearchParams();if(_0x6b8d61['resource_type'])_0x143ceb['set']('resource_type',_0x6b8d61['resource_type']);if(_0x6b8d61['resource_id'])_0x143ceb['set']('resource_id',_0x6b8d61['resource_id']);if(_0x6b8d61['subject_type'])_0x143ceb['set']('subject_type',_0x6b8d61['subject_type']);if(_0x6b8d61['subject_id'])_0x143ceb['set']('subject_id',_0x6b8d61['subject_id']);const _0x2ac833=_0x143ceb['toString'](),_0x4613f3=await fetch(API_BASE+'/bindings'+(_0x2ac833?'?'+_0x2ac833:''));if(!_0x4613f3['ok']){const _0x351731=await _0x4613f3['json']()['catch'](()=>({'message':_0x4613f3['statusText']}));throw new Error(_0x351731['message']||'Failed\x20to\x20get\x20bindings');}return await _0x4613f3['json']();},async 'createBinding'(_0x39af21){const _0x43704c=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39af21)});if(!_0x43704c['ok']){const _0x178a96=await _0x43704c['json']()['catch'](()=>({'message':_0x43704c['statusText']}));throw new Error(_0x178a96['message']||'Failed\x20to\x20create\x20binding');}return await _0x43704c['json']();},async 'updateBinding'(_0x529837,_0x359d56){const _0x228bf8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x529837),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x359d56)});if(!_0x228bf8['ok']){const _0x3d14fe=await _0x228bf8['json']()['catch'](()=>({'message':_0x228bf8['statusText']}));throw new Error(_0x3d14fe['message']||'Failed\x20to\x20update\x20binding');}return await _0x228bf8['json']();},async 'deleteBinding'(_0x86f0ec){const _0x371360=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x86f0ec),{'method':'DELETE'});if(!_0x371360['ok']){const _0x1ffe72=await _0x371360['json']()['catch'](()=>({'message':_0x371360['statusText']}));throw new Error(_0x1ffe72['message']||'Failed\x20to\x20delete\x20binding');}return await _0x371360['json']();},async 'getRoleDefinitions'(){const _0x4a90d8=await fetch(API_BASE+'/roles');if(!_0x4a90d8['ok']){const _0x96c493=await _0x4a90d8['json']()['catch'](()=>({'message':_0x4a90d8['statusText']}));throw new Error(_0x96c493['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4a90d8['json']();},async 'getRoleDefinition'(_0x1ebbe4){const _0x797e99=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1ebbe4));if(!_0x797e99['ok']){const _0x29d53e=await _0x797e99['json']()['catch'](()=>({'message':_0x797e99['statusText']}));throw new Error(_0x29d53e['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x797e99['json']();},async 'createRoleDefinition'(_0x244694){const _0x28ba07=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x244694)});if(!_0x28ba07['ok']){const _0x42157e=await _0x28ba07['json']()['catch'](()=>({'message':_0x28ba07['statusText']}));throw new Error(_0x42157e['message']||_0x42157e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x28ba07['json']();},async 'updateRoleDefinition'(_0xb789dd,_0x46228d){const _0x1ec708=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb789dd),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46228d)});if(!_0x1ec708['ok']){const _0x3df384=await _0x1ec708['json']()['catch'](()=>({'message':_0x1ec708['statusText']}));throw new Error(_0x3df384['message']||_0x3df384['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1ec708['json']();},async 'deleteRoleDefinition'(_0x1792c4){const _0x477b99=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1792c4),{'method':'DELETE'});if(!_0x477b99['ok']){const _0x4d19ba=await _0x477b99['json']()['catch'](()=>({'message':_0x477b99['statusText']}));throw new Error(_0x4d19ba['message']||_0x4d19ba['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x477b99['json']();},async 'getAvailablePermissions'(){const _0x3232e1=await fetch(API_BASE+'/roles/available-permissions');if(!_0x3232e1['ok']){const _0x555f67=await _0x3232e1['json']()['catch'](()=>({'message':_0x3232e1['statusText']}));throw new Error(_0x555f67['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x3232e1['json']();},async 'getGitProviderAllowedTeams'(_0x37fda9){const _0x5cafc1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x37fda9)+'/allowed-teams');if(!_0x5cafc1['ok']){const _0x55dffa=await _0x5cafc1['json']()['catch'](()=>({'message':_0x5cafc1['statusText']}));throw new Error(_0x55dffa['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5cafc1['json']();},async 'setGitProviderAllowedTeams'(_0x30f2f8,_0x3c511b){const _0x262053=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x30f2f8)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3c511b})});if(!_0x262053['ok']){const _0x875018=await _0x262053['json']()['catch'](()=>({'message':_0x262053['statusText']}));throw new Error(_0x875018['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x262053['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 _0x1c9459=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3a8bfb=>{_0x3a8bfb['el']['style']['bottom']=_0x1c9459+'px';const _0x2e83d9=_0x3a8bfb['el']['offsetHeight']||toastState['defaultHeight'];_0x1c9459+=_0x2e83d9+toastState['gap'];});});}function removeToastById(_0x235f6a){const _0x2d7363=toastState['toasts']['findIndex'](_0x1b1651=>_0x1b1651['id']===_0x235f6a);if(_0x2d7363===-0x1)return;const _0x78546a=toastState['toasts'][_0x2d7363];if(_0x78546a['timeoutId'])clearTimeout(_0x78546a['timeoutId']);_0x78546a['el']['classList']['remove']('show'),setTimeout(()=>_0x78546a['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2d7363,0x1),repositionAllToasts();}function registerToast(_0x4074f4){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4074f4),repositionAllToasts(),_0x4074f4['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x8fbca9){const _0xcc091=new Date(_0x8fbca9),_0x5cdf20=new Date(),_0x1b8aed=_0x5cdf20-_0xcc091,_0x267b57=Math['floor'](_0x1b8aed/0x3e8),_0x522dce=Math['floor'](_0x267b57/0x3c),_0x5e6694=Math['floor'](_0x522dce/0x3c),_0xbc8783=Math['floor'](_0x5e6694/0x18);if(_0x267b57<0x3c)return'now';if(_0x522dce<0x3c)return _0x522dce+'m\x20ago';if(_0x5e6694<0x18)return _0x5e6694+'h\x20ago';return _0xbc8783+'d\x20ago';},'getStatusIcon'(_0x204018){switch(_0x204018){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0xb44b7e){switch(_0xb44b7e){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'(_0x582deb,_0x592739=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2ceffc={};_0x2ceffc['text/plain']=new Blob([_0x582deb],{'type':'text/plain'});_0x592739&&(_0x2ceffc['text/html']=new Blob([_0x592739],{'type':'text/html'}));const _0xc557b8=new ClipboardItem(_0x2ceffc);return await navigator['clipboard']['write']([_0xc557b8]),!![];}catch(_0x7b4394){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x7b4394);}try{const _0xdcd4e5=_0x49e9b5=>{_0x49e9b5['preventDefault'](),_0x49e9b5['clipboardData']['setData']('text/plain',_0x582deb),_0x592739&&_0x49e9b5['clipboardData']['setData']('text/html',_0x592739);};document['addEventListener']('copy',_0xdcd4e5);const _0x40a9e9=document['execCommand']('copy');document['removeEventListener']('copy',_0xdcd4e5);if(_0x40a9e9)return!![];}catch(_0x2cfc29){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2cfc29);}try{const _0x9dae84=document['createElement']('textarea');_0x9dae84['value']=_0x582deb,_0x9dae84['style']['position']='fixed',_0x9dae84['style']['opacity']='0',_0x9dae84['style']['pointerEvents']='none',document['body']['appendChild'](_0x9dae84),_0x9dae84['select']();const _0x2a5c65=document['execCommand']('copy');return document['body']['removeChild'](_0x9dae84),_0x2a5c65;}catch(_0x5a0121){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x5a0121),![];}},'showToast'(_0x53d693,_0x863c76='info'){const _0x3e56cd=getNextToastId(),_0xcc9084=document['createElement']('div');_0xcc9084['className']='toast\x20toast-'+_0x863c76,_0xcc9084['textContent']=_0x53d693,_0xcc9084['dataset']['toastId']=_0x3e56cd,document['body']['appendChild'](_0xcc9084);const _0x3274d4=_0x863c76==='error'?0x2710:0xbb8,_0x58d8e7=setTimeout(()=>{removeToastById(_0x3e56cd);},_0x3274d4),_0x3485b2={'id':_0x3e56cd,'el':_0xcc9084,'timeoutId':_0x58d8e7};return registerToast(_0x3485b2),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xcc9084['classList']['add']('show');});}),_0x3e56cd;},'showError'(_0x2385ed){console['error'](_0x2385ed);const _0x7d95b2=typeof _0x2385ed==='string'?_0x2385ed:_0x2385ed['message']||'An\x20error\x20occurred';this['showToast'](_0x7d95b2,'error');},'showSuccess'(_0x3d62de){this['showToast'](_0x3d62de,'success');},'capitalize'(_0x60f244){if(!_0x60f244)return'';return _0x60f244['charAt'](0x0)['toUpperCase']()+_0x60f244['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x11f275){if(_0x11f275===null||_0x11f275===undefined)return'';return String(_0x11f275)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x129d40){if(_0x129d40===null||_0x129d40===undefined)return'';let _0x3a9310=this['escapeHtml'](_0x129d40);const _0x5279bf={'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'},_0x5557b0={'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 _0x4b5d27=0x0;return _0x3a9310=_0x3a9310['replace'](/\x1b\[([0-9;]*)m/g,(_0x11e952,_0x3d1f39)=>{if(!_0x3d1f39||_0x3d1f39==='0'){const _0x729960='</span>'['repeat'](_0x4b5d27);return _0x4b5d27=0x0,_0x729960;}const _0x5d0b7e=_0x3d1f39['split'](';'),_0x1ada32=[];for(const _0x375bfc of _0x5d0b7e){if(_0x375bfc==='1')_0x1ada32['push']('font-weight:bold');else{if(_0x375bfc==='2')_0x1ada32['push']('opacity:0.7');else{if(_0x375bfc==='3')_0x1ada32['push']('font-style:italic');else{if(_0x375bfc==='4')_0x1ada32['push']('text-decoration:underline');else{if(_0x375bfc==='9')_0x1ada32['push']('text-decoration:line-through');else{if(_0x5279bf[_0x375bfc])_0x1ada32['push']('color:'+_0x5279bf[_0x375bfc]);else{if(_0x5557b0[_0x375bfc])_0x1ada32['push']('background-color:'+_0x5557b0[_0x375bfc]);}}}}}}}if(_0x1ada32['length']>0x0)return _0x4b5d27++,'<span\x20style=\x22'+_0x1ada32['join'](';')+'\x22>';return'';}),_0x3a9310+='</span>'['repeat'](_0x4b5d27),_0x3a9310=_0x3a9310['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3b51,_0x1aecb5)=>{if(!_0x1aecb5||_0x1aecb5==='0')return'';const _0x526283=_0x1aecb5['split'](';'),_0x4858da=[];for(const _0x53ab29 of _0x526283){if(_0x53ab29==='1')_0x4858da['push']('font-weight:bold');else{if(_0x5279bf[_0x53ab29])_0x4858da['push']('color:'+_0x5279bf[_0x53ab29]);else{if(_0x5557b0[_0x53ab29])_0x4858da['push']('background-color:'+_0x5557b0[_0x53ab29]);}}}if(_0x4858da['length']>0x0)return'<span\x20style=\x22'+_0x4858da['join'](';')+'\x22>';return'';}),_0x3a9310;},'showModal'({title:_0x560a4b,content:_0x333e9b,buttons:buttons=[]}){const _0x10ab3e='\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'](_0x560a4b)+'</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'+_0x333e9b+'\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']((_0x45f288,_0x14b826)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x45f288['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x14b826+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x45f288['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',_0x5c954e=document['createElement']('div');_0x5c954e['id']='utils-modal',_0x5c954e['className']='modal',_0x5c954e['innerHTML']=_0x10ab3e,document['body']['appendChild'](_0x5c954e);const _0x5c5264=document['getElementById']('utils-modal-close');_0x5c5264&&_0x5c5264['addEventListener']('click',()=>this['hideModal']());const _0x31c05f=_0x5c954e['querySelectorAll']('[data-btn-index]');_0x31c05f['forEach'](_0x2126e7=>{const _0x26742c=parseInt(_0x2126e7['dataset']['btnIndex']);buttons[_0x26742c]?.['onClick']&&_0x2126e7['addEventListener']('click',buttons[_0x26742c]['onClick']);});const _0x9502bd=document['getElementById']('utils-modal-overlay');_0x9502bd&&_0x9502bd['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x2e9fbd=document['getElementById']('utils-modal');_0x2e9fbd&&_0x2e9fbd['remove']();},'parseKeyValuePairs'(_0x18e1d8){const _0x19b6bc={};if(!_0x18e1d8)return _0x19b6bc;return _0x18e1d8['split'](/\r?\n/)['map'](_0x4ea6be=>_0x4ea6be['trim']())['filter'](Boolean)['forEach'](_0x1c6509=>{const _0x14927d=_0x1c6509['indexOf']('=');if(_0x14927d>0x0){const _0x2af3cc=_0x1c6509['slice'](0x0,_0x14927d)['trim'](),_0x17bb62=_0x1c6509['slice'](_0x14927d+0x1)['trim']();if(_0x2af3cc)_0x19b6bc[_0x2af3cc]=_0x17bb62;}}),_0x19b6bc;},'debounce'(_0x58d650,_0xe745ac=0xfa){let _0x3a484b=null;return(..._0x31411c)=>{clearTimeout(_0x3a484b),_0x3a484b=setTimeout(()=>_0x58d650['apply'](this,_0x31411c),_0xe745ac);};},'formatTimestamp'(_0x9836){if(!_0x9836)return'N/A';const _0x1a14f8=new Date(_0x9836);return _0x1a14f8['toLocaleDateString']()+'\x20'+_0x1a14f8['toLocaleTimeString']();},'getQueryParams'(){const _0x4f3bce=new URLSearchParams(window['location']['search']),_0x164a62={};for(const [_0x367f27,_0x16674a]of _0x4f3bce){_0x164a62[_0x367f27]=_0x16674a;}return _0x164a62;},'formatDuration'(_0x543131,_0xca79a5){if(!_0x543131)return'N/A';const _0x19169a=new Date(_0x543131),_0x4536ef=_0xca79a5?new Date(_0xca79a5):new Date(),_0x88f177=_0x4536ef-_0x19169a;if(_0x88f177<0x0)return'0s';const _0x16809c=Math['floor'](_0x88f177/0x3e8),_0x2e7675=Math['floor'](_0x16809c/0x3c),_0x173401=Math['floor'](_0x2e7675/0x3c),_0x239f65=Math['floor'](_0x173401/0x18);if(_0x16809c<0x3c)return _0x16809c+'s';if(_0x2e7675<0x3c)return _0x2e7675+'m\x20'+_0x16809c%0x3c+'s';if(_0x173401<0x18)return _0x173401+'h\x20'+_0x2e7675%0x3c+'m\x20'+_0x16809c%0x3c+'s';return _0x239f65+'d\x20'+_0x173401%0x18+'h\x20'+_0x2e7675%0x3c+'m';},'renderMarkdown'(_0x3f9689,_0x2f3e54={}){if(!_0x3f9689)return'';_0x3f9689=this['rewriteAttachmentLinks'](_0x3f9689,_0x2f3e54),_0x3f9689=this['rewriteColorSyntax'](_0x3f9689);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3f9689,_0x2f3e54);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x4b5345=new marked['Renderer'](),_0x4e0e40=_0x4b5345['code']['bind'](_0x4b5345);_0x4b5345['code']=function(_0x3dd7f2,_0x271fbd){const _0xc1775e=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xc1775e&&_0x271fbd)try{const _0x3acb05=_0xc1775e['getLanguage'](_0x271fbd)?_0x271fbd:'plaintext',_0x406734=_0xc1775e['highlight'](_0x3dd7f2,{'language':_0x3acb05})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x271fbd+'\x22>'+_0x406734+'</code></pre>';}catch(_0xb313f5){console['error']('Syntax\x20highlighting\x20error:',_0xb313f5);}return _0x4e0e40(_0x3dd7f2,_0x271fbd);};try{return marked['parse'](_0x3f9689,{'renderer':_0x4b5345});}catch(_0x1e298f){return console['error']('Markdown\x20parsing\x20error:',_0x1e298f),this['renderMarkdownFallback'](_0x3f9689,_0x2f3e54);}},'rewriteAttachmentLinks'(_0x3c9dc6,_0x23edeb={}){const _0x3a45a5=typeof _0x23edeb['resolveAttachmentUrl']==='function'?_0x23edeb['resolveAttachmentUrl']:_0x23edeb['taskId']?_0x20fdac=>API_BASE+'/tasks/'+_0x23edeb['taskId']+'/attachments/'+encodeURIComponent(_0x20fdac):null;if(!_0x3a45a5)return _0x3c9dc6;return String(_0x3c9dc6)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x109cdd,_0x1cfcde)=>{const _0x4da3d0=String(_0x1cfcde||'')['trim']();if(!_0x4da3d0)return _0x109cdd;let _0x12b304=_0x4da3d0;try{_0x12b304=decodeURIComponent(_0x4da3d0);}catch{}const _0x1e9d06=_0x3a45a5(_0x12b304);if(!_0x1e9d06)return _0x109cdd;return']('+_0x1e9d06+')';});},'rewriteColorSyntax'(_0x102b58){if(!_0x102b58)return _0x102b58;return String(_0x102b58)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x9568d9,_0x38c0a3,_0x12691e)=>{const _0x5c5e4f=this['rewriteColorSyntax'](_0x12691e);return'<span\x20style=\x22color:\x20'+_0x38c0a3+'\x22>'+_0x5c5e4f+'</span>';});},'renderMarkdownFallback'(_0x48ed3c,_0x23d574={}){if(!_0x48ed3c)return'';_0x48ed3c=_0x48ed3c['replace'](/\r\n/g,'\x0a'),_0x48ed3c=_0x48ed3c['replace'](/\r/g,'\x0a'),_0x48ed3c=this['rewriteAttachmentLinks'](_0x48ed3c,_0x23d574);let _0x243da9=this['escapeHtml'](_0x48ed3c);return _0x243da9=_0x243da9['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x243da9=_0x243da9['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x243da9=_0x243da9['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x243da9=_0x243da9['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x243da9=_0x243da9['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x243da9=_0x243da9['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x243da9=_0x243da9['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x243da9=_0x243da9['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x243da9=_0x243da9['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x243da9=_0x243da9['replace'](/\n\n/g,'</p><p>'),_0x243da9=_0x243da9['replace'](/\n/g,'<br>'),'<p>'+_0x243da9+'</p>';}};export class CustomSelect{constructor(_0x2957de,_0x2bb478={}){this['nativeSelect']=_0x2957de,this['options']=_0x2bb478,this['isOpen']=![],this['selectedValue']=_0x2957de['value']||'',this['searchable']=_0x2bb478['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x423e7e=document['createElement']('div');_0x423e7e['className']='custom-select';const _0x510b58=document['createElement']('div');_0x510b58['className']='custom-select-trigger',_0x510b58['setAttribute']('tabindex','0'),_0x510b58['setAttribute']('role','button'),_0x510b58['setAttribute']('aria-haspopup','listbox');const _0xb4655e=document['createElement']('span');_0xb4655e['className']='custom-select-trigger-text';const _0x2e814d=document['createElement']('span');_0x2e814d['className']='custom-select-arrow',_0x2e814d['textContent']='▼',_0x510b58['appendChild'](_0xb4655e),_0x510b58['appendChild'](_0x2e814d);const _0x449bf5=document['createElement']('div');_0x449bf5['className']='custom-select-dropdown',_0x449bf5['setAttribute']('role','listbox');if(this['searchable']){const _0x597171=document['createElement']('div');_0x597171['className']='custom-select-search';const _0x532a4f=document['createElement']('input');_0x532a4f['type']='text',_0x532a4f['className']='custom-select-search-input',_0x532a4f['placeholder']='Type\x20to\x20search...',_0x532a4f['setAttribute']('aria-label','Search\x20options'),_0x532a4f['addEventListener']('input',_0xe6486e=>{this['searchQuery']=_0xe6486e['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x532a4f['addEventListener']('keydown',_0x2b9d5d=>{if(_0x2b9d5d['key']==='Escape')_0x2b9d5d['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2b9d5d['key']==='Enter'){_0x2b9d5d['preventDefault'](),_0x2b9d5d['stopPropagation']();const _0x5dd205=_0x449bf5['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5dd205){const _0x220d9f=_0x5dd205['getAttribute']('data-value');this['select'](_0x220d9f);}}}}),_0x597171['appendChild'](_0x532a4f),_0x449bf5['appendChild'](_0x597171),this['searchInput']=_0x532a4f;}const _0x2acae4=document['createElement']('div');_0x2acae4['className']='custom-select-options',_0x449bf5['appendChild'](_0x2acae4),_0x423e7e['appendChild'](_0x510b58),_0x423e7e['appendChild'](_0x449bf5),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x423e7e,this['nativeSelect']),this['wrapper']=_0x423e7e,this['trigger']=_0x510b58,this['triggerText']=_0xb4655e,this['dropdown']=_0x449bf5,this['optionsContainer']=_0x2acae4,_0x510b58['addEventListener']('click',()=>this['toggle']()),_0x510b58['addEventListener']('keydown',_0x30e822=>this['handleKeydown'](_0x30e822)),document['addEventListener']('click',_0x42b145=>{!_0x423e7e['contains'](_0x42b145['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0xb8c9a7=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0xb8c9a7['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x121bec=new MutationObserver(()=>{this['updateDisabledState']();});_0x121bec['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2cdb9d=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2cdb9d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x507535=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x507535),this['trigger']['setAttribute']('aria-disabled',_0x507535?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x507535?'-1':'0'),_0x507535&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x232141=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5dc7dd=_0x232141['filter'](_0x593083=>!_0x593083['disabled']&&!_0x593083['hidden']);_0x232141['forEach']((_0x123fba,_0x466cf7)=>{const _0x38d07e=document['createElement']('div');_0x38d07e['className']='custom-select-option',_0x38d07e['textContent']=_0x123fba['textContent'],_0x38d07e['setAttribute']('data-value',_0x123fba['value']),_0x38d07e['setAttribute']('data-index',_0x466cf7),_0x38d07e['setAttribute']('role','option'),_0x123fba['disabled']?_0x38d07e['classList']['add']('disabled'):_0x38d07e['addEventListener']('click',()=>this['select'](_0x123fba['value'])),_0x123fba['value']===this['selectedValue']&&_0x38d07e['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x38d07e),this['allOptions']['push']({'element':_0x38d07e,'text':_0x123fba['textContent']['toLowerCase'](),'value':_0x123fba['value'],'disabled':_0x123fba['disabled']});});if(this['searchable']&&this['searchInput']){const _0x1fc700=this['searchInput']['parentElement'];_0x5dc7dd['length']>0x3?_0x1fc700['style']['display']='':_0x1fc700['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x21eb44=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x44fdf5=>{if(!_0x21eb44||_0x44fdf5['disabled'])_0x44fdf5['element']['style']['display']='';else{const _0x274641=_0x44fdf5['text']['includes'](_0x21eb44);_0x44fdf5['element']['style']['display']=_0x274641?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x5d4391){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x5d4391,this['nativeSelect']['value']=_0x5d4391;const _0x5a14c1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x5a14c1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x20585d=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x20585d&&(this['triggerText']['textContent']=_0x20585d['textContent'],_0x20585d['disabled']||_0x20585d['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x176270=>{_0x176270['getAttribute']('data-value')===this['selectedValue']?_0x176270['classList']['add']('selected'):_0x176270['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 _0x43e1c4=window['getComputedStyle'](this['dropdown']);if(_0x43e1c4['position']==='fixed'){const _0x3e830d=this['trigger']['getBoundingClientRect'](),_0x124800=parseInt(_0x43e1c4['maxHeight'])||0xc8,_0x316719=window['innerHeight'],_0x315345=_0x316719-_0x3e830d['bottom'],_0x1f9373=_0x3e830d['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x2a53b8;_0x315345<_0x124800&&_0x1f9373>_0x315345?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x316719-_0x3e830d['top']+'px',_0x2a53b8=Math['min'](_0x124800,_0x1f9373-0xa),this['dropdown']['style']['maxHeight']=_0x2a53b8+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3e830d['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x2a53b8=Math['min'](_0x124800,_0x315345-0xa),this['dropdown']['style']['maxHeight']=_0x2a53b8+'px');if(this['optionsContainer']){let _0x455232=_0x2a53b8;if(this['searchInput']){const _0x1bc054=this['searchInput']['parentElement'];_0x1bc054&&(_0x455232-=_0x1bc054['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x455232)+'px';}this['dropdown']['style']['left']=_0x3e830d['left']+'px',this['dropdown']['style']['width']=_0x3e830d['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x2aa15e=this['searchInput']['parentElement'];_0x2aa15e&&_0x2aa15e['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'](_0x5989d8){if(this['nativeSelect']['disabled'])return;if(_0x5989d8['key']==='Enter'||_0x5989d8['key']==='\x20')_0x5989d8['preventDefault'](),this['toggle']();else _0x5989d8['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1e1796='\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',_0x1e1796),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x24e979=document['getElementById']('confirm-dialog-close'),_0x3bf5a5=document['getElementById']('confirm-dialog-cancel'),_0x32398c=document['getElementById']('confirm-dialog-confirm'),_0x3bb545=this['_modal']['querySelector']('.modal-overlay');_0x24e979['addEventListener']('click',()=>this['_resolve'](![])),_0x3bf5a5['addEventListener']('click',()=>this['_resolve'](![])),_0x32398c['addEventListener']('click',()=>this['_resolve'](!![])),_0x3bb545['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x44997b=>{if(_0x44997b['key']==='Escape')_0x44997b['preventDefault'](),this['_resolve'](![]);else _0x44997b['key']==='Enter'&&(_0x44997b['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xa3f030,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x326f66=>{this['_resolvePromise']=_0x326f66,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xa3f030;const _0x4cbb48=document['getElementById']('confirm-dialog-cancel'),_0x212c77=document['getElementById']('confirm-dialog-confirm');_0x4cbb48['textContent']=cancelText,_0x212c77['textContent']=confirmText,_0x212c77['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x212c77['focus']();});},'_resolve'(_0x2af802){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x2af802),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x291ae4,_0x5b334b={}){this['container']=_0x291ae4,this['options']={'placeholder':_0x5b334b['placeholder']||'Type\x20to\x20search...','maxItems':_0x5b334b['maxItems']||0x64,'loadItems':_0x5b334b['loadItems']||(async()=>[]),'renderItem':_0x5b334b['renderItem']||(_0x52445f=>({'primary':String(_0x52445f),'secondary':''})),'onSelect':_0x5b334b['onSelect']||(()=>{}),'filterItems':_0x5b334b['filterItems']||null,'getItemValue':_0x5b334b['getItemValue']||(_0x1a3fc4=>_0x1a3fc4),'sortItems':_0x5b334b['sortItems']||null,'debounceMs':_0x5b334b['debounceMs']||0xc8,'minCharsForSearch':_0x5b334b['minCharsForSearch']||0x0,'emptyMessage':_0x5b334b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5b334b['loadingMessage']||'Loading...','preload':_0x5b334b['preload']!==![],'searchMode':_0x5b334b['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',_0x11b23d=>this['onBlur'](_0x11b23d)),this['input']['addEventListener']('input',_0x422f19=>this['onInput'](_0x422f19)),this['input']['addEventListener']('keydown',_0x4cf358=>this['onKeydown'](_0x4cf358)),this['clearBtn']['addEventListener']('mousedown',_0x454c84=>{_0x454c84['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0xef1dc=>{_0xef1dc['preventDefault']();}),document['addEventListener']('click',_0x2d1d81=>{!this['wrapper']['contains'](_0x2d1d81['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(_0x116ccd){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x116ccd);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x180468){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x314a62){const _0x5824b0=_0x314a62['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5824b0);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5824b0):this['loadAndShow'](_0x5824b0);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1df6ec){switch(_0x1df6ec['key']){case'ArrowDown':_0x1df6ec['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1df6ec['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1df6ec['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1df6ec['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x3c2593){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2dffb5=this['selectedIndex']+_0x3c2593;if(_0x2dffb5>=0x0&&_0x2dffb5<this['filteredItems']['length']){this['selectedIndex']=_0x2dffb5,this['updateSelectionHighlight']();const _0x51639d=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x51639d[this['selectedIndex']]&&_0x51639d[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x47de12=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x47de12['forEach']((_0x23c501,_0x4a90ff)=>{_0x23c501['classList']['toggle']('keyboard-selected',_0x4a90ff===this['selectedIndex']);});}async['loadAndShow'](_0x5c2401){this['showLoading']();try{const _0x169a4e=await this['options']['loadItems'](_0x5c2401);if(this['options']['searchMode']==='server'){let _0x4f7852=_0x169a4e;this['options']['sortItems']&&(_0x4f7852=this['options']['sortItems']([..._0x169a4e]));this['filteredItems']=_0x4f7852;const _0x21a746=this['filteredItems']['length']>=this['options']['maxItems'];_0x21a746&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x21a746),this['open']();}else this['allItems']=_0x169a4e,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5c2401);}catch(_0x512a46){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x512a46),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5807b0){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5807b0):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x252cc0=this['filteredItems']['length']>=this['options']['maxItems'];_0x252cc0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x252cc0),this['open']();}['renderItems'](_0x3dfee2){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']((_0x85f92e,_0x183028)=>{const _0x23712b=document['createElement']('div');_0x23712b['className']='autocomplete-select-item',_0x23712b['setAttribute']('role','option'),_0x23712b['setAttribute']('data-index',_0x183028);const _0x270d96=this['options']['renderItem'](_0x85f92e);let _0x1c7eff='';_0x270d96['icon']&&(_0x1c7eff='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x270d96['iconClass']||'')+'\x22>'+_0x270d96['icon']+'</span>'),_0x23712b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c7eff+'\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'](_0x270d96['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x270d96['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x270d96['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x23712b['addEventListener']('click',()=>{this['selectItem'](_0x85f92e);}),_0x23712b['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x183028,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x23712b);}),_0x3dfee2?(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'](_0x33af0f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x33af0f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4103b6){this['selectedItem']=_0x4103b6;const _0x3a6c5f=this['options']['renderItem'](_0x4103b6);this['input']['value']=_0x3a6c5f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4103b6);}['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'](_0x1abb49){if(_0x1abb49){this['selectedItem']=_0x1abb49;const _0x15db20=this['options']['renderItem'](_0x1abb49);this['input']['value']=_0x15db20['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x13cb62){this['allItems']=_0x13cb62,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'](_0x44be25){this['input']['placeholder']=_0x44be25;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3c7d1f=null){const _0x1177af=document['getElementById']('admin-menu-container'),_0x17e1db=document['getElementById']('admin-menu-btn'),_0x191ce1=document['getElementById']('admin-menu');if(!_0x1177af||!_0x17e1db||!_0x191ce1)return;try{!_0x3c7d1f&&(_0x3c7d1f=await API['getCurrentUser']());if(_0x3c7d1f){const _0x580c1c=_0x3c7d1f['hasAllPermissions']||_0x3c7d1f['hasEnvironmentsManage']||_0x3c7d1f['canCreateUsers']||_0x3c7d1f['canManageTeams']||_0x3c7d1f['hasEnvironmentBindings'];if(!_0x580c1c)return;_0x1177af['hidden']=![];if(!_0x3c7d1f['hasAllPermissions']){const _0x31d146=_0x191ce1['querySelectorAll']('.admin-menu-item');_0x31d146['forEach'](_0x344f28=>{const _0x3a3f40=_0x344f28['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3a3f40==='Users'&&!_0x3c7d1f['canCreateUsers']&&(_0x344f28['hidden']=!![]),_0x3a3f40==='Skills'&&(_0x344f28['hidden']=!![]),_0x3a3f40==='Server\x20Settings'&&(_0x344f28['hidden']=!![]),_0x3a3f40==='Server\x20Health'&&(_0x344f28['hidden']=!![]),_0x3a3f40==='Git\x20History'&&(_0x344f28['hidden']=!![]);});}_0x17e1db['addEventListener']('click',_0x393f43=>{_0x393f43['stopPropagation']();const _0x319cc3=document['getElementById']('actions-menu');if(_0x319cc3)_0x319cc3['hidden']=!![];_0x191ce1['hidden']=!_0x191ce1['hidden'];}),document['addEventListener']('click',_0x3fe44c=>{!_0x191ce1['hidden']&&!_0x17e1db['contains'](_0x3fe44c['target'])&&!_0x191ce1['contains'](_0x3fe44c['target'])&&(_0x191ce1['hidden']=!![]);}),document['addEventListener']('keydown',_0xaf87cf=>{_0xaf87cf['key']==='Escape'&&!_0x191ce1['hidden']&&(_0x191ce1['hidden']=!![]);});const _0x3792c4=document['getElementById']('server-health-btn');_0x3792c4&&_0x3792c4['addEventListener']('click',async()=>{_0x191ce1['hidden']=!![];const {openServerHealthModal:_0x2dcd11}=await import('./server-health.js');_0x2dcd11();});}}catch(_0x11ba4e){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x11ba4e['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 _0x401d74=window['location']['pathname'],_0x3331e7=_0x401d74['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3331e7)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3331e7[0x1]),_0x3331e7[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x30ecc9={}){const _0x3bbedc=new URLSearchParams();_0x30ecc9['userId']&&_0x3bbedc['set']('userId',String(_0x30ecc9['userId']));_0x30ecc9['automation']&&_0x3bbedc['set']('automation',String(_0x30ecc9['automation']));const _0x30b5bf=API_BASE+'/tasks/stats'+(_0x3bbedc['toString']()?'?'+_0x3bbedc['toString']():''),_0x43b6e5=await fetch(_0x30b5bf);if(!_0x43b6e5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x43b6e5['statusText']);return await _0x43b6e5['json']();},async 'getTasks'(_0x4d6877={}){const _0x4e5ed8=new URLSearchParams();_0x4d6877['status']&&_0x4e5ed8['set']('status',String(_0x4d6877['status']));_0x4d6877['environment']&&_0x4e5ed8['set']('environment',String(_0x4d6877['environment']));_0x4d6877['automation']&&_0x4e5ed8['set']('automation',String(_0x4d6877['automation']));if(_0x4d6877['include']){const _0x8c02a7=Array['isArray'](_0x4d6877['include'])?_0x4d6877['include']['join'](','):String(_0x4d6877['include']);_0x8c02a7&&_0x4e5ed8['set']('include',_0x8c02a7);}_0x4d6877['filter']&&_0x4e5ed8['set']('filter',String(_0x4d6877['filter']));_0x4d6877['page']&&_0x4e5ed8['set']('page',String(_0x4d6877['page']));_0x4d6877['limit']&&_0x4e5ed8['set']('limit',String(_0x4d6877['limit']));_0x4d6877['userId']&&_0x4e5ed8['set']('userId',String(_0x4d6877['userId']));_0x4d6877['search']&&_0x4e5ed8['set']('search',String(_0x4d6877['search']));_0x4d6877['includeChildTasks']&&_0x4e5ed8['set']('includeChildTasks','true');const _0x28b341=API_BASE+'/tasks'+(_0x4e5ed8['toString']()?'?'+_0x4e5ed8['toString']():''),_0x919856=await fetch(_0x28b341);if(!_0x919856['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x919856['statusText']);return await _0x919856['json']();},async 'getAutomations'(_0x5788f4={}){const _0x94d707=new URLSearchParams();_0x5788f4['environment']&&_0x94d707['set']('environment',String(_0x5788f4['environment']));const _0x40054b=await fetch(API_BASE+'/api/automations'+(_0x94d707['toString']()?'?'+_0x94d707['toString']():''));if(!_0x40054b['ok']){const _0x91f58e=await _0x40054b['json']()['catch'](()=>({}));throw new Error(_0x91f58e['message']||_0x91f58e['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x40054b['statusText']);}return await _0x40054b['json']();},async 'getAutomation'(_0xfd10a6){const _0x4b0b4a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xfd10a6));if(!_0x4b0b4a['ok']){const _0x4b532e=await _0x4b0b4a['json']()['catch'](()=>({}));throw new Error(_0x4b532e['message']||_0x4b532e['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4b0b4a['statusText']);}return await _0x4b0b4a['json']();},async 'createAutomation'(_0x19aec0){const _0x51d548=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19aec0||{})});if(!_0x51d548['ok']){const _0x14c73f=await _0x51d548['json']()['catch'](()=>({}));throw new Error(_0x14c73f['message']||_0x14c73f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x51d548['statusText']);}return await _0x51d548['json']();},async 'updateAutomation'(_0x22a80,_0x19893f){const _0x41930c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22a80),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19893f||{})});if(!_0x41930c['ok']){const _0x29afba=await _0x41930c['json']()['catch'](()=>({}));throw new Error(_0x29afba['message']||_0x29afba['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x41930c['statusText']);}return await _0x41930c['json']();},async 'deleteAutomation'(_0x22199f){const _0xed8919=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22199f),{'method':'DELETE'});if(!_0xed8919['ok']){const _0x3c05a3=await _0xed8919['json']()['catch'](()=>({}));throw new Error(_0x3c05a3['message']||_0x3c05a3['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xed8919['statusText']);}return await _0xed8919['json']();},async 'triggerAutomation'(_0x1244dc){const _0xa21a1e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1244dc)+'/trigger',{'method':'POST'});if(!_0xa21a1e['ok']){const _0x409359=await _0xa21a1e['json']()['catch'](()=>({}));throw new Error(_0x409359['message']||_0x409359['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa21a1e['statusText']);}return await _0xa21a1e['json']();},async 'setAutomationEnabled'(_0x33f183,_0x5c5bd4){const _0x14716e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x33f183)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5bd4})});if(!_0x14716e['ok']){const _0x5ab271=await _0x14716e['json']()['catch'](()=>({}));throw new Error(_0x5ab271['message']||_0x5ab271['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x14716e['statusText']);}return await _0x14716e['json']();},async 'getAutomationHistory'(_0x4c76f0,_0x2f7bc7=0x32){const _0x1c4476=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4c76f0)+'/history?limit='+encodeURIComponent(String(_0x2f7bc7)));if(!_0x1c4476['ok']){const _0x4957fc=await _0x1c4476['json']()['catch'](()=>({}));throw new Error(_0x4957fc['message']||_0x4957fc['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1c4476['statusText']);}return await _0x1c4476['json']();},async 'getTask'(_0x13cb28,_0x527dd9={}){const _0x183d92=new URLSearchParams();if(_0x527dd9['include']){const _0x5a8cf5=Array['isArray'](_0x527dd9['include'])?_0x527dd9['include']['join'](','):String(_0x527dd9['include']);if(_0x5a8cf5)_0x183d92['set']('include',_0x5a8cf5);}const _0xbe00a7=await fetch(API_BASE+'/tasks/'+_0x13cb28+(_0x183d92['toString']()?'?'+_0x183d92['toString']():''));if(!_0xbe00a7['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbe00a7['statusText']);return await _0xbe00a7['json']();},async 'getTaskResults'(_0xf95641){const _0x222cc7=await fetch(API_BASE+'/tasks/'+_0xf95641+'/results');if(!_0x222cc7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x222cc7['statusText']);return await _0x222cc7['json']();},async 'getTaskPatches'(_0x344153){const _0x45941e=await fetch(API_BASE+'/tasks/'+_0x344153+'/patches');if(!_0x45941e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x45941e['statusText']);return await _0x45941e['json']();},async 'getTaskAttachments'(_0x1c7209){const _0x52f293=await fetch(API_BASE+'/tasks/'+_0x1c7209+'/attachments');if(!_0x52f293['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x52f293['statusText']);return await _0x52f293['json']();},async 'uploadAttachments'(_0x3f436f,_0x161e9d){const _0x106cee=new FormData();for(const _0x14b118 of _0x161e9d){_0x106cee['append']('attachments',_0x14b118);}const _0x14b70d=await fetch(API_BASE+'/tasks/'+_0x3f436f+'/attachments',{'method':'POST','body':_0x106cee});if(!_0x14b70d['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x14b70d['statusText']);return await _0x14b70d['json']();},async 'isAINameGenerationAvailable'(){try{const _0x461b28=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x461b28['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x461b28['json']();}catch(_0x12f8ec){return{'available':![],'reason':_0x12f8ec['message']};}},async 'generateTaskName'(_0x48a98f){try{const _0x46cf9f=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x48a98f})});return await _0x46cf9f['json']();}catch(_0x1a55f2){return{'success':![],'error':_0x1a55f2['message']};}},async 'createTask'(_0x2e6382){let _0x2e591a,_0x43a000={};if(_0x2e6382['files']&&_0x2e6382['files']['length']>0x0){const _0x4d6c5f=new FormData();for(const [_0x4cb424,_0x3ee5d0]of Object['entries'](_0x2e6382)){if(_0x4cb424!=='files'){if(_0x3ee5d0==null)continue;typeof _0x3ee5d0==='object'?_0x4d6c5f['append'](_0x4cb424,JSON['stringify'](_0x3ee5d0)):_0x4d6c5f['append'](_0x4cb424,String(_0x3ee5d0));}}for(const _0x2204bb of _0x2e6382['files']){_0x4d6c5f['append']('attachments',_0x2204bb);}_0x2e591a=_0x4d6c5f;}else _0x43a000['Content-Type']='application/json',_0x2e591a=JSON['stringify'](_0x2e6382);const _0x2747ac=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x43a000,'body':_0x2e591a});if(!_0x2747ac['ok']){const _0x5d3f10=await _0x2747ac['json'](),_0x1fb22c=new Error(_0x5d3f10['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2747ac['statusText']),{message:_0x542f74,..._0x3f5e38}=_0x5d3f10;Object['assign'](_0x1fb22c,_0x3f5e38);throw _0x1fb22c;}return await _0x2747ac['json']();},async 'createTestTask'(_0x4711aa){const _0x370825=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4711aa)});if(!_0x370825['ok']){const _0x1165e3=await _0x370825['json']();throw new Error(_0x1165e3['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x370825['statusText']);}return await _0x370825['json']();},async 'createEphemeralTest'(_0xf4da41){const _0x190ae3=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf4da41)});if(!_0x190ae3['ok']){const _0x4e240e=await _0x190ae3['json']();throw new Error(_0x4e240e['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x190ae3['statusText']);}return await _0x190ae3['json']();},async 'createDeployTask'(_0x2780bc){const _0x274ece=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2780bc)});if(!_0x274ece['ok']){const _0xf2b3df=await _0x274ece['json']();throw new Error(_0xf2b3df['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x274ece['statusText']);}return await _0x274ece['json']();},async 'getEnvironments'(){const _0x511cec=await fetch(API_BASE+'/environments');if(!_0x511cec['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x511cec['statusText']);return await _0x511cec['json']();},async 'getEnvironment'(_0x43d7c7){const _0x58a095=await fetch(API_BASE+'/environments/'+_0x43d7c7);if(!_0x58a095['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x58a095['statusText']);return await _0x58a095['json']();},async 'getEnvironmentRepoHistory'(_0x3e812d,_0x342147,_0x5b1215={}){if(!_0x3e812d||!_0x342147)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x52a2b3=new URLSearchParams();if(_0x5b1215['limit'])_0x52a2b3['set']('limit',String(_0x5b1215['limit']));if(_0x5b1215['offset'])_0x52a2b3['set']('offset',String(_0x5b1215['offset']));if(_0x5b1215['search'])_0x52a2b3['set']('search',String(_0x5b1215['search']));if(_0x5b1215['branch'])_0x52a2b3['set']('branch',String(_0x5b1215['branch']));const _0x2eb33a=API_BASE+'/environments/'+encodeURIComponent(_0x3e812d)+'/repos/'+encodeURIComponent(_0x342147)+'/git/history',_0x35172b=await fetch(''+_0x2eb33a+(_0x52a2b3['toString']()?'?'+_0x52a2b3['toString']():''));if(!_0x35172b['ok']){const _0x2034ab=await _0x35172b['json']()['catch'](()=>({}));throw new Error(_0x2034ab['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x35172b['statusText']);}return await _0x35172b['json']();},async 'getEnvironmentRepoCommit'(_0x57728e,_0x2b6901,_0x38ba85){if(!_0x57728e||!_0x2b6901||!_0x38ba85)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35b0e2=API_BASE+'/environments/'+encodeURIComponent(_0x57728e)+'/repos/'+encodeURIComponent(_0x2b6901)+'/git/commits/'+encodeURIComponent(_0x38ba85),_0x2cba52=await fetch(_0x35b0e2);if(!_0x2cba52['ok']){const _0x32f8d9=await _0x2cba52['json']()['catch'](()=>({}));throw new Error(_0x32f8d9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2cba52['statusText']);}return await _0x2cba52['json']();},async 'getEnvironmentRepoBranches'(_0xa250a,_0x4de421){if(!_0xa250a||!_0x4de421)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9b10c7=API_BASE+'/environments/'+encodeURIComponent(_0xa250a)+'/repos/'+encodeURIComponent(_0x4de421)+'/git/branches',_0x428c18=await fetch(_0x9b10c7);if(!_0x428c18['ok']){const _0xd87e0b=await _0x428c18['json']()['catch'](()=>({}));throw new Error(_0xd87e0b['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x428c18['statusText']);}return await _0x428c18['json']();},async 'revertEnvironmentRepoCommit'(_0x1c86db,_0x1ca144,_0x254ac1,_0x437452={}){if(!_0x1c86db||!_0x1ca144||!_0x254ac1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x57da9d=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c86db)+'/repos/'+encodeURIComponent(_0x1ca144)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x254ac1,..._0x437452})});if(!_0x57da9d['ok']){const _0x8cd442=await _0x57da9d['json']()['catch'](()=>({}));throw new Error(_0x8cd442['message']||_0x8cd442['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x57da9d['statusText']);}return await _0x57da9d['json']();},async 'getTemplates'(_0x58adda={}){const _0x3eca3f=new URLSearchParams();if(_0x58adda['include']){const _0x5cde59=Array['isArray'](_0x58adda['include'])?_0x58adda['include']['join'](','):String(_0x58adda['include']);if(_0x5cde59)_0x3eca3f['set']('include',_0x5cde59);}const _0x46cc59=await fetch(API_BASE+'/templates'+(_0x3eca3f['toString']()?'?'+_0x3eca3f['toString']():''));if(!_0x46cc59['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x46cc59['statusText']);return await _0x46cc59['json']();},async 'getTemplatesForEnvironment'(_0x595fec,_0x47f113={}){if(!_0x595fec)throw new Error('Environment\x20name\x20is\x20required');const _0x1cd1d0=new URLSearchParams();if(_0x47f113['include']){const _0x510912=Array['isArray'](_0x47f113['include'])?_0x47f113['include']['join'](','):String(_0x47f113['include']);if(_0x510912)_0x1cd1d0['set']('include',_0x510912);}const _0x24fbcd=await fetch(API_BASE+'/templates/'+_0x595fec+(_0x1cd1d0['toString']()?'?'+_0x1cd1d0['toString']():''));if(!_0x24fbcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x595fec+':\x20'+_0x24fbcd['statusText']);return await _0x24fbcd['json']();},async 'getTemplate'(_0x5bdb9e,_0x2ba073,_0x28b03={}){if(!_0x5bdb9e||!_0x2ba073)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x177629=new URLSearchParams();if(_0x28b03['include']){const _0x35b51a=Array['isArray'](_0x28b03['include'])?_0x28b03['include']['join'](','):String(_0x28b03['include']);if(_0x35b51a)_0x177629['set']('include',_0x35b51a);}const _0x1ddf05=await fetch(API_BASE+'/templates/'+_0x5bdb9e+'/'+_0x2ba073+(_0x177629['toString']()?'?'+_0x177629['toString']():''));if(!_0x1ddf05['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x1ddf05['statusText']);return await _0x1ddf05['json']();},async 'getTaskLogs'(_0x4c7441,_0x3a546c={}){if(!_0x4c7441)throw new Error('Task\x20ID\x20is\x20required');const _0x4d18ef=new URLSearchParams();_0x3a546c['tail']&&_0x4d18ef['set']('tail',String(_0x3a546c['tail']));const _0x2a1765=await fetch(API_BASE+'/tasks/'+_0x4c7441+'/logs'+(_0x4d18ef['toString']()?'?'+_0x4d18ef['toString']():''));if(!_0x2a1765['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1765['statusText']);return await _0x2a1765['text']();},async 'getContainers'(){const _0x3faf24=await fetch(API_BASE+'/containers');if(!_0x3faf24['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3faf24['statusText']);return await _0x3faf24['json']();},async 'getContainer'(_0x47d6e5){const _0x51ff3e=await fetch(API_BASE+'/containers/'+_0x47d6e5);if(!_0x51ff3e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x51ff3e['statusText']);return await _0x51ff3e['json']();},async 'startInteractiveContainer'(_0x3de75f){const _0x3007db=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3de75f)});if(!_0x3007db['ok']){const _0x54cde1=await _0x3007db['json']()['catch'](()=>({}));throw new Error(_0x54cde1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x3007db['statusText']);}return await _0x3007db['json']();},async 'stopContainer'(_0x2461bb){const _0xfa3573=await fetch(API_BASE+'/containers/'+_0x2461bb,{'method':'DELETE'});if(!_0xfa3573['ok']){const _0x4d5c25=await _0xfa3573['json']()['catch'](()=>({}));throw new Error(_0x4d5c25['message']||'Failed\x20to\x20stop\x20container:\x20'+_0xfa3573['statusText']);}return await _0xfa3573['json']();},async 'stopTask'(_0x1e479e){if(!_0x1e479e)throw new Error('Task\x20ID\x20is\x20required');const _0x1c3aff=await fetch(API_BASE+'/tasks/'+_0x1e479e+'/stop',{'method':'POST'});if(!_0x1c3aff['ok']){const _0x541117=await _0x1c3aff['json']()['catch'](()=>({}));throw new Error(_0x541117['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1c3aff['statusText']);}return await _0x1c3aff['json']();},async 'interruptTask'(_0x7cb22){if(!_0x7cb22)throw new Error('Task\x20ID\x20is\x20required');const _0x5e0fbb=await fetch(API_BASE+'/tasks/'+_0x7cb22+'/interrupt',{'method':'POST'});if(!_0x5e0fbb['ok']){const _0x3ad308=await _0x5e0fbb['json']()['catch'](()=>({}));throw new Error(_0x3ad308['error']||_0x3ad308['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5e0fbb['statusText']);}return await _0x5e0fbb['json']();},async 'startTask'(_0xb6e905){if(!_0xb6e905)throw new Error('Task\x20ID\x20is\x20required');const _0x45ae19=await fetch(API_BASE+'/tasks/'+_0xb6e905+'/start',{'method':'POST'});if(!_0x45ae19['ok']){const _0x2e0686=await _0x45ae19['json']()['catch'](()=>({}));throw new Error(_0x2e0686['error']||'Failed\x20to\x20start\x20task:\x20'+_0x45ae19['statusText']);}return await _0x45ae19['json']();},async 'deleteTask'(_0x1cbabf){if(!_0x1cbabf)throw new Error('Task\x20ID\x20is\x20required');const _0x17bdba=await fetch(API_BASE+'/tasks/'+_0x1cbabf,{'method':'DELETE'});if(!_0x17bdba['ok']){const _0x21b7cd=await _0x17bdba['json']()['catch'](()=>({}));throw new Error(_0x21b7cd['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x17bdba['statusText']);}return await _0x17bdba['json']();},async 'refreshTasksFromDisk'(){const _0x2b5347=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b5347['ok']){const _0x2d24dd=await _0x2b5347['json']()['catch'](()=>({}));throw new Error(_0x2d24dd['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b5347['statusText']);}return await _0x2b5347['json']();},async 'approveTask'(_0x107678,_0x54323a={}){if(!_0x107678)throw new Error('Task\x20ID\x20is\x20required');const _0x571adc={'commit_message':_0x54323a['commit_message']||'','pull':_0x54323a['pull']??![],'push':_0x54323a['push']??![]};_0x54323a['new_branch']&&(_0x571adc['new_branch']=_0x54323a['new_branch']);const _0x545173=await fetch(API_BASE+'/tasks/'+_0x107678+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x571adc)});if(!_0x545173['ok']){const _0x3f92cc=await _0x545173['json']()['catch'](()=>({}));let _0x1770de=_0x3f92cc['error']||_0x3f92cc['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x545173['statusText'];if(_0x3f92cc['results']&&Array['isArray'](_0x3f92cc['results'])){const _0x4f3f32=_0x3f92cc['results']['filter'](_0x35fd45=>!_0x35fd45['success']&&_0x35fd45['error']);_0x4f3f32['length']>0x0&&(_0x1770de=_0x4f3f32[0x0]['error']);}throw new Error(_0x1770de);}return await _0x545173['json']();},async 'getPullRequestInfo'(_0x229322){if(!_0x229322)throw new Error('Task\x20ID\x20is\x20required');const _0x23facf=await fetch(API_BASE+'/tasks/'+_0x229322+'/pull-request-info');if(!_0x23facf['ok']){const _0x94113f=await _0x23facf['json']()['catch'](()=>({}));throw new Error(_0x94113f['error']||_0x94113f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x23facf['statusText']);}return await _0x23facf['json']();},async 'createPullRequests'(_0x193713,_0xeba1){if(!_0x193713)throw new Error('Task\x20ID\x20is\x20required');if(!_0xeba1||!Array['isArray'](_0xeba1))throw new Error('repos\x20array\x20is\x20required');const _0x253a3f=await fetch(API_BASE+'/tasks/'+_0x193713+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0xeba1})});if(!_0x253a3f['ok']){const _0xb4d4be=await _0x253a3f['json']()['catch'](()=>({}));let _0x25a0da=_0xb4d4be['error']||_0xb4d4be['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x253a3f['statusText'];if(_0xb4d4be['results']&&Array['isArray'](_0xb4d4be['results'])){const _0x59624d=_0xb4d4be['results']['filter'](_0x24bec4=>!_0x24bec4['success']&&_0x24bec4['error']);_0x59624d['length']>0x0&&(_0x25a0da=_0x59624d[0x0]['error']);}throw new Error(_0x25a0da);}return await _0x253a3f['json']();},async 'syncRepos'(_0xe06b87){if(!_0xe06b87)throw new Error('Task\x20ID\x20is\x20required');const _0x4b7bc6=await fetch(API_BASE+'/tasks/'+_0xe06b87+'/sync-repos',{'method':'POST'});if(!_0x4b7bc6['ok']){const _0x4a52de=await _0x4b7bc6['json']()['catch'](()=>({}));throw new Error(_0x4a52de['error']||_0x4a52de['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4b7bc6['statusText']);}return await _0x4b7bc6['json']();},async 'getIbmiSyncInfo'(_0x3dcdba){if(!_0x3dcdba)throw new Error('Task\x20ID\x20is\x20required');const _0x52c7a6=await fetch(API_BASE+'/tasks/'+_0x3dcdba+'/ibmi-sync-info');if(!_0x52c7a6['ok']){const _0x420d6a=await _0x52c7a6['json']()['catch'](()=>({}));throw new Error(_0x420d6a['error']||_0x420d6a['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x52c7a6['json']();},async 'syncToIbmi'(_0x19b282,_0x32c5f9){if(!_0x19b282)throw new Error('Task\x20ID\x20is\x20required');const _0x160d9c=await fetch(API_BASE+'/tasks/'+_0x19b282+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x32c5f9})});if(!_0x160d9c['ok']){const _0x2e0f70=await _0x160d9c['json']()['catch'](()=>({}));throw new Error(_0x2e0f70['error']||_0x2e0f70['message']||'Sync\x20failed');}return await _0x160d9c['json']();},async 'getIbmiSyncLog'(_0x5196b7){if(!_0x5196b7)throw new Error('Task\x20ID\x20is\x20required');const _0x140433=await fetch(API_BASE+'/tasks/'+_0x5196b7+'/ibmi-sync-log');if(!_0x140433['ok']){const _0xe26a66=await _0x140433['json']()['catch'](()=>({}));throw new Error(_0xe26a66['error']||_0xe26a66['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x140433['json']();},async 'pullChanges'(_0x4b0d5f){if(!_0x4b0d5f)throw new Error('Task\x20ID\x20is\x20required');const _0x4c6bb9=await fetch(API_BASE+'/tasks/'+_0x4b0d5f+'/pull-changes',{'method':'POST'});if(!_0x4c6bb9['ok']){const _0x9c4178=await _0x4c6bb9['json']()['catch'](()=>({}));throw new Error(_0x9c4178['error']||_0x9c4178['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4c6bb9['statusText']);}return await _0x4c6bb9['json']();},async 'readFile'(_0xba7c67,_0x235169){if(!_0xba7c67)throw new Error('Task\x20ID\x20is\x20required');if(!_0x235169)throw new Error('File\x20path\x20is\x20required');const _0x11c96b=await fetch(API_BASE+'/tasks/'+_0xba7c67+'/files?path='+encodeURIComponent(_0x235169));if(!_0x11c96b['ok']){const _0x3c2e24=await _0x11c96b['json']()['catch'](()=>({}));throw new Error(_0x3c2e24['error']||_0x3c2e24['message']||'Failed\x20to\x20read\x20file:\x20'+_0x11c96b['statusText']);}return await _0x11c96b['json']();},async 'writeFile'(_0x336fac,_0x3e3c62,_0x14fe83){if(!_0x336fac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e3c62)throw new Error('File\x20path\x20is\x20required');if(_0x14fe83===undefined)throw new Error('Content\x20is\x20required');const _0x307c13=await fetch(API_BASE+'/tasks/'+_0x336fac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3e3c62,'content':_0x14fe83})});if(!_0x307c13['ok']){const _0x2dbc77=await _0x307c13['json']()['catch'](()=>({}));throw new Error(_0x2dbc77['error']||_0x2dbc77['message']||'Failed\x20to\x20write\x20file:\x20'+_0x307c13['statusText']);}return await _0x307c13['json']();},async 'discardFile'(_0x4b54d,_0x256266,_0x59f8db){if(!_0x4b54d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x256266)throw new Error('File\x20path\x20is\x20required');if(!_0x59f8db)throw new Error('Repository\x20path\x20is\x20required');const _0x4c6847=await fetch(API_BASE+'/tasks/'+_0x4b54d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x256266,'repoPath':_0x59f8db})});if(!_0x4c6847['ok']){const _0x22fa5a=await _0x4c6847['json']()['catch'](()=>({}));throw new Error(_0x22fa5a['error']||_0x22fa5a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4c6847['statusText']);}return await _0x4c6847['json']();},async 'followUpTask'(_0x30e8d2,_0x502580={}){if(!_0x30e8d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x502580['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x593e71,_0xe85af4={};if(_0x502580['files']&&_0x502580['files']['length']>0x0){const _0x1b462f=new FormData();_0x1b462f['append']('instructions',_0x502580['instructions']);for(const _0x7634d9 of _0x502580['files']){_0x1b462f['append']('attachments',_0x7634d9);}_0x593e71=_0x1b462f;}else _0xe85af4['Content-Type']='application/json',_0x593e71=JSON['stringify']({'instructions':_0x502580['instructions']});const _0x17a994=await fetch(API_BASE+'/tasks/'+_0x30e8d2+'/follow-up',{'method':'POST','headers':_0xe85af4,'body':_0x593e71});if(!_0x17a994['ok']){const _0x559c3c=await _0x17a994['json']()['catch'](()=>({}));throw new Error(_0x559c3c['error']||_0x559c3c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x17a994['statusText']);}return await _0x17a994['json']();},async 'getTaskRewindPoints'(_0x2a48ba){if(!_0x2a48ba)throw new Error('Task\x20ID\x20is\x20required');const _0x4297fd=await fetch(API_BASE+'/tasks/'+_0x2a48ba+'/rewind-points');if(!_0x4297fd['ok']){const _0x493ca1=await _0x4297fd['json']()['catch'](()=>({}));throw new Error(_0x493ca1['error']||_0x493ca1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4297fd['statusText']);}return await _0x4297fd['json']();},async 'rewindTask'(_0x1dbef4,_0x250775={}){if(!_0x1dbef4)throw new Error('Task\x20ID\x20is\x20required');const _0x1e910d=Number['isInteger'](_0x250775['targetFollowUpCount'])?_0x250775['targetFollowUpCount']:0x0,_0x21dee5={'targetFollowUpCount':_0x1e910d};typeof _0x250775['instructions']==='string'&&_0x250775['instructions']['trim']()&&(_0x21dee5['instructions']=_0x250775['instructions']['trim']());typeof _0x250775['rewindFiles']==='boolean'&&(_0x21dee5['rewindFiles']=_0x250775['rewindFiles']);const _0x2b8741=await fetch(API_BASE+'/tasks/'+_0x1dbef4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21dee5)});if(!_0x2b8741['ok']){const _0x3ccfbf=await _0x2b8741['json']()['catch'](()=>({}));throw new Error(_0x3ccfbf['error']||_0x3ccfbf['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b8741['statusText']);}return await _0x2b8741['json']();},async 'login'(_0xc0b3d9,_0x5baa0b){const _0x56fed4=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc0b3d9,'password':_0x5baa0b})});if(!_0x56fed4['ok']){const _0x45e704=await _0x56fed4['json']();throw new Error(_0x45e704['message']||'Login\x20failed');}return await _0x56fed4['json']();},async 'logout'(){const _0x4ea8da=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ea8da['ok']){const _0xa5de1a=await _0x4ea8da['json']();throw new Error(_0xa5de1a['message']||'Logout\x20failed');}return await _0x4ea8da['json']();},async 'getCurrentUser'(){const _0x1cfaa5=await fetch(API_BASE+'/auth/me');if(!_0x1cfaa5['ok'])throw new Error('Not\x20authenticated');const _0x14bbf4=await _0x1cfaa5['json']();return _0x14bbf4['user'];},async 'getRolesInfo'(){const _0x34158d=await fetch(API_BASE+'/users/roles');if(!_0x34158d['ok']){const _0x589ecc=await _0x34158d['json']();throw new Error(_0x589ecc['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x34158d['json']();},async 'getUsers'(){const _0x2c8a0c=await fetch(API_BASE+'/users');if(!_0x2c8a0c['ok']){const _0x1baf98=await _0x2c8a0c['json']();throw new Error(_0x1baf98['message']||'Failed\x20to\x20get\x20users');}return await _0x2c8a0c['json']();},async 'getUser'(_0x498a78){const _0x2e9f4c=await fetch(API_BASE+'/users/'+_0x498a78);if(!_0x2e9f4c['ok']){const _0x548ca3=await _0x2e9f4c['json']();throw new Error(_0x548ca3['message']||'Failed\x20to\x20get\x20user');}return await _0x2e9f4c['json']();},async 'createUser'(_0x306cc2){const _0x121e36=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306cc2)});if(!_0x121e36['ok']){const _0x4c740a=await _0x121e36['json']();throw new Error(_0x4c740a['message']||'Failed\x20to\x20create\x20user');}return await _0x121e36['json']();},async 'updateUser'(_0x4bd271,_0x2d3cca){const _0x2b596f=await fetch(API_BASE+'/users/'+_0x4bd271,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3cca)});if(!_0x2b596f['ok']){const _0x304df9=await _0x2b596f['json']();throw new Error(_0x304df9['message']||'Failed\x20to\x20update\x20user');}return await _0x2b596f['json']();},async 'deleteUser'(_0x3f5138){const _0x29e747=await fetch(API_BASE+'/users/'+_0x3f5138,{'method':'DELETE'});if(!_0x29e747['ok']){const _0x43645d=await _0x29e747['json']();throw new Error(_0x43645d['message']||'Failed\x20to\x20delete\x20user');}return await _0x29e747['json']();},async 'stopAllContainers'(){const _0x20a7b5=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3f5697=await _0x20a7b5['json']()['catch'](()=>({}));if(!_0x20a7b5['ok'])throw new Error(_0x3f5697['message']||_0x3f5697['error']||'Failed\x20to\x20stop\x20containers');return _0x3f5697;},async 'removeStoppedContainers'(){const _0x4582ac=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x295d1b=await _0x4582ac['json']()['catch'](()=>({}));if(!_0x4582ac['ok'])throw new Error(_0x295d1b['message']||_0x295d1b['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x295d1b;},async 'pruneDockerResources'(){const _0xad02=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x20580b=await _0xad02['json']()['catch'](()=>({}));if(!_0xad02['ok'])throw new Error(_0x20580b['message']||_0x20580b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x20580b;},async 'createPasswordToken'(_0x36f395,_0x473ffb='setup',_0x1908e5=![]){const _0x28b6c8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x36f395,'type':_0x473ffb,'sendEmail':_0x1908e5})});if(!_0x28b6c8['ok']){const _0x5badcf=await _0x28b6c8['json']();throw new Error(_0x5badcf['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x28b6c8['json']();},async 'getEmailConfig'(){const _0x397a01=await fetch(API_BASE+'/password/email-config');if(!_0x397a01['ok']){const _0x288d92=await _0x397a01['json']();throw new Error(_0x288d92['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x397a01['json']();},async 'updateTaskName'(_0x3a78e7,_0x5d16f4){const _0x495416=await fetch(API_BASE+'/tasks/'+_0x3a78e7,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5d16f4})});if(!_0x495416['ok']){const _0x24e161=await _0x495416['json']();throw new Error(_0x24e161['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x495416['json']();},async 'pinTask'(_0x45ab9c,_0x45fc0d,_0x5cd3ca=null){if(!_0x45ab9c)throw new Error('Task\x20ID\x20is\x20required');const _0x667030={'pinned':_0x45fc0d};_0x5cd3ca&&_0x5cd3ca['length']>0x0&&(_0x667030['additionalTaskIds']=_0x5cd3ca);const _0x3889e8=await fetch(API_BASE+'/tasks/'+_0x45ab9c+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x667030)});if(!_0x3889e8['ok']){const _0x2fe44b=await _0x3889e8['json']();throw new Error(_0x2fe44b['error']||'Failed\x20to\x20pin\x20task');}return await _0x3889e8['json']();},async 'setTaskWinner'(_0xd61897,_0x1489d6,_0x1e8106=[]){if(!_0xd61897)throw new Error('Task\x20ID\x20is\x20required');const _0x2d2ed0=await fetch(API_BASE+'/tasks/'+_0xd61897+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1489d6,'siblings':_0x1e8106})});if(!_0x2d2ed0['ok']){const _0x38eaff=await _0x2d2ed0['json']();throw new Error(_0x38eaff['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2d2ed0['json']();},async 'setTaskLoser'(_0x3a83d9,_0x5a0445){if(!_0x3a83d9)throw new Error('Task\x20ID\x20is\x20required');const _0x1f7b4c=await fetch(API_BASE+'/tasks/'+_0x3a83d9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a0445})});if(!_0x1f7b4c['ok']){const _0x75e256=await _0x1f7b4c['json']();throw new Error(_0x75e256['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1f7b4c['json']();},async 'createTaskGroup'(_0x1ca620){const _0x43ef8c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ca620)});if(!_0x43ef8c['ok']){const _0x341388=await _0x43ef8c['json']();throw new Error(_0x341388['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x43ef8c['json']();},async 'getTaskGroups'(_0x4a14b2={}){const _0x3d73f3=new URLSearchParams();if(_0x4a14b2['userId'])_0x3d73f3['set']('userId',String(_0x4a14b2['userId']));if(_0x4a14b2['status'])_0x3d73f3['set']('status',String(_0x4a14b2['status']));if(_0x4a14b2['limit'])_0x3d73f3['set']('limit',String(_0x4a14b2['limit']));const _0x255da8=API_BASE+'/tasks/groups'+(_0x3d73f3['toString']()?'?'+_0x3d73f3['toString']():''),_0x1b65f3=await fetch(_0x255da8);if(!_0x1b65f3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x1b65f3['json']();},async 'getTaskGroup'(_0x120791){const _0x37a55c=await fetch(API_BASE+'/tasks/groups/'+_0x120791);if(!_0x37a55c['ok']){const _0x283f13=await _0x37a55c['json']();throw new Error(_0x283f13['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x37a55c['json']();},async 'updateTaskGroup'(_0x3c6903,_0xca4b4c,_0x5483fb){const _0x4a8c68=await fetch(API_BASE+'/tasks/'+_0x3c6903+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xca4b4c,'groupIndex':_0x5483fb})});if(!_0x4a8c68['ok']){const _0x2654ed=await _0x4a8c68['json']();throw new Error(_0x2654ed['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x4a8c68['json']();},async 'removeTaskFromGroup'(_0x24645a){return this['updateTaskGroup'](_0x24645a,null,null);},async 'deleteTaskGroup'(_0x3f4e06,_0x2c5402=![]){const _0x421aa6=_0x2c5402?'?deleteTasks=true':'',_0x333d7b=await fetch(API_BASE+'/tasks/groups/'+_0x3f4e06+_0x421aa6,{'method':'DELETE'});if(!_0x333d7b['ok']){const _0x3dca5b=await _0x333d7b['json']();throw new Error(_0x3dca5b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x21278e,_0x318f05){const _0x190ab9=await fetch(API_BASE+'/tasks/groups/'+_0x21278e+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x318f05})});if(!_0x190ab9['ok']){const _0x38881d=await _0x190ab9['json']();throw new Error(_0x38881d['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x190ab9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x236d2b){if(!_0x236d2b)throw new Error('Task\x20ID\x20is\x20required');const _0xab050a=await fetch(API_BASE+'/tasks/'+_0x236d2b+'/comments');if(!_0xab050a['ok']){const _0xfcabd3=await _0xab050a['json']()['catch'](()=>({}));throw new Error(_0xfcabd3['error']||'Failed\x20to\x20get\x20comments');}return await _0xab050a['json']();},async 'addComment'(_0x5d7557,_0x5c548b){if(!_0x5d7557)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5c548b)throw new Error('Comment\x20content\x20is\x20required');const _0x1b6ee7=await fetch(API_BASE+'/tasks/'+_0x5d7557+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5c548b})});if(!_0x1b6ee7['ok']){const _0x40437e=await _0x1b6ee7['json']()['catch'](()=>({}));throw new Error(_0x40437e['error']||'Failed\x20to\x20add\x20comment');}return await _0x1b6ee7['json']();},async 'updateComment'(_0x1d7412,_0x3b73f1,_0x1f1d5f){if(!_0x1d7412)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3b73f1)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1d5f)throw new Error('Comment\x20content\x20is\x20required');const _0x904fa3=await fetch(API_BASE+'/tasks/'+_0x1d7412+'/comments/'+_0x3b73f1,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1d5f})});if(!_0x904fa3['ok']){const _0x5a2994=await _0x904fa3['json']()['catch'](()=>({}));throw new Error(_0x5a2994['error']||'Failed\x20to\x20update\x20comment');}return await _0x904fa3['json']();},async 'deleteComment'(_0x272e15,_0x58135d){if(!_0x272e15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58135d)throw new Error('Comment\x20ID\x20is\x20required');const _0x2d2be8=await fetch(API_BASE+'/tasks/'+_0x272e15+'/comments/'+_0x58135d,{'method':'DELETE'});if(!_0x2d2be8['ok']){const _0x11de2d=await _0x2d2be8['json']()['catch'](()=>({}));throw new Error(_0x11de2d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2d2be8['json']();},async 'createObjective'(_0x1458ce){const _0x5ca8d9={'objective':!![],'name':_0x1458ce['name']||'','environment':_0x1458ce['environment']||null,'agents':_0x1458ce['agents']||[],'branches':_0x1458ce['branches']||{},'isPinned':_0x1458ce['isPinned']||![],'parentObjectiveId':_0x1458ce['parentObjectiveId']||null,'env_vars':_0x1458ce['envVars']||{},'parameters':{'instructions':_0x1458ce['instructions']||''},'files':_0x1458ce['files']||[],'jira':_0x1458ce['jira']||null};return this['createTask'](_0x5ca8d9);},async 'updateObjective'(_0xc1ba19,_0x302ed9,_0x89c69f=[],_0x4da93a=[]){let _0x58fbd9,_0x9ea3b1={};const _0x151afa={..._0x302ed9};_0x4da93a&&_0x4da93a['length']>0x0&&(_0x151afa['removeAttachments']=_0x4da93a);if(_0x89c69f&&_0x89c69f['length']>0x0){const _0x5e7d1e=new FormData();for(const [_0x47271c,_0x5126da]of Object['entries'](_0x151afa)){if(_0x5126da==null)continue;typeof _0x5126da==='object'?_0x5e7d1e['append'](_0x47271c,JSON['stringify'](_0x5126da)):_0x5e7d1e['append'](_0x47271c,String(_0x5126da));}for(const _0xfc1345 of _0x89c69f){_0x5e7d1e['append']('attachments',_0xfc1345);}_0x58fbd9=_0x5e7d1e;}else _0x9ea3b1['Content-Type']='application/json',_0x58fbd9=JSON['stringify'](_0x151afa);const _0x26a22f=await fetch(API_BASE+'/tasks/'+_0xc1ba19,{'method':'PATCH','headers':_0x9ea3b1,'body':_0x58fbd9});if(!_0x26a22f['ok']){const _0x2fb40b=await _0x26a22f['json']();throw new Error(_0x2fb40b['error']||'Failed\x20to\x20update\x20objective');}return await _0x26a22f['json']();},async 'deleteObjective'(_0xef74b6){return this['deleteTask'](_0xef74b6);},async 'launchObjective'(_0x15f4a5,_0x174005={}){const _0x13bb0f=await fetch(API_BASE+'/tasks/'+_0x15f4a5+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x174005)});if(!_0x13bb0f['ok']){const _0xc1259e=await _0x13bb0f['json']();throw new Error(_0xc1259e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x13bb0f['json']();},async 'getObjectiveAttachments'(_0x1306d){return this['getTaskAttachments'](_0x1306d);},async 'createJudgeTask'({environment:_0x50194f,judgeAgent:_0x4b1613,groupId:_0x1247d8,taskIds:_0x2ebffd,judgeCustomInstructions:_0x2a5916,isPinned:_0x259acf}){const _0x3d18f6=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x50194f,'judgeAgent':_0x4b1613,'groupId':_0x1247d8,'taskIds':_0x2ebffd,'judgeCustomInstructions':_0x2a5916,'isPinned':_0x259acf})});if(!_0x3d18f6['ok']){const _0x3fa384=await _0x3d18f6['json']();throw new Error(_0x3fa384['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3d18f6['json']();},async 'getJudgeTasks'(_0x3330ee){const _0x2717fb=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3330ee));if(!_0x2717fb['ok']){const _0x46ecd1=await _0x2717fb['json']();throw new Error(_0x46ecd1['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2717fb['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1de0be,_0x45b2f6,_0x3a3d66=''){const _0x120bcc=await fetch(API_BASE+'/tasks/'+_0x1de0be+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x45b2f6,'customPreamble':_0x3a3d66})});if(!_0x120bcc['ok']){const _0x22a9de=await _0x120bcc['json']();throw new Error(_0x22a9de['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x120bcc['json']();},async 'getJiraConfig'(){const _0x189883=await fetch(API_BASE+'/jira/config');if(!_0x189883['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x189883['json']();},async 'getJiraIssue'(_0x5e1490){const _0x24d459=await fetch(API_BASE+'/jira/issues/'+_0x5e1490);if(!_0x24d459['ok']){const _0x5f469a=await _0x24d459['json']()['catch'](()=>({}));throw new Error(_0x5f469a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x24d459['statusText']);}return await _0x24d459['json']();},async 'searchJiraIssues'(_0xd8d8f9,_0x5f04c2=0x14){const _0x27d9ce=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xd8d8f9,'maxResults':_0x5f04c2})});if(!_0x27d9ce['ok']){const _0x392c21=await _0x27d9ce['json']()['catch'](()=>({}));throw new Error(_0x392c21['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x27d9ce['statusText']);}return await _0x27d9ce['json']();},async 'postJiraComment'(_0xc3c754,_0x13515f){const _0x5ccad2=await fetch(API_BASE+'/jira/issues/'+_0xc3c754+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x13515f})});if(!_0x5ccad2['ok']){const _0x1f8604=await _0x5ccad2['json']()['catch'](()=>({}));throw new Error(_0x1f8604['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5ccad2['statusText']);}return await _0x5ccad2['json']();},async 'getJiraComments'(_0x39d58f){const _0x192e31=await fetch(API_BASE+'/jira/issues/'+_0x39d58f+'/comments');if(!_0x192e31['ok']){const _0x51394a=await _0x192e31['json']()['catch'](()=>({}));throw new Error(_0x51394a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x192e31['statusText']);}return await _0x192e31['json']();},async 'promptParameter'({environment:_0x5b2b45,command:_0x45b74d,parser:parser='json'}){const _0x202f0c=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5b2b45,'command':_0x45b74d,'parser':parser})});if(!_0x202f0c['ok']){const _0x28da7f=await _0x202f0c['json']()['catch'](()=>({}));throw new Error(_0x28da7f['message']||_0x28da7f['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x202f0c['statusText']);}return await _0x202f0c['json']();},async 'promptParameterStream'(_0x3b1708,_0x4500f7){const _0x295282=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1708)});if(!_0x295282['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x295282['statusText']);const _0x4f1e25=_0x295282['body']['getReader'](),_0x2610c8=new TextDecoder();let _0x175475='';return new Promise((_0x50f936,_0x1826e1)=>{const _0xa65dab=async()=>{try{const {done:_0x54d320,value:_0x3cc664}=await _0x4f1e25['read']();if(_0x54d320)return;_0x175475+=_0x2610c8['decode'](_0x3cc664,{'stream':!![]});const _0x2d7027=_0x175475['split']('\x0a\x0a');_0x175475=_0x2d7027['pop']()||'';for(const _0x236257 of _0x2d7027){if(!_0x236257['trim']())continue;const _0x1cdf1=_0x236257['split']('\x0a');let _0x44f5f6='message',_0x29269e='';for(const _0x302f07 of _0x1cdf1){if(_0x302f07['startsWith']('event:'))_0x44f5f6=_0x302f07['substring'](0x6)['trim']();else _0x302f07['startsWith']('data:')&&(_0x29269e=_0x302f07['substring'](0x5)['trim']());}if(!_0x29269e)continue;try{const _0x29084e=JSON['parse'](_0x29269e);if(_0x44f5f6==='progress'&&_0x4500f7)_0x4500f7(_0x29084e['stage'],_0x29084e['message']);else{if(_0x44f5f6==='result'){_0x50f936(_0x29084e);return;}else{if(_0x44f5f6==='error'){let _0x2828f3=_0x29084e['message']||_0x29084e['error']||'Prompt\x20command\x20failed';_0x29084e['rawOutput']&&(_0x2828f3+='\x0a\x0aRaw\x20output:\x0a'+_0x29084e['rawOutput']);_0x1826e1(new Error(_0x2828f3));return;}}}}catch(_0x1c7429){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1c7429),console['error']('Event\x20type:',_0x44f5f6),console['error']('Event\x20data:',_0x29269e),console['error']('First\x20200\x20chars:',_0x29269e['substring'](0x0,0xc8)),_0x1826e1(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1c7429['message']+'\x0a\x0aData:\x20'+_0x29269e['substring'](0x0,0x1f4)));return;}}_0xa65dab();}catch(_0xfa7a29){_0x1826e1(_0xfa7a29);}};_0xa65dab();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x53e726){const _0x56855a=await fetch(''+API_BASE+_0x53e726);if(!_0x56855a['ok']){const _0x1de4c1=await _0x56855a['json']()['catch'](()=>({'error':_0x56855a['statusText']})),_0x472898=new Error(_0x1de4c1['error']||_0x1de4c1['message']||_0x56855a['statusText']);if(_0x1de4c1['detail']!==undefined)_0x472898['detail']=_0x1de4c1['detail'];throw _0x472898;}return await _0x56855a['json']();},async 'post'(_0x40019f,_0x1a80d0){const _0x4d8fc5=await fetch(''+API_BASE+_0x40019f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a80d0)});if(!_0x4d8fc5['ok']){const _0x3f326e=await _0x4d8fc5['json']()['catch'](()=>({'error':_0x4d8fc5['statusText']})),_0x4bb8ab=new Error(_0x3f326e['error']||_0x3f326e['message']||_0x4d8fc5['statusText']);if(_0x3f326e['detail']!==undefined)_0x4bb8ab['detail']=_0x3f326e['detail'];throw _0x4bb8ab;}return await _0x4d8fc5['json']();},async 'put'(_0x4f367c,_0xe605f1){const _0x246815=await fetch(''+API_BASE+_0x4f367c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe605f1)});if(!_0x246815['ok']){const _0x5aefc6=await _0x246815['json']()['catch'](()=>({'error':_0x246815['statusText']})),_0x3c29e1=new Error(_0x5aefc6['error']||_0x5aefc6['message']||_0x246815['statusText']);if(_0x5aefc6['detail']!==undefined)_0x3c29e1['detail']=_0x5aefc6['detail'];throw _0x3c29e1;}return await _0x246815['json']();},async 'delete'(_0x2845c8,_0x981b04){const _0x3c5cee={'method':'DELETE'};_0x981b04&&(_0x3c5cee['headers']={'Content-Type':'application/json'},_0x3c5cee['body']=JSON['stringify'](_0x981b04));const _0x3afff2=await fetch(''+API_BASE+_0x2845c8,_0x3c5cee);if(!_0x3afff2['ok']){const _0x3e7359=await _0x3afff2['json']()['catch'](()=>({'error':_0x3afff2['statusText']})),_0x35ff9e=new Error(_0x3e7359['error']||_0x3e7359['message']||_0x3afff2['statusText']);if(_0x3e7359['detail']!==undefined)_0x35ff9e['detail']=_0x3e7359['detail'];throw _0x35ff9e;}return await _0x3afff2['json']();},async 'getSkills'(){const _0x3dbd45=await fetch(API_BASE+'/skills');if(!_0x3dbd45['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3dbd45['statusText']);return await _0x3dbd45['json']();},async 'getSkill'(_0x35d106){const _0x1c50fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35d106));if(!_0x1c50fa['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c50fa['statusText']);return await _0x1c50fa['json']();},async 'createSkill'(_0x36fd96){const _0xbabd42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36fd96)});if(!_0xbabd42['ok']){const _0x66d64f=await _0xbabd42['json']()['catch'](()=>({'error':_0xbabd42['statusText']})),_0x5db475=new Error(_0x66d64f['error']||_0x66d64f['message']||_0xbabd42['statusText']);if(_0x66d64f['detail']!==undefined)_0x5db475['detail']=_0x66d64f['detail'];throw _0x5db475;}return await _0xbabd42['json']();},async 'updateSkill'(_0x2926b7,_0x1ac343){const _0x39b593=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2926b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ac343)});if(!_0x39b593['ok']){const _0x5d6996=await _0x39b593['json']()['catch'](()=>({'error':_0x39b593['statusText']})),_0x2e4db9=new Error(_0x5d6996['error']||_0x5d6996['message']||_0x39b593['statusText']);if(_0x5d6996['detail']!==undefined)_0x2e4db9['detail']=_0x5d6996['detail'];throw _0x2e4db9;}return await _0x39b593['json']();},async 'deleteSkill'(_0x311f39){const _0x3bafb0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x311f39),{'method':'DELETE'});if(!_0x3bafb0['ok']){const _0x4a9879=await _0x3bafb0['json']()['catch'](()=>({'error':_0x3bafb0['statusText']})),_0x11162c=new Error(_0x4a9879['error']||_0x4a9879['message']||_0x3bafb0['statusText']);if(_0x4a9879['detail']!==undefined)_0x11162c['detail']=_0x4a9879['detail'];throw _0x11162c;}return await _0x3bafb0['json']();},async 'getSkillFile'(_0x5137ba,_0x5c56d1){const _0x5a5f53=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5137ba)+'/files/'+_0x5c56d1);if(!_0x5a5f53['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a5f53['statusText']);return await _0x5a5f53['json']();},async 'saveSkillFile'(_0x4389ee,_0x31cbfa,_0x5534c1){const _0x483eb9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4389ee)+'/files/'+_0x31cbfa,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5534c1})});if(!_0x483eb9['ok']){const _0x2b18d1=await _0x483eb9['json']()['catch'](()=>({'error':_0x483eb9['statusText']})),_0x2ca648=new Error(_0x2b18d1['error']||_0x2b18d1['message']||_0x483eb9['statusText']);if(_0x2b18d1['detail']!==undefined)_0x2ca648['detail']=_0x2b18d1['detail'];throw _0x2ca648;}return await _0x483eb9['json']();},async 'deleteSkillFile'(_0x1d5476,_0x3c7d20){const _0x4e3fe8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d5476)+'/files/'+_0x3c7d20,{'method':'DELETE'});if(!_0x4e3fe8['ok']){const _0x666d13=await _0x4e3fe8['json']()['catch'](()=>({'error':_0x4e3fe8['statusText']})),_0x1197a0=new Error(_0x666d13['error']||_0x666d13['message']||_0x4e3fe8['statusText']);if(_0x666d13['detail']!==undefined)_0x1197a0['detail']=_0x666d13['detail'];throw _0x1197a0;}return await _0x4e3fe8['json']();},async 'pullSkills'(){const _0x486e2f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x486e2f['ok']){const _0x3786d9=await _0x486e2f['json']()['catch'](()=>({'error':_0x486e2f['statusText']})),_0x52bcc1=new Error(_0x3786d9['error']||_0x3786d9['message']||_0x486e2f['statusText']);if(_0x3786d9['detail']!==undefined)_0x52bcc1['detail']=_0x3786d9['detail'];throw _0x52bcc1;}return await _0x486e2f['json']();},async 'commitSkills'(_0x29bb03,_0x1be5e4={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1be5e4,_0x3cef6c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x29bb03,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3cef6c['ok']){const _0x5e1615=await _0x3cef6c['json']()['catch'](()=>({'error':_0x3cef6c['statusText']})),_0x358d26=new Error(_0x5e1615['error']||_0x5e1615['message']||_0x3cef6c['statusText']);if(_0x5e1615['detail']!==undefined)_0x358d26['detail']=_0x5e1615['detail'];throw _0x358d26;}return await _0x3cef6c['json']();},async 'discardSkillsChanges'(){const _0x2283ff=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2283ff['ok']){const _0x556f7e=await _0x2283ff['json']()['catch'](()=>({'error':_0x2283ff['statusText']})),_0x152241=new Error(_0x556f7e['error']||_0x556f7e['message']||_0x2283ff['statusText']);if(_0x556f7e['detail']!==undefined)_0x152241['detail']=_0x556f7e['detail'];throw _0x152241;}return await _0x2283ff['json']();},async 'getSkillCatalog'(){const _0xffc12b=await fetch(API_BASE+'/external-skills/catalog');if(!_0xffc12b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xffc12b['statusText']);return await _0xffc12b['json']();},async 'getImportedSkillsRegistry'(){const _0xea8b23=await fetch(API_BASE+'/external-skills/registry');if(!_0xea8b23['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0xea8b23['statusText']);return await _0xea8b23['json']();},async 'importCatalogSkill'(_0x282a5e){const _0x3ff27b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x282a5e})});if(!_0x3ff27b['ok']){const _0x5bbe62=await _0x3ff27b['json']()['catch'](()=>({'error':_0x3ff27b['statusText']})),_0x2a694e=new Error(_0x5bbe62['error']||_0x5bbe62['message']||_0x3ff27b['statusText']);if(_0x5bbe62['detail']!==undefined)_0x2a694e['detail']=_0x5bbe62['detail'];throw _0x2a694e;}return await _0x3ff27b['json']();},async 'importSkillFromGit'(_0x839e88,_0x226980,_0xe8436='main',_0x47b53d=null){const _0x5430e4=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x839e88,'skillPath':_0x226980,'branch':_0xe8436,'skillId':_0x47b53d})});if(!_0x5430e4['ok']){const _0x538082=await _0x5430e4['json']()['catch'](()=>({'error':_0x5430e4['statusText']})),_0x7223e0=new Error(_0x538082['error']||_0x538082['message']||_0x5430e4['statusText']);if(_0x538082['detail']!==undefined)_0x7223e0['detail']=_0x538082['detail'];throw _0x7223e0;}return await _0x5430e4['json']();},async 'probeMarketplace'(_0x14e087,_0x5e151a='main'){const _0x275708=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14e087,'branch':_0x5e151a})});if(!_0x275708['ok']){const _0x45aeba=await _0x275708['json']()['catch'](()=>({'error':_0x275708['statusText']})),_0x122850=new Error(_0x45aeba['error']||_0x45aeba['message']||_0x275708['statusText']);if(_0x45aeba['detail']!==undefined)_0x122850['detail']=_0x45aeba['detail'];throw _0x122850;}return await _0x275708['json']();},async 'importMarketplaceBundle'(_0x3d68f1,_0x1fbb95,_0xaf2eaa,_0x301dd2=null){const _0xf076c1=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3d68f1,'branch':_0x1fbb95,'bundleId':_0xaf2eaa,'selectedSkills':_0x301dd2})});if(!_0xf076c1['ok']){const _0x1ae624=await _0xf076c1['json']()['catch'](()=>({'error':_0xf076c1['statusText']})),_0x5f06b4=new Error(_0x1ae624['error']||_0x1ae624['message']||_0xf076c1['statusText']);if(_0x1ae624['detail']!==undefined)_0x5f06b4['detail']=_0x1ae624['detail'];throw _0x5f06b4;}return await _0xf076c1['json']();},async 'importSkillFromFolder'(_0x3cac93,_0x43d726=null){const _0x494fce=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3cac93,'skillId':_0x43d726})});if(!_0x494fce['ok']){const _0x50c8f1=await _0x494fce['json']()['catch'](()=>({'error':_0x494fce['statusText']})),_0x2634fb=new Error(_0x50c8f1['error']||_0x50c8f1['message']||_0x494fce['statusText']);if(_0x50c8f1['detail']!==undefined)_0x2634fb['detail']=_0x50c8f1['detail'];throw _0x2634fb;}return await _0x494fce['json']();},async 'importSkillFromNpm'(_0x2f0610,_0x4621e9='latest',_0x15a074=null,_0x5b7808=null){const _0x4f55d9=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f0610,'version':_0x4621e9,'skillId':_0x15a074,'registry':_0x5b7808})});if(!_0x4f55d9['ok']){const _0x523496=await _0x4f55d9['json']()['catch'](()=>({'error':_0x4f55d9['statusText']})),_0x41321e=new Error(_0x523496['error']||_0x523496['message']||_0x4f55d9['statusText']);if(_0x523496['detail']!==undefined)_0x41321e['detail']=_0x523496['detail'];throw _0x41321e;}return await _0x4f55d9['json']();},async 'checkSkillUpdates'(_0x53c6bc){const _0x4bbfa3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x53c6bc)+'/check-updates',{'method':'POST'});if(!_0x4bbfa3['ok']){const _0x1a0739=await _0x4bbfa3['json']()['catch'](()=>({'error':_0x4bbfa3['statusText']})),_0x479d25=new Error(_0x1a0739['error']||_0x1a0739['message']||_0x4bbfa3['statusText']);if(_0x1a0739['detail']!==undefined)_0x479d25['detail']=_0x1a0739['detail'];throw _0x479d25;}return await _0x4bbfa3['json']();},async 'updateExternalSkill'(_0x1eaf09){const _0x279e31=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1eaf09)+'/update',{'method':'POST'});if(!_0x279e31['ok']){const _0xfe82ac=await _0x279e31['json']()['catch'](()=>({'error':_0x279e31['statusText']})),_0x319d4a=new Error(_0xfe82ac['error']||_0xfe82ac['message']||_0x279e31['statusText']);if(_0xfe82ac['detail']!==undefined)_0x319d4a['detail']=_0xfe82ac['detail'];throw _0x319d4a;}return await _0x279e31['json']();},async 'updateSkillFlags'(_0x3b5b40,_0x36ec51){const _0x1f4663=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3b5b40)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x36ec51})});if(!_0x1f4663['ok']){const _0x574219=await _0x1f4663['json']()['catch'](()=>({'error':_0x1f4663['statusText']})),_0x4fb1db=new Error(_0x574219['error']||_0x574219['message']||_0x1f4663['statusText']);if(_0x574219['detail']!==undefined)_0x4fb1db['detail']=_0x574219['detail'];throw _0x4fb1db;}return await _0x1f4663['json']();},async 'removeFromImportedRegistry'(_0x2b520e){const _0x27bc1b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2b520e)+'/registry',{'method':'DELETE'});if(!_0x27bc1b['ok']){const _0x42da98=await _0x27bc1b['json']()['catch'](()=>({'error':_0x27bc1b['statusText']})),_0x44a25d=new Error(_0x42da98['error']||_0x42da98['message']||_0x27bc1b['statusText']);if(_0x42da98['detail']!==undefined)_0x44a25d['detail']=_0x42da98['detail'];throw _0x44a25d;}return await _0x27bc1b['json']();},async 'getTeams'(){const _0x4787c1=await fetch(API_BASE+'/teams');if(!_0x4787c1['ok']){const _0x5833c1=await _0x4787c1['json']()['catch'](()=>({'message':_0x4787c1['statusText']}));throw new Error(_0x5833c1['message']||'Failed\x20to\x20get\x20teams');}return await _0x4787c1['json']();},async 'getTeam'(_0x598c05){const _0x585e5e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x598c05));if(!_0x585e5e['ok']){const _0x3e9762=await _0x585e5e['json']()['catch'](()=>({'message':_0x585e5e['statusText']}));throw new Error(_0x3e9762['message']||'Failed\x20to\x20get\x20team');}return await _0x585e5e['json']();},async 'createTeam'(_0x2b7d77){const _0x1386d6=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b7d77)});if(!_0x1386d6['ok']){const _0x520cd8=await _0x1386d6['json']()['catch'](()=>({'message':_0x1386d6['statusText']}));throw new Error(_0x520cd8['message']||'Failed\x20to\x20create\x20team');}return await _0x1386d6['json']();},async 'updateTeam'(_0x37e750,_0x37b62a){const _0x45b461=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x37e750),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37b62a)});if(!_0x45b461['ok']){const _0x392cbd=await _0x45b461['json']()['catch'](()=>({'message':_0x45b461['statusText']}));throw new Error(_0x392cbd['message']||'Failed\x20to\x20update\x20team');}return await _0x45b461['json']();},async 'deleteTeam'(_0x46e5f6){const _0x19add9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46e5f6),{'method':'DELETE'});if(!_0x19add9['ok']){const _0x241514=await _0x19add9['json']()['catch'](()=>({'message':_0x19add9['statusText']}));throw new Error(_0x241514['message']||'Failed\x20to\x20delete\x20team');}return await _0x19add9['json']();},async 'addTeamMember'(_0x15f1a9,_0x8b9a2d){const _0x1435b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15f1a9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x8b9a2d})});if(!_0x1435b6['ok']){const _0x15cbfa=await _0x1435b6['json']()['catch'](()=>({'message':_0x1435b6['statusText']}));throw new Error(_0x15cbfa['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1435b6['json']();},async 'removeTeamMember'(_0x4acfd2,_0x2c7a36){const _0x58e39c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4acfd2)+'/members/'+encodeURIComponent(_0x2c7a36),{'method':'DELETE'});if(!_0x58e39c['ok']){const _0x33530b=await _0x58e39c['json']()['catch'](()=>({'message':_0x58e39c['statusText']}));throw new Error(_0x33530b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x58e39c['json']();},async 'getBindings'(_0x1e0340={}){const _0x156146=new URLSearchParams();if(_0x1e0340['resource_type'])_0x156146['set']('resource_type',_0x1e0340['resource_type']);if(_0x1e0340['resource_id'])_0x156146['set']('resource_id',_0x1e0340['resource_id']);if(_0x1e0340['subject_type'])_0x156146['set']('subject_type',_0x1e0340['subject_type']);if(_0x1e0340['subject_id'])_0x156146['set']('subject_id',_0x1e0340['subject_id']);const _0x57beaf=_0x156146['toString'](),_0xd31c67=await fetch(API_BASE+'/bindings'+(_0x57beaf?'?'+_0x57beaf:''));if(!_0xd31c67['ok']){const _0x32760a=await _0xd31c67['json']()['catch'](()=>({'message':_0xd31c67['statusText']}));throw new Error(_0x32760a['message']||'Failed\x20to\x20get\x20bindings');}return await _0xd31c67['json']();},async 'createBinding'(_0x12a6f5){const _0x309bd8=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12a6f5)});if(!_0x309bd8['ok']){const _0x94f32=await _0x309bd8['json']()['catch'](()=>({'message':_0x309bd8['statusText']}));throw new Error(_0x94f32['message']||'Failed\x20to\x20create\x20binding');}return await _0x309bd8['json']();},async 'updateBinding'(_0xe60373,_0xd0e7cd){const _0x2c0d35=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe60373),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0e7cd)});if(!_0x2c0d35['ok']){const _0x450589=await _0x2c0d35['json']()['catch'](()=>({'message':_0x2c0d35['statusText']}));throw new Error(_0x450589['message']||'Failed\x20to\x20update\x20binding');}return await _0x2c0d35['json']();},async 'deleteBinding'(_0x31487a){const _0x3065a6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x31487a),{'method':'DELETE'});if(!_0x3065a6['ok']){const _0x1ff9d5=await _0x3065a6['json']()['catch'](()=>({'message':_0x3065a6['statusText']}));throw new Error(_0x1ff9d5['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3065a6['json']();},async 'getRoleDefinitions'(){const _0x432796=await fetch(API_BASE+'/roles');if(!_0x432796['ok']){const _0x1b392d=await _0x432796['json']()['catch'](()=>({'message':_0x432796['statusText']}));throw new Error(_0x1b392d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x432796['json']();},async 'getRoleDefinition'(_0xa8a9f7){const _0x364070=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xa8a9f7));if(!_0x364070['ok']){const _0x59b0d4=await _0x364070['json']()['catch'](()=>({'message':_0x364070['statusText']}));throw new Error(_0x59b0d4['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x364070['json']();},async 'createRoleDefinition'(_0x1722aa){const _0x16bbaa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1722aa)});if(!_0x16bbaa['ok']){const _0x97a97e=await _0x16bbaa['json']()['catch'](()=>({'message':_0x16bbaa['statusText']}));throw new Error(_0x97a97e['message']||_0x97a97e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x16bbaa['json']();},async 'updateRoleDefinition'(_0x5e5ce0,_0x2f52fb){const _0x1de4f1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5e5ce0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f52fb)});if(!_0x1de4f1['ok']){const _0x1a3fec=await _0x1de4f1['json']()['catch'](()=>({'message':_0x1de4f1['statusText']}));throw new Error(_0x1a3fec['message']||_0x1a3fec['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1de4f1['json']();},async 'deleteRoleDefinition'(_0xafa4c4){const _0x35a042=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xafa4c4),{'method':'DELETE'});if(!_0x35a042['ok']){const _0x16627e=await _0x35a042['json']()['catch'](()=>({'message':_0x35a042['statusText']}));throw new Error(_0x16627e['message']||_0x16627e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x35a042['json']();},async 'getAvailablePermissions'(){const _0x32fd4e=await fetch(API_BASE+'/roles/available-permissions');if(!_0x32fd4e['ok']){const _0x1bc55f=await _0x32fd4e['json']()['catch'](()=>({'message':_0x32fd4e['statusText']}));throw new Error(_0x1bc55f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x32fd4e['json']();},async 'getGitProviderAllowedTeams'(_0x12771c){const _0x56046a=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x12771c)+'/allowed-teams');if(!_0x56046a['ok']){const _0x14fe8a=await _0x56046a['json']()['catch'](()=>({'message':_0x56046a['statusText']}));throw new Error(_0x14fe8a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x56046a['json']();},async 'setGitProviderAllowedTeams'(_0xcce4f2,_0x25cf82){const _0x1246dd=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xcce4f2)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x25cf82})});if(!_0x1246dd['ok']){const _0x248500=await _0x1246dd['json']()['catch'](()=>({'message':_0x1246dd['statusText']}));throw new Error(_0x248500['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1246dd['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 _0x3183aa=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4eacd5=>{_0x4eacd5['el']['style']['bottom']=_0x3183aa+'px';const _0x500972=_0x4eacd5['el']['offsetHeight']||toastState['defaultHeight'];_0x3183aa+=_0x500972+toastState['gap'];});});}function removeToastById(_0x13fdbc){const _0x2e846b=toastState['toasts']['findIndex'](_0x57d18d=>_0x57d18d['id']===_0x13fdbc);if(_0x2e846b===-0x1)return;const _0x906674=toastState['toasts'][_0x2e846b];if(_0x906674['timeoutId'])clearTimeout(_0x906674['timeoutId']);_0x906674['el']['classList']['remove']('show'),setTimeout(()=>_0x906674['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2e846b,0x1),repositionAllToasts();}function registerToast(_0x5a6fb9){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5a6fb9),repositionAllToasts(),_0x5a6fb9['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x34468d){const _0x8397a1=new Date(_0x34468d),_0x1ad4f6=new Date(),_0x11469f=_0x1ad4f6-_0x8397a1,_0x2b50ba=Math['floor'](_0x11469f/0x3e8),_0x4cfb2f=Math['floor'](_0x2b50ba/0x3c),_0x2630b4=Math['floor'](_0x4cfb2f/0x3c),_0x5951ff=Math['floor'](_0x2630b4/0x18);if(_0x2b50ba<0x3c)return'now';if(_0x4cfb2f<0x3c)return _0x4cfb2f+'m\x20ago';if(_0x2630b4<0x18)return _0x2630b4+'h\x20ago';return _0x5951ff+'d\x20ago';},'getStatusIcon'(_0x2a0741){switch(_0x2a0741){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3625a7){switch(_0x3625a7){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'(_0x48b529,_0x57254a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x174380={};_0x174380['text/plain']=new Blob([_0x48b529],{'type':'text/plain'});_0x57254a&&(_0x174380['text/html']=new Blob([_0x57254a],{'type':'text/html'}));const _0x145db2=new ClipboardItem(_0x174380);return await navigator['clipboard']['write']([_0x145db2]),!![];}catch(_0x2e32aa){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2e32aa);}try{const _0x514204=_0x5ad832=>{_0x5ad832['preventDefault'](),_0x5ad832['clipboardData']['setData']('text/plain',_0x48b529),_0x57254a&&_0x5ad832['clipboardData']['setData']('text/html',_0x57254a);};document['addEventListener']('copy',_0x514204);const _0x4da9f2=document['execCommand']('copy');document['removeEventListener']('copy',_0x514204);if(_0x4da9f2)return!![];}catch(_0xecd51b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xecd51b);}try{const _0x257735=document['createElement']('textarea');_0x257735['value']=_0x48b529,_0x257735['style']['position']='fixed',_0x257735['style']['opacity']='0',_0x257735['style']['pointerEvents']='none',document['body']['appendChild'](_0x257735),_0x257735['select']();const _0x42089f=document['execCommand']('copy');return document['body']['removeChild'](_0x257735),_0x42089f;}catch(_0x862d40){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x862d40),![];}},'showToast'(_0x1bb8af,_0x4e6502='info'){const _0x122fce=getNextToastId(),_0x46a58a=document['createElement']('div');_0x46a58a['className']='toast\x20toast-'+_0x4e6502,_0x46a58a['textContent']=_0x1bb8af,_0x46a58a['dataset']['toastId']=_0x122fce,document['body']['appendChild'](_0x46a58a);const _0x3bf6e5=_0x4e6502==='error'?0x2710:0xbb8,_0x1adebd=setTimeout(()=>{removeToastById(_0x122fce);},_0x3bf6e5),_0x27bc8e={'id':_0x122fce,'el':_0x46a58a,'timeoutId':_0x1adebd};return registerToast(_0x27bc8e),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x46a58a['classList']['add']('show');});}),_0x122fce;},'showError'(_0x4e46d8){console['error'](_0x4e46d8);const _0x2cf8e0=typeof _0x4e46d8==='string'?_0x4e46d8:_0x4e46d8['message']||'An\x20error\x20occurred';this['showToast'](_0x2cf8e0,'error');},'showSuccess'(_0x1f7e9a){this['showToast'](_0x1f7e9a,'success');},'capitalize'(_0x131524){if(!_0x131524)return'';return _0x131524['charAt'](0x0)['toUpperCase']()+_0x131524['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4ddbae){if(_0x4ddbae===null||_0x4ddbae===undefined)return'';return String(_0x4ddbae)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x4adf56){if(_0x4adf56===null||_0x4adf56===undefined)return'';let _0x36306a=this['escapeHtml'](_0x4adf56);const _0x34085f={'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'},_0x3d5114={'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 _0x2aa77b=0x0;return _0x36306a=_0x36306a['replace'](/\x1b\[([0-9;]*)m/g,(_0x4babaa,_0x1773e0)=>{if(!_0x1773e0||_0x1773e0==='0'){const _0x341baa='</span>'['repeat'](_0x2aa77b);return _0x2aa77b=0x0,_0x341baa;}const _0x20a032=_0x1773e0['split'](';'),_0x4cf8e9=[];for(const _0x232840 of _0x20a032){if(_0x232840==='1')_0x4cf8e9['push']('font-weight:bold');else{if(_0x232840==='2')_0x4cf8e9['push']('opacity:0.7');else{if(_0x232840==='3')_0x4cf8e9['push']('font-style:italic');else{if(_0x232840==='4')_0x4cf8e9['push']('text-decoration:underline');else{if(_0x232840==='9')_0x4cf8e9['push']('text-decoration:line-through');else{if(_0x34085f[_0x232840])_0x4cf8e9['push']('color:'+_0x34085f[_0x232840]);else{if(_0x3d5114[_0x232840])_0x4cf8e9['push']('background-color:'+_0x3d5114[_0x232840]);}}}}}}}if(_0x4cf8e9['length']>0x0)return _0x2aa77b++,'<span\x20style=\x22'+_0x4cf8e9['join'](';')+'\x22>';return'';}),_0x36306a+='</span>'['repeat'](_0x2aa77b),_0x36306a=_0x36306a['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3fa7b3,_0x113790)=>{if(!_0x113790||_0x113790==='0')return'';const _0x4cea87=_0x113790['split'](';'),_0x467f9c=[];for(const _0x145c82 of _0x4cea87){if(_0x145c82==='1')_0x467f9c['push']('font-weight:bold');else{if(_0x34085f[_0x145c82])_0x467f9c['push']('color:'+_0x34085f[_0x145c82]);else{if(_0x3d5114[_0x145c82])_0x467f9c['push']('background-color:'+_0x3d5114[_0x145c82]);}}}if(_0x467f9c['length']>0x0)return'<span\x20style=\x22'+_0x467f9c['join'](';')+'\x22>';return'';}),_0x36306a;},'showModal'({title:_0x3e4972,content:_0x84477,buttons:buttons=[]}){const _0x50e881='\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'](_0x3e4972)+'</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'+_0x84477+'\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']((_0x1d5099,_0x410acf)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1d5099['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x410acf+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1d5099['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',_0x4ccba7=document['createElement']('div');_0x4ccba7['id']='utils-modal',_0x4ccba7['className']='modal',_0x4ccba7['innerHTML']=_0x50e881,document['body']['appendChild'](_0x4ccba7);const _0x3b4a74=document['getElementById']('utils-modal-close');_0x3b4a74&&_0x3b4a74['addEventListener']('click',()=>this['hideModal']());const _0x440159=_0x4ccba7['querySelectorAll']('[data-btn-index]');_0x440159['forEach'](_0x214006=>{const _0x16235e=parseInt(_0x214006['dataset']['btnIndex']);buttons[_0x16235e]?.['onClick']&&_0x214006['addEventListener']('click',buttons[_0x16235e]['onClick']);});const _0x37b449=document['getElementById']('utils-modal-overlay');_0x37b449&&_0x37b449['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x121e26=document['getElementById']('utils-modal');_0x121e26&&_0x121e26['remove']();},'parseKeyValuePairs'(_0x2f4eca){const _0xe9b13={};if(!_0x2f4eca)return _0xe9b13;return _0x2f4eca['split'](/\r?\n/)['map'](_0x860af6=>_0x860af6['trim']())['filter'](Boolean)['forEach'](_0x5955f9=>{const _0x46d0d3=_0x5955f9['indexOf']('=');if(_0x46d0d3>0x0){const _0x3a7df1=_0x5955f9['slice'](0x0,_0x46d0d3)['trim'](),_0x33d80c=_0x5955f9['slice'](_0x46d0d3+0x1)['trim']();if(_0x3a7df1)_0xe9b13[_0x3a7df1]=_0x33d80c;}}),_0xe9b13;},'debounce'(_0xa8a237,_0x172632=0xfa){let _0x476e6b=null;return(..._0x4bca4a)=>{clearTimeout(_0x476e6b),_0x476e6b=setTimeout(()=>_0xa8a237['apply'](this,_0x4bca4a),_0x172632);};},'formatTimestamp'(_0x557b58){if(!_0x557b58)return'N/A';const _0x4678c0=new Date(_0x557b58);return _0x4678c0['toLocaleDateString']()+'\x20'+_0x4678c0['toLocaleTimeString']();},'getQueryParams'(){const _0x3f165d=new URLSearchParams(window['location']['search']),_0x2d96c6={};for(const [_0x136492,_0x19c80b]of _0x3f165d){_0x2d96c6[_0x136492]=_0x19c80b;}return _0x2d96c6;},'formatDuration'(_0x16e257,_0x4f6656){if(!_0x16e257)return'N/A';const _0x2bf347=new Date(_0x16e257),_0x48d837=_0x4f6656?new Date(_0x4f6656):new Date(),_0x4e9acf=_0x48d837-_0x2bf347;if(_0x4e9acf<0x0)return'0s';const _0x1176aa=Math['floor'](_0x4e9acf/0x3e8),_0x3ecfe1=Math['floor'](_0x1176aa/0x3c),_0x46258f=Math['floor'](_0x3ecfe1/0x3c),_0x54cd36=Math['floor'](_0x46258f/0x18);if(_0x1176aa<0x3c)return _0x1176aa+'s';if(_0x3ecfe1<0x3c)return _0x3ecfe1+'m\x20'+_0x1176aa%0x3c+'s';if(_0x46258f<0x18)return _0x46258f+'h\x20'+_0x3ecfe1%0x3c+'m\x20'+_0x1176aa%0x3c+'s';return _0x54cd36+'d\x20'+_0x46258f%0x18+'h\x20'+_0x3ecfe1%0x3c+'m';},'renderMarkdown'(_0x15c8d3,_0x176142={}){if(!_0x15c8d3)return'';_0x15c8d3=this['rewriteAttachmentLinks'](_0x15c8d3,_0x176142),_0x15c8d3=this['rewriteColorSyntax'](_0x15c8d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x3432b3=new marked['Renderer'](),_0x9d0ee0=_0x3432b3['code']['bind'](_0x3432b3);_0x3432b3['code']=function(_0x2a5dd0,_0x54fd29){const _0x58da04=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x58da04&&_0x54fd29)try{const _0x345f90=_0x58da04['getLanguage'](_0x54fd29)?_0x54fd29:'plaintext',_0x223118=_0x58da04['highlight'](_0x2a5dd0,{'language':_0x345f90})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x54fd29+'\x22>'+_0x223118+'</code></pre>';}catch(_0x9a15c4){console['error']('Syntax\x20highlighting\x20error:',_0x9a15c4);}return _0x9d0ee0(_0x2a5dd0,_0x54fd29);};try{return marked['parse'](_0x15c8d3,{'renderer':_0x3432b3});}catch(_0x5048fd){return console['error']('Markdown\x20parsing\x20error:',_0x5048fd),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);}},'rewriteAttachmentLinks'(_0x2dc237,_0x2121fc={}){const _0x1feac1=typeof _0x2121fc['resolveAttachmentUrl']==='function'?_0x2121fc['resolveAttachmentUrl']:_0x2121fc['taskId']?_0x533ca4=>API_BASE+'/tasks/'+_0x2121fc['taskId']+'/attachments/'+encodeURIComponent(_0x533ca4):null;if(!_0x1feac1)return _0x2dc237;return String(_0x2dc237)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x12b168,_0x848fa5)=>{const _0x46381c=String(_0x848fa5||'')['trim']();if(!_0x46381c)return _0x12b168;let _0x118860=_0x46381c;try{_0x118860=decodeURIComponent(_0x46381c);}catch{}const _0x10770b=_0x1feac1(_0x118860);if(!_0x10770b)return _0x12b168;return']('+_0x10770b+')';});},'rewriteColorSyntax'(_0x385a3e){if(!_0x385a3e)return _0x385a3e;return String(_0x385a3e)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x163de2,_0x45df50,_0x26f753)=>{const _0x3374b9=this['rewriteColorSyntax'](_0x26f753);return'<span\x20style=\x22color:\x20'+_0x45df50+'\x22>'+_0x3374b9+'</span>';});},'renderMarkdownFallback'(_0x2e3918,_0x132ceb={}){if(!_0x2e3918)return'';_0x2e3918=_0x2e3918['replace'](/\r\n/g,'\x0a'),_0x2e3918=_0x2e3918['replace'](/\r/g,'\x0a'),_0x2e3918=this['rewriteAttachmentLinks'](_0x2e3918,_0x132ceb);let _0x3f2630=this['escapeHtml'](_0x2e3918);return _0x3f2630=_0x3f2630['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3f2630=_0x3f2630['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3f2630=_0x3f2630['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3f2630=_0x3f2630['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3f2630=_0x3f2630['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3f2630=_0x3f2630['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3f2630=_0x3f2630['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3f2630=_0x3f2630['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3f2630=_0x3f2630['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3f2630=_0x3f2630['replace'](/\n\n/g,'</p><p>'),_0x3f2630=_0x3f2630['replace'](/\n/g,'<br>'),'<p>'+_0x3f2630+'</p>';}};export class CustomSelect{constructor(_0x4e1680,_0x577f5c={}){this['nativeSelect']=_0x4e1680,this['options']=_0x577f5c,this['isOpen']=![],this['selectedValue']=_0x4e1680['value']||'',this['searchable']=_0x577f5c['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2bbb66=document['createElement']('div');_0x2bbb66['className']='custom-select';const _0x3a9980=document['createElement']('div');_0x3a9980['className']='custom-select-trigger',_0x3a9980['setAttribute']('tabindex','0'),_0x3a9980['setAttribute']('role','button'),_0x3a9980['setAttribute']('aria-haspopup','listbox');const _0x38bfbb=document['createElement']('span');_0x38bfbb['className']='custom-select-trigger-text';const _0x194151=document['createElement']('span');_0x194151['className']='custom-select-arrow',_0x194151['textContent']='▼',_0x3a9980['appendChild'](_0x38bfbb),_0x3a9980['appendChild'](_0x194151);const _0x40bd2a=document['createElement']('div');_0x40bd2a['className']='custom-select-dropdown',_0x40bd2a['setAttribute']('role','listbox');if(this['searchable']){const _0x5166a6=document['createElement']('div');_0x5166a6['className']='custom-select-search';const _0x451900=document['createElement']('input');_0x451900['type']='text',_0x451900['className']='custom-select-search-input',_0x451900['placeholder']='Type\x20to\x20search...',_0x451900['setAttribute']('aria-label','Search\x20options'),_0x451900['addEventListener']('input',_0xb6a9e4=>{this['searchQuery']=_0xb6a9e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x451900['addEventListener']('keydown',_0x2cc687=>{if(_0x2cc687['key']==='Escape')_0x2cc687['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2cc687['key']==='Enter'){_0x2cc687['preventDefault'](),_0x2cc687['stopPropagation']();const _0x1ecb33=_0x40bd2a['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1ecb33){const _0x1b643e=_0x1ecb33['getAttribute']('data-value');this['select'](_0x1b643e);}}}}),_0x5166a6['appendChild'](_0x451900),_0x40bd2a['appendChild'](_0x5166a6),this['searchInput']=_0x451900;}const _0x280130=document['createElement']('div');_0x280130['className']='custom-select-options',_0x40bd2a['appendChild'](_0x280130),_0x2bbb66['appendChild'](_0x3a9980),_0x2bbb66['appendChild'](_0x40bd2a),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2bbb66,this['nativeSelect']),this['wrapper']=_0x2bbb66,this['trigger']=_0x3a9980,this['triggerText']=_0x38bfbb,this['dropdown']=_0x40bd2a,this['optionsContainer']=_0x280130,_0x3a9980['addEventListener']('click',()=>this['toggle']()),_0x3a9980['addEventListener']('keydown',_0x2c8e57=>this['handleKeydown'](_0x2c8e57)),document['addEventListener']('click',_0x22075b=>{!_0x2bbb66['contains'](_0x22075b['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2f2f0b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2f2f0b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411a58=new MutationObserver(()=>{this['updateDisabledState']();});_0x411a58['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2b06a2=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2b06a2['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4bc2ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4bc2ab),this['trigger']['setAttribute']('aria-disabled',_0x4bc2ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4bc2ab?'-1':'0'),_0x4bc2ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x384c94=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x388a07=_0x384c94['filter'](_0x1d61b6=>!_0x1d61b6['disabled']&&!_0x1d61b6['hidden']);_0x384c94['forEach']((_0x26a817,_0x2c6f80)=>{const _0x15d2e9=document['createElement']('div');_0x15d2e9['className']='custom-select-option',_0x15d2e9['textContent']=_0x26a817['textContent'],_0x15d2e9['setAttribute']('data-value',_0x26a817['value']),_0x15d2e9['setAttribute']('data-index',_0x2c6f80),_0x15d2e9['setAttribute']('role','option'),_0x26a817['disabled']?_0x15d2e9['classList']['add']('disabled'):_0x15d2e9['addEventListener']('click',()=>this['select'](_0x26a817['value'])),_0x26a817['value']===this['selectedValue']&&_0x15d2e9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x15d2e9),this['allOptions']['push']({'element':_0x15d2e9,'text':_0x26a817['textContent']['toLowerCase'](),'value':_0x26a817['value'],'disabled':_0x26a817['disabled']});});if(this['searchable']&&this['searchInput']){const _0x43c6e4=this['searchInput']['parentElement'];_0x388a07['length']>0x3?_0x43c6e4['style']['display']='':_0x43c6e4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x164dcc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2aeccf=>{if(!_0x164dcc||_0x2aeccf['disabled'])_0x2aeccf['element']['style']['display']='';else{const _0x2e37c1=_0x2aeccf['text']['includes'](_0x164dcc);_0x2aeccf['element']['style']['display']=_0x2e37c1?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2feb4e){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2feb4e,this['nativeSelect']['value']=_0x2feb4e;const _0x3ffe85=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3ffe85),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4d96f4=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4d96f4&&(this['triggerText']['textContent']=_0x4d96f4['textContent'],_0x4d96f4['disabled']||_0x4d96f4['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x543630=>{_0x543630['getAttribute']('data-value')===this['selectedValue']?_0x543630['classList']['add']('selected'):_0x543630['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 _0x3f92dc=window['getComputedStyle'](this['dropdown']);if(_0x3f92dc['position']==='fixed'){const _0x453145=this['trigger']['getBoundingClientRect'](),_0x14bc01=parseInt(_0x3f92dc['maxHeight'])||0xc8,_0x4d0215=window['innerHeight'],_0x5214ba=_0x4d0215-_0x453145['bottom'],_0x186c7c=_0x453145['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3a7e1b;_0x5214ba<_0x14bc01&&_0x186c7c>_0x5214ba?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4d0215-_0x453145['top']+'px',_0x3a7e1b=Math['min'](_0x14bc01,_0x186c7c-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x453145['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3a7e1b=Math['min'](_0x14bc01,_0x5214ba-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px');if(this['optionsContainer']){let _0x1ac193=_0x3a7e1b;if(this['searchInput']){const _0x5127a9=this['searchInput']['parentElement'];_0x5127a9&&(_0x1ac193-=_0x5127a9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ac193)+'px';}this['dropdown']['style']['left']=_0x453145['left']+'px',this['dropdown']['style']['width']=_0x453145['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52687e=this['searchInput']['parentElement'];_0x52687e&&_0x52687e['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'](_0x2b715d){if(this['nativeSelect']['disabled'])return;if(_0x2b715d['key']==='Enter'||_0x2b715d['key']==='\x20')_0x2b715d['preventDefault'](),this['toggle']();else _0x2b715d['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3d951a='\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',_0x3d951a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4eb1f3=document['getElementById']('confirm-dialog-close'),_0x46a5c5=document['getElementById']('confirm-dialog-cancel'),_0x1f5bff=document['getElementById']('confirm-dialog-confirm'),_0x3f00a5=this['_modal']['querySelector']('.modal-overlay');_0x4eb1f3['addEventListener']('click',()=>this['_resolve'](![])),_0x46a5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1f5bff['addEventListener']('click',()=>this['_resolve'](!![])),_0x3f00a5['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x51935d=>{if(_0x51935d['key']==='Escape')_0x51935d['preventDefault'](),this['_resolve'](![]);else _0x51935d['key']==='Enter'&&(_0x51935d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x22a056,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x464525=>{this['_resolvePromise']=_0x464525,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x22a056;const _0x4b97f4=document['getElementById']('confirm-dialog-cancel'),_0x39419b=document['getElementById']('confirm-dialog-confirm');_0x4b97f4['textContent']=cancelText,_0x39419b['textContent']=confirmText,_0x39419b['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39419b['focus']();});},'_resolve'(_0x23b93a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x23b93a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2f392a,_0x4b26c3={}){this['container']=_0x2f392a,this['options']={'placeholder':_0x4b26c3['placeholder']||'Type\x20to\x20search...','maxItems':_0x4b26c3['maxItems']||0x64,'loadItems':_0x4b26c3['loadItems']||(async()=>[]),'renderItem':_0x4b26c3['renderItem']||(_0x5dd517=>({'primary':String(_0x5dd517),'secondary':''})),'onSelect':_0x4b26c3['onSelect']||(()=>{}),'filterItems':_0x4b26c3['filterItems']||null,'getItemValue':_0x4b26c3['getItemValue']||(_0x52d228=>_0x52d228),'sortItems':_0x4b26c3['sortItems']||null,'debounceMs':_0x4b26c3['debounceMs']||0xc8,'minCharsForSearch':_0x4b26c3['minCharsForSearch']||0x0,'emptyMessage':_0x4b26c3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4b26c3['loadingMessage']||'Loading...','preload':_0x4b26c3['preload']!==![],'searchMode':_0x4b26c3['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',_0xfe80e6=>this['onBlur'](_0xfe80e6)),this['input']['addEventListener']('input',_0x48313c=>this['onInput'](_0x48313c)),this['input']['addEventListener']('keydown',_0x4c873e=>this['onKeydown'](_0x4c873e)),this['clearBtn']['addEventListener']('mousedown',_0x4d8b37=>{_0x4d8b37['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x214268=>{_0x214268['preventDefault']();}),document['addEventListener']('click',_0x9c76b3=>{!this['wrapper']['contains'](_0x9c76b3['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(_0x30a6d0){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x30a6d0);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x14eb04){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5ec348){const _0x33cd73=_0x5ec348['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x33cd73);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x33cd73):this['loadAndShow'](_0x33cd73);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xdcffd2){switch(_0xdcffd2['key']){case'ArrowDown':_0xdcffd2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xdcffd2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xdcffd2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xdcffd2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4d0136){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5a1afb=this['selectedIndex']+_0x4d0136;if(_0x5a1afb>=0x0&&_0x5a1afb<this['filteredItems']['length']){this['selectedIndex']=_0x5a1afb,this['updateSelectionHighlight']();const _0x188575=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x188575[this['selectedIndex']]&&_0x188575[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x3885ee=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3885ee['forEach']((_0x27e972,_0x284777)=>{_0x27e972['classList']['toggle']('keyboard-selected',_0x284777===this['selectedIndex']);});}async['loadAndShow'](_0x14cd58){this['showLoading']();try{const _0x253fbc=await this['options']['loadItems'](_0x14cd58);if(this['options']['searchMode']==='server'){let _0x4e4fe2=_0x253fbc;this['options']['sortItems']&&(_0x4e4fe2=this['options']['sortItems']([..._0x253fbc]));this['filteredItems']=_0x4e4fe2;const _0x474e67=this['filteredItems']['length']>=this['options']['maxItems'];_0x474e67&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x474e67),this['open']();}else this['allItems']=_0x253fbc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14cd58);}catch(_0x4fb455){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4fb455),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x20b02a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x20b02a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5c8571=this['filteredItems']['length']>=this['options']['maxItems'];_0x5c8571&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5c8571),this['open']();}['renderItems'](_0x160d13){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']((_0x32822e,_0x3dfc72)=>{const _0x3dbaaf=document['createElement']('div');_0x3dbaaf['className']='autocomplete-select-item',_0x3dbaaf['setAttribute']('role','option'),_0x3dbaaf['setAttribute']('data-index',_0x3dfc72);const _0x3559fa=this['options']['renderItem'](_0x32822e);let _0x4e5831='';_0x3559fa['icon']&&(_0x4e5831='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x3559fa['iconClass']||'')+'\x22>'+_0x3559fa['icon']+'</span>'),_0x3dbaaf['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4e5831+'\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'](_0x3559fa['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3559fa['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x3559fa['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3dbaaf['addEventListener']('click',()=>{this['selectItem'](_0x32822e);}),_0x3dbaaf['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3dfc72,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3dbaaf);}),_0x160d13?(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'](_0x133b4b){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x133b4b)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x44ee04){this['selectedItem']=_0x44ee04;const _0x43e963=this['options']['renderItem'](_0x44ee04);this['input']['value']=_0x43e963['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x44ee04);}['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'](_0x8fb260){if(_0x8fb260){this['selectedItem']=_0x8fb260;const _0x5e7e19=this['options']['renderItem'](_0x8fb260);this['input']['value']=_0x5e7e19['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x146164){this['allItems']=_0x146164,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'](_0xe21dac){this['input']['placeholder']=_0xe21dac;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x106fb9=null){const _0x50c081=document['getElementById']('admin-menu-container'),_0x179e30=document['getElementById']('admin-menu-btn'),_0x12841a=document['getElementById']('admin-menu');if(!_0x50c081||!_0x179e30||!_0x12841a)return;try{!_0x106fb9&&(_0x106fb9=await API['getCurrentUser']());if(_0x106fb9){const _0x4ef41a=_0x106fb9['hasAllPermissions']||_0x106fb9['hasEnvironmentsManage']||_0x106fb9['canCreateUsers']||_0x106fb9['canManageTeams']||_0x106fb9['hasEnvironmentBindings'];if(!_0x4ef41a)return;_0x50c081['hidden']=![];if(!_0x106fb9['hasAllPermissions']){const _0x49432c=_0x12841a['querySelectorAll']('.admin-menu-item');_0x49432c['forEach'](_0x154f1e=>{const _0xf6c5a2=_0x154f1e['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c5a2==='Users'&&!_0x106fb9['canCreateUsers']&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Skills'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Settings'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Health'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Git\x20History'&&(_0x154f1e['hidden']=!![]);});}_0x179e30['addEventListener']('click',_0x3061fc=>{_0x3061fc['stopPropagation']();const _0x3d003f=document['getElementById']('actions-menu');if(_0x3d003f)_0x3d003f['hidden']=!![];_0x12841a['hidden']=!_0x12841a['hidden'];}),document['addEventListener']('click',_0xc0d334=>{!_0x12841a['hidden']&&!_0x179e30['contains'](_0xc0d334['target'])&&!_0x12841a['contains'](_0xc0d334['target'])&&(_0x12841a['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b83c2=>{_0x4b83c2['key']==='Escape'&&!_0x12841a['hidden']&&(_0x12841a['hidden']=!![]);});const _0x3c3888=document['getElementById']('server-health-btn');_0x3c3888&&_0x3c3888['addEventListener']('click',async()=>{_0x12841a['hidden']=!![];const {openServerHealthModal:_0x1d9246}=await import('./server-health.js');_0x1d9246();});}}catch(_0x490402){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x490402['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|