@profoundlogic/coderflow-server 0.7.5 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/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 _0x4bb51f=window['location']['pathname'],_0x5725f0=_0x4bb51f['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5725f0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5725f0[0x1]),_0x5725f0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x587be8={}){const _0x3321c3=new URLSearchParams();_0x587be8['userId']&&_0x3321c3['set']('userId',String(_0x587be8['userId']));_0x587be8['automation']&&_0x3321c3['set']('automation',String(_0x587be8['automation']));const _0x4fa211=API_BASE+'/tasks/stats'+(_0x3321c3['toString']()?'?'+_0x3321c3['toString']():''),_0x5c9f5e=await fetch(_0x4fa211);if(!_0x5c9f5e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5c9f5e['statusText']);return await _0x5c9f5e['json']();},async 'getTasks'(_0x57585e={}){const _0x360ba4=new URLSearchParams();_0x57585e['status']&&_0x360ba4['set']('status',String(_0x57585e['status']));_0x57585e['environment']&&_0x360ba4['set']('environment',String(_0x57585e['environment']));_0x57585e['automation']&&_0x360ba4['set']('automation',String(_0x57585e['automation']));if(_0x57585e['include']){const _0x477f6f=Array['isArray'](_0x57585e['include'])?_0x57585e['include']['join'](','):String(_0x57585e['include']);_0x477f6f&&_0x360ba4['set']('include',_0x477f6f);}_0x57585e['filter']&&_0x360ba4['set']('filter',String(_0x57585e['filter']));_0x57585e['page']&&_0x360ba4['set']('page',String(_0x57585e['page']));_0x57585e['limit']&&_0x360ba4['set']('limit',String(_0x57585e['limit']));_0x57585e['userId']&&_0x360ba4['set']('userId',String(_0x57585e['userId']));_0x57585e['search']&&_0x360ba4['set']('search',String(_0x57585e['search']));_0x57585e['includeChildTasks']&&_0x360ba4['set']('includeChildTasks','true');const _0x1aa742=API_BASE+'/tasks'+(_0x360ba4['toString']()?'?'+_0x360ba4['toString']():''),_0x3f1dc1=await fetch(_0x1aa742);if(!_0x3f1dc1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f1dc1['statusText']);return await _0x3f1dc1['json']();},async 'getAutomations'(_0x5d4dba={}){const _0x23d13f=new URLSearchParams();_0x5d4dba['environment']&&_0x23d13f['set']('environment',String(_0x5d4dba['environment']));const _0xec53f7=await fetch(API_BASE+'/api/automations'+(_0x23d13f['toString']()?'?'+_0x23d13f['toString']():''));if(!_0xec53f7['ok']){const _0x52d526=await _0xec53f7['json']()['catch'](()=>({}));throw new Error(_0x52d526['message']||_0x52d526['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xec53f7['statusText']);}return await _0xec53f7['json']();},async 'getAutomation'(_0x30e532){const _0x52ae95=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30e532));if(!_0x52ae95['ok']){const _0x597517=await _0x52ae95['json']()['catch'](()=>({}));throw new Error(_0x597517['message']||_0x597517['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x52ae95['statusText']);}return await _0x52ae95['json']();},async 'createAutomation'(_0xc7e1ee){const _0x3fa918=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7e1ee||{})});if(!_0x3fa918['ok']){const _0x56bfaa=await _0x3fa918['json']()['catch'](()=>({}));throw new Error(_0x56bfaa['message']||_0x56bfaa['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3fa918['statusText']);}return await _0x3fa918['json']();},async 'updateAutomation'(_0x62893d,_0xa0c542){const _0x4bf762=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x62893d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa0c542||{})});if(!_0x4bf762['ok']){const _0x1658df=await _0x4bf762['json']()['catch'](()=>({}));throw new Error(_0x1658df['message']||_0x1658df['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4bf762['statusText']);}return await _0x4bf762['json']();},async 'deleteAutomation'(_0x2793a5){const _0x184c01=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2793a5),{'method':'DELETE'});if(!_0x184c01['ok']){const _0x574d3d=await _0x184c01['json']()['catch'](()=>({}));throw new Error(_0x574d3d['message']||_0x574d3d['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x184c01['statusText']);}return await _0x184c01['json']();},async 'triggerAutomation'(_0x548456){const _0x3089d2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x548456)+'/trigger',{'method':'POST'});if(!_0x3089d2['ok']){const _0x1eb995=await _0x3089d2['json']()['catch'](()=>({}));throw new Error(_0x1eb995['message']||_0x1eb995['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3089d2['statusText']);}return await _0x3089d2['json']();},async 'setAutomationEnabled'(_0x34d52c,_0x29ac4e){const _0x1669e5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34d52c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x29ac4e})});if(!_0x1669e5['ok']){const _0x283bc3=await _0x1669e5['json']()['catch'](()=>({}));throw new Error(_0x283bc3['message']||_0x283bc3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1669e5['statusText']);}return await _0x1669e5['json']();},async 'getAutomationHistory'(_0x3cacbc,_0x1faec8=0x32){const _0x59cd57=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3cacbc)+'/history?limit='+encodeURIComponent(String(_0x1faec8)));if(!_0x59cd57['ok']){const _0x246c49=await _0x59cd57['json']()['catch'](()=>({}));throw new Error(_0x246c49['message']||_0x246c49['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59cd57['statusText']);}return await _0x59cd57['json']();},async 'getTask'(_0x45c931,_0x4ad45e={}){const _0x1f6497=new URLSearchParams();if(_0x4ad45e['include']){const _0x47ff96=Array['isArray'](_0x4ad45e['include'])?_0x4ad45e['include']['join'](','):String(_0x4ad45e['include']);if(_0x47ff96)_0x1f6497['set']('include',_0x47ff96);}const _0x55b51d=await fetch(API_BASE+'/tasks/'+_0x45c931+(_0x1f6497['toString']()?'?'+_0x1f6497['toString']():''));if(!_0x55b51d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x55b51d['statusText']);return await _0x55b51d['json']();},async 'getTaskResults'(_0x1eb142){const _0xb1be5f=await fetch(API_BASE+'/tasks/'+_0x1eb142+'/results');if(!_0xb1be5f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xb1be5f['statusText']);return await _0xb1be5f['json']();},async 'getTaskPatches'(_0x555343){const _0x5b0e1d=await fetch(API_BASE+'/tasks/'+_0x555343+'/patches');if(!_0x5b0e1d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5b0e1d['statusText']);return await _0x5b0e1d['json']();},async 'getTaskAttachments'(_0x4f5531){const _0x653340=await fetch(API_BASE+'/tasks/'+_0x4f5531+'/attachments');if(!_0x653340['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x653340['statusText']);return await _0x653340['json']();},async 'uploadAttachments'(_0x195bb2,_0x3fb384){const _0x28c8e7=new FormData();for(const _0x4bad4e of _0x3fb384){_0x28c8e7['append']('attachments',_0x4bad4e);}const _0xcb33b1=await fetch(API_BASE+'/tasks/'+_0x195bb2+'/attachments',{'method':'POST','body':_0x28c8e7});if(!_0xcb33b1['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0xcb33b1['statusText']);return await _0xcb33b1['json']();},async 'isAINameGenerationAvailable'(){try{const _0x4f2db8=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x4f2db8['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x4f2db8['json']();}catch(_0x37f7a0){return{'available':![],'reason':_0x37f7a0['message']};}},async 'generateTaskName'(_0x499395){try{const _0x3ddd94=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x499395})});return await _0x3ddd94['json']();}catch(_0x49860b){return{'success':![],'error':_0x49860b['message']};}},async 'createTask'(_0x4be9b7){let _0x5472ed,_0x26305c={};if(_0x4be9b7['files']&&_0x4be9b7['files']['length']>0x0){const _0x3a13cf=new FormData();for(const [_0x152dd0,_0x495694]of Object['entries'](_0x4be9b7)){if(_0x152dd0!=='files'){if(_0x495694==null)continue;typeof _0x495694==='object'?_0x3a13cf['append'](_0x152dd0,JSON['stringify'](_0x495694)):_0x3a13cf['append'](_0x152dd0,String(_0x495694));}}for(const _0x2788d4 of _0x4be9b7['files']){_0x3a13cf['append']('attachments',_0x2788d4);}_0x5472ed=_0x3a13cf;}else _0x26305c['Content-Type']='application/json',_0x5472ed=JSON['stringify'](_0x4be9b7);const _0x5dc0d2=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x26305c,'body':_0x5472ed});if(!_0x5dc0d2['ok']){const _0x3fe7e9=await _0x5dc0d2['json'](),_0x3d8286=new Error(_0x3fe7e9['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc0d2['statusText']),{message:_0x51c36b,..._0x28be92}=_0x3fe7e9;Object['assign'](_0x3d8286,_0x28be92);throw _0x3d8286;}return await _0x5dc0d2['json']();},async 'createTestTask'(_0x54ed8a){const _0x3e1e5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54ed8a)});if(!_0x3e1e5f['ok']){const _0x2fafcc=await _0x3e1e5f['json']();throw new Error(_0x2fafcc['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e1e5f['statusText']);}return await _0x3e1e5f['json']();},async 'createEphemeralTest'(_0x229e33){const _0x377b03=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x229e33)});if(!_0x377b03['ok']){const _0x2c6daa=await _0x377b03['json']();throw new Error(_0x2c6daa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x377b03['statusText']);}return await _0x377b03['json']();},async 'createDeployTask'(_0x30b957){const _0x22b95d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30b957)});if(!_0x22b95d['ok']){const _0x6d0ef1=await _0x22b95d['json']();throw new Error(_0x6d0ef1['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x22b95d['statusText']);}return await _0x22b95d['json']();},async 'getEnvironments'(){const _0x3e7f39=await fetch(API_BASE+'/environments');if(!_0x3e7f39['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3e7f39['statusText']);return await _0x3e7f39['json']();},async 'getEnvironment'(_0x2ff284){const _0x5de99d=await fetch(API_BASE+'/environments/'+_0x2ff284);if(!_0x5de99d['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5de99d['statusText']);return await _0x5de99d['json']();},async 'getEnvironmentRepoHistory'(_0x38d9b4,_0x4fa2fc,_0x49394a={}){if(!_0x38d9b4||!_0x4fa2fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b2939=new URLSearchParams();if(_0x49394a['limit'])_0x2b2939['set']('limit',String(_0x49394a['limit']));if(_0x49394a['offset'])_0x2b2939['set']('offset',String(_0x49394a['offset']));if(_0x49394a['search'])_0x2b2939['set']('search',String(_0x49394a['search']));if(_0x49394a['branch'])_0x2b2939['set']('branch',String(_0x49394a['branch']));const _0x51a9e0=API_BASE+'/environments/'+encodeURIComponent(_0x38d9b4)+'/repos/'+encodeURIComponent(_0x4fa2fc)+'/git/history',_0x3a2fae=await fetch(''+_0x51a9e0+(_0x2b2939['toString']()?'?'+_0x2b2939['toString']():''));if(!_0x3a2fae['ok']){const _0x4b80b7=await _0x3a2fae['json']()['catch'](()=>({}));throw new Error(_0x4b80b7['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3a2fae['statusText']);}return await _0x3a2fae['json']();},async 'getEnvironmentRepoCommit'(_0x408067,_0x38cc1d,_0x41d161){if(!_0x408067||!_0x38cc1d||!_0x41d161)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21a37d=API_BASE+'/environments/'+encodeURIComponent(_0x408067)+'/repos/'+encodeURIComponent(_0x38cc1d)+'/git/commits/'+encodeURIComponent(_0x41d161),_0x36d3ed=await fetch(_0x21a37d);if(!_0x36d3ed['ok']){const _0x19d6f4=await _0x36d3ed['json']()['catch'](()=>({}));throw new Error(_0x19d6f4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x36d3ed['statusText']);}return await _0x36d3ed['json']();},async 'getEnvironmentRepoBranches'(_0x291ef7,_0x58c43f){if(!_0x291ef7||!_0x58c43f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5de367=API_BASE+'/environments/'+encodeURIComponent(_0x291ef7)+'/repos/'+encodeURIComponent(_0x58c43f)+'/git/branches',_0x3fa850=await fetch(_0x5de367);if(!_0x3fa850['ok']){const _0x88abb3=await _0x3fa850['json']()['catch'](()=>({}));throw new Error(_0x88abb3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3fa850['statusText']);}return await _0x3fa850['json']();},async 'revertEnvironmentRepoCommit'(_0x4ddb63,_0x46fb7e,_0x36e7ae,_0x4fe631={}){if(!_0x4ddb63||!_0x46fb7e||!_0x36e7ae)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87cbda=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4ddb63)+'/repos/'+encodeURIComponent(_0x46fb7e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x36e7ae,..._0x4fe631})});if(!_0x87cbda['ok']){const _0x5b6851=await _0x87cbda['json']()['catch'](()=>({}));throw new Error(_0x5b6851['message']||_0x5b6851['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x87cbda['statusText']);}return await _0x87cbda['json']();},async 'getTemplates'(_0x1a2f67={}){const _0x287223=new URLSearchParams();if(_0x1a2f67['include']){const _0x39969c=Array['isArray'](_0x1a2f67['include'])?_0x1a2f67['include']['join'](','):String(_0x1a2f67['include']);if(_0x39969c)_0x287223['set']('include',_0x39969c);}const _0x208696=await fetch(API_BASE+'/templates'+(_0x287223['toString']()?'?'+_0x287223['toString']():''));if(!_0x208696['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x208696['statusText']);return await _0x208696['json']();},async 'getTemplatesForEnvironment'(_0x3f6f80,_0x2f121d={}){if(!_0x3f6f80)throw new Error('Environment\x20name\x20is\x20required');const _0x1e56f2=new URLSearchParams();if(_0x2f121d['include']){const _0x3277f4=Array['isArray'](_0x2f121d['include'])?_0x2f121d['include']['join'](','):String(_0x2f121d['include']);if(_0x3277f4)_0x1e56f2['set']('include',_0x3277f4);}const _0x39c561=await fetch(API_BASE+'/templates/'+_0x3f6f80+(_0x1e56f2['toString']()?'?'+_0x1e56f2['toString']():''));if(!_0x39c561['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3f6f80+':\x20'+_0x39c561['statusText']);return await _0x39c561['json']();},async 'getTemplate'(_0x1f5700,_0x18f5ce,_0x5bd9da={}){if(!_0x1f5700||!_0x18f5ce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x38df9e=new URLSearchParams();if(_0x5bd9da['include']){const _0x5c32c3=Array['isArray'](_0x5bd9da['include'])?_0x5bd9da['include']['join'](','):String(_0x5bd9da['include']);if(_0x5c32c3)_0x38df9e['set']('include',_0x5c32c3);}const _0x4ad1bd=await fetch(API_BASE+'/templates/'+_0x1f5700+'/'+_0x18f5ce+(_0x38df9e['toString']()?'?'+_0x38df9e['toString']():''));if(!_0x4ad1bd['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ad1bd['statusText']);return await _0x4ad1bd['json']();},async 'getTaskLogs'(_0xef9467,_0x4da596={}){if(!_0xef9467)throw new Error('Task\x20ID\x20is\x20required');const _0x2602e2=new URLSearchParams();_0x4da596['tail']&&_0x2602e2['set']('tail',String(_0x4da596['tail']));const _0x506214=await fetch(API_BASE+'/tasks/'+_0xef9467+'/logs'+(_0x2602e2['toString']()?'?'+_0x2602e2['toString']():''));if(!_0x506214['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x506214['statusText']);return await _0x506214['text']();},async 'getContainers'(){const _0x26157b=await fetch(API_BASE+'/containers');if(!_0x26157b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x26157b['statusText']);return await _0x26157b['json']();},async 'getContainer'(_0x22bcea){const _0x5ee83c=await fetch(API_BASE+'/containers/'+_0x22bcea);if(!_0x5ee83c['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ee83c['statusText']);return await _0x5ee83c['json']();},async 'startInteractiveContainer'(_0x336fe6){const _0x4e38b0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336fe6)});if(!_0x4e38b0['ok']){const _0x2cc3ed=await _0x4e38b0['json']()['catch'](()=>({}));throw new Error(_0x2cc3ed['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4e38b0['statusText']);}return await _0x4e38b0['json']();},async 'startContainerCodeServer'(_0x2a52fc,_0x5459bb={}){if(!_0x2a52fc)throw new Error('Container\x20ID\x20is\x20required');const _0x144e36=new URLSearchParams();_0x5459bb['theme']&&_0x144e36['set']('theme',_0x5459bb['theme']);const _0x5e7907=await fetch(API_BASE+'/containers/'+_0x2a52fc+'/code-server'+(_0x144e36['toString']()?'?'+_0x144e36['toString']():'')),_0x58a17=await _0x5e7907['json']()['catch'](()=>({}));if(!_0x5e7907['ok'])throw new Error(_0x58a17['message']||_0x58a17['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5e7907['statusText']);return _0x58a17;},async 'stopContainer'(_0x3ebb27){const _0x368003=await fetch(API_BASE+'/containers/'+_0x3ebb27,{'method':'DELETE'});if(!_0x368003['ok']){const _0x278ee0=await _0x368003['json']()['catch'](()=>({}));throw new Error(_0x278ee0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x368003['statusText']);}return await _0x368003['json']();},async 'stopTask'(_0x9789e9){if(!_0x9789e9)throw new Error('Task\x20ID\x20is\x20required');const _0x2b84dd=await fetch(API_BASE+'/tasks/'+_0x9789e9+'/stop',{'method':'POST'});if(!_0x2b84dd['ok']){const _0x4bacc7=await _0x2b84dd['json']()['catch'](()=>({}));throw new Error(_0x4bacc7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2b84dd['statusText']);}return await _0x2b84dd['json']();},async 'interruptTask'(_0x3d6d66){if(!_0x3d6d66)throw new Error('Task\x20ID\x20is\x20required');const _0x473cc3=await fetch(API_BASE+'/tasks/'+_0x3d6d66+'/interrupt',{'method':'POST'});if(!_0x473cc3['ok']){const _0x4db43c=await _0x473cc3['json']()['catch'](()=>({}));throw new Error(_0x4db43c['error']||_0x4db43c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x473cc3['statusText']);}return await _0x473cc3['json']();},async 'startTask'(_0x426132){if(!_0x426132)throw new Error('Task\x20ID\x20is\x20required');const _0x56b48a=await fetch(API_BASE+'/tasks/'+_0x426132+'/start',{'method':'POST'});if(!_0x56b48a['ok']){const _0x3e122d=await _0x56b48a['json']()['catch'](()=>({}));throw new Error(_0x3e122d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x56b48a['statusText']);}return await _0x56b48a['json']();},async 'deleteTask'(_0x4688cf){if(!_0x4688cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4a3395=await fetch(API_BASE+'/tasks/'+_0x4688cf,{'method':'DELETE'});if(!_0x4a3395['ok']){const _0x32ca61=await _0x4a3395['json']()['catch'](()=>({}));throw new Error(_0x32ca61['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4a3395['statusText']);}return await _0x4a3395['json']();},async 'refreshTasksFromDisk'(){const _0x2c0c0f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2c0c0f['ok']){const _0x48cf47=await _0x2c0c0f['json']()['catch'](()=>({}));throw new Error(_0x48cf47['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2c0c0f['statusText']);}return await _0x2c0c0f['json']();},async 'approveTask'(_0x703018,_0x5c3d54={}){if(!_0x703018)throw new Error('Task\x20ID\x20is\x20required');const _0x1b8eae={'commit_message':_0x5c3d54['commit_message']||'','pull':_0x5c3d54['pull']??![],'push':_0x5c3d54['push']??![]};_0x5c3d54['new_branch']&&(_0x1b8eae['new_branch']=_0x5c3d54['new_branch']);const _0xa27914=await fetch(API_BASE+'/tasks/'+_0x703018+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b8eae)});if(!_0xa27914['ok']){const _0x2cb030=await _0xa27914['json']()['catch'](()=>({}));let _0x4b56e0=_0x2cb030['error']||_0x2cb030['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xa27914['statusText'];if(_0x2cb030['results']&&Array['isArray'](_0x2cb030['results'])){const _0x245201=_0x2cb030['results']['filter'](_0x928bb=>!_0x928bb['success']&&_0x928bb['error']);_0x245201['length']>0x0&&(_0x4b56e0=_0x245201[0x0]['error']);}throw new Error(_0x4b56e0);}return await _0xa27914['json']();},async 'getPullRequestInfo'(_0x243afc){if(!_0x243afc)throw new Error('Task\x20ID\x20is\x20required');const _0x5de768=await fetch(API_BASE+'/tasks/'+_0x243afc+'/pull-request-info');if(!_0x5de768['ok']){const _0xa350c9=await _0x5de768['json']()['catch'](()=>({}));throw new Error(_0xa350c9['error']||_0xa350c9['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x5de768['statusText']);}return await _0x5de768['json']();},async 'createPullRequests'(_0x507eed,_0x2c9ac5){if(!_0x507eed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ac5||!Array['isArray'](_0x2c9ac5))throw new Error('repos\x20array\x20is\x20required');const _0x265b0b=await fetch(API_BASE+'/tasks/'+_0x507eed+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2c9ac5})});if(!_0x265b0b['ok']){const _0x2f57b=await _0x265b0b['json']()['catch'](()=>({}));let _0x2a0313=_0x2f57b['error']||_0x2f57b['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x265b0b['statusText'];if(_0x2f57b['results']&&Array['isArray'](_0x2f57b['results'])){const _0x5e7840=_0x2f57b['results']['filter'](_0x70ab46=>!_0x70ab46['success']&&_0x70ab46['error']);_0x5e7840['length']>0x0&&(_0x2a0313=_0x5e7840[0x0]['error']);}throw new Error(_0x2a0313);}return await _0x265b0b['json']();},async 'syncRepos'(_0x8a01b4){if(!_0x8a01b4)throw new Error('Task\x20ID\x20is\x20required');const _0x9fa078=await fetch(API_BASE+'/tasks/'+_0x8a01b4+'/sync-repos',{'method':'POST'});if(!_0x9fa078['ok']){const _0x2b84b9=await _0x9fa078['json']()['catch'](()=>({}));throw new Error(_0x2b84b9['error']||_0x2b84b9['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9fa078['statusText']);}return await _0x9fa078['json']();},async 'getIbmiSyncInfo'(_0x48fe9e){if(!_0x48fe9e)throw new Error('Task\x20ID\x20is\x20required');const _0x459b02=await fetch(API_BASE+'/tasks/'+_0x48fe9e+'/ibmi-sync-info');if(!_0x459b02['ok']){const _0x5a5e70=await _0x459b02['json']()['catch'](()=>({}));throw new Error(_0x5a5e70['error']||_0x5a5e70['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x459b02['json']();},async 'getSyncFiles'(_0x3a40f2){if(!_0x3a40f2)throw new Error('Task\x20ID\x20is\x20required');const _0xaf47d4=await fetch(API_BASE+'/tasks/'+_0x3a40f2+'/sync-to-ibmi/files');if(!_0xaf47d4['ok']){const _0x2afe2e=await _0xaf47d4['json']()['catch'](()=>({}));throw new Error(_0x2afe2e['error']||_0x2afe2e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xaf47d4['json']();},async 'syncToIbmi'(_0x16ab48,_0x1d4bab,_0x38f44e=null,_0x26725b=null,_0x15feb3=null){if(!_0x16ab48)throw new Error('Task\x20ID\x20is\x20required');const _0x1887f4={'library':_0x1d4bab};if(_0x38f44e)_0x1887f4['user']=_0x38f44e;if(_0x26725b)_0x1887f4['password']=_0x26725b;if(_0x15feb3)_0x1887f4['files']=_0x15feb3;const _0x3db2a2=await fetch(API_BASE+'/tasks/'+_0x16ab48+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1887f4)});if(!_0x3db2a2['ok']){const _0x3d02c8=await _0x3db2a2['json']()['catch'](()=>({}));throw new Error(_0x3d02c8['error']||_0x3d02c8['message']||'Sync\x20failed');}return await _0x3db2a2['json']();},async 'getIbmiSyncLog'(_0x37c01a){if(!_0x37c01a)throw new Error('Task\x20ID\x20is\x20required');const _0x2966e0=await fetch(API_BASE+'/tasks/'+_0x37c01a+'/ibmi-sync-log');if(!_0x2966e0['ok']){const _0x400168=await _0x2966e0['json']()['catch'](()=>({}));throw new Error(_0x400168['error']||_0x400168['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2966e0['json']();},async 'pullChanges'(_0x36329f){if(!_0x36329f)throw new Error('Task\x20ID\x20is\x20required');const _0x2fc9d6=await fetch(API_BASE+'/tasks/'+_0x36329f+'/pull-changes',{'method':'POST'});if(!_0x2fc9d6['ok']){const _0x2ccd06=await _0x2fc9d6['json']()['catch'](()=>({}));throw new Error(_0x2ccd06['error']||_0x2ccd06['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2fc9d6['statusText']);}return await _0x2fc9d6['json']();},async 'readFile'(_0x332e6d,_0x19c1f4){if(!_0x332e6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19c1f4)throw new Error('File\x20path\x20is\x20required');const _0x225fa6=await fetch(API_BASE+'/tasks/'+_0x332e6d+'/files?path='+encodeURIComponent(_0x19c1f4));if(!_0x225fa6['ok']){const _0x4ab434=await _0x225fa6['json']()['catch'](()=>({}));throw new Error(_0x4ab434['error']||_0x4ab434['message']||'Failed\x20to\x20read\x20file:\x20'+_0x225fa6['statusText']);}return await _0x225fa6['json']();},'getTaskFileDownloadUrl'(_0x56c30f,_0x24e84f){if(!_0x56c30f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24e84f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x56c30f+'/files/download?path='+encodeURIComponent(_0x24e84f);},async 'writeFile'(_0x5472d7,_0x49ad7b,_0x458c80){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49ad7b)throw new Error('File\x20path\x20is\x20required');if(_0x458c80===undefined)throw new Error('Content\x20is\x20required');const _0x3f2718=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49ad7b,'content':_0x458c80})});if(!_0x3f2718['ok']){const _0x18be80=await _0x3f2718['json']()['catch'](()=>({}));throw new Error(_0x18be80['error']||_0x18be80['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3f2718['statusText']);}return await _0x3f2718['json']();},async 'uploadTaskFiles'(_0x4c926d,_0x1e3d1c,_0x558c4e){if(!_0x4c926d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3d1c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x558c4e||_0x558c4e['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31f22c=new FormData();_0x31f22c['append']('targetDir',_0x1e3d1c);for(const _0x27334e of _0x558c4e){_0x31f22c['append']('files',_0x27334e,_0x27334e['name']);}const _0x23c431=await fetch(API_BASE+'/tasks/'+_0x4c926d+'/files/upload',{'method':'POST','body':_0x31f22c});if(!_0x23c431['ok']){const _0x4b3bed=await _0x23c431['json']()['catch'](()=>({}));throw new Error(_0x4b3bed['error']||_0x4b3bed['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x23c431['statusText']);}return await _0x23c431['json']();},async 'createDirectory'(_0x31462c,_0x48b721){if(!_0x31462c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48b721)throw new Error('Directory\x20path\x20is\x20required');const _0x38fb4f=await fetch(API_BASE+'/tasks/'+_0x31462c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x48b721})});if(!_0x38fb4f['ok']){const _0x126f81=await _0x38fb4f['json']()['catch'](()=>({}));throw new Error(_0x126f81['error']||_0x126f81['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x38fb4f['statusText']);}return await _0x38fb4f['json']();},async 'renamePath'(_0xcc5a35,_0x3d9b96,_0x3223be){if(!_0xcc5a35)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9b96)throw new Error('Source\x20path\x20is\x20required');if(!_0x3223be)throw new Error('Destination\x20path\x20is\x20required');const _0x253046=await fetch(API_BASE+'/tasks/'+_0xcc5a35+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x3d9b96,'newPath':_0x3223be})});if(!_0x253046['ok']){const _0x1febe1=await _0x253046['json']()['catch'](()=>({}));throw new Error(_0x1febe1['error']||_0x1febe1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x253046['statusText']);}return await _0x253046['json']();},async 'deleteFile'(_0x474a1f,_0x1a1c02){if(!_0x474a1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1c02)throw new Error('File\x20path\x20is\x20required');const _0x1413e0=await fetch(API_BASE+'/tasks/'+_0x474a1f+'/files?path='+encodeURIComponent(_0x1a1c02),{'method':'DELETE'});if(!_0x1413e0['ok']){const _0xadec7c=await _0x1413e0['json']()['catch'](()=>({}));throw new Error(_0xadec7c['error']||_0xadec7c['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1413e0['statusText']);}return await _0x1413e0['json']();},async 'deleteDirectory'(_0x5acf32,_0x59b802){if(!_0x5acf32)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59b802)throw new Error('Directory\x20path\x20is\x20required');const _0x5d3596=await fetch(API_BASE+'/tasks/'+_0x5acf32+'/files/directory?path='+encodeURIComponent(_0x59b802),{'method':'DELETE'});if(!_0x5d3596['ok']){const _0x1c8c68=await _0x5d3596['json']()['catch'](()=>({}));throw new Error(_0x1c8c68['error']||_0x1c8c68['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5d3596['statusText']);}return await _0x5d3596['json']();},async 'discardFile'(_0x1e0230,_0x28fd47,_0x232ea1){if(!_0x1e0230)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28fd47)throw new Error('File\x20path\x20is\x20required');if(!_0x232ea1)throw new Error('Repository\x20path\x20is\x20required');const _0xc93d16=await fetch(API_BASE+'/tasks/'+_0x1e0230+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28fd47,'repoPath':_0x232ea1})});if(!_0xc93d16['ok']){const _0x3f51ea=await _0xc93d16['json']()['catch'](()=>({}));throw new Error(_0x3f51ea['error']||_0x3f51ea['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xc93d16['statusText']);}return await _0xc93d16['json']();},async 'followUpTask'(_0x1fe836,_0x5b3b53={}){if(!_0x1fe836)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b3b53['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5a92fb,_0x28e393={};if(_0x5b3b53['files']&&_0x5b3b53['files']['length']>0x0){const _0x12228e=new FormData();_0x12228e['append']('instructions',_0x5b3b53['instructions']);for(const _0x40a0e6 of _0x5b3b53['files']){_0x12228e['append']('attachments',_0x40a0e6);}_0x5a92fb=_0x12228e;}else _0x28e393['Content-Type']='application/json',_0x5a92fb=JSON['stringify']({'instructions':_0x5b3b53['instructions']});const _0x1f1a0b=await fetch(API_BASE+'/tasks/'+_0x1fe836+'/follow-up',{'method':'POST','headers':_0x28e393,'body':_0x5a92fb});if(!_0x1f1a0b['ok']){const _0x425211=await _0x1f1a0b['json']()['catch'](()=>({}));throw new Error(_0x425211['error']||_0x425211['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1f1a0b['statusText']);}return await _0x1f1a0b['json']();},async 'getTaskRewindPoints'(_0x3a9f8a){if(!_0x3a9f8a)throw new Error('Task\x20ID\x20is\x20required');const _0x2eec13=await fetch(API_BASE+'/tasks/'+_0x3a9f8a+'/rewind-points');if(!_0x2eec13['ok']){const _0x3fc4b5=await _0x2eec13['json']()['catch'](()=>({}));throw new Error(_0x3fc4b5['error']||_0x3fc4b5['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2eec13['statusText']);}return await _0x2eec13['json']();},async 'rewindTask'(_0x2a90f0,_0x5a8591={}){if(!_0x2a90f0)throw new Error('Task\x20ID\x20is\x20required');const _0x2fffb5=Number['isInteger'](_0x5a8591['targetFollowUpCount'])?_0x5a8591['targetFollowUpCount']:0x0,_0x1eba7c={'targetFollowUpCount':_0x2fffb5};typeof _0x5a8591['instructions']==='string'&&_0x5a8591['instructions']['trim']()&&(_0x1eba7c['instructions']=_0x5a8591['instructions']['trim']());typeof _0x5a8591['rewindFiles']==='boolean'&&(_0x1eba7c['rewindFiles']=_0x5a8591['rewindFiles']);const _0x3e53f6=await fetch(API_BASE+'/tasks/'+_0x2a90f0+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1eba7c)});if(!_0x3e53f6['ok']){const _0xad14c6=await _0x3e53f6['json']()['catch'](()=>({}));throw new Error(_0xad14c6['error']||_0xad14c6['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3e53f6['statusText']);}return await _0x3e53f6['json']();},async 'login'(_0x54dbcb,_0x118d6f){const _0xaeb793=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x54dbcb,'password':_0x118d6f})});if(!_0xaeb793['ok']){const _0x2056b3=await _0xaeb793['json']();throw new Error(_0x2056b3['message']||'Login\x20failed');}return await _0xaeb793['json']();},async 'logout'(){const _0x4ccb68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ccb68['ok']){const _0x3ab912=await _0x4ccb68['json']();throw new Error(_0x3ab912['message']||'Logout\x20failed');}return await _0x4ccb68['json']();},async 'getCurrentUser'(){const _0x143fb3=await fetch(API_BASE+'/auth/me');if(!_0x143fb3['ok'])throw new Error('Not\x20authenticated');const _0x774d50=await _0x143fb3['json']();return _0x774d50['user'];},async 'getRolesInfo'(){const _0x526bfb=await fetch(API_BASE+'/users/roles');if(!_0x526bfb['ok']){const _0x5eba4e=await _0x526bfb['json']();throw new Error(_0x5eba4e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x526bfb['json']();},async 'getUsers'(){const _0x32d630=await fetch(API_BASE+'/users');if(!_0x32d630['ok']){const _0x4646ea=await _0x32d630['json']();throw new Error(_0x4646ea['message']||'Failed\x20to\x20get\x20users');}return await _0x32d630['json']();},async 'getUser'(_0x5232dd){const _0x69587a=await fetch(API_BASE+'/users/'+_0x5232dd);if(!_0x69587a['ok']){const _0x3d9c1b=await _0x69587a['json']();throw new Error(_0x3d9c1b['message']||'Failed\x20to\x20get\x20user');}return await _0x69587a['json']();},async 'createUser'(_0x6b9641){const _0xae3063=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6b9641)});if(!_0xae3063['ok']){const _0x5df25a=await _0xae3063['json']();throw new Error(_0x5df25a['message']||'Failed\x20to\x20create\x20user');}return await _0xae3063['json']();},async 'updateUser'(_0x1d15ac,_0x469a9e){const _0xb6e1ee=await fetch(API_BASE+'/users/'+_0x1d15ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x469a9e)});if(!_0xb6e1ee['ok']){const _0x549bcd=await _0xb6e1ee['json']();throw new Error(_0x549bcd['message']||'Failed\x20to\x20update\x20user');}return await _0xb6e1ee['json']();},async 'deleteUser'(_0x5ebee4){const _0x4249a1=await fetch(API_BASE+'/users/'+_0x5ebee4,{'method':'DELETE'});if(!_0x4249a1['ok']){const _0x337f4c=await _0x4249a1['json']();throw new Error(_0x337f4c['message']||'Failed\x20to\x20delete\x20user');}return await _0x4249a1['json']();},async 'stopAllContainers'(){const _0x4bc0eb=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3219e2=await _0x4bc0eb['json']()['catch'](()=>({}));if(!_0x4bc0eb['ok'])throw new Error(_0x3219e2['message']||_0x3219e2['error']||'Failed\x20to\x20stop\x20containers');return _0x3219e2;},async 'removeStoppedContainers'(){const _0x54eb62=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x37b611=await _0x54eb62['json']()['catch'](()=>({}));if(!_0x54eb62['ok'])throw new Error(_0x37b611['message']||_0x37b611['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x37b611;},async 'pruneDockerResources'(){const _0x413ebe=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x25e975=await _0x413ebe['json']()['catch'](()=>({}));if(!_0x413ebe['ok'])throw new Error(_0x25e975['message']||_0x25e975['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x25e975;},async 'createPasswordToken'(_0x3437d5,_0x44c965='setup',_0x1afa9b=![]){const _0x31442c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3437d5,'type':_0x44c965,'sendEmail':_0x1afa9b})});if(!_0x31442c['ok']){const _0x4839e2=await _0x31442c['json']();throw new Error(_0x4839e2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31442c['json']();},async 'getEmailConfig'(){const _0x2bab08=await fetch(API_BASE+'/password/email-config');if(!_0x2bab08['ok']){const _0x5ae8e3=await _0x2bab08['json']();throw new Error(_0x5ae8e3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2bab08['json']();},async 'updateTaskName'(_0x9739cc,_0x1ad9d2){const _0x1aac7d=await fetch(API_BASE+'/tasks/'+_0x9739cc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1ad9d2})});if(!_0x1aac7d['ok']){const _0xf7e9b0=await _0x1aac7d['json']();throw new Error(_0xf7e9b0['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1aac7d['json']();},async 'pinTask'(_0x5a9230,_0x27aba7,_0x23df79=null){if(!_0x5a9230)throw new Error('Task\x20ID\x20is\x20required');const _0x245ff0={'pinned':_0x27aba7};_0x23df79&&_0x23df79['length']>0x0&&(_0x245ff0['additionalTaskIds']=_0x23df79);const _0x3371e4=await fetch(API_BASE+'/tasks/'+_0x5a9230+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x245ff0)});if(!_0x3371e4['ok']){const _0x4b545c=await _0x3371e4['json']();throw new Error(_0x4b545c['error']||'Failed\x20to\x20pin\x20task');}return await _0x3371e4['json']();},async 'setTaskWinner'(_0xcbab0e,_0x149167,_0x3d78c7=[]){if(!_0xcbab0e)throw new Error('Task\x20ID\x20is\x20required');const _0x1ebf78=await fetch(API_BASE+'/tasks/'+_0xcbab0e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x149167,'siblings':_0x3d78c7})});if(!_0x1ebf78['ok']){const _0x1857a2=await _0x1ebf78['json']();throw new Error(_0x1857a2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ebf78['json']();},async 'setTaskLoser'(_0x3063a2,_0x4c4a9b){if(!_0x3063a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21feb8=await fetch(API_BASE+'/tasks/'+_0x3063a2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c4a9b})});if(!_0x21feb8['ok']){const _0x41be62=await _0x21feb8['json']();throw new Error(_0x41be62['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x21feb8['json']();},async 'createTaskGroup'(_0x61ecfd){const _0x1da6cd=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x61ecfd)});if(!_0x1da6cd['ok']){const _0x17fb7f=await _0x1da6cd['json']();throw new Error(_0x17fb7f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1da6cd['json']();},async 'getTaskGroups'(_0x37cf50={}){const _0x44b1c0=new URLSearchParams();if(_0x37cf50['userId'])_0x44b1c0['set']('userId',String(_0x37cf50['userId']));if(_0x37cf50['status'])_0x44b1c0['set']('status',String(_0x37cf50['status']));if(_0x37cf50['limit'])_0x44b1c0['set']('limit',String(_0x37cf50['limit']));const _0x33b17b=API_BASE+'/tasks/groups'+(_0x44b1c0['toString']()?'?'+_0x44b1c0['toString']():''),_0x62922=await fetch(_0x33b17b);if(!_0x62922['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x62922['json']();},async 'getTaskGroup'(_0x278ec5){const _0x85e1a7=await fetch(API_BASE+'/tasks/groups/'+_0x278ec5);if(!_0x85e1a7['ok']){const _0xf9a8d=await _0x85e1a7['json']();throw new Error(_0xf9a8d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x85e1a7['json']();},async 'updateTaskGroup'(_0x1a33ec,_0x5b26b3,_0x5b0546){const _0x289b49=await fetch(API_BASE+'/tasks/'+_0x1a33ec+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x5b26b3,'groupIndex':_0x5b0546})});if(!_0x289b49['ok']){const _0xccdd12=await _0x289b49['json']();throw new Error(_0xccdd12['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x289b49['json']();},async 'removeTaskFromGroup'(_0x397544){return this['updateTaskGroup'](_0x397544,null,null);},async 'deleteTaskGroup'(_0x4ea0c7,_0x3e7b73=![]){const _0x79a301=_0x3e7b73?'?deleteTasks=true':'',_0x4a9eef=await fetch(API_BASE+'/tasks/groups/'+_0x4ea0c7+_0x79a301,{'method':'DELETE'});if(!_0x4a9eef['ok']){const _0x4a6227=await _0x4a9eef['json']();throw new Error(_0x4a6227['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1a5494,_0x29ff85){const _0x3785fc=await fetch(API_BASE+'/tasks/groups/'+_0x1a5494+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29ff85})});if(!_0x3785fc['ok']){const _0x28d810=await _0x3785fc['json']();throw new Error(_0x28d810['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3785fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4d959b){if(!_0x4d959b)throw new Error('Task\x20ID\x20is\x20required');const _0x422cc0=await fetch(API_BASE+'/tasks/'+_0x4d959b+'/comments');if(!_0x422cc0['ok']){const _0x43151e=await _0x422cc0['json']()['catch'](()=>({}));throw new Error(_0x43151e['error']||'Failed\x20to\x20get\x20comments');}return await _0x422cc0['json']();},async 'addComment'(_0x437431,_0x2fa066){if(!_0x437431)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fa066)throw new Error('Comment\x20content\x20is\x20required');const _0x436e94=await fetch(API_BASE+'/tasks/'+_0x437431+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2fa066})});if(!_0x436e94['ok']){const _0x2713fa=await _0x436e94['json']()['catch'](()=>({}));throw new Error(_0x2713fa['error']||'Failed\x20to\x20add\x20comment');}return await _0x436e94['json']();},async 'updateComment'(_0x1b11c6,_0x58e6dd,_0x4296e2){if(!_0x1b11c6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58e6dd)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4296e2)throw new Error('Comment\x20content\x20is\x20required');const _0x135c49=await fetch(API_BASE+'/tasks/'+_0x1b11c6+'/comments/'+_0x58e6dd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4296e2})});if(!_0x135c49['ok']){const _0x111abd=await _0x135c49['json']()['catch'](()=>({}));throw new Error(_0x111abd['error']||'Failed\x20to\x20update\x20comment');}return await _0x135c49['json']();},async 'deleteComment'(_0x3fd657,_0x48144e){if(!_0x3fd657)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48144e)throw new Error('Comment\x20ID\x20is\x20required');const _0x35f82f=await fetch(API_BASE+'/tasks/'+_0x3fd657+'/comments/'+_0x48144e,{'method':'DELETE'});if(!_0x35f82f['ok']){const _0x1837a0=await _0x35f82f['json']()['catch'](()=>({}));throw new Error(_0x1837a0['error']||'Failed\x20to\x20delete\x20comment');}return await _0x35f82f['json']();},async 'createObjective'(_0x4c9785){const _0x3fb18f={'objective':!![],'name':_0x4c9785['name']||'','environment':_0x4c9785['environment']||null,'agents':_0x4c9785['agents']||[],'branches':_0x4c9785['branches']||{},'isPinned':_0x4c9785['isPinned']||![],'parentObjectiveId':_0x4c9785['parentObjectiveId']||null,'env_vars':_0x4c9785['envVars']||{},'parameters':{'instructions':_0x4c9785['instructions']||''},'files':_0x4c9785['files']||[],'jira':_0x4c9785['jira']||null};return this['createTask'](_0x3fb18f);},async 'updateObjective'(_0x39ea0d,_0x2d63ba,_0x2660eb=[],_0x30ada7=[]){let _0xe2278b,_0x281f15={};const _0x4f79f6={..._0x2d63ba};_0x30ada7&&_0x30ada7['length']>0x0&&(_0x4f79f6['removeAttachments']=_0x30ada7);if(_0x2660eb&&_0x2660eb['length']>0x0){const _0x106009=new FormData();for(const [_0x4ea73f,_0x2a883c]of Object['entries'](_0x4f79f6)){if(_0x2a883c==null)continue;typeof _0x2a883c==='object'?_0x106009['append'](_0x4ea73f,JSON['stringify'](_0x2a883c)):_0x106009['append'](_0x4ea73f,String(_0x2a883c));}for(const _0x13d46b of _0x2660eb){_0x106009['append']('attachments',_0x13d46b);}_0xe2278b=_0x106009;}else _0x281f15['Content-Type']='application/json',_0xe2278b=JSON['stringify'](_0x4f79f6);const _0x471e57=await fetch(API_BASE+'/tasks/'+_0x39ea0d,{'method':'PATCH','headers':_0x281f15,'body':_0xe2278b});if(!_0x471e57['ok']){const _0x2a33aa=await _0x471e57['json']();throw new Error(_0x2a33aa['error']||'Failed\x20to\x20update\x20objective');}return await _0x471e57['json']();},async 'deleteObjective'(_0x2f5628){return this['deleteTask'](_0x2f5628);},async 'launchObjective'(_0x255d05,_0x4b1697={}){const _0x5d1788=await fetch(API_BASE+'/tasks/'+_0x255d05+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b1697)});if(!_0x5d1788['ok']){const _0x13f552=await _0x5d1788['json']();throw new Error(_0x13f552['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5d1788['json']();},async 'getObjectiveAttachments'(_0x166044){return this['getTaskAttachments'](_0x166044);},async 'createJudgeTask'({environment:_0x3ce01c,judgeAgent:_0x29ccb9,groupId:_0xf824b9,taskIds:_0x5e574f,judgeCustomInstructions:_0x2ee94d,isPinned:_0x54e387}){const _0x407b19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ce01c,'judgeAgent':_0x29ccb9,'groupId':_0xf824b9,'taskIds':_0x5e574f,'judgeCustomInstructions':_0x2ee94d,'isPinned':_0x54e387})});if(!_0x407b19['ok']){const _0x3af567=await _0x407b19['json']();throw new Error(_0x3af567['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x407b19['json']();},async 'getJudgeTasks'(_0x2b9bd2){const _0x1e2fc0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2b9bd2));if(!_0x1e2fc0['ok']){const _0x1726be=await _0x1e2fc0['json']();throw new Error(_0x1726be['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1e2fc0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3d0000,_0x4039c8,_0x379f98=''){const _0xeffe90=await fetch(API_BASE+'/tasks/'+_0x3d0000+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4039c8,'customPreamble':_0x379f98})});if(!_0xeffe90['ok']){const _0x195c7e=await _0xeffe90['json']();throw new Error(_0x195c7e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xeffe90['json']();},async 'getJiraConfig'(){const _0x53851d=await fetch(API_BASE+'/jira/config');if(!_0x53851d['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x53851d['json']();},async 'getJiraIssue'(_0x4c6b66){const _0x4f8ec9=await fetch(API_BASE+'/jira/issues/'+_0x4c6b66);if(!_0x4f8ec9['ok']){const _0x188afb=await _0x4f8ec9['json']()['catch'](()=>({}));throw new Error(_0x188afb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4f8ec9['statusText']);}return await _0x4f8ec9['json']();},async 'searchJiraIssues'(_0x1ed265,_0x2145e=0x14){const _0xbbe800=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x1ed265,'maxResults':_0x2145e})});if(!_0xbbe800['ok']){const _0x515f69=await _0xbbe800['json']()['catch'](()=>({}));throw new Error(_0x515f69['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xbbe800['statusText']);}return await _0xbbe800['json']();},async 'postJiraComment'(_0x57c1e6,_0x204b88){const _0x41e5c2=await fetch(API_BASE+'/jira/issues/'+_0x57c1e6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x204b88})});if(!_0x41e5c2['ok']){const _0x37d64f=await _0x41e5c2['json']()['catch'](()=>({}));throw new Error(_0x37d64f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x41e5c2['statusText']);}return await _0x41e5c2['json']();},async 'getJiraComments'(_0x55ccce){const _0x267a49=await fetch(API_BASE+'/jira/issues/'+_0x55ccce+'/comments');if(!_0x267a49['ok']){const _0x163b75=await _0x267a49['json']()['catch'](()=>({}));throw new Error(_0x163b75['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x267a49['statusText']);}return await _0x267a49['json']();},async 'promptParameter'({environment:_0x584556,command:_0x2363af,parser:parser='json'}){const _0x1d9d93=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x584556,'command':_0x2363af,'parser':parser})});if(!_0x1d9d93['ok']){const _0x4bb76e=await _0x1d9d93['json']()['catch'](()=>({}));throw new Error(_0x4bb76e['message']||_0x4bb76e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1d9d93['statusText']);}return await _0x1d9d93['json']();},async 'promptParameterStream'(_0x73c6db,_0x17550a){const _0xdbc89d=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x73c6db)});if(!_0xdbc89d['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xdbc89d['statusText']);const _0x333520=_0xdbc89d['body']['getReader'](),_0x75a106=new TextDecoder();let _0x3915ad='';return new Promise((_0x333623,_0x4ae81d)=>{const _0x5d7f3b=async()=>{try{const {done:_0x10f589,value:_0x183273}=await _0x333520['read']();if(_0x10f589)return;_0x3915ad+=_0x75a106['decode'](_0x183273,{'stream':!![]});const _0x404533=_0x3915ad['split']('\x0a\x0a');_0x3915ad=_0x404533['pop']()||'';for(const _0xe214d7 of _0x404533){if(!_0xe214d7['trim']())continue;const _0x4bd758=_0xe214d7['split']('\x0a');let _0xe261f8='message',_0x479e50='';for(const _0x256c32 of _0x4bd758){if(_0x256c32['startsWith']('event:'))_0xe261f8=_0x256c32['substring'](0x6)['trim']();else _0x256c32['startsWith']('data:')&&(_0x479e50=_0x256c32['substring'](0x5)['trim']());}if(!_0x479e50)continue;try{const _0x55d54d=JSON['parse'](_0x479e50);if(_0xe261f8==='progress'&&_0x17550a)_0x17550a(_0x55d54d['stage'],_0x55d54d['message']);else{if(_0xe261f8==='result'){_0x333623(_0x55d54d);return;}else{if(_0xe261f8==='error'){let _0x21e229=_0x55d54d['message']||_0x55d54d['error']||'Prompt\x20command\x20failed';_0x55d54d['rawOutput']&&(_0x21e229+='\x0a\x0aRaw\x20output:\x0a'+_0x55d54d['rawOutput']);_0x4ae81d(new Error(_0x21e229));return;}}}}catch(_0x4d3d55){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d3d55),console['error']('Event\x20type:',_0xe261f8),console['error']('Event\x20data:',_0x479e50),console['error']('First\x20200\x20chars:',_0x479e50['substring'](0x0,0xc8)),_0x4ae81d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d3d55['message']+'\x0a\x0aData:\x20'+_0x479e50['substring'](0x0,0x1f4)));return;}}_0x5d7f3b();}catch(_0x20808f){_0x4ae81d(_0x20808f);}};_0x5d7f3b();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x28b34e){const _0x1fc1b9=await fetch(''+API_BASE+_0x28b34e);if(!_0x1fc1b9['ok']){const _0x343daf=await _0x1fc1b9['json']()['catch'](()=>({'error':_0x1fc1b9['statusText']})),_0x5ebb58=new Error(_0x343daf['error']||_0x343daf['message']||_0x1fc1b9['statusText']);if(_0x343daf['detail']!==undefined)_0x5ebb58['detail']=_0x343daf['detail'];throw _0x5ebb58;}return await _0x1fc1b9['json']();},async 'post'(_0x4efb7f,_0x19ca47){const _0x541598=await fetch(''+API_BASE+_0x4efb7f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19ca47)});if(!_0x541598['ok']){const _0x43dd44=await _0x541598['json']()['catch'](()=>({'error':_0x541598['statusText']})),_0x4a084d=new Error(_0x43dd44['error']||_0x43dd44['message']||_0x541598['statusText']);if(_0x43dd44['detail']!==undefined)_0x4a084d['detail']=_0x43dd44['detail'];throw _0x4a084d;}return await _0x541598['json']();},async 'put'(_0x423b38,_0x378dca){const _0x14965b=await fetch(''+API_BASE+_0x423b38,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x378dca)});if(!_0x14965b['ok']){const _0x1a12f5=await _0x14965b['json']()['catch'](()=>({'error':_0x14965b['statusText']})),_0x2177de=new Error(_0x1a12f5['error']||_0x1a12f5['message']||_0x14965b['statusText']);if(_0x1a12f5['detail']!==undefined)_0x2177de['detail']=_0x1a12f5['detail'];throw _0x2177de;}return await _0x14965b['json']();},async 'delete'(_0x2d870a,_0x38e316){const _0x4968d9={'method':'DELETE'};_0x38e316&&(_0x4968d9['headers']={'Content-Type':'application/json'},_0x4968d9['body']=JSON['stringify'](_0x38e316));const _0x4c90fb=await fetch(''+API_BASE+_0x2d870a,_0x4968d9);if(!_0x4c90fb['ok']){const _0xeac2be=await _0x4c90fb['json']()['catch'](()=>({'error':_0x4c90fb['statusText']})),_0x452b49=new Error(_0xeac2be['error']||_0xeac2be['message']||_0x4c90fb['statusText']);if(_0xeac2be['detail']!==undefined)_0x452b49['detail']=_0xeac2be['detail'];throw _0x452b49;}return await _0x4c90fb['json']();},async 'getSkills'(){const _0x1dfb07=await fetch(API_BASE+'/skills');if(!_0x1dfb07['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1dfb07['statusText']);return await _0x1dfb07['json']();},async 'getSkill'(_0x4b5778){const _0x454802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b5778));if(!_0x454802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x454802['statusText']);return await _0x454802['json']();},async 'createSkill'(_0x1087a6){const _0x5d16ff=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1087a6)});if(!_0x5d16ff['ok']){const _0x146d2d=await _0x5d16ff['json']()['catch'](()=>({'error':_0x5d16ff['statusText']})),_0x478ce0=new Error(_0x146d2d['error']||_0x146d2d['message']||_0x5d16ff['statusText']);if(_0x146d2d['detail']!==undefined)_0x478ce0['detail']=_0x146d2d['detail'];throw _0x478ce0;}return await _0x5d16ff['json']();},async 'updateSkill'(_0x23d3e8,_0x407528){const _0x5c66c0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23d3e8),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x407528)});if(!_0x5c66c0['ok']){const _0x1adf7a=await _0x5c66c0['json']()['catch'](()=>({'error':_0x5c66c0['statusText']})),_0x17835d=new Error(_0x1adf7a['error']||_0x1adf7a['message']||_0x5c66c0['statusText']);if(_0x1adf7a['detail']!==undefined)_0x17835d['detail']=_0x1adf7a['detail'];throw _0x17835d;}return await _0x5c66c0['json']();},async 'deleteSkill'(_0x5ef87e){const _0x560712=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5ef87e),{'method':'DELETE'});if(!_0x560712['ok']){const _0x1d228b=await _0x560712['json']()['catch'](()=>({'error':_0x560712['statusText']})),_0x534072=new Error(_0x1d228b['error']||_0x1d228b['message']||_0x560712['statusText']);if(_0x1d228b['detail']!==undefined)_0x534072['detail']=_0x1d228b['detail'];throw _0x534072;}return await _0x560712['json']();},async 'getSkillFile'(_0x58bd3d,_0x144f5d){const _0x23013a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x58bd3d)+'/files/'+_0x144f5d);if(!_0x23013a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x23013a['statusText']);return await _0x23013a['json']();},async 'saveSkillFile'(_0x4c2268,_0x5cff27,_0x162d1c){const _0x4e54a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2268)+'/files/'+_0x5cff27,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x162d1c})});if(!_0x4e54a7['ok']){const _0xb952b=await _0x4e54a7['json']()['catch'](()=>({'error':_0x4e54a7['statusText']})),_0x5bc90d=new Error(_0xb952b['error']||_0xb952b['message']||_0x4e54a7['statusText']);if(_0xb952b['detail']!==undefined)_0x5bc90d['detail']=_0xb952b['detail'];throw _0x5bc90d;}return await _0x4e54a7['json']();},async 'deleteSkillFile'(_0x31224f,_0x40aee5){const _0x34b745=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31224f)+'/files/'+_0x40aee5,{'method':'DELETE'});if(!_0x34b745['ok']){const _0x55a154=await _0x34b745['json']()['catch'](()=>({'error':_0x34b745['statusText']})),_0x379f3c=new Error(_0x55a154['error']||_0x55a154['message']||_0x34b745['statusText']);if(_0x55a154['detail']!==undefined)_0x379f3c['detail']=_0x55a154['detail'];throw _0x379f3c;}return await _0x34b745['json']();},async 'pullSkills'(){const _0x4260a0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4260a0['ok']){const _0x247753=await _0x4260a0['json']()['catch'](()=>({'error':_0x4260a0['statusText']})),_0x4b374a=new Error(_0x247753['error']||_0x247753['message']||_0x4260a0['statusText']);if(_0x247753['detail']!==undefined)_0x4b374a['detail']=_0x247753['detail'];throw _0x4b374a;}return await _0x4260a0['json']();},async 'commitSkills'(_0x39469b,_0x3cabf8={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3cabf8,_0x4d676d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39469b,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4d676d['ok']){const _0x5908a9=await _0x4d676d['json']()['catch'](()=>({'error':_0x4d676d['statusText']})),_0x3b1813=new Error(_0x5908a9['error']||_0x5908a9['message']||_0x4d676d['statusText']);if(_0x5908a9['detail']!==undefined)_0x3b1813['detail']=_0x5908a9['detail'];throw _0x3b1813;}return await _0x4d676d['json']();},async 'discardSkillsChanges'(){const _0x3282b7=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3282b7['ok']){const _0xceb222=await _0x3282b7['json']()['catch'](()=>({'error':_0x3282b7['statusText']})),_0x579547=new Error(_0xceb222['error']||_0xceb222['message']||_0x3282b7['statusText']);if(_0xceb222['detail']!==undefined)_0x579547['detail']=_0xceb222['detail'];throw _0x579547;}return await _0x3282b7['json']();},async 'getSkillCatalog'(){const _0x4f3eb7=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4f3eb7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4f3eb7['statusText']);return await _0x4f3eb7['json']();},async 'getImportedSkillsRegistry'(){const _0x45ea95=await fetch(API_BASE+'/external-skills/registry');if(!_0x45ea95['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x45ea95['statusText']);return await _0x45ea95['json']();},async 'importCatalogSkill'(_0x396ac0){const _0xba980f=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x396ac0})});if(!_0xba980f['ok']){const _0x4e9736=await _0xba980f['json']()['catch'](()=>({'error':_0xba980f['statusText']})),_0x38eb13=new Error(_0x4e9736['error']||_0x4e9736['message']||_0xba980f['statusText']);if(_0x4e9736['detail']!==undefined)_0x38eb13['detail']=_0x4e9736['detail'];throw _0x38eb13;}return await _0xba980f['json']();},async 'importSkillFromGit'(_0xa7c8ec,_0x4feeb4,_0x4d9bea='main',_0x12e9f0=null){const _0x53b121=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa7c8ec,'skillPath':_0x4feeb4,'branch':_0x4d9bea,'skillId':_0x12e9f0})});if(!_0x53b121['ok']){const _0x257999=await _0x53b121['json']()['catch'](()=>({'error':_0x53b121['statusText']})),_0x4912da=new Error(_0x257999['error']||_0x257999['message']||_0x53b121['statusText']);if(_0x257999['detail']!==undefined)_0x4912da['detail']=_0x257999['detail'];throw _0x4912da;}return await _0x53b121['json']();},async 'probeMarketplace'(_0xc48db1,_0x19d48e='main'){const _0x5e23d2=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xc48db1,'branch':_0x19d48e})});if(!_0x5e23d2['ok']){const _0x4db86b=await _0x5e23d2['json']()['catch'](()=>({'error':_0x5e23d2['statusText']})),_0x35db4b=new Error(_0x4db86b['error']||_0x4db86b['message']||_0x5e23d2['statusText']);if(_0x4db86b['detail']!==undefined)_0x35db4b['detail']=_0x4db86b['detail'];throw _0x35db4b;}return await _0x5e23d2['json']();},async 'importMarketplaceBundle'(_0x153780,_0x41d918,_0x1c5804,_0x3685c5=null){const _0x5a4709=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x153780,'branch':_0x41d918,'bundleId':_0x1c5804,'selectedSkills':_0x3685c5})});if(!_0x5a4709['ok']){const _0x3ba446=await _0x5a4709['json']()['catch'](()=>({'error':_0x5a4709['statusText']})),_0x241949=new Error(_0x3ba446['error']||_0x3ba446['message']||_0x5a4709['statusText']);if(_0x3ba446['detail']!==undefined)_0x241949['detail']=_0x3ba446['detail'];throw _0x241949;}return await _0x5a4709['json']();},async 'importSkillFromFolder'(_0x295dce,_0x3cc761=null){const _0x2800a0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x295dce,'skillId':_0x3cc761})});if(!_0x2800a0['ok']){const _0x2fc6bd=await _0x2800a0['json']()['catch'](()=>({'error':_0x2800a0['statusText']})),_0x4c9664=new Error(_0x2fc6bd['error']||_0x2fc6bd['message']||_0x2800a0['statusText']);if(_0x2fc6bd['detail']!==undefined)_0x4c9664['detail']=_0x2fc6bd['detail'];throw _0x4c9664;}return await _0x2800a0['json']();},async 'importSkillFromNpm'(_0x556d57,_0x56e74b='latest',_0x3cf22c=null,_0x2fc566=null){const _0x45267e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x556d57,'version':_0x56e74b,'skillId':_0x3cf22c,'registry':_0x2fc566})});if(!_0x45267e['ok']){const _0x317ad5=await _0x45267e['json']()['catch'](()=>({'error':_0x45267e['statusText']})),_0x30c82b=new Error(_0x317ad5['error']||_0x317ad5['message']||_0x45267e['statusText']);if(_0x317ad5['detail']!==undefined)_0x30c82b['detail']=_0x317ad5['detail'];throw _0x30c82b;}return await _0x45267e['json']();},async 'checkSkillUpdates'(_0x3539dc){const _0x34fbce=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3539dc)+'/check-updates',{'method':'POST'});if(!_0x34fbce['ok']){const _0x5e4ce7=await _0x34fbce['json']()['catch'](()=>({'error':_0x34fbce['statusText']})),_0x36cf7f=new Error(_0x5e4ce7['error']||_0x5e4ce7['message']||_0x34fbce['statusText']);if(_0x5e4ce7['detail']!==undefined)_0x36cf7f['detail']=_0x5e4ce7['detail'];throw _0x36cf7f;}return await _0x34fbce['json']();},async 'updateExternalSkill'(_0x3d545d){const _0x2f75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3d545d)+'/update',{'method':'POST'});if(!_0x2f75f3['ok']){const _0x548dcf=await _0x2f75f3['json']()['catch'](()=>({'error':_0x2f75f3['statusText']})),_0x17c7f2=new Error(_0x548dcf['error']||_0x548dcf['message']||_0x2f75f3['statusText']);if(_0x548dcf['detail']!==undefined)_0x17c7f2['detail']=_0x548dcf['detail'];throw _0x17c7f2;}return await _0x2f75f3['json']();},async 'updateSkillFlags'(_0x31be6e,_0x1f628d){const _0x4eff4f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x31be6e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f628d})});if(!_0x4eff4f['ok']){const _0x37675d=await _0x4eff4f['json']()['catch'](()=>({'error':_0x4eff4f['statusText']})),_0x253962=new Error(_0x37675d['error']||_0x37675d['message']||_0x4eff4f['statusText']);if(_0x37675d['detail']!==undefined)_0x253962['detail']=_0x37675d['detail'];throw _0x253962;}return await _0x4eff4f['json']();},async 'removeFromImportedRegistry'(_0x454a9e){const _0xdc508f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x454a9e)+'/registry',{'method':'DELETE'});if(!_0xdc508f['ok']){const _0x250e97=await _0xdc508f['json']()['catch'](()=>({'error':_0xdc508f['statusText']})),_0x2409fe=new Error(_0x250e97['error']||_0x250e97['message']||_0xdc508f['statusText']);if(_0x250e97['detail']!==undefined)_0x2409fe['detail']=_0x250e97['detail'];throw _0x2409fe;}return await _0xdc508f['json']();},async 'getTeams'(){const _0x3aaef5=await fetch(API_BASE+'/teams');if(!_0x3aaef5['ok']){const _0x3e694a=await _0x3aaef5['json']()['catch'](()=>({'message':_0x3aaef5['statusText']}));throw new Error(_0x3e694a['message']||'Failed\x20to\x20get\x20teams');}return await _0x3aaef5['json']();},async 'getTeam'(_0x135452){const _0x32a5b3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x135452));if(!_0x32a5b3['ok']){const _0x2b31d3=await _0x32a5b3['json']()['catch'](()=>({'message':_0x32a5b3['statusText']}));throw new Error(_0x2b31d3['message']||'Failed\x20to\x20get\x20team');}return await _0x32a5b3['json']();},async 'createTeam'(_0x42dfec){const _0x3b1cda=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dfec)});if(!_0x3b1cda['ok']){const _0x249f28=await _0x3b1cda['json']()['catch'](()=>({'message':_0x3b1cda['statusText']}));throw new Error(_0x249f28['message']||'Failed\x20to\x20create\x20team');}return await _0x3b1cda['json']();},async 'updateTeam'(_0x47742f,_0x2f7d58){const _0x3bbb69=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x47742f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f7d58)});if(!_0x3bbb69['ok']){const _0xd65067=await _0x3bbb69['json']()['catch'](()=>({'message':_0x3bbb69['statusText']}));throw new Error(_0xd65067['message']||'Failed\x20to\x20update\x20team');}return await _0x3bbb69['json']();},async 'deleteTeam'(_0x3b69bf){const _0x207f6c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b69bf),{'method':'DELETE'});if(!_0x207f6c['ok']){const _0xc20ef6=await _0x207f6c['json']()['catch'](()=>({'message':_0x207f6c['statusText']}));throw new Error(_0xc20ef6['message']||'Failed\x20to\x20delete\x20team');}return await _0x207f6c['json']();},async 'addTeamMember'(_0x3786b0,_0x5c9330){const _0xe3760=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3786b0)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5c9330})});if(!_0xe3760['ok']){const _0xd72d56=await _0xe3760['json']()['catch'](()=>({'message':_0xe3760['statusText']}));throw new Error(_0xd72d56['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xe3760['json']();},async 'removeTeamMember'(_0x2b2484,_0x5de465){const _0x377cf6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b2484)+'/members/'+encodeURIComponent(_0x5de465),{'method':'DELETE'});if(!_0x377cf6['ok']){const _0x10fd42=await _0x377cf6['json']()['catch'](()=>({'message':_0x377cf6['statusText']}));throw new Error(_0x10fd42['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x377cf6['json']();},async 'getBindings'(_0x51be8b={}){const _0x521f6d=new URLSearchParams();if(_0x51be8b['resource_type'])_0x521f6d['set']('resource_type',_0x51be8b['resource_type']);if(_0x51be8b['resource_id'])_0x521f6d['set']('resource_id',_0x51be8b['resource_id']);if(_0x51be8b['subject_type'])_0x521f6d['set']('subject_type',_0x51be8b['subject_type']);if(_0x51be8b['subject_id'])_0x521f6d['set']('subject_id',_0x51be8b['subject_id']);const _0x45c27a=_0x521f6d['toString'](),_0x1bb326=await fetch(API_BASE+'/bindings'+(_0x45c27a?'?'+_0x45c27a:''));if(!_0x1bb326['ok']){const _0x5dabf4=await _0x1bb326['json']()['catch'](()=>({'message':_0x1bb326['statusText']}));throw new Error(_0x5dabf4['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1bb326['json']();},async 'createBinding'(_0x460d34){const _0x5bfc2e=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x460d34)});if(!_0x5bfc2e['ok']){const _0x2b2ace=await _0x5bfc2e['json']()['catch'](()=>({'message':_0x5bfc2e['statusText']}));throw new Error(_0x2b2ace['message']||'Failed\x20to\x20create\x20binding');}return await _0x5bfc2e['json']();},async 'updateBinding'(_0x3106bc,_0xcc83){const _0x5e5fd2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3106bc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcc83)});if(!_0x5e5fd2['ok']){const _0x33a108=await _0x5e5fd2['json']()['catch'](()=>({'message':_0x5e5fd2['statusText']}));throw new Error(_0x33a108['message']||'Failed\x20to\x20update\x20binding');}return await _0x5e5fd2['json']();},async 'deleteBinding'(_0x4056db){const _0x12f43f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4056db),{'method':'DELETE'});if(!_0x12f43f['ok']){const _0x535e9c=await _0x12f43f['json']()['catch'](()=>({'message':_0x12f43f['statusText']}));throw new Error(_0x535e9c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x12f43f['json']();},async 'getRoleDefinitions'(){const _0x40c3f5=await fetch(API_BASE+'/roles');if(!_0x40c3f5['ok']){const _0x9bb671=await _0x40c3f5['json']()['catch'](()=>({'message':_0x40c3f5['statusText']}));throw new Error(_0x9bb671['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x40c3f5['json']();},async 'getRoleDefinition'(_0x17b834){const _0x16cdca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x17b834));if(!_0x16cdca['ok']){const _0x584a39=await _0x16cdca['json']()['catch'](()=>({'message':_0x16cdca['statusText']}));throw new Error(_0x584a39['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x16cdca['json']();},async 'createRoleDefinition'(_0x5cb685){const _0x4b54b9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cb685)});if(!_0x4b54b9['ok']){const _0x1ce08c=await _0x4b54b9['json']()['catch'](()=>({'message':_0x4b54b9['statusText']}));throw new Error(_0x1ce08c['message']||_0x1ce08c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4b54b9['json']();},async 'updateRoleDefinition'(_0x5d6b22,_0x3bd72c){const _0x182850=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5d6b22),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bd72c)});if(!_0x182850['ok']){const _0x1532e3=await _0x182850['json']()['catch'](()=>({'message':_0x182850['statusText']}));throw new Error(_0x1532e3['message']||_0x1532e3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x182850['json']();},async 'deleteRoleDefinition'(_0x45982a){const _0x28029b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x45982a),{'method':'DELETE'});if(!_0x28029b['ok']){const _0x313a8f=await _0x28029b['json']()['catch'](()=>({'message':_0x28029b['statusText']}));throw new Error(_0x313a8f['message']||_0x313a8f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28029b['json']();},async 'getAvailablePermissions'(){const _0xb524c3=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb524c3['ok']){const _0x36b8ed=await _0xb524c3['json']()['catch'](()=>({'message':_0xb524c3['statusText']}));throw new Error(_0x36b8ed['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb524c3['json']();},async 'getGitProviderAllowedTeams'(_0x5d16e3){const _0x1726eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d16e3)+'/allowed-teams');if(!_0x1726eb['ok']){const _0x14a5f4=await _0x1726eb['json']()['catch'](()=>({'message':_0x1726eb['statusText']}));throw new Error(_0x14a5f4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1726eb['json']();},async 'setGitProviderAllowedTeams'(_0x4945f5,_0x9249ac){const _0x2ebe37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4945f5)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x9249ac})});if(!_0x2ebe37['ok']){const _0x5a68d2=await _0x2ebe37['json']()['catch'](()=>({'message':_0x2ebe37['statusText']}));throw new Error(_0x5a68d2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x2ebe37['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 _0x2a1af5=toastState['baseBottom'];toastState['toasts']['forEach'](_0x676bba=>{_0x676bba['el']['style']['bottom']=_0x2a1af5+'px';const _0x3bae7a=_0x676bba['el']['offsetHeight']||toastState['defaultHeight'];_0x2a1af5+=_0x3bae7a+toastState['gap'];});});}function removeToastById(_0x55b0ec){const _0x193fd5=toastState['toasts']['findIndex'](_0x167bba=>_0x167bba['id']===_0x55b0ec);if(_0x193fd5===-0x1)return;const _0x2e9eca=toastState['toasts'][_0x193fd5];if(_0x2e9eca['timeoutId'])clearTimeout(_0x2e9eca['timeoutId']);_0x2e9eca['el']['classList']['remove']('show'),setTimeout(()=>_0x2e9eca['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x193fd5,0x1),repositionAllToasts();}function registerToast(_0x2d2125){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d2125),repositionAllToasts(),_0x2d2125['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(_0x37a7cb){if(_0x37a7cb===null||_0x37a7cb===undefined)return'';return String(_0x37a7cb)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x4c0475,_0x4d60c0){if(_0x4c0475&&typeof _0x4c0475==='object'&&!Array['isArray'](_0x4c0475))return{'code':typeof _0x4c0475['text']==='string'?_0x4c0475['text']:'','language':typeof _0x4c0475['lang']==='string'?_0x4c0475['lang']:''};return{'code':typeof _0x4c0475==='string'?_0x4c0475:'','language':typeof _0x4d60c0==='string'?_0x4d60c0:''};}function buildMermaidBlock(_0x557e6b){const _0x180850=String(_0x557e6b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x180850))+'\x22>'+escapeHtmlValue(_0x180850)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x463461=new marked['Renderer'](),_0x15a85f=_0x463461['code']['bind'](_0x463461);return _0x463461['code']=function(_0x3166cb,_0x5f4ed4,..._0x46ee6e){const {code:_0x50385d,language:_0x2774bb}=getMarkdownCodeBlockPayload(_0x3166cb,_0x5f4ed4),_0x1795fa=String(_0x2774bb||'')['trim']()['toLowerCase']();if(_0x1795fa==='mermaid')return buildMermaidBlock(_0x50385d);const _0x2526d7=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2526d7&&_0x1795fa)try{const _0x4a6d9e=_0x2526d7['getLanguage'](_0x1795fa)?_0x1795fa:'plaintext',_0xd6ae95=_0x2526d7['highlight'](_0x50385d,{'language':_0x4a6d9e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1795fa)+'\x22>'+_0xd6ae95+'</code></pre>';}catch(_0x4c1d12){console['error']('Syntax\x20highlighting\x20error:',_0x4c1d12);}return _0x15a85f(_0x3166cb,_0x5f4ed4,..._0x46ee6e);},sharedMarkedRenderer=_0x463461,_0x463461;}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 _0x15446b=window['mermaid'];if(!_0x15446b||typeof _0x15446b['initialize']!=='function')return _0x15446b||null;return _0x15446b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x15446b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x749826,_0x17030b)=>{const _0x207511=()=>_0x749826(configureMermaidInstance()),_0x549c64=()=>{mermaidLoadPromise=null,_0x17030b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1db1ca=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1db1ca&&(_0x1db1ca=document['createElement']('script'),_0x1db1ca['id']=MERMAID_SCRIPT_ID,_0x1db1ca['src']=MERMAID_SCRIPT_SRC,_0x1db1ca['async']=!![],document['head']['appendChild'](_0x1db1ca));if(window['mermaid']){_0x207511();return;}_0x1db1ca['addEventListener']('load',_0x207511,{'once':!![]}),_0x1db1ca['addEventListener']('error',_0x549c64,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x45712f){const _0x422168=_0x45712f['getAttribute']('data-mermaid-source');if(!_0x422168)return null;let _0x53e77e=_0x422168;try{_0x53e77e=decodeURIComponent(_0x422168);}catch{}return _0x45712f['textContent']=_0x53e77e,_0x45712f['removeAttribute']('data-processed'),_0x45712f['removeAttribute']('aria-roledescription'),_0x45712f['removeAttribute']('role'),_0x45712f['removeAttribute']('aria-label'),_0x53e77e;}function collectMermaidNodes(_0x500636,_0x4f1135){if(!(_0x500636 instanceof Element))return;_0x500636['matches']('.mermaid[data-mermaid-source]')&&_0x4f1135['add'](_0x500636),_0x500636['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x10d39d=>{_0x4f1135['add'](_0x10d39d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x318e7e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x77b3dc=>setTimeout(_0x77b3dc,0x0);_0x318e7e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3d82f6=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3d82f6);});});}function queueMermaidRender(_0x219ba4){const _0x1b7338=new Set();_0x219ba4 instanceof Document||_0x219ba4 instanceof DocumentFragment?_0x219ba4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4cc4e5=>_0x1b7338['add'](_0x4cc4e5)):collectMermaidNodes(_0x219ba4,_0x1b7338);if(_0x1b7338['size']===0x0)return;_0x1b7338['forEach'](_0x2e5d17=>pendingMermaidNodes['add'](_0x2e5d17)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5f44ea=Array['from'](pendingMermaidNodes)['filter'](_0x2912c8=>_0x2912c8['isConnected']);pendingMermaidNodes['clear']();if(_0x5f44ea['length']===0x0)return;const _0x2516b4=await loadMermaid();if(!_0x2516b4)return;configureMermaidInstance();const _0x407f7e=getMermaidTheme();for(const _0x15dec2 of _0x5f44ea){const _0x42cc0f=_0x15dec2['getAttribute']('data-mermaid-source');if(!_0x42cc0f)continue;const _0x10caca=_0x15dec2['getAttribute']('data-processed')==='true';if(_0x10caca&&_0x15dec2['dataset']['mermaidTheme']===_0x407f7e)continue;restoreMermaidSource(_0x15dec2);try{if(typeof _0x2516b4['run']==='function')await _0x2516b4['run']({'nodes':[_0x15dec2]});else typeof _0x2516b4['init']==='function'&&_0x2516b4['init'](undefined,[_0x15dec2]);_0x15dec2['dataset']['mermaidTheme']=_0x407f7e,delete _0x15dec2['dataset']['mermaidError'];}catch(_0xc56f92){console['error']('Mermaid\x20render\x20failed:',_0xc56f92),restoreMermaidSource(_0x15dec2),_0x15dec2['dataset']['mermaidError']='true',delete _0x15dec2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x53b517=>{_0x53b517['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x53b517);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2d97f9=>{_0x2d97f9['forEach'](_0x53c2de=>{_0x53c2de['addedNodes']['forEach'](_0xba2938=>{_0xba2938['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xba2938);});});}),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'(_0x50d657){const _0x1c2948=new Date(_0x50d657),_0x235326=new Date(),_0x4c9402=_0x235326-_0x1c2948,_0x1b95a9=Math['floor'](_0x4c9402/0x3e8),_0x512cf4=Math['floor'](_0x1b95a9/0x3c),_0x123fa7=Math['floor'](_0x512cf4/0x3c),_0x105459=Math['floor'](_0x123fa7/0x18);if(_0x1b95a9<0x3c)return'now';if(_0x512cf4<0x3c)return _0x512cf4+'m\x20ago';if(_0x123fa7<0x18)return _0x123fa7+'h\x20ago';return _0x105459+'d\x20ago';},'getStatusIcon'(_0x546e77){switch(_0x546e77){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x450556){switch(_0x450556){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'(_0x24d0fb,_0xafabe5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2262bb={};_0x2262bb['text/plain']=new Blob([_0x24d0fb],{'type':'text/plain'});_0xafabe5&&(_0x2262bb['text/html']=new Blob([_0xafabe5],{'type':'text/html'}));const _0x80deaa=new ClipboardItem(_0x2262bb);return await navigator['clipboard']['write']([_0x80deaa]),!![];}catch(_0x4071ea){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4071ea);}try{const _0x1f60f8=_0x4a6da5=>{_0x4a6da5['preventDefault'](),_0x4a6da5['clipboardData']['setData']('text/plain',_0x24d0fb),_0xafabe5&&_0x4a6da5['clipboardData']['setData']('text/html',_0xafabe5);};document['addEventListener']('copy',_0x1f60f8);const _0x41263b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f60f8);if(_0x41263b)return!![];}catch(_0x398750){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398750);}try{const _0x26c71c=document['createElement']('textarea');_0x26c71c['value']=_0x24d0fb,_0x26c71c['style']['position']='fixed',_0x26c71c['style']['opacity']='0',_0x26c71c['style']['pointerEvents']='none',document['body']['appendChild'](_0x26c71c),_0x26c71c['select']();const _0x29bfad=document['execCommand']('copy');return document['body']['removeChild'](_0x26c71c),_0x29bfad;}catch(_0x6066de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x6066de),![];}},'showToast'(_0x33c58b,_0x13d2a1='info'){const _0x1f6709=getNextToastId(),_0x8f4b10=document['createElement']('div');_0x8f4b10['className']='toast\x20toast-'+_0x13d2a1,_0x8f4b10['textContent']=_0x33c58b,_0x8f4b10['dataset']['toastId']=_0x1f6709,document['body']['appendChild'](_0x8f4b10);const _0x3f859c=_0x13d2a1==='error'?0x2710:0xbb8,_0x307743=setTimeout(()=>{removeToastById(_0x1f6709);},_0x3f859c),_0x5f4121={'id':_0x1f6709,'el':_0x8f4b10,'timeoutId':_0x307743};return registerToast(_0x5f4121),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x8f4b10['classList']['add']('show');});}),_0x1f6709;},'showError'(_0x48f352){console['error'](_0x48f352);const _0x517ff5=typeof _0x48f352==='string'?_0x48f352:_0x48f352['message']||'An\x20error\x20occurred';this['showToast'](_0x517ff5,'error');},'showSuccess'(_0x17337c){this['showToast'](_0x17337c,'success');},'capitalize'(_0x2c3119){if(!_0x2c3119)return'';return _0x2c3119['charAt'](0x0)['toUpperCase']()+_0x2c3119['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3e53f9){return escapeHtmlValue(_0x3e53f9);},'ansiToHtml'(_0x3b6a1a){if(_0x3b6a1a===null||_0x3b6a1a===undefined)return'';let _0x3aeee7=this['escapeHtml'](_0x3b6a1a);const _0x124495={'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'},_0x5abc8d={'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 _0x2a1781=0x0;return _0x3aeee7=_0x3aeee7['replace'](/\x1b\[([0-9;]*)m/g,(_0x475443,_0x491756)=>{if(!_0x491756||_0x491756==='0'){const _0x41c802='</span>'['repeat'](_0x2a1781);return _0x2a1781=0x0,_0x41c802;}const _0x170125=_0x491756['split'](';'),_0x3b3441=[];for(const _0x136ed2 of _0x170125){if(_0x136ed2==='1')_0x3b3441['push']('font-weight:bold');else{if(_0x136ed2==='2')_0x3b3441['push']('opacity:0.7');else{if(_0x136ed2==='3')_0x3b3441['push']('font-style:italic');else{if(_0x136ed2==='4')_0x3b3441['push']('text-decoration:underline');else{if(_0x136ed2==='9')_0x3b3441['push']('text-decoration:line-through');else{if(_0x124495[_0x136ed2])_0x3b3441['push']('color:'+_0x124495[_0x136ed2]);else{if(_0x5abc8d[_0x136ed2])_0x3b3441['push']('background-color:'+_0x5abc8d[_0x136ed2]);}}}}}}}if(_0x3b3441['length']>0x0)return _0x2a1781++,'<span\x20style=\x22'+_0x3b3441['join'](';')+'\x22>';return'';}),_0x3aeee7+='</span>'['repeat'](_0x2a1781),_0x3aeee7=_0x3aeee7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1c10ca,_0x3db66b)=>{if(!_0x3db66b||_0x3db66b==='0')return'';const _0x31953f=_0x3db66b['split'](';'),_0x494710=[];for(const _0x1fe5cb of _0x31953f){if(_0x1fe5cb==='1')_0x494710['push']('font-weight:bold');else{if(_0x124495[_0x1fe5cb])_0x494710['push']('color:'+_0x124495[_0x1fe5cb]);else{if(_0x5abc8d[_0x1fe5cb])_0x494710['push']('background-color:'+_0x5abc8d[_0x1fe5cb]);}}}if(_0x494710['length']>0x0)return'<span\x20style=\x22'+_0x494710['join'](';')+'\x22>';return'';}),_0x3aeee7;},'showModal'({title:_0x4378df,content:_0x2fba3b,buttons:buttons=[]}){const _0x41cbd2='\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'](_0x4378df)+'</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'+_0x2fba3b+'\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']((_0x4d18f8,_0x26dc48)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4d18f8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x26dc48+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4d18f8['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',_0xd32454=document['createElement']('div');_0xd32454['id']='utils-modal',_0xd32454['className']='modal',_0xd32454['innerHTML']=_0x41cbd2,document['body']['appendChild'](_0xd32454);const _0x4f421d=document['getElementById']('utils-modal-close');_0x4f421d&&_0x4f421d['addEventListener']('click',()=>this['hideModal']());const _0x4de974=_0xd32454['querySelectorAll']('[data-btn-index]');_0x4de974['forEach'](_0x1ed970=>{const _0x4305b7=parseInt(_0x1ed970['dataset']['btnIndex']);buttons[_0x4305b7]?.['onClick']&&_0x1ed970['addEventListener']('click',buttons[_0x4305b7]['onClick']);});const _0x18d9c9=document['getElementById']('utils-modal-overlay');_0x18d9c9&&_0x18d9c9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29f850=document['getElementById']('utils-modal');_0x29f850&&_0x29f850['remove']();},'parseKeyValuePairs'(_0x1e3417){const _0x4d3fd6={};if(!_0x1e3417)return _0x4d3fd6;return _0x1e3417['split'](/\r?\n/)['map'](_0x5cff84=>_0x5cff84['trim']())['filter'](Boolean)['forEach'](_0x1c3c7d=>{const _0x40b9e2=_0x1c3c7d['indexOf']('=');if(_0x40b9e2>0x0){const _0x8b1b55=_0x1c3c7d['slice'](0x0,_0x40b9e2)['trim'](),_0xb7be69=_0x1c3c7d['slice'](_0x40b9e2+0x1)['trim']();if(_0x8b1b55)_0x4d3fd6[_0x8b1b55]=_0xb7be69;}}),_0x4d3fd6;},'debounce'(_0x4f49d6,_0x133afa=0xfa){let _0x73862d=null;return(..._0x56ebdb)=>{clearTimeout(_0x73862d),_0x73862d=setTimeout(()=>_0x4f49d6['apply'](this,_0x56ebdb),_0x133afa);};},'formatTimestamp'(_0x33869e){if(!_0x33869e)return'N/A';const _0x22653b=new Date(_0x33869e);return _0x22653b['toLocaleDateString']()+'\x20'+_0x22653b['toLocaleTimeString']();},'getQueryParams'(){const _0x5ce64c=new URLSearchParams(window['location']['search']),_0x725a49={};for(const [_0x455627,_0x3c26cc]of _0x5ce64c){_0x725a49[_0x455627]=_0x3c26cc;}return _0x725a49;},'formatDuration'(_0x5b80c5,_0x4b6442){if(!_0x5b80c5)return'N/A';const _0x18b254=new Date(_0x5b80c5),_0xd5639a=_0x4b6442?new Date(_0x4b6442):new Date(),_0x4475be=_0xd5639a-_0x18b254;if(_0x4475be<0x0)return'0s';const _0x10b962=Math['floor'](_0x4475be/0x3e8),_0x20b89e=Math['floor'](_0x10b962/0x3c),_0x305e4c=Math['floor'](_0x20b89e/0x3c),_0x3b9ec0=Math['floor'](_0x305e4c/0x18);if(_0x10b962<0x3c)return _0x10b962+'s';if(_0x20b89e<0x3c)return _0x20b89e+'m\x20'+_0x10b962%0x3c+'s';if(_0x305e4c<0x18)return _0x305e4c+'h\x20'+_0x20b89e%0x3c+'m\x20'+_0x10b962%0x3c+'s';return _0x3b9ec0+'d\x20'+_0x305e4c%0x18+'h\x20'+_0x20b89e%0x3c+'m';},'renderMarkdown'(_0x58a012,_0x2fa12f={}){if(!_0x58a012)return'';_0x58a012=this['rewriteAttachmentLinks'](_0x58a012,_0x2fa12f),_0x58a012=this['rewriteColorSyntax'](_0x58a012);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x58a012);}catch(_0x3913a5){return console['error']('Markdown\x20parsing\x20error:',_0x3913a5),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);}},'rewriteAttachmentLinks'(_0x5c0ac1,_0x2e862f={}){const _0x108206=typeof _0x2e862f['resolveAttachmentUrl']==='function'?_0x2e862f['resolveAttachmentUrl']:_0x2e862f['taskId']?_0x1b7822=>API_BASE+'/tasks/'+_0x2e862f['taskId']+'/attachments/'+encodeURIComponent(_0x1b7822):null;if(!_0x108206)return _0x5c0ac1;return String(_0x5c0ac1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5d6a31,_0x1e2fc3)=>{const _0x15ada0=String(_0x1e2fc3||'')['trim']();if(!_0x15ada0)return _0x5d6a31;let _0x572223=_0x15ada0;try{_0x572223=decodeURIComponent(_0x15ada0);}catch{}const _0xab9e61=_0x108206(_0x572223);if(!_0xab9e61)return _0x5d6a31;return']('+_0xab9e61+')';});},'rewriteColorSyntax'(_0x4e3ed3){if(!_0x4e3ed3)return _0x4e3ed3;return String(_0x4e3ed3)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x56d653,_0x37e5e2,_0x524485)=>{const _0x3db3f9=this['rewriteColorSyntax'](_0x524485);return'<span\x20style=\x22color:\x20'+_0x37e5e2+'\x22>'+_0x3db3f9+'</span>';});},'renderMarkdownFallback'(_0x4fb402,_0x226c76={}){if(!_0x4fb402)return'';_0x4fb402=_0x4fb402['replace'](/\r\n/g,'\x0a'),_0x4fb402=_0x4fb402['replace'](/\r/g,'\x0a'),_0x4fb402=this['rewriteAttachmentLinks'](_0x4fb402,_0x226c76);let _0x22d8b3=this['escapeHtml'](_0x4fb402);return _0x22d8b3=_0x22d8b3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22d8b3=_0x22d8b3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22d8b3=_0x22d8b3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22d8b3=_0x22d8b3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22d8b3=_0x22d8b3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22d8b3=_0x22d8b3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22d8b3=_0x22d8b3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22d8b3=_0x22d8b3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22d8b3=_0x22d8b3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22d8b3=_0x22d8b3['replace'](/\n\n/g,'</p><p>'),_0x22d8b3=_0x22d8b3['replace'](/\n/g,'<br>'),'<p>'+_0x22d8b3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2743a0=new Uint8Array(0x10);crypto['getRandomValues'](_0x2743a0),_0x2743a0[0x6]=_0x2743a0[0x6]&0xf|0x40,_0x2743a0[0x8]=_0x2743a0[0x8]&0x3f|0x80;const _0x4dd9e5=Array['from'](_0x2743a0,_0x3e032d=>_0x3e032d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4dd9e5['slice'](0x0,0x8)+'-'+_0x4dd9e5['slice'](0x8,0xc)+'-'+_0x4dd9e5['slice'](0xc,0x10)+'-'+_0x4dd9e5['slice'](0x10,0x14)+'-'+_0x4dd9e5['slice'](0x14);}};export class CustomSelect{constructor(_0x584e12,_0x1efa2b={}){this['nativeSelect']=_0x584e12,this['options']=_0x1efa2b,this['isOpen']=![],this['selectedValue']=_0x584e12['value']||'',this['searchable']=_0x1efa2b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3598c6=document['createElement']('div');_0x3598c6['className']='custom-select';const _0x2533e9=document['createElement']('div');_0x2533e9['className']='custom-select-trigger',_0x2533e9['setAttribute']('tabindex','0'),_0x2533e9['setAttribute']('role','button'),_0x2533e9['setAttribute']('aria-haspopup','listbox');const _0x244806=document['createElement']('span');_0x244806['className']='custom-select-trigger-text';const _0xac8285=document['createElement']('span');_0xac8285['className']='custom-select-arrow',_0xac8285['textContent']='▼',_0x2533e9['appendChild'](_0x244806),_0x2533e9['appendChild'](_0xac8285);const _0x293357=document['createElement']('div');_0x293357['className']='custom-select-dropdown',_0x293357['setAttribute']('role','listbox');if(this['searchable']){const _0x16299c=document['createElement']('div');_0x16299c['className']='custom-select-search';const _0x56d4c3=document['createElement']('input');_0x56d4c3['type']='text',_0x56d4c3['className']='custom-select-search-input',_0x56d4c3['placeholder']='Type\x20to\x20search...',_0x56d4c3['setAttribute']('aria-label','Search\x20options'),_0x56d4c3['addEventListener']('input',_0x2fe5ab=>{this['searchQuery']=_0x2fe5ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x56d4c3['addEventListener']('keydown',_0x1c18c7=>{if(_0x1c18c7['key']==='Escape')_0x1c18c7['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1c18c7['key']==='Enter'){_0x1c18c7['preventDefault'](),_0x1c18c7['stopPropagation']();const _0x2b60c9=_0x293357['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2b60c9){const _0x4e769b=_0x2b60c9['getAttribute']('data-value');this['select'](_0x4e769b);}}}}),_0x16299c['appendChild'](_0x56d4c3),_0x293357['appendChild'](_0x16299c),this['searchInput']=_0x56d4c3;}const _0x387a05=document['createElement']('div');_0x387a05['className']='custom-select-options',_0x293357['appendChild'](_0x387a05),_0x3598c6['appendChild'](_0x2533e9),_0x3598c6['appendChild'](_0x293357),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3598c6,this['nativeSelect']),this['wrapper']=_0x3598c6,this['trigger']=_0x2533e9,this['triggerText']=_0x244806,this['dropdown']=_0x293357,this['optionsContainer']=_0x387a05,_0x2533e9['addEventListener']('click',()=>this['toggle']()),_0x2533e9['addEventListener']('keydown',_0xf8d3bf=>this['handleKeydown'](_0xf8d3bf)),document['addEventListener']('click',_0x29c3a4=>{!_0x3598c6['contains'](_0x29c3a4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x515eab=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x515eab['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x26a222=new MutationObserver(()=>{this['updateDisabledState']();});_0x26a222['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x540be3=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x540be3['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x576f0d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x576f0d),this['trigger']['setAttribute']('aria-disabled',_0x576f0d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x576f0d?'-1':'0'),_0x576f0d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x51bb13=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x3dd48e=_0x51bb13['filter'](_0x282bc2=>!_0x282bc2['disabled']&&!_0x282bc2['hidden']);_0x51bb13['forEach']((_0x5033ad,_0x46f45b)=>{const _0x402b89=document['createElement']('div');_0x402b89['className']='custom-select-option',_0x402b89['textContent']=_0x5033ad['textContent'],_0x402b89['setAttribute']('data-value',_0x5033ad['value']),_0x402b89['setAttribute']('data-index',_0x46f45b),_0x402b89['setAttribute']('role','option'),_0x5033ad['disabled']?_0x402b89['classList']['add']('disabled'):_0x402b89['addEventListener']('click',()=>this['select'](_0x5033ad['value'])),_0x5033ad['value']===this['selectedValue']&&_0x402b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x402b89),this['allOptions']['push']({'element':_0x402b89,'text':_0x5033ad['textContent']['toLowerCase'](),'value':_0x5033ad['value'],'disabled':_0x5033ad['disabled']});});if(this['searchable']&&this['searchInput']){const _0xbb1852=this['searchInput']['parentElement'];_0x3dd48e['length']>0x3?_0xbb1852['style']['display']='':_0xbb1852['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x54c16a=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x5d88ff=>{if(!_0x54c16a||_0x5d88ff['disabled'])_0x5d88ff['element']['style']['display']='';else{const _0x1d93c4=_0x5d88ff['text']['includes'](_0x54c16a);_0x5d88ff['element']['style']['display']=_0x1d93c4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x235200){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x235200,this['nativeSelect']['value']=_0x235200;const _0x4571ec=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x4571ec),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x38fd18=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x38fd18&&(this['triggerText']['textContent']=_0x38fd18['textContent'],_0x38fd18['disabled']||_0x38fd18['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4a151e=>{_0x4a151e['getAttribute']('data-value')===this['selectedValue']?_0x4a151e['classList']['add']('selected'):_0x4a151e['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 _0x889f4b=window['getComputedStyle'](this['dropdown']);if(_0x889f4b['position']==='fixed'){const _0x1549e3=this['trigger']['getBoundingClientRect'](),_0x16cd38=parseInt(_0x889f4b['maxHeight'])||0xc8,_0x550481=window['innerHeight'],_0x313251=_0x550481-_0x1549e3['bottom'],_0x3055bd=_0x1549e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x2e781f;_0x313251<_0x16cd38&&_0x3055bd>_0x313251?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x550481-_0x1549e3['top']+'px',_0x2e781f=Math['min'](_0x16cd38,_0x3055bd-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1549e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x2e781f=Math['min'](_0x16cd38,_0x313251-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px');if(this['optionsContainer']){let _0x25fcfa=_0x2e781f;if(this['searchInput']){const _0x165c5f=this['searchInput']['parentElement'];_0x165c5f&&(_0x25fcfa-=_0x165c5f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x25fcfa)+'px';}this['dropdown']['style']['left']=_0x1549e3['left']+'px',this['dropdown']['style']['width']=_0x1549e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52ec90=this['searchInput']['parentElement'];_0x52ec90&&_0x52ec90['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'](_0x3d1dc3){if(this['nativeSelect']['disabled'])return;if(_0x3d1dc3['key']==='Enter'||_0x3d1dc3['key']==='\x20')_0x3d1dc3['preventDefault'](),this['toggle']();else _0x3d1dc3['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2ccfcf='\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',_0x2ccfcf),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x42fc3f=document['getElementById']('confirm-dialog-close'),_0x1e6d67=document['getElementById']('confirm-dialog-cancel'),_0x1c8b5b=document['getElementById']('confirm-dialog-confirm'),_0x7f57a2=this['_modal']['querySelector']('.modal-overlay');_0x42fc3f['addEventListener']('click',()=>this['_resolve'](![])),_0x1e6d67['addEventListener']('click',()=>this['_resolve'](![])),_0x1c8b5b['addEventListener']('click',()=>this['_resolve'](!![])),_0x7f57a2['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x50773e=>{if(_0x50773e['key']==='Escape')_0x50773e['preventDefault'](),this['_resolve'](![]);else _0x50773e['key']==='Enter'&&(_0x50773e['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x346bbd,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x34be55=>{this['_resolvePromise']=_0x34be55,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x346bbd;const _0x2b1bcf=document['getElementById']('confirm-dialog-cancel'),_0x1ffc71=document['getElementById']('confirm-dialog-confirm');_0x2b1bcf['textContent']=cancelText,_0x1ffc71['textContent']=confirmText,_0x1ffc71['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1ffc71['focus']();});},'_resolve'(_0x358d3f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x358d3f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x141111,_0x1b64d5={}){this['container']=_0x141111,this['options']={'placeholder':_0x1b64d5['placeholder']||'Type\x20to\x20search...','maxItems':_0x1b64d5['maxItems']||0x64,'loadItems':_0x1b64d5['loadItems']||(async()=>[]),'renderItem':_0x1b64d5['renderItem']||(_0x593557=>({'primary':String(_0x593557),'secondary':''})),'onSelect':_0x1b64d5['onSelect']||(()=>{}),'filterItems':_0x1b64d5['filterItems']||null,'getItemValue':_0x1b64d5['getItemValue']||(_0x1d0482=>_0x1d0482),'sortItems':_0x1b64d5['sortItems']||null,'debounceMs':_0x1b64d5['debounceMs']||0xc8,'minCharsForSearch':_0x1b64d5['minCharsForSearch']||0x0,'emptyMessage':_0x1b64d5['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1b64d5['loadingMessage']||'Loading...','preload':_0x1b64d5['preload']!==![],'searchMode':_0x1b64d5['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',_0x29735b=>this['onBlur'](_0x29735b)),this['input']['addEventListener']('input',_0x5e3d85=>this['onInput'](_0x5e3d85)),this['input']['addEventListener']('keydown',_0x199555=>this['onKeydown'](_0x199555)),this['clearBtn']['addEventListener']('mousedown',_0x37d126=>{_0x37d126['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x43ade5=>{_0x43ade5['preventDefault']();}),document['addEventListener']('click',_0xc7d31c=>{!this['wrapper']['contains'](_0xc7d31c['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(_0x294182){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x294182);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x466dc9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xe4717a){const _0x2b80c9=_0xe4717a['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b80c9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b80c9):this['loadAndShow'](_0x2b80c9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4108c8){switch(_0x4108c8['key']){case'ArrowDown':_0x4108c8['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4108c8['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4108c8['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4108c8['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c8e8e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5d3899=this['selectedIndex']+_0x5c8e8e;if(_0x5d3899>=0x0&&_0x5d3899<this['filteredItems']['length']){this['selectedIndex']=_0x5d3899,this['updateSelectionHighlight']();const _0xaddc73=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xaddc73[this['selectedIndex']]&&_0xaddc73[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4ab843=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4ab843['forEach']((_0x1b3e06,_0x1f7f1a)=>{_0x1b3e06['classList']['toggle']('keyboard-selected',_0x1f7f1a===this['selectedIndex']);});}async['loadAndShow'](_0x2db2ab){this['showLoading']();try{const _0x44af0a=await this['options']['loadItems'](_0x2db2ab);if(this['options']['searchMode']==='server'){let _0x3b42da=_0x44af0a;this['options']['sortItems']&&(_0x3b42da=this['options']['sortItems']([..._0x44af0a]));this['filteredItems']=_0x3b42da;const _0x13121a=this['filteredItems']['length']>=this['options']['maxItems'];_0x13121a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x13121a),this['open']();}else this['allItems']=_0x44af0a,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2db2ab);}catch(_0x14501f){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x14501f),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419a75){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419a75):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x23e326=this['filteredItems']['length']>=this['options']['maxItems'];_0x23e326&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23e326),this['open']();}['renderItems'](_0x279744){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']((_0x352472,_0x4beccd)=>{const _0x4809fa=document['createElement']('div');_0x4809fa['className']='autocomplete-select-item',_0x4809fa['setAttribute']('role','option'),_0x4809fa['setAttribute']('data-index',_0x4beccd);const _0x22bf2b=this['options']['renderItem'](_0x352472);let _0x4cbf4e='';_0x22bf2b['icon']&&(_0x4cbf4e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x22bf2b['iconClass']||'')+'\x22>'+_0x22bf2b['icon']+'</span>'),_0x4809fa['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4cbf4e+'\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'](_0x22bf2b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x22bf2b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x22bf2b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4809fa['addEventListener']('click',()=>{this['selectItem'](_0x352472);}),_0x4809fa['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4beccd,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4809fa);}),_0x279744?(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'](_0x530be6){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x530be6)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x510cd1){this['selectedItem']=_0x510cd1;const _0xe1a64f=this['options']['renderItem'](_0x510cd1);this['input']['value']=_0xe1a64f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x510cd1);}['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'](_0x5ba19a){if(_0x5ba19a){this['selectedItem']=_0x5ba19a;const _0x4d4127=this['options']['renderItem'](_0x5ba19a);this['input']['value']=_0x4d4127['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x57ffea){this['allItems']=_0x57ffea,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'](_0x3ed5eb){this['input']['placeholder']=_0x3ed5eb;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x56aa56=null){const _0x2c6bbf=document['getElementById']('admin-menu-container'),_0x11c762=document['getElementById']('admin-menu-btn'),_0x386884=document['getElementById']('admin-menu');if(!_0x2c6bbf||!_0x11c762||!_0x386884)return;try{!_0x56aa56&&(_0x56aa56=await API['getCurrentUser']());if(_0x56aa56){const _0x533d04=window['Permissions'],_0x4daa09=_0x533d04['hasServerPermission'](_0x56aa56,'*')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:manage')||_0x533d04['hasServerPermission'](_0x56aa56,'users:create')||_0x533d04['hasTeamPermission'](_0x56aa56,'teams:manage')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:view_details');if(!_0x4daa09)return;_0x2c6bbf['hidden']=![];if(!_0x533d04['hasServerPermission'](_0x56aa56,'*')){const _0x2a67e3=_0x386884['querySelectorAll']('.admin-menu-item');_0x2a67e3['forEach'](_0x217945=>{const _0x425597=_0x217945['querySelector']('.option-text')?.['textContent']?.['trim']();_0x425597==='Users'&&!_0x533d04['hasServerPermission'](_0x56aa56,'users:create')&&(_0x217945['hidden']=!![]),_0x425597==='Skills'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Settings'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Health'&&(_0x217945['hidden']=!![]),_0x425597==='Git\x20History'&&(_0x217945['hidden']=!![]),_0x425597==='Roles'&&(_0x217945['hidden']=!![]);});}_0x11c762['addEventListener']('click',_0x38a687=>{_0x38a687['stopPropagation']();const _0x1fa77c=document['getElementById']('actions-menu');if(_0x1fa77c)_0x1fa77c['hidden']=!![];_0x386884['hidden']=!_0x386884['hidden'];}),document['addEventListener']('click',_0x53d25f=>{!_0x386884['hidden']&&!_0x11c762['contains'](_0x53d25f['target'])&&!_0x386884['contains'](_0x53d25f['target'])&&(_0x386884['hidden']=!![]);}),document['addEventListener']('keydown',_0x77422d=>{_0x77422d['key']==='Escape'&&!_0x386884['hidden']&&(_0x386884['hidden']=!![]);});const _0x28c159=document['getElementById']('server-health-btn');_0x28c159&&_0x28c159['addEventListener']('click',async()=>{_0x386884['hidden']=!![];const {openServerHealthModal:_0x1097a9}=await import('./server-health.js');_0x1097a9();});}}catch(_0x431d7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x431d7f['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|