@profoundlogic/coderflow-server 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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.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.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/index.html +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _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 _0x66f208=window['location']['pathname'],_0x5f0388=_0x66f208['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5f0388)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5f0388[0x1]),_0x5f0388[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x300cdc={}){const _0x310474=new URLSearchParams();_0x300cdc['userId']&&_0x310474['set']('userId',String(_0x300cdc['userId']));_0x300cdc['automation']&&_0x310474['set']('automation',String(_0x300cdc['automation']));const _0x679974=API_BASE+'/tasks/stats'+(_0x310474['toString']()?'?'+_0x310474['toString']():''),_0x1890d3=await fetch(_0x679974);if(!_0x1890d3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1890d3['statusText']);return await _0x1890d3['json']();},async 'getTasks'(_0x2828de={}){const _0x445ef6=new URLSearchParams();_0x2828de['status']&&_0x445ef6['set']('status',String(_0x2828de['status']));_0x2828de['environment']&&_0x445ef6['set']('environment',String(_0x2828de['environment']));_0x2828de['automation']&&_0x445ef6['set']('automation',String(_0x2828de['automation']));if(_0x2828de['include']){const _0x1d9ac7=Array['isArray'](_0x2828de['include'])?_0x2828de['include']['join'](','):String(_0x2828de['include']);_0x1d9ac7&&_0x445ef6['set']('include',_0x1d9ac7);}_0x2828de['filter']&&_0x445ef6['set']('filter',String(_0x2828de['filter']));_0x2828de['page']&&_0x445ef6['set']('page',String(_0x2828de['page']));_0x2828de['limit']&&_0x445ef6['set']('limit',String(_0x2828de['limit']));_0x2828de['userId']&&_0x445ef6['set']('userId',String(_0x2828de['userId']));_0x2828de['search']&&_0x445ef6['set']('search',String(_0x2828de['search']));_0x2828de['includeChildTasks']&&_0x445ef6['set']('includeChildTasks','true');const _0x4cdad6=API_BASE+'/tasks'+(_0x445ef6['toString']()?'?'+_0x445ef6['toString']():''),_0x47955a=await fetch(_0x4cdad6);if(!_0x47955a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x47955a['statusText']);return await _0x47955a['json']();},async 'getAutomations'(_0x2bb3d5={}){const _0x21507c=new URLSearchParams();_0x2bb3d5['environment']&&_0x21507c['set']('environment',String(_0x2bb3d5['environment']));const _0x1652ca=await fetch(API_BASE+'/api/automations'+(_0x21507c['toString']()?'?'+_0x21507c['toString']():''));if(!_0x1652ca['ok']){const _0x555bbd=await _0x1652ca['json']()['catch'](()=>({}));throw new Error(_0x555bbd['message']||_0x555bbd['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1652ca['statusText']);}return await _0x1652ca['json']();},async 'getAutomation'(_0xf3a9dd){const _0x502c79=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf3a9dd));if(!_0x502c79['ok']){const _0x5d009a=await _0x502c79['json']()['catch'](()=>({}));throw new Error(_0x5d009a['message']||_0x5d009a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x502c79['statusText']);}return await _0x502c79['json']();},async 'createAutomation'(_0x18e88a){const _0x5496be=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18e88a||{})});if(!_0x5496be['ok']){const _0x403bb6=await _0x5496be['json']()['catch'](()=>({}));throw new Error(_0x403bb6['message']||_0x403bb6['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x5496be['statusText']);}return await _0x5496be['json']();},async 'updateAutomation'(_0x2de20d,_0x25e25b){const _0x512683=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2de20d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25e25b||{})});if(!_0x512683['ok']){const _0x2f2962=await _0x512683['json']()['catch'](()=>({}));throw new Error(_0x2f2962['message']||_0x2f2962['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x512683['statusText']);}return await _0x512683['json']();},async 'deleteAutomation'(_0x12a0f6){const _0x1e941e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x12a0f6),{'method':'DELETE'});if(!_0x1e941e['ok']){const _0x5de5d0=await _0x1e941e['json']()['catch'](()=>({}));throw new Error(_0x5de5d0['message']||_0x5de5d0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1e941e['statusText']);}return await _0x1e941e['json']();},async 'triggerAutomation'(_0x352b37){const _0x527394=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x352b37)+'/trigger',{'method':'POST'});if(!_0x527394['ok']){const _0x28107d=await _0x527394['json']()['catch'](()=>({}));throw new Error(_0x28107d['message']||_0x28107d['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x527394['statusText']);}return await _0x527394['json']();},async 'setAutomationEnabled'(_0x4f1777,_0xe9e68f){const _0x3d1cc6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f1777)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe9e68f})});if(!_0x3d1cc6['ok']){const _0x324506=await _0x3d1cc6['json']()['catch'](()=>({}));throw new Error(_0x324506['message']||_0x324506['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3d1cc6['statusText']);}return await _0x3d1cc6['json']();},async 'getAutomationHistory'(_0x55f6c7,_0x1199e8=0x32){const _0x444c62=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55f6c7)+'/history?limit='+encodeURIComponent(String(_0x1199e8)));if(!_0x444c62['ok']){const _0x57398c=await _0x444c62['json']()['catch'](()=>({}));throw new Error(_0x57398c['message']||_0x57398c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x444c62['statusText']);}return await _0x444c62['json']();},async 'getTask'(_0x2b0381,_0x5b32c1={}){const _0x101122=new URLSearchParams();if(_0x5b32c1['include']){const _0xeb321f=Array['isArray'](_0x5b32c1['include'])?_0x5b32c1['include']['join'](','):String(_0x5b32c1['include']);if(_0xeb321f)_0x101122['set']('include',_0xeb321f);}const _0x516dec=await fetch(API_BASE+'/tasks/'+_0x2b0381+(_0x101122['toString']()?'?'+_0x101122['toString']():''));if(!_0x516dec['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x516dec['statusText']);return await _0x516dec['json']();},async 'getTaskResults'(_0x452e0b){const _0xe611da=await fetch(API_BASE+'/tasks/'+_0x452e0b+'/results');if(!_0xe611da['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xe611da['statusText']);return await _0xe611da['json']();},async 'getTaskPatches'(_0x56fc51){const _0x2bfb5f=await fetch(API_BASE+'/tasks/'+_0x56fc51+'/patches');if(!_0x2bfb5f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2bfb5f['statusText']);return await _0x2bfb5f['json']();},async 'getTaskAttachments'(_0x4c3dd0){const _0x44ccd5=await fetch(API_BASE+'/tasks/'+_0x4c3dd0+'/attachments');if(!_0x44ccd5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x44ccd5['statusText']);return await _0x44ccd5['json']();},async 'uploadAttachments'(_0x5ec62f,_0x30fcb0){const _0x109c38=new FormData();for(const _0x47d48e of _0x30fcb0){_0x109c38['append']('attachments',_0x47d48e);}const _0x1e2c3c=await fetch(API_BASE+'/tasks/'+_0x5ec62f+'/attachments',{'method':'POST','body':_0x109c38});if(!_0x1e2c3c['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1e2c3c['statusText']);return await _0x1e2c3c['json']();},async 'isAINameGenerationAvailable'(){try{const _0xdb3886=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0xdb3886['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0xdb3886['json']();}catch(_0x4c117a){return{'available':![],'reason':_0x4c117a['message']};}},async 'generateTaskName'(_0x2d28e3){try{const _0x5782b3=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d28e3})});return await _0x5782b3['json']();}catch(_0x102119){return{'success':![],'error':_0x102119['message']};}},async 'createTask'(_0x571ed5){let _0x5d78ad,_0x215847={};if(_0x571ed5['files']&&_0x571ed5['files']['length']>0x0){const _0xe5071f=new FormData();for(const [_0x44bb70,_0x462e4c]of Object['entries'](_0x571ed5)){if(_0x44bb70!=='files'){if(_0x462e4c==null)continue;typeof _0x462e4c==='object'?_0xe5071f['append'](_0x44bb70,JSON['stringify'](_0x462e4c)):_0xe5071f['append'](_0x44bb70,String(_0x462e4c));}}for(const _0x1ca11a of _0x571ed5['files']){_0xe5071f['append']('attachments',_0x1ca11a);}_0x5d78ad=_0xe5071f;}else _0x215847['Content-Type']='application/json',_0x5d78ad=JSON['stringify'](_0x571ed5);const _0x3cb870=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x215847,'body':_0x5d78ad});if(!_0x3cb870['ok']){const _0x45bd9a=await _0x3cb870['json'](),_0x461942=new Error(_0x45bd9a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3cb870['statusText']),{message:_0x21d63f,..._0x55003f}=_0x45bd9a;Object['assign'](_0x461942,_0x55003f);throw _0x461942;}return await _0x3cb870['json']();},async 'createTestTask'(_0x4b67e6){const _0x12a7a6=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b67e6)});if(!_0x12a7a6['ok']){const _0x22b448=await _0x12a7a6['json']();throw new Error(_0x22b448['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x12a7a6['statusText']);}return await _0x12a7a6['json']();},async 'createEphemeralTest'(_0x437cd6){const _0x4ba7a1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x437cd6)});if(!_0x4ba7a1['ok']){const _0xbb8621=await _0x4ba7a1['json']();throw new Error(_0xbb8621['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4ba7a1['statusText']);}return await _0x4ba7a1['json']();},async 'createDeployTask'(_0x4b7f99){const _0x29cc90=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b7f99)});if(!_0x29cc90['ok']){const _0x8c47b5=await _0x29cc90['json']();throw new Error(_0x8c47b5['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x29cc90['statusText']);}return await _0x29cc90['json']();},async 'getEnvironments'(){const _0x186cfa=await fetch(API_BASE+'/environments');if(!_0x186cfa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x186cfa['statusText']);return await _0x186cfa['json']();},async 'getEnvironment'(_0x4c3def){const _0x34d0fb=await fetch(API_BASE+'/environments/'+_0x4c3def);if(!_0x34d0fb['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x34d0fb['statusText']);return await _0x34d0fb['json']();},async 'getEnvironmentRepoHistory'(_0xd265c5,_0x1e097b,_0x14016c={}){if(!_0xd265c5||!_0x1e097b)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5b2eeb=new URLSearchParams();if(_0x14016c['limit'])_0x5b2eeb['set']('limit',String(_0x14016c['limit']));if(_0x14016c['offset'])_0x5b2eeb['set']('offset',String(_0x14016c['offset']));if(_0x14016c['search'])_0x5b2eeb['set']('search',String(_0x14016c['search']));if(_0x14016c['branch'])_0x5b2eeb['set']('branch',String(_0x14016c['branch']));const _0x48d66d=API_BASE+'/environments/'+encodeURIComponent(_0xd265c5)+'/repos/'+encodeURIComponent(_0x1e097b)+'/git/history',_0x23454d=await fetch(''+_0x48d66d+(_0x5b2eeb['toString']()?'?'+_0x5b2eeb['toString']():''));if(!_0x23454d['ok']){const _0x5d3b0c=await _0x23454d['json']()['catch'](()=>({}));throw new Error(_0x5d3b0c['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x23454d['statusText']);}return await _0x23454d['json']();},async 'getEnvironmentRepoCommit'(_0xf05fef,_0x2c0aed,_0x57dc98){if(!_0xf05fef||!_0x2c0aed||!_0x57dc98)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2bac81=API_BASE+'/environments/'+encodeURIComponent(_0xf05fef)+'/repos/'+encodeURIComponent(_0x2c0aed)+'/git/commits/'+encodeURIComponent(_0x57dc98),_0x12b98d=await fetch(_0x2bac81);if(!_0x12b98d['ok']){const _0x3f92f8=await _0x12b98d['json']()['catch'](()=>({}));throw new Error(_0x3f92f8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x12b98d['statusText']);}return await _0x12b98d['json']();},async 'getEnvironmentRepoBranches'(_0x1878b0,_0x3b16af){if(!_0x1878b0||!_0x3b16af)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a754e=API_BASE+'/environments/'+encodeURIComponent(_0x1878b0)+'/repos/'+encodeURIComponent(_0x3b16af)+'/git/branches',_0x165c8d=await fetch(_0x3a754e);if(!_0x165c8d['ok']){const _0x3d8fb2=await _0x165c8d['json']()['catch'](()=>({}));throw new Error(_0x3d8fb2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x165c8d['statusText']);}return await _0x165c8d['json']();},async 'revertEnvironmentRepoCommit'(_0x1638cc,_0x921292,_0x359922,_0x3b0561={}){if(!_0x1638cc||!_0x921292||!_0x359922)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2848a8=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1638cc)+'/repos/'+encodeURIComponent(_0x921292)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x359922,..._0x3b0561})});if(!_0x2848a8['ok']){const _0x52493e=await _0x2848a8['json']()['catch'](()=>({}));throw new Error(_0x52493e['message']||_0x52493e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2848a8['statusText']);}return await _0x2848a8['json']();},async 'getTemplates'(_0x244185={}){const _0x144d6b=new URLSearchParams();if(_0x244185['include']){const _0x348d63=Array['isArray'](_0x244185['include'])?_0x244185['include']['join'](','):String(_0x244185['include']);if(_0x348d63)_0x144d6b['set']('include',_0x348d63);}const _0x43f848=await fetch(API_BASE+'/templates'+(_0x144d6b['toString']()?'?'+_0x144d6b['toString']():''));if(!_0x43f848['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x43f848['statusText']);return await _0x43f848['json']();},async 'getTemplatesForEnvironment'(_0x5bae6c,_0x7efdd0={}){if(!_0x5bae6c)throw new Error('Environment\x20name\x20is\x20required');const _0x540bf9=new URLSearchParams();if(_0x7efdd0['include']){const _0x2fbce9=Array['isArray'](_0x7efdd0['include'])?_0x7efdd0['include']['join'](','):String(_0x7efdd0['include']);if(_0x2fbce9)_0x540bf9['set']('include',_0x2fbce9);}const _0x3f06f1=await fetch(API_BASE+'/templates/'+_0x5bae6c+(_0x540bf9['toString']()?'?'+_0x540bf9['toString']():''));if(!_0x3f06f1['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5bae6c+':\x20'+_0x3f06f1['statusText']);return await _0x3f06f1['json']();},async 'getTemplate'(_0x2addd7,_0x69b1f4,_0x114704={}){if(!_0x2addd7||!_0x69b1f4)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x10b5ef=new URLSearchParams();if(_0x114704['include']){const _0x1d0dc5=Array['isArray'](_0x114704['include'])?_0x114704['include']['join'](','):String(_0x114704['include']);if(_0x1d0dc5)_0x10b5ef['set']('include',_0x1d0dc5);}const _0x48e765=await fetch(API_BASE+'/templates/'+_0x2addd7+'/'+_0x69b1f4+(_0x10b5ef['toString']()?'?'+_0x10b5ef['toString']():''));if(!_0x48e765['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x48e765['statusText']);return await _0x48e765['json']();},async 'getTaskLogs'(_0x307073,_0x8014c5={}){if(!_0x307073)throw new Error('Task\x20ID\x20is\x20required');const _0x595fab=new URLSearchParams();_0x8014c5['tail']&&_0x595fab['set']('tail',String(_0x8014c5['tail']));const _0x2adce1=await fetch(API_BASE+'/tasks/'+_0x307073+'/logs'+(_0x595fab['toString']()?'?'+_0x595fab['toString']():''));if(!_0x2adce1['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2adce1['statusText']);return await _0x2adce1['text']();},async 'getContainers'(){const _0x425dfd=await fetch(API_BASE+'/containers');if(!_0x425dfd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x425dfd['statusText']);return await _0x425dfd['json']();},async 'getContainer'(_0x27f765){const _0x29c417=await fetch(API_BASE+'/containers/'+_0x27f765);if(!_0x29c417['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x29c417['statusText']);return await _0x29c417['json']();},async 'startInteractiveContainer'(_0x2e8f4b){const _0x252a2f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e8f4b)});if(!_0x252a2f['ok']){const _0x1e569c=await _0x252a2f['json']()['catch'](()=>({}));throw new Error(_0x1e569c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x252a2f['statusText']);}return await _0x252a2f['json']();},async 'stopContainer'(_0x187f88){const _0x4f45ca=await fetch(API_BASE+'/containers/'+_0x187f88,{'method':'DELETE'});if(!_0x4f45ca['ok']){const _0x44b2cf=await _0x4f45ca['json']()['catch'](()=>({}));throw new Error(_0x44b2cf['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4f45ca['statusText']);}return await _0x4f45ca['json']();},async 'stopTask'(_0x306f69){if(!_0x306f69)throw new Error('Task\x20ID\x20is\x20required');const _0x363464=await fetch(API_BASE+'/tasks/'+_0x306f69+'/stop',{'method':'POST'});if(!_0x363464['ok']){const _0x184507=await _0x363464['json']()['catch'](()=>({}));throw new Error(_0x184507['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x363464['statusText']);}return await _0x363464['json']();},async 'interruptTask'(_0x1f7b46){if(!_0x1f7b46)throw new Error('Task\x20ID\x20is\x20required');const _0x26c7cb=await fetch(API_BASE+'/tasks/'+_0x1f7b46+'/interrupt',{'method':'POST'});if(!_0x26c7cb['ok']){const _0xb75f71=await _0x26c7cb['json']()['catch'](()=>({}));throw new Error(_0xb75f71['error']||_0xb75f71['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x26c7cb['statusText']);}return await _0x26c7cb['json']();},async 'startTask'(_0x290c9e){if(!_0x290c9e)throw new Error('Task\x20ID\x20is\x20required');const _0x28cda7=await fetch(API_BASE+'/tasks/'+_0x290c9e+'/start',{'method':'POST'});if(!_0x28cda7['ok']){const _0x8207dd=await _0x28cda7['json']()['catch'](()=>({}));throw new Error(_0x8207dd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x28cda7['statusText']);}return await _0x28cda7['json']();},async 'deleteTask'(_0x113837){if(!_0x113837)throw new Error('Task\x20ID\x20is\x20required');const _0x33034f=await fetch(API_BASE+'/tasks/'+_0x113837,{'method':'DELETE'});if(!_0x33034f['ok']){const _0x1f93be=await _0x33034f['json']()['catch'](()=>({}));throw new Error(_0x1f93be['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33034f['statusText']);}return await _0x33034f['json']();},async 'refreshTasksFromDisk'(){const _0x833d75=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x833d75['ok']){const _0xee47dc=await _0x833d75['json']()['catch'](()=>({}));throw new Error(_0xee47dc['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x833d75['statusText']);}return await _0x833d75['json']();},async 'approveTask'(_0x3b1eda,_0x209835={}){if(!_0x3b1eda)throw new Error('Task\x20ID\x20is\x20required');const _0x196537={'commit_message':_0x209835['commit_message']||'','pull':_0x209835['pull']??![],'push':_0x209835['push']??![]};_0x209835['new_branch']&&(_0x196537['new_branch']=_0x209835['new_branch']);const _0x1190cf=await fetch(API_BASE+'/tasks/'+_0x3b1eda+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x196537)});if(!_0x1190cf['ok']){const _0x5593c3=await _0x1190cf['json']()['catch'](()=>({}));let _0x171f17=_0x5593c3['error']||_0x5593c3['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1190cf['statusText'];if(_0x5593c3['results']&&Array['isArray'](_0x5593c3['results'])){const _0x5b08b3=_0x5593c3['results']['filter'](_0xb11eb5=>!_0xb11eb5['success']&&_0xb11eb5['error']);_0x5b08b3['length']>0x0&&(_0x171f17=_0x5b08b3[0x0]['error']);}throw new Error(_0x171f17);}return await _0x1190cf['json']();},async 'getPullRequestInfo'(_0xe0f7d9){if(!_0xe0f7d9)throw new Error('Task\x20ID\x20is\x20required');const _0x44af71=await fetch(API_BASE+'/tasks/'+_0xe0f7d9+'/pull-request-info');if(!_0x44af71['ok']){const _0x8f97e7=await _0x44af71['json']()['catch'](()=>({}));throw new Error(_0x8f97e7['error']||_0x8f97e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x44af71['statusText']);}return await _0x44af71['json']();},async 'createPullRequests'(_0x3aef5c,_0x1b4247){if(!_0x3aef5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b4247||!Array['isArray'](_0x1b4247))throw new Error('repos\x20array\x20is\x20required');const _0x5d3ec4=await fetch(API_BASE+'/tasks/'+_0x3aef5c+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1b4247})});if(!_0x5d3ec4['ok']){const _0x4d2a1d=await _0x5d3ec4['json']()['catch'](()=>({}));let _0x4f8b3d=_0x4d2a1d['error']||_0x4d2a1d['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5d3ec4['statusText'];if(_0x4d2a1d['results']&&Array['isArray'](_0x4d2a1d['results'])){const _0xab31a2=_0x4d2a1d['results']['filter'](_0x37ac37=>!_0x37ac37['success']&&_0x37ac37['error']);_0xab31a2['length']>0x0&&(_0x4f8b3d=_0xab31a2[0x0]['error']);}throw new Error(_0x4f8b3d);}return await _0x5d3ec4['json']();},async 'syncRepos'(_0x46d6c4){if(!_0x46d6c4)throw new Error('Task\x20ID\x20is\x20required');const _0x3c87d7=await fetch(API_BASE+'/tasks/'+_0x46d6c4+'/sync-repos',{'method':'POST'});if(!_0x3c87d7['ok']){const _0x1c3f2d=await _0x3c87d7['json']()['catch'](()=>({}));throw new Error(_0x1c3f2d['error']||_0x1c3f2d['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3c87d7['statusText']);}return await _0x3c87d7['json']();},async 'getIbmiSyncInfo'(_0x5ac157){if(!_0x5ac157)throw new Error('Task\x20ID\x20is\x20required');const _0x2a757c=await fetch(API_BASE+'/tasks/'+_0x5ac157+'/ibmi-sync-info');if(!_0x2a757c['ok']){const _0xc67cf2=await _0x2a757c['json']()['catch'](()=>({}));throw new Error(_0xc67cf2['error']||_0xc67cf2['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2a757c['json']();},async 'syncToIbmi'(_0x55e19d,_0x2c31c6){if(!_0x55e19d)throw new Error('Task\x20ID\x20is\x20required');const _0x131a49=await fetch(API_BASE+'/tasks/'+_0x55e19d+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x2c31c6})});if(!_0x131a49['ok']){const _0x2df42c=await _0x131a49['json']()['catch'](()=>({}));throw new Error(_0x2df42c['error']||_0x2df42c['message']||'Sync\x20failed');}return await _0x131a49['json']();},async 'getIbmiSyncLog'(_0x3c9322){if(!_0x3c9322)throw new Error('Task\x20ID\x20is\x20required');const _0x517558=await fetch(API_BASE+'/tasks/'+_0x3c9322+'/ibmi-sync-log');if(!_0x517558['ok']){const _0x110b22=await _0x517558['json']()['catch'](()=>({}));throw new Error(_0x110b22['error']||_0x110b22['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x517558['json']();},async 'pullChanges'(_0x34ee58){if(!_0x34ee58)throw new Error('Task\x20ID\x20is\x20required');const _0x2d15b4=await fetch(API_BASE+'/tasks/'+_0x34ee58+'/pull-changes',{'method':'POST'});if(!_0x2d15b4['ok']){const _0x19f7c7=await _0x2d15b4['json']()['catch'](()=>({}));throw new Error(_0x19f7c7['error']||_0x19f7c7['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2d15b4['statusText']);}return await _0x2d15b4['json']();},async 'readFile'(_0x5496b0,_0x2b8427){if(!_0x5496b0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2b8427)throw new Error('File\x20path\x20is\x20required');const _0x1ebe67=await fetch(API_BASE+'/tasks/'+_0x5496b0+'/files?path='+encodeURIComponent(_0x2b8427));if(!_0x1ebe67['ok']){const _0x4bd396=await _0x1ebe67['json']()['catch'](()=>({}));throw new Error(_0x4bd396['error']||_0x4bd396['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1ebe67['statusText']);}return await _0x1ebe67['json']();},async 'writeFile'(_0x156ea1,_0xd2aa7e,_0x283c8b){if(!_0x156ea1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2aa7e)throw new Error('File\x20path\x20is\x20required');if(_0x283c8b===undefined)throw new Error('Content\x20is\x20required');const _0x212681=await fetch(API_BASE+'/tasks/'+_0x156ea1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd2aa7e,'content':_0x283c8b})});if(!_0x212681['ok']){const _0x564566=await _0x212681['json']()['catch'](()=>({}));throw new Error(_0x564566['error']||_0x564566['message']||'Failed\x20to\x20write\x20file:\x20'+_0x212681['statusText']);}return await _0x212681['json']();},async 'discardFile'(_0x50a6e0,_0x4123c4,_0x1aaf9b){if(!_0x50a6e0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4123c4)throw new Error('File\x20path\x20is\x20required');if(!_0x1aaf9b)throw new Error('Repository\x20path\x20is\x20required');const _0xe5cd90=await fetch(API_BASE+'/tasks/'+_0x50a6e0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4123c4,'repoPath':_0x1aaf9b})});if(!_0xe5cd90['ok']){const _0x27579a=await _0xe5cd90['json']()['catch'](()=>({}));throw new Error(_0x27579a['error']||_0x27579a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xe5cd90['statusText']);}return await _0xe5cd90['json']();},async 'followUpTask'(_0x8b8d6d,_0x579975={}){if(!_0x8b8d6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x579975['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x576fdf,_0x338a44={};if(_0x579975['files']&&_0x579975['files']['length']>0x0){const _0x2421fd=new FormData();_0x2421fd['append']('instructions',_0x579975['instructions']);for(const _0x32a668 of _0x579975['files']){_0x2421fd['append']('attachments',_0x32a668);}_0x576fdf=_0x2421fd;}else _0x338a44['Content-Type']='application/json',_0x576fdf=JSON['stringify']({'instructions':_0x579975['instructions']});const _0xb7ed23=await fetch(API_BASE+'/tasks/'+_0x8b8d6d+'/follow-up',{'method':'POST','headers':_0x338a44,'body':_0x576fdf});if(!_0xb7ed23['ok']){const _0x401b88=await _0xb7ed23['json']()['catch'](()=>({}));throw new Error(_0x401b88['error']||_0x401b88['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xb7ed23['statusText']);}return await _0xb7ed23['json']();},async 'getTaskRewindPoints'(_0x261e65){if(!_0x261e65)throw new Error('Task\x20ID\x20is\x20required');const _0x177911=await fetch(API_BASE+'/tasks/'+_0x261e65+'/rewind-points');if(!_0x177911['ok']){const _0x771815=await _0x177911['json']()['catch'](()=>({}));throw new Error(_0x771815['error']||_0x771815['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x177911['statusText']);}return await _0x177911['json']();},async 'rewindTask'(_0x3e6582,_0x3a5756={}){if(!_0x3e6582)throw new Error('Task\x20ID\x20is\x20required');const _0x2a6e90=Number['isInteger'](_0x3a5756['targetFollowUpCount'])?_0x3a5756['targetFollowUpCount']:0x0,_0x188163={'targetFollowUpCount':_0x2a6e90};typeof _0x3a5756['instructions']==='string'&&_0x3a5756['instructions']['trim']()&&(_0x188163['instructions']=_0x3a5756['instructions']['trim']());typeof _0x3a5756['rewindFiles']==='boolean'&&(_0x188163['rewindFiles']=_0x3a5756['rewindFiles']);const _0x460ffd=await fetch(API_BASE+'/tasks/'+_0x3e6582+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x188163)});if(!_0x460ffd['ok']){const _0x10bf12=await _0x460ffd['json']()['catch'](()=>({}));throw new Error(_0x10bf12['error']||_0x10bf12['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x460ffd['statusText']);}return await _0x460ffd['json']();},async 'login'(_0x4465d7,_0x1fc215){const _0x5c59f9=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4465d7,'password':_0x1fc215})});if(!_0x5c59f9['ok']){const _0x3d607f=await _0x5c59f9['json']();throw new Error(_0x3d607f['message']||'Login\x20failed');}return await _0x5c59f9['json']();},async 'logout'(){const _0x3ef471=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3ef471['ok']){const _0x21bd23=await _0x3ef471['json']();throw new Error(_0x21bd23['message']||'Logout\x20failed');}return await _0x3ef471['json']();},async 'getCurrentUser'(){const _0x41a2c2=await fetch(API_BASE+'/auth/me');if(!_0x41a2c2['ok'])throw new Error('Not\x20authenticated');const _0x435404=await _0x41a2c2['json']();return _0x435404['user'];},async 'getRolesInfo'(){const _0x499895=await fetch(API_BASE+'/users/roles');if(!_0x499895['ok']){const _0x3a6b15=await _0x499895['json']();throw new Error(_0x3a6b15['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x499895['json']();},async 'getUsers'(){const _0x45a0c6=await fetch(API_BASE+'/users');if(!_0x45a0c6['ok']){const _0x1ca5ee=await _0x45a0c6['json']();throw new Error(_0x1ca5ee['message']||'Failed\x20to\x20get\x20users');}return await _0x45a0c6['json']();},async 'getUser'(_0x58fb5f){const _0x160921=await fetch(API_BASE+'/users/'+_0x58fb5f);if(!_0x160921['ok']){const _0x547289=await _0x160921['json']();throw new Error(_0x547289['message']||'Failed\x20to\x20get\x20user');}return await _0x160921['json']();},async 'createUser'(_0x2b1dfb){const _0x51ac60=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b1dfb)});if(!_0x51ac60['ok']){const _0x46e0f4=await _0x51ac60['json']();throw new Error(_0x46e0f4['message']||'Failed\x20to\x20create\x20user');}return await _0x51ac60['json']();},async 'updateUser'(_0x496115,_0x143106){const _0x5e8727=await fetch(API_BASE+'/users/'+_0x496115,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x143106)});if(!_0x5e8727['ok']){const _0x55b5bc=await _0x5e8727['json']();throw new Error(_0x55b5bc['message']||'Failed\x20to\x20update\x20user');}return await _0x5e8727['json']();},async 'deleteUser'(_0x1e887a){const _0x6a92b7=await fetch(API_BASE+'/users/'+_0x1e887a,{'method':'DELETE'});if(!_0x6a92b7['ok']){const _0x4a0dd5=await _0x6a92b7['json']();throw new Error(_0x4a0dd5['message']||'Failed\x20to\x20delete\x20user');}return await _0x6a92b7['json']();},async 'stopAllContainers'(){const _0x1e07c1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x121433=await _0x1e07c1['json']()['catch'](()=>({}));if(!_0x1e07c1['ok'])throw new Error(_0x121433['message']||_0x121433['error']||'Failed\x20to\x20stop\x20containers');return _0x121433;},async 'removeStoppedContainers'(){const _0xa325f9=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x321ac7=await _0xa325f9['json']()['catch'](()=>({}));if(!_0xa325f9['ok'])throw new Error(_0x321ac7['message']||_0x321ac7['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x321ac7;},async 'pruneDockerResources'(){const _0x504b49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x1e4e79=await _0x504b49['json']()['catch'](()=>({}));if(!_0x504b49['ok'])throw new Error(_0x1e4e79['message']||_0x1e4e79['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x1e4e79;},async 'createPasswordToken'(_0x34cdf9,_0x35f4b5='setup',_0xf9abee=![]){const _0x307d9a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x34cdf9,'type':_0x35f4b5,'sendEmail':_0xf9abee})});if(!_0x307d9a['ok']){const _0x3b5e25=await _0x307d9a['json']();throw new Error(_0x3b5e25['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x307d9a['json']();},async 'getEmailConfig'(){const _0x556ef5=await fetch(API_BASE+'/password/email-config');if(!_0x556ef5['ok']){const _0x441288=await _0x556ef5['json']();throw new Error(_0x441288['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x556ef5['json']();},async 'updateTaskName'(_0x507fda,_0x1c8bbb){const _0xe92308=await fetch(API_BASE+'/tasks/'+_0x507fda,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1c8bbb})});if(!_0xe92308['ok']){const _0x531e37=await _0xe92308['json']();throw new Error(_0x531e37['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xe92308['json']();},async 'pinTask'(_0xe51b0b,_0x15cf32,_0xa1dd61=null){if(!_0xe51b0b)throw new Error('Task\x20ID\x20is\x20required');const _0x51767f={'pinned':_0x15cf32};_0xa1dd61&&_0xa1dd61['length']>0x0&&(_0x51767f['additionalTaskIds']=_0xa1dd61);const _0x5a0015=await fetch(API_BASE+'/tasks/'+_0xe51b0b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51767f)});if(!_0x5a0015['ok']){const _0x4b4b51=await _0x5a0015['json']();throw new Error(_0x4b4b51['error']||'Failed\x20to\x20pin\x20task');}return await _0x5a0015['json']();},async 'setTaskWinner'(_0x401361,_0x5dc3ff,_0x19519a=[]){if(!_0x401361)throw new Error('Task\x20ID\x20is\x20required');const _0x111da1=await fetch(API_BASE+'/tasks/'+_0x401361+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5dc3ff,'siblings':_0x19519a})});if(!_0x111da1['ok']){const _0xa3254d=await _0x111da1['json']();throw new Error(_0xa3254d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x111da1['json']();},async 'setTaskLoser'(_0x419753,_0x5d07c9){if(!_0x419753)throw new Error('Task\x20ID\x20is\x20required');const _0x50c0d0=await fetch(API_BASE+'/tasks/'+_0x419753+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5d07c9})});if(!_0x50c0d0['ok']){const _0x3fac94=await _0x50c0d0['json']();throw new Error(_0x3fac94['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x50c0d0['json']();},async 'createTaskGroup'(_0x574e81){const _0x58598d=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x574e81)});if(!_0x58598d['ok']){const _0x3fcb11=await _0x58598d['json']();throw new Error(_0x3fcb11['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x58598d['json']();},async 'getTaskGroups'(_0x43f44d={}){const _0x679e5d=new URLSearchParams();if(_0x43f44d['userId'])_0x679e5d['set']('userId',String(_0x43f44d['userId']));if(_0x43f44d['status'])_0x679e5d['set']('status',String(_0x43f44d['status']));if(_0x43f44d['limit'])_0x679e5d['set']('limit',String(_0x43f44d['limit']));const _0x1cdfd7=API_BASE+'/tasks/groups'+(_0x679e5d['toString']()?'?'+_0x679e5d['toString']():''),_0x163e65=await fetch(_0x1cdfd7);if(!_0x163e65['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x163e65['json']();},async 'getTaskGroup'(_0x1a405e){const _0x51e46b=await fetch(API_BASE+'/tasks/groups/'+_0x1a405e);if(!_0x51e46b['ok']){const _0x41169b=await _0x51e46b['json']();throw new Error(_0x41169b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x51e46b['json']();},async 'updateTaskGroup'(_0x30b788,_0x4f3062,_0x3e87ed){const _0x52fe91=await fetch(API_BASE+'/tasks/'+_0x30b788+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4f3062,'groupIndex':_0x3e87ed})});if(!_0x52fe91['ok']){const _0x1581f5=await _0x52fe91['json']();throw new Error(_0x1581f5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x52fe91['json']();},async 'removeTaskFromGroup'(_0x1bf3cc){return this['updateTaskGroup'](_0x1bf3cc,null,null);},async 'deleteTaskGroup'(_0x409217,_0x46edd9=![]){const _0x404425=_0x46edd9?'?deleteTasks=true':'',_0x34bdeb=await fetch(API_BASE+'/tasks/groups/'+_0x409217+_0x404425,{'method':'DELETE'});if(!_0x34bdeb['ok']){const _0x24c940=await _0x34bdeb['json']();throw new Error(_0x24c940['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1ace7c,_0x4a92c6){const _0x5ee3bb=await fetch(API_BASE+'/tasks/groups/'+_0x1ace7c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4a92c6})});if(!_0x5ee3bb['ok']){const _0x47da47=await _0x5ee3bb['json']();throw new Error(_0x47da47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5ee3bb['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3f5090){if(!_0x3f5090)throw new Error('Task\x20ID\x20is\x20required');const _0x4827e7=await fetch(API_BASE+'/tasks/'+_0x3f5090+'/comments');if(!_0x4827e7['ok']){const _0x476f87=await _0x4827e7['json']()['catch'](()=>({}));throw new Error(_0x476f87['error']||'Failed\x20to\x20get\x20comments');}return await _0x4827e7['json']();},async 'addComment'(_0x54d1d8,_0x4ffabc){if(!_0x54d1d8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ffabc)throw new Error('Comment\x20content\x20is\x20required');const _0x111551=await fetch(API_BASE+'/tasks/'+_0x54d1d8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4ffabc})});if(!_0x111551['ok']){const _0x10dd06=await _0x111551['json']()['catch'](()=>({}));throw new Error(_0x10dd06['error']||'Failed\x20to\x20add\x20comment');}return await _0x111551['json']();},async 'updateComment'(_0x124739,_0x356c98,_0x4b8d63){if(!_0x124739)throw new Error('Task\x20ID\x20is\x20required');if(!_0x356c98)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4b8d63)throw new Error('Comment\x20content\x20is\x20required');const _0x367327=await fetch(API_BASE+'/tasks/'+_0x124739+'/comments/'+_0x356c98,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b8d63})});if(!_0x367327['ok']){const _0x3569ff=await _0x367327['json']()['catch'](()=>({}));throw new Error(_0x3569ff['error']||'Failed\x20to\x20update\x20comment');}return await _0x367327['json']();},async 'deleteComment'(_0x9f98b3,_0x2c9ef9){if(!_0x9f98b3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ef9)throw new Error('Comment\x20ID\x20is\x20required');const _0xb23cdf=await fetch(API_BASE+'/tasks/'+_0x9f98b3+'/comments/'+_0x2c9ef9,{'method':'DELETE'});if(!_0xb23cdf['ok']){const _0x3339e5=await _0xb23cdf['json']()['catch'](()=>({}));throw new Error(_0x3339e5['error']||'Failed\x20to\x20delete\x20comment');}return await _0xb23cdf['json']();},async 'createObjective'(_0x3168e7){const _0x18af8d={'objective':!![],'name':_0x3168e7['name']||'','environment':_0x3168e7['environment']||null,'agents':_0x3168e7['agents']||[],'branches':_0x3168e7['branches']||{},'isPinned':_0x3168e7['isPinned']||![],'parentObjectiveId':_0x3168e7['parentObjectiveId']||null,'env_vars':_0x3168e7['envVars']||{},'parameters':{'instructions':_0x3168e7['instructions']||''},'files':_0x3168e7['files']||[],'jira':_0x3168e7['jira']||null};return this['createTask'](_0x18af8d);},async 'updateObjective'(_0x64978d,_0x160e6d,_0x2c8f4f=[],_0x3d7cc9=[]){let _0x2e4ee7,_0x390736={};const _0x5698b8={..._0x160e6d};_0x3d7cc9&&_0x3d7cc9['length']>0x0&&(_0x5698b8['removeAttachments']=_0x3d7cc9);if(_0x2c8f4f&&_0x2c8f4f['length']>0x0){const _0x2cceec=new FormData();for(const [_0x151822,_0x5c3058]of Object['entries'](_0x5698b8)){if(_0x5c3058==null)continue;typeof _0x5c3058==='object'?_0x2cceec['append'](_0x151822,JSON['stringify'](_0x5c3058)):_0x2cceec['append'](_0x151822,String(_0x5c3058));}for(const _0x2b2679 of _0x2c8f4f){_0x2cceec['append']('attachments',_0x2b2679);}_0x2e4ee7=_0x2cceec;}else _0x390736['Content-Type']='application/json',_0x2e4ee7=JSON['stringify'](_0x5698b8);const _0x57dcef=await fetch(API_BASE+'/tasks/'+_0x64978d,{'method':'PATCH','headers':_0x390736,'body':_0x2e4ee7});if(!_0x57dcef['ok']){const _0x20102b=await _0x57dcef['json']();throw new Error(_0x20102b['error']||'Failed\x20to\x20update\x20objective');}return await _0x57dcef['json']();},async 'deleteObjective'(_0x3ad508){return this['deleteTask'](_0x3ad508);},async 'launchObjective'(_0x181319,_0xad8c6b={}){const _0x582886=await fetch(API_BASE+'/tasks/'+_0x181319+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xad8c6b)});if(!_0x582886['ok']){const _0x4cb814=await _0x582886['json']();throw new Error(_0x4cb814['error']||'Failed\x20to\x20launch\x20objective');}return await _0x582886['json']();},async 'getObjectiveAttachments'(_0x3d705d){return this['getTaskAttachments'](_0x3d705d);},async 'createJudgeTask'({environment:_0x59e9aa,judgeAgent:_0x7533b3,groupId:_0x1098a3,taskIds:_0x177fb4,judgeCustomInstructions:_0x19902c,isPinned:_0x9424ca}){const _0x27ecf0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59e9aa,'judgeAgent':_0x7533b3,'groupId':_0x1098a3,'taskIds':_0x177fb4,'judgeCustomInstructions':_0x19902c,'isPinned':_0x9424ca})});if(!_0x27ecf0['ok']){const _0x14930a=await _0x27ecf0['json']();throw new Error(_0x14930a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x27ecf0['json']();},async 'getJudgeTasks'(_0x30c894){const _0x373500=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x30c894));if(!_0x373500['ok']){const _0x341675=await _0x373500['json']();throw new Error(_0x341675['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x373500['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x170e83,_0x2356ae,_0xf380ff=''){const _0x227405=await fetch(API_BASE+'/tasks/'+_0x170e83+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2356ae,'customPreamble':_0xf380ff})});if(!_0x227405['ok']){const _0x1f4cef=await _0x227405['json']();throw new Error(_0x1f4cef['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x227405['json']();},async 'getJiraConfig'(){const _0x2f0262=await fetch(API_BASE+'/jira/config');if(!_0x2f0262['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2f0262['json']();},async 'getJiraIssue'(_0x2a45f5){const _0x1f36f6=await fetch(API_BASE+'/jira/issues/'+_0x2a45f5);if(!_0x1f36f6['ok']){const _0x39e31a=await _0x1f36f6['json']()['catch'](()=>({}));throw new Error(_0x39e31a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1f36f6['statusText']);}return await _0x1f36f6['json']();},async 'searchJiraIssues'(_0x4f6cb2,_0x160144=0x14){const _0x2026b3=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x4f6cb2,'maxResults':_0x160144})});if(!_0x2026b3['ok']){const _0x51438f=await _0x2026b3['json']()['catch'](()=>({}));throw new Error(_0x51438f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2026b3['statusText']);}return await _0x2026b3['json']();},async 'postJiraComment'(_0x4f069d,_0x5e3ce5){const _0x134443=await fetch(API_BASE+'/jira/issues/'+_0x4f069d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5e3ce5})});if(!_0x134443['ok']){const _0x19d8d7=await _0x134443['json']()['catch'](()=>({}));throw new Error(_0x19d8d7['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x134443['statusText']);}return await _0x134443['json']();},async 'getJiraComments'(_0x30070e){const _0x1f78e6=await fetch(API_BASE+'/jira/issues/'+_0x30070e+'/comments');if(!_0x1f78e6['ok']){const _0x4bc2e3=await _0x1f78e6['json']()['catch'](()=>({}));throw new Error(_0x4bc2e3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f78e6['statusText']);}return await _0x1f78e6['json']();},async 'promptParameter'({environment:_0x1acf72,command:_0x2b12d8,parser:parser='json'}){const _0x179922=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1acf72,'command':_0x2b12d8,'parser':parser})});if(!_0x179922['ok']){const _0x12bab5=await _0x179922['json']()['catch'](()=>({}));throw new Error(_0x12bab5['message']||_0x12bab5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x179922['statusText']);}return await _0x179922['json']();},async 'promptParameterStream'(_0x40e558,_0x1a9e59){const _0x492c35=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40e558)});if(!_0x492c35['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x492c35['statusText']);const _0x2fd8ea=_0x492c35['body']['getReader'](),_0x44fa66=new TextDecoder();let _0x2f1464='';return new Promise((_0x25a7f5,_0x16a7c4)=>{const _0x4ba1ea=async()=>{try{const {done:_0xcbcadd,value:_0x52f231}=await _0x2fd8ea['read']();if(_0xcbcadd)return;_0x2f1464+=_0x44fa66['decode'](_0x52f231,{'stream':!![]});const _0x2f7552=_0x2f1464['split']('\x0a\x0a');_0x2f1464=_0x2f7552['pop']()||'';for(const _0x246e11 of _0x2f7552){if(!_0x246e11['trim']())continue;const _0x55fda2=_0x246e11['split']('\x0a');let _0x259870='message',_0x5afc4f='';for(const _0x5d86d7 of _0x55fda2){if(_0x5d86d7['startsWith']('event:'))_0x259870=_0x5d86d7['substring'](0x6)['trim']();else _0x5d86d7['startsWith']('data:')&&(_0x5afc4f=_0x5d86d7['substring'](0x5)['trim']());}if(!_0x5afc4f)continue;try{const _0x2f4edb=JSON['parse'](_0x5afc4f);if(_0x259870==='progress'&&_0x1a9e59)_0x1a9e59(_0x2f4edb['stage'],_0x2f4edb['message']);else{if(_0x259870==='result'){_0x25a7f5(_0x2f4edb);return;}else{if(_0x259870==='error'){let _0x11d662=_0x2f4edb['message']||_0x2f4edb['error']||'Prompt\x20command\x20failed';_0x2f4edb['rawOutput']&&(_0x11d662+='\x0a\x0aRaw\x20output:\x0a'+_0x2f4edb['rawOutput']);_0x16a7c4(new Error(_0x11d662));return;}}}}catch(_0x81aaf7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x81aaf7),console['error']('Event\x20type:',_0x259870),console['error']('Event\x20data:',_0x5afc4f),console['error']('First\x20200\x20chars:',_0x5afc4f['substring'](0x0,0xc8)),_0x16a7c4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x81aaf7['message']+'\x0a\x0aData:\x20'+_0x5afc4f['substring'](0x0,0x1f4)));return;}}_0x4ba1ea();}catch(_0x46bd6d){_0x16a7c4(_0x46bd6d);}};_0x4ba1ea();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xe14c4e){const _0x3186f9=await fetch(''+API_BASE+_0xe14c4e);if(!_0x3186f9['ok']){const _0x7bf539=await _0x3186f9['json']()['catch'](()=>({'error':_0x3186f9['statusText']})),_0x39e05b=new Error(_0x7bf539['error']||_0x7bf539['message']||_0x3186f9['statusText']);if(_0x7bf539['detail']!==undefined)_0x39e05b['detail']=_0x7bf539['detail'];throw _0x39e05b;}return await _0x3186f9['json']();},async 'post'(_0x15d96e,_0xb5a306){const _0x55f00f=await fetch(''+API_BASE+_0x15d96e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb5a306)});if(!_0x55f00f['ok']){const _0x1c5735=await _0x55f00f['json']()['catch'](()=>({'error':_0x55f00f['statusText']})),_0x3672f1=new Error(_0x1c5735['error']||_0x1c5735['message']||_0x55f00f['statusText']);if(_0x1c5735['detail']!==undefined)_0x3672f1['detail']=_0x1c5735['detail'];throw _0x3672f1;}return await _0x55f00f['json']();},async 'put'(_0x30fb8e,_0x3cf1ab){const _0x229f6a=await fetch(''+API_BASE+_0x30fb8e,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3cf1ab)});if(!_0x229f6a['ok']){const _0x3da4ff=await _0x229f6a['json']()['catch'](()=>({'error':_0x229f6a['statusText']})),_0x1f5b38=new Error(_0x3da4ff['error']||_0x3da4ff['message']||_0x229f6a['statusText']);if(_0x3da4ff['detail']!==undefined)_0x1f5b38['detail']=_0x3da4ff['detail'];throw _0x1f5b38;}return await _0x229f6a['json']();},async 'delete'(_0x20bf8c,_0x463a07){const _0x4a23ba={'method':'DELETE'};_0x463a07&&(_0x4a23ba['headers']={'Content-Type':'application/json'},_0x4a23ba['body']=JSON['stringify'](_0x463a07));const _0x5141dc=await fetch(''+API_BASE+_0x20bf8c,_0x4a23ba);if(!_0x5141dc['ok']){const _0x499311=await _0x5141dc['json']()['catch'](()=>({'error':_0x5141dc['statusText']})),_0x149d09=new Error(_0x499311['error']||_0x499311['message']||_0x5141dc['statusText']);if(_0x499311['detail']!==undefined)_0x149d09['detail']=_0x499311['detail'];throw _0x149d09;}return await _0x5141dc['json']();},async 'getSkills'(){const _0x36156=await fetch(API_BASE+'/skills');if(!_0x36156['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36156['statusText']);return await _0x36156['json']();},async 'getSkill'(_0x4fdd84){const _0x152aea=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4fdd84));if(!_0x152aea['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x152aea['statusText']);return await _0x152aea['json']();},async 'createSkill'(_0x2317be){const _0x3d0a42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2317be)});if(!_0x3d0a42['ok']){const _0xfaaefb=await _0x3d0a42['json']()['catch'](()=>({'error':_0x3d0a42['statusText']})),_0x2b6d28=new Error(_0xfaaefb['error']||_0xfaaefb['message']||_0x3d0a42['statusText']);if(_0xfaaefb['detail']!==undefined)_0x2b6d28['detail']=_0xfaaefb['detail'];throw _0x2b6d28;}return await _0x3d0a42['json']();},async 'updateSkill'(_0x115d64,_0x24d9b0){const _0x18b6b9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x115d64),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24d9b0)});if(!_0x18b6b9['ok']){const _0x2fdd40=await _0x18b6b9['json']()['catch'](()=>({'error':_0x18b6b9['statusText']})),_0xbabca3=new Error(_0x2fdd40['error']||_0x2fdd40['message']||_0x18b6b9['statusText']);if(_0x2fdd40['detail']!==undefined)_0xbabca3['detail']=_0x2fdd40['detail'];throw _0xbabca3;}return await _0x18b6b9['json']();},async 'deleteSkill'(_0x208d96){const _0x58b7cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x208d96),{'method':'DELETE'});if(!_0x58b7cc['ok']){const _0x4edb97=await _0x58b7cc['json']()['catch'](()=>({'error':_0x58b7cc['statusText']})),_0x4f6730=new Error(_0x4edb97['error']||_0x4edb97['message']||_0x58b7cc['statusText']);if(_0x4edb97['detail']!==undefined)_0x4f6730['detail']=_0x4edb97['detail'];throw _0x4f6730;}return await _0x58b7cc['json']();},async 'getSkillFile'(_0x438f12,_0x4210c3){const _0x33877a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x438f12)+'/files/'+_0x4210c3);if(!_0x33877a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x33877a['statusText']);return await _0x33877a['json']();},async 'saveSkillFile'(_0x384262,_0xbd5330,_0x5b38be){const _0x3d64d2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x384262)+'/files/'+_0xbd5330,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5b38be})});if(!_0x3d64d2['ok']){const _0x52d5e5=await _0x3d64d2['json']()['catch'](()=>({'error':_0x3d64d2['statusText']})),_0x1e9953=new Error(_0x52d5e5['error']||_0x52d5e5['message']||_0x3d64d2['statusText']);if(_0x52d5e5['detail']!==undefined)_0x1e9953['detail']=_0x52d5e5['detail'];throw _0x1e9953;}return await _0x3d64d2['json']();},async 'deleteSkillFile'(_0x214043,_0x27932d){const _0x4e1168=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x214043)+'/files/'+_0x27932d,{'method':'DELETE'});if(!_0x4e1168['ok']){const _0x9b7116=await _0x4e1168['json']()['catch'](()=>({'error':_0x4e1168['statusText']})),_0x19d9c7=new Error(_0x9b7116['error']||_0x9b7116['message']||_0x4e1168['statusText']);if(_0x9b7116['detail']!==undefined)_0x19d9c7['detail']=_0x9b7116['detail'];throw _0x19d9c7;}return await _0x4e1168['json']();},async 'pullSkills'(){const _0x55c229=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x55c229['ok']){const _0x199265=await _0x55c229['json']()['catch'](()=>({'error':_0x55c229['statusText']})),_0x254f5d=new Error(_0x199265['error']||_0x199265['message']||_0x55c229['statusText']);if(_0x199265['detail']!==undefined)_0x254f5d['detail']=_0x199265['detail'];throw _0x254f5d;}return await _0x55c229['json']();},async 'commitSkills'(_0x2a65f0,_0x5abd5a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x5abd5a,_0x2ff51b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x2a65f0,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2ff51b['ok']){const _0x400cef=await _0x2ff51b['json']()['catch'](()=>({'error':_0x2ff51b['statusText']})),_0x3617b1=new Error(_0x400cef['error']||_0x400cef['message']||_0x2ff51b['statusText']);if(_0x400cef['detail']!==undefined)_0x3617b1['detail']=_0x400cef['detail'];throw _0x3617b1;}return await _0x2ff51b['json']();},async 'discardSkillsChanges'(){const _0x2cb581=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2cb581['ok']){const _0x15fe10=await _0x2cb581['json']()['catch'](()=>({'error':_0x2cb581['statusText']})),_0x2e0336=new Error(_0x15fe10['error']||_0x15fe10['message']||_0x2cb581['statusText']);if(_0x15fe10['detail']!==undefined)_0x2e0336['detail']=_0x15fe10['detail'];throw _0x2e0336;}return await _0x2cb581['json']();},async 'getSkillCatalog'(){const _0x2ae89d=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ae89d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ae89d['statusText']);return await _0x2ae89d['json']();},async 'getImportedSkillsRegistry'(){const _0x408d64=await fetch(API_BASE+'/external-skills/registry');if(!_0x408d64['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408d64['statusText']);return await _0x408d64['json']();},async 'importCatalogSkill'(_0x3bb913){const _0x187f2e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3bb913})});if(!_0x187f2e['ok']){const _0x1f8d86=await _0x187f2e['json']()['catch'](()=>({'error':_0x187f2e['statusText']})),_0x1db6ae=new Error(_0x1f8d86['error']||_0x1f8d86['message']||_0x187f2e['statusText']);if(_0x1f8d86['detail']!==undefined)_0x1db6ae['detail']=_0x1f8d86['detail'];throw _0x1db6ae;}return await _0x187f2e['json']();},async 'importSkillFromGit'(_0x31f80e,_0x356de5,_0x491d8b='main',_0x5a34ca=null){const _0x3f5941=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x31f80e,'skillPath':_0x356de5,'branch':_0x491d8b,'skillId':_0x5a34ca})});if(!_0x3f5941['ok']){const _0x664a78=await _0x3f5941['json']()['catch'](()=>({'error':_0x3f5941['statusText']})),_0x62c0a8=new Error(_0x664a78['error']||_0x664a78['message']||_0x3f5941['statusText']);if(_0x664a78['detail']!==undefined)_0x62c0a8['detail']=_0x664a78['detail'];throw _0x62c0a8;}return await _0x3f5941['json']();},async 'probeMarketplace'(_0x395495,_0x111ce2='main'){const _0xab5641=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x395495,'branch':_0x111ce2})});if(!_0xab5641['ok']){const _0x3a96c8=await _0xab5641['json']()['catch'](()=>({'error':_0xab5641['statusText']})),_0x53ceb5=new Error(_0x3a96c8['error']||_0x3a96c8['message']||_0xab5641['statusText']);if(_0x3a96c8['detail']!==undefined)_0x53ceb5['detail']=_0x3a96c8['detail'];throw _0x53ceb5;}return await _0xab5641['json']();},async 'importMarketplaceBundle'(_0x24b3ad,_0xddae8d,_0x321700,_0x28d0d0=null){const _0x5422d7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x24b3ad,'branch':_0xddae8d,'bundleId':_0x321700,'selectedSkills':_0x28d0d0})});if(!_0x5422d7['ok']){const _0x4dea6a=await _0x5422d7['json']()['catch'](()=>({'error':_0x5422d7['statusText']})),_0x2f88db=new Error(_0x4dea6a['error']||_0x4dea6a['message']||_0x5422d7['statusText']);if(_0x4dea6a['detail']!==undefined)_0x2f88db['detail']=_0x4dea6a['detail'];throw _0x2f88db;}return await _0x5422d7['json']();},async 'importSkillFromFolder'(_0x15f66e,_0x43cda5=null){const _0x4d4968=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x15f66e,'skillId':_0x43cda5})});if(!_0x4d4968['ok']){const _0x9035fe=await _0x4d4968['json']()['catch'](()=>({'error':_0x4d4968['statusText']})),_0x3a5b46=new Error(_0x9035fe['error']||_0x9035fe['message']||_0x4d4968['statusText']);if(_0x9035fe['detail']!==undefined)_0x3a5b46['detail']=_0x9035fe['detail'];throw _0x3a5b46;}return await _0x4d4968['json']();},async 'importSkillFromNpm'(_0x3713d6,_0x5c93cb='latest',_0x510a69=null,_0x39a3cb=null){const _0x37edc1=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3713d6,'version':_0x5c93cb,'skillId':_0x510a69,'registry':_0x39a3cb})});if(!_0x37edc1['ok']){const _0x53e47d=await _0x37edc1['json']()['catch'](()=>({'error':_0x37edc1['statusText']})),_0x13c3ba=new Error(_0x53e47d['error']||_0x53e47d['message']||_0x37edc1['statusText']);if(_0x53e47d['detail']!==undefined)_0x13c3ba['detail']=_0x53e47d['detail'];throw _0x13c3ba;}return await _0x37edc1['json']();},async 'checkSkillUpdates'(_0x57c361){const _0xa4a8fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57c361)+'/check-updates',{'method':'POST'});if(!_0xa4a8fd['ok']){const _0x55d25d=await _0xa4a8fd['json']()['catch'](()=>({'error':_0xa4a8fd['statusText']})),_0x19aff3=new Error(_0x55d25d['error']||_0x55d25d['message']||_0xa4a8fd['statusText']);if(_0x55d25d['detail']!==undefined)_0x19aff3['detail']=_0x55d25d['detail'];throw _0x19aff3;}return await _0xa4a8fd['json']();},async 'updateExternalSkill'(_0x48dd58){const _0x4661b9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48dd58)+'/update',{'method':'POST'});if(!_0x4661b9['ok']){const _0x1936d1=await _0x4661b9['json']()['catch'](()=>({'error':_0x4661b9['statusText']})),_0x141879=new Error(_0x1936d1['error']||_0x1936d1['message']||_0x4661b9['statusText']);if(_0x1936d1['detail']!==undefined)_0x141879['detail']=_0x1936d1['detail'];throw _0x141879;}return await _0x4661b9['json']();},async 'updateSkillFlags'(_0x2e3ed1,_0x32cbb9){const _0xe9958f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e3ed1)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x32cbb9})});if(!_0xe9958f['ok']){const _0x31c781=await _0xe9958f['json']()['catch'](()=>({'error':_0xe9958f['statusText']})),_0x10d234=new Error(_0x31c781['error']||_0x31c781['message']||_0xe9958f['statusText']);if(_0x31c781['detail']!==undefined)_0x10d234['detail']=_0x31c781['detail'];throw _0x10d234;}return await _0xe9958f['json']();},async 'removeFromImportedRegistry'(_0x45646e){const _0x10ad1e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x45646e)+'/registry',{'method':'DELETE'});if(!_0x10ad1e['ok']){const _0xf36b26=await _0x10ad1e['json']()['catch'](()=>({'error':_0x10ad1e['statusText']})),_0x38cd5a=new Error(_0xf36b26['error']||_0xf36b26['message']||_0x10ad1e['statusText']);if(_0xf36b26['detail']!==undefined)_0x38cd5a['detail']=_0xf36b26['detail'];throw _0x38cd5a;}return await _0x10ad1e['json']();},async 'getTeams'(){const _0x17227d=await fetch(API_BASE+'/teams');if(!_0x17227d['ok']){const _0x114b97=await _0x17227d['json']()['catch'](()=>({'message':_0x17227d['statusText']}));throw new Error(_0x114b97['message']||'Failed\x20to\x20get\x20teams');}return await _0x17227d['json']();},async 'getTeam'(_0x55c3f9){const _0x4448f7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55c3f9));if(!_0x4448f7['ok']){const _0x7c5293=await _0x4448f7['json']()['catch'](()=>({'message':_0x4448f7['statusText']}));throw new Error(_0x7c5293['message']||'Failed\x20to\x20get\x20team');}return await _0x4448f7['json']();},async 'createTeam'(_0x4d5cd1){const _0x2c1ce3=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4d5cd1)});if(!_0x2c1ce3['ok']){const _0x84e0f0=await _0x2c1ce3['json']()['catch'](()=>({'message':_0x2c1ce3['statusText']}));throw new Error(_0x84e0f0['message']||'Failed\x20to\x20create\x20team');}return await _0x2c1ce3['json']();},async 'updateTeam'(_0x6c8258,_0x59dc0b){const _0x36c4d4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x6c8258),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59dc0b)});if(!_0x36c4d4['ok']){const _0x9b1602=await _0x36c4d4['json']()['catch'](()=>({'message':_0x36c4d4['statusText']}));throw new Error(_0x9b1602['message']||'Failed\x20to\x20update\x20team');}return await _0x36c4d4['json']();},async 'deleteTeam'(_0x4f4e34){const _0x3d0b65=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4f4e34),{'method':'DELETE'});if(!_0x3d0b65['ok']){const _0x13a412=await _0x3d0b65['json']()['catch'](()=>({'message':_0x3d0b65['statusText']}));throw new Error(_0x13a412['message']||'Failed\x20to\x20delete\x20team');}return await _0x3d0b65['json']();},async 'addTeamMember'(_0x46fd88,_0x15e4d9){const _0xd4316=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46fd88)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x15e4d9})});if(!_0xd4316['ok']){const _0x56dec8=await _0xd4316['json']()['catch'](()=>({'message':_0xd4316['statusText']}));throw new Error(_0x56dec8['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xd4316['json']();},async 'removeTeamMember'(_0x5a4859,_0xc79b6c){const _0x4d1bd7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4859)+'/members/'+encodeURIComponent(_0xc79b6c),{'method':'DELETE'});if(!_0x4d1bd7['ok']){const _0x50ac20=await _0x4d1bd7['json']()['catch'](()=>({'message':_0x4d1bd7['statusText']}));throw new Error(_0x50ac20['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4d1bd7['json']();},async 'getBindings'(_0x1c6a8b={}){const _0x1ebed8=new URLSearchParams();if(_0x1c6a8b['resource_type'])_0x1ebed8['set']('resource_type',_0x1c6a8b['resource_type']);if(_0x1c6a8b['resource_id'])_0x1ebed8['set']('resource_id',_0x1c6a8b['resource_id']);if(_0x1c6a8b['subject_type'])_0x1ebed8['set']('subject_type',_0x1c6a8b['subject_type']);if(_0x1c6a8b['subject_id'])_0x1ebed8['set']('subject_id',_0x1c6a8b['subject_id']);const _0x30f54d=_0x1ebed8['toString'](),_0x31b597=await fetch(API_BASE+'/bindings'+(_0x30f54d?'?'+_0x30f54d:''));if(!_0x31b597['ok']){const _0x3c96c6=await _0x31b597['json']()['catch'](()=>({'message':_0x31b597['statusText']}));throw new Error(_0x3c96c6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x31b597['json']();},async 'createBinding'(_0x2ed525){const _0x425364=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ed525)});if(!_0x425364['ok']){const _0x40936a=await _0x425364['json']()['catch'](()=>({'message':_0x425364['statusText']}));throw new Error(_0x40936a['message']||'Failed\x20to\x20create\x20binding');}return await _0x425364['json']();},async 'updateBinding'(_0xe712dd,_0xd8d5cf){const _0x19f15e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe712dd),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd8d5cf)});if(!_0x19f15e['ok']){const _0x5196d2=await _0x19f15e['json']()['catch'](()=>({'message':_0x19f15e['statusText']}));throw new Error(_0x5196d2['message']||'Failed\x20to\x20update\x20binding');}return await _0x19f15e['json']();},async 'deleteBinding'(_0x1131a9){const _0xdae682=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1131a9),{'method':'DELETE'});if(!_0xdae682['ok']){const _0x414292=await _0xdae682['json']()['catch'](()=>({'message':_0xdae682['statusText']}));throw new Error(_0x414292['message']||'Failed\x20to\x20delete\x20binding');}return await _0xdae682['json']();},async 'getRoleDefinitions'(){const _0x4266bc=await fetch(API_BASE+'/roles');if(!_0x4266bc['ok']){const _0x1140bd=await _0x4266bc['json']()['catch'](()=>({'message':_0x4266bc['statusText']}));throw new Error(_0x1140bd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4266bc['json']();},async 'getRoleDefinition'(_0x4d8e0a){const _0x232f9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4d8e0a));if(!_0x232f9a['ok']){const _0x51fd4b=await _0x232f9a['json']()['catch'](()=>({'message':_0x232f9a['statusText']}));throw new Error(_0x51fd4b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x232f9a['json']();},async 'createRoleDefinition'(_0xca8078){const _0x2de0f7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xca8078)});if(!_0x2de0f7['ok']){const _0x26df8e=await _0x2de0f7['json']()['catch'](()=>({'message':_0x2de0f7['statusText']}));throw new Error(_0x26df8e['message']||_0x26df8e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2de0f7['json']();},async 'updateRoleDefinition'(_0x1b6b14,_0x11e0db){const _0x552739=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b6b14),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11e0db)});if(!_0x552739['ok']){const _0x2d466d=await _0x552739['json']()['catch'](()=>({'message':_0x552739['statusText']}));throw new Error(_0x2d466d['message']||_0x2d466d['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x552739['json']();},async 'deleteRoleDefinition'(_0x160638){const _0x47bc1d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x160638),{'method':'DELETE'});if(!_0x47bc1d['ok']){const _0x1e7541=await _0x47bc1d['json']()['catch'](()=>({'message':_0x47bc1d['statusText']}));throw new Error(_0x1e7541['message']||_0x1e7541['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x47bc1d['json']();},async 'getAvailablePermissions'(){const _0x6d7b7d=await fetch(API_BASE+'/roles/available-permissions');if(!_0x6d7b7d['ok']){const _0x49f1ff=await _0x6d7b7d['json']()['catch'](()=>({'message':_0x6d7b7d['statusText']}));throw new Error(_0x49f1ff['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x6d7b7d['json']();},async 'getGitProviderAllowedTeams'(_0x394952){const _0x4816e7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x394952)+'/allowed-teams');if(!_0x4816e7['ok']){const _0x37b8c8=await _0x4816e7['json']()['catch'](()=>({'message':_0x4816e7['statusText']}));throw new Error(_0x37b8c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4816e7['json']();},async 'setGitProviderAllowedTeams'(_0x207871,_0x340aff){const _0x33c986=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x207871)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x340aff})});if(!_0x33c986['ok']){const _0x11795f=await _0x33c986['json']()['catch'](()=>({'message':_0x33c986['statusText']}));throw new Error(_0x11795f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x33c986['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 _0x56806a=toastState['baseBottom'];toastState['toasts']['forEach'](_0x315cd9=>{_0x315cd9['el']['style']['bottom']=_0x56806a+'px';const _0x18ba1e=_0x315cd9['el']['offsetHeight']||toastState['defaultHeight'];_0x56806a+=_0x18ba1e+toastState['gap'];});});}function removeToastById(_0x267e84){const _0x2be903=toastState['toasts']['findIndex'](_0x5d7823=>_0x5d7823['id']===_0x267e84);if(_0x2be903===-0x1)return;const _0x473603=toastState['toasts'][_0x2be903];if(_0x473603['timeoutId'])clearTimeout(_0x473603['timeoutId']);_0x473603['el']['classList']['remove']('show'),setTimeout(()=>_0x473603['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2be903,0x1),repositionAllToasts();}function registerToast(_0x4b0b4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4b0b4e),repositionAllToasts(),_0x4b0b4e['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'(_0x4fbf5a){const _0x1d4f31=new Date(_0x4fbf5a),_0x3b9608=new Date(),_0x32511b=_0x3b9608-_0x1d4f31,_0x293b80=Math['floor'](_0x32511b/0x3e8),_0x20548a=Math['floor'](_0x293b80/0x3c),_0x4f5ea7=Math['floor'](_0x20548a/0x3c),_0x2c154a=Math['floor'](_0x4f5ea7/0x18);if(_0x293b80<0x3c)return'now';if(_0x20548a<0x3c)return _0x20548a+'m\x20ago';if(_0x4f5ea7<0x18)return _0x4f5ea7+'h\x20ago';return _0x2c154a+'d\x20ago';},'getStatusIcon'(_0x152fba){switch(_0x152fba){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3d0b04){switch(_0x3d0b04){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'(_0x1a5f16,_0x560015=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x336c99={};_0x336c99['text/plain']=new Blob([_0x1a5f16],{'type':'text/plain'});_0x560015&&(_0x336c99['text/html']=new Blob([_0x560015],{'type':'text/html'}));const _0x5a8b49=new ClipboardItem(_0x336c99);return await navigator['clipboard']['write']([_0x5a8b49]),!![];}catch(_0x1470e5){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1470e5);}try{const _0x1f7741=_0x360b25=>{_0x360b25['preventDefault'](),_0x360b25['clipboardData']['setData']('text/plain',_0x1a5f16),_0x560015&&_0x360b25['clipboardData']['setData']('text/html',_0x560015);};document['addEventListener']('copy',_0x1f7741);const _0x51a1e4=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f7741);if(_0x51a1e4)return!![];}catch(_0x66c571){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x66c571);}try{const _0x372f90=document['createElement']('textarea');_0x372f90['value']=_0x1a5f16,_0x372f90['style']['position']='fixed',_0x372f90['style']['opacity']='0',_0x372f90['style']['pointerEvents']='none',document['body']['appendChild'](_0x372f90),_0x372f90['select']();const _0x27652d=document['execCommand']('copy');return document['body']['removeChild'](_0x372f90),_0x27652d;}catch(_0x4c80ce){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c80ce),![];}},'showToast'(_0x3f0aad,_0x53c9ab='info'){const _0x393bdb=getNextToastId(),_0x330286=document['createElement']('div');_0x330286['className']='toast\x20toast-'+_0x53c9ab,_0x330286['textContent']=_0x3f0aad,_0x330286['dataset']['toastId']=_0x393bdb,document['body']['appendChild'](_0x330286);const _0x535c27=_0x53c9ab==='error'?0x2710:0xbb8,_0x4b64eb=setTimeout(()=>{removeToastById(_0x393bdb);},_0x535c27),_0x118026={'id':_0x393bdb,'el':_0x330286,'timeoutId':_0x4b64eb};return registerToast(_0x118026),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x330286['classList']['add']('show');});}),_0x393bdb;},'showError'(_0x50b0b6){console['error'](_0x50b0b6);const _0x1ffc41=typeof _0x50b0b6==='string'?_0x50b0b6:_0x50b0b6['message']||'An\x20error\x20occurred';this['showToast'](_0x1ffc41,'error');},'showSuccess'(_0x8686a1){this['showToast'](_0x8686a1,'success');},'capitalize'(_0x1704b3){if(!_0x1704b3)return'';return _0x1704b3['charAt'](0x0)['toUpperCase']()+_0x1704b3['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x19712b){if(_0x19712b===null||_0x19712b===undefined)return'';return String(_0x19712b)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x21f4d9){if(_0x21f4d9===null||_0x21f4d9===undefined)return'';let _0x360f67=this['escapeHtml'](_0x21f4d9);const _0x47c334={'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'},_0x12114c={'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 _0x4de110=0x0;return _0x360f67=_0x360f67['replace'](/\x1b\[([0-9;]*)m/g,(_0x149d14,_0x17236c)=>{if(!_0x17236c||_0x17236c==='0'){const _0x2426d9='</span>'['repeat'](_0x4de110);return _0x4de110=0x0,_0x2426d9;}const _0x40ddf3=_0x17236c['split'](';'),_0x481710=[];for(const _0x361367 of _0x40ddf3){if(_0x361367==='1')_0x481710['push']('font-weight:bold');else{if(_0x361367==='2')_0x481710['push']('opacity:0.7');else{if(_0x361367==='3')_0x481710['push']('font-style:italic');else{if(_0x361367==='4')_0x481710['push']('text-decoration:underline');else{if(_0x361367==='9')_0x481710['push']('text-decoration:line-through');else{if(_0x47c334[_0x361367])_0x481710['push']('color:'+_0x47c334[_0x361367]);else{if(_0x12114c[_0x361367])_0x481710['push']('background-color:'+_0x12114c[_0x361367]);}}}}}}}if(_0x481710['length']>0x0)return _0x4de110++,'<span\x20style=\x22'+_0x481710['join'](';')+'\x22>';return'';}),_0x360f67+='</span>'['repeat'](_0x4de110),_0x360f67=_0x360f67['replace'](/\\u001b\[([0-9;]*)m/g,(_0x36230e,_0x47e479)=>{if(!_0x47e479||_0x47e479==='0')return'';const _0x16f11c=_0x47e479['split'](';'),_0x309922=[];for(const _0x151287 of _0x16f11c){if(_0x151287==='1')_0x309922['push']('font-weight:bold');else{if(_0x47c334[_0x151287])_0x309922['push']('color:'+_0x47c334[_0x151287]);else{if(_0x12114c[_0x151287])_0x309922['push']('background-color:'+_0x12114c[_0x151287]);}}}if(_0x309922['length']>0x0)return'<span\x20style=\x22'+_0x309922['join'](';')+'\x22>';return'';}),_0x360f67;},'showModal'({title:_0x568150,content:_0x2c6eb2,buttons:buttons=[]}){const _0x279f30='\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'](_0x568150)+'</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'+_0x2c6eb2+'\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']((_0x592d6b,_0x2bdbb4)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x592d6b['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x2bdbb4+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x592d6b['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',_0x5f015a=document['createElement']('div');_0x5f015a['id']='utils-modal',_0x5f015a['className']='modal',_0x5f015a['innerHTML']=_0x279f30,document['body']['appendChild'](_0x5f015a);const _0x124b7c=document['getElementById']('utils-modal-close');_0x124b7c&&_0x124b7c['addEventListener']('click',()=>this['hideModal']());const _0x8452e=_0x5f015a['querySelectorAll']('[data-btn-index]');_0x8452e['forEach'](_0x4bb66b=>{const _0xe4cec3=parseInt(_0x4bb66b['dataset']['btnIndex']);buttons[_0xe4cec3]?.['onClick']&&_0x4bb66b['addEventListener']('click',buttons[_0xe4cec3]['onClick']);});const _0x17cfca=document['getElementById']('utils-modal-overlay');_0x17cfca&&_0x17cfca['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x539eed=document['getElementById']('utils-modal');_0x539eed&&_0x539eed['remove']();},'parseKeyValuePairs'(_0x4b74cc){const _0x3cc075={};if(!_0x4b74cc)return _0x3cc075;return _0x4b74cc['split'](/\r?\n/)['map'](_0x3dc8aa=>_0x3dc8aa['trim']())['filter'](Boolean)['forEach'](_0x21b32d=>{const _0x539e27=_0x21b32d['indexOf']('=');if(_0x539e27>0x0){const _0x256993=_0x21b32d['slice'](0x0,_0x539e27)['trim'](),_0x24346f=_0x21b32d['slice'](_0x539e27+0x1)['trim']();if(_0x256993)_0x3cc075[_0x256993]=_0x24346f;}}),_0x3cc075;},'debounce'(_0x3dcf01,_0x46a059=0xfa){let _0x32d49a=null;return(..._0x26fd03)=>{clearTimeout(_0x32d49a),_0x32d49a=setTimeout(()=>_0x3dcf01['apply'](this,_0x26fd03),_0x46a059);};},'formatTimestamp'(_0x12a772){if(!_0x12a772)return'N/A';const _0x32fc19=new Date(_0x12a772);return _0x32fc19['toLocaleDateString']()+'\x20'+_0x32fc19['toLocaleTimeString']();},'getQueryParams'(){const _0x3de2e7=new URLSearchParams(window['location']['search']),_0x4efa00={};for(const [_0x5597d4,_0x477073]of _0x3de2e7){_0x4efa00[_0x5597d4]=_0x477073;}return _0x4efa00;},'formatDuration'(_0x5b5a3d,_0x1105bb){if(!_0x5b5a3d)return'N/A';const _0x4ac1bd=new Date(_0x5b5a3d),_0x7cf79b=_0x1105bb?new Date(_0x1105bb):new Date(),_0x3a5998=_0x7cf79b-_0x4ac1bd;if(_0x3a5998<0x0)return'0s';const _0x43214e=Math['floor'](_0x3a5998/0x3e8),_0x470112=Math['floor'](_0x43214e/0x3c),_0x2d1af2=Math['floor'](_0x470112/0x3c),_0x2bf7b=Math['floor'](_0x2d1af2/0x18);if(_0x43214e<0x3c)return _0x43214e+'s';if(_0x470112<0x3c)return _0x470112+'m\x20'+_0x43214e%0x3c+'s';if(_0x2d1af2<0x18)return _0x2d1af2+'h\x20'+_0x470112%0x3c+'m\x20'+_0x43214e%0x3c+'s';return _0x2bf7b+'d\x20'+_0x2d1af2%0x18+'h\x20'+_0x470112%0x3c+'m';},'renderMarkdown'(_0x32c545,_0x1d2d01={}){if(!_0x32c545)return'';_0x32c545=this['rewriteAttachmentLinks'](_0x32c545,_0x1d2d01),_0x32c545=this['rewriteColorSyntax'](_0x32c545);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x51dcee=new marked['Renderer'](),_0x5e6d2f=_0x51dcee['code']['bind'](_0x51dcee);_0x51dcee['code']=function(_0x399052,_0x53eff8){const _0x184a25=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x184a25&&_0x53eff8)try{const _0xac39e8=_0x184a25['getLanguage'](_0x53eff8)?_0x53eff8:'plaintext',_0x41fe12=_0x184a25['highlight'](_0x399052,{'language':_0xac39e8})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x53eff8+'\x22>'+_0x41fe12+'</code></pre>';}catch(_0x56ac6d){console['error']('Syntax\x20highlighting\x20error:',_0x56ac6d);}return _0x5e6d2f(_0x399052,_0x53eff8);};try{return marked['parse'](_0x32c545,{'renderer':_0x51dcee});}catch(_0x36d323){return console['error']('Markdown\x20parsing\x20error:',_0x36d323),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);}},'rewriteAttachmentLinks'(_0x22b8b9,_0x38091b={}){const _0x242a7a=typeof _0x38091b['resolveAttachmentUrl']==='function'?_0x38091b['resolveAttachmentUrl']:_0x38091b['taskId']?_0x15f8e5=>API_BASE+'/tasks/'+_0x38091b['taskId']+'/attachments/'+encodeURIComponent(_0x15f8e5):null;if(!_0x242a7a)return _0x22b8b9;return String(_0x22b8b9)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3fc4a2,_0x3f62e4)=>{const _0x54815c=String(_0x3f62e4||'')['trim']();if(!_0x54815c)return _0x3fc4a2;let _0x291e4f=_0x54815c;try{_0x291e4f=decodeURIComponent(_0x54815c);}catch{}const _0x38a44b=_0x242a7a(_0x291e4f);if(!_0x38a44b)return _0x3fc4a2;return']('+_0x38a44b+')';});},'rewriteColorSyntax'(_0x15d645){if(!_0x15d645)return _0x15d645;return String(_0x15d645)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1299fa,_0x40ae4e,_0x13cbb1)=>{const _0x423990=this['rewriteColorSyntax'](_0x13cbb1);return'<span\x20style=\x22color:\x20'+_0x40ae4e+'\x22>'+_0x423990+'</span>';});},'renderMarkdownFallback'(_0x2673d7,_0x5f37cb={}){if(!_0x2673d7)return'';_0x2673d7=_0x2673d7['replace'](/\r\n/g,'\x0a'),_0x2673d7=_0x2673d7['replace'](/\r/g,'\x0a'),_0x2673d7=this['rewriteAttachmentLinks'](_0x2673d7,_0x5f37cb);let _0x50549d=this['escapeHtml'](_0x2673d7);return _0x50549d=_0x50549d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x50549d=_0x50549d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x50549d=_0x50549d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x50549d=_0x50549d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x50549d=_0x50549d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x50549d=_0x50549d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x50549d=_0x50549d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x50549d=_0x50549d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x50549d=_0x50549d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x50549d=_0x50549d['replace'](/\n\n/g,'</p><p>'),_0x50549d=_0x50549d['replace'](/\n/g,'<br>'),'<p>'+_0x50549d+'</p>';}};export class CustomSelect{constructor(_0x48ee6c,_0x59f10e={}){this['nativeSelect']=_0x48ee6c,this['options']=_0x59f10e,this['isOpen']=![],this['selectedValue']=_0x48ee6c['value']||'',this['searchable']=_0x59f10e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x619a1c=document['createElement']('div');_0x619a1c['className']='custom-select';const _0x22328a=document['createElement']('div');_0x22328a['className']='custom-select-trigger',_0x22328a['setAttribute']('tabindex','0'),_0x22328a['setAttribute']('role','button'),_0x22328a['setAttribute']('aria-haspopup','listbox');const _0xecde51=document['createElement']('span');_0xecde51['className']='custom-select-trigger-text';const _0x8c454f=document['createElement']('span');_0x8c454f['className']='custom-select-arrow',_0x8c454f['textContent']='▼',_0x22328a['appendChild'](_0xecde51),_0x22328a['appendChild'](_0x8c454f);const _0x296b51=document['createElement']('div');_0x296b51['className']='custom-select-dropdown',_0x296b51['setAttribute']('role','listbox');if(this['searchable']){const _0x3c6b61=document['createElement']('div');_0x3c6b61['className']='custom-select-search';const _0x5ccaff=document['createElement']('input');_0x5ccaff['type']='text',_0x5ccaff['className']='custom-select-search-input',_0x5ccaff['placeholder']='Type\x20to\x20search...',_0x5ccaff['setAttribute']('aria-label','Search\x20options'),_0x5ccaff['addEventListener']('input',_0x1ba500=>{this['searchQuery']=_0x1ba500['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x5ccaff['addEventListener']('keydown',_0x3fa750=>{if(_0x3fa750['key']==='Escape')_0x3fa750['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3fa750['key']==='Enter'){_0x3fa750['preventDefault'](),_0x3fa750['stopPropagation']();const _0xe4dd64=_0x296b51['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xe4dd64){const _0x29e27f=_0xe4dd64['getAttribute']('data-value');this['select'](_0x29e27f);}}}}),_0x3c6b61['appendChild'](_0x5ccaff),_0x296b51['appendChild'](_0x3c6b61),this['searchInput']=_0x5ccaff;}const _0x45c560=document['createElement']('div');_0x45c560['className']='custom-select-options',_0x296b51['appendChild'](_0x45c560),_0x619a1c['appendChild'](_0x22328a),_0x619a1c['appendChild'](_0x296b51),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x619a1c,this['nativeSelect']),this['wrapper']=_0x619a1c,this['trigger']=_0x22328a,this['triggerText']=_0xecde51,this['dropdown']=_0x296b51,this['optionsContainer']=_0x45c560,_0x22328a['addEventListener']('click',()=>this['toggle']()),_0x22328a['addEventListener']('keydown',_0x35958b=>this['handleKeydown'](_0x35958b)),document['addEventListener']('click',_0x48ebcb=>{!_0x619a1c['contains'](_0x48ebcb['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x447fce=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x447fce['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x40f978=new MutationObserver(()=>{this['updateDisabledState']();});_0x40f978['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5efd8a=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5efd8a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x17e506=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x17e506),this['trigger']['setAttribute']('aria-disabled',_0x17e506?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x17e506?'-1':'0'),_0x17e506&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x405981=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x506713=_0x405981['filter'](_0x4eed54=>!_0x4eed54['disabled']&&!_0x4eed54['hidden']);_0x405981['forEach']((_0x1571fc,_0x287dfb)=>{const _0x2ff793=document['createElement']('div');_0x2ff793['className']='custom-select-option',_0x2ff793['textContent']=_0x1571fc['textContent'],_0x2ff793['setAttribute']('data-value',_0x1571fc['value']),_0x2ff793['setAttribute']('data-index',_0x287dfb),_0x2ff793['setAttribute']('role','option'),_0x1571fc['disabled']?_0x2ff793['classList']['add']('disabled'):_0x2ff793['addEventListener']('click',()=>this['select'](_0x1571fc['value'])),_0x1571fc['value']===this['selectedValue']&&_0x2ff793['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ff793),this['allOptions']['push']({'element':_0x2ff793,'text':_0x1571fc['textContent']['toLowerCase'](),'value':_0x1571fc['value'],'disabled':_0x1571fc['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4bdd7f=this['searchInput']['parentElement'];_0x506713['length']>0x3?_0x4bdd7f['style']['display']='':_0x4bdd7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4c2ccd=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1341cc=>{if(!_0x4c2ccd||_0x1341cc['disabled'])_0x1341cc['element']['style']['display']='';else{const _0x269041=_0x1341cc['text']['includes'](_0x4c2ccd);_0x1341cc['element']['style']['display']=_0x269041?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x18142b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x18142b,this['nativeSelect']['value']=_0x18142b;const _0x3cbde6=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3cbde6),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x56b3f8=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x56b3f8&&(this['triggerText']['textContent']=_0x56b3f8['textContent'],_0x56b3f8['disabled']||_0x56b3f8['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3449f3=>{_0x3449f3['getAttribute']('data-value')===this['selectedValue']?_0x3449f3['classList']['add']('selected'):_0x3449f3['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 _0x15ee6f=window['getComputedStyle'](this['dropdown']);if(_0x15ee6f['position']==='fixed'){const _0x298d81=this['trigger']['getBoundingClientRect'](),_0x990ba6=parseInt(_0x15ee6f['maxHeight'])||0xc8,_0x1b3c32=window['innerHeight'],_0x2c4960=_0x1b3c32-_0x298d81['bottom'],_0x3cd32f=_0x298d81['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0xa167e0;_0x2c4960<_0x990ba6&&_0x3cd32f>_0x2c4960?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x1b3c32-_0x298d81['top']+'px',_0xa167e0=Math['min'](_0x990ba6,_0x3cd32f-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x298d81['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0xa167e0=Math['min'](_0x990ba6,_0x2c4960-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px');if(this['optionsContainer']){let _0x3854bd=_0xa167e0;if(this['searchInput']){const _0x3faf4e=this['searchInput']['parentElement'];_0x3faf4e&&(_0x3854bd-=_0x3faf4e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3854bd)+'px';}this['dropdown']['style']['left']=_0x298d81['left']+'px',this['dropdown']['style']['width']=_0x298d81['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x30145b=this['searchInput']['parentElement'];_0x30145b&&_0x30145b['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'](_0x5545c9){if(this['nativeSelect']['disabled'])return;if(_0x5545c9['key']==='Enter'||_0x5545c9['key']==='\x20')_0x5545c9['preventDefault'](),this['toggle']();else _0x5545c9['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x521455='\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',_0x521455),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1e7dc3=document['getElementById']('confirm-dialog-close'),_0x5e3baa=document['getElementById']('confirm-dialog-cancel'),_0x7dd75b=document['getElementById']('confirm-dialog-confirm'),_0x3340c1=this['_modal']['querySelector']('.modal-overlay');_0x1e7dc3['addEventListener']('click',()=>this['_resolve'](![])),_0x5e3baa['addEventListener']('click',()=>this['_resolve'](![])),_0x7dd75b['addEventListener']('click',()=>this['_resolve'](!![])),_0x3340c1['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x480088=>{if(_0x480088['key']==='Escape')_0x480088['preventDefault'](),this['_resolve'](![]);else _0x480088['key']==='Enter'&&(_0x480088['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x24d78f,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x95ca6=>{this['_resolvePromise']=_0x95ca6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x24d78f;const _0x31bb7b=document['getElementById']('confirm-dialog-cancel'),_0x57a6ad=document['getElementById']('confirm-dialog-confirm');_0x31bb7b['textContent']=cancelText,_0x57a6ad['textContent']=confirmText,_0x57a6ad['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x57a6ad['focus']();});},'_resolve'(_0x84acfe){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x84acfe),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x5b96be,_0x4fb385={}){this['container']=_0x5b96be,this['options']={'placeholder':_0x4fb385['placeholder']||'Type\x20to\x20search...','maxItems':_0x4fb385['maxItems']||0x64,'loadItems':_0x4fb385['loadItems']||(async()=>[]),'renderItem':_0x4fb385['renderItem']||(_0x1cfd17=>({'primary':String(_0x1cfd17),'secondary':''})),'onSelect':_0x4fb385['onSelect']||(()=>{}),'filterItems':_0x4fb385['filterItems']||null,'getItemValue':_0x4fb385['getItemValue']||(_0x17c371=>_0x17c371),'sortItems':_0x4fb385['sortItems']||null,'debounceMs':_0x4fb385['debounceMs']||0xc8,'minCharsForSearch':_0x4fb385['minCharsForSearch']||0x0,'emptyMessage':_0x4fb385['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4fb385['loadingMessage']||'Loading...','preload':_0x4fb385['preload']!==![],'searchMode':_0x4fb385['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',_0x23d698=>this['onBlur'](_0x23d698)),this['input']['addEventListener']('input',_0x41ec6e=>this['onInput'](_0x41ec6e)),this['input']['addEventListener']('keydown',_0x4d79e8=>this['onKeydown'](_0x4d79e8)),this['clearBtn']['addEventListener']('mousedown',_0x3c7e01=>{_0x3c7e01['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x237302=>{_0x237302['preventDefault']();}),document['addEventListener']('click',_0x5e5784=>{!this['wrapper']['contains'](_0x5e5784['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(_0x329e49){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x329e49);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x1c8f36){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x163037){const _0x275aee=_0x163037['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x275aee);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x275aee):this['loadAndShow'](_0x275aee);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x3019e0){switch(_0x3019e0['key']){case'ArrowDown':_0x3019e0['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x3019e0['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x3019e0['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x3019e0['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x58b974){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x39e16b=this['selectedIndex']+_0x58b974;if(_0x39e16b>=0x0&&_0x39e16b<this['filteredItems']['length']){this['selectedIndex']=_0x39e16b,this['updateSelectionHighlight']();const _0x5afc56=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5afc56[this['selectedIndex']]&&_0x5afc56[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4fc5ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4fc5ce['forEach']((_0x434062,_0x2a615d)=>{_0x434062['classList']['toggle']('keyboard-selected',_0x2a615d===this['selectedIndex']);});}async['loadAndShow'](_0x1a7185){this['showLoading']();try{const _0x5585a8=await this['options']['loadItems'](_0x1a7185);if(this['options']['searchMode']==='server'){let _0x1be257=_0x5585a8;this['options']['sortItems']&&(_0x1be257=this['options']['sortItems']([..._0x5585a8]));this['filteredItems']=_0x1be257;const _0x52734c=this['filteredItems']['length']>=this['options']['maxItems'];_0x52734c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x52734c),this['open']();}else this['allItems']=_0x5585a8,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x1a7185);}catch(_0x59550a){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x59550a),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x29af52){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x29af52):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2d41a8=this['filteredItems']['length']>=this['options']['maxItems'];_0x2d41a8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2d41a8),this['open']();}['renderItems'](_0x577eec){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']((_0x4e32ce,_0x257fee)=>{const _0x32dae5=document['createElement']('div');_0x32dae5['className']='autocomplete-select-item',_0x32dae5['setAttribute']('role','option'),_0x32dae5['setAttribute']('data-index',_0x257fee);const _0x5e374c=this['options']['renderItem'](_0x4e32ce);let _0x340316='';_0x5e374c['icon']&&(_0x340316='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5e374c['iconClass']||'')+'\x22>'+_0x5e374c['icon']+'</span>'),_0x32dae5['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x340316+'\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'](_0x5e374c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5e374c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5e374c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x32dae5['addEventListener']('click',()=>{this['selectItem'](_0x4e32ce);}),_0x32dae5['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x257fee,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x32dae5);}),_0x577eec?(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'](_0x232760){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x232760)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4a0e89){this['selectedItem']=_0x4a0e89;const _0x3d59e8=this['options']['renderItem'](_0x4a0e89);this['input']['value']=_0x3d59e8['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4a0e89);}['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'](_0x156c33){if(_0x156c33){this['selectedItem']=_0x156c33;const _0xbb7821=this['options']['renderItem'](_0x156c33);this['input']['value']=_0xbb7821['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x313e54){this['allItems']=_0x313e54,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'](_0x35ff8f){this['input']['placeholder']=_0x35ff8f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x2f6543=null){const _0x5e62b8=document['getElementById']('admin-menu-container'),_0x37422a=document['getElementById']('admin-menu-btn'),_0x2509ee=document['getElementById']('admin-menu');if(!_0x5e62b8||!_0x37422a||!_0x2509ee)return;try{!_0x2f6543&&(_0x2f6543=await API['getCurrentUser']());if(_0x2f6543){const _0x7538f2=_0x2f6543['hasAllPermissions']||_0x2f6543['hasEnvironmentsManage']||_0x2f6543['canCreateUsers']||_0x2f6543['canManageTeams']||_0x2f6543['hasEnvironmentBindings'];if(!_0x7538f2)return;_0x5e62b8['hidden']=![];if(!_0x2f6543['hasAllPermissions']){const _0xde7f8=_0x2509ee['querySelectorAll']('.admin-menu-item');_0xde7f8['forEach'](_0xebdb54=>{const _0x3ad07b=_0xebdb54['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3ad07b==='Users'&&!_0x2f6543['canCreateUsers']&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Skills'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Settings'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Health'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Git\x20History'&&(_0xebdb54['hidden']=!![]);});}_0x37422a['addEventListener']('click',_0x529fd7=>{_0x529fd7['stopPropagation']();const _0x4b3214=document['getElementById']('actions-menu');if(_0x4b3214)_0x4b3214['hidden']=!![];_0x2509ee['hidden']=!_0x2509ee['hidden'];}),document['addEventListener']('click',_0x481c19=>{!_0x2509ee['hidden']&&!_0x37422a['contains'](_0x481c19['target'])&&!_0x2509ee['contains'](_0x481c19['target'])&&(_0x2509ee['hidden']=!![]);}),document['addEventListener']('keydown',_0x6e5145=>{_0x6e5145['key']==='Escape'&&!_0x2509ee['hidden']&&(_0x2509ee['hidden']=!![]);});const _0x53fac5=document['getElementById']('server-health-btn');_0x53fac5&&_0x53fac5['addEventListener']('click',async()=>{_0x2509ee['hidden']=!![];const {openServerHealthModal:_0x103323}=await import('./server-health.js');_0x103323();});}}catch(_0x3275ca){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x3275ca['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|