@profoundlogic/coderflow-server 0.7.5 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/agent-wrapper.sh +3 -1
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/shipped-skills/environment-templates/SKILL.md +152 -17
- 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.css +6 -0
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/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-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0xf77772=window['location']['pathname'],_0x14c53a=_0xf77772['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x14c53a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x14c53a[0x1]),_0x14c53a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4743b1={}){const _0x4c724d=new URLSearchParams();_0x4743b1['userId']&&_0x4c724d['set']('userId',String(_0x4743b1['userId']));_0x4743b1['automation']&&_0x4c724d['set']('automation',String(_0x4743b1['automation']));const _0x4eeab1=API_BASE+'/tasks/stats'+(_0x4c724d['toString']()?'?'+_0x4c724d['toString']():''),_0x514be8=await fetch(_0x4eeab1);if(!_0x514be8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x514be8['statusText']);return await _0x514be8['json']();},async 'getTasks'(_0x9e405a={}){const _0x4a5d30=new URLSearchParams();_0x9e405a['status']&&_0x4a5d30['set']('status',String(_0x9e405a['status']));_0x9e405a['environment']&&_0x4a5d30['set']('environment',String(_0x9e405a['environment']));_0x9e405a['automation']&&_0x4a5d30['set']('automation',String(_0x9e405a['automation']));if(_0x9e405a['include']){const _0x60338d=Array['isArray'](_0x9e405a['include'])?_0x9e405a['include']['join'](','):String(_0x9e405a['include']);_0x60338d&&_0x4a5d30['set']('include',_0x60338d);}_0x9e405a['filter']&&_0x4a5d30['set']('filter',String(_0x9e405a['filter']));_0x9e405a['page']&&_0x4a5d30['set']('page',String(_0x9e405a['page']));_0x9e405a['limit']&&_0x4a5d30['set']('limit',String(_0x9e405a['limit']));_0x9e405a['userId']&&_0x4a5d30['set']('userId',String(_0x9e405a['userId']));_0x9e405a['search']&&_0x4a5d30['set']('search',String(_0x9e405a['search']));_0x9e405a['includeChildTasks']&&_0x4a5d30['set']('includeChildTasks','true');const _0x2b115c=API_BASE+'/tasks'+(_0x4a5d30['toString']()?'?'+_0x4a5d30['toString']():''),_0x4ce87e=await fetch(_0x2b115c);if(!_0x4ce87e['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4ce87e['statusText']);return await _0x4ce87e['json']();},async 'getAutomations'(_0x2a27c5={}){const _0x360c2a=new URLSearchParams();_0x2a27c5['environment']&&_0x360c2a['set']('environment',String(_0x2a27c5['environment']));const _0x4226af=await fetch(API_BASE+'/api/automations'+(_0x360c2a['toString']()?'?'+_0x360c2a['toString']():''));if(!_0x4226af['ok']){const _0x28b6e0=await _0x4226af['json']()['catch'](()=>({}));throw new Error(_0x28b6e0['message']||_0x28b6e0['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4226af['statusText']);}return await _0x4226af['json']();},async 'getAutomation'(_0x1c31f7){const _0x539de7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c31f7));if(!_0x539de7['ok']){const _0x1e64c1=await _0x539de7['json']()['catch'](()=>({}));throw new Error(_0x1e64c1['message']||_0x1e64c1['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539de7['statusText']);}return await _0x539de7['json']();},async 'createAutomation'(_0xcec2f8){const _0x276401=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcec2f8||{})});if(!_0x276401['ok']){const _0xb324ed=await _0x276401['json']()['catch'](()=>({}));throw new Error(_0xb324ed['message']||_0xb324ed['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x276401['statusText']);}return await _0x276401['json']();},async 'updateAutomation'(_0x913043,_0x195e47){const _0x915938=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x913043),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195e47||{})});if(!_0x915938['ok']){const _0xc7d5af=await _0x915938['json']()['catch'](()=>({}));throw new Error(_0xc7d5af['message']||_0xc7d5af['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x915938['statusText']);}return await _0x915938['json']();},async 'deleteAutomation'(_0x809c9f){const _0x149bea=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x809c9f),{'method':'DELETE'});if(!_0x149bea['ok']){const _0x4eac0b=await _0x149bea['json']()['catch'](()=>({}));throw new Error(_0x4eac0b['message']||_0x4eac0b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x149bea['statusText']);}return await _0x149bea['json']();},async 'triggerAutomation'(_0x127eb9){const _0xa8ccc2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x127eb9)+'/trigger',{'method':'POST'});if(!_0xa8ccc2['ok']){const _0x529c41=await _0xa8ccc2['json']()['catch'](()=>({}));throw new Error(_0x529c41['message']||_0x529c41['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa8ccc2['statusText']);}return await _0xa8ccc2['json']();},async 'setAutomationEnabled'(_0x1acd6e,_0xe6eec3){const _0x8afeb3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1acd6e)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe6eec3})});if(!_0x8afeb3['ok']){const _0x4194f4=await _0x8afeb3['json']()['catch'](()=>({}));throw new Error(_0x4194f4['message']||_0x4194f4['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x8afeb3['statusText']);}return await _0x8afeb3['json']();},async 'getAutomationHistory'(_0x2f351c,_0x13a11f=0x32){const _0x125920=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f351c)+'/history?limit='+encodeURIComponent(String(_0x13a11f)));if(!_0x125920['ok']){const _0x7eaf5a=await _0x125920['json']()['catch'](()=>({}));throw new Error(_0x7eaf5a['message']||_0x7eaf5a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x125920['statusText']);}return await _0x125920['json']();},async 'getTask'(_0x14346b,_0xe8a522={}){const _0x401b32=new URLSearchParams();if(_0xe8a522['include']){const _0x1411ad=Array['isArray'](_0xe8a522['include'])?_0xe8a522['include']['join'](','):String(_0xe8a522['include']);if(_0x1411ad)_0x401b32['set']('include',_0x1411ad);}const _0xd35fe4=await fetch(API_BASE+'/tasks/'+_0x14346b+(_0x401b32['toString']()?'?'+_0x401b32['toString']():''));if(!_0xd35fe4['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xd35fe4['statusText']);return await _0xd35fe4['json']();},async 'getTaskResults'(_0x3a17d5){const _0x180c8f=await fetch(API_BASE+'/tasks/'+_0x3a17d5+'/results');if(!_0x180c8f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x180c8f['statusText']);return await _0x180c8f['json']();},async 'getTaskPatches'(_0x50586e){const _0x1f9a6a=await fetch(API_BASE+'/tasks/'+_0x50586e+'/patches');if(!_0x1f9a6a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1f9a6a['statusText']);return await _0x1f9a6a['json']();},async 'getTaskAttachments'(_0x58587c){const _0x28bec7=await fetch(API_BASE+'/tasks/'+_0x58587c+'/attachments');if(!_0x28bec7['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x28bec7['statusText']);return await _0x28bec7['json']();},async 'uploadAttachments'(_0x39de27,_0x5bf0b2){const _0x1e96e1=new FormData();for(const _0x257a0f of _0x5bf0b2){_0x1e96e1['append']('attachments',_0x257a0f);}const _0x11cc98=await fetch(API_BASE+'/tasks/'+_0x39de27+'/attachments',{'method':'POST','body':_0x1e96e1});if(!_0x11cc98['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x11cc98['statusText']);return await _0x11cc98['json']();},async 'isAINameGenerationAvailable'(){try{const _0x25a756=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x25a756['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x25a756['json']();}catch(_0x2e1d2a){return{'available':![],'reason':_0x2e1d2a['message']};}},async 'generateTaskName'(_0x568af4){try{const _0x581042=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x568af4})});return await _0x581042['json']();}catch(_0x3ec8f3){return{'success':![],'error':_0x3ec8f3['message']};}},async 'createTask'(_0x5c2598){let _0x4517b4,_0x124c76={};if(_0x5c2598['files']&&_0x5c2598['files']['length']>0x0){const _0x5b665a=new FormData();for(const [_0x4f040b,_0x513c4c]of Object['entries'](_0x5c2598)){if(_0x4f040b!=='files'){if(_0x513c4c==null)continue;typeof _0x513c4c==='object'?_0x5b665a['append'](_0x4f040b,JSON['stringify'](_0x513c4c)):_0x5b665a['append'](_0x4f040b,String(_0x513c4c));}}for(const _0x17a843 of _0x5c2598['files']){_0x5b665a['append']('attachments',_0x17a843);}_0x4517b4=_0x5b665a;}else _0x124c76['Content-Type']='application/json',_0x4517b4=JSON['stringify'](_0x5c2598);const _0x47fa8b=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x124c76,'body':_0x4517b4});if(!_0x47fa8b['ok']){const _0x8fe7ad=await _0x47fa8b['json'](),_0x3adb8f=new Error(_0x8fe7ad['error']||'Failed\x20to\x20create\x20task:\x20'+_0x47fa8b['statusText']),{message:_0x3e62d8,..._0x2c1167}=_0x8fe7ad;Object['assign'](_0x3adb8f,_0x2c1167);throw _0x3adb8f;}return await _0x47fa8b['json']();},async 'createTestTask'(_0x2de358){const _0x2c623b=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2de358)});if(!_0x2c623b['ok']){const _0x46248a=await _0x2c623b['json']();throw new Error(_0x46248a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x2c623b['statusText']);}return await _0x2c623b['json']();},async 'createEphemeralTest'(_0x33395a){const _0x263d7c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33395a)});if(!_0x263d7c['ok']){const _0x9d2d8f=await _0x263d7c['json']();throw new Error(_0x9d2d8f['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x263d7c['statusText']);}return await _0x263d7c['json']();},async 'createDeployTask'(_0x53501e){const _0x58c20b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53501e)});if(!_0x58c20b['ok']){const _0xb46254=await _0x58c20b['json']();throw new Error(_0xb46254['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x58c20b['statusText']);}return await _0x58c20b['json']();},async 'getEnvironments'(){const _0x2cd8eb=await fetch(API_BASE+'/environments');if(!_0x2cd8eb['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2cd8eb['statusText']);return await _0x2cd8eb['json']();},async 'getEnvironment'(_0x4b53e6){const _0x1d6802=await fetch(API_BASE+'/environments/'+_0x4b53e6);if(!_0x1d6802['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1d6802['statusText']);return await _0x1d6802['json']();},async 'getEnvironmentRepoHistory'(_0x2fe623,_0x5553c6,_0x5c423e={}){if(!_0x2fe623||!_0x5553c6)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x220502=new URLSearchParams();if(_0x5c423e['limit'])_0x220502['set']('limit',String(_0x5c423e['limit']));if(_0x5c423e['offset'])_0x220502['set']('offset',String(_0x5c423e['offset']));if(_0x5c423e['search'])_0x220502['set']('search',String(_0x5c423e['search']));if(_0x5c423e['branch'])_0x220502['set']('branch',String(_0x5c423e['branch']));const _0x45720f=API_BASE+'/environments/'+encodeURIComponent(_0x2fe623)+'/repos/'+encodeURIComponent(_0x5553c6)+'/git/history',_0xd41bce=await fetch(''+_0x45720f+(_0x220502['toString']()?'?'+_0x220502['toString']():''));if(!_0xd41bce['ok']){const _0x11fd2d=await _0xd41bce['json']()['catch'](()=>({}));throw new Error(_0x11fd2d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0xd41bce['statusText']);}return await _0xd41bce['json']();},async 'getEnvironmentRepoCommit'(_0x24c751,_0x11d6c9,_0x2ca77a){if(!_0x24c751||!_0x11d6c9||!_0x2ca77a)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87ff78=API_BASE+'/environments/'+encodeURIComponent(_0x24c751)+'/repos/'+encodeURIComponent(_0x11d6c9)+'/git/commits/'+encodeURIComponent(_0x2ca77a),_0x415fc4=await fetch(_0x87ff78);if(!_0x415fc4['ok']){const _0x4bcb20=await _0x415fc4['json']()['catch'](()=>({}));throw new Error(_0x4bcb20['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x415fc4['statusText']);}return await _0x415fc4['json']();},async 'getEnvironmentRepoBranches'(_0x41e141,_0x1ad26a){if(!_0x41e141||!_0x1ad26a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3d9946=API_BASE+'/environments/'+encodeURIComponent(_0x41e141)+'/repos/'+encodeURIComponent(_0x1ad26a)+'/git/branches',_0xd00936=await fetch(_0x3d9946);if(!_0xd00936['ok']){const _0x39aaf2=await _0xd00936['json']()['catch'](()=>({}));throw new Error(_0x39aaf2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xd00936['statusText']);}return await _0xd00936['json']();},async 'revertEnvironmentRepoCommit'(_0x576286,_0x38b9e1,_0x333ea4,_0x489de9={}){if(!_0x576286||!_0x38b9e1||!_0x333ea4)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b7843=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x576286)+'/repos/'+encodeURIComponent(_0x38b9e1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x333ea4,..._0x489de9})});if(!_0x2b7843['ok']){const _0x1164ad=await _0x2b7843['json']()['catch'](()=>({}));throw new Error(_0x1164ad['message']||_0x1164ad['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b7843['statusText']);}return await _0x2b7843['json']();},async 'getTemplates'(_0x23e8cf={}){const _0x2cca8a=new URLSearchParams();if(_0x23e8cf['include']){const _0x3b602f=Array['isArray'](_0x23e8cf['include'])?_0x23e8cf['include']['join'](','):String(_0x23e8cf['include']);if(_0x3b602f)_0x2cca8a['set']('include',_0x3b602f);}const _0xfaf8=await fetch(API_BASE+'/templates'+(_0x2cca8a['toString']()?'?'+_0x2cca8a['toString']():''));if(!_0xfaf8['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0xfaf8['statusText']);return await _0xfaf8['json']();},async 'getTemplatesForEnvironment'(_0x1d4fc0,_0x418509={}){if(!_0x1d4fc0)throw new Error('Environment\x20name\x20is\x20required');const _0x3b7155=new URLSearchParams();if(_0x418509['include']){const _0x222d06=Array['isArray'](_0x418509['include'])?_0x418509['include']['join'](','):String(_0x418509['include']);if(_0x222d06)_0x3b7155['set']('include',_0x222d06);}const _0x958913=await fetch(API_BASE+'/templates/'+_0x1d4fc0+(_0x3b7155['toString']()?'?'+_0x3b7155['toString']():''));if(!_0x958913['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x1d4fc0+':\x20'+_0x958913['statusText']);return await _0x958913['json']();},async 'getTemplate'(_0x441a4f,_0x3d4143,_0x2e9311={}){if(!_0x441a4f||!_0x3d4143)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x461e10=new URLSearchParams();if(_0x2e9311['include']){const _0x3a96f4=Array['isArray'](_0x2e9311['include'])?_0x2e9311['include']['join'](','):String(_0x2e9311['include']);if(_0x3a96f4)_0x461e10['set']('include',_0x3a96f4);}const _0x105ba7=await fetch(API_BASE+'/templates/'+_0x441a4f+'/'+_0x3d4143+(_0x461e10['toString']()?'?'+_0x461e10['toString']():''));if(!_0x105ba7['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x105ba7['statusText']);return await _0x105ba7['json']();},async 'getTaskLogs'(_0x2129b4,_0xa20923={}){if(!_0x2129b4)throw new Error('Task\x20ID\x20is\x20required');const _0x31078e=new URLSearchParams();_0xa20923['tail']&&_0x31078e['set']('tail',String(_0xa20923['tail']));const _0x4c8e42=await fetch(API_BASE+'/tasks/'+_0x2129b4+'/logs'+(_0x31078e['toString']()?'?'+_0x31078e['toString']():''));if(!_0x4c8e42['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x4c8e42['statusText']);return await _0x4c8e42['text']();},async 'getContainers'(){const _0x2e3066=await fetch(API_BASE+'/containers');if(!_0x2e3066['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2e3066['statusText']);return await _0x2e3066['json']();},async 'getContainer'(_0x2b9759){const _0x5ae44e=await fetch(API_BASE+'/containers/'+_0x2b9759);if(!_0x5ae44e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ae44e['statusText']);return await _0x5ae44e['json']();},async 'startInteractiveContainer'(_0x4fee50){const _0x2ad9cf=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fee50)});if(!_0x2ad9cf['ok']){const _0x5e18fd=await _0x2ad9cf['json']()['catch'](()=>({}));throw new Error(_0x5e18fd['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2ad9cf['statusText']);}return await _0x2ad9cf['json']();},async 'startContainerCodeServer'(_0x1726fb,_0xd0b934={}){if(!_0x1726fb)throw new Error('Container\x20ID\x20is\x20required');const _0xc6e470=new URLSearchParams();_0xd0b934['theme']&&_0xc6e470['set']('theme',_0xd0b934['theme']);const _0x2b9a19=await fetch(API_BASE+'/containers/'+_0x1726fb+'/code-server'+(_0xc6e470['toString']()?'?'+_0xc6e470['toString']():'')),_0x5ee94d=await _0x2b9a19['json']()['catch'](()=>({}));if(!_0x2b9a19['ok'])throw new Error(_0x5ee94d['message']||_0x5ee94d['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x2b9a19['statusText']);return _0x5ee94d;},async 'stopContainer'(_0x4fbcdb){const _0x499f08=await fetch(API_BASE+'/containers/'+_0x4fbcdb,{'method':'DELETE'});if(!_0x499f08['ok']){const _0x1c002a=await _0x499f08['json']()['catch'](()=>({}));throw new Error(_0x1c002a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x499f08['statusText']);}return await _0x499f08['json']();},async 'stopTask'(_0x2a4c8e){if(!_0x2a4c8e)throw new Error('Task\x20ID\x20is\x20required');const _0xc66dca=await fetch(API_BASE+'/tasks/'+_0x2a4c8e+'/stop',{'method':'POST'});if(!_0xc66dca['ok']){const _0x318c2f=await _0xc66dca['json']()['catch'](()=>({}));throw new Error(_0x318c2f['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xc66dca['statusText']);}return await _0xc66dca['json']();},async 'interruptTask'(_0x1a5ecf){if(!_0x1a5ecf)throw new Error('Task\x20ID\x20is\x20required');const _0x5a1651=await fetch(API_BASE+'/tasks/'+_0x1a5ecf+'/interrupt',{'method':'POST'});if(!_0x5a1651['ok']){const _0x41d6e8=await _0x5a1651['json']()['catch'](()=>({}));throw new Error(_0x41d6e8['error']||_0x41d6e8['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5a1651['statusText']);}return await _0x5a1651['json']();},async 'startTask'(_0x522ac6){if(!_0x522ac6)throw new Error('Task\x20ID\x20is\x20required');const _0x274713=await fetch(API_BASE+'/tasks/'+_0x522ac6+'/start',{'method':'POST'});if(!_0x274713['ok']){const _0x10301d=await _0x274713['json']()['catch'](()=>({}));throw new Error(_0x10301d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x274713['statusText']);}return await _0x274713['json']();},async 'deleteTask'(_0x177f1f){if(!_0x177f1f)throw new Error('Task\x20ID\x20is\x20required');const _0x9ddcd4=await fetch(API_BASE+'/tasks/'+_0x177f1f,{'method':'DELETE'});if(!_0x9ddcd4['ok']){const _0xc04fa=await _0x9ddcd4['json']()['catch'](()=>({}));throw new Error(_0xc04fa['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x9ddcd4['statusText']);}return await _0x9ddcd4['json']();},async 'refreshTasksFromDisk'(){const _0x28058c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x28058c['ok']){const _0x552488=await _0x28058c['json']()['catch'](()=>({}));throw new Error(_0x552488['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x28058c['statusText']);}return await _0x28058c['json']();},async 'approveTask'(_0x561380,_0x726cef={}){if(!_0x561380)throw new Error('Task\x20ID\x20is\x20required');const _0x3603dd={'commit_message':_0x726cef['commit_message']||'','pull':_0x726cef['pull']??![],'push':_0x726cef['push']??![]};_0x726cef['new_branch']&&(_0x3603dd['new_branch']=_0x726cef['new_branch']);const _0x9bbcff=await fetch(API_BASE+'/tasks/'+_0x561380+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3603dd)});if(!_0x9bbcff['ok']){const _0x36caa4=await _0x9bbcff['json']()['catch'](()=>({}));let _0xa5fb6e=_0x36caa4['error']||_0x36caa4['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x9bbcff['statusText'];if(_0x36caa4['results']&&Array['isArray'](_0x36caa4['results'])){const _0x327e74=_0x36caa4['results']['filter'](_0x2d5103=>!_0x2d5103['success']&&_0x2d5103['error']);_0x327e74['length']>0x0&&(_0xa5fb6e=_0x327e74[0x0]['error']);}throw new Error(_0xa5fb6e);}return await _0x9bbcff['json']();},async 'getPullRequestInfo'(_0x250ebc){if(!_0x250ebc)throw new Error('Task\x20ID\x20is\x20required');const _0x1bb2e3=await fetch(API_BASE+'/tasks/'+_0x250ebc+'/pull-request-info');if(!_0x1bb2e3['ok']){const _0x3f6c37=await _0x1bb2e3['json']()['catch'](()=>({}));throw new Error(_0x3f6c37['error']||_0x3f6c37['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1bb2e3['statusText']);}return await _0x1bb2e3['json']();},async 'createPullRequests'(_0x6a820a,_0x44cccc){if(!_0x6a820a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44cccc||!Array['isArray'](_0x44cccc))throw new Error('repos\x20array\x20is\x20required');const _0x1b4242=await fetch(API_BASE+'/tasks/'+_0x6a820a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x44cccc})});if(!_0x1b4242['ok']){const _0x34f915=await _0x1b4242['json']()['catch'](()=>({}));let _0x3b9d50=_0x34f915['error']||_0x34f915['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1b4242['statusText'];if(_0x34f915['results']&&Array['isArray'](_0x34f915['results'])){const _0xf6353b=_0x34f915['results']['filter'](_0x3b9c69=>!_0x3b9c69['success']&&_0x3b9c69['error']);_0xf6353b['length']>0x0&&(_0x3b9d50=_0xf6353b[0x0]['error']);}throw new Error(_0x3b9d50);}return await _0x1b4242['json']();},async 'syncRepos'(_0x1a7baa){if(!_0x1a7baa)throw new Error('Task\x20ID\x20is\x20required');const _0xca7545=await fetch(API_BASE+'/tasks/'+_0x1a7baa+'/sync-repos',{'method':'POST'});if(!_0xca7545['ok']){const _0x233e13=await _0xca7545['json']()['catch'](()=>({}));throw new Error(_0x233e13['error']||_0x233e13['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xca7545['statusText']);}return await _0xca7545['json']();},async 'getIbmiSyncInfo'(_0x2c578c){if(!_0x2c578c)throw new Error('Task\x20ID\x20is\x20required');const _0x21fff5=await fetch(API_BASE+'/tasks/'+_0x2c578c+'/ibmi-sync-info');if(!_0x21fff5['ok']){const _0x2a0753=await _0x21fff5['json']()['catch'](()=>({}));throw new Error(_0x2a0753['error']||_0x2a0753['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x21fff5['json']();},async 'getSyncFiles'(_0x2ae913){if(!_0x2ae913)throw new Error('Task\x20ID\x20is\x20required');const _0x451026=await fetch(API_BASE+'/tasks/'+_0x2ae913+'/sync-to-ibmi/files');if(!_0x451026['ok']){const _0x50f9eb=await _0x451026['json']()['catch'](()=>({}));throw new Error(_0x50f9eb['error']||_0x50f9eb['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x451026['json']();},async 'syncToIbmi'(_0x1c69db,_0x437183,_0x54595d=null,_0x1eed15=null,_0x52a08a=null){if(!_0x1c69db)throw new Error('Task\x20ID\x20is\x20required');const _0x2f97e1={'library':_0x437183};if(_0x54595d)_0x2f97e1['user']=_0x54595d;if(_0x1eed15)_0x2f97e1['password']=_0x1eed15;if(_0x52a08a)_0x2f97e1['files']=_0x52a08a;const _0x3b6d18=await fetch(API_BASE+'/tasks/'+_0x1c69db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f97e1)});if(!_0x3b6d18['ok']){const _0x5865cb=await _0x3b6d18['json']()['catch'](()=>({}));throw new Error(_0x5865cb['error']||_0x5865cb['message']||'Sync\x20failed');}return await _0x3b6d18['json']();},async 'getIbmiSyncLog'(_0x3b30a7){if(!_0x3b30a7)throw new Error('Task\x20ID\x20is\x20required');const _0x5ded18=await fetch(API_BASE+'/tasks/'+_0x3b30a7+'/ibmi-sync-log');if(!_0x5ded18['ok']){const _0x5d17ef=await _0x5ded18['json']()['catch'](()=>({}));throw new Error(_0x5d17ef['error']||_0x5d17ef['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5ded18['json']();},async 'pullChanges'(_0x30525e){if(!_0x30525e)throw new Error('Task\x20ID\x20is\x20required');const _0x56ef32=await fetch(API_BASE+'/tasks/'+_0x30525e+'/pull-changes',{'method':'POST'});if(!_0x56ef32['ok']){const _0x98ebfd=await _0x56ef32['json']()['catch'](()=>({}));throw new Error(_0x98ebfd['error']||_0x98ebfd['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x56ef32['statusText']);}return await _0x56ef32['json']();},async 'readFile'(_0x495420,_0x18f66e){if(!_0x495420)throw new Error('Task\x20ID\x20is\x20required');if(!_0x18f66e)throw new Error('File\x20path\x20is\x20required');const _0x402e21=await fetch(API_BASE+'/tasks/'+_0x495420+'/files?path='+encodeURIComponent(_0x18f66e));if(!_0x402e21['ok']){const _0x33750d=await _0x402e21['json']()['catch'](()=>({}));throw new Error(_0x33750d['error']||_0x33750d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x402e21['statusText']);}return await _0x402e21['json']();},'getTaskFileDownloadUrl'(_0x367de9,_0x344a38){if(!_0x367de9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x344a38)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x367de9+'/files/download?path='+encodeURIComponent(_0x344a38);},async 'writeFile'(_0x5e7219,_0x4d5dfa,_0x56fe70){if(!_0x5e7219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d5dfa)throw new Error('File\x20path\x20is\x20required');if(_0x56fe70===undefined)throw new Error('Content\x20is\x20required');const _0x502222=await fetch(API_BASE+'/tasks/'+_0x5e7219+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4d5dfa,'content':_0x56fe70})});if(!_0x502222['ok']){const _0x20454e=await _0x502222['json']()['catch'](()=>({}));throw new Error(_0x20454e['error']||_0x20454e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x502222['statusText']);}return await _0x502222['json']();},async 'uploadTaskFiles'(_0x2e024c,_0x4df537,_0x2fc1ba){if(!_0x2e024c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df537)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2fc1ba||_0x2fc1ba['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x44ff65=new FormData();_0x44ff65['append']('targetDir',_0x4df537);for(const _0xd79ca4 of _0x2fc1ba){_0x44ff65['append']('files',_0xd79ca4,_0xd79ca4['name']);}const _0x234e8b=await fetch(API_BASE+'/tasks/'+_0x2e024c+'/files/upload',{'method':'POST','body':_0x44ff65});if(!_0x234e8b['ok']){const _0x4827d1=await _0x234e8b['json']()['catch'](()=>({}));throw new Error(_0x4827d1['error']||_0x4827d1['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x234e8b['statusText']);}return await _0x234e8b['json']();},async 'createDirectory'(_0x58e6f5,_0x34184f){if(!_0x58e6f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34184f)throw new Error('Directory\x20path\x20is\x20required');const _0x3fe71d=await fetch(API_BASE+'/tasks/'+_0x58e6f5+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x34184f})});if(!_0x3fe71d['ok']){const _0x4483d2=await _0x3fe71d['json']()['catch'](()=>({}));throw new Error(_0x4483d2['error']||_0x4483d2['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3fe71d['statusText']);}return await _0x3fe71d['json']();},async 'renamePath'(_0x201083,_0x22b2ae,_0x56cbee){if(!_0x201083)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22b2ae)throw new Error('Source\x20path\x20is\x20required');if(!_0x56cbee)throw new Error('Destination\x20path\x20is\x20required');const _0x433361=await fetch(API_BASE+'/tasks/'+_0x201083+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22b2ae,'newPath':_0x56cbee})});if(!_0x433361['ok']){const _0x3118ac=await _0x433361['json']()['catch'](()=>({}));throw new Error(_0x3118ac['error']||_0x3118ac['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x433361['statusText']);}return await _0x433361['json']();},async 'deleteFile'(_0x337504,_0x4bc59f){if(!_0x337504)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4bc59f)throw new Error('File\x20path\x20is\x20required');const _0x2e84f1=await fetch(API_BASE+'/tasks/'+_0x337504+'/files?path='+encodeURIComponent(_0x4bc59f),{'method':'DELETE'});if(!_0x2e84f1['ok']){const _0x26f391=await _0x2e84f1['json']()['catch'](()=>({}));throw new Error(_0x26f391['error']||_0x26f391['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2e84f1['statusText']);}return await _0x2e84f1['json']();},async 'deleteDirectory'(_0x29edae,_0x51af77){if(!_0x29edae)throw new Error('Task\x20ID\x20is\x20required');if(!_0x51af77)throw new Error('Directory\x20path\x20is\x20required');const _0x1e9f61=await fetch(API_BASE+'/tasks/'+_0x29edae+'/files/directory?path='+encodeURIComponent(_0x51af77),{'method':'DELETE'});if(!_0x1e9f61['ok']){const _0x217a4b=await _0x1e9f61['json']()['catch'](()=>({}));throw new Error(_0x217a4b['error']||_0x217a4b['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x1e9f61['statusText']);}return await _0x1e9f61['json']();},async 'discardFile'(_0x55b25d,_0x28dd8e,_0x492fc8){if(!_0x55b25d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28dd8e)throw new Error('File\x20path\x20is\x20required');if(!_0x492fc8)throw new Error('Repository\x20path\x20is\x20required');const _0x33cd11=await fetch(API_BASE+'/tasks/'+_0x55b25d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28dd8e,'repoPath':_0x492fc8})});if(!_0x33cd11['ok']){const _0x39f411=await _0x33cd11['json']()['catch'](()=>({}));throw new Error(_0x39f411['error']||_0x39f411['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x33cd11['statusText']);}return await _0x33cd11['json']();},async 'followUpTask'(_0x5c565a,_0x354fa8={}){if(!_0x5c565a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x354fa8['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x23fded,_0x73a88={};if(_0x354fa8['files']&&_0x354fa8['files']['length']>0x0){const _0x3931bc=new FormData();_0x3931bc['append']('instructions',_0x354fa8['instructions']);for(const _0x49513c of _0x354fa8['files']){_0x3931bc['append']('attachments',_0x49513c);}_0x23fded=_0x3931bc;}else _0x73a88['Content-Type']='application/json',_0x23fded=JSON['stringify']({'instructions':_0x354fa8['instructions']});const _0x40d10e=await fetch(API_BASE+'/tasks/'+_0x5c565a+'/follow-up',{'method':'POST','headers':_0x73a88,'body':_0x23fded});if(!_0x40d10e['ok']){const _0x53ea1f=await _0x40d10e['json']()['catch'](()=>({}));throw new Error(_0x53ea1f['error']||_0x53ea1f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x40d10e['statusText']);}return await _0x40d10e['json']();},async 'getTaskRewindPoints'(_0x28c6c1){if(!_0x28c6c1)throw new Error('Task\x20ID\x20is\x20required');const _0x43fe96=await fetch(API_BASE+'/tasks/'+_0x28c6c1+'/rewind-points');if(!_0x43fe96['ok']){const _0x2e28cf=await _0x43fe96['json']()['catch'](()=>({}));throw new Error(_0x2e28cf['error']||_0x2e28cf['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x43fe96['statusText']);}return await _0x43fe96['json']();},async 'rewindTask'(_0x465618,_0x8aa8c8={}){if(!_0x465618)throw new Error('Task\x20ID\x20is\x20required');const _0x108bfb=Number['isInteger'](_0x8aa8c8['targetFollowUpCount'])?_0x8aa8c8['targetFollowUpCount']:0x0,_0x38f889={'targetFollowUpCount':_0x108bfb};typeof _0x8aa8c8['instructions']==='string'&&_0x8aa8c8['instructions']['trim']()&&(_0x38f889['instructions']=_0x8aa8c8['instructions']['trim']());typeof _0x8aa8c8['rewindFiles']==='boolean'&&(_0x38f889['rewindFiles']=_0x8aa8c8['rewindFiles']);const _0x36a2a3=await fetch(API_BASE+'/tasks/'+_0x465618+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38f889)});if(!_0x36a2a3['ok']){const _0x21e438=await _0x36a2a3['json']()['catch'](()=>({}));throw new Error(_0x21e438['error']||_0x21e438['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x36a2a3['statusText']);}return await _0x36a2a3['json']();},async 'login'(_0x2da6b9,_0x5a2d52){const _0xaed262=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2da6b9,'password':_0x5a2d52})});if(!_0xaed262['ok']){const _0x4a1383=await _0xaed262['json']();throw new Error(_0x4a1383['message']||'Login\x20failed');}return await _0xaed262['json']();},async 'logout'(){const _0x3dbeeb=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3dbeeb['ok']){const _0x21918e=await _0x3dbeeb['json']();throw new Error(_0x21918e['message']||'Logout\x20failed');}return await _0x3dbeeb['json']();},async 'getCurrentUser'(){const _0x1fc009=await fetch(API_BASE+'/auth/me');if(!_0x1fc009['ok'])throw new Error('Not\x20authenticated');const _0x4ec6fc=await _0x1fc009['json']();return _0x4ec6fc['user'];},async 'getRolesInfo'(){const _0x3a33c9=await fetch(API_BASE+'/users/roles');if(!_0x3a33c9['ok']){const _0x4c4671=await _0x3a33c9['json']();throw new Error(_0x4c4671['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3a33c9['json']();},async 'getUsers'(){const _0x2e2a0e=await fetch(API_BASE+'/users');if(!_0x2e2a0e['ok']){const _0x4a9195=await _0x2e2a0e['json']();throw new Error(_0x4a9195['message']||'Failed\x20to\x20get\x20users');}return await _0x2e2a0e['json']();},async 'getUser'(_0x57392f){const _0x276ac7=await fetch(API_BASE+'/users/'+_0x57392f);if(!_0x276ac7['ok']){const _0x49e0d4=await _0x276ac7['json']();throw new Error(_0x49e0d4['message']||'Failed\x20to\x20get\x20user');}return await _0x276ac7['json']();},async 'createUser'(_0x45f785){const _0x30f6fa=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45f785)});if(!_0x30f6fa['ok']){const _0x1fc15c=await _0x30f6fa['json']();throw new Error(_0x1fc15c['message']||'Failed\x20to\x20create\x20user');}return await _0x30f6fa['json']();},async 'updateUser'(_0x43b86a,_0x305518){const _0x2eba29=await fetch(API_BASE+'/users/'+_0x43b86a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x305518)});if(!_0x2eba29['ok']){const _0x12899f=await _0x2eba29['json']();throw new Error(_0x12899f['message']||'Failed\x20to\x20update\x20user');}return await _0x2eba29['json']();},async 'deleteUser'(_0x45f484){const _0xce2117=await fetch(API_BASE+'/users/'+_0x45f484,{'method':'DELETE'});if(!_0xce2117['ok']){const _0x53e4e0=await _0xce2117['json']();throw new Error(_0x53e4e0['message']||'Failed\x20to\x20delete\x20user');}return await _0xce2117['json']();},async 'stopAllContainers'(){const _0x28da70=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3a8d98=await _0x28da70['json']()['catch'](()=>({}));if(!_0x28da70['ok'])throw new Error(_0x3a8d98['message']||_0x3a8d98['error']||'Failed\x20to\x20stop\x20containers');return _0x3a8d98;},async 'removeStoppedContainers'(){const _0x31b665=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c4374=await _0x31b665['json']()['catch'](()=>({}));if(!_0x31b665['ok'])throw new Error(_0x5c4374['message']||_0x5c4374['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c4374;},async 'pruneDockerResources'(){const _0x162a49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5b46a2=await _0x162a49['json']()['catch'](()=>({}));if(!_0x162a49['ok'])throw new Error(_0x5b46a2['message']||_0x5b46a2['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5b46a2;},async 'createPasswordToken'(_0x2bac72,_0x2b2d97='setup',_0x200444=![]){const _0x31f1c3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2bac72,'type':_0x2b2d97,'sendEmail':_0x200444})});if(!_0x31f1c3['ok']){const _0x47227b=await _0x31f1c3['json']();throw new Error(_0x47227b['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31f1c3['json']();},async 'getEmailConfig'(){const _0x14682c=await fetch(API_BASE+'/password/email-config');if(!_0x14682c['ok']){const _0x5ce32d=await _0x14682c['json']();throw new Error(_0x5ce32d['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14682c['json']();},async 'updateTaskName'(_0x801a87,_0x271cf7){const _0x28856e=await fetch(API_BASE+'/tasks/'+_0x801a87,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x271cf7})});if(!_0x28856e['ok']){const _0x3c0972=await _0x28856e['json']();throw new Error(_0x3c0972['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x28856e['json']();},async 'pinTask'(_0x334842,_0x36c3fb,_0x40ecd3=null){if(!_0x334842)throw new Error('Task\x20ID\x20is\x20required');const _0x184247={'pinned':_0x36c3fb};_0x40ecd3&&_0x40ecd3['length']>0x0&&(_0x184247['additionalTaskIds']=_0x40ecd3);const _0x438a4d=await fetch(API_BASE+'/tasks/'+_0x334842+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x184247)});if(!_0x438a4d['ok']){const _0x4c4cdd=await _0x438a4d['json']();throw new Error(_0x4c4cdd['error']||'Failed\x20to\x20pin\x20task');}return await _0x438a4d['json']();},async 'setTaskWinner'(_0x18e2bb,_0x52bbfd,_0x12dcef=[]){if(!_0x18e2bb)throw new Error('Task\x20ID\x20is\x20required');const _0x1ab404=await fetch(API_BASE+'/tasks/'+_0x18e2bb+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x52bbfd,'siblings':_0x12dcef})});if(!_0x1ab404['ok']){const _0x1724f5=await _0x1ab404['json']();throw new Error(_0x1724f5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ab404['json']();},async 'setTaskLoser'(_0x4e53fc,_0x41ae43){if(!_0x4e53fc)throw new Error('Task\x20ID\x20is\x20required');const _0x5c7eb4=await fetch(API_BASE+'/tasks/'+_0x4e53fc+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x41ae43})});if(!_0x5c7eb4['ok']){const _0x466343=await _0x5c7eb4['json']();throw new Error(_0x466343['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c7eb4['json']();},async 'createTaskGroup'(_0x1af15){const _0x385436=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1af15)});if(!_0x385436['ok']){const _0x144c33=await _0x385436['json']();throw new Error(_0x144c33['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x385436['json']();},async 'getTaskGroups'(_0x11b684={}){const _0x4bbfff=new URLSearchParams();if(_0x11b684['userId'])_0x4bbfff['set']('userId',String(_0x11b684['userId']));if(_0x11b684['status'])_0x4bbfff['set']('status',String(_0x11b684['status']));if(_0x11b684['limit'])_0x4bbfff['set']('limit',String(_0x11b684['limit']));const _0x1fc8da=API_BASE+'/tasks/groups'+(_0x4bbfff['toString']()?'?'+_0x4bbfff['toString']():''),_0x492b97=await fetch(_0x1fc8da);if(!_0x492b97['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x492b97['json']();},async 'getTaskGroup'(_0x5cb371){const _0x4e5487=await fetch(API_BASE+'/tasks/groups/'+_0x5cb371);if(!_0x4e5487['ok']){const _0x2097df=await _0x4e5487['json']();throw new Error(_0x2097df['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4e5487['json']();},async 'updateTaskGroup'(_0x47c2b6,_0x515b13,_0x1f6dff){const _0x566c04=await fetch(API_BASE+'/tasks/'+_0x47c2b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x515b13,'groupIndex':_0x1f6dff})});if(!_0x566c04['ok']){const _0x1e4bfc=await _0x566c04['json']();throw new Error(_0x1e4bfc['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x566c04['json']();},async 'removeTaskFromGroup'(_0x13a64d){return this['updateTaskGroup'](_0x13a64d,null,null);},async 'deleteTaskGroup'(_0xe42836,_0xf77dc7=![]){const _0x1114b4=_0xf77dc7?'?deleteTasks=true':'',_0x43ff7d=await fetch(API_BASE+'/tasks/groups/'+_0xe42836+_0x1114b4,{'method':'DELETE'});if(!_0x43ff7d['ok']){const _0xf7e456=await _0x43ff7d['json']();throw new Error(_0xf7e456['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5d5d58,_0x28a014){const _0x1579b1=await fetch(API_BASE+'/tasks/groups/'+_0x5d5d58+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x28a014})});if(!_0x1579b1['ok']){const _0x1a1f5b=await _0x1579b1['json']();throw new Error(_0x1a1f5b['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1579b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3681ad){if(!_0x3681ad)throw new Error('Task\x20ID\x20is\x20required');const _0x1e87af=await fetch(API_BASE+'/tasks/'+_0x3681ad+'/comments');if(!_0x1e87af['ok']){const _0x3c2619=await _0x1e87af['json']()['catch'](()=>({}));throw new Error(_0x3c2619['error']||'Failed\x20to\x20get\x20comments');}return await _0x1e87af['json']();},async 'addComment'(_0x34e884,_0x45e1cd){if(!_0x34e884)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45e1cd)throw new Error('Comment\x20content\x20is\x20required');const _0x50709d=await fetch(API_BASE+'/tasks/'+_0x34e884+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45e1cd})});if(!_0x50709d['ok']){const _0x256ec5=await _0x50709d['json']()['catch'](()=>({}));throw new Error(_0x256ec5['error']||'Failed\x20to\x20add\x20comment');}return await _0x50709d['json']();},async 'updateComment'(_0xaee489,_0x521797,_0x394ef1){if(!_0xaee489)throw new Error('Task\x20ID\x20is\x20required');if(!_0x521797)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x394ef1)throw new Error('Comment\x20content\x20is\x20required');const _0x1d45d2=await fetch(API_BASE+'/tasks/'+_0xaee489+'/comments/'+_0x521797,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x394ef1})});if(!_0x1d45d2['ok']){const _0x76def4=await _0x1d45d2['json']()['catch'](()=>({}));throw new Error(_0x76def4['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d45d2['json']();},async 'deleteComment'(_0x556add,_0x5d51bd){if(!_0x556add)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d51bd)throw new Error('Comment\x20ID\x20is\x20required');const _0x5781fa=await fetch(API_BASE+'/tasks/'+_0x556add+'/comments/'+_0x5d51bd,{'method':'DELETE'});if(!_0x5781fa['ok']){const _0x512a6a=await _0x5781fa['json']()['catch'](()=>({}));throw new Error(_0x512a6a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5781fa['json']();},async 'createObjective'(_0x4cba3f){const _0x47ba68={'objective':!![],'name':_0x4cba3f['name']||'','environment':_0x4cba3f['environment']||null,'agents':_0x4cba3f['agents']||[],'branches':_0x4cba3f['branches']||{},'isPinned':_0x4cba3f['isPinned']||![],'parentObjectiveId':_0x4cba3f['parentObjectiveId']||null,'env_vars':_0x4cba3f['envVars']||{},'parameters':{'instructions':_0x4cba3f['instructions']||''},'files':_0x4cba3f['files']||[],'jira':_0x4cba3f['jira']||null};return this['createTask'](_0x47ba68);},async 'updateObjective'(_0x456cca,_0x163592,_0x359f0a=[],_0xf54b6b=[]){let _0x43d3be,_0x3bcc24={};const _0x5341c7={..._0x163592};_0xf54b6b&&_0xf54b6b['length']>0x0&&(_0x5341c7['removeAttachments']=_0xf54b6b);if(_0x359f0a&&_0x359f0a['length']>0x0){const _0x50efa2=new FormData();for(const [_0x3976d8,_0x3d8c2a]of Object['entries'](_0x5341c7)){if(_0x3d8c2a==null)continue;typeof _0x3d8c2a==='object'?_0x50efa2['append'](_0x3976d8,JSON['stringify'](_0x3d8c2a)):_0x50efa2['append'](_0x3976d8,String(_0x3d8c2a));}for(const _0x2e45f4 of _0x359f0a){_0x50efa2['append']('attachments',_0x2e45f4);}_0x43d3be=_0x50efa2;}else _0x3bcc24['Content-Type']='application/json',_0x43d3be=JSON['stringify'](_0x5341c7);const _0x154f8a=await fetch(API_BASE+'/tasks/'+_0x456cca,{'method':'PATCH','headers':_0x3bcc24,'body':_0x43d3be});if(!_0x154f8a['ok']){const _0x460b12=await _0x154f8a['json']();throw new Error(_0x460b12['error']||'Failed\x20to\x20update\x20objective');}return await _0x154f8a['json']();},async 'deleteObjective'(_0x2419c0){return this['deleteTask'](_0x2419c0);},async 'launchObjective'(_0x2f287e,_0x8761ce={}){const _0x4271f9=await fetch(API_BASE+'/tasks/'+_0x2f287e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x8761ce)});if(!_0x4271f9['ok']){const _0x42c424=await _0x4271f9['json']();throw new Error(_0x42c424['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4271f9['json']();},async 'getObjectiveAttachments'(_0x49064a){return this['getTaskAttachments'](_0x49064a);},async 'createJudgeTask'({environment:_0x4e1b37,judgeAgent:_0x5ae8b6,groupId:_0x18c15e,taskIds:_0x5a965d,judgeCustomInstructions:_0x1cb4b6,isPinned:_0x2528d1}){const _0x376ba3=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4e1b37,'judgeAgent':_0x5ae8b6,'groupId':_0x18c15e,'taskIds':_0x5a965d,'judgeCustomInstructions':_0x1cb4b6,'isPinned':_0x2528d1})});if(!_0x376ba3['ok']){const _0x4e5f85=await _0x376ba3['json']();throw new Error(_0x4e5f85['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x376ba3['json']();},async 'getJudgeTasks'(_0x575808){const _0x2df4db=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x575808));if(!_0x2df4db['ok']){const _0x4d4c8b=await _0x2df4db['json']();throw new Error(_0x4d4c8b['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2df4db['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x19ac10,_0x138df0,_0x1b444b=''){const _0x338a6c=await fetch(API_BASE+'/tasks/'+_0x19ac10+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x138df0,'customPreamble':_0x1b444b})});if(!_0x338a6c['ok']){const _0x3046e0=await _0x338a6c['json']();throw new Error(_0x3046e0['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x338a6c['json']();},async 'getJiraConfig'(){const _0x353002=await fetch(API_BASE+'/jira/config');if(!_0x353002['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x353002['json']();},async 'getJiraIssue'(_0x44ad34){const _0x294cdb=await fetch(API_BASE+'/jira/issues/'+_0x44ad34);if(!_0x294cdb['ok']){const _0x247715=await _0x294cdb['json']()['catch'](()=>({}));throw new Error(_0x247715['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x294cdb['statusText']);}return await _0x294cdb['json']();},async 'searchJiraIssues'(_0x43fa66,_0x308046=0x14){const _0x19b527=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x43fa66,'maxResults':_0x308046})});if(!_0x19b527['ok']){const _0x39b3f4=await _0x19b527['json']()['catch'](()=>({}));throw new Error(_0x39b3f4['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x19b527['statusText']);}return await _0x19b527['json']();},async 'postJiraComment'(_0x457961,_0x3474ba){const _0x2aad36=await fetch(API_BASE+'/jira/issues/'+_0x457961+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3474ba})});if(!_0x2aad36['ok']){const _0x44e217=await _0x2aad36['json']()['catch'](()=>({}));throw new Error(_0x44e217['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x2aad36['statusText']);}return await _0x2aad36['json']();},async 'getJiraComments'(_0x12d3e9){const _0x3a4f13=await fetch(API_BASE+'/jira/issues/'+_0x12d3e9+'/comments');if(!_0x3a4f13['ok']){const _0x54b9d4=await _0x3a4f13['json']()['catch'](()=>({}));throw new Error(_0x54b9d4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3a4f13['statusText']);}return await _0x3a4f13['json']();},async 'promptParameter'({environment:_0x3d25dc,command:_0x2af2d8,parser:parser='json'}){const _0x324493=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d25dc,'command':_0x2af2d8,'parser':parser})});if(!_0x324493['ok']){const _0x4f5109=await _0x324493['json']()['catch'](()=>({}));throw new Error(_0x4f5109['message']||_0x4f5109['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x324493['statusText']);}return await _0x324493['json']();},async 'promptParameterStream'(_0x4ea61b,_0x5aac4a){const _0x599234=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ea61b)});if(!_0x599234['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x599234['statusText']);const _0x43b2e3=_0x599234['body']['getReader'](),_0x55927d=new TextDecoder();let _0x3c0eb0='';return new Promise((_0x511ec8,_0xced8fa)=>{const _0x377afb=async()=>{try{const {done:_0x367417,value:_0x2496af}=await _0x43b2e3['read']();if(_0x367417)return;_0x3c0eb0+=_0x55927d['decode'](_0x2496af,{'stream':!![]});const _0x179678=_0x3c0eb0['split']('\x0a\x0a');_0x3c0eb0=_0x179678['pop']()||'';for(const _0x50112c of _0x179678){if(!_0x50112c['trim']())continue;const _0x135df3=_0x50112c['split']('\x0a');let _0x1f3cc3='message',_0x4c43ba='';for(const _0x23d843 of _0x135df3){if(_0x23d843['startsWith']('event:'))_0x1f3cc3=_0x23d843['substring'](0x6)['trim']();else _0x23d843['startsWith']('data:')&&(_0x4c43ba=_0x23d843['substring'](0x5)['trim']());}if(!_0x4c43ba)continue;try{const _0x34e27d=JSON['parse'](_0x4c43ba);if(_0x1f3cc3==='progress'&&_0x5aac4a)_0x5aac4a(_0x34e27d['stage'],_0x34e27d['message']);else{if(_0x1f3cc3==='result'){_0x511ec8(_0x34e27d);return;}else{if(_0x1f3cc3==='error'){let _0x24b294=_0x34e27d['message']||_0x34e27d['error']||'Prompt\x20command\x20failed';_0x34e27d['rawOutput']&&(_0x24b294+='\x0a\x0aRaw\x20output:\x0a'+_0x34e27d['rawOutput']);_0xced8fa(new Error(_0x24b294));return;}}}}catch(_0x133c52){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x133c52),console['error']('Event\x20type:',_0x1f3cc3),console['error']('Event\x20data:',_0x4c43ba),console['error']('First\x20200\x20chars:',_0x4c43ba['substring'](0x0,0xc8)),_0xced8fa(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x133c52['message']+'\x0a\x0aData:\x20'+_0x4c43ba['substring'](0x0,0x1f4)));return;}}_0x377afb();}catch(_0x2094c1){_0xced8fa(_0x2094c1);}};_0x377afb();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x434998){const _0x59207e=await fetch(''+API_BASE+_0x434998);if(!_0x59207e['ok']){const _0x1c06da=await _0x59207e['json']()['catch'](()=>({'error':_0x59207e['statusText']})),_0x4ccc63=new Error(_0x1c06da['error']||_0x1c06da['message']||_0x59207e['statusText']);if(_0x1c06da['detail']!==undefined)_0x4ccc63['detail']=_0x1c06da['detail'];throw _0x4ccc63;}return await _0x59207e['json']();},async 'post'(_0x2c87d0,_0x1063ae){const _0x183015=await fetch(''+API_BASE+_0x2c87d0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1063ae)});if(!_0x183015['ok']){const _0x359078=await _0x183015['json']()['catch'](()=>({'error':_0x183015['statusText']})),_0x32ffd6=new Error(_0x359078['error']||_0x359078['message']||_0x183015['statusText']);if(_0x359078['detail']!==undefined)_0x32ffd6['detail']=_0x359078['detail'];throw _0x32ffd6;}return await _0x183015['json']();},async 'put'(_0x35e566,_0x1f87a6){const _0x568590=await fetch(''+API_BASE+_0x35e566,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f87a6)});if(!_0x568590['ok']){const _0x4e01a2=await _0x568590['json']()['catch'](()=>({'error':_0x568590['statusText']})),_0x5957c6=new Error(_0x4e01a2['error']||_0x4e01a2['message']||_0x568590['statusText']);if(_0x4e01a2['detail']!==undefined)_0x5957c6['detail']=_0x4e01a2['detail'];throw _0x5957c6;}return await _0x568590['json']();},async 'delete'(_0x562179,_0x56c64d){const _0x4d228a={'method':'DELETE'};_0x56c64d&&(_0x4d228a['headers']={'Content-Type':'application/json'},_0x4d228a['body']=JSON['stringify'](_0x56c64d));const _0x3bb833=await fetch(''+API_BASE+_0x562179,_0x4d228a);if(!_0x3bb833['ok']){const _0x1326da=await _0x3bb833['json']()['catch'](()=>({'error':_0x3bb833['statusText']})),_0x2f9f5e=new Error(_0x1326da['error']||_0x1326da['message']||_0x3bb833['statusText']);if(_0x1326da['detail']!==undefined)_0x2f9f5e['detail']=_0x1326da['detail'];throw _0x2f9f5e;}return await _0x3bb833['json']();},async 'getSkills'(){const _0x1580f3=await fetch(API_BASE+'/skills');if(!_0x1580f3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1580f3['statusText']);return await _0x1580f3['json']();},async 'getSkill'(_0x2b3ad3){const _0x588ce5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2b3ad3));if(!_0x588ce5['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x588ce5['statusText']);return await _0x588ce5['json']();},async 'createSkill'(_0x498f96){const _0x4fcb81=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498f96)});if(!_0x4fcb81['ok']){const _0x5e6a92=await _0x4fcb81['json']()['catch'](()=>({'error':_0x4fcb81['statusText']})),_0x4b8182=new Error(_0x5e6a92['error']||_0x5e6a92['message']||_0x4fcb81['statusText']);if(_0x5e6a92['detail']!==undefined)_0x4b8182['detail']=_0x5e6a92['detail'];throw _0x4b8182;}return await _0x4fcb81['json']();},async 'updateSkill'(_0x26e46d,_0x4b4180){const _0x325204=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x26e46d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b4180)});if(!_0x325204['ok']){const _0xbaf48d=await _0x325204['json']()['catch'](()=>({'error':_0x325204['statusText']})),_0x150474=new Error(_0xbaf48d['error']||_0xbaf48d['message']||_0x325204['statusText']);if(_0xbaf48d['detail']!==undefined)_0x150474['detail']=_0xbaf48d['detail'];throw _0x150474;}return await _0x325204['json']();},async 'deleteSkill'(_0x1ebdea){const _0x546273=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ebdea),{'method':'DELETE'});if(!_0x546273['ok']){const _0x5aeb22=await _0x546273['json']()['catch'](()=>({'error':_0x546273['statusText']})),_0x458889=new Error(_0x5aeb22['error']||_0x5aeb22['message']||_0x546273['statusText']);if(_0x5aeb22['detail']!==undefined)_0x458889['detail']=_0x5aeb22['detail'];throw _0x458889;}return await _0x546273['json']();},async 'getSkillFile'(_0x4d401c,_0x4f22f9){const _0x3967a9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d401c)+'/files/'+_0x4f22f9);if(!_0x3967a9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3967a9['statusText']);return await _0x3967a9['json']();},async 'saveSkillFile'(_0x3cf9f9,_0x15a887,_0x24f3b7){const _0x5df60c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3cf9f9)+'/files/'+_0x15a887,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x24f3b7})});if(!_0x5df60c['ok']){const _0x1055e3=await _0x5df60c['json']()['catch'](()=>({'error':_0x5df60c['statusText']})),_0x375c5a=new Error(_0x1055e3['error']||_0x1055e3['message']||_0x5df60c['statusText']);if(_0x1055e3['detail']!==undefined)_0x375c5a['detail']=_0x1055e3['detail'];throw _0x375c5a;}return await _0x5df60c['json']();},async 'deleteSkillFile'(_0x19c49c,_0x54a511){const _0x5a0864=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x19c49c)+'/files/'+_0x54a511,{'method':'DELETE'});if(!_0x5a0864['ok']){const _0x3b1251=await _0x5a0864['json']()['catch'](()=>({'error':_0x5a0864['statusText']})),_0x3c0726=new Error(_0x3b1251['error']||_0x3b1251['message']||_0x5a0864['statusText']);if(_0x3b1251['detail']!==undefined)_0x3c0726['detail']=_0x3b1251['detail'];throw _0x3c0726;}return await _0x5a0864['json']();},async 'pullSkills'(){const _0x245541=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x245541['ok']){const _0x30c9aa=await _0x245541['json']()['catch'](()=>({'error':_0x245541['statusText']})),_0x39ae9e=new Error(_0x30c9aa['error']||_0x30c9aa['message']||_0x245541['statusText']);if(_0x30c9aa['detail']!==undefined)_0x39ae9e['detail']=_0x30c9aa['detail'];throw _0x39ae9e;}return await _0x245541['json']();},async 'commitSkills'(_0x1736d4,_0xf3841a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xf3841a,_0x2d465b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1736d4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2d465b['ok']){const _0x6ef5b4=await _0x2d465b['json']()['catch'](()=>({'error':_0x2d465b['statusText']})),_0xe6347c=new Error(_0x6ef5b4['error']||_0x6ef5b4['message']||_0x2d465b['statusText']);if(_0x6ef5b4['detail']!==undefined)_0xe6347c['detail']=_0x6ef5b4['detail'];throw _0xe6347c;}return await _0x2d465b['json']();},async 'discardSkillsChanges'(){const _0x36eb77=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x36eb77['ok']){const _0x52e0fc=await _0x36eb77['json']()['catch'](()=>({'error':_0x36eb77['statusText']})),_0x3653f5=new Error(_0x52e0fc['error']||_0x52e0fc['message']||_0x36eb77['statusText']);if(_0x52e0fc['detail']!==undefined)_0x3653f5['detail']=_0x52e0fc['detail'];throw _0x3653f5;}return await _0x36eb77['json']();},async 'getSkillCatalog'(){const _0x2ad5bc=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ad5bc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ad5bc['statusText']);return await _0x2ad5bc['json']();},async 'getImportedSkillsRegistry'(){const _0x5522ee=await fetch(API_BASE+'/external-skills/registry');if(!_0x5522ee['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5522ee['statusText']);return await _0x5522ee['json']();},async 'importCatalogSkill'(_0x6d4a8f){const _0x4a8eb5=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x6d4a8f})});if(!_0x4a8eb5['ok']){const _0x100d89=await _0x4a8eb5['json']()['catch'](()=>({'error':_0x4a8eb5['statusText']})),_0x2a5ee5=new Error(_0x100d89['error']||_0x100d89['message']||_0x4a8eb5['statusText']);if(_0x100d89['detail']!==undefined)_0x2a5ee5['detail']=_0x100d89['detail'];throw _0x2a5ee5;}return await _0x4a8eb5['json']();},async 'importSkillFromGit'(_0x25e71d,_0x24cdd1,_0x42ee2a='main',_0x2d20c0=null){const _0xfc6100=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x25e71d,'skillPath':_0x24cdd1,'branch':_0x42ee2a,'skillId':_0x2d20c0})});if(!_0xfc6100['ok']){const _0x2cc8d5=await _0xfc6100['json']()['catch'](()=>({'error':_0xfc6100['statusText']})),_0x44519e=new Error(_0x2cc8d5['error']||_0x2cc8d5['message']||_0xfc6100['statusText']);if(_0x2cc8d5['detail']!==undefined)_0x44519e['detail']=_0x2cc8d5['detail'];throw _0x44519e;}return await _0xfc6100['json']();},async 'probeMarketplace'(_0x187311,_0x319833='main'){const _0x5147bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x187311,'branch':_0x319833})});if(!_0x5147bd['ok']){const _0x486650=await _0x5147bd['json']()['catch'](()=>({'error':_0x5147bd['statusText']})),_0x3f8d88=new Error(_0x486650['error']||_0x486650['message']||_0x5147bd['statusText']);if(_0x486650['detail']!==undefined)_0x3f8d88['detail']=_0x486650['detail'];throw _0x3f8d88;}return await _0x5147bd['json']();},async 'importMarketplaceBundle'(_0x21baf5,_0x621c98,_0x26056f,_0x221144=null){const _0x37bc63=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x21baf5,'branch':_0x621c98,'bundleId':_0x26056f,'selectedSkills':_0x221144})});if(!_0x37bc63['ok']){const _0x36845c=await _0x37bc63['json']()['catch'](()=>({'error':_0x37bc63['statusText']})),_0x2bb1c4=new Error(_0x36845c['error']||_0x36845c['message']||_0x37bc63['statusText']);if(_0x36845c['detail']!==undefined)_0x2bb1c4['detail']=_0x36845c['detail'];throw _0x2bb1c4;}return await _0x37bc63['json']();},async 'importSkillFromFolder'(_0x2e3288,_0x2bb0ae=null){const _0x7d654e=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2e3288,'skillId':_0x2bb0ae})});if(!_0x7d654e['ok']){const _0x5a3a6e=await _0x7d654e['json']()['catch'](()=>({'error':_0x7d654e['statusText']})),_0x397cd2=new Error(_0x5a3a6e['error']||_0x5a3a6e['message']||_0x7d654e['statusText']);if(_0x5a3a6e['detail']!==undefined)_0x397cd2['detail']=_0x5a3a6e['detail'];throw _0x397cd2;}return await _0x7d654e['json']();},async 'importSkillFromNpm'(_0x20c85b,_0x426073='latest',_0x2dfa63=null,_0x4bd157=null){const _0x28ac67=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x20c85b,'version':_0x426073,'skillId':_0x2dfa63,'registry':_0x4bd157})});if(!_0x28ac67['ok']){const _0x1ebc8c=await _0x28ac67['json']()['catch'](()=>({'error':_0x28ac67['statusText']})),_0x142a67=new Error(_0x1ebc8c['error']||_0x1ebc8c['message']||_0x28ac67['statusText']);if(_0x1ebc8c['detail']!==undefined)_0x142a67['detail']=_0x1ebc8c['detail'];throw _0x142a67;}return await _0x28ac67['json']();},async 'checkSkillUpdates'(_0x4826b8){const _0x39e62d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4826b8)+'/check-updates',{'method':'POST'});if(!_0x39e62d['ok']){const _0x83748a=await _0x39e62d['json']()['catch'](()=>({'error':_0x39e62d['statusText']})),_0x42569c=new Error(_0x83748a['error']||_0x83748a['message']||_0x39e62d['statusText']);if(_0x83748a['detail']!==undefined)_0x42569c['detail']=_0x83748a['detail'];throw _0x42569c;}return await _0x39e62d['json']();},async 'updateExternalSkill'(_0x1c06f5){const _0xb22ed7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c06f5)+'/update',{'method':'POST'});if(!_0xb22ed7['ok']){const _0x304e9e=await _0xb22ed7['json']()['catch'](()=>({'error':_0xb22ed7['statusText']})),_0x1c3996=new Error(_0x304e9e['error']||_0x304e9e['message']||_0xb22ed7['statusText']);if(_0x304e9e['detail']!==undefined)_0x1c3996['detail']=_0x304e9e['detail'];throw _0x1c3996;}return await _0xb22ed7['json']();},async 'updateSkillFlags'(_0x24a923,_0x148196){const _0x490fdd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x24a923)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x148196})});if(!_0x490fdd['ok']){const _0x4d3fd9=await _0x490fdd['json']()['catch'](()=>({'error':_0x490fdd['statusText']})),_0x5cca65=new Error(_0x4d3fd9['error']||_0x4d3fd9['message']||_0x490fdd['statusText']);if(_0x4d3fd9['detail']!==undefined)_0x5cca65['detail']=_0x4d3fd9['detail'];throw _0x5cca65;}return await _0x490fdd['json']();},async 'removeFromImportedRegistry'(_0x556915){const _0x4dbfd4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x556915)+'/registry',{'method':'DELETE'});if(!_0x4dbfd4['ok']){const _0x3c3762=await _0x4dbfd4['json']()['catch'](()=>({'error':_0x4dbfd4['statusText']})),_0x42a590=new Error(_0x3c3762['error']||_0x3c3762['message']||_0x4dbfd4['statusText']);if(_0x3c3762['detail']!==undefined)_0x42a590['detail']=_0x3c3762['detail'];throw _0x42a590;}return await _0x4dbfd4['json']();},async 'getTeams'(){const _0xbc6396=await fetch(API_BASE+'/teams');if(!_0xbc6396['ok']){const _0x1aabb5=await _0xbc6396['json']()['catch'](()=>({'message':_0xbc6396['statusText']}));throw new Error(_0x1aabb5['message']||'Failed\x20to\x20get\x20teams');}return await _0xbc6396['json']();},async 'getTeam'(_0x5dd44a){const _0xa018e5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5dd44a));if(!_0xa018e5['ok']){const _0x34cb50=await _0xa018e5['json']()['catch'](()=>({'message':_0xa018e5['statusText']}));throw new Error(_0x34cb50['message']||'Failed\x20to\x20get\x20team');}return await _0xa018e5['json']();},async 'createTeam'(_0x43ee5a){const _0x433c7b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43ee5a)});if(!_0x433c7b['ok']){const _0x43fdc4=await _0x433c7b['json']()['catch'](()=>({'message':_0x433c7b['statusText']}));throw new Error(_0x43fdc4['message']||'Failed\x20to\x20create\x20team');}return await _0x433c7b['json']();},async 'updateTeam'(_0xa9f9d7,_0x269dfc){const _0x51f254=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa9f9d7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x269dfc)});if(!_0x51f254['ok']){const _0x4f5da2=await _0x51f254['json']()['catch'](()=>({'message':_0x51f254['statusText']}));throw new Error(_0x4f5da2['message']||'Failed\x20to\x20update\x20team');}return await _0x51f254['json']();},async 'deleteTeam'(_0xa0fac){const _0x130138=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa0fac),{'method':'DELETE'});if(!_0x130138['ok']){const _0x434151=await _0x130138['json']()['catch'](()=>({'message':_0x130138['statusText']}));throw new Error(_0x434151['message']||'Failed\x20to\x20delete\x20team');}return await _0x130138['json']();},async 'addTeamMember'(_0x2cfdf1,_0x56a628){const _0x564518=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2cfdf1)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x56a628})});if(!_0x564518['ok']){const _0x5215ea=await _0x564518['json']()['catch'](()=>({'message':_0x564518['statusText']}));throw new Error(_0x5215ea['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x564518['json']();},async 'removeTeamMember'(_0x29a486,_0x17c97d){const _0x1a2296=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29a486)+'/members/'+encodeURIComponent(_0x17c97d),{'method':'DELETE'});if(!_0x1a2296['ok']){const _0x58c5ea=await _0x1a2296['json']()['catch'](()=>({'message':_0x1a2296['statusText']}));throw new Error(_0x58c5ea['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1a2296['json']();},async 'getBindings'(_0x2262a0={}){const _0x5072cc=new URLSearchParams();if(_0x2262a0['resource_type'])_0x5072cc['set']('resource_type',_0x2262a0['resource_type']);if(_0x2262a0['resource_id'])_0x5072cc['set']('resource_id',_0x2262a0['resource_id']);if(_0x2262a0['subject_type'])_0x5072cc['set']('subject_type',_0x2262a0['subject_type']);if(_0x2262a0['subject_id'])_0x5072cc['set']('subject_id',_0x2262a0['subject_id']);const _0x346cfa=_0x5072cc['toString'](),_0x14cf4f=await fetch(API_BASE+'/bindings'+(_0x346cfa?'?'+_0x346cfa:''));if(!_0x14cf4f['ok']){const _0x12fd77=await _0x14cf4f['json']()['catch'](()=>({'message':_0x14cf4f['statusText']}));throw new Error(_0x12fd77['message']||'Failed\x20to\x20get\x20bindings');}return await _0x14cf4f['json']();},async 'createBinding'(_0xbdcbea){const _0x5060c6=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbdcbea)});if(!_0x5060c6['ok']){const _0x355a04=await _0x5060c6['json']()['catch'](()=>({'message':_0x5060c6['statusText']}));throw new Error(_0x355a04['message']||'Failed\x20to\x20create\x20binding');}return await _0x5060c6['json']();},async 'updateBinding'(_0x284d51,_0x593bb0){const _0x531d3e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x284d51),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x593bb0)});if(!_0x531d3e['ok']){const _0x48772a=await _0x531d3e['json']()['catch'](()=>({'message':_0x531d3e['statusText']}));throw new Error(_0x48772a['message']||'Failed\x20to\x20update\x20binding');}return await _0x531d3e['json']();},async 'deleteBinding'(_0x1d62ee){const _0x33d42e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1d62ee),{'method':'DELETE'});if(!_0x33d42e['ok']){const _0x3891bc=await _0x33d42e['json']()['catch'](()=>({'message':_0x33d42e['statusText']}));throw new Error(_0x3891bc['message']||'Failed\x20to\x20delete\x20binding');}return await _0x33d42e['json']();},async 'getRoleDefinitions'(){const _0x36b2fe=await fetch(API_BASE+'/roles');if(!_0x36b2fe['ok']){const _0x49b281=await _0x36b2fe['json']()['catch'](()=>({'message':_0x36b2fe['statusText']}));throw new Error(_0x49b281['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x36b2fe['json']();},async 'getRoleDefinition'(_0x2d73e8){const _0x167c9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2d73e8));if(!_0x167c9a['ok']){const _0x42a121=await _0x167c9a['json']()['catch'](()=>({'message':_0x167c9a['statusText']}));throw new Error(_0x42a121['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x167c9a['json']();},async 'createRoleDefinition'(_0x37adec){const _0x24c21e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37adec)});if(!_0x24c21e['ok']){const _0x5ca44d=await _0x24c21e['json']()['catch'](()=>({'message':_0x24c21e['statusText']}));throw new Error(_0x5ca44d['message']||_0x5ca44d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x24c21e['json']();},async 'updateRoleDefinition'(_0x42c8ee,_0x58c27d){const _0x4f9c7d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x42c8ee),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58c27d)});if(!_0x4f9c7d['ok']){const _0x87633c=await _0x4f9c7d['json']()['catch'](()=>({'message':_0x4f9c7d['statusText']}));throw new Error(_0x87633c['message']||_0x87633c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f9c7d['json']();},async 'deleteRoleDefinition'(_0x180dc9){const _0xdb82cc=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x180dc9),{'method':'DELETE'});if(!_0xdb82cc['ok']){const _0x1cb2a4=await _0xdb82cc['json']()['catch'](()=>({'message':_0xdb82cc['statusText']}));throw new Error(_0x1cb2a4['message']||_0x1cb2a4['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0xdb82cc['json']();},async 'getAvailablePermissions'(){const _0x38e2c4=await fetch(API_BASE+'/roles/available-permissions');if(!_0x38e2c4['ok']){const _0x560981=await _0x38e2c4['json']()['catch'](()=>({'message':_0x38e2c4['statusText']}));throw new Error(_0x560981['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x38e2c4['json']();},async 'getGitProviderAllowedTeams'(_0xc9f0cb){const _0x17dda3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xc9f0cb)+'/allowed-teams');if(!_0x17dda3['ok']){const _0x567efc=await _0x17dda3['json']()['catch'](()=>({'message':_0x17dda3['statusText']}));throw new Error(_0x567efc['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x17dda3['json']();},async 'setGitProviderAllowedTeams'(_0x4ca313,_0x11628b){const _0x23f9a9=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4ca313)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11628b})});if(!_0x23f9a9['ok']){const _0x25bfcf=await _0x23f9a9['json']()['catch'](()=>({'message':_0x23f9a9['statusText']}));throw new Error(_0x25bfcf['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23f9a9['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 _0x3015de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x29a19d=>{_0x29a19d['el']['style']['bottom']=_0x3015de+'px';const _0x2a958a=_0x29a19d['el']['offsetHeight']||toastState['defaultHeight'];_0x3015de+=_0x2a958a+toastState['gap'];});});}function removeToastById(_0x2a730b){const _0x2bd537=toastState['toasts']['findIndex'](_0x3e77ee=>_0x3e77ee['id']===_0x2a730b);if(_0x2bd537===-0x1)return;const _0x34f6fa=toastState['toasts'][_0x2bd537];if(_0x34f6fa['timeoutId'])clearTimeout(_0x34f6fa['timeoutId']);_0x34f6fa['el']['classList']['remove']('show'),setTimeout(()=>_0x34f6fa['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2bd537,0x1),repositionAllToasts();}function registerToast(_0x1db8ab){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1db8ab),repositionAllToasts(),_0x1db8ab['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x51609a){if(_0x51609a===null||_0x51609a===undefined)return'';return String(_0x51609a)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x59af5a,_0x5922d2){if(_0x59af5a&&typeof _0x59af5a==='object'&&!Array['isArray'](_0x59af5a))return{'code':typeof _0x59af5a['text']==='string'?_0x59af5a['text']:'','language':typeof _0x59af5a['lang']==='string'?_0x59af5a['lang']:''};return{'code':typeof _0x59af5a==='string'?_0x59af5a:'','language':typeof _0x5922d2==='string'?_0x5922d2:''};}function buildMermaidBlock(_0x17ee5c){const _0x266365=String(_0x17ee5c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x266365))+'\x22>'+escapeHtmlValue(_0x266365)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3017a9=new marked['Renderer'](),_0x24eb34=_0x3017a9['code']['bind'](_0x3017a9);return _0x3017a9['code']=function(_0x4498ba,_0x1f1b86,..._0x2f21e5){const {code:_0x4ad2e6,language:_0xfb4132}=getMarkdownCodeBlockPayload(_0x4498ba,_0x1f1b86),_0x3b80c0=String(_0xfb4132||'')['trim']()['toLowerCase']();if(_0x3b80c0==='mermaid')return buildMermaidBlock(_0x4ad2e6);const _0x136cc0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x136cc0&&_0x3b80c0)try{const _0x5bb838=_0x136cc0['getLanguage'](_0x3b80c0)?_0x3b80c0:'plaintext',_0x56a426=_0x136cc0['highlight'](_0x4ad2e6,{'language':_0x5bb838})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3b80c0)+'\x22>'+_0x56a426+'</code></pre>';}catch(_0x35cb89){console['error']('Syntax\x20highlighting\x20error:',_0x35cb89);}return _0x24eb34(_0x4498ba,_0x1f1b86,..._0x2f21e5);},sharedMarkedRenderer=_0x3017a9,_0x3017a9;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x183898=window['mermaid'];if(!_0x183898||typeof _0x183898['initialize']!=='function')return _0x183898||null;return _0x183898['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x183898;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x433ef0,_0x218e16)=>{const _0x47a8e7=()=>_0x433ef0(configureMermaidInstance()),_0x3c3d77=()=>{mermaidLoadPromise=null,_0x218e16(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xb4ecee=document['getElementById'](MERMAID_SCRIPT_ID);!_0xb4ecee&&(_0xb4ecee=document['createElement']('script'),_0xb4ecee['id']=MERMAID_SCRIPT_ID,_0xb4ecee['src']=MERMAID_SCRIPT_SRC,_0xb4ecee['async']=!![],document['head']['appendChild'](_0xb4ecee));if(window['mermaid']){_0x47a8e7();return;}_0xb4ecee['addEventListener']('load',_0x47a8e7,{'once':!![]}),_0xb4ecee['addEventListener']('error',_0x3c3d77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bb132){const _0x2831ad=_0x4bb132['getAttribute']('data-mermaid-source');if(!_0x2831ad)return null;let _0x498744=_0x2831ad;try{_0x498744=decodeURIComponent(_0x2831ad);}catch{}return _0x4bb132['textContent']=_0x498744,_0x4bb132['removeAttribute']('data-processed'),_0x4bb132['removeAttribute']('aria-roledescription'),_0x4bb132['removeAttribute']('role'),_0x4bb132['removeAttribute']('aria-label'),_0x498744;}function collectMermaidNodes(_0x580cc1,_0x198135){if(!(_0x580cc1 instanceof Element))return;_0x580cc1['matches']('.mermaid[data-mermaid-source]')&&_0x198135['add'](_0x580cc1),_0x580cc1['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2692fd=>{_0x198135['add'](_0x2692fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2deb86=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x502002=>setTimeout(_0x502002,0x0);_0x2deb86(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5632de=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5632de);});});}function queueMermaidRender(_0x1a6050){const _0x32676d=new Set();_0x1a6050 instanceof Document||_0x1a6050 instanceof DocumentFragment?_0x1a6050['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x11116f=>_0x32676d['add'](_0x11116f)):collectMermaidNodes(_0x1a6050,_0x32676d);if(_0x32676d['size']===0x0)return;_0x32676d['forEach'](_0x2ab9ed=>pendingMermaidNodes['add'](_0x2ab9ed)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x3ee538=Array['from'](pendingMermaidNodes)['filter'](_0x3ebee9=>_0x3ebee9['isConnected']);pendingMermaidNodes['clear']();if(_0x3ee538['length']===0x0)return;const _0x3fb9fd=await loadMermaid();if(!_0x3fb9fd)return;configureMermaidInstance();const _0x5c08d8=getMermaidTheme();for(const _0x3d5cea of _0x3ee538){const _0x269b16=_0x3d5cea['getAttribute']('data-mermaid-source');if(!_0x269b16)continue;const _0x2d5364=_0x3d5cea['getAttribute']('data-processed')==='true';if(_0x2d5364&&_0x3d5cea['dataset']['mermaidTheme']===_0x5c08d8)continue;restoreMermaidSource(_0x3d5cea);try{if(typeof _0x3fb9fd['run']==='function')await _0x3fb9fd['run']({'nodes':[_0x3d5cea]});else typeof _0x3fb9fd['init']==='function'&&_0x3fb9fd['init'](undefined,[_0x3d5cea]);_0x3d5cea['dataset']['mermaidTheme']=_0x5c08d8,delete _0x3d5cea['dataset']['mermaidError'];}catch(_0x3fa2db){console['error']('Mermaid\x20render\x20failed:',_0x3fa2db),restoreMermaidSource(_0x3d5cea),_0x3d5cea['dataset']['mermaidError']='true',delete _0x3d5cea['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x414ce5=>{_0x414ce5['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x414ce5);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x228435=>{_0x228435['forEach'](_0x160fab=>{_0x160fab['addedNodes']['forEach'](_0xd6d553=>{_0xd6d553['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xd6d553);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x4ae011){const _0x568db6=new Date(_0x4ae011),_0x580a73=new Date(),_0x2aaa12=_0x580a73-_0x568db6,_0x41cc77=Math['floor'](_0x2aaa12/0x3e8),_0x12c53b=Math['floor'](_0x41cc77/0x3c),_0x551984=Math['floor'](_0x12c53b/0x3c),_0x277be9=Math['floor'](_0x551984/0x18);if(_0x41cc77<0x3c)return'now';if(_0x12c53b<0x3c)return _0x12c53b+'m\x20ago';if(_0x551984<0x18)return _0x551984+'h\x20ago';return _0x277be9+'d\x20ago';},'getStatusIcon'(_0x39a08f){switch(_0x39a08f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0xe7daa9){switch(_0xe7daa9){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'(_0x5a641b,_0x5df41c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x277dda={};_0x277dda['text/plain']=new Blob([_0x5a641b],{'type':'text/plain'});_0x5df41c&&(_0x277dda['text/html']=new Blob([_0x5df41c],{'type':'text/html'}));const _0x723750=new ClipboardItem(_0x277dda);return await navigator['clipboard']['write']([_0x723750]),!![];}catch(_0x5e7857){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5e7857);}try{const _0x42da37=_0x32037b=>{_0x32037b['preventDefault'](),_0x32037b['clipboardData']['setData']('text/plain',_0x5a641b),_0x5df41c&&_0x32037b['clipboardData']['setData']('text/html',_0x5df41c);};document['addEventListener']('copy',_0x42da37);const _0x493005=document['execCommand']('copy');document['removeEventListener']('copy',_0x42da37);if(_0x493005)return!![];}catch(_0x21b475){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x21b475);}try{const _0x18b8f1=document['createElement']('textarea');_0x18b8f1['value']=_0x5a641b,_0x18b8f1['style']['position']='fixed',_0x18b8f1['style']['opacity']='0',_0x18b8f1['style']['pointerEvents']='none',document['body']['appendChild'](_0x18b8f1),_0x18b8f1['select']();const _0x2df0d3=document['execCommand']('copy');return document['body']['removeChild'](_0x18b8f1),_0x2df0d3;}catch(_0x3d3616){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3d3616),![];}},'showToast'(_0x57e5a2,_0x477ae1='info'){const _0x3c1cd2=getNextToastId(),_0x16dff1=document['createElement']('div');_0x16dff1['className']='toast\x20toast-'+_0x477ae1,_0x16dff1['textContent']=_0x57e5a2,_0x16dff1['dataset']['toastId']=_0x3c1cd2,document['body']['appendChild'](_0x16dff1);const _0x2aac46=_0x477ae1==='error'?0x2710:0xbb8,_0x56eb30=setTimeout(()=>{removeToastById(_0x3c1cd2);},_0x2aac46),_0x51fcac={'id':_0x3c1cd2,'el':_0x16dff1,'timeoutId':_0x56eb30};return registerToast(_0x51fcac),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x16dff1['classList']['add']('show');});}),_0x3c1cd2;},'showError'(_0x232c16){console['error'](_0x232c16);const _0x25bf32=typeof _0x232c16==='string'?_0x232c16:_0x232c16['message']||'An\x20error\x20occurred';this['showToast'](_0x25bf32,'error');},'showSuccess'(_0x458e38){this['showToast'](_0x458e38,'success');},'capitalize'(_0x47f55f){if(!_0x47f55f)return'';return _0x47f55f['charAt'](0x0)['toUpperCase']()+_0x47f55f['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x215515){return escapeHtmlValue(_0x215515);},'ansiToHtml'(_0x24aedb){if(_0x24aedb===null||_0x24aedb===undefined)return'';let _0xda6a4c=this['escapeHtml'](_0x24aedb);const _0x2ee094={'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'},_0x2d2b61={'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 _0x2c15de=0x0;return _0xda6a4c=_0xda6a4c['replace'](/\x1b\[([0-9;]*)m/g,(_0xb06d5,_0x159017)=>{if(!_0x159017||_0x159017==='0'){const _0x39e95e='</span>'['repeat'](_0x2c15de);return _0x2c15de=0x0,_0x39e95e;}const _0x35195b=_0x159017['split'](';'),_0x3151f5=[];for(const _0x5ae9e1 of _0x35195b){if(_0x5ae9e1==='1')_0x3151f5['push']('font-weight:bold');else{if(_0x5ae9e1==='2')_0x3151f5['push']('opacity:0.7');else{if(_0x5ae9e1==='3')_0x3151f5['push']('font-style:italic');else{if(_0x5ae9e1==='4')_0x3151f5['push']('text-decoration:underline');else{if(_0x5ae9e1==='9')_0x3151f5['push']('text-decoration:line-through');else{if(_0x2ee094[_0x5ae9e1])_0x3151f5['push']('color:'+_0x2ee094[_0x5ae9e1]);else{if(_0x2d2b61[_0x5ae9e1])_0x3151f5['push']('background-color:'+_0x2d2b61[_0x5ae9e1]);}}}}}}}if(_0x3151f5['length']>0x0)return _0x2c15de++,'<span\x20style=\x22'+_0x3151f5['join'](';')+'\x22>';return'';}),_0xda6a4c+='</span>'['repeat'](_0x2c15de),_0xda6a4c=_0xda6a4c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4a20db,_0x23edbb)=>{if(!_0x23edbb||_0x23edbb==='0')return'';const _0xc97f17=_0x23edbb['split'](';'),_0x253229=[];for(const _0x34d930 of _0xc97f17){if(_0x34d930==='1')_0x253229['push']('font-weight:bold');else{if(_0x2ee094[_0x34d930])_0x253229['push']('color:'+_0x2ee094[_0x34d930]);else{if(_0x2d2b61[_0x34d930])_0x253229['push']('background-color:'+_0x2d2b61[_0x34d930]);}}}if(_0x253229['length']>0x0)return'<span\x20style=\x22'+_0x253229['join'](';')+'\x22>';return'';}),_0xda6a4c;},'showModal'({title:_0x5c60d2,content:_0x34c63c,buttons:buttons=[]}){const _0x8245ab='\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'](_0x5c60d2)+'</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'+_0x34c63c+'\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']((_0x54b884,_0x45ba59)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x54b884['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x45ba59+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x54b884['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',_0x5b382a=document['createElement']('div');_0x5b382a['id']='utils-modal',_0x5b382a['className']='modal',_0x5b382a['innerHTML']=_0x8245ab,document['body']['appendChild'](_0x5b382a);const _0x4f97f8=document['getElementById']('utils-modal-close');_0x4f97f8&&_0x4f97f8['addEventListener']('click',()=>this['hideModal']());const _0x41f88f=_0x5b382a['querySelectorAll']('[data-btn-index]');_0x41f88f['forEach'](_0x4bf303=>{const _0x5b481f=parseInt(_0x4bf303['dataset']['btnIndex']);buttons[_0x5b481f]?.['onClick']&&_0x4bf303['addEventListener']('click',buttons[_0x5b481f]['onClick']);});const _0xd4c9e9=document['getElementById']('utils-modal-overlay');_0xd4c9e9&&_0xd4c9e9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4b63ae=document['getElementById']('utils-modal');_0x4b63ae&&_0x4b63ae['remove']();},'parseKeyValuePairs'(_0x17d5fe){const _0x1c9fa1={};if(!_0x17d5fe)return _0x1c9fa1;return _0x17d5fe['split'](/\r?\n/)['map'](_0xe7857e=>_0xe7857e['trim']())['filter'](Boolean)['forEach'](_0x2bfdd1=>{const _0x13422c=_0x2bfdd1['indexOf']('=');if(_0x13422c>0x0){const _0x122a47=_0x2bfdd1['slice'](0x0,_0x13422c)['trim'](),_0x34be28=_0x2bfdd1['slice'](_0x13422c+0x1)['trim']();if(_0x122a47)_0x1c9fa1[_0x122a47]=_0x34be28;}}),_0x1c9fa1;},'debounce'(_0x5ec9b4,_0x22314d=0xfa){let _0x33dbe1=null;return(..._0x3abff4)=>{clearTimeout(_0x33dbe1),_0x33dbe1=setTimeout(()=>_0x5ec9b4['apply'](this,_0x3abff4),_0x22314d);};},'formatTimestamp'(_0x13b64a){if(!_0x13b64a)return'N/A';const _0x4aa824=new Date(_0x13b64a);return _0x4aa824['toLocaleDateString']()+'\x20'+_0x4aa824['toLocaleTimeString']();},'getQueryParams'(){const _0x2393b7=new URLSearchParams(window['location']['search']),_0x510971={};for(const [_0x3af2f5,_0x5e00b2]of _0x2393b7){_0x510971[_0x3af2f5]=_0x5e00b2;}return _0x510971;},'formatDuration'(_0x253bb2,_0x50eb7b){if(!_0x253bb2)return'N/A';const _0x14a342=new Date(_0x253bb2),_0x4d08bf=_0x50eb7b?new Date(_0x50eb7b):new Date(),_0x1251df=_0x4d08bf-_0x14a342;if(_0x1251df<0x0)return'0s';const _0x4a78c8=Math['floor'](_0x1251df/0x3e8),_0xe80007=Math['floor'](_0x4a78c8/0x3c),_0x10cf10=Math['floor'](_0xe80007/0x3c),_0x41105d=Math['floor'](_0x10cf10/0x18);if(_0x4a78c8<0x3c)return _0x4a78c8+'s';if(_0xe80007<0x3c)return _0xe80007+'m\x20'+_0x4a78c8%0x3c+'s';if(_0x10cf10<0x18)return _0x10cf10+'h\x20'+_0xe80007%0x3c+'m\x20'+_0x4a78c8%0x3c+'s';return _0x41105d+'d\x20'+_0x10cf10%0x18+'h\x20'+_0xe80007%0x3c+'m';},'renderMarkdown'(_0x3dbc8e,_0x5772bc={}){if(!_0x3dbc8e)return'';_0x3dbc8e=this['rewriteAttachmentLinks'](_0x3dbc8e,_0x5772bc),_0x3dbc8e=this['rewriteColorSyntax'](_0x3dbc8e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x3dbc8e);}catch(_0x385089){return console['error']('Markdown\x20parsing\x20error:',_0x385089),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);}},'rewriteAttachmentLinks'(_0x208693,_0x4dbf35={}){const _0x4231b5=typeof _0x4dbf35['resolveAttachmentUrl']==='function'?_0x4dbf35['resolveAttachmentUrl']:_0x4dbf35['taskId']?_0x4407d7=>API_BASE+'/tasks/'+_0x4dbf35['taskId']+'/attachments/'+encodeURIComponent(_0x4407d7):null;if(!_0x4231b5)return _0x208693;return String(_0x208693)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1e5274,_0x5bc737)=>{const _0x44900f=String(_0x5bc737||'')['trim']();if(!_0x44900f)return _0x1e5274;let _0xf0b6a1=_0x44900f;try{_0xf0b6a1=decodeURIComponent(_0x44900f);}catch{}const _0x5dfb4f=_0x4231b5(_0xf0b6a1);if(!_0x5dfb4f)return _0x1e5274;return']('+_0x5dfb4f+')';});},'rewriteColorSyntax'(_0xc00cf5){if(!_0xc00cf5)return _0xc00cf5;return String(_0xc00cf5)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x8e6484,_0x1e95ee,_0x4e6836)=>{const _0x5e8097=this['rewriteColorSyntax'](_0x4e6836);return'<span\x20style=\x22color:\x20'+_0x1e95ee+'\x22>'+_0x5e8097+'</span>';});},'renderMarkdownFallback'(_0x47974f,_0x176282={}){if(!_0x47974f)return'';_0x47974f=_0x47974f['replace'](/\r\n/g,'\x0a'),_0x47974f=_0x47974f['replace'](/\r/g,'\x0a'),_0x47974f=this['rewriteAttachmentLinks'](_0x47974f,_0x176282);let _0xeb5292=this['escapeHtml'](_0x47974f);return _0xeb5292=_0xeb5292['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xeb5292=_0xeb5292['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xeb5292=_0xeb5292['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xeb5292=_0xeb5292['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xeb5292=_0xeb5292['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xeb5292=_0xeb5292['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xeb5292=_0xeb5292['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xeb5292=_0xeb5292['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xeb5292=_0xeb5292['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xeb5292=_0xeb5292['replace'](/\n\n/g,'</p><p>'),_0xeb5292=_0xeb5292['replace'](/\n/g,'<br>'),'<p>'+_0xeb5292+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2d25e5=new Uint8Array(0x10);crypto['getRandomValues'](_0x2d25e5),_0x2d25e5[0x6]=_0x2d25e5[0x6]&0xf|0x40,_0x2d25e5[0x8]=_0x2d25e5[0x8]&0x3f|0x80;const _0x3415d2=Array['from'](_0x2d25e5,_0x3bb197=>_0x3bb197['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3415d2['slice'](0x0,0x8)+'-'+_0x3415d2['slice'](0x8,0xc)+'-'+_0x3415d2['slice'](0xc,0x10)+'-'+_0x3415d2['slice'](0x10,0x14)+'-'+_0x3415d2['slice'](0x14);}};export class CustomSelect{constructor(_0x321ab5,_0xf86142={}){this['nativeSelect']=_0x321ab5,this['options']=_0xf86142,this['isOpen']=![],this['selectedValue']=_0x321ab5['value']||'',this['searchable']=_0xf86142['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1622bd=document['createElement']('div');_0x1622bd['className']='custom-select';const _0x4b69a4=document['createElement']('div');_0x4b69a4['className']='custom-select-trigger',_0x4b69a4['setAttribute']('tabindex','0'),_0x4b69a4['setAttribute']('role','button'),_0x4b69a4['setAttribute']('aria-haspopup','listbox');const _0x39c543=document['createElement']('span');_0x39c543['className']='custom-select-trigger-text';const _0x18052c=document['createElement']('span');_0x18052c['className']='custom-select-arrow',_0x18052c['textContent']='▼',_0x4b69a4['appendChild'](_0x39c543),_0x4b69a4['appendChild'](_0x18052c);const _0x1fe1ab=document['createElement']('div');_0x1fe1ab['className']='custom-select-dropdown',_0x1fe1ab['setAttribute']('role','listbox');if(this['searchable']){const _0x1d60fa=document['createElement']('div');_0x1d60fa['className']='custom-select-search';const _0x32230b=document['createElement']('input');_0x32230b['type']='text',_0x32230b['className']='custom-select-search-input',_0x32230b['placeholder']='Type\x20to\x20search...',_0x32230b['setAttribute']('aria-label','Search\x20options'),_0x32230b['addEventListener']('input',_0x32abde=>{this['searchQuery']=_0x32abde['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x32230b['addEventListener']('keydown',_0x2128a8=>{if(_0x2128a8['key']==='Escape')_0x2128a8['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2128a8['key']==='Enter'){_0x2128a8['preventDefault'](),_0x2128a8['stopPropagation']();const _0x5c2d95=_0x1fe1ab['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5c2d95){const _0x377d0e=_0x5c2d95['getAttribute']('data-value');this['select'](_0x377d0e);}}}}),_0x1d60fa['appendChild'](_0x32230b),_0x1fe1ab['appendChild'](_0x1d60fa),this['searchInput']=_0x32230b;}const _0x380db2=document['createElement']('div');_0x380db2['className']='custom-select-options',_0x1fe1ab['appendChild'](_0x380db2),_0x1622bd['appendChild'](_0x4b69a4),_0x1622bd['appendChild'](_0x1fe1ab),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1622bd,this['nativeSelect']),this['wrapper']=_0x1622bd,this['trigger']=_0x4b69a4,this['triggerText']=_0x39c543,this['dropdown']=_0x1fe1ab,this['optionsContainer']=_0x380db2,_0x4b69a4['addEventListener']('click',()=>this['toggle']()),_0x4b69a4['addEventListener']('keydown',_0x18cbdc=>this['handleKeydown'](_0x18cbdc)),document['addEventListener']('click',_0x179373=>{!_0x1622bd['contains'](_0x179373['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d76dc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d76dc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x42e9=new MutationObserver(()=>{this['updateDisabledState']();});_0x42e9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x57cb13=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x57cb13['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5cf483=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5cf483),this['trigger']['setAttribute']('aria-disabled',_0x5cf483?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5cf483?'-1':'0'),_0x5cf483&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x192e47=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ac0b0=_0x192e47['filter'](_0x101825=>!_0x101825['disabled']&&!_0x101825['hidden']);_0x192e47['forEach']((_0x2d97ba,_0x322290)=>{const _0x2cb146=document['createElement']('div');_0x2cb146['className']='custom-select-option',_0x2cb146['textContent']=_0x2d97ba['textContent'],_0x2cb146['setAttribute']('data-value',_0x2d97ba['value']),_0x2cb146['setAttribute']('data-index',_0x322290),_0x2cb146['setAttribute']('role','option'),_0x2d97ba['disabled']?_0x2cb146['classList']['add']('disabled'):_0x2cb146['addEventListener']('click',()=>this['select'](_0x2d97ba['value'])),_0x2d97ba['value']===this['selectedValue']&&_0x2cb146['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2cb146),this['allOptions']['push']({'element':_0x2cb146,'text':_0x2d97ba['textContent']['toLowerCase'](),'value':_0x2d97ba['value'],'disabled':_0x2d97ba['disabled']});});if(this['searchable']&&this['searchInput']){const _0x455c7c=this['searchInput']['parentElement'];_0x1ac0b0['length']>0x3?_0x455c7c['style']['display']='':_0x455c7c['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x377414=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x575d0e=>{if(!_0x377414||_0x575d0e['disabled'])_0x575d0e['element']['style']['display']='';else{const _0x3ac25d=_0x575d0e['text']['includes'](_0x377414);_0x575d0e['element']['style']['display']=_0x3ac25d?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1c3062){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1c3062,this['nativeSelect']['value']=_0x1c3062;const _0x593b5b=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x593b5b),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xf76975=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xf76975&&(this['triggerText']['textContent']=_0xf76975['textContent'],_0xf76975['disabled']||_0xf76975['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0xf93065=>{_0xf93065['getAttribute']('data-value')===this['selectedValue']?_0xf93065['classList']['add']('selected'):_0xf93065['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 _0x37a018=window['getComputedStyle'](this['dropdown']);if(_0x37a018['position']==='fixed'){const _0xc738cd=this['trigger']['getBoundingClientRect'](),_0x2768ed=parseInt(_0x37a018['maxHeight'])||0xc8,_0xaa7ac1=window['innerHeight'],_0x1599f7=_0xaa7ac1-_0xc738cd['bottom'],_0x17157c=_0xc738cd['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x123201;_0x1599f7<_0x2768ed&&_0x17157c>_0x1599f7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xaa7ac1-_0xc738cd['top']+'px',_0x123201=Math['min'](_0x2768ed,_0x17157c-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xc738cd['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x123201=Math['min'](_0x2768ed,_0x1599f7-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px');if(this['optionsContainer']){let _0x29694b=_0x123201;if(this['searchInput']){const _0x47175f=this['searchInput']['parentElement'];_0x47175f&&(_0x29694b-=_0x47175f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x29694b)+'px';}this['dropdown']['style']['left']=_0xc738cd['left']+'px',this['dropdown']['style']['width']=_0xc738cd['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x16402e=this['searchInput']['parentElement'];_0x16402e&&_0x16402e['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'](_0x109669){if(this['nativeSelect']['disabled'])return;if(_0x109669['key']==='Enter'||_0x109669['key']==='\x20')_0x109669['preventDefault'](),this['toggle']();else _0x109669['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ea581='\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',_0x4ea581),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x23ff5c=document['getElementById']('confirm-dialog-close'),_0x3111d9=document['getElementById']('confirm-dialog-cancel'),_0x4f4bc5=document['getElementById']('confirm-dialog-confirm'),_0x185f1b=this['_modal']['querySelector']('.modal-overlay');_0x23ff5c['addEventListener']('click',()=>this['_resolve'](![])),_0x3111d9['addEventListener']('click',()=>this['_resolve'](![])),_0x4f4bc5['addEventListener']('click',()=>this['_resolve'](!![])),_0x185f1b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1e8327=>{if(_0x1e8327['key']==='Escape')_0x1e8327['preventDefault'](),this['_resolve'](![]);else _0x1e8327['key']==='Enter'&&(_0x1e8327['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xfd2c16,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x377a41=>{this['_resolvePromise']=_0x377a41,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xfd2c16;const _0x337fec=document['getElementById']('confirm-dialog-cancel'),_0x196b99=document['getElementById']('confirm-dialog-confirm');_0x337fec['textContent']=cancelText,_0x196b99['textContent']=confirmText,_0x196b99['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x196b99['focus']();});},'_resolve'(_0x222db1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x222db1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1f214b,_0x404ef6={}){this['container']=_0x1f214b,this['options']={'placeholder':_0x404ef6['placeholder']||'Type\x20to\x20search...','maxItems':_0x404ef6['maxItems']||0x64,'loadItems':_0x404ef6['loadItems']||(async()=>[]),'renderItem':_0x404ef6['renderItem']||(_0x430315=>({'primary':String(_0x430315),'secondary':''})),'onSelect':_0x404ef6['onSelect']||(()=>{}),'filterItems':_0x404ef6['filterItems']||null,'getItemValue':_0x404ef6['getItemValue']||(_0x297d68=>_0x297d68),'sortItems':_0x404ef6['sortItems']||null,'debounceMs':_0x404ef6['debounceMs']||0xc8,'minCharsForSearch':_0x404ef6['minCharsForSearch']||0x0,'emptyMessage':_0x404ef6['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x404ef6['loadingMessage']||'Loading...','preload':_0x404ef6['preload']!==![],'searchMode':_0x404ef6['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',_0x2a5634=>this['onBlur'](_0x2a5634)),this['input']['addEventListener']('input',_0x5dab8d=>this['onInput'](_0x5dab8d)),this['input']['addEventListener']('keydown',_0x1322a3=>this['onKeydown'](_0x1322a3)),this['clearBtn']['addEventListener']('mousedown',_0x4d3524=>{_0x4d3524['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1d2d80=>{_0x1d2d80['preventDefault']();}),document['addEventListener']('click',_0x3845f4=>{!this['wrapper']['contains'](_0x3845f4['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(_0x18ff78){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x18ff78);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x355c1b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35b0de){const _0x528b4b=_0x35b0de['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x528b4b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x528b4b):this['loadAndShow'](_0x528b4b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x401119){switch(_0x401119['key']){case'ArrowDown':_0x401119['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x401119['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x401119['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x401119['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x1675dd){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x40d07d=this['selectedIndex']+_0x1675dd;if(_0x40d07d>=0x0&&_0x40d07d<this['filteredItems']['length']){this['selectedIndex']=_0x40d07d,this['updateSelectionHighlight']();const _0x1b144b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1b144b[this['selectedIndex']]&&_0x1b144b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0xabb523=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xabb523['forEach']((_0x56a586,_0x2faecb)=>{_0x56a586['classList']['toggle']('keyboard-selected',_0x2faecb===this['selectedIndex']);});}async['loadAndShow'](_0x3a45ba){this['showLoading']();try{const _0x3a7920=await this['options']['loadItems'](_0x3a45ba);if(this['options']['searchMode']==='server'){let _0x576e0d=_0x3a7920;this['options']['sortItems']&&(_0x576e0d=this['options']['sortItems']([..._0x3a7920]));this['filteredItems']=_0x576e0d;const _0x478e5b=this['filteredItems']['length']>=this['options']['maxItems'];_0x478e5b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x478e5b),this['open']();}else this['allItems']=_0x3a7920,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x3a45ba);}catch(_0x3c31aa){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3c31aa),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2f2d19){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2f2d19):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5a4cd7=this['filteredItems']['length']>=this['options']['maxItems'];_0x5a4cd7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5a4cd7),this['open']();}['renderItems'](_0x5a90b4){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']((_0x20d51d,_0x1483e1)=>{const _0x5204a6=document['createElement']('div');_0x5204a6['className']='autocomplete-select-item',_0x5204a6['setAttribute']('role','option'),_0x5204a6['setAttribute']('data-index',_0x1483e1);const _0x976381=this['options']['renderItem'](_0x20d51d);let _0xca321f='';_0x976381['icon']&&(_0xca321f='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x976381['iconClass']||'')+'\x22>'+_0x976381['icon']+'</span>'),_0x5204a6['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xca321f+'\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'](_0x976381['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x976381['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x976381['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5204a6['addEventListener']('click',()=>{this['selectItem'](_0x20d51d);}),_0x5204a6['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1483e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5204a6);}),_0x5a90b4?(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'](_0x2ba29a){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2ba29a)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x36c471){this['selectedItem']=_0x36c471;const _0x4c650c=this['options']['renderItem'](_0x36c471);this['input']['value']=_0x4c650c['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x36c471);}['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'](_0x4779a4){if(_0x4779a4){this['selectedItem']=_0x4779a4;const _0x4b9b1b=this['options']['renderItem'](_0x4779a4);this['input']['value']=_0x4b9b1b['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x48a593){this['allItems']=_0x48a593,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'](_0x4d487f){this['input']['placeholder']=_0x4d487f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x201a3a=null){const _0x4ff104=document['getElementById']('admin-menu-container'),_0x2bf1de=document['getElementById']('admin-menu-btn'),_0x1fffdb=document['getElementById']('admin-menu');if(!_0x4ff104||!_0x2bf1de||!_0x1fffdb)return;try{!_0x201a3a&&(_0x201a3a=await API['getCurrentUser']());if(_0x201a3a){const _0x4800b3=window['Permissions'],_0x1da9f2=_0x4800b3['hasServerPermission'](_0x201a3a,'*')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:manage')||_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')||_0x4800b3['hasTeamPermission'](_0x201a3a,'teams:manage')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:view_details');if(!_0x1da9f2)return;_0x4ff104['hidden']=![];if(!_0x4800b3['hasServerPermission'](_0x201a3a,'*')){const _0x55e8e5=_0x1fffdb['querySelectorAll']('.admin-menu-item');_0x55e8e5['forEach'](_0x5bbe4a=>{const _0x238dc8=_0x5bbe4a['querySelector']('.option-text')?.['textContent']?.['trim']();_0x238dc8==='Users'&&!_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Skills'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Settings'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Health'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Git\x20History'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Roles'&&(_0x5bbe4a['hidden']=!![]);});}_0x2bf1de['addEventListener']('click',_0x25c738=>{_0x25c738['stopPropagation']();const _0xb0adca=document['getElementById']('actions-menu');if(_0xb0adca)_0xb0adca['hidden']=!![];_0x1fffdb['hidden']=!_0x1fffdb['hidden'];}),document['addEventListener']('click',_0x40afaa=>{!_0x1fffdb['hidden']&&!_0x2bf1de['contains'](_0x40afaa['target'])&&!_0x1fffdb['contains'](_0x40afaa['target'])&&(_0x1fffdb['hidden']=!![]);}),document['addEventListener']('keydown',_0x30a990=>{_0x30a990['key']==='Escape'&&!_0x1fffdb['hidden']&&(_0x1fffdb['hidden']=!![]);});const _0x3e01cf=document['getElementById']('server-health-btn');_0x3e01cf&&_0x3e01cf['addEventListener']('click',async()=>{_0x1fffdb['hidden']=!![];const {openServerHealthModal:_0x326aef}=await import('./server-health.js');_0x326aef();});}}catch(_0x174031){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x174031['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 _0x1e6a3c=window['location']['pathname'],_0x5db90e=_0x1e6a3c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db90e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db90e[0x1]),_0x5db90e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x430f73={}){const _0x3f1e82=new URLSearchParams();_0x430f73['userId']&&_0x3f1e82['set']('userId',String(_0x430f73['userId']));_0x430f73['automation']&&_0x3f1e82['set']('automation',String(_0x430f73['automation']));const _0x914179=API_BASE+'/tasks/stats'+(_0x3f1e82['toString']()?'?'+_0x3f1e82['toString']():''),_0xd11ad2=await fetch(_0x914179);if(!_0xd11ad2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0xd11ad2['statusText']);return await _0xd11ad2['json']();},async 'getTasks'(_0x44bc65={}){const _0x31903b=new URLSearchParams();_0x44bc65['status']&&_0x31903b['set']('status',String(_0x44bc65['status']));_0x44bc65['environment']&&_0x31903b['set']('environment',String(_0x44bc65['environment']));_0x44bc65['automation']&&_0x31903b['set']('automation',String(_0x44bc65['automation']));if(_0x44bc65['include']){const _0x2b8bf6=Array['isArray'](_0x44bc65['include'])?_0x44bc65['include']['join'](','):String(_0x44bc65['include']);_0x2b8bf6&&_0x31903b['set']('include',_0x2b8bf6);}_0x44bc65['filter']&&_0x31903b['set']('filter',String(_0x44bc65['filter']));_0x44bc65['page']&&_0x31903b['set']('page',String(_0x44bc65['page']));_0x44bc65['limit']&&_0x31903b['set']('limit',String(_0x44bc65['limit']));_0x44bc65['userId']&&_0x31903b['set']('userId',String(_0x44bc65['userId']));_0x44bc65['search']&&_0x31903b['set']('search',String(_0x44bc65['search']));_0x44bc65['includeChildTasks']&&_0x31903b['set']('includeChildTasks','true');const _0x44fc61=API_BASE+'/tasks'+(_0x31903b['toString']()?'?'+_0x31903b['toString']():''),_0x277454=await fetch(_0x44fc61);if(!_0x277454['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x277454['statusText']);return await _0x277454['json']();},async 'getAutomations'(_0x46f0dd={}){const _0x452f9e=new URLSearchParams();_0x46f0dd['environment']&&_0x452f9e['set']('environment',String(_0x46f0dd['environment']));const _0x1f929a=await fetch(API_BASE+'/api/automations'+(_0x452f9e['toString']()?'?'+_0x452f9e['toString']():''));if(!_0x1f929a['ok']){const _0x3e41da=await _0x1f929a['json']()['catch'](()=>({}));throw new Error(_0x3e41da['message']||_0x3e41da['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1f929a['statusText']);}return await _0x1f929a['json']();},async 'getAutomation'(_0x318948){const _0x4ff062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x318948));if(!_0x4ff062['ok']){const _0x11f55f=await _0x4ff062['json']()['catch'](()=>({}));throw new Error(_0x11f55f['message']||_0x11f55f['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4ff062['statusText']);}return await _0x4ff062['json']();},async 'createAutomation'(_0x54cc2b){const _0x168115=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54cc2b||{})});if(!_0x168115['ok']){const _0x57c20f=await _0x168115['json']()['catch'](()=>({}));throw new Error(_0x57c20f['message']||_0x57c20f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x168115['statusText']);}return await _0x168115['json']();},async 'updateAutomation'(_0x92645c,_0x18bef0){const _0x404712=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x92645c),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18bef0||{})});if(!_0x404712['ok']){const _0xe96de4=await _0x404712['json']()['catch'](()=>({}));throw new Error(_0xe96de4['message']||_0xe96de4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x404712['statusText']);}return await _0x404712['json']();},async 'deleteAutomation'(_0x41ad48){const _0x352edb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x41ad48),{'method':'DELETE'});if(!_0x352edb['ok']){const _0x41a849=await _0x352edb['json']()['catch'](()=>({}));throw new Error(_0x41a849['message']||_0x41a849['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x352edb['statusText']);}return await _0x352edb['json']();},async 'triggerAutomation'(_0x1c365e){const _0x5692=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c365e)+'/trigger',{'method':'POST'});if(!_0x5692['ok']){const _0x197d40=await _0x5692['json']()['catch'](()=>({}));throw new Error(_0x197d40['message']||_0x197d40['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5692['statusText']);}return await _0x5692['json']();},async 'setAutomationEnabled'(_0x2036c4,_0x435fcf){const _0xe6e202=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2036c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x435fcf})});if(!_0xe6e202['ok']){const _0x573266=await _0xe6e202['json']()['catch'](()=>({}));throw new Error(_0x573266['message']||_0x573266['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0xe6e202['statusText']);}return await _0xe6e202['json']();},async 'getAutomationHistory'(_0x4f3c70,_0x2ec000=0x32){const _0x575e08=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f3c70)+'/history?limit='+encodeURIComponent(String(_0x2ec000)));if(!_0x575e08['ok']){const _0x511465=await _0x575e08['json']()['catch'](()=>({}));throw new Error(_0x511465['message']||_0x511465['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x575e08['statusText']);}return await _0x575e08['json']();},async 'getTask'(_0x982e53,_0x520697={}){const _0x20d6d2=new URLSearchParams();if(_0x520697['include']){const _0x387938=Array['isArray'](_0x520697['include'])?_0x520697['include']['join'](','):String(_0x520697['include']);if(_0x387938)_0x20d6d2['set']('include',_0x387938);}const _0xc2644f=await fetch(API_BASE+'/tasks/'+_0x982e53+(_0x20d6d2['toString']()?'?'+_0x20d6d2['toString']():''));if(!_0xc2644f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xc2644f['statusText']);return await _0xc2644f['json']();},async 'getTaskResults'(_0x42542f){const _0x9f87bc=await fetch(API_BASE+'/tasks/'+_0x42542f+'/results');if(!_0x9f87bc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x9f87bc['statusText']);return await _0x9f87bc['json']();},async 'getTaskPatches'(_0x1f93fc){const _0x4b5457=await fetch(API_BASE+'/tasks/'+_0x1f93fc+'/patches');if(!_0x4b5457['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x4b5457['statusText']);return await _0x4b5457['json']();},async 'getTaskAttachments'(_0x2b808b){const _0x4bbf21=await fetch(API_BASE+'/tasks/'+_0x2b808b+'/attachments');if(!_0x4bbf21['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4bbf21['statusText']);return await _0x4bbf21['json']();},async 'uploadAttachments'(_0x3f2dc2,_0x1a3ce9){const _0xc322b5=new FormData();for(const _0x258973 of _0x1a3ce9){_0xc322b5['append']('attachments',_0x258973);}const _0x493a22=await fetch(API_BASE+'/tasks/'+_0x3f2dc2+'/attachments',{'method':'POST','body':_0xc322b5});if(!_0x493a22['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x493a22['statusText']);return await _0x493a22['json']();},async 'isAINameGenerationAvailable'(){try{const _0x381225=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x381225['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x381225['json']();}catch(_0x4df15b){return{'available':![],'reason':_0x4df15b['message']};}},async 'generateTaskName'(_0x167fc9){try{const _0x4865c9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x167fc9})});return await _0x4865c9['json']();}catch(_0x1b5c7c){return{'success':![],'error':_0x1b5c7c['message']};}},async 'createTask'(_0x18f614){let _0x520c87,_0x19c4ee={};if(_0x18f614['files']&&_0x18f614['files']['length']>0x0){const _0x59e40a=new FormData();for(const [_0xd52e81,_0x5d967d]of Object['entries'](_0x18f614)){if(_0xd52e81!=='files'){if(_0x5d967d==null)continue;typeof _0x5d967d==='object'?_0x59e40a['append'](_0xd52e81,JSON['stringify'](_0x5d967d)):_0x59e40a['append'](_0xd52e81,String(_0x5d967d));}}for(const _0x3d6f2d of _0x18f614['files']){_0x59e40a['append']('attachments',_0x3d6f2d);}_0x520c87=_0x59e40a;}else _0x19c4ee['Content-Type']='application/json',_0x520c87=JSON['stringify'](_0x18f614);const _0x534bb4=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x19c4ee,'body':_0x520c87});if(!_0x534bb4['ok']){const _0x56d6a0=await _0x534bb4['json'](),_0x1cbaae=new Error(_0x56d6a0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x534bb4['statusText']),{message:_0x38770d,..._0x272558}=_0x56d6a0;Object['assign'](_0x1cbaae,_0x272558);throw _0x1cbaae;}return await _0x534bb4['json']();},async 'createTestTask'(_0x3b6713){const _0x484500=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b6713)});if(!_0x484500['ok']){const _0xff60f2=await _0x484500['json']();throw new Error(_0xff60f2['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x484500['statusText']);}return await _0x484500['json']();},async 'createEphemeralTest'(_0x18cfd0){const _0x35e077=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18cfd0)});if(!_0x35e077['ok']){const _0x37b9ad=await _0x35e077['json']();throw new Error(_0x37b9ad['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35e077['statusText']);}return await _0x35e077['json']();},async 'createDeployTask'(_0x634cc9){const _0x509703=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x634cc9)});if(!_0x509703['ok']){const _0x267354=await _0x509703['json']();throw new Error(_0x267354['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x509703['statusText']);}return await _0x509703['json']();},async 'getEnvironments'(){const _0x441c1e=await fetch(API_BASE+'/environments');if(!_0x441c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x441c1e['statusText']);return await _0x441c1e['json']();},async 'getEnvironment'(_0x319809){const _0x126a94=await fetch(API_BASE+'/environments/'+_0x319809);if(!_0x126a94['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x126a94['statusText']);return await _0x126a94['json']();},async 'getEnvironmentRepoHistory'(_0x331d40,_0x58c336,_0x160d41={}){if(!_0x331d40||!_0x58c336)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9f3fba=new URLSearchParams();if(_0x160d41['limit'])_0x9f3fba['set']('limit',String(_0x160d41['limit']));if(_0x160d41['offset'])_0x9f3fba['set']('offset',String(_0x160d41['offset']));if(_0x160d41['search'])_0x9f3fba['set']('search',String(_0x160d41['search']));if(_0x160d41['branch'])_0x9f3fba['set']('branch',String(_0x160d41['branch']));const _0xe027fa=API_BASE+'/environments/'+encodeURIComponent(_0x331d40)+'/repos/'+encodeURIComponent(_0x58c336)+'/git/history',_0x7e19ff=await fetch(''+_0xe027fa+(_0x9f3fba['toString']()?'?'+_0x9f3fba['toString']():''));if(!_0x7e19ff['ok']){const _0x173c54=await _0x7e19ff['json']()['catch'](()=>({}));throw new Error(_0x173c54['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x7e19ff['statusText']);}return await _0x7e19ff['json']();},async 'getEnvironmentRepoCommit'(_0x5240f5,_0x9ed95d,_0x47379d){if(!_0x5240f5||!_0x9ed95d||!_0x47379d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x11455a=API_BASE+'/environments/'+encodeURIComponent(_0x5240f5)+'/repos/'+encodeURIComponent(_0x9ed95d)+'/git/commits/'+encodeURIComponent(_0x47379d),_0x333aeb=await fetch(_0x11455a);if(!_0x333aeb['ok']){const _0x4c4372=await _0x333aeb['json']()['catch'](()=>({}));throw new Error(_0x4c4372['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x333aeb['statusText']);}return await _0x333aeb['json']();},async 'getEnvironmentRepoBranches'(_0x2aa913,_0x4940c9){if(!_0x2aa913||!_0x4940c9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x433169=API_BASE+'/environments/'+encodeURIComponent(_0x2aa913)+'/repos/'+encodeURIComponent(_0x4940c9)+'/git/branches',_0x4fa38b=await fetch(_0x433169);if(!_0x4fa38b['ok']){const _0x1e3d57=await _0x4fa38b['json']()['catch'](()=>({}));throw new Error(_0x1e3d57['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4fa38b['statusText']);}return await _0x4fa38b['json']();},async 'revertEnvironmentRepoCommit'(_0x262ff8,_0x1211bd,_0x1ec5ce,_0x13c2a4={}){if(!_0x262ff8||!_0x1211bd||!_0x1ec5ce)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x38b19f=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x262ff8)+'/repos/'+encodeURIComponent(_0x1211bd)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1ec5ce,..._0x13c2a4})});if(!_0x38b19f['ok']){const _0x5a1966=await _0x38b19f['json']()['catch'](()=>({}));throw new Error(_0x5a1966['message']||_0x5a1966['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x38b19f['statusText']);}return await _0x38b19f['json']();},async 'getTemplates'(_0x11e597={}){const _0x5a342d=new URLSearchParams();if(_0x11e597['include']){const _0x1497ea=Array['isArray'](_0x11e597['include'])?_0x11e597['include']['join'](','):String(_0x11e597['include']);if(_0x1497ea)_0x5a342d['set']('include',_0x1497ea);}const _0x4c3c37=await fetch(API_BASE+'/templates'+(_0x5a342d['toString']()?'?'+_0x5a342d['toString']():''));if(!_0x4c3c37['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4c3c37['statusText']);return await _0x4c3c37['json']();},async 'getTemplatesForEnvironment'(_0x281c55,_0x1e8102={}){if(!_0x281c55)throw new Error('Environment\x20name\x20is\x20required');const _0x5c353d=new URLSearchParams();if(_0x1e8102['include']){const _0x1205b5=Array['isArray'](_0x1e8102['include'])?_0x1e8102['include']['join'](','):String(_0x1e8102['include']);if(_0x1205b5)_0x5c353d['set']('include',_0x1205b5);}const _0x31973d=await fetch(API_BASE+'/templates/'+_0x281c55+(_0x5c353d['toString']()?'?'+_0x5c353d['toString']():''));if(!_0x31973d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x281c55+':\x20'+_0x31973d['statusText']);return await _0x31973d['json']();},async 'getTemplate'(_0x2eaf7e,_0x5ceec8,_0x17cfc3={}){if(!_0x2eaf7e||!_0x5ceec8)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x312961=new URLSearchParams();if(_0x17cfc3['include']){const _0x4987f9=Array['isArray'](_0x17cfc3['include'])?_0x17cfc3['include']['join'](','):String(_0x17cfc3['include']);if(_0x4987f9)_0x312961['set']('include',_0x4987f9);}const _0x215bb0=await fetch(API_BASE+'/templates/'+_0x2eaf7e+'/'+_0x5ceec8+(_0x312961['toString']()?'?'+_0x312961['toString']():''));if(!_0x215bb0['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x215bb0['statusText']);return await _0x215bb0['json']();},async 'getTaskLogs'(_0xf48b7b,_0xe2a088={}){if(!_0xf48b7b)throw new Error('Task\x20ID\x20is\x20required');const _0x36c855=new URLSearchParams();_0xe2a088['tail']&&_0x36c855['set']('tail',String(_0xe2a088['tail']));const _0x105b3e=await fetch(API_BASE+'/tasks/'+_0xf48b7b+'/logs'+(_0x36c855['toString']()?'?'+_0x36c855['toString']():''));if(!_0x105b3e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x105b3e['statusText']);return await _0x105b3e['text']();},async 'getContainers'(){const _0x5d0a4f=await fetch(API_BASE+'/containers');if(!_0x5d0a4f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5d0a4f['statusText']);return await _0x5d0a4f['json']();},async 'getContainer'(_0x4b9a80){const _0x14e10d=await fetch(API_BASE+'/containers/'+_0x4b9a80);if(!_0x14e10d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x14e10d['statusText']);return await _0x14e10d['json']();},async 'startInteractiveContainer'(_0x5b6e11){const _0xcca4c4=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b6e11)});if(!_0xcca4c4['ok']){const _0x3d5860=await _0xcca4c4['json']()['catch'](()=>({}));throw new Error(_0x3d5860['message']||'Failed\x20to\x20start\x20container:\x20'+_0xcca4c4['statusText']);}return await _0xcca4c4['json']();},async 'startContainerCodeServer'(_0x148086,_0x3d3320={}){if(!_0x148086)throw new Error('Container\x20ID\x20is\x20required');const _0x127986=new URLSearchParams();_0x3d3320['theme']&&_0x127986['set']('theme',_0x3d3320['theme']);const _0x4a6d53=await fetch(API_BASE+'/containers/'+_0x148086+'/code-server'+(_0x127986['toString']()?'?'+_0x127986['toString']():'')),_0x277d9e=await _0x4a6d53['json']()['catch'](()=>({}));if(!_0x4a6d53['ok'])throw new Error(_0x277d9e['message']||_0x277d9e['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4a6d53['statusText']);return _0x277d9e;},async 'stopContainer'(_0x208835){const _0x154633=await fetch(API_BASE+'/containers/'+_0x208835,{'method':'DELETE'});if(!_0x154633['ok']){const _0x39294d=await _0x154633['json']()['catch'](()=>({}));throw new Error(_0x39294d['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x154633['statusText']);}return await _0x154633['json']();},async 'stopTask'(_0x1a1347){if(!_0x1a1347)throw new Error('Task\x20ID\x20is\x20required');const _0x5305a7=await fetch(API_BASE+'/tasks/'+_0x1a1347+'/stop',{'method':'POST'});if(!_0x5305a7['ok']){const _0x12e819=await _0x5305a7['json']()['catch'](()=>({}));throw new Error(_0x12e819['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x5305a7['statusText']);}return await _0x5305a7['json']();},async 'interruptTask'(_0xdd167){if(!_0xdd167)throw new Error('Task\x20ID\x20is\x20required');const _0x3ea45c=await fetch(API_BASE+'/tasks/'+_0xdd167+'/interrupt',{'method':'POST'});if(!_0x3ea45c['ok']){const _0x1d7722=await _0x3ea45c['json']()['catch'](()=>({}));throw new Error(_0x1d7722['error']||_0x1d7722['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ea45c['statusText']);}return await _0x3ea45c['json']();},async 'startTask'(_0x1c6151){if(!_0x1c6151)throw new Error('Task\x20ID\x20is\x20required');const _0x5b6381=await fetch(API_BASE+'/tasks/'+_0x1c6151+'/start',{'method':'POST'});if(!_0x5b6381['ok']){const _0x2fb715=await _0x5b6381['json']()['catch'](()=>({}));throw new Error(_0x2fb715['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b6381['statusText']);}return await _0x5b6381['json']();},async 'deleteTask'(_0x40883c){if(!_0x40883c)throw new Error('Task\x20ID\x20is\x20required');const _0x580bdb=await fetch(API_BASE+'/tasks/'+_0x40883c,{'method':'DELETE'});if(!_0x580bdb['ok']){const _0x29a164=await _0x580bdb['json']()['catch'](()=>({}));throw new Error(_0x29a164['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x580bdb['statusText']);}return await _0x580bdb['json']();},async 'refreshTasksFromDisk'(){const _0x3c89ec=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3c89ec['ok']){const _0x414648=await _0x3c89ec['json']()['catch'](()=>({}));throw new Error(_0x414648['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3c89ec['statusText']);}return await _0x3c89ec['json']();},async 'approveTask'(_0x3d6343,_0x323866={}){if(!_0x3d6343)throw new Error('Task\x20ID\x20is\x20required');const _0x231ed3={'commit_message':_0x323866['commit_message']||'','pull':_0x323866['pull']??![],'push':_0x323866['push']??![]};_0x323866['new_branch']&&(_0x231ed3['new_branch']=_0x323866['new_branch']);const _0x18d5fd=await fetch(API_BASE+'/tasks/'+_0x3d6343+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x231ed3)});if(!_0x18d5fd['ok']){const _0x2b60fb=await _0x18d5fd['json']()['catch'](()=>({}));let _0xbf364=_0x2b60fb['error']||_0x2b60fb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x18d5fd['statusText'];if(_0x2b60fb['results']&&Array['isArray'](_0x2b60fb['results'])){const _0x507946=_0x2b60fb['results']['filter'](_0x31561f=>!_0x31561f['success']&&_0x31561f['error']);_0x507946['length']>0x0&&(_0xbf364=_0x507946[0x0]['error']);}throw new Error(_0xbf364);}return await _0x18d5fd['json']();},async 'getPullRequestInfo'(_0x31443d){if(!_0x31443d)throw new Error('Task\x20ID\x20is\x20required');const _0x632b23=await fetch(API_BASE+'/tasks/'+_0x31443d+'/pull-request-info');if(!_0x632b23['ok']){const _0x1829eb=await _0x632b23['json']()['catch'](()=>({}));throw new Error(_0x1829eb['error']||_0x1829eb['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x632b23['statusText']);}return await _0x632b23['json']();},async 'createPullRequests'(_0x50a8fe,_0x419a81){if(!_0x50a8fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x419a81||!Array['isArray'](_0x419a81))throw new Error('repos\x20array\x20is\x20required');const _0x409eff=await fetch(API_BASE+'/tasks/'+_0x50a8fe+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x419a81})});if(!_0x409eff['ok']){const _0x4b3108=await _0x409eff['json']()['catch'](()=>({}));let _0x312954=_0x4b3108['error']||_0x4b3108['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x409eff['statusText'];if(_0x4b3108['results']&&Array['isArray'](_0x4b3108['results'])){const _0x34745e=_0x4b3108['results']['filter'](_0x54a77b=>!_0x54a77b['success']&&_0x54a77b['error']);_0x34745e['length']>0x0&&(_0x312954=_0x34745e[0x0]['error']);}throw new Error(_0x312954);}return await _0x409eff['json']();},async 'syncRepos'(_0x485d62){if(!_0x485d62)throw new Error('Task\x20ID\x20is\x20required');const _0xdf726a=await fetch(API_BASE+'/tasks/'+_0x485d62+'/sync-repos',{'method':'POST'});if(!_0xdf726a['ok']){const _0x3b106f=await _0xdf726a['json']()['catch'](()=>({}));throw new Error(_0x3b106f['error']||_0x3b106f['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xdf726a['statusText']);}return await _0xdf726a['json']();},async 'getIbmiSyncInfo'(_0x3543e3){if(!_0x3543e3)throw new Error('Task\x20ID\x20is\x20required');const _0x25d179=await fetch(API_BASE+'/tasks/'+_0x3543e3+'/ibmi-sync-info');if(!_0x25d179['ok']){const _0x18f64d=await _0x25d179['json']()['catch'](()=>({}));throw new Error(_0x18f64d['error']||_0x18f64d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25d179['json']();},async 'getSyncFiles'(_0x3d85e1){if(!_0x3d85e1)throw new Error('Task\x20ID\x20is\x20required');const _0x45906e=await fetch(API_BASE+'/tasks/'+_0x3d85e1+'/sync-to-ibmi/files');if(!_0x45906e['ok']){const _0x3a2524=await _0x45906e['json']()['catch'](()=>({}));throw new Error(_0x3a2524['error']||_0x3a2524['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x45906e['json']();},async 'syncToIbmi'(_0x105fa8,_0x41e58e,_0x8d6ae8=null,_0x2899a5=null,_0x491580=null){if(!_0x105fa8)throw new Error('Task\x20ID\x20is\x20required');const _0x50a2b7={'library':_0x41e58e};if(_0x8d6ae8)_0x50a2b7['user']=_0x8d6ae8;if(_0x2899a5)_0x50a2b7['password']=_0x2899a5;if(_0x491580)_0x50a2b7['files']=_0x491580;const _0x3b9b04=await fetch(API_BASE+'/tasks/'+_0x105fa8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50a2b7)});if(!_0x3b9b04['ok']){const _0x81417f=await _0x3b9b04['json']()['catch'](()=>({}));throw new Error(_0x81417f['error']||_0x81417f['message']||'Sync\x20failed');}return await _0x3b9b04['json']();},async 'getIbmiSyncLog'(_0x3f44af){if(!_0x3f44af)throw new Error('Task\x20ID\x20is\x20required');const _0x2647a1=await fetch(API_BASE+'/tasks/'+_0x3f44af+'/ibmi-sync-log');if(!_0x2647a1['ok']){const _0x499ffa=await _0x2647a1['json']()['catch'](()=>({}));throw new Error(_0x499ffa['error']||_0x499ffa['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2647a1['json']();},async 'pullChanges'(_0x1e7346){if(!_0x1e7346)throw new Error('Task\x20ID\x20is\x20required');const _0x5acc04=await fetch(API_BASE+'/tasks/'+_0x1e7346+'/pull-changes',{'method':'POST'});if(!_0x5acc04['ok']){const _0x26a586=await _0x5acc04['json']()['catch'](()=>({}));throw new Error(_0x26a586['error']||_0x26a586['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5acc04['statusText']);}return await _0x5acc04['json']();},async 'readFile'(_0x2e0eea,_0x3940b4){if(!_0x2e0eea)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3940b4)throw new Error('File\x20path\x20is\x20required');const _0x19c9b7=await fetch(API_BASE+'/tasks/'+_0x2e0eea+'/files?path='+encodeURIComponent(_0x3940b4));if(!_0x19c9b7['ok']){const _0x5a21f6=await _0x19c9b7['json']()['catch'](()=>({}));throw new Error(_0x5a21f6['error']||_0x5a21f6['message']||'Failed\x20to\x20read\x20file:\x20'+_0x19c9b7['statusText']);}return await _0x19c9b7['json']();},'getTaskFileDownloadUrl'(_0x296a7c,_0x1a5844){if(!_0x296a7c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5844)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x296a7c+'/files/download?path='+encodeURIComponent(_0x1a5844);},async 'writeFile'(_0x52daf0,_0x50a940,_0x2d26b0){if(!_0x52daf0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50a940)throw new Error('File\x20path\x20is\x20required');if(_0x2d26b0===undefined)throw new Error('Content\x20is\x20required');const _0x185777=await fetch(API_BASE+'/tasks/'+_0x52daf0+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x50a940,'content':_0x2d26b0})});if(!_0x185777['ok']){const _0x53a33b=await _0x185777['json']()['catch'](()=>({}));throw new Error(_0x53a33b['error']||_0x53a33b['message']||'Failed\x20to\x20write\x20file:\x20'+_0x185777['statusText']);}return await _0x185777['json']();},async 'uploadTaskFiles'(_0x572842,_0x245446,_0x3539c2){if(!_0x572842)throw new Error('Task\x20ID\x20is\x20required');if(!_0x245446)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3539c2||_0x3539c2['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32b10f=new FormData();_0x32b10f['append']('targetDir',_0x245446);for(const _0xa7cc8 of _0x3539c2){_0x32b10f['append']('files',_0xa7cc8,_0xa7cc8['name']);}const _0x516fa5=await fetch(API_BASE+'/tasks/'+_0x572842+'/files/upload',{'method':'POST','body':_0x32b10f});if(!_0x516fa5['ok']){const _0x2962e7=await _0x516fa5['json']()['catch'](()=>({}));throw new Error(_0x2962e7['error']||_0x2962e7['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x516fa5['statusText']);}return await _0x516fa5['json']();},async 'createDirectory'(_0x1c1ff3,_0x731597){if(!_0x1c1ff3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x731597)throw new Error('Directory\x20path\x20is\x20required');const _0x16ddc3=await fetch(API_BASE+'/tasks/'+_0x1c1ff3+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x731597})});if(!_0x16ddc3['ok']){const _0x2aea00=await _0x16ddc3['json']()['catch'](()=>({}));throw new Error(_0x2aea00['error']||_0x2aea00['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x16ddc3['statusText']);}return await _0x16ddc3['json']();},async 'renamePath'(_0x597b21,_0x59ed0e,_0x5f02e2){if(!_0x597b21)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59ed0e)throw new Error('Source\x20path\x20is\x20required');if(!_0x5f02e2)throw new Error('Destination\x20path\x20is\x20required');const _0x2b60a1=await fetch(API_BASE+'/tasks/'+_0x597b21+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x59ed0e,'newPath':_0x5f02e2})});if(!_0x2b60a1['ok']){const _0x7cb617=await _0x2b60a1['json']()['catch'](()=>({}));throw new Error(_0x7cb617['error']||_0x7cb617['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2b60a1['statusText']);}return await _0x2b60a1['json']();},async 'deleteFile'(_0x511a65,_0x2c7708){if(!_0x511a65)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c7708)throw new Error('File\x20path\x20is\x20required');const _0x283d23=await fetch(API_BASE+'/tasks/'+_0x511a65+'/files?path='+encodeURIComponent(_0x2c7708),{'method':'DELETE'});if(!_0x283d23['ok']){const _0x3c0aed=await _0x283d23['json']()['catch'](()=>({}));throw new Error(_0x3c0aed['error']||_0x3c0aed['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x283d23['statusText']);}return await _0x283d23['json']();},async 'deleteDirectory'(_0x1f2af3,_0x5326d3){if(!_0x1f2af3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5326d3)throw new Error('Directory\x20path\x20is\x20required');const _0x9cafd0=await fetch(API_BASE+'/tasks/'+_0x1f2af3+'/files/directory?path='+encodeURIComponent(_0x5326d3),{'method':'DELETE'});if(!_0x9cafd0['ok']){const _0x4daa2e=await _0x9cafd0['json']()['catch'](()=>({}));throw new Error(_0x4daa2e['error']||_0x4daa2e['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x9cafd0['statusText']);}return await _0x9cafd0['json']();},async 'discardFile'(_0x5e821f,_0xccc511,_0x537898){if(!_0x5e821f)throw new Error('Task\x20ID\x20is\x20required');if(!_0xccc511)throw new Error('File\x20path\x20is\x20required');if(!_0x537898)throw new Error('Repository\x20path\x20is\x20required');const _0x4fd24d=await fetch(API_BASE+'/tasks/'+_0x5e821f+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xccc511,'repoPath':_0x537898})});if(!_0x4fd24d['ok']){const _0x80fc30=await _0x4fd24d['json']()['catch'](()=>({}));throw new Error(_0x80fc30['error']||_0x80fc30['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4fd24d['statusText']);}return await _0x4fd24d['json']();},async 'followUpTask'(_0xdd7193,_0x3d5341={}){if(!_0xdd7193)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d5341['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x47e3ec,_0x3686b4={};if(_0x3d5341['files']&&_0x3d5341['files']['length']>0x0){const _0x347144=new FormData();_0x347144['append']('instructions',_0x3d5341['instructions']);for(const _0x45a874 of _0x3d5341['files']){_0x347144['append']('attachments',_0x45a874);}_0x47e3ec=_0x347144;}else _0x3686b4['Content-Type']='application/json',_0x47e3ec=JSON['stringify']({'instructions':_0x3d5341['instructions']});const _0x243dd4=await fetch(API_BASE+'/tasks/'+_0xdd7193+'/follow-up',{'method':'POST','headers':_0x3686b4,'body':_0x47e3ec});if(!_0x243dd4['ok']){const _0x2b5b93=await _0x243dd4['json']()['catch'](()=>({}));throw new Error(_0x2b5b93['error']||_0x2b5b93['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x243dd4['statusText']);}return await _0x243dd4['json']();},async 'getTaskRewindPoints'(_0x1c86d5){if(!_0x1c86d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8556=await fetch(API_BASE+'/tasks/'+_0x1c86d5+'/rewind-points');if(!_0x4f8556['ok']){const _0x57af8b=await _0x4f8556['json']()['catch'](()=>({}));throw new Error(_0x57af8b['error']||_0x57af8b['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4f8556['statusText']);}return await _0x4f8556['json']();},async 'rewindTask'(_0x33b593,_0x1da609={}){if(!_0x33b593)throw new Error('Task\x20ID\x20is\x20required');const _0x18450e=Number['isInteger'](_0x1da609['targetFollowUpCount'])?_0x1da609['targetFollowUpCount']:0x0,_0x1d33b3={'targetFollowUpCount':_0x18450e};typeof _0x1da609['instructions']==='string'&&_0x1da609['instructions']['trim']()&&(_0x1d33b3['instructions']=_0x1da609['instructions']['trim']());typeof _0x1da609['rewindFiles']==='boolean'&&(_0x1d33b3['rewindFiles']=_0x1da609['rewindFiles']);const _0x518b2c=await fetch(API_BASE+'/tasks/'+_0x33b593+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d33b3)});if(!_0x518b2c['ok']){const _0x30010d=await _0x518b2c['json']()['catch'](()=>({}));throw new Error(_0x30010d['error']||_0x30010d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x518b2c['statusText']);}return await _0x518b2c['json']();},async 'login'(_0x3616f6,_0x57fbcf){const _0x542a14=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3616f6,'password':_0x57fbcf})});if(!_0x542a14['ok']){const _0x419a24=await _0x542a14['json']();throw new Error(_0x419a24['message']||'Login\x20failed');}return await _0x542a14['json']();},async 'logout'(){const _0x25a662=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x25a662['ok']){const _0x2db4d2=await _0x25a662['json']();throw new Error(_0x2db4d2['message']||'Logout\x20failed');}return await _0x25a662['json']();},async 'getCurrentUser'(){const _0x136c34=await fetch(API_BASE+'/auth/me');if(!_0x136c34['ok'])throw new Error('Not\x20authenticated');const _0x2a1a2a=await _0x136c34['json']();return _0x2a1a2a['user'];},async 'getRolesInfo'(){const _0x30e3cd=await fetch(API_BASE+'/users/roles');if(!_0x30e3cd['ok']){const _0x168a22=await _0x30e3cd['json']();throw new Error(_0x168a22['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x30e3cd['json']();},async 'getUsers'(){const _0x2fd2e2=await fetch(API_BASE+'/users');if(!_0x2fd2e2['ok']){const _0x447921=await _0x2fd2e2['json']();throw new Error(_0x447921['message']||'Failed\x20to\x20get\x20users');}return await _0x2fd2e2['json']();},async 'getUser'(_0xd084d3){const _0x14bb9f=await fetch(API_BASE+'/users/'+_0xd084d3);if(!_0x14bb9f['ok']){const _0x346011=await _0x14bb9f['json']();throw new Error(_0x346011['message']||'Failed\x20to\x20get\x20user');}return await _0x14bb9f['json']();},async 'createUser'(_0x60a3c6){const _0x5bd8b=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x60a3c6)});if(!_0x5bd8b['ok']){const _0x42cd71=await _0x5bd8b['json']();throw new Error(_0x42cd71['message']||'Failed\x20to\x20create\x20user');}return await _0x5bd8b['json']();},async 'updateUser'(_0x13e40c,_0x2d0e95){const _0x48e4a4=await fetch(API_BASE+'/users/'+_0x13e40c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d0e95)});if(!_0x48e4a4['ok']){const _0x32e11d=await _0x48e4a4['json']();throw new Error(_0x32e11d['message']||'Failed\x20to\x20update\x20user');}return await _0x48e4a4['json']();},async 'deleteUser'(_0x4245f7){const _0x4b41b5=await fetch(API_BASE+'/users/'+_0x4245f7,{'method':'DELETE'});if(!_0x4b41b5['ok']){const _0x38e594=await _0x4b41b5['json']();throw new Error(_0x38e594['message']||'Failed\x20to\x20delete\x20user');}return await _0x4b41b5['json']();},async 'stopAllContainers'(){const _0x526a40=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4599ff=await _0x526a40['json']()['catch'](()=>({}));if(!_0x526a40['ok'])throw new Error(_0x4599ff['message']||_0x4599ff['error']||'Failed\x20to\x20stop\x20containers');return _0x4599ff;},async 'removeStoppedContainers'(){const _0x35f4b6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2e7d3c=await _0x35f4b6['json']()['catch'](()=>({}));if(!_0x35f4b6['ok'])throw new Error(_0x2e7d3c['message']||_0x2e7d3c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2e7d3c;},async 'pruneDockerResources'(){const _0x4f13f2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5137a1=await _0x4f13f2['json']()['catch'](()=>({}));if(!_0x4f13f2['ok'])throw new Error(_0x5137a1['message']||_0x5137a1['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5137a1;},async 'createPasswordToken'(_0x41900f,_0x68e631='setup',_0x8b308=![]){const _0xe139e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41900f,'type':_0x68e631,'sendEmail':_0x8b308})});if(!_0xe139e['ok']){const _0x34d9b9=await _0xe139e['json']();throw new Error(_0x34d9b9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0xe139e['json']();},async 'getEmailConfig'(){const _0x5ac18d=await fetch(API_BASE+'/password/email-config');if(!_0x5ac18d['ok']){const _0x5eb349=await _0x5ac18d['json']();throw new Error(_0x5eb349['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5ac18d['json']();},async 'updateTaskName'(_0x1d1c37,_0x4f13c3){const _0xa47a3a=await fetch(API_BASE+'/tasks/'+_0x1d1c37,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4f13c3})});if(!_0xa47a3a['ok']){const _0x3a12cf=await _0xa47a3a['json']();throw new Error(_0x3a12cf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xa47a3a['json']();},async 'pinTask'(_0x1e7f56,_0x32c572,_0x5cf71a=null){if(!_0x1e7f56)throw new Error('Task\x20ID\x20is\x20required');const _0x336dfb={'pinned':_0x32c572};_0x5cf71a&&_0x5cf71a['length']>0x0&&(_0x336dfb['additionalTaskIds']=_0x5cf71a);const _0x38525c=await fetch(API_BASE+'/tasks/'+_0x1e7f56+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336dfb)});if(!_0x38525c['ok']){const _0x25c458=await _0x38525c['json']();throw new Error(_0x25c458['error']||'Failed\x20to\x20pin\x20task');}return await _0x38525c['json']();},async 'setTaskWinner'(_0x361d1,_0x30f783,_0x1fa7fb=[]){if(!_0x361d1)throw new Error('Task\x20ID\x20is\x20required');const _0x599d03=await fetch(API_BASE+'/tasks/'+_0x361d1+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x30f783,'siblings':_0x1fa7fb})});if(!_0x599d03['ok']){const _0x41a56c=await _0x599d03['json']();throw new Error(_0x41a56c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x599d03['json']();},async 'setTaskLoser'(_0x433e91,_0x5a1ce9){if(!_0x433e91)throw new Error('Task\x20ID\x20is\x20required');const _0x56dab9=await fetch(API_BASE+'/tasks/'+_0x433e91+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a1ce9})});if(!_0x56dab9['ok']){const _0x4fe12a=await _0x56dab9['json']();throw new Error(_0x4fe12a['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x56dab9['json']();},async 'createTaskGroup'(_0x200c2e){const _0x38b8cc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x200c2e)});if(!_0x38b8cc['ok']){const _0x37d6ec=await _0x38b8cc['json']();throw new Error(_0x37d6ec['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x38b8cc['json']();},async 'getTaskGroups'(_0x31856f={}){const _0x318a88=new URLSearchParams();if(_0x31856f['userId'])_0x318a88['set']('userId',String(_0x31856f['userId']));if(_0x31856f['status'])_0x318a88['set']('status',String(_0x31856f['status']));if(_0x31856f['limit'])_0x318a88['set']('limit',String(_0x31856f['limit']));const _0x15c498=API_BASE+'/tasks/groups'+(_0x318a88['toString']()?'?'+_0x318a88['toString']():''),_0x5cd2dc=await fetch(_0x15c498);if(!_0x5cd2dc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5cd2dc['json']();},async 'getTaskGroup'(_0x30a7c2){const _0x35f342=await fetch(API_BASE+'/tasks/groups/'+_0x30a7c2);if(!_0x35f342['ok']){const _0x5ceb39=await _0x35f342['json']();throw new Error(_0x5ceb39['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x35f342['json']();},async 'updateTaskGroup'(_0x1856e1,_0xe93bc2,_0x49ed08){const _0x36c0ac=await fetch(API_BASE+'/tasks/'+_0x1856e1+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe93bc2,'groupIndex':_0x49ed08})});if(!_0x36c0ac['ok']){const _0x5adbd3=await _0x36c0ac['json']();throw new Error(_0x5adbd3['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x36c0ac['json']();},async 'removeTaskFromGroup'(_0x66381c){return this['updateTaskGroup'](_0x66381c,null,null);},async 'deleteTaskGroup'(_0x1392f4,_0x20ec5c=![]){const _0x287523=_0x20ec5c?'?deleteTasks=true':'',_0x31b4a0=await fetch(API_BASE+'/tasks/groups/'+_0x1392f4+_0x287523,{'method':'DELETE'});if(!_0x31b4a0['ok']){const _0x3fabf7=await _0x31b4a0['json']();throw new Error(_0x3fabf7['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x321775,_0x3f935a){const _0x1a39ff=await fetch(API_BASE+'/tasks/groups/'+_0x321775+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f935a})});if(!_0x1a39ff['ok']){const _0x382dd6=await _0x1a39ff['json']();throw new Error(_0x382dd6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a39ff['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a628e){if(!_0x5a628e)throw new Error('Task\x20ID\x20is\x20required');const _0x162eff=await fetch(API_BASE+'/tasks/'+_0x5a628e+'/comments');if(!_0x162eff['ok']){const _0x5ef375=await _0x162eff['json']()['catch'](()=>({}));throw new Error(_0x5ef375['error']||'Failed\x20to\x20get\x20comments');}return await _0x162eff['json']();},async 'addComment'(_0x4a3be8,_0x11e2bb){if(!_0x4a3be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x11e2bb)throw new Error('Comment\x20content\x20is\x20required');const _0x5f7ffb=await fetch(API_BASE+'/tasks/'+_0x4a3be8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x11e2bb})});if(!_0x5f7ffb['ok']){const _0x575c7d=await _0x5f7ffb['json']()['catch'](()=>({}));throw new Error(_0x575c7d['error']||'Failed\x20to\x20add\x20comment');}return await _0x5f7ffb['json']();},async 'updateComment'(_0x5922e7,_0x34a3bc,_0xdd4235){if(!_0x5922e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34a3bc)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xdd4235)throw new Error('Comment\x20content\x20is\x20required');const _0x55b6af=await fetch(API_BASE+'/tasks/'+_0x5922e7+'/comments/'+_0x34a3bc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xdd4235})});if(!_0x55b6af['ok']){const _0x585d29=await _0x55b6af['json']()['catch'](()=>({}));throw new Error(_0x585d29['error']||'Failed\x20to\x20update\x20comment');}return await _0x55b6af['json']();},async 'deleteComment'(_0x270bc9,_0x20ff2b){if(!_0x270bc9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20ff2b)throw new Error('Comment\x20ID\x20is\x20required');const _0xd03eb0=await fetch(API_BASE+'/tasks/'+_0x270bc9+'/comments/'+_0x20ff2b,{'method':'DELETE'});if(!_0xd03eb0['ok']){const _0x30b1f9=await _0xd03eb0['json']()['catch'](()=>({}));throw new Error(_0x30b1f9['error']||'Failed\x20to\x20delete\x20comment');}return await _0xd03eb0['json']();},async 'createObjective'(_0x56285c){const _0xb1d630={'objective':!![],'name':_0x56285c['name']||'','environment':_0x56285c['environment']||null,'agents':_0x56285c['agents']||[],'branches':_0x56285c['branches']||{},'isPinned':_0x56285c['isPinned']||![],'parentObjectiveId':_0x56285c['parentObjectiveId']||null,'env_vars':_0x56285c['envVars']||{},'parameters':{'instructions':_0x56285c['instructions']||''},'files':_0x56285c['files']||[],'jira':_0x56285c['jira']||null};return this['createTask'](_0xb1d630);},async 'updateObjective'(_0x32e9eb,_0x1f61d8,_0x2d51e1=[],_0x185981=[]){let _0x3f5a36,_0x230f74={};const _0x2be22d={..._0x1f61d8};_0x185981&&_0x185981['length']>0x0&&(_0x2be22d['removeAttachments']=_0x185981);if(_0x2d51e1&&_0x2d51e1['length']>0x0){const _0x38d1f8=new FormData();for(const [_0x12b710,_0x554682]of Object['entries'](_0x2be22d)){if(_0x554682==null)continue;typeof _0x554682==='object'?_0x38d1f8['append'](_0x12b710,JSON['stringify'](_0x554682)):_0x38d1f8['append'](_0x12b710,String(_0x554682));}for(const _0x6b3f10 of _0x2d51e1){_0x38d1f8['append']('attachments',_0x6b3f10);}_0x3f5a36=_0x38d1f8;}else _0x230f74['Content-Type']='application/json',_0x3f5a36=JSON['stringify'](_0x2be22d);const _0xf7dcff=await fetch(API_BASE+'/tasks/'+_0x32e9eb,{'method':'PATCH','headers':_0x230f74,'body':_0x3f5a36});if(!_0xf7dcff['ok']){const _0x359689=await _0xf7dcff['json']();throw new Error(_0x359689['error']||'Failed\x20to\x20update\x20objective');}return await _0xf7dcff['json']();},async 'deleteObjective'(_0xb971bc){return this['deleteTask'](_0xb971bc);},async 'launchObjective'(_0x4c34e1,_0x3daf03={}){const _0x2ab453=await fetch(API_BASE+'/tasks/'+_0x4c34e1+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3daf03)});if(!_0x2ab453['ok']){const _0x20f3f6=await _0x2ab453['json']();throw new Error(_0x20f3f6['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2ab453['json']();},async 'getObjectiveAttachments'(_0x3402ae){return this['getTaskAttachments'](_0x3402ae);},async 'createJudgeTask'({environment:_0x337f4f,judgeAgent:_0x94d580,groupId:_0x73276f,taskIds:_0x43c90f,judgeCustomInstructions:_0x13aff3,isPinned:_0x4790af}){const _0x46e271=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x337f4f,'judgeAgent':_0x94d580,'groupId':_0x73276f,'taskIds':_0x43c90f,'judgeCustomInstructions':_0x13aff3,'isPinned':_0x4790af})});if(!_0x46e271['ok']){const _0x189786=await _0x46e271['json']();throw new Error(_0x189786['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x46e271['json']();},async 'getJudgeTasks'(_0x1b0504){const _0xa14825=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b0504));if(!_0xa14825['ok']){const _0x57f21d=await _0xa14825['json']();throw new Error(_0x57f21d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xa14825['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x499256,_0x555fdf,_0x17efc0=''){const _0x320d6b=await fetch(API_BASE+'/tasks/'+_0x499256+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x555fdf,'customPreamble':_0x17efc0})});if(!_0x320d6b['ok']){const _0x4feca6=await _0x320d6b['json']();throw new Error(_0x4feca6['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x320d6b['json']();},async 'getJiraConfig'(){const _0x335794=await fetch(API_BASE+'/jira/config');if(!_0x335794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x335794['json']();},async 'getJiraIssue'(_0x539f0b){const _0x35f045=await fetch(API_BASE+'/jira/issues/'+_0x539f0b);if(!_0x35f045['ok']){const _0x2639e7=await _0x35f045['json']()['catch'](()=>({}));throw new Error(_0x2639e7['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x35f045['statusText']);}return await _0x35f045['json']();},async 'searchJiraIssues'(_0x2f9897,_0x579381=0x14){const _0x3c2199=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2f9897,'maxResults':_0x579381})});if(!_0x3c2199['ok']){const _0x630d9b=await _0x3c2199['json']()['catch'](()=>({}));throw new Error(_0x630d9b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x3c2199['statusText']);}return await _0x3c2199['json']();},async 'postJiraComment'(_0x5df791,_0x5c7c88){const _0x33b82b=await fetch(API_BASE+'/jira/issues/'+_0x5df791+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5c7c88})});if(!_0x33b82b['ok']){const _0x41edf2=await _0x33b82b['json']()['catch'](()=>({}));throw new Error(_0x41edf2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x33b82b['statusText']);}return await _0x33b82b['json']();},async 'getJiraComments'(_0x17b571){const _0x1f7489=await fetch(API_BASE+'/jira/issues/'+_0x17b571+'/comments');if(!_0x1f7489['ok']){const _0x2a92a0=await _0x1f7489['json']()['catch'](()=>({}));throw new Error(_0x2a92a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f7489['statusText']);}return await _0x1f7489['json']();},async 'promptParameter'({environment:_0x57053e,command:_0x5c4d3a,parser:parser='json'}){const _0x2ca69b=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x57053e,'command':_0x5c4d3a,'parser':parser})});if(!_0x2ca69b['ok']){const _0x2c7fa7=await _0x2ca69b['json']()['catch'](()=>({}));throw new Error(_0x2c7fa7['message']||_0x2c7fa7['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2ca69b['statusText']);}return await _0x2ca69b['json']();},async 'promptParameterStream'(_0x2b8818,_0x28b695){const _0x2ee1eb=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b8818)});if(!_0x2ee1eb['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ee1eb['statusText']);const _0x17952a=_0x2ee1eb['body']['getReader'](),_0x5c35ef=new TextDecoder();let _0x3910e9='';return new Promise((_0x3e5d11,_0x26f050)=>{const _0x234c4f=async()=>{try{const {done:_0x1d4bdb,value:_0x35584e}=await _0x17952a['read']();if(_0x1d4bdb)return;_0x3910e9+=_0x5c35ef['decode'](_0x35584e,{'stream':!![]});const _0x3686f8=_0x3910e9['split']('\x0a\x0a');_0x3910e9=_0x3686f8['pop']()||'';for(const _0x3f4894 of _0x3686f8){if(!_0x3f4894['trim']())continue;const _0x453f6d=_0x3f4894['split']('\x0a');let _0x5069e0='message',_0x5379a5='';for(const _0x11a549 of _0x453f6d){if(_0x11a549['startsWith']('event:'))_0x5069e0=_0x11a549['substring'](0x6)['trim']();else _0x11a549['startsWith']('data:')&&(_0x5379a5=_0x11a549['substring'](0x5)['trim']());}if(!_0x5379a5)continue;try{const _0x1971c6=JSON['parse'](_0x5379a5);if(_0x5069e0==='progress'&&_0x28b695)_0x28b695(_0x1971c6['stage'],_0x1971c6['message']);else{if(_0x5069e0==='result'){_0x3e5d11(_0x1971c6);return;}else{if(_0x5069e0==='error'){let _0x23ad08=_0x1971c6['message']||_0x1971c6['error']||'Prompt\x20command\x20failed';_0x1971c6['rawOutput']&&(_0x23ad08+='\x0a\x0aRaw\x20output:\x0a'+_0x1971c6['rawOutput']);_0x26f050(new Error(_0x23ad08));return;}}}}catch(_0x635457){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x635457),console['error']('Event\x20type:',_0x5069e0),console['error']('Event\x20data:',_0x5379a5),console['error']('First\x20200\x20chars:',_0x5379a5['substring'](0x0,0xc8)),_0x26f050(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x635457['message']+'\x0a\x0aData:\x20'+_0x5379a5['substring'](0x0,0x1f4)));return;}}_0x234c4f();}catch(_0x29c25c){_0x26f050(_0x29c25c);}};_0x234c4f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4a0f47){const _0x4d97e7=await fetch(''+API_BASE+_0x4a0f47);if(!_0x4d97e7['ok']){const _0x8d1ce7=await _0x4d97e7['json']()['catch'](()=>({'error':_0x4d97e7['statusText']})),_0x722cd1=new Error(_0x8d1ce7['error']||_0x8d1ce7['message']||_0x4d97e7['statusText']);if(_0x8d1ce7['detail']!==undefined)_0x722cd1['detail']=_0x8d1ce7['detail'];throw _0x722cd1;}return await _0x4d97e7['json']();},async 'post'(_0xd5996b,_0x1057ff){const _0x5d313b=await fetch(''+API_BASE+_0xd5996b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1057ff)});if(!_0x5d313b['ok']){const _0x214e2c=await _0x5d313b['json']()['catch'](()=>({'error':_0x5d313b['statusText']})),_0x1de51c=new Error(_0x214e2c['error']||_0x214e2c['message']||_0x5d313b['statusText']);if(_0x214e2c['detail']!==undefined)_0x1de51c['detail']=_0x214e2c['detail'];throw _0x1de51c;}return await _0x5d313b['json']();},async 'put'(_0x1fdf69,_0x4c15d9){const _0xd9c45c=await fetch(''+API_BASE+_0x1fdf69,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c15d9)});if(!_0xd9c45c['ok']){const _0x56a523=await _0xd9c45c['json']()['catch'](()=>({'error':_0xd9c45c['statusText']})),_0x14dafa=new Error(_0x56a523['error']||_0x56a523['message']||_0xd9c45c['statusText']);if(_0x56a523['detail']!==undefined)_0x14dafa['detail']=_0x56a523['detail'];throw _0x14dafa;}return await _0xd9c45c['json']();},async 'delete'(_0x44b2c0,_0x46708a){const _0x4002e4={'method':'DELETE'};_0x46708a&&(_0x4002e4['headers']={'Content-Type':'application/json'},_0x4002e4['body']=JSON['stringify'](_0x46708a));const _0x553380=await fetch(''+API_BASE+_0x44b2c0,_0x4002e4);if(!_0x553380['ok']){const _0x3b18b8=await _0x553380['json']()['catch'](()=>({'error':_0x553380['statusText']})),_0x2a6ace=new Error(_0x3b18b8['error']||_0x3b18b8['message']||_0x553380['statusText']);if(_0x3b18b8['detail']!==undefined)_0x2a6ace['detail']=_0x3b18b8['detail'];throw _0x2a6ace;}return await _0x553380['json']();},async 'getSkills'(){const _0x36680a=await fetch(API_BASE+'/skills');if(!_0x36680a['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36680a['statusText']);return await _0x36680a['json']();},async 'getSkill'(_0x472c69){const _0x5039ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x472c69));if(!_0x5039ca['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5039ca['statusText']);return await _0x5039ca['json']();},async 'createSkill'(_0x3007a5){const _0x2a4d44=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3007a5)});if(!_0x2a4d44['ok']){const _0x3a36cc=await _0x2a4d44['json']()['catch'](()=>({'error':_0x2a4d44['statusText']})),_0xac267a=new Error(_0x3a36cc['error']||_0x3a36cc['message']||_0x2a4d44['statusText']);if(_0x3a36cc['detail']!==undefined)_0xac267a['detail']=_0x3a36cc['detail'];throw _0xac267a;}return await _0x2a4d44['json']();},async 'updateSkill'(_0x3f0d11,_0x1a138b){const _0x15201b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f0d11),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a138b)});if(!_0x15201b['ok']){const _0x2aaa00=await _0x15201b['json']()['catch'](()=>({'error':_0x15201b['statusText']})),_0x111b4f=new Error(_0x2aaa00['error']||_0x2aaa00['message']||_0x15201b['statusText']);if(_0x2aaa00['detail']!==undefined)_0x111b4f['detail']=_0x2aaa00['detail'];throw _0x111b4f;}return await _0x15201b['json']();},async 'deleteSkill'(_0x4bfae8){const _0x5a9d72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bfae8),{'method':'DELETE'});if(!_0x5a9d72['ok']){const _0x1bb453=await _0x5a9d72['json']()['catch'](()=>({'error':_0x5a9d72['statusText']})),_0x3237a7=new Error(_0x1bb453['error']||_0x1bb453['message']||_0x5a9d72['statusText']);if(_0x1bb453['detail']!==undefined)_0x3237a7['detail']=_0x1bb453['detail'];throw _0x3237a7;}return await _0x5a9d72['json']();},async 'getSkillFile'(_0x3f5f5b,_0x2d03e8){const _0x3820e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5f5b)+'/files/'+_0x2d03e8);if(!_0x3820e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3820e9['statusText']);return await _0x3820e9['json']();},async 'saveSkillFile'(_0x5386ce,_0x1b5bc0,_0x3db41b){const _0x19c63f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5386ce)+'/files/'+_0x1b5bc0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3db41b})});if(!_0x19c63f['ok']){const _0x44f43c=await _0x19c63f['json']()['catch'](()=>({'error':_0x19c63f['statusText']})),_0x3737da=new Error(_0x44f43c['error']||_0x44f43c['message']||_0x19c63f['statusText']);if(_0x44f43c['detail']!==undefined)_0x3737da['detail']=_0x44f43c['detail'];throw _0x3737da;}return await _0x19c63f['json']();},async 'deleteSkillFile'(_0x52e558,_0x356cbd){const _0x437a54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52e558)+'/files/'+_0x356cbd,{'method':'DELETE'});if(!_0x437a54['ok']){const _0x2879eb=await _0x437a54['json']()['catch'](()=>({'error':_0x437a54['statusText']})),_0x4ab9d7=new Error(_0x2879eb['error']||_0x2879eb['message']||_0x437a54['statusText']);if(_0x2879eb['detail']!==undefined)_0x4ab9d7['detail']=_0x2879eb['detail'];throw _0x4ab9d7;}return await _0x437a54['json']();},async 'pullSkills'(){const _0x5487df=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5487df['ok']){const _0x1c62d3=await _0x5487df['json']()['catch'](()=>({'error':_0x5487df['statusText']})),_0x5006c0=new Error(_0x1c62d3['error']||_0x1c62d3['message']||_0x5487df['statusText']);if(_0x1c62d3['detail']!==undefined)_0x5006c0['detail']=_0x1c62d3['detail'];throw _0x5006c0;}return await _0x5487df['json']();},async 'commitSkills'(_0x52fea4,_0x30d27e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x30d27e,_0x343b22=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x52fea4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x343b22['ok']){const _0xf8e2b=await _0x343b22['json']()['catch'](()=>({'error':_0x343b22['statusText']})),_0x23f0bc=new Error(_0xf8e2b['error']||_0xf8e2b['message']||_0x343b22['statusText']);if(_0xf8e2b['detail']!==undefined)_0x23f0bc['detail']=_0xf8e2b['detail'];throw _0x23f0bc;}return await _0x343b22['json']();},async 'discardSkillsChanges'(){const _0x33f2f9=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x33f2f9['ok']){const _0x21b221=await _0x33f2f9['json']()['catch'](()=>({'error':_0x33f2f9['statusText']})),_0x5ef455=new Error(_0x21b221['error']||_0x21b221['message']||_0x33f2f9['statusText']);if(_0x21b221['detail']!==undefined)_0x5ef455['detail']=_0x21b221['detail'];throw _0x5ef455;}return await _0x33f2f9['json']();},async 'getSkillCatalog'(){const _0x46e959=await fetch(API_BASE+'/external-skills/catalog');if(!_0x46e959['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x46e959['statusText']);return await _0x46e959['json']();},async 'getImportedSkillsRegistry'(){const _0x356015=await fetch(API_BASE+'/external-skills/registry');if(!_0x356015['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x356015['statusText']);return await _0x356015['json']();},async 'importCatalogSkill'(_0x228f50){const _0x5cd30a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x228f50})});if(!_0x5cd30a['ok']){const _0x30b5e6=await _0x5cd30a['json']()['catch'](()=>({'error':_0x5cd30a['statusText']})),_0x4d39a8=new Error(_0x30b5e6['error']||_0x30b5e6['message']||_0x5cd30a['statusText']);if(_0x30b5e6['detail']!==undefined)_0x4d39a8['detail']=_0x30b5e6['detail'];throw _0x4d39a8;}return await _0x5cd30a['json']();},async 'importSkillFromGit'(_0xf3f95f,_0x76872f,_0x236ce2='main',_0x219e15=null){const _0x341989=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf3f95f,'skillPath':_0x76872f,'branch':_0x236ce2,'skillId':_0x219e15})});if(!_0x341989['ok']){const _0x405764=await _0x341989['json']()['catch'](()=>({'error':_0x341989['statusText']})),_0x22f3b8=new Error(_0x405764['error']||_0x405764['message']||_0x341989['statusText']);if(_0x405764['detail']!==undefined)_0x22f3b8['detail']=_0x405764['detail'];throw _0x22f3b8;}return await _0x341989['json']();},async 'probeMarketplace'(_0xbcf83e,_0x4064dd='main'){const _0x38c107=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbcf83e,'branch':_0x4064dd})});if(!_0x38c107['ok']){const _0x349074=await _0x38c107['json']()['catch'](()=>({'error':_0x38c107['statusText']})),_0x4e6225=new Error(_0x349074['error']||_0x349074['message']||_0x38c107['statusText']);if(_0x349074['detail']!==undefined)_0x4e6225['detail']=_0x349074['detail'];throw _0x4e6225;}return await _0x38c107['json']();},async 'importMarketplaceBundle'(_0x1b0466,_0x1ae16a,_0x37f3e7,_0x55d6dd=null){const _0x54b4c0=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b0466,'branch':_0x1ae16a,'bundleId':_0x37f3e7,'selectedSkills':_0x55d6dd})});if(!_0x54b4c0['ok']){const _0x818199=await _0x54b4c0['json']()['catch'](()=>({'error':_0x54b4c0['statusText']})),_0x45953c=new Error(_0x818199['error']||_0x818199['message']||_0x54b4c0['statusText']);if(_0x818199['detail']!==undefined)_0x45953c['detail']=_0x818199['detail'];throw _0x45953c;}return await _0x54b4c0['json']();},async 'importSkillFromFolder'(_0x157c86,_0x29fbf9=null){const _0xf4365a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x157c86,'skillId':_0x29fbf9})});if(!_0xf4365a['ok']){const _0x5c13df=await _0xf4365a['json']()['catch'](()=>({'error':_0xf4365a['statusText']})),_0x510281=new Error(_0x5c13df['error']||_0x5c13df['message']||_0xf4365a['statusText']);if(_0x5c13df['detail']!==undefined)_0x510281['detail']=_0x5c13df['detail'];throw _0x510281;}return await _0xf4365a['json']();},async 'importSkillFromNpm'(_0x3ed15f,_0x3f6dfd='latest',_0x9477a5=null,_0x4e452c=null){const _0x408f12=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3ed15f,'version':_0x3f6dfd,'skillId':_0x9477a5,'registry':_0x4e452c})});if(!_0x408f12['ok']){const _0x42d8a3=await _0x408f12['json']()['catch'](()=>({'error':_0x408f12['statusText']})),_0x178b96=new Error(_0x42d8a3['error']||_0x42d8a3['message']||_0x408f12['statusText']);if(_0x42d8a3['detail']!==undefined)_0x178b96['detail']=_0x42d8a3['detail'];throw _0x178b96;}return await _0x408f12['json']();},async 'checkSkillUpdates'(_0x7b36aa){const _0x59e06f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x7b36aa)+'/check-updates',{'method':'POST'});if(!_0x59e06f['ok']){const _0x114e08=await _0x59e06f['json']()['catch'](()=>({'error':_0x59e06f['statusText']})),_0x29a844=new Error(_0x114e08['error']||_0x114e08['message']||_0x59e06f['statusText']);if(_0x114e08['detail']!==undefined)_0x29a844['detail']=_0x114e08['detail'];throw _0x29a844;}return await _0x59e06f['json']();},async 'updateExternalSkill'(_0x57a7aa){const _0x4aeb76=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57a7aa)+'/update',{'method':'POST'});if(!_0x4aeb76['ok']){const _0x53d311=await _0x4aeb76['json']()['catch'](()=>({'error':_0x4aeb76['statusText']})),_0x3f9e08=new Error(_0x53d311['error']||_0x53d311['message']||_0x4aeb76['statusText']);if(_0x53d311['detail']!==undefined)_0x3f9e08['detail']=_0x53d311['detail'];throw _0x3f9e08;}return await _0x4aeb76['json']();},async 'updateSkillFlags'(_0x237e64,_0x5595a7){const _0x51ad94=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x237e64)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x5595a7})});if(!_0x51ad94['ok']){const _0x4f80fb=await _0x51ad94['json']()['catch'](()=>({'error':_0x51ad94['statusText']})),_0x45704a=new Error(_0x4f80fb['error']||_0x4f80fb['message']||_0x51ad94['statusText']);if(_0x4f80fb['detail']!==undefined)_0x45704a['detail']=_0x4f80fb['detail'];throw _0x45704a;}return await _0x51ad94['json']();},async 'removeFromImportedRegistry'(_0x1b6d28){const _0x3fda05=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1b6d28)+'/registry',{'method':'DELETE'});if(!_0x3fda05['ok']){const _0x458188=await _0x3fda05['json']()['catch'](()=>({'error':_0x3fda05['statusText']})),_0x3c024e=new Error(_0x458188['error']||_0x458188['message']||_0x3fda05['statusText']);if(_0x458188['detail']!==undefined)_0x3c024e['detail']=_0x458188['detail'];throw _0x3c024e;}return await _0x3fda05['json']();},async 'getTeams'(){const _0xaf34b1=await fetch(API_BASE+'/teams');if(!_0xaf34b1['ok']){const _0x1e1311=await _0xaf34b1['json']()['catch'](()=>({'message':_0xaf34b1['statusText']}));throw new Error(_0x1e1311['message']||'Failed\x20to\x20get\x20teams');}return await _0xaf34b1['json']();},async 'getTeam'(_0x1c5f23){const _0x1d4b85=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c5f23));if(!_0x1d4b85['ok']){const _0x232d2e=await _0x1d4b85['json']()['catch'](()=>({'message':_0x1d4b85['statusText']}));throw new Error(_0x232d2e['message']||'Failed\x20to\x20get\x20team');}return await _0x1d4b85['json']();},async 'createTeam'(_0xe79924){const _0x3494c=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe79924)});if(!_0x3494c['ok']){const _0x2fdfba=await _0x3494c['json']()['catch'](()=>({'message':_0x3494c['statusText']}));throw new Error(_0x2fdfba['message']||'Failed\x20to\x20create\x20team');}return await _0x3494c['json']();},async 'updateTeam'(_0x29f38b,_0xc37a32){const _0x4c5099=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29f38b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc37a32)});if(!_0x4c5099['ok']){const _0x3d4798=await _0x4c5099['json']()['catch'](()=>({'message':_0x4c5099['statusText']}));throw new Error(_0x3d4798['message']||'Failed\x20to\x20update\x20team');}return await _0x4c5099['json']();},async 'deleteTeam'(_0x4a0558){const _0x47e191=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4a0558),{'method':'DELETE'});if(!_0x47e191['ok']){const _0x39f517=await _0x47e191['json']()['catch'](()=>({'message':_0x47e191['statusText']}));throw new Error(_0x39f517['message']||'Failed\x20to\x20delete\x20team');}return await _0x47e191['json']();},async 'addTeamMember'(_0x528f3e,_0x41c604){const _0x4de119=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x528f3e)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41c604})});if(!_0x4de119['ok']){const _0x111f36=await _0x4de119['json']()['catch'](()=>({'message':_0x4de119['statusText']}));throw new Error(_0x111f36['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4de119['json']();},async 'removeTeamMember'(_0x2156e7,_0x420d30){const _0x110f2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2156e7)+'/members/'+encodeURIComponent(_0x420d30),{'method':'DELETE'});if(!_0x110f2e['ok']){const _0x394372=await _0x110f2e['json']()['catch'](()=>({'message':_0x110f2e['statusText']}));throw new Error(_0x394372['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x110f2e['json']();},async 'getBindings'(_0x1eba9e={}){const _0x19e40e=new URLSearchParams();if(_0x1eba9e['resource_type'])_0x19e40e['set']('resource_type',_0x1eba9e['resource_type']);if(_0x1eba9e['resource_id'])_0x19e40e['set']('resource_id',_0x1eba9e['resource_id']);if(_0x1eba9e['subject_type'])_0x19e40e['set']('subject_type',_0x1eba9e['subject_type']);if(_0x1eba9e['subject_id'])_0x19e40e['set']('subject_id',_0x1eba9e['subject_id']);const _0x49d126=_0x19e40e['toString'](),_0x5edfa2=await fetch(API_BASE+'/bindings'+(_0x49d126?'?'+_0x49d126:''));if(!_0x5edfa2['ok']){const _0x168c38=await _0x5edfa2['json']()['catch'](()=>({'message':_0x5edfa2['statusText']}));throw new Error(_0x168c38['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5edfa2['json']();},async 'createBinding'(_0x1aa2ce){const _0x324dcd=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa2ce)});if(!_0x324dcd['ok']){const _0x23d7f6=await _0x324dcd['json']()['catch'](()=>({'message':_0x324dcd['statusText']}));throw new Error(_0x23d7f6['message']||'Failed\x20to\x20create\x20binding');}return await _0x324dcd['json']();},async 'updateBinding'(_0x475cf3,_0xe7fd3a){const _0x5996b0=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x475cf3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe7fd3a)});if(!_0x5996b0['ok']){const _0x4bbf23=await _0x5996b0['json']()['catch'](()=>({'message':_0x5996b0['statusText']}));throw new Error(_0x4bbf23['message']||'Failed\x20to\x20update\x20binding');}return await _0x5996b0['json']();},async 'deleteBinding'(_0x2dca62){const _0x5134d8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2dca62),{'method':'DELETE'});if(!_0x5134d8['ok']){const _0x4305af=await _0x5134d8['json']()['catch'](()=>({'message':_0x5134d8['statusText']}));throw new Error(_0x4305af['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5134d8['json']();},async 'getRoleDefinitions'(){const _0xafae0d=await fetch(API_BASE+'/roles');if(!_0xafae0d['ok']){const _0x2f039e=await _0xafae0d['json']()['catch'](()=>({'message':_0xafae0d['statusText']}));throw new Error(_0x2f039e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xafae0d['json']();},async 'getRoleDefinition'(_0x420a50){const _0x50efa4=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x420a50));if(!_0x50efa4['ok']){const _0x201208=await _0x50efa4['json']()['catch'](()=>({'message':_0x50efa4['statusText']}));throw new Error(_0x201208['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x50efa4['json']();},async 'createRoleDefinition'(_0xd6df1e){const _0x5a0732=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd6df1e)});if(!_0x5a0732['ok']){const _0x24a475=await _0x5a0732['json']()['catch'](()=>({'message':_0x5a0732['statusText']}));throw new Error(_0x24a475['message']||_0x24a475['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x5a0732['json']();},async 'updateRoleDefinition'(_0x52b281,_0x576b15){const _0xa24955=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x52b281),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x576b15)});if(!_0xa24955['ok']){const _0x4274af=await _0xa24955['json']()['catch'](()=>({'message':_0xa24955['statusText']}));throw new Error(_0x4274af['message']||_0x4274af['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xa24955['json']();},async 'deleteRoleDefinition'(_0xb45d0d){const _0x55cc04=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb45d0d),{'method':'DELETE'});if(!_0x55cc04['ok']){const _0x5535c5=await _0x55cc04['json']()['catch'](()=>({'message':_0x55cc04['statusText']}));throw new Error(_0x5535c5['message']||_0x5535c5['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x55cc04['json']();},async 'getAvailablePermissions'(){const _0x133e5a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x133e5a['ok']){const _0x4eb424=await _0x133e5a['json']()['catch'](()=>({'message':_0x133e5a['statusText']}));throw new Error(_0x4eb424['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x133e5a['json']();},async 'getGitProviderAllowedTeams'(_0x1ab1c8){const _0x3271eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x1ab1c8)+'/allowed-teams');if(!_0x3271eb['ok']){const _0x3a29e7=await _0x3271eb['json']()['catch'](()=>({'message':_0x3271eb['statusText']}));throw new Error(_0x3a29e7['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3271eb['json']();},async 'setGitProviderAllowedTeams'(_0x31bacf,_0x28df32){const _0x4af8ae=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31bacf)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x28df32})});if(!_0x4af8ae['ok']){const _0x3a4697=await _0x4af8ae['json']()['catch'](()=>({'message':_0x4af8ae['statusText']}));throw new Error(_0x3a4697['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x4af8ae['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 _0x366de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x56ae12=>{_0x56ae12['el']['style']['bottom']=_0x366de+'px';const _0x215be0=_0x56ae12['el']['offsetHeight']||toastState['defaultHeight'];_0x366de+=_0x215be0+toastState['gap'];});});}function removeToastById(_0x9af826){const _0x108450=toastState['toasts']['findIndex'](_0x13aec6=>_0x13aec6['id']===_0x9af826);if(_0x108450===-0x1)return;const _0x53c886=toastState['toasts'][_0x108450];if(_0x53c886['timeoutId'])clearTimeout(_0x53c886['timeoutId']);_0x53c886['el']['classList']['remove']('show'),setTimeout(()=>_0x53c886['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x108450,0x1),repositionAllToasts();}function registerToast(_0x469f58){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x469f58),repositionAllToasts(),_0x469f58['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x2c74d0){if(_0x2c74d0===null||_0x2c74d0===undefined)return'';return String(_0x2c74d0)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x3b98e4,_0x2de194){if(_0x3b98e4&&typeof _0x3b98e4==='object'&&!Array['isArray'](_0x3b98e4))return{'code':typeof _0x3b98e4['text']==='string'?_0x3b98e4['text']:'','language':typeof _0x3b98e4['lang']==='string'?_0x3b98e4['lang']:''};return{'code':typeof _0x3b98e4==='string'?_0x3b98e4:'','language':typeof _0x2de194==='string'?_0x2de194:''};}function buildMermaidBlock(_0x18d657){const _0x45a44b=String(_0x18d657||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x45a44b))+'\x22>'+escapeHtmlValue(_0x45a44b)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3d9c1a=new marked['Renderer'](),_0x195199=_0x3d9c1a['code']['bind'](_0x3d9c1a);return _0x3d9c1a['code']=function(_0x20f370,_0x40a0f7,..._0x502e8a){const {code:_0x223801,language:_0xd7b632}=getMarkdownCodeBlockPayload(_0x20f370,_0x40a0f7),_0x4e3468=String(_0xd7b632||'')['trim']()['toLowerCase']();if(_0x4e3468==='mermaid')return buildMermaidBlock(_0x223801);const _0x51f221=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x51f221&&_0x4e3468)try{const _0x4b2450=_0x51f221['getLanguage'](_0x4e3468)?_0x4e3468:'plaintext',_0x2662cc=_0x51f221['highlight'](_0x223801,{'language':_0x4b2450})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4e3468)+'\x22>'+_0x2662cc+'</code></pre>';}catch(_0x516f8e){console['error']('Syntax\x20highlighting\x20error:',_0x516f8e);}return _0x195199(_0x20f370,_0x40a0f7,..._0x502e8a);},sharedMarkedRenderer=_0x3d9c1a,_0x3d9c1a;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x366d6f=window['mermaid'];if(!_0x366d6f||typeof _0x366d6f['initialize']!=='function')return _0x366d6f||null;return _0x366d6f['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x366d6f;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44d719,_0x399197)=>{const _0x411dcc=()=>_0x44d719(configureMermaidInstance()),_0x55a977=()=>{mermaidLoadPromise=null,_0x399197(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x393b07=document['getElementById'](MERMAID_SCRIPT_ID);!_0x393b07&&(_0x393b07=document['createElement']('script'),_0x393b07['id']=MERMAID_SCRIPT_ID,_0x393b07['src']=MERMAID_SCRIPT_SRC,_0x393b07['async']=!![],document['head']['appendChild'](_0x393b07));if(window['mermaid']){_0x411dcc();return;}_0x393b07['addEventListener']('load',_0x411dcc,{'once':!![]}),_0x393b07['addEventListener']('error',_0x55a977,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x54e44c){const _0x7c7d45=_0x54e44c['getAttribute']('data-mermaid-source');if(!_0x7c7d45)return null;let _0x140948=_0x7c7d45;try{_0x140948=decodeURIComponent(_0x7c7d45);}catch{}return _0x54e44c['textContent']=_0x140948,_0x54e44c['removeAttribute']('data-processed'),_0x54e44c['removeAttribute']('aria-roledescription'),_0x54e44c['removeAttribute']('role'),_0x54e44c['removeAttribute']('aria-label'),_0x140948;}function collectMermaidNodes(_0x364c3a,_0x52e0cf){if(!(_0x364c3a instanceof Element))return;_0x364c3a['matches']('.mermaid[data-mermaid-source]')&&_0x52e0cf['add'](_0x364c3a),_0x364c3a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x58e187=>{_0x52e0cf['add'](_0x58e187);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x288f45=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x3ce0ed=>setTimeout(_0x3ce0ed,0x0);_0x288f45(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x209420=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x209420);});});}function queueMermaidRender(_0x46f47c){const _0x7c4f8a=new Set();_0x46f47c instanceof Document||_0x46f47c instanceof DocumentFragment?_0x46f47c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1598df=>_0x7c4f8a['add'](_0x1598df)):collectMermaidNodes(_0x46f47c,_0x7c4f8a);if(_0x7c4f8a['size']===0x0)return;_0x7c4f8a['forEach'](_0x3bf17c=>pendingMermaidNodes['add'](_0x3bf17c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x2de556=Array['from'](pendingMermaidNodes)['filter'](_0x4fd188=>_0x4fd188['isConnected']);pendingMermaidNodes['clear']();if(_0x2de556['length']===0x0)return;const _0x5727eb=await loadMermaid();if(!_0x5727eb)return;configureMermaidInstance();const _0x2ec0ce=getMermaidTheme();for(const _0x171276 of _0x2de556){const _0x5493ae=_0x171276['getAttribute']('data-mermaid-source');if(!_0x5493ae)continue;const _0xb70166=_0x171276['getAttribute']('data-processed')==='true';if(_0xb70166&&_0x171276['dataset']['mermaidTheme']===_0x2ec0ce)continue;restoreMermaidSource(_0x171276);try{if(typeof _0x5727eb['run']==='function')await _0x5727eb['run']({'nodes':[_0x171276]});else typeof _0x5727eb['init']==='function'&&_0x5727eb['init'](undefined,[_0x171276]);_0x171276['dataset']['mermaidTheme']=_0x2ec0ce,delete _0x171276['dataset']['mermaidError'];}catch(_0x2349db){console['error']('Mermaid\x20render\x20failed:',_0x2349db),restoreMermaidSource(_0x171276),_0x171276['dataset']['mermaidError']='true',delete _0x171276['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3efbca=>{_0x3efbca['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3efbca);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x180505=>{_0x180505['forEach'](_0x160b79=>{_0x160b79['addedNodes']['forEach'](_0x49c0b2=>{_0x49c0b2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x49c0b2);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x926315){const _0x14ba4b=new Date(_0x926315),_0x449e7e=new Date(),_0x5b7ce2=_0x449e7e-_0x14ba4b,_0x2545b5=Math['floor'](_0x5b7ce2/0x3e8),_0x51181a=Math['floor'](_0x2545b5/0x3c),_0x3eac43=Math['floor'](_0x51181a/0x3c),_0x3f438a=Math['floor'](_0x3eac43/0x18);if(_0x2545b5<0x3c)return'now';if(_0x51181a<0x3c)return _0x51181a+'m\x20ago';if(_0x3eac43<0x18)return _0x3eac43+'h\x20ago';return _0x3f438a+'d\x20ago';},'getStatusIcon'(_0x19ddb6){switch(_0x19ddb6){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x535b82){switch(_0x535b82){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'(_0x557b5f,_0x303e98=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2d8f41={};_0x2d8f41['text/plain']=new Blob([_0x557b5f],{'type':'text/plain'});_0x303e98&&(_0x2d8f41['text/html']=new Blob([_0x303e98],{'type':'text/html'}));const _0x53d62b=new ClipboardItem(_0x2d8f41);return await navigator['clipboard']['write']([_0x53d62b]),!![];}catch(_0x35d51f){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35d51f);}try{const _0x101c88=_0x374c89=>{_0x374c89['preventDefault'](),_0x374c89['clipboardData']['setData']('text/plain',_0x557b5f),_0x303e98&&_0x374c89['clipboardData']['setData']('text/html',_0x303e98);};document['addEventListener']('copy',_0x101c88);const _0x59d023=document['execCommand']('copy');document['removeEventListener']('copy',_0x101c88);if(_0x59d023)return!![];}catch(_0xcae0c5){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xcae0c5);}try{const _0x59d132=document['createElement']('textarea');_0x59d132['value']=_0x557b5f,_0x59d132['style']['position']='fixed',_0x59d132['style']['opacity']='0',_0x59d132['style']['pointerEvents']='none',document['body']['appendChild'](_0x59d132),_0x59d132['select']();const _0x576592=document['execCommand']('copy');return document['body']['removeChild'](_0x59d132),_0x576592;}catch(_0x296190){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x296190),![];}},'showToast'(_0x267a47,_0x438b4a='info'){const _0x3427d7=getNextToastId(),_0x513494=document['createElement']('div');_0x513494['className']='toast\x20toast-'+_0x438b4a,_0x513494['textContent']=_0x267a47,_0x513494['dataset']['toastId']=_0x3427d7,document['body']['appendChild'](_0x513494);const _0x4ac15f=_0x438b4a==='error'?0x2710:0xbb8,_0x27bb30=setTimeout(()=>{removeToastById(_0x3427d7);},_0x4ac15f),_0x258065={'id':_0x3427d7,'el':_0x513494,'timeoutId':_0x27bb30};return registerToast(_0x258065),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x513494['classList']['add']('show');});}),_0x3427d7;},'showError'(_0x40a1f5){console['error'](_0x40a1f5);const _0x5ab662=typeof _0x40a1f5==='string'?_0x40a1f5:_0x40a1f5['message']||'An\x20error\x20occurred';this['showToast'](_0x5ab662,'error');},'showSuccess'(_0x4a349c){this['showToast'](_0x4a349c,'success');},'capitalize'(_0x22c11a){if(!_0x22c11a)return'';return _0x22c11a['charAt'](0x0)['toUpperCase']()+_0x22c11a['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x814cdb){return escapeHtmlValue(_0x814cdb);},'ansiToHtml'(_0x2783e7){if(_0x2783e7===null||_0x2783e7===undefined)return'';let _0x57895c=this['escapeHtml'](_0x2783e7);const _0x3be8fb={'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'},_0x4394db={'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 _0x47560a=0x0;return _0x57895c=_0x57895c['replace'](/\x1b\[([0-9;]*)m/g,(_0x3ee0b5,_0x6688eb)=>{if(!_0x6688eb||_0x6688eb==='0'){const _0x408a64='</span>'['repeat'](_0x47560a);return _0x47560a=0x0,_0x408a64;}const _0x540ce3=_0x6688eb['split'](';'),_0x2ef24d=[];for(const _0x3d36c1 of _0x540ce3){if(_0x3d36c1==='1')_0x2ef24d['push']('font-weight:bold');else{if(_0x3d36c1==='2')_0x2ef24d['push']('opacity:0.7');else{if(_0x3d36c1==='3')_0x2ef24d['push']('font-style:italic');else{if(_0x3d36c1==='4')_0x2ef24d['push']('text-decoration:underline');else{if(_0x3d36c1==='9')_0x2ef24d['push']('text-decoration:line-through');else{if(_0x3be8fb[_0x3d36c1])_0x2ef24d['push']('color:'+_0x3be8fb[_0x3d36c1]);else{if(_0x4394db[_0x3d36c1])_0x2ef24d['push']('background-color:'+_0x4394db[_0x3d36c1]);}}}}}}}if(_0x2ef24d['length']>0x0)return _0x47560a++,'<span\x20style=\x22'+_0x2ef24d['join'](';')+'\x22>';return'';}),_0x57895c+='</span>'['repeat'](_0x47560a),_0x57895c=_0x57895c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5c57c9,_0x22004a)=>{if(!_0x22004a||_0x22004a==='0')return'';const _0x124498=_0x22004a['split'](';'),_0x170c7e=[];for(const _0x5f099e of _0x124498){if(_0x5f099e==='1')_0x170c7e['push']('font-weight:bold');else{if(_0x3be8fb[_0x5f099e])_0x170c7e['push']('color:'+_0x3be8fb[_0x5f099e]);else{if(_0x4394db[_0x5f099e])_0x170c7e['push']('background-color:'+_0x4394db[_0x5f099e]);}}}if(_0x170c7e['length']>0x0)return'<span\x20style=\x22'+_0x170c7e['join'](';')+'\x22>';return'';}),_0x57895c;},'showModal'({title:_0x219334,content:_0x1cca3f,buttons:buttons=[]}){const _0x426786='\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'](_0x219334)+'</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'+_0x1cca3f+'\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']((_0x644974,_0x4e61eb)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x644974['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4e61eb+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x644974['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',_0x3bda3d=document['createElement']('div');_0x3bda3d['id']='utils-modal',_0x3bda3d['className']='modal',_0x3bda3d['innerHTML']=_0x426786,document['body']['appendChild'](_0x3bda3d);const _0x43bc41=document['getElementById']('utils-modal-close');_0x43bc41&&_0x43bc41['addEventListener']('click',()=>this['hideModal']());const _0x5896f9=_0x3bda3d['querySelectorAll']('[data-btn-index]');_0x5896f9['forEach'](_0x5ec379=>{const _0x53bb8f=parseInt(_0x5ec379['dataset']['btnIndex']);buttons[_0x53bb8f]?.['onClick']&&_0x5ec379['addEventListener']('click',buttons[_0x53bb8f]['onClick']);});const _0x15185f=document['getElementById']('utils-modal-overlay');_0x15185f&&_0x15185f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x217ef3=document['getElementById']('utils-modal');_0x217ef3&&_0x217ef3['remove']();},'parseKeyValuePairs'(_0x40c1cb){const _0x392409={};if(!_0x40c1cb)return _0x392409;return _0x40c1cb['split'](/\r?\n/)['map'](_0x981111=>_0x981111['trim']())['filter'](Boolean)['forEach'](_0x394456=>{const _0x5bb2d9=_0x394456['indexOf']('=');if(_0x5bb2d9>0x0){const _0x4affb1=_0x394456['slice'](0x0,_0x5bb2d9)['trim'](),_0x196754=_0x394456['slice'](_0x5bb2d9+0x1)['trim']();if(_0x4affb1)_0x392409[_0x4affb1]=_0x196754;}}),_0x392409;},'debounce'(_0x1b0a7c,_0x20bee6=0xfa){let _0x5d32fb=null;return(..._0x890240)=>{clearTimeout(_0x5d32fb),_0x5d32fb=setTimeout(()=>_0x1b0a7c['apply'](this,_0x890240),_0x20bee6);};},'formatTimestamp'(_0x216c69){if(!_0x216c69)return'N/A';const _0x299691=new Date(_0x216c69);return _0x299691['toLocaleDateString']()+'\x20'+_0x299691['toLocaleTimeString']();},'getQueryParams'(){const _0x26e1d9=new URLSearchParams(window['location']['search']),_0x5747c3={};for(const [_0x4a69aa,_0x31e7f6]of _0x26e1d9){_0x5747c3[_0x4a69aa]=_0x31e7f6;}return _0x5747c3;},'formatDuration'(_0x5e1188,_0x27ebd0){if(!_0x5e1188)return'N/A';const _0x1480b1=new Date(_0x5e1188),_0x435c44=_0x27ebd0?new Date(_0x27ebd0):new Date(),_0x91dd6=_0x435c44-_0x1480b1;if(_0x91dd6<0x0)return'0s';const _0x5e304c=Math['floor'](_0x91dd6/0x3e8),_0x5b705f=Math['floor'](_0x5e304c/0x3c),_0x35c58c=Math['floor'](_0x5b705f/0x3c),_0x131810=Math['floor'](_0x35c58c/0x18);if(_0x5e304c<0x3c)return _0x5e304c+'s';if(_0x5b705f<0x3c)return _0x5b705f+'m\x20'+_0x5e304c%0x3c+'s';if(_0x35c58c<0x18)return _0x35c58c+'h\x20'+_0x5b705f%0x3c+'m\x20'+_0x5e304c%0x3c+'s';return _0x131810+'d\x20'+_0x35c58c%0x18+'h\x20'+_0x5b705f%0x3c+'m';},'renderMarkdown'(_0x27a9d3,_0x56fd0b={}){if(!_0x27a9d3)return'';_0x27a9d3=this['rewriteAttachmentLinks'](_0x27a9d3,_0x56fd0b),_0x27a9d3=this['rewriteColorSyntax'](_0x27a9d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x27a9d3);}catch(_0x4e871e){return console['error']('Markdown\x20parsing\x20error:',_0x4e871e),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);}},'rewriteAttachmentLinks'(_0x96086e,_0x288f3c={}){const _0x3b8552=typeof _0x288f3c['resolveAttachmentUrl']==='function'?_0x288f3c['resolveAttachmentUrl']:_0x288f3c['taskId']?_0x3015e4=>API_BASE+'/tasks/'+_0x288f3c['taskId']+'/attachments/'+encodeURIComponent(_0x3015e4):null;if(!_0x3b8552)return _0x96086e;return String(_0x96086e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5a111c,_0xe55239)=>{const _0x15f570=String(_0xe55239||'')['trim']();if(!_0x15f570)return _0x5a111c;let _0x108118=_0x15f570;try{_0x108118=decodeURIComponent(_0x15f570);}catch{}const _0x16d77d=_0x3b8552(_0x108118);if(!_0x16d77d)return _0x5a111c;return']('+_0x16d77d+')';});},'rewriteColorSyntax'(_0x1c4660){if(!_0x1c4660)return _0x1c4660;return String(_0x1c4660)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x144a45,_0x1b0d60,_0x262316)=>{const _0x1eba8c=this['rewriteColorSyntax'](_0x262316);return'<span\x20style=\x22color:\x20'+_0x1b0d60+'\x22>'+_0x1eba8c+'</span>';});},'renderMarkdownFallback'(_0xb2afdb,_0x5df316={}){if(!_0xb2afdb)return'';_0xb2afdb=_0xb2afdb['replace'](/\r\n/g,'\x0a'),_0xb2afdb=_0xb2afdb['replace'](/\r/g,'\x0a'),_0xb2afdb=this['rewriteAttachmentLinks'](_0xb2afdb,_0x5df316);let _0x3ac967=this['escapeHtml'](_0xb2afdb);return _0x3ac967=_0x3ac967['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3ac967=_0x3ac967['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3ac967=_0x3ac967['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3ac967=_0x3ac967['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3ac967=_0x3ac967['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3ac967=_0x3ac967['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3ac967=_0x3ac967['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3ac967=_0x3ac967['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3ac967=_0x3ac967['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3ac967=_0x3ac967['replace'](/\n\n/g,'</p><p>'),_0x3ac967=_0x3ac967['replace'](/\n/g,'<br>'),'<p>'+_0x3ac967+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1af418=new Uint8Array(0x10);crypto['getRandomValues'](_0x1af418),_0x1af418[0x6]=_0x1af418[0x6]&0xf|0x40,_0x1af418[0x8]=_0x1af418[0x8]&0x3f|0x80;const _0x4967ab=Array['from'](_0x1af418,_0x3d1a59=>_0x3d1a59['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4967ab['slice'](0x0,0x8)+'-'+_0x4967ab['slice'](0x8,0xc)+'-'+_0x4967ab['slice'](0xc,0x10)+'-'+_0x4967ab['slice'](0x10,0x14)+'-'+_0x4967ab['slice'](0x14);}};export class CustomSelect{constructor(_0x2e912e,_0x55dfed={}){this['nativeSelect']=_0x2e912e,this['options']=_0x55dfed,this['isOpen']=![],this['selectedValue']=_0x2e912e['value']||'',this['searchable']=_0x55dfed['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4a3f89=document['createElement']('div');_0x4a3f89['className']='custom-select';const _0x4bf089=document['createElement']('div');_0x4bf089['className']='custom-select-trigger',_0x4bf089['setAttribute']('tabindex','0'),_0x4bf089['setAttribute']('role','button'),_0x4bf089['setAttribute']('aria-haspopup','listbox');const _0xca6ed2=document['createElement']('span');_0xca6ed2['className']='custom-select-trigger-text';const _0x7ef89e=document['createElement']('span');_0x7ef89e['className']='custom-select-arrow',_0x7ef89e['textContent']='▼',_0x4bf089['appendChild'](_0xca6ed2),_0x4bf089['appendChild'](_0x7ef89e);const _0x57a994=document['createElement']('div');_0x57a994['className']='custom-select-dropdown',_0x57a994['setAttribute']('role','listbox');if(this['searchable']){const _0x570b47=document['createElement']('div');_0x570b47['className']='custom-select-search';const _0x354c16=document['createElement']('input');_0x354c16['type']='text',_0x354c16['className']='custom-select-search-input',_0x354c16['placeholder']='Type\x20to\x20search...',_0x354c16['setAttribute']('aria-label','Search\x20options'),_0x354c16['addEventListener']('input',_0x9b14ab=>{this['searchQuery']=_0x9b14ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x354c16['addEventListener']('keydown',_0x2e9513=>{if(_0x2e9513['key']==='Escape')_0x2e9513['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e9513['key']==='Enter'){_0x2e9513['preventDefault'](),_0x2e9513['stopPropagation']();const _0x3208b9=_0x57a994['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x3208b9){const _0x2b8cd5=_0x3208b9['getAttribute']('data-value');this['select'](_0x2b8cd5);}}}}),_0x570b47['appendChild'](_0x354c16),_0x57a994['appendChild'](_0x570b47),this['searchInput']=_0x354c16;}const _0x4fb228=document['createElement']('div');_0x4fb228['className']='custom-select-options',_0x57a994['appendChild'](_0x4fb228),_0x4a3f89['appendChild'](_0x4bf089),_0x4a3f89['appendChild'](_0x57a994),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4a3f89,this['nativeSelect']),this['wrapper']=_0x4a3f89,this['trigger']=_0x4bf089,this['triggerText']=_0xca6ed2,this['dropdown']=_0x57a994,this['optionsContainer']=_0x4fb228,_0x4bf089['addEventListener']('click',()=>this['toggle']()),_0x4bf089['addEventListener']('keydown',_0x36fb0e=>this['handleKeydown'](_0x36fb0e)),document['addEventListener']('click',_0x2e1685=>{!_0x4a3f89['contains'](_0x2e1685['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3379c0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3379c0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b3e02=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b3e02['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x31b90d=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x31b90d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x384125=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x384125),this['trigger']['setAttribute']('aria-disabled',_0x384125?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x384125?'-1':'0'),_0x384125&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5e4d91=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4f90fc=_0x5e4d91['filter'](_0x540161=>!_0x540161['disabled']&&!_0x540161['hidden']);_0x5e4d91['forEach']((_0x3902f4,_0x91ba40)=>{const _0x1f36a3=document['createElement']('div');_0x1f36a3['className']='custom-select-option',_0x1f36a3['textContent']=_0x3902f4['textContent'],_0x1f36a3['setAttribute']('data-value',_0x3902f4['value']),_0x1f36a3['setAttribute']('data-index',_0x91ba40),_0x1f36a3['setAttribute']('role','option'),_0x3902f4['disabled']?_0x1f36a3['classList']['add']('disabled'):_0x1f36a3['addEventListener']('click',()=>this['select'](_0x3902f4['value'])),_0x3902f4['value']===this['selectedValue']&&_0x1f36a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f36a3),this['allOptions']['push']({'element':_0x1f36a3,'text':_0x3902f4['textContent']['toLowerCase'](),'value':_0x3902f4['value'],'disabled':_0x3902f4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5c9641=this['searchInput']['parentElement'];_0x4f90fc['length']>0x3?_0x5c9641['style']['display']='':_0x5c9641['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2a8366=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x9297e8=>{if(!_0x2a8366||_0x9297e8['disabled'])_0x9297e8['element']['style']['display']='';else{const _0x3866e2=_0x9297e8['text']['includes'](_0x2a8366);_0x9297e8['element']['style']['display']=_0x3866e2?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x51a4ed){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x51a4ed,this['nativeSelect']['value']=_0x51a4ed;const _0x39bc52=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x39bc52),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x478bef=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x478bef&&(this['triggerText']['textContent']=_0x478bef['textContent'],_0x478bef['disabled']||_0x478bef['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1fcc04=>{_0x1fcc04['getAttribute']('data-value')===this['selectedValue']?_0x1fcc04['classList']['add']('selected'):_0x1fcc04['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 _0x213a6a=window['getComputedStyle'](this['dropdown']);if(_0x213a6a['position']==='fixed'){const _0x5a896c=this['trigger']['getBoundingClientRect'](),_0xafe616=parseInt(_0x213a6a['maxHeight'])||0xc8,_0x3e10cc=window['innerHeight'],_0x223e19=_0x3e10cc-_0x5a896c['bottom'],_0x64c1e6=_0x5a896c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x44a9c3;_0x223e19<_0xafe616&&_0x64c1e6>_0x223e19?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3e10cc-_0x5a896c['top']+'px',_0x44a9c3=Math['min'](_0xafe616,_0x64c1e6-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5a896c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x44a9c3=Math['min'](_0xafe616,_0x223e19-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px');if(this['optionsContainer']){let _0x35dbaa=_0x44a9c3;if(this['searchInput']){const _0x23cde9=this['searchInput']['parentElement'];_0x23cde9&&(_0x35dbaa-=_0x23cde9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x35dbaa)+'px';}this['dropdown']['style']['left']=_0x5a896c['left']+'px',this['dropdown']['style']['width']=_0x5a896c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5d16fa=this['searchInput']['parentElement'];_0x5d16fa&&_0x5d16fa['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'](_0x4d2406){if(this['nativeSelect']['disabled'])return;if(_0x4d2406['key']==='Enter'||_0x4d2406['key']==='\x20')_0x4d2406['preventDefault'](),this['toggle']();else _0x4d2406['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3b584f='\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',_0x3b584f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xb54913=document['getElementById']('confirm-dialog-close'),_0x474da2=document['getElementById']('confirm-dialog-cancel'),_0x3745a2=document['getElementById']('confirm-dialog-confirm'),_0x3b6694=this['_modal']['querySelector']('.modal-overlay');_0xb54913['addEventListener']('click',()=>this['_resolve'](![])),_0x474da2['addEventListener']('click',()=>this['_resolve'](![])),_0x3745a2['addEventListener']('click',()=>this['_resolve'](!![])),_0x3b6694['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x344c2a=>{if(_0x344c2a['key']==='Escape')_0x344c2a['preventDefault'](),this['_resolve'](![]);else _0x344c2a['key']==='Enter'&&(_0x344c2a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2cb8d3,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x45a0c2=>{this['_resolvePromise']=_0x45a0c2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2cb8d3;const _0x1ebaeb=document['getElementById']('confirm-dialog-cancel'),_0x3a488f=document['getElementById']('confirm-dialog-confirm');_0x1ebaeb['textContent']=cancelText,_0x3a488f['textContent']=confirmText,_0x3a488f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x3a488f['focus']();});},'_resolve'(_0x59be6d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x59be6d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x210ac6,_0x2a8063={}){this['container']=_0x210ac6,this['options']={'placeholder':_0x2a8063['placeholder']||'Type\x20to\x20search...','maxItems':_0x2a8063['maxItems']||0x64,'loadItems':_0x2a8063['loadItems']||(async()=>[]),'renderItem':_0x2a8063['renderItem']||(_0x38ce37=>({'primary':String(_0x38ce37),'secondary':''})),'onSelect':_0x2a8063['onSelect']||(()=>{}),'filterItems':_0x2a8063['filterItems']||null,'getItemValue':_0x2a8063['getItemValue']||(_0x3aa59a=>_0x3aa59a),'sortItems':_0x2a8063['sortItems']||null,'debounceMs':_0x2a8063['debounceMs']||0xc8,'minCharsForSearch':_0x2a8063['minCharsForSearch']||0x0,'emptyMessage':_0x2a8063['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x2a8063['loadingMessage']||'Loading...','preload':_0x2a8063['preload']!==![],'searchMode':_0x2a8063['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',_0x5716d9=>this['onBlur'](_0x5716d9)),this['input']['addEventListener']('input',_0xa57a47=>this['onInput'](_0xa57a47)),this['input']['addEventListener']('keydown',_0x4b13d8=>this['onKeydown'](_0x4b13d8)),this['clearBtn']['addEventListener']('mousedown',_0x3a7fcf=>{_0x3a7fcf['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x14ae91=>{_0x14ae91['preventDefault']();}),document['addEventListener']('click',_0x424dd1=>{!this['wrapper']['contains'](_0x424dd1['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(_0x37c6a4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x37c6a4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2ff0bf){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4891ac){const _0x4787f6=_0x4891ac['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4787f6);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4787f6):this['loadAndShow'](_0x4787f6);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50f691){switch(_0x50f691['key']){case'ArrowDown':_0x50f691['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50f691['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50f691['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50f691['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x436bdf){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1f1a79=this['selectedIndex']+_0x436bdf;if(_0x1f1a79>=0x0&&_0x1f1a79<this['filteredItems']['length']){this['selectedIndex']=_0x1f1a79,this['updateSelectionHighlight']();const _0x5e69ba=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5e69ba[this['selectedIndex']]&&_0x5e69ba[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2222b5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2222b5['forEach']((_0x4ce9b1,_0x2b63ef)=>{_0x4ce9b1['classList']['toggle']('keyboard-selected',_0x2b63ef===this['selectedIndex']);});}async['loadAndShow'](_0x43bfc3){this['showLoading']();try{const _0x3763cd=await this['options']['loadItems'](_0x43bfc3);if(this['options']['searchMode']==='server'){let _0x26f1a4=_0x3763cd;this['options']['sortItems']&&(_0x26f1a4=this['options']['sortItems']([..._0x3763cd]));this['filteredItems']=_0x26f1a4;const _0x4ac324=this['filteredItems']['length']>=this['options']['maxItems'];_0x4ac324&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4ac324),this['open']();}else this['allItems']=_0x3763cd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x43bfc3);}catch(_0x347d9c){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x347d9c),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1db7d6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1db7d6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x85530c=this['filteredItems']['length']>=this['options']['maxItems'];_0x85530c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x85530c),this['open']();}['renderItems'](_0x30f721){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']((_0x8a9108,_0x19c414)=>{const _0x5dea22=document['createElement']('div');_0x5dea22['className']='autocomplete-select-item',_0x5dea22['setAttribute']('role','option'),_0x5dea22['setAttribute']('data-index',_0x19c414);const _0x921088=this['options']['renderItem'](_0x8a9108);let _0x51c7db='';_0x921088['icon']&&(_0x51c7db='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x921088['iconClass']||'')+'\x22>'+_0x921088['icon']+'</span>'),_0x5dea22['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x51c7db+'\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'](_0x921088['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x921088['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x921088['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5dea22['addEventListener']('click',()=>{this['selectItem'](_0x8a9108);}),_0x5dea22['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x19c414,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5dea22);}),_0x30f721?(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'](_0x56ac4e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x56ac4e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x962139){this['selectedItem']=_0x962139;const _0x55e7f6=this['options']['renderItem'](_0x962139);this['input']['value']=_0x55e7f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x962139);}['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'](_0x944fb5){if(_0x944fb5){this['selectedItem']=_0x944fb5;const _0x249eed=this['options']['renderItem'](_0x944fb5);this['input']['value']=_0x249eed['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4a9811){this['allItems']=_0x4a9811,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'](_0xce9cc9){this['input']['placeholder']=_0xce9cc9;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x4fe137=null){const _0x1f4a44=document['getElementById']('admin-menu-container'),_0x28d363=document['getElementById']('admin-menu-btn'),_0x507c9c=document['getElementById']('admin-menu');if(!_0x1f4a44||!_0x28d363||!_0x507c9c)return;try{!_0x4fe137&&(_0x4fe137=await API['getCurrentUser']());if(_0x4fe137){const _0x1e4e7a=window['Permissions'],_0x4fff8e=_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:manage')||_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')||_0x1e4e7a['hasTeamPermission'](_0x4fe137,'teams:manage')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:view_details');if(!_0x4fff8e)return;_0x1f4a44['hidden']=![];if(!_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')){const _0x41e648=_0x507c9c['querySelectorAll']('.admin-menu-item');_0x41e648['forEach'](_0x4ad9f1=>{const _0x2bde1f=_0x4ad9f1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x2bde1f==='Users'&&!_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Skills'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Settings'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Health'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Git\x20History'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Roles'&&(_0x4ad9f1['hidden']=!![]);});}_0x28d363['addEventListener']('click',_0x302cfe=>{_0x302cfe['stopPropagation']();const _0x2af135=document['getElementById']('actions-menu');if(_0x2af135)_0x2af135['hidden']=!![];_0x507c9c['hidden']=!_0x507c9c['hidden'];}),document['addEventListener']('click',_0xfbe65d=>{!_0x507c9c['hidden']&&!_0x28d363['contains'](_0xfbe65d['target'])&&!_0x507c9c['contains'](_0xfbe65d['target'])&&(_0x507c9c['hidden']=!![]);}),document['addEventListener']('keydown',_0x26b9a3=>{_0x26b9a3['key']==='Escape'&&!_0x507c9c['hidden']&&(_0x507c9c['hidden']=!![]);});const _0x5ecb7e=document['getElementById']('server-health-btn');_0x5ecb7e&&_0x5ecb7e['addEventListener']('click',async()=>{_0x507c9c['hidden']=!![];const {openServerHealthModal:_0x3120ca}=await import('./server-health.js');_0x3120ca();});}}catch(_0x301d05){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x301d05['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|