@profoundlogic/coderflow-server 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/coder-git-credential-helper +16 -0
- package/dist/base-image/sync-repos.sh +30 -1
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.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-container-init.js +1 -1
- package/dist/lib/task-context-usage.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/logs.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/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.css +95 -1
- package/dist/web-ui/public/admin.html +29 -1
- package/dist/web-ui/public/admin.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 +45 -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/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +45 -0
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +25 -2
- 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 _0x59b457=window['location']['pathname'],_0x1d57df=_0x59b457['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1d57df)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1d57df[0x1]),_0x1d57df[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x257203={}){const _0xa2dbb4=new URLSearchParams();_0x257203['userId']&&_0xa2dbb4['set']('userId',String(_0x257203['userId']));_0x257203['automation']&&_0xa2dbb4['set']('automation',String(_0x257203['automation']));const _0x4dfc63=API_BASE+'/tasks/stats'+(_0xa2dbb4['toString']()?'?'+_0xa2dbb4['toString']():''),_0x3b3837=await fetch(_0x4dfc63);if(!_0x3b3837['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3b3837['statusText']);return await _0x3b3837['json']();},async 'getTasks'(_0x3fde61={}){const _0x2bf758=new URLSearchParams();_0x3fde61['status']&&_0x2bf758['set']('status',String(_0x3fde61['status']));_0x3fde61['environment']&&_0x2bf758['set']('environment',String(_0x3fde61['environment']));_0x3fde61['automation']&&_0x2bf758['set']('automation',String(_0x3fde61['automation']));if(_0x3fde61['include']){const _0x474a5e=Array['isArray'](_0x3fde61['include'])?_0x3fde61['include']['join'](','):String(_0x3fde61['include']);_0x474a5e&&_0x2bf758['set']('include',_0x474a5e);}_0x3fde61['filter']&&_0x2bf758['set']('filter',String(_0x3fde61['filter']));_0x3fde61['page']&&_0x2bf758['set']('page',String(_0x3fde61['page']));_0x3fde61['limit']&&_0x2bf758['set']('limit',String(_0x3fde61['limit']));_0x3fde61['userId']&&_0x2bf758['set']('userId',String(_0x3fde61['userId']));_0x3fde61['search']&&_0x2bf758['set']('search',String(_0x3fde61['search']));_0x3fde61['includeChildTasks']&&_0x2bf758['set']('includeChildTasks','true');const _0xbd1ecd=API_BASE+'/tasks'+(_0x2bf758['toString']()?'?'+_0x2bf758['toString']():''),_0x463c4a=await fetch(_0xbd1ecd);if(!_0x463c4a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x463c4a['statusText']);return await _0x463c4a['json']();},async 'getAutomations'(_0x4b14fc={}){const _0x5a706a=new URLSearchParams();_0x4b14fc['environment']&&_0x5a706a['set']('environment',String(_0x4b14fc['environment']));const _0x42be1f=await fetch(API_BASE+'/api/automations'+(_0x5a706a['toString']()?'?'+_0x5a706a['toString']():''));if(!_0x42be1f['ok']){const _0x5e849d=await _0x42be1f['json']()['catch'](()=>({}));throw new Error(_0x5e849d['message']||_0x5e849d['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x42be1f['statusText']);}return await _0x42be1f['json']();},async 'getAutomation'(_0xc1cafa){const _0x47b579=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xc1cafa));if(!_0x47b579['ok']){const _0x2a3746=await _0x47b579['json']()['catch'](()=>({}));throw new Error(_0x2a3746['message']||_0x2a3746['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x47b579['statusText']);}return await _0x47b579['json']();},async 'createAutomation'(_0x33f98b){const _0x3b702e=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33f98b||{})});if(!_0x3b702e['ok']){const _0x324c04=await _0x3b702e['json']()['catch'](()=>({}));throw new Error(_0x324c04['message']||_0x324c04['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3b702e['statusText']);}return await _0x3b702e['json']();},async 'updateAutomation'(_0x4473a6,_0x2ea605){const _0x40143e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4473a6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ea605||{})});if(!_0x40143e['ok']){const _0x1e6613=await _0x40143e['json']()['catch'](()=>({}));throw new Error(_0x1e6613['message']||_0x1e6613['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x40143e['statusText']);}return await _0x40143e['json']();},async 'deleteAutomation'(_0x91337e){const _0x26d151=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x91337e),{'method':'DELETE'});if(!_0x26d151['ok']){const _0x4c89cd=await _0x26d151['json']()['catch'](()=>({}));throw new Error(_0x4c89cd['message']||_0x4c89cd['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x26d151['statusText']);}return await _0x26d151['json']();},async 'triggerAutomation'(_0x3a3891){const _0x105386=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3a3891)+'/trigger',{'method':'POST'});if(!_0x105386['ok']){const _0x2b1b0f=await _0x105386['json']()['catch'](()=>({}));throw new Error(_0x2b1b0f['message']||_0x2b1b0f['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x105386['statusText']);}return await _0x105386['json']();},async 'setAutomationEnabled'(_0x54f78c,_0x1f154c){const _0x424ffe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x54f78c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x1f154c})});if(!_0x424ffe['ok']){const _0x5c302b=await _0x424ffe['json']()['catch'](()=>({}));throw new Error(_0x5c302b['message']||_0x5c302b['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x424ffe['statusText']);}return await _0x424ffe['json']();},async 'getAutomationHistory'(_0x2a5c8f,_0x5dcfac=0x32){const _0x1a6374=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2a5c8f)+'/history?limit='+encodeURIComponent(String(_0x5dcfac)));if(!_0x1a6374['ok']){const _0x354d21=await _0x1a6374['json']()['catch'](()=>({}));throw new Error(_0x354d21['message']||_0x354d21['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1a6374['statusText']);}return await _0x1a6374['json']();},async 'getTask'(_0x309e63,_0x1bf91c={}){const _0x426838=new URLSearchParams();if(_0x1bf91c['include']){const _0x54bc2d=Array['isArray'](_0x1bf91c['include'])?_0x1bf91c['include']['join'](','):String(_0x1bf91c['include']);if(_0x54bc2d)_0x426838['set']('include',_0x54bc2d);}const _0x45ee09=await fetch(API_BASE+'/tasks/'+_0x309e63+(_0x426838['toString']()?'?'+_0x426838['toString']():''));if(!_0x45ee09['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x45ee09['statusText']);return await _0x45ee09['json']();},async 'getTaskResults'(_0x227ff9){const _0x57985c=await fetch(API_BASE+'/tasks/'+_0x227ff9+'/results');if(!_0x57985c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57985c['statusText']);return await _0x57985c['json']();},async 'getTaskPatches'(_0x599807){const _0x274421=await fetch(API_BASE+'/tasks/'+_0x599807+'/patches');if(!_0x274421['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x274421['statusText']);return await _0x274421['json']();},async 'getTaskAttachments'(_0x261cbe){const _0x39fbc8=await fetch(API_BASE+'/tasks/'+_0x261cbe+'/attachments');if(!_0x39fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x39fbc8['statusText']);return await _0x39fbc8['json']();},async 'uploadAttachments'(_0x1b7474,_0x5073eb){const _0x8416ec=new FormData();for(const _0xbdd8ab of _0x5073eb){_0x8416ec['append']('attachments',_0xbdd8ab);}const _0x4d0a83=await fetch(API_BASE+'/tasks/'+_0x1b7474+'/attachments',{'method':'POST','body':_0x8416ec});if(!_0x4d0a83['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4d0a83['statusText']);return await _0x4d0a83['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44453c=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44453c['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44453c['json']();}catch(_0x326241){return{'available':![],'reason':_0x326241['message']};}},async 'generateTaskName'(_0x2d4d0d){try{const _0x3ae026=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d4d0d})});return await _0x3ae026['json']();}catch(_0x2bea8b){return{'success':![],'error':_0x2bea8b['message']};}},async 'createTask'(_0x12e9a6){let _0x5035a4,_0x3ecc0d={};if(_0x12e9a6['files']&&_0x12e9a6['files']['length']>0x0){const _0x2089c8=new FormData();for(const [_0x47e853,_0x3faf55]of Object['entries'](_0x12e9a6)){if(_0x47e853!=='files'){if(_0x3faf55==null)continue;typeof _0x3faf55==='object'?_0x2089c8['append'](_0x47e853,JSON['stringify'](_0x3faf55)):_0x2089c8['append'](_0x47e853,String(_0x3faf55));}}for(const _0x59d4ff of _0x12e9a6['files']){_0x2089c8['append']('attachments',_0x59d4ff);}_0x5035a4=_0x2089c8;}else _0x3ecc0d['Content-Type']='application/json',_0x5035a4=JSON['stringify'](_0x12e9a6);const _0x32423d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ecc0d,'body':_0x5035a4});if(!_0x32423d['ok']){const _0x351d19=await _0x32423d['json'](),_0x22f155=new Error(_0x351d19['error']||'Failed\x20to\x20create\x20task:\x20'+_0x32423d['statusText']),{message:_0x102744,..._0x49a6f2}=_0x351d19;Object['assign'](_0x22f155,_0x49a6f2);throw _0x22f155;}return await _0x32423d['json']();},async 'createTestTask'(_0x5d81a8){const _0x191492=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d81a8)});if(!_0x191492['ok']){const _0x404cfa=await _0x191492['json']();throw new Error(_0x404cfa['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x191492['statusText']);}return await _0x191492['json']();},async 'createEphemeralTest'(_0x5f5877){const _0x356d54=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f5877)});if(!_0x356d54['ok']){const _0x38ed83=await _0x356d54['json']();throw new Error(_0x38ed83['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x356d54['statusText']);}return await _0x356d54['json']();},async 'createDeployTask'(_0x4fd364){const _0x4d7f9b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd364)});if(!_0x4d7f9b['ok']){const _0x2e18cc=await _0x4d7f9b['json']();throw new Error(_0x2e18cc['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4d7f9b['statusText']);}return await _0x4d7f9b['json']();},async 'getEnvironments'(){const _0x2ee95a=await fetch(API_BASE+'/environments');if(!_0x2ee95a['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ee95a['statusText']);return await _0x2ee95a['json']();},async 'getEnvironment'(_0xc5f43c){const _0x4822a9=await fetch(API_BASE+'/environments/'+_0xc5f43c);if(!_0x4822a9['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4822a9['statusText']);return await _0x4822a9['json']();},async 'getEnvironmentRepoHistory'(_0x5a2871,_0x396e68,_0x57958d={}){if(!_0x5a2871||!_0x396e68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a72d8=new URLSearchParams();if(_0x57958d['limit'])_0x3a72d8['set']('limit',String(_0x57958d['limit']));if(_0x57958d['offset'])_0x3a72d8['set']('offset',String(_0x57958d['offset']));if(_0x57958d['search'])_0x3a72d8['set']('search',String(_0x57958d['search']));if(_0x57958d['branch'])_0x3a72d8['set']('branch',String(_0x57958d['branch']));const _0x2d099a=API_BASE+'/environments/'+encodeURIComponent(_0x5a2871)+'/repos/'+encodeURIComponent(_0x396e68)+'/git/history',_0x3e1236=await fetch(''+_0x2d099a+(_0x3a72d8['toString']()?'?'+_0x3a72d8['toString']():''));if(!_0x3e1236['ok']){const _0x19e976=await _0x3e1236['json']()['catch'](()=>({}));throw new Error(_0x19e976['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e1236['statusText']);}return await _0x3e1236['json']();},async 'getEnvironmentRepoCommit'(_0x35b37e,_0x7f4b6,_0x19e405){if(!_0x35b37e||!_0x7f4b6||!_0x19e405)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x16ea90=API_BASE+'/environments/'+encodeURIComponent(_0x35b37e)+'/repos/'+encodeURIComponent(_0x7f4b6)+'/git/commits/'+encodeURIComponent(_0x19e405),_0x3b5c5a=await fetch(_0x16ea90);if(!_0x3b5c5a['ok']){const _0x47501e=await _0x3b5c5a['json']()['catch'](()=>({}));throw new Error(_0x47501e['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3b5c5a['statusText']);}return await _0x3b5c5a['json']();},async 'getEnvironmentRepoBranches'(_0x1ec212,_0x312fe1){if(!_0x1ec212||!_0x312fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1acf05=API_BASE+'/environments/'+encodeURIComponent(_0x1ec212)+'/repos/'+encodeURIComponent(_0x312fe1)+'/git/branches',_0x33384a=await fetch(_0x1acf05);if(!_0x33384a['ok']){const _0x51d942=await _0x33384a['json']()['catch'](()=>({}));throw new Error(_0x51d942['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x33384a['statusText']);}return await _0x33384a['json']();},async 'revertEnvironmentRepoCommit'(_0x2ec410,_0x5ad7cf,_0xf620cf,_0x31eab1={}){if(!_0x2ec410||!_0x5ad7cf||!_0xf620cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x416604=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2ec410)+'/repos/'+encodeURIComponent(_0x5ad7cf)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xf620cf,..._0x31eab1})});if(!_0x416604['ok']){const _0x49bcb3=await _0x416604['json']()['catch'](()=>({}));throw new Error(_0x49bcb3['message']||_0x49bcb3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x416604['statusText']);}return await _0x416604['json']();},async 'getTemplates'(_0x4cf444={}){const _0x521da9=new URLSearchParams();if(_0x4cf444['include']){const _0x27d7bd=Array['isArray'](_0x4cf444['include'])?_0x4cf444['include']['join'](','):String(_0x4cf444['include']);if(_0x27d7bd)_0x521da9['set']('include',_0x27d7bd);}const _0x59542a=await fetch(API_BASE+'/templates'+(_0x521da9['toString']()?'?'+_0x521da9['toString']():''));if(!_0x59542a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x59542a['statusText']);return await _0x59542a['json']();},async 'getTemplatesForEnvironment'(_0x28d007,_0x12f399={}){if(!_0x28d007)throw new Error('Environment\x20name\x20is\x20required');const _0x196a0d=new URLSearchParams();if(_0x12f399['include']){const _0x52ea19=Array['isArray'](_0x12f399['include'])?_0x12f399['include']['join'](','):String(_0x12f399['include']);if(_0x52ea19)_0x196a0d['set']('include',_0x52ea19);}const _0x5a032a=await fetch(API_BASE+'/templates/'+_0x28d007+(_0x196a0d['toString']()?'?'+_0x196a0d['toString']():''));if(!_0x5a032a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x28d007+':\x20'+_0x5a032a['statusText']);return await _0x5a032a['json']();},async 'getTemplate'(_0x38bdc7,_0x426fd6,_0x3c6b09={}){if(!_0x38bdc7||!_0x426fd6)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xcd0a2e=new URLSearchParams();if(_0x3c6b09['include']){const _0x2a0d9a=Array['isArray'](_0x3c6b09['include'])?_0x3c6b09['include']['join'](','):String(_0x3c6b09['include']);if(_0x2a0d9a)_0xcd0a2e['set']('include',_0x2a0d9a);}const _0x366b0f=await fetch(API_BASE+'/templates/'+_0x38bdc7+'/'+_0x426fd6+(_0xcd0a2e['toString']()?'?'+_0xcd0a2e['toString']():''));if(!_0x366b0f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x366b0f['statusText']);return await _0x366b0f['json']();},async 'getTaskLogs'(_0x3b5b4f,_0x5488df={}){if(!_0x3b5b4f)throw new Error('Task\x20ID\x20is\x20required');const _0x1dcfca=new URLSearchParams();_0x5488df['tail']&&_0x1dcfca['set']('tail',String(_0x5488df['tail']));const _0x3f3fdb=await fetch(API_BASE+'/tasks/'+_0x3b5b4f+'/logs'+(_0x1dcfca['toString']()?'?'+_0x1dcfca['toString']():''));if(!_0x3f3fdb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3f3fdb['statusText']);return await _0x3f3fdb['text']();},async 'getContainers'(){const _0x99649e=await fetch(API_BASE+'/containers');if(!_0x99649e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x99649e['statusText']);return await _0x99649e['json']();},async 'getContainer'(_0x3aa52b){const _0x15f556=await fetch(API_BASE+'/containers/'+_0x3aa52b);if(!_0x15f556['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x15f556['statusText']);return await _0x15f556['json']();},async 'startInteractiveContainer'(_0x5df843){const _0x345e73=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5df843)});if(!_0x345e73['ok']){const _0x2d6c2a=await _0x345e73['json']()['catch'](()=>({}));throw new Error(_0x2d6c2a['message']||'Failed\x20to\x20start\x20container:\x20'+_0x345e73['statusText']);}return await _0x345e73['json']();},async 'startContainerCodeServer'(_0x26c6ca,_0x309dec={}){if(!_0x26c6ca)throw new Error('Container\x20ID\x20is\x20required');const _0x36f5c0=new URLSearchParams();_0x309dec['theme']&&_0x36f5c0['set']('theme',_0x309dec['theme']);const _0x1e4607=await fetch(API_BASE+'/containers/'+_0x26c6ca+'/code-server'+(_0x36f5c0['toString']()?'?'+_0x36f5c0['toString']():'')),_0x13a2be=await _0x1e4607['json']()['catch'](()=>({}));if(!_0x1e4607['ok'])throw new Error(_0x13a2be['message']||_0x13a2be['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x1e4607['statusText']);return _0x13a2be;},async 'stopContainer'(_0x266520){const _0x3265ab=await fetch(API_BASE+'/containers/'+_0x266520,{'method':'DELETE'});if(!_0x3265ab['ok']){const _0xc56c76=await _0x3265ab['json']()['catch'](()=>({}));throw new Error(_0xc56c76['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3265ab['statusText']);}return await _0x3265ab['json']();},async 'stopTask'(_0xba540e){if(!_0xba540e)throw new Error('Task\x20ID\x20is\x20required');const _0x40c748=await fetch(API_BASE+'/tasks/'+_0xba540e+'/stop',{'method':'POST'});if(!_0x40c748['ok']){const _0x5db904=await _0x40c748['json']()['catch'](()=>({}));throw new Error(_0x5db904['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x40c748['statusText']);}return await _0x40c748['json']();},async 'interruptTask'(_0x4f387c){if(!_0x4f387c)throw new Error('Task\x20ID\x20is\x20required');const _0x596e4c=await fetch(API_BASE+'/tasks/'+_0x4f387c+'/interrupt',{'method':'POST'});if(!_0x596e4c['ok']){const _0xa154c5=await _0x596e4c['json']()['catch'](()=>({}));throw new Error(_0xa154c5['error']||_0xa154c5['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x596e4c['statusText']);}return await _0x596e4c['json']();},async 'startTask'(_0xa539a0){if(!_0xa539a0)throw new Error('Task\x20ID\x20is\x20required');const _0xf34e98=await fetch(API_BASE+'/tasks/'+_0xa539a0+'/start',{'method':'POST'});if(!_0xf34e98['ok']){const _0x1a9527=await _0xf34e98['json']()['catch'](()=>({}));throw new Error(_0x1a9527['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf34e98['statusText']);}return await _0xf34e98['json']();},async 'deleteTask'(_0x32adfd){if(!_0x32adfd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d19c7=await fetch(API_BASE+'/tasks/'+_0x32adfd,{'method':'DELETE'});if(!_0x4d19c7['ok']){const _0x2581d9=await _0x4d19c7['json']()['catch'](()=>({}));throw new Error(_0x2581d9['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4d19c7['statusText']);}return await _0x4d19c7['json']();},async 'refreshTasksFromDisk'(){const _0x514e3c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x514e3c['ok']){const _0x58d5e2=await _0x514e3c['json']()['catch'](()=>({}));throw new Error(_0x58d5e2['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x514e3c['statusText']);}return await _0x514e3c['json']();},async 'approveTask'(_0x2fc8fc,_0x432d02={}){if(!_0x2fc8fc)throw new Error('Task\x20ID\x20is\x20required');const _0x31334d={'commit_message':_0x432d02['commit_message']||'','pull':_0x432d02['pull']??![],'push':_0x432d02['push']??![]};_0x432d02['new_branch']&&(_0x31334d['new_branch']=_0x432d02['new_branch']);const _0x13c1b8=await fetch(API_BASE+'/tasks/'+_0x2fc8fc+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31334d)});if(!_0x13c1b8['ok']){const _0x25ab56=await _0x13c1b8['json']()['catch'](()=>({}));let _0x367a18=_0x25ab56['error']||_0x25ab56['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x13c1b8['statusText'];if(_0x25ab56['results']&&Array['isArray'](_0x25ab56['results'])){const _0x1037b8=_0x25ab56['results']['filter'](_0x38963f=>!_0x38963f['success']&&_0x38963f['error']);_0x1037b8['length']>0x0&&(_0x367a18=_0x1037b8[0x0]['error']);}throw new Error(_0x367a18);}return await _0x13c1b8['json']();},async 'getPullRequestInfo'(_0x585b15){if(!_0x585b15)throw new Error('Task\x20ID\x20is\x20required');const _0x1223a3=await fetch(API_BASE+'/tasks/'+_0x585b15+'/pull-request-info');if(!_0x1223a3['ok']){const _0x4adcb6=await _0x1223a3['json']()['catch'](()=>({}));throw new Error(_0x4adcb6['error']||_0x4adcb6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1223a3['statusText']);}return await _0x1223a3['json']();},async 'createPullRequests'(_0x3691b4,_0x5b8fd8){if(!_0x3691b4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b8fd8||!Array['isArray'](_0x5b8fd8))throw new Error('repos\x20array\x20is\x20required');const _0x449c80=await fetch(API_BASE+'/tasks/'+_0x3691b4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x5b8fd8})});if(!_0x449c80['ok']){const _0x286acf=await _0x449c80['json']()['catch'](()=>({}));let _0x2fc2b7=_0x286acf['error']||_0x286acf['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x449c80['statusText'];if(_0x286acf['results']&&Array['isArray'](_0x286acf['results'])){const _0x179a8c=_0x286acf['results']['filter'](_0x5b8369=>!_0x5b8369['success']&&_0x5b8369['error']);_0x179a8c['length']>0x0&&(_0x2fc2b7=_0x179a8c[0x0]['error']);}throw new Error(_0x2fc2b7);}return await _0x449c80['json']();},async 'syncRepos'(_0xb700e6){if(!_0xb700e6)throw new Error('Task\x20ID\x20is\x20required');const _0x54f935=await fetch(API_BASE+'/tasks/'+_0xb700e6+'/sync-repos',{'method':'POST'});if(!_0x54f935['ok']){const _0x3a4f8c=await _0x54f935['json']()['catch'](()=>({}));throw new Error(_0x3a4f8c['error']||_0x3a4f8c['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x54f935['statusText']);}return await _0x54f935['json']();},async 'getIbmiSyncInfo'(_0x1494c6){if(!_0x1494c6)throw new Error('Task\x20ID\x20is\x20required');const _0x1d3fd6=await fetch(API_BASE+'/tasks/'+_0x1494c6+'/ibmi-sync-info');if(!_0x1d3fd6['ok']){const _0x223e65=await _0x1d3fd6['json']()['catch'](()=>({}));throw new Error(_0x223e65['error']||_0x223e65['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1d3fd6['json']();},async 'getSyncFiles'(_0x2c464a){if(!_0x2c464a)throw new Error('Task\x20ID\x20is\x20required');const _0x47fe8f=await fetch(API_BASE+'/tasks/'+_0x2c464a+'/sync-to-ibmi/files');if(!_0x47fe8f['ok']){const _0x61114b=await _0x47fe8f['json']()['catch'](()=>({}));throw new Error(_0x61114b['error']||_0x61114b['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x47fe8f['json']();},async 'syncToIbmi'(_0xc135db,_0x5beee3,_0xa075dd=null,_0x309931=null,_0x70e23d=null){if(!_0xc135db)throw new Error('Task\x20ID\x20is\x20required');const _0x36ee86={'library':_0x5beee3};if(_0xa075dd)_0x36ee86['user']=_0xa075dd;if(_0x309931)_0x36ee86['password']=_0x309931;if(_0x70e23d)_0x36ee86['files']=_0x70e23d;const _0xa2759d=await fetch(API_BASE+'/tasks/'+_0xc135db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36ee86)});if(!_0xa2759d['ok']){const _0x1c210b=await _0xa2759d['json']()['catch'](()=>({}));throw new Error(_0x1c210b['error']||_0x1c210b['message']||'Sync\x20failed');}return await _0xa2759d['json']();},async 'getIbmiSyncLog'(_0x57ef16){if(!_0x57ef16)throw new Error('Task\x20ID\x20is\x20required');const _0x4fde32=await fetch(API_BASE+'/tasks/'+_0x57ef16+'/ibmi-sync-log');if(!_0x4fde32['ok']){const _0x25b6b2=await _0x4fde32['json']()['catch'](()=>({}));throw new Error(_0x25b6b2['error']||_0x25b6b2['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4fde32['json']();},async 'pullChanges'(_0x71dec7){if(!_0x71dec7)throw new Error('Task\x20ID\x20is\x20required');const _0x128be7=await fetch(API_BASE+'/tasks/'+_0x71dec7+'/pull-changes',{'method':'POST'});if(!_0x128be7['ok']){const _0x27db39=await _0x128be7['json']()['catch'](()=>({}));throw new Error(_0x27db39['error']||_0x27db39['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x128be7['statusText']);}return await _0x128be7['json']();},async 'readFile'(_0x5a0a3e,_0x4519d5){if(!_0x5a0a3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4519d5)throw new Error('File\x20path\x20is\x20required');const _0x47ccba=await fetch(API_BASE+'/tasks/'+_0x5a0a3e+'/files?path='+encodeURIComponent(_0x4519d5));if(!_0x47ccba['ok']){const _0x33a6b0=await _0x47ccba['json']()['catch'](()=>({}));throw new Error(_0x33a6b0['error']||_0x33a6b0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x47ccba['statusText']);}return await _0x47ccba['json']();},'getTaskFileDownloadUrl'(_0x2b8fb2,_0x104018){if(!_0x2b8fb2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x104018)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2b8fb2+'/files/download?path='+encodeURIComponent(_0x104018);},async 'writeFile'(_0x374231,_0x41fc0a,_0x4ff265){if(!_0x374231)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41fc0a)throw new Error('File\x20path\x20is\x20required');if(_0x4ff265===undefined)throw new Error('Content\x20is\x20required');const _0x308355=await fetch(API_BASE+'/tasks/'+_0x374231+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x41fc0a,'content':_0x4ff265})});if(!_0x308355['ok']){const _0x488a75=await _0x308355['json']()['catch'](()=>({}));throw new Error(_0x488a75['error']||_0x488a75['message']||'Failed\x20to\x20write\x20file:\x20'+_0x308355['statusText']);}return await _0x308355['json']();},async 'uploadTaskFiles'(_0x58d2f5,_0x5a079e,_0x2274ef){if(!_0x58d2f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a079e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2274ef||_0x2274ef['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x410970=new FormData();_0x410970['append']('targetDir',_0x5a079e);for(const _0x22b1ed of _0x2274ef){_0x410970['append']('files',_0x22b1ed,_0x22b1ed['name']);}const _0x6493a1=await fetch(API_BASE+'/tasks/'+_0x58d2f5+'/files/upload',{'method':'POST','body':_0x410970});if(!_0x6493a1['ok']){const _0x4ad73e=await _0x6493a1['json']()['catch'](()=>({}));throw new Error(_0x4ad73e['error']||_0x4ad73e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x6493a1['statusText']);}return await _0x6493a1['json']();},async 'createDirectory'(_0x191659,_0x19bd4a){if(!_0x191659)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19bd4a)throw new Error('Directory\x20path\x20is\x20required');const _0x3edda2=await fetch(API_BASE+'/tasks/'+_0x191659+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x19bd4a})});if(!_0x3edda2['ok']){const _0x2726d7=await _0x3edda2['json']()['catch'](()=>({}));throw new Error(_0x2726d7['error']||_0x2726d7['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3edda2['statusText']);}return await _0x3edda2['json']();},async 'renamePath'(_0x3131ef,_0x22097e,_0x282a83){if(!_0x3131ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22097e)throw new Error('Source\x20path\x20is\x20required');if(!_0x282a83)throw new Error('Destination\x20path\x20is\x20required');const _0x8b7a5b=await fetch(API_BASE+'/tasks/'+_0x3131ef+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22097e,'newPath':_0x282a83})});if(!_0x8b7a5b['ok']){const _0x349b9b=await _0x8b7a5b['json']()['catch'](()=>({}));throw new Error(_0x349b9b['error']||_0x349b9b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x8b7a5b['statusText']);}return await _0x8b7a5b['json']();},async 'deleteFile'(_0x5786a0,_0x292ac6){if(!_0x5786a0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x292ac6)throw new Error('File\x20path\x20is\x20required');const _0xfbeb88=await fetch(API_BASE+'/tasks/'+_0x5786a0+'/files?path='+encodeURIComponent(_0x292ac6),{'method':'DELETE'});if(!_0xfbeb88['ok']){const _0x20bd2e=await _0xfbeb88['json']()['catch'](()=>({}));throw new Error(_0x20bd2e['error']||_0x20bd2e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0xfbeb88['statusText']);}return await _0xfbeb88['json']();},async 'deleteDirectory'(_0x50e80d,_0xe77313){if(!_0x50e80d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe77313)throw new Error('Directory\x20path\x20is\x20required');const _0x4f97d6=await fetch(API_BASE+'/tasks/'+_0x50e80d+'/files/directory?path='+encodeURIComponent(_0xe77313),{'method':'DELETE'});if(!_0x4f97d6['ok']){const _0x208fb7=await _0x4f97d6['json']()['catch'](()=>({}));throw new Error(_0x208fb7['error']||_0x208fb7['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f97d6['statusText']);}return await _0x4f97d6['json']();},async 'discardFile'(_0x1c1deb,_0x2a44f4,_0x4b7ae9){if(!_0x1c1deb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2a44f4)throw new Error('File\x20path\x20is\x20required');if(!_0x4b7ae9)throw new Error('Repository\x20path\x20is\x20required');const _0x54de05=await fetch(API_BASE+'/tasks/'+_0x1c1deb+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2a44f4,'repoPath':_0x4b7ae9})});if(!_0x54de05['ok']){const _0x6f3d4b=await _0x54de05['json']()['catch'](()=>({}));throw new Error(_0x6f3d4b['error']||_0x6f3d4b['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x54de05['statusText']);}return await _0x54de05['json']();},async 'followUpTask'(_0x26630e,_0x4999a1={}){if(!_0x26630e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4999a1['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3126bd,_0x3f1bcf={};if(_0x4999a1['files']&&_0x4999a1['files']['length']>0x0){const _0x3fd0be=new FormData();_0x3fd0be['append']('instructions',_0x4999a1['instructions']);for(const _0x2d28a5 of _0x4999a1['files']){_0x3fd0be['append']('attachments',_0x2d28a5);}_0x3126bd=_0x3fd0be;}else _0x3f1bcf['Content-Type']='application/json',_0x3126bd=JSON['stringify']({'instructions':_0x4999a1['instructions']});const _0x202f86=await fetch(API_BASE+'/tasks/'+_0x26630e+'/follow-up',{'method':'POST','headers':_0x3f1bcf,'body':_0x3126bd});if(!_0x202f86['ok']){const _0x38b1ee=await _0x202f86['json']()['catch'](()=>({}));throw new Error(_0x38b1ee['error']||_0x38b1ee['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x202f86['statusText']);}return await _0x202f86['json']();},async 'getTaskRewindPoints'(_0x594a4e){if(!_0x594a4e)throw new Error('Task\x20ID\x20is\x20required');const _0x1633e4=await fetch(API_BASE+'/tasks/'+_0x594a4e+'/rewind-points');if(!_0x1633e4['ok']){const _0x1b5544=await _0x1633e4['json']()['catch'](()=>({}));throw new Error(_0x1b5544['error']||_0x1b5544['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1633e4['statusText']);}return await _0x1633e4['json']();},async 'rewindTask'(_0x5ab4b8,_0x304cc2={}){if(!_0x5ab4b8)throw new Error('Task\x20ID\x20is\x20required');const _0x4a6e5d=Number['isInteger'](_0x304cc2['targetFollowUpCount'])?_0x304cc2['targetFollowUpCount']:0x0,_0x45db5a={'targetFollowUpCount':_0x4a6e5d};typeof _0x304cc2['instructions']==='string'&&_0x304cc2['instructions']['trim']()&&(_0x45db5a['instructions']=_0x304cc2['instructions']['trim']());typeof _0x304cc2['rewindFiles']==='boolean'&&(_0x45db5a['rewindFiles']=_0x304cc2['rewindFiles']);const _0x2240ae=await fetch(API_BASE+'/tasks/'+_0x5ab4b8+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45db5a)});if(!_0x2240ae['ok']){const _0x1965e4=await _0x2240ae['json']()['catch'](()=>({}));throw new Error(_0x1965e4['error']||_0x1965e4['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2240ae['statusText']);}return await _0x2240ae['json']();},async 'login'(_0x4b7e6c,_0x267008){const _0x8d15fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4b7e6c,'password':_0x267008})});if(!_0x8d15fe['ok']){const _0x3b2a94=await _0x8d15fe['json']();throw new Error(_0x3b2a94['message']||'Login\x20failed');}return await _0x8d15fe['json']();},async 'logout'(){const _0x5b84f5=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5b84f5['ok']){const _0x37cb07=await _0x5b84f5['json']();throw new Error(_0x37cb07['message']||'Logout\x20failed');}return await _0x5b84f5['json']();},async 'getCurrentUser'(){const _0x230d9a=await fetch(API_BASE+'/auth/me');if(!_0x230d9a['ok'])throw new Error('Not\x20authenticated');const _0x279c58=await _0x230d9a['json']();return _0x279c58['user'];},async 'getRolesInfo'(){const _0x4664f2=await fetch(API_BASE+'/users/roles');if(!_0x4664f2['ok']){const _0x22a9d3=await _0x4664f2['json']();throw new Error(_0x22a9d3['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4664f2['json']();},async 'getUsers'(){const _0x1c8676=await fetch(API_BASE+'/users');if(!_0x1c8676['ok']){const _0x34fe5a=await _0x1c8676['json']();throw new Error(_0x34fe5a['message']||'Failed\x20to\x20get\x20users');}return await _0x1c8676['json']();},async 'getUser'(_0x206afd){const _0x1e7fff=await fetch(API_BASE+'/users/'+_0x206afd);if(!_0x1e7fff['ok']){const _0x3802b7=await _0x1e7fff['json']();throw new Error(_0x3802b7['message']||'Failed\x20to\x20get\x20user');}return await _0x1e7fff['json']();},async 'createUser'(_0x3bff15){const _0x324393=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bff15)});if(!_0x324393['ok']){const _0xcff111=await _0x324393['json']();throw new Error(_0xcff111['message']||'Failed\x20to\x20create\x20user');}return await _0x324393['json']();},async 'updateUser'(_0x4afda3,_0x5259c){const _0x4a7084=await fetch(API_BASE+'/users/'+_0x4afda3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5259c)});if(!_0x4a7084['ok']){const _0xb7348f=await _0x4a7084['json']();throw new Error(_0xb7348f['message']||'Failed\x20to\x20update\x20user');}return await _0x4a7084['json']();},async 'deleteUser'(_0x181315){const _0x4984cb=await fetch(API_BASE+'/users/'+_0x181315,{'method':'DELETE'});if(!_0x4984cb['ok']){const _0x4dd92d=await _0x4984cb['json']();throw new Error(_0x4dd92d['message']||'Failed\x20to\x20delete\x20user');}return await _0x4984cb['json']();},async 'stopAllContainers'(){const _0xc6649f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4dba23=await _0xc6649f['json']()['catch'](()=>({}));if(!_0xc6649f['ok'])throw new Error(_0x4dba23['message']||_0x4dba23['error']||'Failed\x20to\x20stop\x20containers');return _0x4dba23;},async 'removeStoppedContainers'(){const _0x27a37f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x9120aa=await _0x27a37f['json']()['catch'](()=>({}));if(!_0x27a37f['ok'])throw new Error(_0x9120aa['message']||_0x9120aa['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x9120aa;},async 'pruneDockerResources'(){const _0xb37caa=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x345367=await _0xb37caa['json']()['catch'](()=>({}));if(!_0xb37caa['ok'])throw new Error(_0x345367['message']||_0x345367['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x345367;},async 'getUpdateSettings'(){const _0x3503e6=await fetch(API_BASE+'/health/update-settings'),_0x67eaa7=await _0x3503e6['json']()['catch'](()=>({}));if(!_0x3503e6['ok'])throw new Error(_0x67eaa7['message']||_0x67eaa7['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x67eaa7;},async 'applyServerUpdate'(_0x5ea4f7){const _0x71ef1e=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x5ea4f7})}),_0x122118=await _0x71ef1e['json']()['catch'](()=>({}));if(!_0x71ef1e['ok']){const _0x102e59=new Error(_0x122118['message']||_0x122118['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x122118['output']!==undefined)_0x102e59['output']=_0x122118['output'];if(_0x122118['error']!==undefined)_0x102e59['commandError']=_0x122118['error'];throw _0x102e59;}return _0x122118;},async 'restartServer'(){const _0x8a7f53=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x3e1ec6=await _0x8a7f53['json']()['catch'](()=>({}));if(!_0x8a7f53['ok'])throw new Error(_0x3e1ec6['message']||_0x3e1ec6['error']||'Failed\x20to\x20restart\x20server');return _0x3e1ec6;},async 'createPasswordToken'(_0x239041,_0x248c0f='setup',_0x36dcca=![]){const _0x3baf45=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x239041,'type':_0x248c0f,'sendEmail':_0x36dcca})});if(!_0x3baf45['ok']){const _0xb6a024=await _0x3baf45['json']();throw new Error(_0xb6a024['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x3baf45['json']();},async 'getEmailConfig'(){const _0x13ca13=await fetch(API_BASE+'/password/email-config');if(!_0x13ca13['ok']){const _0x2df33b=await _0x13ca13['json']();throw new Error(_0x2df33b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x13ca13['json']();},async 'updateTaskName'(_0x301ffd,_0x51d944){const _0x970900=await fetch(API_BASE+'/tasks/'+_0x301ffd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x51d944})});if(!_0x970900['ok']){const _0xd12f47=await _0x970900['json']();throw new Error(_0xd12f47['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x970900['json']();},async 'pinTask'(_0x14af12,_0x5541c2,_0x399cf5=null){if(!_0x14af12)throw new Error('Task\x20ID\x20is\x20required');const _0x5e1c27={'pinned':_0x5541c2};_0x399cf5&&_0x399cf5['length']>0x0&&(_0x5e1c27['additionalTaskIds']=_0x399cf5);const _0x29bd02=await fetch(API_BASE+'/tasks/'+_0x14af12+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e1c27)});if(!_0x29bd02['ok']){const _0x1fc215=await _0x29bd02['json']();throw new Error(_0x1fc215['error']||'Failed\x20to\x20pin\x20task');}return await _0x29bd02['json']();},async 'setTaskWinner'(_0x1a868f,_0x6210cd,_0x323f11=[]){if(!_0x1a868f)throw new Error('Task\x20ID\x20is\x20required');const _0x56bbf4=await fetch(API_BASE+'/tasks/'+_0x1a868f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x6210cd,'siblings':_0x323f11})});if(!_0x56bbf4['ok']){const _0x1b23ad=await _0x56bbf4['json']();throw new Error(_0x1b23ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x56bbf4['json']();},async 'setTaskLoser'(_0x3bdcb9,_0x3d74f5){if(!_0x3bdcb9)throw new Error('Task\x20ID\x20is\x20required');const _0x3f2693=await fetch(API_BASE+'/tasks/'+_0x3bdcb9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d74f5})});if(!_0x3f2693['ok']){const _0x42937e=await _0x3f2693['json']();throw new Error(_0x42937e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3f2693['json']();},async 'createTaskGroup'(_0x2e85fd){const _0x172e56=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e85fd)});if(!_0x172e56['ok']){const _0x3dcde6=await _0x172e56['json']();throw new Error(_0x3dcde6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x172e56['json']();},async 'getTaskGroups'(_0x2a8e3c={}){const _0x3d0fb8=new URLSearchParams();if(_0x2a8e3c['userId'])_0x3d0fb8['set']('userId',String(_0x2a8e3c['userId']));if(_0x2a8e3c['status'])_0x3d0fb8['set']('status',String(_0x2a8e3c['status']));if(_0x2a8e3c['limit'])_0x3d0fb8['set']('limit',String(_0x2a8e3c['limit']));const _0x50004b=API_BASE+'/tasks/groups'+(_0x3d0fb8['toString']()?'?'+_0x3d0fb8['toString']():''),_0x4832a5=await fetch(_0x50004b);if(!_0x4832a5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4832a5['json']();},async 'getTaskGroup'(_0x29704b){const _0x58e38c=await fetch(API_BASE+'/tasks/groups/'+_0x29704b);if(!_0x58e38c['ok']){const _0x2f63e3=await _0x58e38c['json']();throw new Error(_0x2f63e3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x58e38c['json']();},async 'updateTaskGroup'(_0x5e98d8,_0x1bdf91,_0x332ad9){const _0x395c28=await fetch(API_BASE+'/tasks/'+_0x5e98d8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1bdf91,'groupIndex':_0x332ad9})});if(!_0x395c28['ok']){const _0x465936=await _0x395c28['json']();throw new Error(_0x465936['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x395c28['json']();},async 'removeTaskFromGroup'(_0xec4d93){return this['updateTaskGroup'](_0xec4d93,null,null);},async 'deleteTaskGroup'(_0x4f8da6,_0x58cde9=![]){const _0x3bbb37=_0x58cde9?'?deleteTasks=true':'',_0x28c7ad=await fetch(API_BASE+'/tasks/groups/'+_0x4f8da6+_0x3bbb37,{'method':'DELETE'});if(!_0x28c7ad['ok']){const _0x2f5c11=await _0x28c7ad['json']();throw new Error(_0x2f5c11['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3667bb,_0x3f33db){const _0x380af0=await fetch(API_BASE+'/tasks/groups/'+_0x3667bb+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f33db})});if(!_0x380af0['ok']){const _0x105902=await _0x380af0['json']();throw new Error(_0x105902['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x380af0['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3a7e59){if(!_0x3a7e59)throw new Error('Task\x20ID\x20is\x20required');const _0x4c0ca4=await fetch(API_BASE+'/tasks/'+_0x3a7e59+'/comments');if(!_0x4c0ca4['ok']){const _0x3d18a8=await _0x4c0ca4['json']()['catch'](()=>({}));throw new Error(_0x3d18a8['error']||'Failed\x20to\x20get\x20comments');}return await _0x4c0ca4['json']();},async 'addComment'(_0x1d09cb,_0x3d9e09){if(!_0x1d09cb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9e09)throw new Error('Comment\x20content\x20is\x20required');const _0x41e35b=await fetch(API_BASE+'/tasks/'+_0x1d09cb+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d9e09})});if(!_0x41e35b['ok']){const _0x46fc24=await _0x41e35b['json']()['catch'](()=>({}));throw new Error(_0x46fc24['error']||'Failed\x20to\x20add\x20comment');}return await _0x41e35b['json']();},async 'updateComment'(_0x14f2e7,_0xd8ee3c,_0x3d470d){if(!_0x14f2e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd8ee3c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3d470d)throw new Error('Comment\x20content\x20is\x20required');const _0x460ba4=await fetch(API_BASE+'/tasks/'+_0x14f2e7+'/comments/'+_0xd8ee3c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d470d})});if(!_0x460ba4['ok']){const _0x685ee4=await _0x460ba4['json']()['catch'](()=>({}));throw new Error(_0x685ee4['error']||'Failed\x20to\x20update\x20comment');}return await _0x460ba4['json']();},async 'deleteComment'(_0x38acb9,_0x17ddcd){if(!_0x38acb9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17ddcd)throw new Error('Comment\x20ID\x20is\x20required');const _0x50a36d=await fetch(API_BASE+'/tasks/'+_0x38acb9+'/comments/'+_0x17ddcd,{'method':'DELETE'});if(!_0x50a36d['ok']){const _0x103bc9=await _0x50a36d['json']()['catch'](()=>({}));throw new Error(_0x103bc9['error']||'Failed\x20to\x20delete\x20comment');}return await _0x50a36d['json']();},async 'createObjective'(_0x1122fc){const _0x46770a={'objective':!![],'name':_0x1122fc['name']||'','environment':_0x1122fc['environment']||null,'agents':_0x1122fc['agents']||[],'branches':_0x1122fc['branches']||{},'isPinned':_0x1122fc['isPinned']||![],'parentObjectiveId':_0x1122fc['parentObjectiveId']||null,'env_vars':_0x1122fc['envVars']||{},'parameters':{'instructions':_0x1122fc['instructions']||''},'files':_0x1122fc['files']||[],'jira':_0x1122fc['jira']||null};return this['createTask'](_0x46770a);},async 'updateObjective'(_0x34b8b0,_0x17640a,_0x94b334=[],_0x2c6e31=[]){let _0x5073ab,_0x1130d2={};const _0x13e0a1={..._0x17640a};_0x2c6e31&&_0x2c6e31['length']>0x0&&(_0x13e0a1['removeAttachments']=_0x2c6e31);if(_0x94b334&&_0x94b334['length']>0x0){const _0x48ec41=new FormData();for(const [_0x197a36,_0x3bc0f4]of Object['entries'](_0x13e0a1)){if(_0x3bc0f4==null)continue;typeof _0x3bc0f4==='object'?_0x48ec41['append'](_0x197a36,JSON['stringify'](_0x3bc0f4)):_0x48ec41['append'](_0x197a36,String(_0x3bc0f4));}for(const _0x3aebe9 of _0x94b334){_0x48ec41['append']('attachments',_0x3aebe9);}_0x5073ab=_0x48ec41;}else _0x1130d2['Content-Type']='application/json',_0x5073ab=JSON['stringify'](_0x13e0a1);const _0x1b5199=await fetch(API_BASE+'/tasks/'+_0x34b8b0,{'method':'PATCH','headers':_0x1130d2,'body':_0x5073ab});if(!_0x1b5199['ok']){const _0x38218d=await _0x1b5199['json']();throw new Error(_0x38218d['error']||'Failed\x20to\x20update\x20objective');}return await _0x1b5199['json']();},async 'deleteObjective'(_0x1aacd0){return this['deleteTask'](_0x1aacd0);},async 'launchObjective'(_0x267bbb,_0x1baf51={}){const _0x64f4a5=await fetch(API_BASE+'/tasks/'+_0x267bbb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1baf51)});if(!_0x64f4a5['ok']){const _0x25f1b2=await _0x64f4a5['json']();throw new Error(_0x25f1b2['error']||'Failed\x20to\x20launch\x20objective');}return await _0x64f4a5['json']();},async 'getObjectiveAttachments'(_0x4c4d64){return this['getTaskAttachments'](_0x4c4d64);},async 'createJudgeTask'({environment:_0x281e3b,judgeAgent:_0x586e07,groupId:_0x2800f9,taskIds:_0x5e71fc,judgeCustomInstructions:_0x8ad8a,isPinned:_0x2c4129}){const _0x3fab24=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x281e3b,'judgeAgent':_0x586e07,'groupId':_0x2800f9,'taskIds':_0x5e71fc,'judgeCustomInstructions':_0x8ad8a,'isPinned':_0x2c4129})});if(!_0x3fab24['ok']){const _0x4d63f9=await _0x3fab24['json']();throw new Error(_0x4d63f9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3fab24['json']();},async 'getJudgeTasks'(_0x1b5c0e){const _0xee795f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b5c0e));if(!_0xee795f['ok']){const _0x43ed82=await _0xee795f['json']();throw new Error(_0x43ed82['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xee795f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5aab58,_0x27df70,_0x395aef=''){const _0x525742=await fetch(API_BASE+'/tasks/'+_0x5aab58+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x27df70,'customPreamble':_0x395aef})});if(!_0x525742['ok']){const _0x118bbf=await _0x525742['json']();throw new Error(_0x118bbf['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x525742['json']();},async 'getJiraConfig'(){const _0x3c04b7=await fetch(API_BASE+'/jira/config');if(!_0x3c04b7['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3c04b7['json']();},async 'getJiraIssue'(_0x1c1c32){const _0x50d250=await fetch(API_BASE+'/jira/issues/'+_0x1c1c32);if(!_0x50d250['ok']){const _0x2a3ffb=await _0x50d250['json']()['catch'](()=>({}));throw new Error(_0x2a3ffb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x50d250['statusText']);}return await _0x50d250['json']();},async 'searchJiraIssues'(_0x323ac6,_0x5481a6=0x14){const _0x373e54=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x323ac6,'maxResults':_0x5481a6})});if(!_0x373e54['ok']){const _0x18dec9=await _0x373e54['json']()['catch'](()=>({}));throw new Error(_0x18dec9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x373e54['statusText']);}return await _0x373e54['json']();},async 'postJiraComment'(_0x53242d,_0x3577d6){const _0x32819f=await fetch(API_BASE+'/jira/issues/'+_0x53242d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3577d6})});if(!_0x32819f['ok']){const _0x12aae2=await _0x32819f['json']()['catch'](()=>({}));throw new Error(_0x12aae2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x32819f['statusText']);}return await _0x32819f['json']();},async 'getJiraComments'(_0x28a6ff){const _0x506a71=await fetch(API_BASE+'/jira/issues/'+_0x28a6ff+'/comments');if(!_0x506a71['ok']){const _0x3ee6db=await _0x506a71['json']()['catch'](()=>({}));throw new Error(_0x3ee6db['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x506a71['statusText']);}return await _0x506a71['json']();},async 'promptParameter'({environment:_0x134c83,command:_0x590be8,parser:parser='json'}){const _0x5e2846=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x134c83,'command':_0x590be8,'parser':parser})});if(!_0x5e2846['ok']){const _0x114994=await _0x5e2846['json']()['catch'](()=>({}));throw new Error(_0x114994['message']||_0x114994['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5e2846['statusText']);}return await _0x5e2846['json']();},async 'promptParameterStream'(_0x5a4b6f,_0x1b1f7e){const _0x20efe3=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a4b6f)});if(!_0x20efe3['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x20efe3['statusText']);const _0x2d31e7=_0x20efe3['body']['getReader'](),_0xed2567=new TextDecoder();let _0x90a718='';return new Promise((_0x23ac5d,_0x20bb4d)=>{const _0x2849df=async()=>{try{const {done:_0x359b5f,value:_0x409783}=await _0x2d31e7['read']();if(_0x359b5f)return;_0x90a718+=_0xed2567['decode'](_0x409783,{'stream':!![]});const _0x4a6ff2=_0x90a718['split']('\x0a\x0a');_0x90a718=_0x4a6ff2['pop']()||'';for(const _0x1edc6c of _0x4a6ff2){if(!_0x1edc6c['trim']())continue;const _0x2b16e4=_0x1edc6c['split']('\x0a');let _0x483ac7='message',_0x510141='';for(const _0x294903 of _0x2b16e4){if(_0x294903['startsWith']('event:'))_0x483ac7=_0x294903['substring'](0x6)['trim']();else _0x294903['startsWith']('data:')&&(_0x510141=_0x294903['substring'](0x5)['trim']());}if(!_0x510141)continue;try{const _0x16a4c8=JSON['parse'](_0x510141);if(_0x483ac7==='progress'&&_0x1b1f7e)_0x1b1f7e(_0x16a4c8['stage'],_0x16a4c8['message']);else{if(_0x483ac7==='result'){_0x23ac5d(_0x16a4c8);return;}else{if(_0x483ac7==='error'){let _0x2eff4e=_0x16a4c8['message']||_0x16a4c8['error']||'Prompt\x20command\x20failed';_0x16a4c8['rawOutput']&&(_0x2eff4e+='\x0a\x0aRaw\x20output:\x0a'+_0x16a4c8['rawOutput']);_0x20bb4d(new Error(_0x2eff4e));return;}}}}catch(_0x37e5c8){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x37e5c8),console['error']('Event\x20type:',_0x483ac7),console['error']('Event\x20data:',_0x510141),console['error']('First\x20200\x20chars:',_0x510141['substring'](0x0,0xc8)),_0x20bb4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x37e5c8['message']+'\x0a\x0aData:\x20'+_0x510141['substring'](0x0,0x1f4)));return;}}_0x2849df();}catch(_0x57a081){_0x20bb4d(_0x57a081);}};_0x2849df();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2c2bbb){const _0x2e6074=await fetch(''+API_BASE+_0x2c2bbb);if(!_0x2e6074['ok']){const _0x707ce1=await _0x2e6074['json']()['catch'](()=>({'error':_0x2e6074['statusText']})),_0x338709=new Error(_0x707ce1['error']||_0x707ce1['message']||_0x2e6074['statusText']);if(_0x707ce1['detail']!==undefined)_0x338709['detail']=_0x707ce1['detail'];throw _0x338709;}return await _0x2e6074['json']();},async 'post'(_0xe9607f,_0x2e534e){const _0x5c1648=await fetch(''+API_BASE+_0xe9607f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e534e)});if(!_0x5c1648['ok']){const _0x2c5891=await _0x5c1648['json']()['catch'](()=>({'error':_0x5c1648['statusText']})),_0x39f4c5=new Error(_0x2c5891['error']||_0x2c5891['message']||_0x5c1648['statusText']);if(_0x2c5891['detail']!==undefined)_0x39f4c5['detail']=_0x2c5891['detail'];throw _0x39f4c5;}return await _0x5c1648['json']();},async 'put'(_0x49d442,_0x242ddf){const _0x27cfd8=await fetch(''+API_BASE+_0x49d442,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x242ddf)});if(!_0x27cfd8['ok']){const _0x53ac92=await _0x27cfd8['json']()['catch'](()=>({'error':_0x27cfd8['statusText']})),_0x303046=new Error(_0x53ac92['error']||_0x53ac92['message']||_0x27cfd8['statusText']);if(_0x53ac92['detail']!==undefined)_0x303046['detail']=_0x53ac92['detail'];throw _0x303046;}return await _0x27cfd8['json']();},async 'delete'(_0x1dab89,_0x5f52e0){const _0x1f52c9={'method':'DELETE'};_0x5f52e0&&(_0x1f52c9['headers']={'Content-Type':'application/json'},_0x1f52c9['body']=JSON['stringify'](_0x5f52e0));const _0x2995fe=await fetch(''+API_BASE+_0x1dab89,_0x1f52c9);if(!_0x2995fe['ok']){const _0x551c60=await _0x2995fe['json']()['catch'](()=>({'error':_0x2995fe['statusText']})),_0x432771=new Error(_0x551c60['error']||_0x551c60['message']||_0x2995fe['statusText']);if(_0x551c60['detail']!==undefined)_0x432771['detail']=_0x551c60['detail'];throw _0x432771;}return await _0x2995fe['json']();},async 'getSkills'(){const _0x4a1e0e=await fetch(API_BASE+'/skills');if(!_0x4a1e0e['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a1e0e['statusText']);return await _0x4a1e0e['json']();},async 'getSkill'(_0x40f20f){const _0x2a34ed=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40f20f));if(!_0x2a34ed['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2a34ed['statusText']);return await _0x2a34ed['json']();},async 'createSkill'(_0x1921e2){const _0x336f85=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1921e2)});if(!_0x336f85['ok']){const _0x4adbe9=await _0x336f85['json']()['catch'](()=>({'error':_0x336f85['statusText']})),_0x3daa32=new Error(_0x4adbe9['error']||_0x4adbe9['message']||_0x336f85['statusText']);if(_0x4adbe9['detail']!==undefined)_0x3daa32['detail']=_0x4adbe9['detail'];throw _0x3daa32;}return await _0x336f85['json']();},async 'updateSkill'(_0x4e614d,_0x2ff208){const _0x4f39d8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4e614d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ff208)});if(!_0x4f39d8['ok']){const _0xc0a64e=await _0x4f39d8['json']()['catch'](()=>({'error':_0x4f39d8['statusText']})),_0x5a8d13=new Error(_0xc0a64e['error']||_0xc0a64e['message']||_0x4f39d8['statusText']);if(_0xc0a64e['detail']!==undefined)_0x5a8d13['detail']=_0xc0a64e['detail'];throw _0x5a8d13;}return await _0x4f39d8['json']();},async 'deleteSkill'(_0x1db906){const _0x4c5f81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1db906),{'method':'DELETE'});if(!_0x4c5f81['ok']){const _0x16b557=await _0x4c5f81['json']()['catch'](()=>({'error':_0x4c5f81['statusText']})),_0x3682d5=new Error(_0x16b557['error']||_0x16b557['message']||_0x4c5f81['statusText']);if(_0x16b557['detail']!==undefined)_0x3682d5['detail']=_0x16b557['detail'];throw _0x3682d5;}return await _0x4c5f81['json']();},async 'getSkillFile'(_0x23be11,_0x2beda4){const _0x2bc4d4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23be11)+'/files/'+_0x2beda4);if(!_0x2bc4d4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2bc4d4['statusText']);return await _0x2bc4d4['json']();},async 'saveSkillFile'(_0xb4a597,_0x36d736,_0x228292){const _0x2d406b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xb4a597)+'/files/'+_0x36d736,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x228292})});if(!_0x2d406b['ok']){const _0x131eb1=await _0x2d406b['json']()['catch'](()=>({'error':_0x2d406b['statusText']})),_0x22a634=new Error(_0x131eb1['error']||_0x131eb1['message']||_0x2d406b['statusText']);if(_0x131eb1['detail']!==undefined)_0x22a634['detail']=_0x131eb1['detail'];throw _0x22a634;}return await _0x2d406b['json']();},async 'deleteSkillFile'(_0x52c667,_0x24a5ce){const _0x5e3ac0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52c667)+'/files/'+_0x24a5ce,{'method':'DELETE'});if(!_0x5e3ac0['ok']){const _0x31cc71=await _0x5e3ac0['json']()['catch'](()=>({'error':_0x5e3ac0['statusText']})),_0x293e57=new Error(_0x31cc71['error']||_0x31cc71['message']||_0x5e3ac0['statusText']);if(_0x31cc71['detail']!==undefined)_0x293e57['detail']=_0x31cc71['detail'];throw _0x293e57;}return await _0x5e3ac0['json']();},async 'pullSkills'(){const _0x60359=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x60359['ok']){const _0xc2a23=await _0x60359['json']()['catch'](()=>({'error':_0x60359['statusText']})),_0x2402de=new Error(_0xc2a23['error']||_0xc2a23['message']||_0x60359['statusText']);if(_0xc2a23['detail']!==undefined)_0x2402de['detail']=_0xc2a23['detail'];throw _0x2402de;}return await _0x60359['json']();},async 'commitSkills'(_0x5c08db,_0x53149c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x53149c,_0x4649ef=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5c08db,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4649ef['ok']){const _0xd32719=await _0x4649ef['json']()['catch'](()=>({'error':_0x4649ef['statusText']})),_0x1bea37=new Error(_0xd32719['error']||_0xd32719['message']||_0x4649ef['statusText']);if(_0xd32719['detail']!==undefined)_0x1bea37['detail']=_0xd32719['detail'];throw _0x1bea37;}return await _0x4649ef['json']();},async 'discardSkillsChanges'(){const _0x5be332=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5be332['ok']){const _0x2ced11=await _0x5be332['json']()['catch'](()=>({'error':_0x5be332['statusText']})),_0xba4535=new Error(_0x2ced11['error']||_0x2ced11['message']||_0x5be332['statusText']);if(_0x2ced11['detail']!==undefined)_0xba4535['detail']=_0x2ced11['detail'];throw _0xba4535;}return await _0x5be332['json']();},async 'getSkillCatalog'(){const _0x239d68=await fetch(API_BASE+'/external-skills/catalog');if(!_0x239d68['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x239d68['statusText']);return await _0x239d68['json']();},async 'getImportedSkillsRegistry'(){const _0x4490b9=await fetch(API_BASE+'/external-skills/registry');if(!_0x4490b9['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4490b9['statusText']);return await _0x4490b9['json']();},async 'importCatalogSkill'(_0x2dc632){const _0x5d7bf0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2dc632})});if(!_0x5d7bf0['ok']){const _0x20b9a6=await _0x5d7bf0['json']()['catch'](()=>({'error':_0x5d7bf0['statusText']})),_0x1ba7b7=new Error(_0x20b9a6['error']||_0x20b9a6['message']||_0x5d7bf0['statusText']);if(_0x20b9a6['detail']!==undefined)_0x1ba7b7['detail']=_0x20b9a6['detail'];throw _0x1ba7b7;}return await _0x5d7bf0['json']();},async 'importSkillFromGit'(_0x12fb5f,_0x4f95b4,_0x215baa='main',_0x2e237f=null){const _0xd8291b=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x12fb5f,'skillPath':_0x4f95b4,'branch':_0x215baa,'skillId':_0x2e237f})});if(!_0xd8291b['ok']){const _0x5e4e9e=await _0xd8291b['json']()['catch'](()=>({'error':_0xd8291b['statusText']})),_0x39c7b7=new Error(_0x5e4e9e['error']||_0x5e4e9e['message']||_0xd8291b['statusText']);if(_0x5e4e9e['detail']!==undefined)_0x39c7b7['detail']=_0x5e4e9e['detail'];throw _0x39c7b7;}return await _0xd8291b['json']();},async 'probeMarketplace'(_0xb9fe9d,_0x39e7bb='main'){const _0xc0722e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xb9fe9d,'branch':_0x39e7bb})});if(!_0xc0722e['ok']){const _0x47be80=await _0xc0722e['json']()['catch'](()=>({'error':_0xc0722e['statusText']})),_0x3d9a78=new Error(_0x47be80['error']||_0x47be80['message']||_0xc0722e['statusText']);if(_0x47be80['detail']!==undefined)_0x3d9a78['detail']=_0x47be80['detail'];throw _0x3d9a78;}return await _0xc0722e['json']();},async 'importMarketplaceBundle'(_0x36d2bc,_0xe2c73b,_0x410844,_0x39c031=null){const _0x2a05e3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x36d2bc,'branch':_0xe2c73b,'bundleId':_0x410844,'selectedSkills':_0x39c031})});if(!_0x2a05e3['ok']){const _0x7a265=await _0x2a05e3['json']()['catch'](()=>({'error':_0x2a05e3['statusText']})),_0x36ae4c=new Error(_0x7a265['error']||_0x7a265['message']||_0x2a05e3['statusText']);if(_0x7a265['detail']!==undefined)_0x36ae4c['detail']=_0x7a265['detail'];throw _0x36ae4c;}return await _0x2a05e3['json']();},async 'importSkillFromFolder'(_0x2ac52b,_0x459e1a=null){const _0xae6c68=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2ac52b,'skillId':_0x459e1a})});if(!_0xae6c68['ok']){const _0x61cf0d=await _0xae6c68['json']()['catch'](()=>({'error':_0xae6c68['statusText']})),_0x4fb507=new Error(_0x61cf0d['error']||_0x61cf0d['message']||_0xae6c68['statusText']);if(_0x61cf0d['detail']!==undefined)_0x4fb507['detail']=_0x61cf0d['detail'];throw _0x4fb507;}return await _0xae6c68['json']();},async 'importSkillFromNpm'(_0x2108f8,_0x902b8c='latest',_0xe432a5=null,_0x229932=null){const _0x1f28c6=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2108f8,'version':_0x902b8c,'skillId':_0xe432a5,'registry':_0x229932})});if(!_0x1f28c6['ok']){const _0x4d1d7f=await _0x1f28c6['json']()['catch'](()=>({'error':_0x1f28c6['statusText']})),_0x19d9e7=new Error(_0x4d1d7f['error']||_0x4d1d7f['message']||_0x1f28c6['statusText']);if(_0x4d1d7f['detail']!==undefined)_0x19d9e7['detail']=_0x4d1d7f['detail'];throw _0x19d9e7;}return await _0x1f28c6['json']();},async 'checkSkillUpdates'(_0x2e69cb){const _0x38199b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e69cb)+'/check-updates',{'method':'POST'});if(!_0x38199b['ok']){const _0x1bdf35=await _0x38199b['json']()['catch'](()=>({'error':_0x38199b['statusText']})),_0x286d66=new Error(_0x1bdf35['error']||_0x1bdf35['message']||_0x38199b['statusText']);if(_0x1bdf35['detail']!==undefined)_0x286d66['detail']=_0x1bdf35['detail'];throw _0x286d66;}return await _0x38199b['json']();},async 'updateExternalSkill'(_0x3cebfc){const _0x5102e8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cebfc)+'/update',{'method':'POST'});if(!_0x5102e8['ok']){const _0x40e673=await _0x5102e8['json']()['catch'](()=>({'error':_0x5102e8['statusText']})),_0x4ec3b9=new Error(_0x40e673['error']||_0x40e673['message']||_0x5102e8['statusText']);if(_0x40e673['detail']!==undefined)_0x4ec3b9['detail']=_0x40e673['detail'];throw _0x4ec3b9;}return await _0x5102e8['json']();},async 'updateSkillFlags'(_0x175fbd,_0x25b5eb){const _0x5446fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x175fbd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x25b5eb})});if(!_0x5446fd['ok']){const _0x4ff27b=await _0x5446fd['json']()['catch'](()=>({'error':_0x5446fd['statusText']})),_0x56c764=new Error(_0x4ff27b['error']||_0x4ff27b['message']||_0x5446fd['statusText']);if(_0x4ff27b['detail']!==undefined)_0x56c764['detail']=_0x4ff27b['detail'];throw _0x56c764;}return await _0x5446fd['json']();},async 'removeFromImportedRegistry'(_0x4fefcc){const _0x266969=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4fefcc)+'/registry',{'method':'DELETE'});if(!_0x266969['ok']){const _0x38060f=await _0x266969['json']()['catch'](()=>({'error':_0x266969['statusText']})),_0x54ce3f=new Error(_0x38060f['error']||_0x38060f['message']||_0x266969['statusText']);if(_0x38060f['detail']!==undefined)_0x54ce3f['detail']=_0x38060f['detail'];throw _0x54ce3f;}return await _0x266969['json']();},async 'getTeams'(){const _0x24b7e=await fetch(API_BASE+'/teams');if(!_0x24b7e['ok']){const _0x3a8ab9=await _0x24b7e['json']()['catch'](()=>({'message':_0x24b7e['statusText']}));throw new Error(_0x3a8ab9['message']||'Failed\x20to\x20get\x20teams');}return await _0x24b7e['json']();},async 'getTeam'(_0x75db77){const _0x3161b4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x75db77));if(!_0x3161b4['ok']){const _0x34956d=await _0x3161b4['json']()['catch'](()=>({'message':_0x3161b4['statusText']}));throw new Error(_0x34956d['message']||'Failed\x20to\x20get\x20team');}return await _0x3161b4['json']();},async 'createTeam'(_0xc9676c){const _0x656fa2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc9676c)});if(!_0x656fa2['ok']){const _0x28abe8=await _0x656fa2['json']()['catch'](()=>({'message':_0x656fa2['statusText']}));throw new Error(_0x28abe8['message']||'Failed\x20to\x20create\x20team');}return await _0x656fa2['json']();},async 'updateTeam'(_0x256478,_0x2cbf53){const _0x3559cd=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x256478),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cbf53)});if(!_0x3559cd['ok']){const _0x4c561c=await _0x3559cd['json']()['catch'](()=>({'message':_0x3559cd['statusText']}));throw new Error(_0x4c561c['message']||'Failed\x20to\x20update\x20team');}return await _0x3559cd['json']();},async 'deleteTeam'(_0x3bef18){const _0x1a66ed=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bef18),{'method':'DELETE'});if(!_0x1a66ed['ok']){const _0x4fdefa=await _0x1a66ed['json']()['catch'](()=>({'message':_0x1a66ed['statusText']}));throw new Error(_0x4fdefa['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a66ed['json']();},async 'addTeamMember'(_0x3de777,_0xb155dc){const _0x4e2cb6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3de777)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xb155dc})});if(!_0x4e2cb6['ok']){const _0x223fb4=await _0x4e2cb6['json']()['catch'](()=>({'message':_0x4e2cb6['statusText']}));throw new Error(_0x223fb4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4e2cb6['json']();},async 'removeTeamMember'(_0x627bc7,_0x445588){const _0x33e14f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x627bc7)+'/members/'+encodeURIComponent(_0x445588),{'method':'DELETE'});if(!_0x33e14f['ok']){const _0x1d039e=await _0x33e14f['json']()['catch'](()=>({'message':_0x33e14f['statusText']}));throw new Error(_0x1d039e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x33e14f['json']();},async 'getBindings'(_0x1582fd={}){const _0x4ed6c2=new URLSearchParams();if(_0x1582fd['resource_type'])_0x4ed6c2['set']('resource_type',_0x1582fd['resource_type']);if(_0x1582fd['resource_id'])_0x4ed6c2['set']('resource_id',_0x1582fd['resource_id']);if(_0x1582fd['subject_type'])_0x4ed6c2['set']('subject_type',_0x1582fd['subject_type']);if(_0x1582fd['subject_id'])_0x4ed6c2['set']('subject_id',_0x1582fd['subject_id']);const _0x2c044c=_0x4ed6c2['toString'](),_0x328e2a=await fetch(API_BASE+'/bindings'+(_0x2c044c?'?'+_0x2c044c:''));if(!_0x328e2a['ok']){const _0xc046c5=await _0x328e2a['json']()['catch'](()=>({'message':_0x328e2a['statusText']}));throw new Error(_0xc046c5['message']||'Failed\x20to\x20get\x20bindings');}return await _0x328e2a['json']();},async 'createBinding'(_0x573ff9){const _0x434685=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573ff9)});if(!_0x434685['ok']){const _0x2dff8f=await _0x434685['json']()['catch'](()=>({'message':_0x434685['statusText']}));throw new Error(_0x2dff8f['message']||'Failed\x20to\x20create\x20binding');}return await _0x434685['json']();},async 'updateBinding'(_0x4cc9e0,_0x3e86fd){const _0x3c604f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4cc9e0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e86fd)});if(!_0x3c604f['ok']){const _0xe90504=await _0x3c604f['json']()['catch'](()=>({'message':_0x3c604f['statusText']}));throw new Error(_0xe90504['message']||'Failed\x20to\x20update\x20binding');}return await _0x3c604f['json']();},async 'deleteBinding'(_0x57aca8){const _0x32de74=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x57aca8),{'method':'DELETE'});if(!_0x32de74['ok']){const _0x177753=await _0x32de74['json']()['catch'](()=>({'message':_0x32de74['statusText']}));throw new Error(_0x177753['message']||'Failed\x20to\x20delete\x20binding');}return await _0x32de74['json']();},async 'getRoleDefinitions'(){const _0x561542=await fetch(API_BASE+'/roles');if(!_0x561542['ok']){const _0x136366=await _0x561542['json']()['catch'](()=>({'message':_0x561542['statusText']}));throw new Error(_0x136366['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x561542['json']();},async 'getRoleDefinition'(_0x1010d8){const _0x4b6e65=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1010d8));if(!_0x4b6e65['ok']){const _0x30f74b=await _0x4b6e65['json']()['catch'](()=>({'message':_0x4b6e65['statusText']}));throw new Error(_0x30f74b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b6e65['json']();},async 'createRoleDefinition'(_0xd0783){const _0x18d39a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0783)});if(!_0x18d39a['ok']){const _0x18d443=await _0x18d39a['json']()['catch'](()=>({'message':_0x18d39a['statusText']}));throw new Error(_0x18d443['message']||_0x18d443['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x18d39a['json']();},async 'updateRoleDefinition'(_0x130404,_0x1570cc){const _0x1ccdb2=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x130404),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1570cc)});if(!_0x1ccdb2['ok']){const _0x100775=await _0x1ccdb2['json']()['catch'](()=>({'message':_0x1ccdb2['statusText']}));throw new Error(_0x100775['message']||_0x100775['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1ccdb2['json']();},async 'deleteRoleDefinition'(_0x3c535e){const _0x28070c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3c535e),{'method':'DELETE'});if(!_0x28070c['ok']){const _0x45915a=await _0x28070c['json']()['catch'](()=>({'message':_0x28070c['statusText']}));throw new Error(_0x45915a['message']||_0x45915a['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28070c['json']();},async 'getAvailablePermissions'(){const _0x217ac8=await fetch(API_BASE+'/roles/available-permissions');if(!_0x217ac8['ok']){const _0x4ee09b=await _0x217ac8['json']()['catch'](()=>({'message':_0x217ac8['statusText']}));throw new Error(_0x4ee09b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x217ac8['json']();},async 'getGitProviderAllowedTeams'(_0x540c3f){const _0x3be5e2=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x540c3f)+'/allowed-teams');if(!_0x3be5e2['ok']){const _0x2ce505=await _0x3be5e2['json']()['catch'](()=>({'message':_0x3be5e2['statusText']}));throw new Error(_0x2ce505['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3be5e2['json']();},async 'setGitProviderAllowedTeams'(_0x16ea37,_0x390231){const _0x28e94c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x16ea37)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x390231})});if(!_0x28e94c['ok']){const _0x3bc565=await _0x28e94c['json']()['catch'](()=>({'message':_0x28e94c['statusText']}));throw new Error(_0x3bc565['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x28e94c['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 _0x2c7df2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x514f94=>{_0x514f94['el']['style']['bottom']=_0x2c7df2+'px';const _0x46d599=_0x514f94['el']['offsetHeight']||toastState['defaultHeight'];_0x2c7df2+=_0x46d599+toastState['gap'];});});}function removeToastById(_0x1b3d53){const _0x63c431=toastState['toasts']['findIndex'](_0x585569=>_0x585569['id']===_0x1b3d53);if(_0x63c431===-0x1)return;const _0x296994=toastState['toasts'][_0x63c431];if(_0x296994['timeoutId'])clearTimeout(_0x296994['timeoutId']);_0x296994['el']['classList']['remove']('show'),setTimeout(()=>_0x296994['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x63c431,0x1),repositionAllToasts();}function registerToast(_0x13b131){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x13b131),repositionAllToasts(),_0x13b131['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(_0x48467e){if(_0x48467e===null||_0x48467e===undefined)return'';return String(_0x48467e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x1dde34,_0xf304ab){if(_0x1dde34&&typeof _0x1dde34==='object'&&!Array['isArray'](_0x1dde34))return{'code':typeof _0x1dde34['text']==='string'?_0x1dde34['text']:'','language':typeof _0x1dde34['lang']==='string'?_0x1dde34['lang']:''};return{'code':typeof _0x1dde34==='string'?_0x1dde34:'','language':typeof _0xf304ab==='string'?_0xf304ab:''};}function buildMermaidBlock(_0x5cf822){const _0x236fd5=String(_0x5cf822||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x236fd5))+'\x22>'+escapeHtmlValue(_0x236fd5)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x58e1df=new marked['Renderer'](),_0xda8391=_0x58e1df['code']['bind'](_0x58e1df);return _0x58e1df['code']=function(_0x200ac0,_0x28c48e,..._0x56ac54){const {code:_0x442bf7,language:_0x1e6c6e}=getMarkdownCodeBlockPayload(_0x200ac0,_0x28c48e),_0x3d4725=String(_0x1e6c6e||'')['trim']()['toLowerCase']();if(_0x3d4725==='mermaid')return buildMermaidBlock(_0x442bf7);const _0xbc3dd0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xbc3dd0&&_0x3d4725)try{const _0x1bc6e6=_0xbc3dd0['getLanguage'](_0x3d4725)?_0x3d4725:'plaintext',_0x5e1d8b=_0xbc3dd0['highlight'](_0x442bf7,{'language':_0x1bc6e6})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3d4725)+'\x22>'+_0x5e1d8b+'</code></pre>';}catch(_0x11e929){console['error']('Syntax\x20highlighting\x20error:',_0x11e929);}return _0xda8391(_0x200ac0,_0x28c48e,..._0x56ac54);},sharedMarkedRenderer=_0x58e1df,_0x58e1df;}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 _0x5ee7a5=window['mermaid'];if(!_0x5ee7a5||typeof _0x5ee7a5['initialize']!=='function')return _0x5ee7a5||null;return _0x5ee7a5['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5ee7a5;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x54ba48,_0x39a132)=>{const _0x12e508=()=>_0x54ba48(configureMermaidInstance()),_0x2cdb05=()=>{mermaidLoadPromise=null,_0x39a132(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x32bae7=document['getElementById'](MERMAID_SCRIPT_ID);!_0x32bae7&&(_0x32bae7=document['createElement']('script'),_0x32bae7['id']=MERMAID_SCRIPT_ID,_0x32bae7['src']=MERMAID_SCRIPT_SRC,_0x32bae7['async']=!![],document['head']['appendChild'](_0x32bae7));if(window['mermaid']){_0x12e508();return;}_0x32bae7['addEventListener']('load',_0x12e508,{'once':!![]}),_0x32bae7['addEventListener']('error',_0x2cdb05,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2ac6dd){const _0x41a535=_0x2ac6dd['getAttribute']('data-mermaid-source');if(!_0x41a535)return null;let _0x3c82aa=_0x41a535;try{_0x3c82aa=decodeURIComponent(_0x41a535);}catch{}return _0x2ac6dd['textContent']=_0x3c82aa,_0x2ac6dd['removeAttribute']('data-processed'),_0x2ac6dd['removeAttribute']('aria-roledescription'),_0x2ac6dd['removeAttribute']('role'),_0x2ac6dd['removeAttribute']('aria-label'),_0x3c82aa;}function collectMermaidNodes(_0x5ab631,_0x425570){if(!(_0x5ab631 instanceof Element))return;_0x5ab631['matches']('.mermaid[data-mermaid-source]')&&_0x425570['add'](_0x5ab631),_0x5ab631['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x30a434=>{_0x425570['add'](_0x30a434);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x588889=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x273839=>setTimeout(_0x273839,0x0);_0x588889(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x36e478=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x36e478);});});}function queueMermaidRender(_0x364334){const _0x3bc194=new Set();_0x364334 instanceof Document||_0x364334 instanceof DocumentFragment?_0x364334['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1822a5=>_0x3bc194['add'](_0x1822a5)):collectMermaidNodes(_0x364334,_0x3bc194);if(_0x3bc194['size']===0x0)return;_0x3bc194['forEach'](_0x433a1b=>pendingMermaidNodes['add'](_0x433a1b)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5affb3=Array['from'](pendingMermaidNodes)['filter'](_0x143eb7=>_0x143eb7['isConnected']);pendingMermaidNodes['clear']();if(_0x5affb3['length']===0x0)return;const _0xbf1a66=await loadMermaid();if(!_0xbf1a66)return;configureMermaidInstance();const _0x3d12b6=getMermaidTheme();for(const _0x4d6428 of _0x5affb3){const _0x54a36e=_0x4d6428['getAttribute']('data-mermaid-source');if(!_0x54a36e)continue;const _0x4004ce=_0x4d6428['getAttribute']('data-processed')==='true';if(_0x4004ce&&_0x4d6428['dataset']['mermaidTheme']===_0x3d12b6)continue;restoreMermaidSource(_0x4d6428);try{if(typeof _0xbf1a66['run']==='function')await _0xbf1a66['run']({'nodes':[_0x4d6428]});else typeof _0xbf1a66['init']==='function'&&_0xbf1a66['init'](undefined,[_0x4d6428]);_0x4d6428['dataset']['mermaidTheme']=_0x3d12b6,delete _0x4d6428['dataset']['mermaidError'];}catch(_0x12717b){console['error']('Mermaid\x20render\x20failed:',_0x12717b),restoreMermaidSource(_0x4d6428),_0x4d6428['dataset']['mermaidError']='true',delete _0x4d6428['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x21c930=>{_0x21c930['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x21c930);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x53d410=>{_0x53d410['forEach'](_0x2f7e52=>{_0x2f7e52['addedNodes']['forEach'](_0x3f4003=>{_0x3f4003['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3f4003);});});}),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'(_0x7753c1){const _0x4cab0a=new Date(_0x7753c1),_0x3b3430=new Date(),_0x446c41=_0x3b3430-_0x4cab0a,_0x457f1b=Math['floor'](_0x446c41/0x3e8),_0x310330=Math['floor'](_0x457f1b/0x3c),_0x1daef8=Math['floor'](_0x310330/0x3c),_0x22166a=Math['floor'](_0x1daef8/0x18);if(_0x457f1b<0x3c)return'now';if(_0x310330<0x3c)return _0x310330+'m\x20ago';if(_0x1daef8<0x18)return _0x1daef8+'h\x20ago';return _0x22166a+'d\x20ago';},'getStatusIcon'(_0x2145cc){switch(_0x2145cc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x18ceac){switch(_0x18ceac){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'(_0x1e133c,_0x2b285e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x8505b0={};_0x8505b0['text/plain']=new Blob([_0x1e133c],{'type':'text/plain'});_0x2b285e&&(_0x8505b0['text/html']=new Blob([_0x2b285e],{'type':'text/html'}));const _0x45097b=new ClipboardItem(_0x8505b0);return await navigator['clipboard']['write']([_0x45097b]),!![];}catch(_0x2c7039){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2c7039);}try{const _0x17f034=_0x302084=>{_0x302084['preventDefault'](),_0x302084['clipboardData']['setData']('text/plain',_0x1e133c),_0x2b285e&&_0x302084['clipboardData']['setData']('text/html',_0x2b285e);};document['addEventListener']('copy',_0x17f034);const _0x1a3414=document['execCommand']('copy');document['removeEventListener']('copy',_0x17f034);if(_0x1a3414)return!![];}catch(_0x4d1342){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4d1342);}try{const _0x3c27cc=document['createElement']('textarea');_0x3c27cc['value']=_0x1e133c,_0x3c27cc['style']['position']='fixed',_0x3c27cc['style']['opacity']='0',_0x3c27cc['style']['pointerEvents']='none',document['body']['appendChild'](_0x3c27cc),_0x3c27cc['select']();const _0x3a786f=document['execCommand']('copy');return document['body']['removeChild'](_0x3c27cc),_0x3a786f;}catch(_0x3b8c11){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3b8c11),![];}},'showToast'(_0x3c0a60,_0x14c655='info'){const _0x4aeef2=getNextToastId(),_0x7783d9=document['createElement']('div');_0x7783d9['className']='toast\x20toast-'+_0x14c655,_0x7783d9['textContent']=_0x3c0a60,_0x7783d9['dataset']['toastId']=_0x4aeef2,document['body']['appendChild'](_0x7783d9);const _0x32109a=_0x14c655==='error'?0x2710:0xbb8,_0x1b6524=setTimeout(()=>{removeToastById(_0x4aeef2);},_0x32109a),_0xc0b3be={'id':_0x4aeef2,'el':_0x7783d9,'timeoutId':_0x1b6524};return registerToast(_0xc0b3be),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x7783d9['classList']['add']('show');});}),_0x4aeef2;},'showError'(_0x2c9233){console['error'](_0x2c9233);const _0x18a4ff=typeof _0x2c9233==='string'?_0x2c9233:_0x2c9233['message']||'An\x20error\x20occurred';this['showToast'](_0x18a4ff,'error');},'showSuccess'(_0x3fc305){this['showToast'](_0x3fc305,'success');},'capitalize'(_0x4e38b7){if(!_0x4e38b7)return'';return _0x4e38b7['charAt'](0x0)['toUpperCase']()+_0x4e38b7['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3579a7){return escapeHtmlValue(_0x3579a7);},'ansiToHtml'(_0x354bf1){if(_0x354bf1===null||_0x354bf1===undefined)return'';let _0x5add83=this['escapeHtml'](_0x354bf1);const _0x167147={'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'},_0x2d70c9={'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 _0x2e4a62=0x0;return _0x5add83=_0x5add83['replace'](/\x1b\[([0-9;]*)m/g,(_0x5632a6,_0x28e4f2)=>{if(!_0x28e4f2||_0x28e4f2==='0'){const _0x47e5a5='</span>'['repeat'](_0x2e4a62);return _0x2e4a62=0x0,_0x47e5a5;}const _0xf2d713=_0x28e4f2['split'](';'),_0x417497=[];for(const _0x49d82d of _0xf2d713){if(_0x49d82d==='1')_0x417497['push']('font-weight:bold');else{if(_0x49d82d==='2')_0x417497['push']('opacity:0.7');else{if(_0x49d82d==='3')_0x417497['push']('font-style:italic');else{if(_0x49d82d==='4')_0x417497['push']('text-decoration:underline');else{if(_0x49d82d==='9')_0x417497['push']('text-decoration:line-through');else{if(_0x167147[_0x49d82d])_0x417497['push']('color:'+_0x167147[_0x49d82d]);else{if(_0x2d70c9[_0x49d82d])_0x417497['push']('background-color:'+_0x2d70c9[_0x49d82d]);}}}}}}}if(_0x417497['length']>0x0)return _0x2e4a62++,'<span\x20style=\x22'+_0x417497['join'](';')+'\x22>';return'';}),_0x5add83+='</span>'['repeat'](_0x2e4a62),_0x5add83=_0x5add83['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4bf293,_0x2796ce)=>{if(!_0x2796ce||_0x2796ce==='0')return'';const _0x551465=_0x2796ce['split'](';'),_0x5e51b5=[];for(const _0x221e7c of _0x551465){if(_0x221e7c==='1')_0x5e51b5['push']('font-weight:bold');else{if(_0x167147[_0x221e7c])_0x5e51b5['push']('color:'+_0x167147[_0x221e7c]);else{if(_0x2d70c9[_0x221e7c])_0x5e51b5['push']('background-color:'+_0x2d70c9[_0x221e7c]);}}}if(_0x5e51b5['length']>0x0)return'<span\x20style=\x22'+_0x5e51b5['join'](';')+'\x22>';return'';}),_0x5add83;},'showModal'({title:_0x28120e,content:_0x2acf69,buttons:buttons=[]}){const _0x408a1c='\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'](_0x28120e)+'</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'+_0x2acf69+'\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']((_0x13e544,_0x6f07b8)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13e544['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x6f07b8+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13e544['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',_0x3ab3ca=document['createElement']('div');_0x3ab3ca['id']='utils-modal',_0x3ab3ca['className']='modal',_0x3ab3ca['innerHTML']=_0x408a1c,document['body']['appendChild'](_0x3ab3ca);const _0x45d1f1=document['getElementById']('utils-modal-close');_0x45d1f1&&_0x45d1f1['addEventListener']('click',()=>this['hideModal']());const _0x149f59=_0x3ab3ca['querySelectorAll']('[data-btn-index]');_0x149f59['forEach'](_0x42580c=>{const _0x589a8b=parseInt(_0x42580c['dataset']['btnIndex']);buttons[_0x589a8b]?.['onClick']&&_0x42580c['addEventListener']('click',buttons[_0x589a8b]['onClick']);});const _0x180883=document['getElementById']('utils-modal-overlay');_0x180883&&_0x180883['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x22768d=document['getElementById']('utils-modal');_0x22768d&&_0x22768d['remove']();},'parseKeyValuePairs'(_0x2fdc04){const _0x4a0cc5={};if(!_0x2fdc04)return _0x4a0cc5;return _0x2fdc04['split'](/\r?\n/)['map'](_0x57e6be=>_0x57e6be['trim']())['filter'](Boolean)['forEach'](_0x39a57d=>{const _0x3004c8=_0x39a57d['indexOf']('=');if(_0x3004c8>0x0){const _0x2a6e6d=_0x39a57d['slice'](0x0,_0x3004c8)['trim'](),_0x4a9f4a=_0x39a57d['slice'](_0x3004c8+0x1)['trim']();if(_0x2a6e6d)_0x4a0cc5[_0x2a6e6d]=_0x4a9f4a;}}),_0x4a0cc5;},'debounce'(_0x461af5,_0x2d914c=0xfa){let _0x5cf667=null;return(..._0x4a3785)=>{clearTimeout(_0x5cf667),_0x5cf667=setTimeout(()=>_0x461af5['apply'](this,_0x4a3785),_0x2d914c);};},'formatTimestamp'(_0x2f62e2){if(!_0x2f62e2)return'N/A';const _0x498ad4=new Date(_0x2f62e2);return _0x498ad4['toLocaleDateString']()+'\x20'+_0x498ad4['toLocaleTimeString']();},'getQueryParams'(){const _0x2f518f=new URLSearchParams(window['location']['search']),_0x47bfff={};for(const [_0x3cf73c,_0x5c18ce]of _0x2f518f){_0x47bfff[_0x3cf73c]=_0x5c18ce;}return _0x47bfff;},'formatDuration'(_0x485e59,_0x5b8e7c){if(!_0x485e59)return'N/A';const _0x137afa=new Date(_0x485e59),_0xb6a7b6=_0x5b8e7c?new Date(_0x5b8e7c):new Date(),_0x388b58=_0xb6a7b6-_0x137afa;if(_0x388b58<0x0)return'0s';const _0x54f05c=Math['floor'](_0x388b58/0x3e8),_0x113daf=Math['floor'](_0x54f05c/0x3c),_0x39a85e=Math['floor'](_0x113daf/0x3c),_0x2a6c66=Math['floor'](_0x39a85e/0x18);if(_0x54f05c<0x3c)return _0x54f05c+'s';if(_0x113daf<0x3c)return _0x113daf+'m\x20'+_0x54f05c%0x3c+'s';if(_0x39a85e<0x18)return _0x39a85e+'h\x20'+_0x113daf%0x3c+'m\x20'+_0x54f05c%0x3c+'s';return _0x2a6c66+'d\x20'+_0x39a85e%0x18+'h\x20'+_0x113daf%0x3c+'m';},'renderMarkdown'(_0x57c5b4,_0x29aa3d={}){if(!_0x57c5b4)return'';_0x57c5b4=this['rewriteAttachmentLinks'](_0x57c5b4,_0x29aa3d),_0x57c5b4=this['rewriteColorSyntax'](_0x57c5b4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x57c5b4);}catch(_0x2eadba){return console['error']('Markdown\x20parsing\x20error:',_0x2eadba),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);}},'rewriteAttachmentLinks'(_0x23bcca,_0x1373e8={}){const _0x1c5805=typeof _0x1373e8['resolveAttachmentUrl']==='function'?_0x1373e8['resolveAttachmentUrl']:_0x1373e8['taskId']?_0xbc8dff=>API_BASE+'/tasks/'+_0x1373e8['taskId']+'/attachments/'+encodeURIComponent(_0xbc8dff):null;if(!_0x1c5805)return _0x23bcca;return String(_0x23bcca)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x4b8676,_0xbf7ba8)=>{const _0x33322c=String(_0xbf7ba8||'')['trim']();if(!_0x33322c)return _0x4b8676;let _0x13c285=_0x33322c;try{_0x13c285=decodeURIComponent(_0x33322c);}catch{}const _0xc2734f=_0x1c5805(_0x13c285);if(!_0xc2734f)return _0x4b8676;return']('+_0xc2734f+')';});},'rewriteColorSyntax'(_0x319299){if(!_0x319299)return _0x319299;return String(_0x319299)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x57481b,_0x7cb34d,_0x5acc3f)=>{const _0x26a54e=this['rewriteColorSyntax'](_0x5acc3f);return'<span\x20style=\x22color:\x20'+_0x7cb34d+'\x22>'+_0x26a54e+'</span>';});},'renderMarkdownFallback'(_0x265810,_0x1c5e89={}){if(!_0x265810)return'';_0x265810=_0x265810['replace'](/\r\n/g,'\x0a'),_0x265810=_0x265810['replace'](/\r/g,'\x0a'),_0x265810=this['rewriteAttachmentLinks'](_0x265810,_0x1c5e89);let _0x5aa14f=this['escapeHtml'](_0x265810);return _0x5aa14f=_0x5aa14f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5aa14f=_0x5aa14f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5aa14f=_0x5aa14f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5aa14f=_0x5aa14f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5aa14f=_0x5aa14f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5aa14f=_0x5aa14f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5aa14f=_0x5aa14f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5aa14f=_0x5aa14f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5aa14f=_0x5aa14f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5aa14f=_0x5aa14f['replace'](/\n\n/g,'</p><p>'),_0x5aa14f=_0x5aa14f['replace'](/\n/g,'<br>'),'<p>'+_0x5aa14f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3e7737=new Uint8Array(0x10);crypto['getRandomValues'](_0x3e7737),_0x3e7737[0x6]=_0x3e7737[0x6]&0xf|0x40,_0x3e7737[0x8]=_0x3e7737[0x8]&0x3f|0x80;const _0x456268=Array['from'](_0x3e7737,_0x2793ac=>_0x2793ac['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x456268['slice'](0x0,0x8)+'-'+_0x456268['slice'](0x8,0xc)+'-'+_0x456268['slice'](0xc,0x10)+'-'+_0x456268['slice'](0x10,0x14)+'-'+_0x456268['slice'](0x14);}};export class CustomSelect{constructor(_0x4ba0aa,_0xb1602e={}){this['nativeSelect']=_0x4ba0aa,this['options']=_0xb1602e,this['isOpen']=![],this['selectedValue']=_0x4ba0aa['value']||'',this['searchable']=_0xb1602e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1d8bcb=document['createElement']('div');_0x1d8bcb['className']='custom-select';const _0x181694=document['createElement']('div');_0x181694['className']='custom-select-trigger',_0x181694['setAttribute']('tabindex','0'),_0x181694['setAttribute']('role','button'),_0x181694['setAttribute']('aria-haspopup','listbox');const _0x545d97=document['createElement']('span');_0x545d97['className']='custom-select-trigger-text';const _0x7274db=document['createElement']('span');_0x7274db['className']='custom-select-arrow',_0x7274db['textContent']='▼',_0x181694['appendChild'](_0x545d97),_0x181694['appendChild'](_0x7274db);const _0x85dfc7=document['createElement']('div');_0x85dfc7['className']='custom-select-dropdown',_0x85dfc7['setAttribute']('role','listbox');if(this['searchable']){const _0x2bcfc1=document['createElement']('div');_0x2bcfc1['className']='custom-select-search';const _0x2344f5=document['createElement']('input');_0x2344f5['type']='text',_0x2344f5['className']='custom-select-search-input',_0x2344f5['placeholder']='Type\x20to\x20search...',_0x2344f5['setAttribute']('aria-label','Search\x20options'),_0x2344f5['addEventListener']('input',_0x367375=>{this['searchQuery']=_0x367375['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2344f5['addEventListener']('keydown',_0x400415=>{if(_0x400415['key']==='Escape')_0x400415['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x400415['key']==='Enter'){_0x400415['preventDefault'](),_0x400415['stopPropagation']();const _0x33b5c4=_0x85dfc7['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x33b5c4){const _0x4895ac=_0x33b5c4['getAttribute']('data-value');this['select'](_0x4895ac);}}}}),_0x2bcfc1['appendChild'](_0x2344f5),_0x85dfc7['appendChild'](_0x2bcfc1),this['searchInput']=_0x2344f5;}const _0x39083b=document['createElement']('div');_0x39083b['className']='custom-select-options',_0x85dfc7['appendChild'](_0x39083b),_0x1d8bcb['appendChild'](_0x181694),_0x1d8bcb['appendChild'](_0x85dfc7),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1d8bcb,this['nativeSelect']),this['wrapper']=_0x1d8bcb,this['trigger']=_0x181694,this['triggerText']=_0x545d97,this['dropdown']=_0x85dfc7,this['optionsContainer']=_0x39083b,_0x181694['addEventListener']('click',()=>this['toggle']()),_0x181694['addEventListener']('keydown',_0x48ea34=>this['handleKeydown'](_0x48ea34)),document['addEventListener']('click',_0x38bc4d=>{!_0x1d8bcb['contains'](_0x38bc4d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d7e15=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d7e15['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de653=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de653['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x322aff=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x322aff['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x553893=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x553893),this['trigger']['setAttribute']('aria-disabled',_0x553893?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x553893?'-1':'0'),_0x553893&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x212276=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bea96=_0x212276['filter'](_0x672fec=>!_0x672fec['disabled']&&!_0x672fec['hidden']);_0x212276['forEach']((_0x39cac4,_0x33750f)=>{const _0x491c33=document['createElement']('div');_0x491c33['className']='custom-select-option',_0x491c33['textContent']=_0x39cac4['textContent'],_0x491c33['setAttribute']('data-value',_0x39cac4['value']),_0x491c33['setAttribute']('data-index',_0x33750f),_0x491c33['setAttribute']('role','option'),_0x39cac4['disabled']?_0x491c33['classList']['add']('disabled'):_0x491c33['addEventListener']('click',()=>this['select'](_0x39cac4['value'])),_0x39cac4['value']===this['selectedValue']&&_0x491c33['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x491c33),this['allOptions']['push']({'element':_0x491c33,'text':_0x39cac4['textContent']['toLowerCase'](),'value':_0x39cac4['value'],'disabled':_0x39cac4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x91bcce=this['searchInput']['parentElement'];_0x5bea96['length']>0x3?_0x91bcce['style']['display']='':_0x91bcce['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x14f418=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x317ee8=>{if(!_0x14f418||_0x317ee8['disabled'])_0x317ee8['element']['style']['display']='';else{const _0x100b89=_0x317ee8['text']['includes'](_0x14f418);_0x317ee8['element']['style']['display']=_0x100b89?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1ba69b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1ba69b,this['nativeSelect']['value']=_0x1ba69b;const _0xc7df24=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xc7df24),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x7be585=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x7be585&&(this['triggerText']['textContent']=_0x7be585['textContent'],_0x7be585['disabled']||_0x7be585['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x46a1c7=>{_0x46a1c7['getAttribute']('data-value')===this['selectedValue']?_0x46a1c7['classList']['add']('selected'):_0x46a1c7['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 _0x560474=window['getComputedStyle'](this['dropdown']);if(_0x560474['position']==='fixed'){const _0x3eefb7=this['trigger']['getBoundingClientRect'](),_0x5bca16=parseInt(_0x560474['maxHeight'])||0xc8,_0x2b058d=window['innerHeight'],_0x4b84d7=_0x2b058d-_0x3eefb7['bottom'],_0x4b8d29=_0x3eefb7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x823cce;_0x4b84d7<_0x5bca16&&_0x4b8d29>_0x4b84d7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2b058d-_0x3eefb7['top']+'px',_0x823cce=Math['min'](_0x5bca16,_0x4b8d29-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3eefb7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x823cce=Math['min'](_0x5bca16,_0x4b84d7-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px');if(this['optionsContainer']){let _0x3fa932=_0x823cce;if(this['searchInput']){const _0x251064=this['searchInput']['parentElement'];_0x251064&&(_0x3fa932-=_0x251064['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3fa932)+'px';}this['dropdown']['style']['left']=_0x3eefb7['left']+'px',this['dropdown']['style']['width']=_0x3eefb7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x51b22a=this['searchInput']['parentElement'];_0x51b22a&&_0x51b22a['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'](_0x276090){if(this['nativeSelect']['disabled'])return;if(_0x276090['key']==='Enter'||_0x276090['key']==='\x20')_0x276090['preventDefault'](),this['toggle']();else _0x276090['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xc4c876='\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',_0xc4c876),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x50f7ea=document['getElementById']('confirm-dialog-close'),_0x1fe819=document['getElementById']('confirm-dialog-cancel'),_0x7bf9f3=document['getElementById']('confirm-dialog-confirm'),_0x4a2964=this['_modal']['querySelector']('.modal-overlay');_0x50f7ea['addEventListener']('click',()=>this['_resolve'](![])),_0x1fe819['addEventListener']('click',()=>this['_resolve'](![])),_0x7bf9f3['addEventListener']('click',()=>this['_resolve'](!![])),_0x4a2964['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x6cfb4b=>{if(_0x6cfb4b['key']==='Escape')_0x6cfb4b['preventDefault'](),this['_resolve'](![]);else _0x6cfb4b['key']==='Enter'&&(_0x6cfb4b['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x14eda1,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x532bf0=>{this['_resolvePromise']=_0x532bf0,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x14eda1;const _0x3d3d45=document['getElementById']('confirm-dialog-cancel'),_0xa40fd8=document['getElementById']('confirm-dialog-confirm');_0x3d3d45['textContent']=cancelText,_0xa40fd8['textContent']=confirmText,_0xa40fd8['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xa40fd8['focus']();});},'_resolve'(_0x3bde65){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3bde65),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x578a50,_0xd1956e={}){this['container']=_0x578a50,this['options']={'placeholder':_0xd1956e['placeholder']||'Type\x20to\x20search...','maxItems':_0xd1956e['maxItems']||0x64,'loadItems':_0xd1956e['loadItems']||(async()=>[]),'renderItem':_0xd1956e['renderItem']||(_0x4c6ad2=>({'primary':String(_0x4c6ad2),'secondary':''})),'onSelect':_0xd1956e['onSelect']||(()=>{}),'filterItems':_0xd1956e['filterItems']||null,'getItemValue':_0xd1956e['getItemValue']||(_0x5f5433=>_0x5f5433),'sortItems':_0xd1956e['sortItems']||null,'debounceMs':_0xd1956e['debounceMs']||0xc8,'minCharsForSearch':_0xd1956e['minCharsForSearch']||0x0,'emptyMessage':_0xd1956e['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xd1956e['loadingMessage']||'Loading...','preload':_0xd1956e['preload']!==![],'searchMode':_0xd1956e['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',_0x54ebfe=>this['onBlur'](_0x54ebfe)),this['input']['addEventListener']('input',_0x23f92d=>this['onInput'](_0x23f92d)),this['input']['addEventListener']('keydown',_0x5fa10e=>this['onKeydown'](_0x5fa10e)),this['clearBtn']['addEventListener']('mousedown',_0x4767ae=>{_0x4767ae['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x32c14c=>{_0x32c14c['preventDefault']();}),document['addEventListener']('click',_0x3cf8b7=>{!this['wrapper']['contains'](_0x3cf8b7['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(_0x9264b6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x9264b6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x300865){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x446e13){const _0x2fd65b=_0x446e13['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2fd65b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2fd65b):this['loadAndShow'](_0x2fd65b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50ba6e){switch(_0x50ba6e['key']){case'ArrowDown':_0x50ba6e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50ba6e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50ba6e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50ba6e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0xc758a7){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x15980d=this['selectedIndex']+_0xc758a7;if(_0x15980d>=0x0&&_0x15980d<this['filteredItems']['length']){this['selectedIndex']=_0x15980d,this['updateSelectionHighlight']();const _0xf0b157=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xf0b157[this['selectedIndex']]&&_0xf0b157[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1f2cff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1f2cff['forEach']((_0x3d63c3,_0x268cf4)=>{_0x3d63c3['classList']['toggle']('keyboard-selected',_0x268cf4===this['selectedIndex']);});}async['loadAndShow'](_0x564278){this['showLoading']();try{const _0x124bd0=await this['options']['loadItems'](_0x564278);if(this['options']['searchMode']==='server'){let _0x34ba0a=_0x124bd0;this['options']['sortItems']&&(_0x34ba0a=this['options']['sortItems']([..._0x124bd0]));this['filteredItems']=_0x34ba0a;const _0x3d68c0=this['filteredItems']['length']>=this['options']['maxItems'];_0x3d68c0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3d68c0),this['open']();}else this['allItems']=_0x124bd0,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x564278);}catch(_0x2ea222){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2ea222),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3fdf31){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3fdf31):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x41e142=this['filteredItems']['length']>=this['options']['maxItems'];_0x41e142&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x41e142),this['open']();}['renderItems'](_0x5647c8){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']((_0x5a8b74,_0x1d8086)=>{const _0x1f6542=document['createElement']('div');_0x1f6542['className']='autocomplete-select-item',_0x1f6542['setAttribute']('role','option'),_0x1f6542['setAttribute']('data-index',_0x1d8086);const _0x5850c2=this['options']['renderItem'](_0x5a8b74);let _0x4c1510='';_0x5850c2['icon']&&(_0x4c1510='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5850c2['iconClass']||'')+'\x22>'+_0x5850c2['icon']+'</span>'),_0x1f6542['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4c1510+'\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'](_0x5850c2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5850c2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5850c2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1f6542['addEventListener']('click',()=>{this['selectItem'](_0x5a8b74);}),_0x1f6542['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1d8086,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1f6542);}),_0x5647c8?(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'](_0x2d472c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2d472c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4d9e15){this['selectedItem']=_0x4d9e15;const _0x28f65a=this['options']['renderItem'](_0x4d9e15);this['input']['value']=_0x28f65a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4d9e15);}['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'](_0x33f3e6){if(_0x33f3e6){this['selectedItem']=_0x33f3e6;const _0x596016=this['options']['renderItem'](_0x33f3e6);this['input']['value']=_0x596016['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x488c8f){this['allItems']=_0x488c8f,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'](_0x1a0a80){this['input']['placeholder']=_0x1a0a80;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x107d43=null){const _0x49cc20=document['getElementById']('admin-menu-container'),_0x50e319=document['getElementById']('admin-menu-btn'),_0x539fc0=document['getElementById']('admin-menu');if(!_0x49cc20||!_0x50e319||!_0x539fc0)return;try{!_0x107d43&&(_0x107d43=await API['getCurrentUser']());if(_0x107d43){const _0x19d5a0=window['Permissions'],_0x227b3c=_0x19d5a0['hasServerPermission'](_0x107d43,'*')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:manage')||_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')||_0x19d5a0['hasTeamPermission'](_0x107d43,'teams:manage')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:view_details');if(!_0x227b3c)return;_0x49cc20['hidden']=![];if(!_0x19d5a0['hasServerPermission'](_0x107d43,'*')){const _0xd61a2a=_0x539fc0['querySelectorAll']('.admin-menu-item');_0xd61a2a['forEach'](_0x2460a0=>{const _0x3eda7c=_0x2460a0['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3eda7c==='Users'&&!_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Skills'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Settings'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Administration'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Git\x20History'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Roles'&&(_0x2460a0['hidden']=!![]);});}_0x50e319['addEventListener']('click',_0x29e195=>{_0x29e195['stopPropagation']();const _0x658df7=document['getElementById']('actions-menu');if(_0x658df7)_0x658df7['hidden']=!![];_0x539fc0['hidden']=!_0x539fc0['hidden'];}),document['addEventListener']('click',_0x3c7f5a=>{!_0x539fc0['hidden']&&!_0x50e319['contains'](_0x3c7f5a['target'])&&!_0x539fc0['contains'](_0x3c7f5a['target'])&&(_0x539fc0['hidden']=!![]);}),document['addEventListener']('keydown',_0x218238=>{_0x218238['key']==='Escape'&&!_0x539fc0['hidden']&&(_0x539fc0['hidden']=!![]);});}}catch(_0x513bfd){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x513bfd['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 _0xe60347=window['location']['pathname'],_0x4e5baf=_0xe60347['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x4e5baf)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x4e5baf[0x1]),_0x4e5baf[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xf02f52={}){const _0x5c72d5=new URLSearchParams();_0xf02f52['userId']&&_0x5c72d5['set']('userId',String(_0xf02f52['userId']));_0xf02f52['automation']&&_0x5c72d5['set']('automation',String(_0xf02f52['automation']));const _0x2d024f=API_BASE+'/tasks/stats'+(_0x5c72d5['toString']()?'?'+_0x5c72d5['toString']():''),_0x102d61=await fetch(_0x2d024f);if(!_0x102d61['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x102d61['statusText']);return await _0x102d61['json']();},async 'getTasks'(_0x1d0cc3={}){const _0x433a40=new URLSearchParams();_0x1d0cc3['status']&&_0x433a40['set']('status',String(_0x1d0cc3['status']));_0x1d0cc3['environment']&&_0x433a40['set']('environment',String(_0x1d0cc3['environment']));_0x1d0cc3['automation']&&_0x433a40['set']('automation',String(_0x1d0cc3['automation']));if(_0x1d0cc3['include']){const _0x1c4525=Array['isArray'](_0x1d0cc3['include'])?_0x1d0cc3['include']['join'](','):String(_0x1d0cc3['include']);_0x1c4525&&_0x433a40['set']('include',_0x1c4525);}_0x1d0cc3['filter']&&_0x433a40['set']('filter',String(_0x1d0cc3['filter']));_0x1d0cc3['page']&&_0x433a40['set']('page',String(_0x1d0cc3['page']));_0x1d0cc3['limit']&&_0x433a40['set']('limit',String(_0x1d0cc3['limit']));_0x1d0cc3['userId']&&_0x433a40['set']('userId',String(_0x1d0cc3['userId']));_0x1d0cc3['search']&&_0x433a40['set']('search',String(_0x1d0cc3['search']));_0x1d0cc3['includeChildTasks']&&_0x433a40['set']('includeChildTasks','true');const _0x51ffb5=API_BASE+'/tasks'+(_0x433a40['toString']()?'?'+_0x433a40['toString']():''),_0x555d2c=await fetch(_0x51ffb5);if(!_0x555d2c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x555d2c['statusText']);return await _0x555d2c['json']();},async 'getAutomations'(_0x47be7c={}){const _0x2912b1=new URLSearchParams();_0x47be7c['environment']&&_0x2912b1['set']('environment',String(_0x47be7c['environment']));const _0xc3bf79=await fetch(API_BASE+'/api/automations'+(_0x2912b1['toString']()?'?'+_0x2912b1['toString']():''));if(!_0xc3bf79['ok']){const _0x56fb5f=await _0xc3bf79['json']()['catch'](()=>({}));throw new Error(_0x56fb5f['message']||_0x56fb5f['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc3bf79['statusText']);}return await _0xc3bf79['json']();},async 'getAutomation'(_0x15ba31){const _0x4c1b89=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x15ba31));if(!_0x4c1b89['ok']){const _0x4077e2=await _0x4c1b89['json']()['catch'](()=>({}));throw new Error(_0x4077e2['message']||_0x4077e2['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4c1b89['statusText']);}return await _0x4c1b89['json']();},async 'createAutomation'(_0x233012){const _0x54489c=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x233012||{})});if(!_0x54489c['ok']){const _0x266bb8=await _0x54489c['json']()['catch'](()=>({}));throw new Error(_0x266bb8['message']||_0x266bb8['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54489c['statusText']);}return await _0x54489c['json']();},async 'updateAutomation'(_0x1fc2b7,_0xeb4ab6){const _0x5b3518=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1fc2b7),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xeb4ab6||{})});if(!_0x5b3518['ok']){const _0x25fddc=await _0x5b3518['json']()['catch'](()=>({}));throw new Error(_0x25fddc['message']||_0x25fddc['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5b3518['statusText']);}return await _0x5b3518['json']();},async 'deleteAutomation'(_0x54d9e1){const _0x38a4eb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x54d9e1),{'method':'DELETE'});if(!_0x38a4eb['ok']){const _0x563176=await _0x38a4eb['json']()['catch'](()=>({}));throw new Error(_0x563176['message']||_0x563176['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x38a4eb['statusText']);}return await _0x38a4eb['json']();},async 'triggerAutomation'(_0x4d2170){const _0x44b585=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d2170)+'/trigger',{'method':'POST'});if(!_0x44b585['ok']){const _0x66d305=await _0x44b585['json']()['catch'](()=>({}));throw new Error(_0x66d305['message']||_0x66d305['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x44b585['statusText']);}return await _0x44b585['json']();},async 'setAutomationEnabled'(_0x4307a9,_0x585d90){const _0x245e26=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4307a9)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x585d90})});if(!_0x245e26['ok']){const _0x2ff61f=await _0x245e26['json']()['catch'](()=>({}));throw new Error(_0x2ff61f['message']||_0x2ff61f['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x245e26['statusText']);}return await _0x245e26['json']();},async 'getAutomationHistory'(_0x57b199,_0x24f577=0x32){const _0x466c5d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57b199)+'/history?limit='+encodeURIComponent(String(_0x24f577)));if(!_0x466c5d['ok']){const _0x2f99cb=await _0x466c5d['json']()['catch'](()=>({}));throw new Error(_0x2f99cb['message']||_0x2f99cb['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x466c5d['statusText']);}return await _0x466c5d['json']();},async 'getTask'(_0x274f40,_0x53cedc={}){const _0x4bbf29=new URLSearchParams();if(_0x53cedc['include']){const _0x51a3bb=Array['isArray'](_0x53cedc['include'])?_0x53cedc['include']['join'](','):String(_0x53cedc['include']);if(_0x51a3bb)_0x4bbf29['set']('include',_0x51a3bb);}const _0x2d2559=await fetch(API_BASE+'/tasks/'+_0x274f40+(_0x4bbf29['toString']()?'?'+_0x4bbf29['toString']():''));if(!_0x2d2559['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2d2559['statusText']);return await _0x2d2559['json']();},async 'getTaskResults'(_0x229952){const _0x596e39=await fetch(API_BASE+'/tasks/'+_0x229952+'/results');if(!_0x596e39['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x596e39['statusText']);return await _0x596e39['json']();},async 'getTaskPatches'(_0xd10ccc){const _0x1e2222=await fetch(API_BASE+'/tasks/'+_0xd10ccc+'/patches');if(!_0x1e2222['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1e2222['statusText']);return await _0x1e2222['json']();},async 'getTaskAttachments'(_0x1dfae2){const _0x9640e0=await fetch(API_BASE+'/tasks/'+_0x1dfae2+'/attachments');if(!_0x9640e0['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x9640e0['statusText']);return await _0x9640e0['json']();},async 'uploadAttachments'(_0x236a68,_0x38ed5c){const _0xc063c9=new FormData();for(const _0xedbffe of _0x38ed5c){_0xc063c9['append']('attachments',_0xedbffe);}const _0x38b68d=await fetch(API_BASE+'/tasks/'+_0x236a68+'/attachments',{'method':'POST','body':_0xc063c9});if(!_0x38b68d['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x38b68d['statusText']);return await _0x38b68d['json']();},async 'isAINameGenerationAvailable'(){try{const _0x230e59=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x230e59['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x230e59['json']();}catch(_0x2fd878){return{'available':![],'reason':_0x2fd878['message']};}},async 'generateTaskName'(_0x42111a){try{const _0x2cd5fa=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x42111a})});return await _0x2cd5fa['json']();}catch(_0x570470){return{'success':![],'error':_0x570470['message']};}},async 'createTask'(_0x2b3e05){let _0x38d0b5,_0x318008={};if(_0x2b3e05['files']&&_0x2b3e05['files']['length']>0x0){const _0x560528=new FormData();for(const [_0x3d728b,_0x1cea81]of Object['entries'](_0x2b3e05)){if(_0x3d728b!=='files'){if(_0x1cea81==null)continue;typeof _0x1cea81==='object'?_0x560528['append'](_0x3d728b,JSON['stringify'](_0x1cea81)):_0x560528['append'](_0x3d728b,String(_0x1cea81));}}for(const _0x1711ac of _0x2b3e05['files']){_0x560528['append']('attachments',_0x1711ac);}_0x38d0b5=_0x560528;}else _0x318008['Content-Type']='application/json',_0x38d0b5=JSON['stringify'](_0x2b3e05);const _0x411659=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x318008,'body':_0x38d0b5});if(!_0x411659['ok']){const _0x201ab2=await _0x411659['json'](),_0x2879b5=new Error(_0x201ab2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x411659['statusText']),{message:_0x43e583,..._0x142bdb}=_0x201ab2;Object['assign'](_0x2879b5,_0x142bdb);throw _0x2879b5;}return await _0x411659['json']();},async 'createTestTask'(_0x230595){const _0x2f3096=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x230595)});if(!_0x2f3096['ok']){const _0x23463c=await _0x2f3096['json']();throw new Error(_0x23463c['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x2f3096['statusText']);}return await _0x2f3096['json']();},async 'createEphemeralTest'(_0x4baeae){const _0x493ee9=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4baeae)});if(!_0x493ee9['ok']){const _0x502a31=await _0x493ee9['json']();throw new Error(_0x502a31['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x493ee9['statusText']);}return await _0x493ee9['json']();},async 'createDeployTask'(_0x1af497){const _0x41d025=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1af497)});if(!_0x41d025['ok']){const _0x504d14=await _0x41d025['json']();throw new Error(_0x504d14['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41d025['statusText']);}return await _0x41d025['json']();},async 'getEnvironments'(){const _0x335945=await fetch(API_BASE+'/environments');if(!_0x335945['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x335945['statusText']);return await _0x335945['json']();},async 'getEnvironment'(_0x1a034e){const _0xad6ee8=await fetch(API_BASE+'/environments/'+_0x1a034e);if(!_0xad6ee8['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0xad6ee8['statusText']);return await _0xad6ee8['json']();},async 'getEnvironmentRepoHistory'(_0x1d291f,_0x22a130,_0x294906={}){if(!_0x1d291f||!_0x22a130)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x29b9ba=new URLSearchParams();if(_0x294906['limit'])_0x29b9ba['set']('limit',String(_0x294906['limit']));if(_0x294906['offset'])_0x29b9ba['set']('offset',String(_0x294906['offset']));if(_0x294906['search'])_0x29b9ba['set']('search',String(_0x294906['search']));if(_0x294906['branch'])_0x29b9ba['set']('branch',String(_0x294906['branch']));const _0xccc3ed=API_BASE+'/environments/'+encodeURIComponent(_0x1d291f)+'/repos/'+encodeURIComponent(_0x22a130)+'/git/history',_0x293aa3=await fetch(''+_0xccc3ed+(_0x29b9ba['toString']()?'?'+_0x29b9ba['toString']():''));if(!_0x293aa3['ok']){const _0x22e588=await _0x293aa3['json']()['catch'](()=>({}));throw new Error(_0x22e588['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x293aa3['statusText']);}return await _0x293aa3['json']();},async 'getEnvironmentRepoCommit'(_0x4a425e,_0x17b3ab,_0x473e59){if(!_0x4a425e||!_0x17b3ab||!_0x473e59)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xf7c7f2=API_BASE+'/environments/'+encodeURIComponent(_0x4a425e)+'/repos/'+encodeURIComponent(_0x17b3ab)+'/git/commits/'+encodeURIComponent(_0x473e59),_0x1da249=await fetch(_0xf7c7f2);if(!_0x1da249['ok']){const _0x22c492=await _0x1da249['json']()['catch'](()=>({}));throw new Error(_0x22c492['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1da249['statusText']);}return await _0x1da249['json']();},async 'getEnvironmentRepoBranches'(_0x26e52f,_0x251e53){if(!_0x26e52f||!_0x251e53)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5200d4=API_BASE+'/environments/'+encodeURIComponent(_0x26e52f)+'/repos/'+encodeURIComponent(_0x251e53)+'/git/branches',_0x588c46=await fetch(_0x5200d4);if(!_0x588c46['ok']){const _0x32159f=await _0x588c46['json']()['catch'](()=>({}));throw new Error(_0x32159f['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x588c46['statusText']);}return await _0x588c46['json']();},async 'revertEnvironmentRepoCommit'(_0x3dfb12,_0x4dcbc5,_0x2cadd7,_0x445dba={}){if(!_0x3dfb12||!_0x4dcbc5||!_0x2cadd7)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5c6e2a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x3dfb12)+'/repos/'+encodeURIComponent(_0x4dcbc5)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2cadd7,..._0x445dba})});if(!_0x5c6e2a['ok']){const _0x534552=await _0x5c6e2a['json']()['catch'](()=>({}));throw new Error(_0x534552['message']||_0x534552['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5c6e2a['statusText']);}return await _0x5c6e2a['json']();},async 'getTemplates'(_0x5a1c93={}){const _0x16314c=new URLSearchParams();if(_0x5a1c93['include']){const _0x14cc65=Array['isArray'](_0x5a1c93['include'])?_0x5a1c93['include']['join'](','):String(_0x5a1c93['include']);if(_0x14cc65)_0x16314c['set']('include',_0x14cc65);}const _0x4c4383=await fetch(API_BASE+'/templates'+(_0x16314c['toString']()?'?'+_0x16314c['toString']():''));if(!_0x4c4383['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4c4383['statusText']);return await _0x4c4383['json']();},async 'getTemplatesForEnvironment'(_0x23dded,_0xdf387d={}){if(!_0x23dded)throw new Error('Environment\x20name\x20is\x20required');const _0x299d74=new URLSearchParams();if(_0xdf387d['include']){const _0x5ab807=Array['isArray'](_0xdf387d['include'])?_0xdf387d['include']['join'](','):String(_0xdf387d['include']);if(_0x5ab807)_0x299d74['set']('include',_0x5ab807);}const _0x6fde66=await fetch(API_BASE+'/templates/'+_0x23dded+(_0x299d74['toString']()?'?'+_0x299d74['toString']():''));if(!_0x6fde66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x23dded+':\x20'+_0x6fde66['statusText']);return await _0x6fde66['json']();},async 'getTemplate'(_0x64e7aa,_0x281825,_0x157ca0={}){if(!_0x64e7aa||!_0x281825)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x574145=new URLSearchParams();if(_0x157ca0['include']){const _0x5b213d=Array['isArray'](_0x157ca0['include'])?_0x157ca0['include']['join'](','):String(_0x157ca0['include']);if(_0x5b213d)_0x574145['set']('include',_0x5b213d);}const _0x39378e=await fetch(API_BASE+'/templates/'+_0x64e7aa+'/'+_0x281825+(_0x574145['toString']()?'?'+_0x574145['toString']():''));if(!_0x39378e['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x39378e['statusText']);return await _0x39378e['json']();},async 'getTaskLogs'(_0x1d42fd,_0x523e4d={}){if(!_0x1d42fd)throw new Error('Task\x20ID\x20is\x20required');const _0x288b53=new URLSearchParams();_0x523e4d['tail']&&_0x288b53['set']('tail',String(_0x523e4d['tail']));const _0x319a8f=await fetch(API_BASE+'/tasks/'+_0x1d42fd+'/logs'+(_0x288b53['toString']()?'?'+_0x288b53['toString']():''));if(!_0x319a8f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x319a8f['statusText']);return await _0x319a8f['text']();},async 'getContainers'(){const _0x505882=await fetch(API_BASE+'/containers');if(!_0x505882['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x505882['statusText']);return await _0x505882['json']();},async 'getContainer'(_0x248763){const _0x47bf2a=await fetch(API_BASE+'/containers/'+_0x248763);if(!_0x47bf2a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x47bf2a['statusText']);return await _0x47bf2a['json']();},async 'startInteractiveContainer'(_0x4c3bdb){const _0x3caf78=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c3bdb)});if(!_0x3caf78['ok']){const _0x1d7e1c=await _0x3caf78['json']()['catch'](()=>({}));throw new Error(_0x1d7e1c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x3caf78['statusText']);}return await _0x3caf78['json']();},async 'startContainerCodeServer'(_0x404c8e,_0xe9e765={}){if(!_0x404c8e)throw new Error('Container\x20ID\x20is\x20required');const _0x5c6b49=new URLSearchParams();_0xe9e765['theme']&&_0x5c6b49['set']('theme',_0xe9e765['theme']);const _0x2da24a=await fetch(API_BASE+'/containers/'+_0x404c8e+'/code-server'+(_0x5c6b49['toString']()?'?'+_0x5c6b49['toString']():'')),_0x3977d=await _0x2da24a['json']()['catch'](()=>({}));if(!_0x2da24a['ok'])throw new Error(_0x3977d['message']||_0x3977d['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x2da24a['statusText']);return _0x3977d;},async 'stopContainer'(_0x33beb6){const _0x4daece=await fetch(API_BASE+'/containers/'+_0x33beb6,{'method':'DELETE'});if(!_0x4daece['ok']){const _0x9d2880=await _0x4daece['json']()['catch'](()=>({}));throw new Error(_0x9d2880['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4daece['statusText']);}return await _0x4daece['json']();},async 'stopTask'(_0x5ea0d1){if(!_0x5ea0d1)throw new Error('Task\x20ID\x20is\x20required');const _0x1c2a10=await fetch(API_BASE+'/tasks/'+_0x5ea0d1+'/stop',{'method':'POST'});if(!_0x1c2a10['ok']){const _0x15939c=await _0x1c2a10['json']()['catch'](()=>({}));throw new Error(_0x15939c['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1c2a10['statusText']);}return await _0x1c2a10['json']();},async 'interruptTask'(_0x3ce681){if(!_0x3ce681)throw new Error('Task\x20ID\x20is\x20required');const _0x11630b=await fetch(API_BASE+'/tasks/'+_0x3ce681+'/interrupt',{'method':'POST'});if(!_0x11630b['ok']){const _0xc8b39d=await _0x11630b['json']()['catch'](()=>({}));throw new Error(_0xc8b39d['error']||_0xc8b39d['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x11630b['statusText']);}return await _0x11630b['json']();},async 'startTask'(_0x55e832){if(!_0x55e832)throw new Error('Task\x20ID\x20is\x20required');const _0x1889e4=await fetch(API_BASE+'/tasks/'+_0x55e832+'/start',{'method':'POST'});if(!_0x1889e4['ok']){const _0x1e9a9e=await _0x1889e4['json']()['catch'](()=>({}));throw new Error(_0x1e9a9e['error']||'Failed\x20to\x20start\x20task:\x20'+_0x1889e4['statusText']);}return await _0x1889e4['json']();},async 'deleteTask'(_0x393e53){if(!_0x393e53)throw new Error('Task\x20ID\x20is\x20required');const _0x219ce1=await fetch(API_BASE+'/tasks/'+_0x393e53,{'method':'DELETE'});if(!_0x219ce1['ok']){const _0x4d52e7=await _0x219ce1['json']()['catch'](()=>({}));throw new Error(_0x4d52e7['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x219ce1['statusText']);}return await _0x219ce1['json']();},async 'refreshTasksFromDisk'(){const _0x841006=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x841006['ok']){const _0x33a43d=await _0x841006['json']()['catch'](()=>({}));throw new Error(_0x33a43d['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x841006['statusText']);}return await _0x841006['json']();},async 'approveTask'(_0x5472d7,_0x4e1c84={}){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');const _0x283c61={'commit_message':_0x4e1c84['commit_message']||'','pull':_0x4e1c84['pull']??![],'push':_0x4e1c84['push']??![],'conflict_strategy':_0x4e1c84['conflict_strategy']||'rebase'};_0x4e1c84['new_branch']&&(_0x283c61['new_branch']=_0x4e1c84['new_branch']);const _0x36a44e=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x283c61)});if(!_0x36a44e['ok']){const _0x2d37d6=await _0x36a44e['json']()['catch'](()=>({}));let _0x188019=_0x2d37d6['error']||_0x2d37d6['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x36a44e['statusText'];if(_0x2d37d6['results']&&Array['isArray'](_0x2d37d6['results'])){const _0x3f906b=_0x2d37d6['results']['filter'](_0x41dffa=>!_0x41dffa['success']&&_0x41dffa['error']);_0x3f906b['length']>0x0&&(_0x188019=_0x3f906b[0x0]['error']);}const _0x563bac=new Error(_0x188019);_0x563bac['hasConflicts']=_0x2d37d6['results']?.['some'](_0x40326e=>_0x40326e['conflict'])||![];throw _0x563bac;}return await _0x36a44e['json']();},async 'getPullRequestInfo'(_0x42c683){if(!_0x42c683)throw new Error('Task\x20ID\x20is\x20required');const _0x4780bd=await fetch(API_BASE+'/tasks/'+_0x42c683+'/pull-request-info');if(!_0x4780bd['ok']){const _0x58d83e=await _0x4780bd['json']()['catch'](()=>({}));throw new Error(_0x58d83e['error']||_0x58d83e['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4780bd['statusText']);}return await _0x4780bd['json']();},async 'createPullRequests'(_0xb710de,_0x562872){if(!_0xb710de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x562872||!Array['isArray'](_0x562872))throw new Error('repos\x20array\x20is\x20required');const _0x1e24eb=await fetch(API_BASE+'/tasks/'+_0xb710de+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x562872})});if(!_0x1e24eb['ok']){const _0xc7fe26=await _0x1e24eb['json']()['catch'](()=>({}));let _0x3ca286=_0xc7fe26['error']||_0xc7fe26['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1e24eb['statusText'];if(_0xc7fe26['results']&&Array['isArray'](_0xc7fe26['results'])){const _0x320855=_0xc7fe26['results']['filter'](_0x594b13=>!_0x594b13['success']&&_0x594b13['error']);_0x320855['length']>0x0&&(_0x3ca286=_0x320855[0x0]['error']);}throw new Error(_0x3ca286);}return await _0x1e24eb['json']();},async 'syncRepos'(_0x1b129c){if(!_0x1b129c)throw new Error('Task\x20ID\x20is\x20required');const _0x5a8a24=await fetch(API_BASE+'/tasks/'+_0x1b129c+'/sync-repos',{'method':'POST'});if(!_0x5a8a24['ok']){const _0x445bb7=await _0x5a8a24['json']()['catch'](()=>({}));throw new Error(_0x445bb7['error']||_0x445bb7['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5a8a24['statusText']);}return await _0x5a8a24['json']();},async 'getIbmiSyncInfo'(_0xe6470d){if(!_0xe6470d)throw new Error('Task\x20ID\x20is\x20required');const _0x5360e9=await fetch(API_BASE+'/tasks/'+_0xe6470d+'/ibmi-sync-info');if(!_0x5360e9['ok']){const _0x27bd5f=await _0x5360e9['json']()['catch'](()=>({}));throw new Error(_0x27bd5f['error']||_0x27bd5f['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5360e9['json']();},async 'getSyncFiles'(_0x465e64){if(!_0x465e64)throw new Error('Task\x20ID\x20is\x20required');const _0x159e36=await fetch(API_BASE+'/tasks/'+_0x465e64+'/sync-to-ibmi/files');if(!_0x159e36['ok']){const _0x1ca8d2=await _0x159e36['json']()['catch'](()=>({}));throw new Error(_0x1ca8d2['error']||_0x1ca8d2['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x159e36['json']();},async 'syncToIbmi'(_0xadd8a2,_0x36fdd5,_0x3339b4=null,_0x1d749a=null,_0x462cd1=null){if(!_0xadd8a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21ad94={'library':_0x36fdd5};if(_0x3339b4)_0x21ad94['user']=_0x3339b4;if(_0x1d749a)_0x21ad94['password']=_0x1d749a;if(_0x462cd1)_0x21ad94['files']=_0x462cd1;const _0x848c81=await fetch(API_BASE+'/tasks/'+_0xadd8a2+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ad94)});if(!_0x848c81['ok']){const _0x59d121=await _0x848c81['json']()['catch'](()=>({}));throw new Error(_0x59d121['error']||_0x59d121['message']||'Sync\x20failed');}return await _0x848c81['json']();},async 'getIbmiSyncLog'(_0x53d411){if(!_0x53d411)throw new Error('Task\x20ID\x20is\x20required');const _0x1fc7a5=await fetch(API_BASE+'/tasks/'+_0x53d411+'/ibmi-sync-log');if(!_0x1fc7a5['ok']){const _0x2dcc52=await _0x1fc7a5['json']()['catch'](()=>({}));throw new Error(_0x2dcc52['error']||_0x2dcc52['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1fc7a5['json']();},async 'pullChanges'(_0x4ebc20){if(!_0x4ebc20)throw new Error('Task\x20ID\x20is\x20required');const _0x843ff6=await fetch(API_BASE+'/tasks/'+_0x4ebc20+'/pull-changes',{'method':'POST'});if(!_0x843ff6['ok']){const _0x246f7d=await _0x843ff6['json']()['catch'](()=>({}));throw new Error(_0x246f7d['error']||_0x246f7d['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x843ff6['statusText']);}return await _0x843ff6['json']();},async 'readFile'(_0x3c16b9,_0x1872c3){if(!_0x3c16b9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1872c3)throw new Error('File\x20path\x20is\x20required');const _0xce9d50=await fetch(API_BASE+'/tasks/'+_0x3c16b9+'/files?path='+encodeURIComponent(_0x1872c3));if(!_0xce9d50['ok']){const _0xc5487c=await _0xce9d50['json']()['catch'](()=>({}));throw new Error(_0xc5487c['error']||_0xc5487c['message']||'Failed\x20to\x20read\x20file:\x20'+_0xce9d50['statusText']);}return await _0xce9d50['json']();},'getTaskFileDownloadUrl'(_0x1bcdd2,_0x18bdc4){if(!_0x1bcdd2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x18bdc4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x1bcdd2+'/files/download?path='+encodeURIComponent(_0x18bdc4);},async 'writeFile'(_0x30c4cd,_0x6d7248,_0x300292){if(!_0x30c4cd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d7248)throw new Error('File\x20path\x20is\x20required');if(_0x300292===undefined)throw new Error('Content\x20is\x20required');const _0x58ddf4=await fetch(API_BASE+'/tasks/'+_0x30c4cd+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x6d7248,'content':_0x300292})});if(!_0x58ddf4['ok']){const _0x1b1a92=await _0x58ddf4['json']()['catch'](()=>({}));throw new Error(_0x1b1a92['error']||_0x1b1a92['message']||'Failed\x20to\x20write\x20file:\x20'+_0x58ddf4['statusText']);}return await _0x58ddf4['json']();},async 'uploadTaskFiles'(_0x5b3f3b,_0x51163c,_0x563d54){if(!_0x5b3f3b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x51163c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x563d54||_0x563d54['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x198ba0=new FormData();_0x198ba0['append']('targetDir',_0x51163c);for(const _0x414403 of _0x563d54){_0x198ba0['append']('files',_0x414403,_0x414403['name']);}const _0x5b7a33=await fetch(API_BASE+'/tasks/'+_0x5b3f3b+'/files/upload',{'method':'POST','body':_0x198ba0});if(!_0x5b7a33['ok']){const _0x73b3c1=await _0x5b7a33['json']()['catch'](()=>({}));throw new Error(_0x73b3c1['error']||_0x73b3c1['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x5b7a33['statusText']);}return await _0x5b7a33['json']();},async 'createDirectory'(_0x4c3399,_0x8835df){if(!_0x4c3399)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8835df)throw new Error('Directory\x20path\x20is\x20required');const _0x36edd1=await fetch(API_BASE+'/tasks/'+_0x4c3399+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x8835df})});if(!_0x36edd1['ok']){const _0x186895=await _0x36edd1['json']()['catch'](()=>({}));throw new Error(_0x186895['error']||_0x186895['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x36edd1['statusText']);}return await _0x36edd1['json']();},async 'renamePath'(_0x4fe701,_0x12352e,_0x2cbffd){if(!_0x4fe701)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12352e)throw new Error('Source\x20path\x20is\x20required');if(!_0x2cbffd)throw new Error('Destination\x20path\x20is\x20required');const _0x27ffae=await fetch(API_BASE+'/tasks/'+_0x4fe701+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x12352e,'newPath':_0x2cbffd})});if(!_0x27ffae['ok']){const _0x4f98fb=await _0x27ffae['json']()['catch'](()=>({}));throw new Error(_0x4f98fb['error']||_0x4f98fb['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x27ffae['statusText']);}return await _0x27ffae['json']();},async 'deleteFile'(_0x54b99e,_0x5b18cb){if(!_0x54b99e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b18cb)throw new Error('File\x20path\x20is\x20required');const _0x4f880a=await fetch(API_BASE+'/tasks/'+_0x54b99e+'/files?path='+encodeURIComponent(_0x5b18cb),{'method':'DELETE'});if(!_0x4f880a['ok']){const _0x1d304b=await _0x4f880a['json']()['catch'](()=>({}));throw new Error(_0x1d304b['error']||_0x1d304b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f880a['statusText']);}return await _0x4f880a['json']();},async 'deleteDirectory'(_0x4f4aa6,_0x8ca208){if(!_0x4f4aa6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8ca208)throw new Error('Directory\x20path\x20is\x20required');const _0x45450d=await fetch(API_BASE+'/tasks/'+_0x4f4aa6+'/files/directory?path='+encodeURIComponent(_0x8ca208),{'method':'DELETE'});if(!_0x45450d['ok']){const _0x12f881=await _0x45450d['json']()['catch'](()=>({}));throw new Error(_0x12f881['error']||_0x12f881['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x45450d['statusText']);}return await _0x45450d['json']();},async 'discardFile'(_0xf24f5d,_0x95e69f,_0x4be490){if(!_0xf24f5d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x95e69f)throw new Error('File\x20path\x20is\x20required');if(!_0x4be490)throw new Error('Repository\x20path\x20is\x20required');const _0x51acc9=await fetch(API_BASE+'/tasks/'+_0xf24f5d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x95e69f,'repoPath':_0x4be490})});if(!_0x51acc9['ok']){const _0x20c901=await _0x51acc9['json']()['catch'](()=>({}));throw new Error(_0x20c901['error']||_0x20c901['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x51acc9['statusText']);}return await _0x51acc9['json']();},async 'followUpTask'(_0x356e17,_0x178c7e={}){if(!_0x356e17)throw new Error('Task\x20ID\x20is\x20required');if(!_0x178c7e['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x58f8f1,_0x3a2ff7={};if(_0x178c7e['files']&&_0x178c7e['files']['length']>0x0){const _0x2fa21a=new FormData();_0x2fa21a['append']('instructions',_0x178c7e['instructions']);for(const _0x1a2a9b of _0x178c7e['files']){_0x2fa21a['append']('attachments',_0x1a2a9b);}_0x58f8f1=_0x2fa21a;}else _0x3a2ff7['Content-Type']='application/json',_0x58f8f1=JSON['stringify']({'instructions':_0x178c7e['instructions']});const _0x23887c=await fetch(API_BASE+'/tasks/'+_0x356e17+'/follow-up',{'method':'POST','headers':_0x3a2ff7,'body':_0x58f8f1});if(!_0x23887c['ok']){const _0x530acf=await _0x23887c['json']()['catch'](()=>({}));throw new Error(_0x530acf['error']||_0x530acf['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x23887c['statusText']);}return await _0x23887c['json']();},async 'getTaskRewindPoints'(_0x5a9976){if(!_0x5a9976)throw new Error('Task\x20ID\x20is\x20required');const _0xd3b6e1=await fetch(API_BASE+'/tasks/'+_0x5a9976+'/rewind-points');if(!_0xd3b6e1['ok']){const _0x2cd473=await _0xd3b6e1['json']()['catch'](()=>({}));throw new Error(_0x2cd473['error']||_0x2cd473['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xd3b6e1['statusText']);}return await _0xd3b6e1['json']();},async 'rewindTask'(_0x4d77dc,_0x19b9b1={}){if(!_0x4d77dc)throw new Error('Task\x20ID\x20is\x20required');const _0x47581d=Number['isInteger'](_0x19b9b1['targetFollowUpCount'])?_0x19b9b1['targetFollowUpCount']:0x0,_0x598373={'targetFollowUpCount':_0x47581d};typeof _0x19b9b1['instructions']==='string'&&_0x19b9b1['instructions']['trim']()&&(_0x598373['instructions']=_0x19b9b1['instructions']['trim']());typeof _0x19b9b1['rewindFiles']==='boolean'&&(_0x598373['rewindFiles']=_0x19b9b1['rewindFiles']);const _0x202aa6=await fetch(API_BASE+'/tasks/'+_0x4d77dc+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x598373)});if(!_0x202aa6['ok']){const _0x180998=await _0x202aa6['json']()['catch'](()=>({}));throw new Error(_0x180998['error']||_0x180998['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x202aa6['statusText']);}return await _0x202aa6['json']();},async 'login'(_0x4ba872,_0xb928fe){const _0x4cb64f=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4ba872,'password':_0xb928fe})});if(!_0x4cb64f['ok']){const _0x39ea49=await _0x4cb64f['json']();throw new Error(_0x39ea49['message']||'Login\x20failed');}return await _0x4cb64f['json']();},async 'logout'(){const _0x596fb9=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x596fb9['ok']){const _0x56ea3d=await _0x596fb9['json']();throw new Error(_0x56ea3d['message']||'Logout\x20failed');}return await _0x596fb9['json']();},async 'getCurrentUser'(){const _0x4e139e=await fetch(API_BASE+'/auth/me');if(!_0x4e139e['ok'])throw new Error('Not\x20authenticated');const _0x70336=await _0x4e139e['json']();return _0x70336['user'];},async 'getRolesInfo'(){const _0x1bbe09=await fetch(API_BASE+'/users/roles');if(!_0x1bbe09['ok']){const _0xc1bfc7=await _0x1bbe09['json']();throw new Error(_0xc1bfc7['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1bbe09['json']();},async 'getUsers'(){const _0x39b275=await fetch(API_BASE+'/users');if(!_0x39b275['ok']){const _0x4a852f=await _0x39b275['json']();throw new Error(_0x4a852f['message']||'Failed\x20to\x20get\x20users');}return await _0x39b275['json']();},async 'getUser'(_0x5e5db3){const _0x3536d9=await fetch(API_BASE+'/users/'+_0x5e5db3);if(!_0x3536d9['ok']){const _0x37ec14=await _0x3536d9['json']();throw new Error(_0x37ec14['message']||'Failed\x20to\x20get\x20user');}return await _0x3536d9['json']();},async 'createUser'(_0x3471f3){const _0x4cedc5=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3471f3)});if(!_0x4cedc5['ok']){const _0x240719=await _0x4cedc5['json']();throw new Error(_0x240719['message']||'Failed\x20to\x20create\x20user');}return await _0x4cedc5['json']();},async 'updateUser'(_0x1823a8,_0x2ca81f){const _0x3f52bd=await fetch(API_BASE+'/users/'+_0x1823a8,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ca81f)});if(!_0x3f52bd['ok']){const _0x1efe40=await _0x3f52bd['json']();throw new Error(_0x1efe40['message']||'Failed\x20to\x20update\x20user');}return await _0x3f52bd['json']();},async 'deleteUser'(_0x38b093){const _0x573371=await fetch(API_BASE+'/users/'+_0x38b093,{'method':'DELETE'});if(!_0x573371['ok']){const _0x40c283=await _0x573371['json']();throw new Error(_0x40c283['message']||'Failed\x20to\x20delete\x20user');}return await _0x573371['json']();},async 'stopAllContainers'(){const _0x5c885c=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x199df4=await _0x5c885c['json']()['catch'](()=>({}));if(!_0x5c885c['ok'])throw new Error(_0x199df4['message']||_0x199df4['error']||'Failed\x20to\x20stop\x20containers');return _0x199df4;},async 'removeStoppedContainers'(){const _0x33e60f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x63eeb6=await _0x33e60f['json']()['catch'](()=>({}));if(!_0x33e60f['ok'])throw new Error(_0x63eeb6['message']||_0x63eeb6['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x63eeb6;},async 'pruneDockerResources'(){const _0x54ffda=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x55bc8d=await _0x54ffda['json']()['catch'](()=>({}));if(!_0x54ffda['ok'])throw new Error(_0x55bc8d['message']||_0x55bc8d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x55bc8d;},async 'getUpdateSettings'(){const _0x496803=await fetch(API_BASE+'/health/update-settings'),_0xb0b01e=await _0x496803['json']()['catch'](()=>({}));if(!_0x496803['ok'])throw new Error(_0xb0b01e['message']||_0xb0b01e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0xb0b01e;},async 'applyServerUpdate'(_0x38634b){const _0x51add4=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x38634b})}),_0x2bbc81=await _0x51add4['json']()['catch'](()=>({}));if(!_0x51add4['ok']){const _0x1dad91=new Error(_0x2bbc81['message']||_0x2bbc81['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x2bbc81['output']!==undefined)_0x1dad91['output']=_0x2bbc81['output'];if(_0x2bbc81['error']!==undefined)_0x1dad91['commandError']=_0x2bbc81['error'];throw _0x1dad91;}return _0x2bbc81;},async 'restartServer'(){const _0x2e319a=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x29f716=await _0x2e319a['json']()['catch'](()=>({}));if(!_0x2e319a['ok'])throw new Error(_0x29f716['message']||_0x29f716['error']||'Failed\x20to\x20restart\x20server');return _0x29f716;},async 'createPasswordToken'(_0x3cb2bb,_0x2dfdb7='setup',_0x2a1941=![]){const _0x255cac=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3cb2bb,'type':_0x2dfdb7,'sendEmail':_0x2a1941})});if(!_0x255cac['ok']){const _0x492e71=await _0x255cac['json']();throw new Error(_0x492e71['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x255cac['json']();},async 'getEmailConfig'(){const _0x59418e=await fetch(API_BASE+'/password/email-config');if(!_0x59418e['ok']){const _0xc4502=await _0x59418e['json']();throw new Error(_0xc4502['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x59418e['json']();},async 'updateTaskName'(_0x37b2f5,_0x381cdb){const _0x19c7c2=await fetch(API_BASE+'/tasks/'+_0x37b2f5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x381cdb})});if(!_0x19c7c2['ok']){const _0x2ef825=await _0x19c7c2['json']();throw new Error(_0x2ef825['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x19c7c2['json']();},async 'pinTask'(_0x308461,_0x161583,_0x10fa81=null){if(!_0x308461)throw new Error('Task\x20ID\x20is\x20required');const _0x10c7a7={'pinned':_0x161583};_0x10fa81&&_0x10fa81['length']>0x0&&(_0x10c7a7['additionalTaskIds']=_0x10fa81);const _0x3f23b8=await fetch(API_BASE+'/tasks/'+_0x308461+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c7a7)});if(!_0x3f23b8['ok']){const _0x20b350=await _0x3f23b8['json']();throw new Error(_0x20b350['error']||'Failed\x20to\x20pin\x20task');}return await _0x3f23b8['json']();},async 'setTaskWinner'(_0x13bdd8,_0x3cda45,_0x182ae1=[]){if(!_0x13bdd8)throw new Error('Task\x20ID\x20is\x20required');const _0x57edb8=await fetch(API_BASE+'/tasks/'+_0x13bdd8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3cda45,'siblings':_0x182ae1})});if(!_0x57edb8['ok']){const _0x2e11cd=await _0x57edb8['json']();throw new Error(_0x2e11cd['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x57edb8['json']();},async 'setTaskLoser'(_0x18a8c5,_0xf455ba){if(!_0x18a8c5)throw new Error('Task\x20ID\x20is\x20required');const _0x29290e=await fetch(API_BASE+'/tasks/'+_0x18a8c5+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xf455ba})});if(!_0x29290e['ok']){const _0x14ee10=await _0x29290e['json']();throw new Error(_0x14ee10['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x29290e['json']();},async 'createTaskGroup'(_0x33e727){const _0x43e1d1=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33e727)});if(!_0x43e1d1['ok']){const _0x1237ae=await _0x43e1d1['json']();throw new Error(_0x1237ae['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x43e1d1['json']();},async 'getTaskGroups'(_0x591c9f={}){const _0x532bf2=new URLSearchParams();if(_0x591c9f['userId'])_0x532bf2['set']('userId',String(_0x591c9f['userId']));if(_0x591c9f['status'])_0x532bf2['set']('status',String(_0x591c9f['status']));if(_0x591c9f['limit'])_0x532bf2['set']('limit',String(_0x591c9f['limit']));const _0x95572a=API_BASE+'/tasks/groups'+(_0x532bf2['toString']()?'?'+_0x532bf2['toString']():''),_0x55e2db=await fetch(_0x95572a);if(!_0x55e2db['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x55e2db['json']();},async 'getTaskGroup'(_0x5e716d){const _0x218b49=await fetch(API_BASE+'/tasks/groups/'+_0x5e716d);if(!_0x218b49['ok']){const _0x38adf3=await _0x218b49['json']();throw new Error(_0x38adf3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x218b49['json']();},async 'updateTaskGroup'(_0x8b9ce6,_0x3aa176,_0x40d49e){const _0x4938e8=await fetch(API_BASE+'/tasks/'+_0x8b9ce6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3aa176,'groupIndex':_0x40d49e})});if(!_0x4938e8['ok']){const _0x478298=await _0x4938e8['json']();throw new Error(_0x478298['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x4938e8['json']();},async 'removeTaskFromGroup'(_0x5e2192){return this['updateTaskGroup'](_0x5e2192,null,null);},async 'deleteTaskGroup'(_0x55fe0b,_0x162db0=![]){const _0x4fba52=_0x162db0?'?deleteTasks=true':'',_0x55faba=await fetch(API_BASE+'/tasks/groups/'+_0x55fe0b+_0x4fba52,{'method':'DELETE'});if(!_0x55faba['ok']){const _0x5d27bb=await _0x55faba['json']();throw new Error(_0x5d27bb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x55f0f1,_0x40cafa){const _0x2d6134=await fetch(API_BASE+'/tasks/groups/'+_0x55f0f1+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x40cafa})});if(!_0x2d6134['ok']){const _0x1736ad=await _0x2d6134['json']();throw new Error(_0x1736ad['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2d6134['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x48c7f6){if(!_0x48c7f6)throw new Error('Task\x20ID\x20is\x20required');const _0x468a96=await fetch(API_BASE+'/tasks/'+_0x48c7f6+'/comments');if(!_0x468a96['ok']){const _0x204ec9=await _0x468a96['json']()['catch'](()=>({}));throw new Error(_0x204ec9['error']||'Failed\x20to\x20get\x20comments');}return await _0x468a96['json']();},async 'addComment'(_0xfb2efb,_0x2ab3e3){if(!_0xfb2efb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ab3e3)throw new Error('Comment\x20content\x20is\x20required');const _0x5cba18=await fetch(API_BASE+'/tasks/'+_0xfb2efb+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2ab3e3})});if(!_0x5cba18['ok']){const _0x30640e=await _0x5cba18['json']()['catch'](()=>({}));throw new Error(_0x30640e['error']||'Failed\x20to\x20add\x20comment');}return await _0x5cba18['json']();},async 'updateComment'(_0x271f38,_0x17cd17,_0x34b17e){if(!_0x271f38)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17cd17)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x34b17e)throw new Error('Comment\x20content\x20is\x20required');const _0x2a502e=await fetch(API_BASE+'/tasks/'+_0x271f38+'/comments/'+_0x17cd17,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x34b17e})});if(!_0x2a502e['ok']){const _0x3b2f7a=await _0x2a502e['json']()['catch'](()=>({}));throw new Error(_0x3b2f7a['error']||'Failed\x20to\x20update\x20comment');}return await _0x2a502e['json']();},async 'deleteComment'(_0x3ae2de,_0x13015a){if(!_0x3ae2de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x13015a)throw new Error('Comment\x20ID\x20is\x20required');const _0x4db171=await fetch(API_BASE+'/tasks/'+_0x3ae2de+'/comments/'+_0x13015a,{'method':'DELETE'});if(!_0x4db171['ok']){const _0x54aa12=await _0x4db171['json']()['catch'](()=>({}));throw new Error(_0x54aa12['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4db171['json']();},async 'createObjective'(_0x4de298){const _0x2182ba={'objective':!![],'name':_0x4de298['name']||'','environment':_0x4de298['environment']||null,'agents':_0x4de298['agents']||[],'branches':_0x4de298['branches']||{},'isPinned':_0x4de298['isPinned']||![],'parentObjectiveId':_0x4de298['parentObjectiveId']||null,'env_vars':_0x4de298['envVars']||{},'parameters':{'instructions':_0x4de298['instructions']||''},'files':_0x4de298['files']||[],'jira':_0x4de298['jira']||null};return this['createTask'](_0x2182ba);},async 'updateObjective'(_0x2d4b8d,_0x2ced43,_0x23f6dd=[],_0xf7ec09=[]){let _0x17f486,_0x251f79={};const _0x9ccfb9={..._0x2ced43};_0xf7ec09&&_0xf7ec09['length']>0x0&&(_0x9ccfb9['removeAttachments']=_0xf7ec09);if(_0x23f6dd&&_0x23f6dd['length']>0x0){const _0x5a3c53=new FormData();for(const [_0x4098bd,_0x4660a3]of Object['entries'](_0x9ccfb9)){if(_0x4660a3==null)continue;typeof _0x4660a3==='object'?_0x5a3c53['append'](_0x4098bd,JSON['stringify'](_0x4660a3)):_0x5a3c53['append'](_0x4098bd,String(_0x4660a3));}for(const _0x103282 of _0x23f6dd){_0x5a3c53['append']('attachments',_0x103282);}_0x17f486=_0x5a3c53;}else _0x251f79['Content-Type']='application/json',_0x17f486=JSON['stringify'](_0x9ccfb9);const _0xb2cb68=await fetch(API_BASE+'/tasks/'+_0x2d4b8d,{'method':'PATCH','headers':_0x251f79,'body':_0x17f486});if(!_0xb2cb68['ok']){const _0x2bb427=await _0xb2cb68['json']();throw new Error(_0x2bb427['error']||'Failed\x20to\x20update\x20objective');}return await _0xb2cb68['json']();},async 'deleteObjective'(_0xddcfd3){return this['deleteTask'](_0xddcfd3);},async 'launchObjective'(_0x13e5da,_0x41b8db={}){const _0x4c5ccd=await fetch(API_BASE+'/tasks/'+_0x13e5da+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41b8db)});if(!_0x4c5ccd['ok']){const _0x36ea0c=await _0x4c5ccd['json']();throw new Error(_0x36ea0c['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4c5ccd['json']();},async 'getObjectiveAttachments'(_0x4a6c0b){return this['getTaskAttachments'](_0x4a6c0b);},async 'createJudgeTask'({environment:_0x405bfc,judgeAgent:_0x513ecf,groupId:_0x1ae8e9,taskIds:_0x534072,judgeCustomInstructions:_0x27ee72,isPinned:_0x3dcddf}){const _0x1bb0e3=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x405bfc,'judgeAgent':_0x513ecf,'groupId':_0x1ae8e9,'taskIds':_0x534072,'judgeCustomInstructions':_0x27ee72,'isPinned':_0x3dcddf})});if(!_0x1bb0e3['ok']){const _0x22f063=await _0x1bb0e3['json']();throw new Error(_0x22f063['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x1bb0e3['json']();},async 'getJudgeTasks'(_0x249db7){const _0x59e1aa=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x249db7));if(!_0x59e1aa['ok']){const _0x5e8bc9=await _0x59e1aa['json']();throw new Error(_0x5e8bc9['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x59e1aa['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3ab438,_0x14e20b,_0x345cdd=''){const _0x407cc1=await fetch(API_BASE+'/tasks/'+_0x3ab438+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14e20b,'customPreamble':_0x345cdd})});if(!_0x407cc1['ok']){const _0xdb0d17=await _0x407cc1['json']();throw new Error(_0xdb0d17['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x407cc1['json']();},async 'getJiraConfig'(){const _0x1a5808=await fetch(API_BASE+'/jira/config');if(!_0x1a5808['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1a5808['json']();},async 'getJiraIssue'(_0x265a68){const _0x2b8581=await fetch(API_BASE+'/jira/issues/'+_0x265a68);if(!_0x2b8581['ok']){const _0x310c2f=await _0x2b8581['json']()['catch'](()=>({}));throw new Error(_0x310c2f['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2b8581['statusText']);}return await _0x2b8581['json']();},async 'searchJiraIssues'(_0x5e3a07,_0x38fa51=0x14){const _0x5d5836=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5e3a07,'maxResults':_0x38fa51})});if(!_0x5d5836['ok']){const _0x50fb5a=await _0x5d5836['json']()['catch'](()=>({}));throw new Error(_0x50fb5a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x5d5836['statusText']);}return await _0x5d5836['json']();},async 'postJiraComment'(_0x513d89,_0x128a03){const _0xd3e2ab=await fetch(API_BASE+'/jira/issues/'+_0x513d89+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x128a03})});if(!_0xd3e2ab['ok']){const _0x11236a=await _0xd3e2ab['json']()['catch'](()=>({}));throw new Error(_0x11236a['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0xd3e2ab['statusText']);}return await _0xd3e2ab['json']();},async 'getJiraComments'(_0x4abfd3){const _0x387db4=await fetch(API_BASE+'/jira/issues/'+_0x4abfd3+'/comments');if(!_0x387db4['ok']){const _0x45064d=await _0x387db4['json']()['catch'](()=>({}));throw new Error(_0x45064d['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x387db4['statusText']);}return await _0x387db4['json']();},async 'promptParameter'({environment:_0x9c9908,command:_0x249a72,parser:parser='json'}){const _0x558698=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x9c9908,'command':_0x249a72,'parser':parser})});if(!_0x558698['ok']){const _0x25c6c8=await _0x558698['json']()['catch'](()=>({}));throw new Error(_0x25c6c8['message']||_0x25c6c8['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x558698['statusText']);}return await _0x558698['json']();},async 'promptParameterStream'(_0x2f3e7f,_0x4d5c45){const _0x189a82=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f3e7f)});if(!_0x189a82['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x189a82['statusText']);const _0x4624af=_0x189a82['body']['getReader'](),_0x1540fc=new TextDecoder();let _0xb2ecbd='';return new Promise((_0xa8a5a3,_0x3593b4)=>{const _0x25e9a2=async()=>{try{const {done:_0x558ff9,value:_0x46029d}=await _0x4624af['read']();if(_0x558ff9)return;_0xb2ecbd+=_0x1540fc['decode'](_0x46029d,{'stream':!![]});const _0x26b8e9=_0xb2ecbd['split']('\x0a\x0a');_0xb2ecbd=_0x26b8e9['pop']()||'';for(const _0x4fdc0b of _0x26b8e9){if(!_0x4fdc0b['trim']())continue;const _0x54de36=_0x4fdc0b['split']('\x0a');let _0x3656c2='message',_0x70cf57='';for(const _0x34c428 of _0x54de36){if(_0x34c428['startsWith']('event:'))_0x3656c2=_0x34c428['substring'](0x6)['trim']();else _0x34c428['startsWith']('data:')&&(_0x70cf57=_0x34c428['substring'](0x5)['trim']());}if(!_0x70cf57)continue;try{const _0x2fd831=JSON['parse'](_0x70cf57);if(_0x3656c2==='progress'&&_0x4d5c45)_0x4d5c45(_0x2fd831['stage'],_0x2fd831['message']);else{if(_0x3656c2==='result'){_0xa8a5a3(_0x2fd831);return;}else{if(_0x3656c2==='error'){let _0x4b03b4=_0x2fd831['message']||_0x2fd831['error']||'Prompt\x20command\x20failed';_0x2fd831['rawOutput']&&(_0x4b03b4+='\x0a\x0aRaw\x20output:\x0a'+_0x2fd831['rawOutput']);_0x3593b4(new Error(_0x4b03b4));return;}}}}catch(_0x382369){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x382369),console['error']('Event\x20type:',_0x3656c2),console['error']('Event\x20data:',_0x70cf57),console['error']('First\x20200\x20chars:',_0x70cf57['substring'](0x0,0xc8)),_0x3593b4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x382369['message']+'\x0a\x0aData:\x20'+_0x70cf57['substring'](0x0,0x1f4)));return;}}_0x25e9a2();}catch(_0x1ac4fc){_0x3593b4(_0x1ac4fc);}};_0x25e9a2();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xad6369){const _0x1b079b=await fetch(''+API_BASE+_0xad6369);if(!_0x1b079b['ok']){const _0x3a0103=await _0x1b079b['json']()['catch'](()=>({'error':_0x1b079b['statusText']})),_0x560d7f=new Error(_0x3a0103['error']||_0x3a0103['message']||_0x1b079b['statusText']);if(_0x3a0103['detail']!==undefined)_0x560d7f['detail']=_0x3a0103['detail'];throw _0x560d7f;}return await _0x1b079b['json']();},async 'post'(_0x35d5cc,_0x10a324){const _0x49f7e7=await fetch(''+API_BASE+_0x35d5cc,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10a324)});if(!_0x49f7e7['ok']){const _0x151b13=await _0x49f7e7['json']()['catch'](()=>({'error':_0x49f7e7['statusText']})),_0x5cbf7e=new Error(_0x151b13['error']||_0x151b13['message']||_0x49f7e7['statusText']);if(_0x151b13['detail']!==undefined)_0x5cbf7e['detail']=_0x151b13['detail'];throw _0x5cbf7e;}return await _0x49f7e7['json']();},async 'put'(_0x12eeb3,_0x2a2594){const _0x42af12=await fetch(''+API_BASE+_0x12eeb3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a2594)});if(!_0x42af12['ok']){const _0x554f53=await _0x42af12['json']()['catch'](()=>({'error':_0x42af12['statusText']})),_0x1b37f9=new Error(_0x554f53['error']||_0x554f53['message']||_0x42af12['statusText']);if(_0x554f53['detail']!==undefined)_0x1b37f9['detail']=_0x554f53['detail'];throw _0x1b37f9;}return await _0x42af12['json']();},async 'delete'(_0x5bd2b0,_0x464709){const _0x4a043f={'method':'DELETE'};_0x464709&&(_0x4a043f['headers']={'Content-Type':'application/json'},_0x4a043f['body']=JSON['stringify'](_0x464709));const _0x341b22=await fetch(''+API_BASE+_0x5bd2b0,_0x4a043f);if(!_0x341b22['ok']){const _0x33b116=await _0x341b22['json']()['catch'](()=>({'error':_0x341b22['statusText']})),_0x40c4d0=new Error(_0x33b116['error']||_0x33b116['message']||_0x341b22['statusText']);if(_0x33b116['detail']!==undefined)_0x40c4d0['detail']=_0x33b116['detail'];throw _0x40c4d0;}return await _0x341b22['json']();},async 'getSkills'(){const _0x44ed7e=await fetch(API_BASE+'/skills');if(!_0x44ed7e['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x44ed7e['statusText']);return await _0x44ed7e['json']();},async 'getSkill'(_0x31ad30){const _0x362372=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31ad30));if(!_0x362372['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x362372['statusText']);return await _0x362372['json']();},async 'createSkill'(_0x37499e){const _0x6f34c7=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37499e)});if(!_0x6f34c7['ok']){const _0x1b5b4d=await _0x6f34c7['json']()['catch'](()=>({'error':_0x6f34c7['statusText']})),_0xaf3524=new Error(_0x1b5b4d['error']||_0x1b5b4d['message']||_0x6f34c7['statusText']);if(_0x1b5b4d['detail']!==undefined)_0xaf3524['detail']=_0x1b5b4d['detail'];throw _0xaf3524;}return await _0x6f34c7['json']();},async 'updateSkill'(_0x1e4b70,_0x3b18a4){const _0x5c4ce7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e4b70),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b18a4)});if(!_0x5c4ce7['ok']){const _0x88b78d=await _0x5c4ce7['json']()['catch'](()=>({'error':_0x5c4ce7['statusText']})),_0x531016=new Error(_0x88b78d['error']||_0x88b78d['message']||_0x5c4ce7['statusText']);if(_0x88b78d['detail']!==undefined)_0x531016['detail']=_0x88b78d['detail'];throw _0x531016;}return await _0x5c4ce7['json']();},async 'deleteSkill'(_0x57a88b){const _0x2eadff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x57a88b),{'method':'DELETE'});if(!_0x2eadff['ok']){const _0x369c99=await _0x2eadff['json']()['catch'](()=>({'error':_0x2eadff['statusText']})),_0x41c06e=new Error(_0x369c99['error']||_0x369c99['message']||_0x2eadff['statusText']);if(_0x369c99['detail']!==undefined)_0x41c06e['detail']=_0x369c99['detail'];throw _0x41c06e;}return await _0x2eadff['json']();},async 'getSkillFile'(_0x136a78,_0x596406){const _0xb92939=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x136a78)+'/files/'+_0x596406);if(!_0xb92939['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0xb92939['statusText']);return await _0xb92939['json']();},async 'saveSkillFile'(_0x291b28,_0x25bb10,_0x565ec3){const _0x37c0d4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x291b28)+'/files/'+_0x25bb10,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x565ec3})});if(!_0x37c0d4['ok']){const _0x307604=await _0x37c0d4['json']()['catch'](()=>({'error':_0x37c0d4['statusText']})),_0x3354b3=new Error(_0x307604['error']||_0x307604['message']||_0x37c0d4['statusText']);if(_0x307604['detail']!==undefined)_0x3354b3['detail']=_0x307604['detail'];throw _0x3354b3;}return await _0x37c0d4['json']();},async 'deleteSkillFile'(_0x228592,_0xae2192){const _0x223a6e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x228592)+'/files/'+_0xae2192,{'method':'DELETE'});if(!_0x223a6e['ok']){const _0xbd4390=await _0x223a6e['json']()['catch'](()=>({'error':_0x223a6e['statusText']})),_0x1225e4=new Error(_0xbd4390['error']||_0xbd4390['message']||_0x223a6e['statusText']);if(_0xbd4390['detail']!==undefined)_0x1225e4['detail']=_0xbd4390['detail'];throw _0x1225e4;}return await _0x223a6e['json']();},async 'pullSkills'(){const _0x5e3933=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5e3933['ok']){const _0x213cb4=await _0x5e3933['json']()['catch'](()=>({'error':_0x5e3933['statusText']})),_0x28cc01=new Error(_0x213cb4['error']||_0x213cb4['message']||_0x5e3933['statusText']);if(_0x213cb4['detail']!==undefined)_0x28cc01['detail']=_0x213cb4['detail'];throw _0x28cc01;}return await _0x5e3933['json']();},async 'commitSkills'(_0x31de65,_0x461aef={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x461aef,_0x15eb1e=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x31de65,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x15eb1e['ok']){const _0x25733b=await _0x15eb1e['json']()['catch'](()=>({'error':_0x15eb1e['statusText']})),_0x31c701=new Error(_0x25733b['error']||_0x25733b['message']||_0x15eb1e['statusText']);if(_0x25733b['detail']!==undefined)_0x31c701['detail']=_0x25733b['detail'];throw _0x31c701;}return await _0x15eb1e['json']();},async 'discardSkillsChanges'(){const _0x38757b=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x38757b['ok']){const _0x1e4d3c=await _0x38757b['json']()['catch'](()=>({'error':_0x38757b['statusText']})),_0x53169c=new Error(_0x1e4d3c['error']||_0x1e4d3c['message']||_0x38757b['statusText']);if(_0x1e4d3c['detail']!==undefined)_0x53169c['detail']=_0x1e4d3c['detail'];throw _0x53169c;}return await _0x38757b['json']();},async 'getSkillCatalog'(){const _0x519bac=await fetch(API_BASE+'/external-skills/catalog');if(!_0x519bac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x519bac['statusText']);return await _0x519bac['json']();},async 'getImportedSkillsRegistry'(){const _0x526834=await fetch(API_BASE+'/external-skills/registry');if(!_0x526834['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x526834['statusText']);return await _0x526834['json']();},async 'importCatalogSkill'(_0x47d41a){const _0x4ea4b2=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x47d41a})});if(!_0x4ea4b2['ok']){const _0x5439ff=await _0x4ea4b2['json']()['catch'](()=>({'error':_0x4ea4b2['statusText']})),_0x3d33c7=new Error(_0x5439ff['error']||_0x5439ff['message']||_0x4ea4b2['statusText']);if(_0x5439ff['detail']!==undefined)_0x3d33c7['detail']=_0x5439ff['detail'];throw _0x3d33c7;}return await _0x4ea4b2['json']();},async 'importSkillFromGit'(_0x373771,_0x100e1f,_0x2d4d78='main',_0x296925=null){const _0x587abe=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x373771,'skillPath':_0x100e1f,'branch':_0x2d4d78,'skillId':_0x296925})});if(!_0x587abe['ok']){const _0x331041=await _0x587abe['json']()['catch'](()=>({'error':_0x587abe['statusText']})),_0x29cbbb=new Error(_0x331041['error']||_0x331041['message']||_0x587abe['statusText']);if(_0x331041['detail']!==undefined)_0x29cbbb['detail']=_0x331041['detail'];throw _0x29cbbb;}return await _0x587abe['json']();},async 'probeMarketplace'(_0x41b634,_0x4f2e36='main'){const _0x4e4749=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x41b634,'branch':_0x4f2e36})});if(!_0x4e4749['ok']){const _0x6b1a15=await _0x4e4749['json']()['catch'](()=>({'error':_0x4e4749['statusText']})),_0x2ac5ce=new Error(_0x6b1a15['error']||_0x6b1a15['message']||_0x4e4749['statusText']);if(_0x6b1a15['detail']!==undefined)_0x2ac5ce['detail']=_0x6b1a15['detail'];throw _0x2ac5ce;}return await _0x4e4749['json']();},async 'importMarketplaceBundle'(_0x4f8393,_0x4add69,_0x73ef87,_0x47f512=null){const _0xd89374=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4f8393,'branch':_0x4add69,'bundleId':_0x73ef87,'selectedSkills':_0x47f512})});if(!_0xd89374['ok']){const _0x45bd8a=await _0xd89374['json']()['catch'](()=>({'error':_0xd89374['statusText']})),_0x2870c1=new Error(_0x45bd8a['error']||_0x45bd8a['message']||_0xd89374['statusText']);if(_0x45bd8a['detail']!==undefined)_0x2870c1['detail']=_0x45bd8a['detail'];throw _0x2870c1;}return await _0xd89374['json']();},async 'importSkillFromFolder'(_0x5947dd,_0x34fc25=null){const _0x5dfce7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x5947dd,'skillId':_0x34fc25})});if(!_0x5dfce7['ok']){const _0x2d53d5=await _0x5dfce7['json']()['catch'](()=>({'error':_0x5dfce7['statusText']})),_0x1f40b7=new Error(_0x2d53d5['error']||_0x2d53d5['message']||_0x5dfce7['statusText']);if(_0x2d53d5['detail']!==undefined)_0x1f40b7['detail']=_0x2d53d5['detail'];throw _0x1f40b7;}return await _0x5dfce7['json']();},async 'importSkillFromNpm'(_0x24411,_0x1b00da='latest',_0x34e1db=null,_0x4f7da6=null){const _0x1668d5=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x24411,'version':_0x1b00da,'skillId':_0x34e1db,'registry':_0x4f7da6})});if(!_0x1668d5['ok']){const _0x2c62e4=await _0x1668d5['json']()['catch'](()=>({'error':_0x1668d5['statusText']})),_0x5be4f9=new Error(_0x2c62e4['error']||_0x2c62e4['message']||_0x1668d5['statusText']);if(_0x2c62e4['detail']!==undefined)_0x5be4f9['detail']=_0x2c62e4['detail'];throw _0x5be4f9;}return await _0x1668d5['json']();},async 'checkSkillUpdates'(_0x514a2f){const _0x31b305=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x514a2f)+'/check-updates',{'method':'POST'});if(!_0x31b305['ok']){const _0x5a3d96=await _0x31b305['json']()['catch'](()=>({'error':_0x31b305['statusText']})),_0x24c296=new Error(_0x5a3d96['error']||_0x5a3d96['message']||_0x31b305['statusText']);if(_0x5a3d96['detail']!==undefined)_0x24c296['detail']=_0x5a3d96['detail'];throw _0x24c296;}return await _0x31b305['json']();},async 'updateExternalSkill'(_0x1652e5){const _0x534e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1652e5)+'/update',{'method':'POST'});if(!_0x534e42['ok']){const _0x17a201=await _0x534e42['json']()['catch'](()=>({'error':_0x534e42['statusText']})),_0x20309c=new Error(_0x17a201['error']||_0x17a201['message']||_0x534e42['statusText']);if(_0x17a201['detail']!==undefined)_0x20309c['detail']=_0x17a201['detail'];throw _0x20309c;}return await _0x534e42['json']();},async 'updateSkillFlags'(_0x467dda,_0x2789b2){const _0x41e8eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x467dda)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x2789b2})});if(!_0x41e8eb['ok']){const _0x178fec=await _0x41e8eb['json']()['catch'](()=>({'error':_0x41e8eb['statusText']})),_0x23ad42=new Error(_0x178fec['error']||_0x178fec['message']||_0x41e8eb['statusText']);if(_0x178fec['detail']!==undefined)_0x23ad42['detail']=_0x178fec['detail'];throw _0x23ad42;}return await _0x41e8eb['json']();},async 'removeFromImportedRegistry'(_0x102544){const _0x4ffb23=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x102544)+'/registry',{'method':'DELETE'});if(!_0x4ffb23['ok']){const _0x2aea81=await _0x4ffb23['json']()['catch'](()=>({'error':_0x4ffb23['statusText']})),_0x2fc942=new Error(_0x2aea81['error']||_0x2aea81['message']||_0x4ffb23['statusText']);if(_0x2aea81['detail']!==undefined)_0x2fc942['detail']=_0x2aea81['detail'];throw _0x2fc942;}return await _0x4ffb23['json']();},async 'getTeams'(){const _0x2a5468=await fetch(API_BASE+'/teams');if(!_0x2a5468['ok']){const _0x54a9f2=await _0x2a5468['json']()['catch'](()=>({'message':_0x2a5468['statusText']}));throw new Error(_0x54a9f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2a5468['json']();},async 'getTeam'(_0x296583){const _0x65b182=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x296583));if(!_0x65b182['ok']){const _0x46fd80=await _0x65b182['json']()['catch'](()=>({'message':_0x65b182['statusText']}));throw new Error(_0x46fd80['message']||'Failed\x20to\x20get\x20team');}return await _0x65b182['json']();},async 'createTeam'(_0x31dbff){const _0x575781=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31dbff)});if(!_0x575781['ok']){const _0x157a96=await _0x575781['json']()['catch'](()=>({'message':_0x575781['statusText']}));throw new Error(_0x157a96['message']||'Failed\x20to\x20create\x20team');}return await _0x575781['json']();},async 'updateTeam'(_0x56d781,_0x21d1a8){const _0x5e9b79=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x56d781),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21d1a8)});if(!_0x5e9b79['ok']){const _0x4dfb18=await _0x5e9b79['json']()['catch'](()=>({'message':_0x5e9b79['statusText']}));throw new Error(_0x4dfb18['message']||'Failed\x20to\x20update\x20team');}return await _0x5e9b79['json']();},async 'deleteTeam'(_0x285605){const _0x10af48=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x285605),{'method':'DELETE'});if(!_0x10af48['ok']){const _0x4e8537=await _0x10af48['json']()['catch'](()=>({'message':_0x10af48['statusText']}));throw new Error(_0x4e8537['message']||'Failed\x20to\x20delete\x20team');}return await _0x10af48['json']();},async 'addTeamMember'(_0x14d4f4,_0x13f34f){const _0x5d00ec=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14d4f4)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x13f34f})});if(!_0x5d00ec['ok']){const _0x218f0d=await _0x5d00ec['json']()['catch'](()=>({'message':_0x5d00ec['statusText']}));throw new Error(_0x218f0d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5d00ec['json']();},async 'removeTeamMember'(_0x4964a1,_0x1cc0e4){const _0x2f6674=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4964a1)+'/members/'+encodeURIComponent(_0x1cc0e4),{'method':'DELETE'});if(!_0x2f6674['ok']){const _0x3e5908=await _0x2f6674['json']()['catch'](()=>({'message':_0x2f6674['statusText']}));throw new Error(_0x3e5908['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2f6674['json']();},async 'getBindings'(_0x1e1ddb={}){const _0x3afedf=new URLSearchParams();if(_0x1e1ddb['resource_type'])_0x3afedf['set']('resource_type',_0x1e1ddb['resource_type']);if(_0x1e1ddb['resource_id'])_0x3afedf['set']('resource_id',_0x1e1ddb['resource_id']);if(_0x1e1ddb['subject_type'])_0x3afedf['set']('subject_type',_0x1e1ddb['subject_type']);if(_0x1e1ddb['subject_id'])_0x3afedf['set']('subject_id',_0x1e1ddb['subject_id']);const _0x2299fa=_0x3afedf['toString'](),_0x274a00=await fetch(API_BASE+'/bindings'+(_0x2299fa?'?'+_0x2299fa:''));if(!_0x274a00['ok']){const _0x3d6c6d=await _0x274a00['json']()['catch'](()=>({'message':_0x274a00['statusText']}));throw new Error(_0x3d6c6d['message']||'Failed\x20to\x20get\x20bindings');}return await _0x274a00['json']();},async 'createBinding'(_0x576abf){const _0x1dae5c=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x576abf)});if(!_0x1dae5c['ok']){const _0xaffd24=await _0x1dae5c['json']()['catch'](()=>({'message':_0x1dae5c['statusText']}));throw new Error(_0xaffd24['message']||'Failed\x20to\x20create\x20binding');}return await _0x1dae5c['json']();},async 'updateBinding'(_0x11c1da,_0x5040a9){const _0x2b5cf9=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x11c1da),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5040a9)});if(!_0x2b5cf9['ok']){const _0x21557f=await _0x2b5cf9['json']()['catch'](()=>({'message':_0x2b5cf9['statusText']}));throw new Error(_0x21557f['message']||'Failed\x20to\x20update\x20binding');}return await _0x2b5cf9['json']();},async 'deleteBinding'(_0x759586){const _0x4b431e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x759586),{'method':'DELETE'});if(!_0x4b431e['ok']){const _0x4d4778=await _0x4b431e['json']()['catch'](()=>({'message':_0x4b431e['statusText']}));throw new Error(_0x4d4778['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4b431e['json']();},async 'getRoleDefinitions'(){const _0x2b37e6=await fetch(API_BASE+'/roles');if(!_0x2b37e6['ok']){const _0x5376f5=await _0x2b37e6['json']()['catch'](()=>({'message':_0x2b37e6['statusText']}));throw new Error(_0x5376f5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2b37e6['json']();},async 'getRoleDefinition'(_0x2b37ae){const _0x249b6d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2b37ae));if(!_0x249b6d['ok']){const _0x4ef403=await _0x249b6d['json']()['catch'](()=>({'message':_0x249b6d['statusText']}));throw new Error(_0x4ef403['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x249b6d['json']();},async 'createRoleDefinition'(_0x35cd2a){const _0x4d06c7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x35cd2a)});if(!_0x4d06c7['ok']){const _0x3d6ac7=await _0x4d06c7['json']()['catch'](()=>({'message':_0x4d06c7['statusText']}));throw new Error(_0x3d6ac7['message']||_0x3d6ac7['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4d06c7['json']();},async 'updateRoleDefinition'(_0x263623,_0x3acc2c){const _0x3666f0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x263623),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3acc2c)});if(!_0x3666f0['ok']){const _0x2b6d5a=await _0x3666f0['json']()['catch'](()=>({'message':_0x3666f0['statusText']}));throw new Error(_0x2b6d5a['message']||_0x2b6d5a['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x3666f0['json']();},async 'deleteRoleDefinition'(_0x425485){const _0x3e850c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x425485),{'method':'DELETE'});if(!_0x3e850c['ok']){const _0x1da0ce=await _0x3e850c['json']()['catch'](()=>({'message':_0x3e850c['statusText']}));throw new Error(_0x1da0ce['message']||_0x1da0ce['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x3e850c['json']();},async 'getAvailablePermissions'(){const _0x4b5cee=await fetch(API_BASE+'/roles/available-permissions');if(!_0x4b5cee['ok']){const _0xeba6a7=await _0x4b5cee['json']()['catch'](()=>({'message':_0x4b5cee['statusText']}));throw new Error(_0xeba6a7['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x4b5cee['json']();},async 'getGitProviderAllowedTeams'(_0x2c567c){const _0x427974=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2c567c)+'/allowed-teams');if(!_0x427974['ok']){const _0x1b4f2d=await _0x427974['json']()['catch'](()=>({'message':_0x427974['statusText']}));throw new Error(_0x1b4f2d['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x427974['json']();},async 'setGitProviderAllowedTeams'(_0x513d2c,_0x32437e){const _0x495ed0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x513d2c)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x32437e})});if(!_0x495ed0['ok']){const _0xad2c72=await _0x495ed0['json']()['catch'](()=>({'message':_0x495ed0['statusText']}));throw new Error(_0xad2c72['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x495ed0['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 _0xcbf650=toastState['baseBottom'];toastState['toasts']['forEach'](_0x49424d=>{_0x49424d['el']['style']['bottom']=_0xcbf650+'px';const _0x1bfed0=_0x49424d['el']['offsetHeight']||toastState['defaultHeight'];_0xcbf650+=_0x1bfed0+toastState['gap'];});});}function removeToastById(_0x1c6752){const _0x4519f5=toastState['toasts']['findIndex'](_0x94ca65=>_0x94ca65['id']===_0x1c6752);if(_0x4519f5===-0x1)return;const _0x50b5d4=toastState['toasts'][_0x4519f5];if(_0x50b5d4['timeoutId'])clearTimeout(_0x50b5d4['timeoutId']);_0x50b5d4['el']['classList']['remove']('show'),setTimeout(()=>_0x50b5d4['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4519f5,0x1),repositionAllToasts();}function registerToast(_0x218f78){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x218f78),repositionAllToasts(),_0x218f78['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(_0x5399b0){if(_0x5399b0===null||_0x5399b0===undefined)return'';return String(_0x5399b0)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x244dc4,_0x228e85){if(_0x244dc4&&typeof _0x244dc4==='object'&&!Array['isArray'](_0x244dc4))return{'code':typeof _0x244dc4['text']==='string'?_0x244dc4['text']:'','language':typeof _0x244dc4['lang']==='string'?_0x244dc4['lang']:''};return{'code':typeof _0x244dc4==='string'?_0x244dc4:'','language':typeof _0x228e85==='string'?_0x228e85:''};}function buildMermaidBlock(_0x12875a){const _0x4c0772=String(_0x12875a||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c0772))+'\x22>'+escapeHtmlValue(_0x4c0772)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x564015=new marked['Renderer'](),_0x4be9f6=_0x564015['code']['bind'](_0x564015);return _0x564015['code']=function(_0x566d66,_0x5c8910,..._0x2515da){const {code:_0x515e44,language:_0x1d9a71}=getMarkdownCodeBlockPayload(_0x566d66,_0x5c8910),_0x5dc6f3=String(_0x1d9a71||'')['trim']()['toLowerCase']();if(_0x5dc6f3==='mermaid')return buildMermaidBlock(_0x515e44);const _0x42200e=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x42200e&&_0x5dc6f3)try{const _0x5be91e=_0x42200e['getLanguage'](_0x5dc6f3)?_0x5dc6f3:'plaintext',_0xbcb9a2=_0x42200e['highlight'](_0x515e44,{'language':_0x5be91e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x5dc6f3)+'\x22>'+_0xbcb9a2+'</code></pre>';}catch(_0x26e8aa){console['error']('Syntax\x20highlighting\x20error:',_0x26e8aa);}return _0x4be9f6(_0x566d66,_0x5c8910,..._0x2515da);},sharedMarkedRenderer=_0x564015,_0x564015;}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 _0x169a24=window['mermaid'];if(!_0x169a24||typeof _0x169a24['initialize']!=='function')return _0x169a24||null;return _0x169a24['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x169a24;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x199a2d,_0x44e905)=>{const _0x158321=()=>_0x199a2d(configureMermaidInstance()),_0x1b35c8=()=>{mermaidLoadPromise=null,_0x44e905(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x36452e=document['getElementById'](MERMAID_SCRIPT_ID);!_0x36452e&&(_0x36452e=document['createElement']('script'),_0x36452e['id']=MERMAID_SCRIPT_ID,_0x36452e['src']=MERMAID_SCRIPT_SRC,_0x36452e['async']=!![],document['head']['appendChild'](_0x36452e));if(window['mermaid']){_0x158321();return;}_0x36452e['addEventListener']('load',_0x158321,{'once':!![]}),_0x36452e['addEventListener']('error',_0x1b35c8,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x1f7229){const _0x3a4fdc=_0x1f7229['getAttribute']('data-mermaid-source');if(!_0x3a4fdc)return null;let _0x46b69d=_0x3a4fdc;try{_0x46b69d=decodeURIComponent(_0x3a4fdc);}catch{}return _0x1f7229['textContent']=_0x46b69d,_0x1f7229['removeAttribute']('data-processed'),_0x1f7229['removeAttribute']('aria-roledescription'),_0x1f7229['removeAttribute']('role'),_0x1f7229['removeAttribute']('aria-label'),_0x46b69d;}function collectMermaidNodes(_0x3386a6,_0x50c362){if(!(_0x3386a6 instanceof Element))return;_0x3386a6['matches']('.mermaid[data-mermaid-source]')&&_0x50c362['add'](_0x3386a6),_0x3386a6['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4b1dcc=>{_0x50c362['add'](_0x4b1dcc);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3c4555=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xae882f=>setTimeout(_0xae882f,0x0);_0x3c4555(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x2e26a7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x2e26a7);});});}function queueMermaidRender(_0x58b2e2){const _0x14bdd1=new Set();_0x58b2e2 instanceof Document||_0x58b2e2 instanceof DocumentFragment?_0x58b2e2['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3209ac=>_0x14bdd1['add'](_0x3209ac)):collectMermaidNodes(_0x58b2e2,_0x14bdd1);if(_0x14bdd1['size']===0x0)return;_0x14bdd1['forEach'](_0x52475a=>pendingMermaidNodes['add'](_0x52475a)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5c84bc=Array['from'](pendingMermaidNodes)['filter'](_0x5ee667=>_0x5ee667['isConnected']);pendingMermaidNodes['clear']();if(_0x5c84bc['length']===0x0)return;const _0x25474c=await loadMermaid();if(!_0x25474c)return;configureMermaidInstance();const _0x13385a=getMermaidTheme();for(const _0x863ab8 of _0x5c84bc){const _0x4a2049=_0x863ab8['getAttribute']('data-mermaid-source');if(!_0x4a2049)continue;const _0x30f5f3=_0x863ab8['getAttribute']('data-processed')==='true';if(_0x30f5f3&&_0x863ab8['dataset']['mermaidTheme']===_0x13385a)continue;restoreMermaidSource(_0x863ab8);try{if(typeof _0x25474c['run']==='function')await _0x25474c['run']({'nodes':[_0x863ab8]});else typeof _0x25474c['init']==='function'&&_0x25474c['init'](undefined,[_0x863ab8]);_0x863ab8['dataset']['mermaidTheme']=_0x13385a,delete _0x863ab8['dataset']['mermaidError'];}catch(_0x3e7adf){console['error']('Mermaid\x20render\x20failed:',_0x3e7adf),restoreMermaidSource(_0x863ab8),_0x863ab8['dataset']['mermaidError']='true',delete _0x863ab8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f195d=>{_0x5f195d['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x5f195d);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4f2b6b=>{_0x4f2b6b['forEach'](_0x55036a=>{_0x55036a['addedNodes']['forEach'](_0x54437a=>{_0x54437a['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x54437a);});});}),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'(_0x19c160){const _0x1da9b0=new Date(_0x19c160),_0x58da7e=new Date(),_0x3c1528=_0x58da7e-_0x1da9b0,_0x2dedd6=Math['floor'](_0x3c1528/0x3e8),_0x226011=Math['floor'](_0x2dedd6/0x3c),_0x51fbcc=Math['floor'](_0x226011/0x3c),_0x582963=Math['floor'](_0x51fbcc/0x18);if(_0x2dedd6<0x3c)return'now';if(_0x226011<0x3c)return _0x226011+'m\x20ago';if(_0x51fbcc<0x18)return _0x51fbcc+'h\x20ago';return _0x582963+'d\x20ago';},'getStatusIcon'(_0x4297f4){switch(_0x4297f4){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x51d125){switch(_0x51d125){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'(_0x4952da,_0x3ce0b2=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dcb4c={};_0x3dcb4c['text/plain']=new Blob([_0x4952da],{'type':'text/plain'});_0x3ce0b2&&(_0x3dcb4c['text/html']=new Blob([_0x3ce0b2],{'type':'text/html'}));const _0x3a752d=new ClipboardItem(_0x3dcb4c);return await navigator['clipboard']['write']([_0x3a752d]),!![];}catch(_0xead3a3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xead3a3);}try{const _0x441f07=_0x2e1871=>{_0x2e1871['preventDefault'](),_0x2e1871['clipboardData']['setData']('text/plain',_0x4952da),_0x3ce0b2&&_0x2e1871['clipboardData']['setData']('text/html',_0x3ce0b2);};document['addEventListener']('copy',_0x441f07);const _0x14ece4=document['execCommand']('copy');document['removeEventListener']('copy',_0x441f07);if(_0x14ece4)return!![];}catch(_0x2a86bc){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2a86bc);}try{const _0x1d0750=document['createElement']('textarea');_0x1d0750['value']=_0x4952da,_0x1d0750['style']['position']='fixed',_0x1d0750['style']['opacity']='0',_0x1d0750['style']['pointerEvents']='none',document['body']['appendChild'](_0x1d0750),_0x1d0750['select']();const _0x1620ef=document['execCommand']('copy');return document['body']['removeChild'](_0x1d0750),_0x1620ef;}catch(_0x1f9317){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1f9317),![];}},'showToast'(_0x27319e,_0x39b559='info'){const _0x4ca84f=getNextToastId(),_0x26f642=document['createElement']('div');_0x26f642['className']='toast\x20toast-'+_0x39b559,_0x26f642['textContent']=_0x27319e,_0x26f642['dataset']['toastId']=_0x4ca84f,document['body']['appendChild'](_0x26f642);const _0x4904bb=_0x39b559==='error'?0x2710:0xbb8,_0x469cef=setTimeout(()=>{removeToastById(_0x4ca84f);},_0x4904bb),_0x47dc28={'id':_0x4ca84f,'el':_0x26f642,'timeoutId':_0x469cef};return registerToast(_0x47dc28),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x26f642['classList']['add']('show');});}),_0x4ca84f;},'showError'(_0x497511){console['error'](_0x497511);const _0x3c6ea0=typeof _0x497511==='string'?_0x497511:_0x497511['message']||'An\x20error\x20occurred';this['showToast'](_0x3c6ea0,'error');},'showSuccess'(_0x3a2d16){this['showToast'](_0x3a2d16,'success');},'capitalize'(_0x5552ee){if(!_0x5552ee)return'';return _0x5552ee['charAt'](0x0)['toUpperCase']()+_0x5552ee['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2bd2a9){return escapeHtmlValue(_0x2bd2a9);},'ansiToHtml'(_0x3f6f49){if(_0x3f6f49===null||_0x3f6f49===undefined)return'';let _0x4a2cc0=this['escapeHtml'](_0x3f6f49);const _0x1c3f7f={'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'},_0x2e3eb5={'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 _0x34e803=0x0;return _0x4a2cc0=_0x4a2cc0['replace'](/\x1b\[([0-9;]*)m/g,(_0x27bbd4,_0x18d804)=>{if(!_0x18d804||_0x18d804==='0'){const _0x11c3a8='</span>'['repeat'](_0x34e803);return _0x34e803=0x0,_0x11c3a8;}const _0x3b6bb7=_0x18d804['split'](';'),_0x467ef6=[];for(const _0x4a2b85 of _0x3b6bb7){if(_0x4a2b85==='1')_0x467ef6['push']('font-weight:bold');else{if(_0x4a2b85==='2')_0x467ef6['push']('opacity:0.7');else{if(_0x4a2b85==='3')_0x467ef6['push']('font-style:italic');else{if(_0x4a2b85==='4')_0x467ef6['push']('text-decoration:underline');else{if(_0x4a2b85==='9')_0x467ef6['push']('text-decoration:line-through');else{if(_0x1c3f7f[_0x4a2b85])_0x467ef6['push']('color:'+_0x1c3f7f[_0x4a2b85]);else{if(_0x2e3eb5[_0x4a2b85])_0x467ef6['push']('background-color:'+_0x2e3eb5[_0x4a2b85]);}}}}}}}if(_0x467ef6['length']>0x0)return _0x34e803++,'<span\x20style=\x22'+_0x467ef6['join'](';')+'\x22>';return'';}),_0x4a2cc0+='</span>'['repeat'](_0x34e803),_0x4a2cc0=_0x4a2cc0['replace'](/\\u001b\[([0-9;]*)m/g,(_0x20ca70,_0x103a7f)=>{if(!_0x103a7f||_0x103a7f==='0')return'';const _0x518665=_0x103a7f['split'](';'),_0x13d138=[];for(const _0x9ea58c of _0x518665){if(_0x9ea58c==='1')_0x13d138['push']('font-weight:bold');else{if(_0x1c3f7f[_0x9ea58c])_0x13d138['push']('color:'+_0x1c3f7f[_0x9ea58c]);else{if(_0x2e3eb5[_0x9ea58c])_0x13d138['push']('background-color:'+_0x2e3eb5[_0x9ea58c]);}}}if(_0x13d138['length']>0x0)return'<span\x20style=\x22'+_0x13d138['join'](';')+'\x22>';return'';}),_0x4a2cc0;},'showModal'({title:_0x1c68fe,content:_0x75ac36,buttons:buttons=[]}){const _0x379731='\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'](_0x1c68fe)+'</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'+_0x75ac36+'\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']((_0x28a897,_0x4e6b14)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x28a897['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4e6b14+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x28a897['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',_0x34e089=document['createElement']('div');_0x34e089['id']='utils-modal',_0x34e089['className']='modal',_0x34e089['innerHTML']=_0x379731,document['body']['appendChild'](_0x34e089);const _0xb09c24=document['getElementById']('utils-modal-close');_0xb09c24&&_0xb09c24['addEventListener']('click',()=>this['hideModal']());const _0x30d67a=_0x34e089['querySelectorAll']('[data-btn-index]');_0x30d67a['forEach'](_0x2d5790=>{const _0x2c3973=parseInt(_0x2d5790['dataset']['btnIndex']);buttons[_0x2c3973]?.['onClick']&&_0x2d5790['addEventListener']('click',buttons[_0x2c3973]['onClick']);});const _0x505816=document['getElementById']('utils-modal-overlay');_0x505816&&_0x505816['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x45801d=document['getElementById']('utils-modal');_0x45801d&&_0x45801d['remove']();},'parseKeyValuePairs'(_0x46fb5a){const _0x32b81a={};if(!_0x46fb5a)return _0x32b81a;return _0x46fb5a['split'](/\r?\n/)['map'](_0x3a6694=>_0x3a6694['trim']())['filter'](Boolean)['forEach'](_0x38ff95=>{const _0x15741c=_0x38ff95['indexOf']('=');if(_0x15741c>0x0){const _0x2f9fcc=_0x38ff95['slice'](0x0,_0x15741c)['trim'](),_0x2be0de=_0x38ff95['slice'](_0x15741c+0x1)['trim']();if(_0x2f9fcc)_0x32b81a[_0x2f9fcc]=_0x2be0de;}}),_0x32b81a;},'debounce'(_0x59a3c8,_0x22929d=0xfa){let _0x27bc95=null;return(..._0x46fefd)=>{clearTimeout(_0x27bc95),_0x27bc95=setTimeout(()=>_0x59a3c8['apply'](this,_0x46fefd),_0x22929d);};},'formatTimestamp'(_0x87cd){if(!_0x87cd)return'N/A';const _0x389c2c=new Date(_0x87cd);return _0x389c2c['toLocaleDateString']()+'\x20'+_0x389c2c['toLocaleTimeString']();},'getQueryParams'(){const _0x54054f=new URLSearchParams(window['location']['search']),_0x498bc9={};for(const [_0x24c3a3,_0x23a428]of _0x54054f){_0x498bc9[_0x24c3a3]=_0x23a428;}return _0x498bc9;},'formatDuration'(_0x56e9d6,_0x32ad47){if(!_0x56e9d6)return'N/A';const _0x5e5688=new Date(_0x56e9d6),_0x1dd074=_0x32ad47?new Date(_0x32ad47):new Date(),_0x303218=_0x1dd074-_0x5e5688;if(_0x303218<0x0)return'0s';const _0x56dd90=Math['floor'](_0x303218/0x3e8),_0x24f0d3=Math['floor'](_0x56dd90/0x3c),_0x362101=Math['floor'](_0x24f0d3/0x3c),_0x4bbb43=Math['floor'](_0x362101/0x18);if(_0x56dd90<0x3c)return _0x56dd90+'s';if(_0x24f0d3<0x3c)return _0x24f0d3+'m\x20'+_0x56dd90%0x3c+'s';if(_0x362101<0x18)return _0x362101+'h\x20'+_0x24f0d3%0x3c+'m\x20'+_0x56dd90%0x3c+'s';return _0x4bbb43+'d\x20'+_0x362101%0x18+'h\x20'+_0x24f0d3%0x3c+'m';},'renderMarkdown'(_0xa8311a,_0x4d32a8={}){if(!_0xa8311a)return'';_0xa8311a=this['rewriteAttachmentLinks'](_0xa8311a,_0x4d32a8),_0xa8311a=this['rewriteColorSyntax'](_0xa8311a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0xa8311a,_0x4d32a8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0xa8311a);}catch(_0x5ca3f7){return console['error']('Markdown\x20parsing\x20error:',_0x5ca3f7),this['renderMarkdownFallback'](_0xa8311a,_0x4d32a8);}},'rewriteAttachmentLinks'(_0x1a4fc7,_0x12ba8f={}){const _0x52ae6f=typeof _0x12ba8f['resolveAttachmentUrl']==='function'?_0x12ba8f['resolveAttachmentUrl']:_0x12ba8f['taskId']?_0x429ec1=>API_BASE+'/tasks/'+_0x12ba8f['taskId']+'/attachments/'+encodeURIComponent(_0x429ec1):null;if(!_0x52ae6f)return _0x1a4fc7;return String(_0x1a4fc7)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x50c56b,_0x3f0aa8)=>{const _0x12c9b1=String(_0x3f0aa8||'')['trim']();if(!_0x12c9b1)return _0x50c56b;let _0x4851f6=_0x12c9b1;try{_0x4851f6=decodeURIComponent(_0x12c9b1);}catch{}const _0x1c0270=_0x52ae6f(_0x4851f6);if(!_0x1c0270)return _0x50c56b;return']('+_0x1c0270+')';});},'rewriteColorSyntax'(_0x362c98){if(!_0x362c98)return _0x362c98;return String(_0x362c98)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x40c889,_0x3c8702,_0x416856)=>{const _0x19db5b=this['rewriteColorSyntax'](_0x416856);return'<span\x20style=\x22color:\x20'+_0x3c8702+'\x22>'+_0x19db5b+'</span>';});},'renderMarkdownFallback'(_0x25549,_0x11bd58={}){if(!_0x25549)return'';_0x25549=_0x25549['replace'](/\r\n/g,'\x0a'),_0x25549=_0x25549['replace'](/\r/g,'\x0a'),_0x25549=this['rewriteAttachmentLinks'](_0x25549,_0x11bd58);let _0x56518d=this['escapeHtml'](_0x25549);return _0x56518d=_0x56518d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x56518d=_0x56518d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x56518d=_0x56518d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x56518d=_0x56518d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x56518d=_0x56518d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x56518d=_0x56518d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x56518d=_0x56518d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x56518d=_0x56518d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x56518d=_0x56518d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x56518d=_0x56518d['replace'](/\n\n/g,'</p><p>'),_0x56518d=_0x56518d['replace'](/\n/g,'<br>'),'<p>'+_0x56518d+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3a6084=new Uint8Array(0x10);crypto['getRandomValues'](_0x3a6084),_0x3a6084[0x6]=_0x3a6084[0x6]&0xf|0x40,_0x3a6084[0x8]=_0x3a6084[0x8]&0x3f|0x80;const _0x5639cd=Array['from'](_0x3a6084,_0x526f4c=>_0x526f4c['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5639cd['slice'](0x0,0x8)+'-'+_0x5639cd['slice'](0x8,0xc)+'-'+_0x5639cd['slice'](0xc,0x10)+'-'+_0x5639cd['slice'](0x10,0x14)+'-'+_0x5639cd['slice'](0x14);}};export class CustomSelect{constructor(_0x3b0009,_0x445c16={}){this['nativeSelect']=_0x3b0009,this['options']=_0x445c16,this['isOpen']=![],this['selectedValue']=_0x3b0009['value']||'',this['searchable']=_0x445c16['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x340872=document['createElement']('div');_0x340872['className']='custom-select';const _0x201226=document['createElement']('div');_0x201226['className']='custom-select-trigger',_0x201226['setAttribute']('tabindex','0'),_0x201226['setAttribute']('role','button'),_0x201226['setAttribute']('aria-haspopup','listbox');const _0x5a9053=document['createElement']('span');_0x5a9053['className']='custom-select-trigger-text';const _0x366d87=document['createElement']('span');_0x366d87['className']='custom-select-arrow',_0x366d87['textContent']='▼',_0x201226['appendChild'](_0x5a9053),_0x201226['appendChild'](_0x366d87);const _0xb5033a=document['createElement']('div');_0xb5033a['className']='custom-select-dropdown',_0xb5033a['setAttribute']('role','listbox');if(this['searchable']){const _0x363d71=document['createElement']('div');_0x363d71['className']='custom-select-search';const _0x57200=document['createElement']('input');_0x57200['type']='text',_0x57200['className']='custom-select-search-input',_0x57200['placeholder']='Type\x20to\x20search...',_0x57200['setAttribute']('aria-label','Search\x20options'),_0x57200['addEventListener']('input',_0x824ff5=>{this['searchQuery']=_0x824ff5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x57200['addEventListener']('keydown',_0x4bf0cd=>{if(_0x4bf0cd['key']==='Escape')_0x4bf0cd['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x4bf0cd['key']==='Enter'){_0x4bf0cd['preventDefault'](),_0x4bf0cd['stopPropagation']();const _0x595bc4=_0xb5033a['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x595bc4){const _0x11f34f=_0x595bc4['getAttribute']('data-value');this['select'](_0x11f34f);}}}}),_0x363d71['appendChild'](_0x57200),_0xb5033a['appendChild'](_0x363d71),this['searchInput']=_0x57200;}const _0x3d4dd5=document['createElement']('div');_0x3d4dd5['className']='custom-select-options',_0xb5033a['appendChild'](_0x3d4dd5),_0x340872['appendChild'](_0x201226),_0x340872['appendChild'](_0xb5033a),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x340872,this['nativeSelect']),this['wrapper']=_0x340872,this['trigger']=_0x201226,this['triggerText']=_0x5a9053,this['dropdown']=_0xb5033a,this['optionsContainer']=_0x3d4dd5,_0x201226['addEventListener']('click',()=>this['toggle']()),_0x201226['addEventListener']('keydown',_0x20c760=>this['handleKeydown'](_0x20c760)),document['addEventListener']('click',_0x459774=>{!_0x340872['contains'](_0x459774['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4dbe4c=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4dbe4c['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2f712b=new MutationObserver(()=>{this['updateDisabledState']();});_0x2f712b['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4ecf03=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4ecf03['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x416f08=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x416f08),this['trigger']['setAttribute']('aria-disabled',_0x416f08?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x416f08?'-1':'0'),_0x416f08&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x166017=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5a27f9=_0x166017['filter'](_0x12f2ba=>!_0x12f2ba['disabled']&&!_0x12f2ba['hidden']);_0x166017['forEach']((_0x399fa8,_0x16d181)=>{const _0x4e9c02=document['createElement']('div');_0x4e9c02['className']='custom-select-option',_0x4e9c02['textContent']=_0x399fa8['textContent'],_0x4e9c02['setAttribute']('data-value',_0x399fa8['value']),_0x4e9c02['setAttribute']('data-index',_0x16d181),_0x4e9c02['setAttribute']('role','option'),_0x399fa8['disabled']?_0x4e9c02['classList']['add']('disabled'):_0x4e9c02['addEventListener']('click',()=>this['select'](_0x399fa8['value'])),_0x399fa8['value']===this['selectedValue']&&_0x4e9c02['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4e9c02),this['allOptions']['push']({'element':_0x4e9c02,'text':_0x399fa8['textContent']['toLowerCase'](),'value':_0x399fa8['value'],'disabled':_0x399fa8['disabled']});});if(this['searchable']&&this['searchInput']){const _0x420145=this['searchInput']['parentElement'];_0x5a27f9['length']>0x3?_0x420145['style']['display']='':_0x420145['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x17cdd7=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x8c447d=>{if(!_0x17cdd7||_0x8c447d['disabled'])_0x8c447d['element']['style']['display']='';else{const _0x485513=_0x8c447d['text']['includes'](_0x17cdd7);_0x8c447d['element']['style']['display']=_0x485513?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1482bc){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1482bc,this['nativeSelect']['value']=_0x1482bc;const _0x2a9537=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2a9537),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x512bb6=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x512bb6&&(this['triggerText']['textContent']=_0x512bb6['textContent'],_0x512bb6['disabled']||_0x512bb6['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4bdc23=>{_0x4bdc23['getAttribute']('data-value')===this['selectedValue']?_0x4bdc23['classList']['add']('selected'):_0x4bdc23['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 _0x8f5cb6=window['getComputedStyle'](this['dropdown']);if(_0x8f5cb6['position']==='fixed'){const _0x319535=this['trigger']['getBoundingClientRect'](),_0x43e454=parseInt(_0x8f5cb6['maxHeight'])||0xc8,_0xd7671=window['innerHeight'],_0x18d226=_0xd7671-_0x319535['bottom'],_0xb7d9dd=_0x319535['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3941e8;_0x18d226<_0x43e454&&_0xb7d9dd>_0x18d226?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xd7671-_0x319535['top']+'px',_0x3941e8=Math['min'](_0x43e454,_0xb7d9dd-0xa),this['dropdown']['style']['maxHeight']=_0x3941e8+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x319535['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3941e8=Math['min'](_0x43e454,_0x18d226-0xa),this['dropdown']['style']['maxHeight']=_0x3941e8+'px');if(this['optionsContainer']){let _0x4967a0=_0x3941e8;if(this['searchInput']){const _0x2fe5c9=this['searchInput']['parentElement'];_0x2fe5c9&&(_0x4967a0-=_0x2fe5c9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4967a0)+'px';}this['dropdown']['style']['left']=_0x319535['left']+'px',this['dropdown']['style']['width']=_0x319535['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xd9ad65=this['searchInput']['parentElement'];_0xd9ad65&&_0xd9ad65['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'](_0x4ddd8b){if(this['nativeSelect']['disabled'])return;if(_0x4ddd8b['key']==='Enter'||_0x4ddd8b['key']==='\x20')_0x4ddd8b['preventDefault'](),this['toggle']();else _0x4ddd8b['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x17e225='\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',_0x17e225),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5acd0a=document['getElementById']('confirm-dialog-close'),_0x1a0eae=document['getElementById']('confirm-dialog-cancel'),_0x153605=document['getElementById']('confirm-dialog-confirm'),_0x2c2e70=this['_modal']['querySelector']('.modal-overlay');_0x5acd0a['addEventListener']('click',()=>this['_resolve'](![])),_0x1a0eae['addEventListener']('click',()=>this['_resolve'](![])),_0x153605['addEventListener']('click',()=>this['_resolve'](!![])),_0x2c2e70['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1262c2=>{if(_0x1262c2['key']==='Escape')_0x1262c2['preventDefault'](),this['_resolve'](![]);else _0x1262c2['key']==='Enter'&&(_0x1262c2['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x20f4f9,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4c2d41=>{this['_resolvePromise']=_0x4c2d41,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x20f4f9;const _0x2874f4=document['getElementById']('confirm-dialog-cancel'),_0xe497bb=document['getElementById']('confirm-dialog-confirm');_0x2874f4['textContent']=cancelText,_0xe497bb['textContent']=confirmText,_0xe497bb['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xe497bb['focus']();});},'_resolve'(_0xda58ec){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0xda58ec),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d9a8b,_0x29783b={}){this['container']=_0x3d9a8b,this['options']={'placeholder':_0x29783b['placeholder']||'Type\x20to\x20search...','maxItems':_0x29783b['maxItems']||0x64,'loadItems':_0x29783b['loadItems']||(async()=>[]),'renderItem':_0x29783b['renderItem']||(_0x322064=>({'primary':String(_0x322064),'secondary':''})),'onSelect':_0x29783b['onSelect']||(()=>{}),'filterItems':_0x29783b['filterItems']||null,'getItemValue':_0x29783b['getItemValue']||(_0x1d4826=>_0x1d4826),'sortItems':_0x29783b['sortItems']||null,'debounceMs':_0x29783b['debounceMs']||0xc8,'minCharsForSearch':_0x29783b['minCharsForSearch']||0x0,'emptyMessage':_0x29783b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x29783b['loadingMessage']||'Loading...','preload':_0x29783b['preload']!==![],'searchMode':_0x29783b['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',_0x18c30f=>this['onBlur'](_0x18c30f)),this['input']['addEventListener']('input',_0xbc4501=>this['onInput'](_0xbc4501)),this['input']['addEventListener']('keydown',_0xcf54a1=>this['onKeydown'](_0xcf54a1)),this['clearBtn']['addEventListener']('mousedown',_0x32c933=>{_0x32c933['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5389d0=>{_0x5389d0['preventDefault']();}),document['addEventListener']('click',_0x4483b0=>{!this['wrapper']['contains'](_0x4483b0['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(_0x510087){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x510087);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x364b09){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x24e35b){const _0x5e9ffd=_0x24e35b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5e9ffd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5e9ffd):this['loadAndShow'](_0x5e9ffd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x77f2c3){switch(_0x77f2c3['key']){case'ArrowDown':_0x77f2c3['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x77f2c3['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x77f2c3['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x77f2c3['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x587b16){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x40a936=this['selectedIndex']+_0x587b16;if(_0x40a936>=0x0&&_0x40a936<this['filteredItems']['length']){this['selectedIndex']=_0x40a936,this['updateSelectionHighlight']();const _0xb8c7e5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xb8c7e5[this['selectedIndex']]&&_0xb8c7e5[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x357254=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x357254['forEach']((_0x473ab6,_0xd08a85)=>{_0x473ab6['classList']['toggle']('keyboard-selected',_0xd08a85===this['selectedIndex']);});}async['loadAndShow'](_0x2addf7){this['showLoading']();try{const _0x1de7e7=await this['options']['loadItems'](_0x2addf7);if(this['options']['searchMode']==='server'){let _0x4d1277=_0x1de7e7;this['options']['sortItems']&&(_0x4d1277=this['options']['sortItems']([..._0x1de7e7]));this['filteredItems']=_0x4d1277;const _0x549265=this['filteredItems']['length']>=this['options']['maxItems'];_0x549265&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x549265),this['open']();}else this['allItems']=_0x1de7e7,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2addf7);}catch(_0x5eac9c){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5eac9c),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3f3ea2){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3f3ea2):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2a3f64=this['filteredItems']['length']>=this['options']['maxItems'];_0x2a3f64&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2a3f64),this['open']();}['renderItems'](_0x2fcd0d){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']((_0x38dad8,_0x4b17d9)=>{const _0x89b3f0=document['createElement']('div');_0x89b3f0['className']='autocomplete-select-item',_0x89b3f0['setAttribute']('role','option'),_0x89b3f0['setAttribute']('data-index',_0x4b17d9);const _0x45d2e8=this['options']['renderItem'](_0x38dad8);let _0x5a1d60='';_0x45d2e8['icon']&&(_0x5a1d60='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x45d2e8['iconClass']||'')+'\x22>'+_0x45d2e8['icon']+'</span>'),_0x89b3f0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5a1d60+'\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'](_0x45d2e8['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x45d2e8['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x45d2e8['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x89b3f0['addEventListener']('click',()=>{this['selectItem'](_0x38dad8);}),_0x89b3f0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4b17d9,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x89b3f0);}),_0x2fcd0d?(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'](_0x178212){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x178212)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2d57a7){this['selectedItem']=_0x2d57a7;const _0x3f9ed4=this['options']['renderItem'](_0x2d57a7);this['input']['value']=_0x3f9ed4['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2d57a7);}['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'](_0x36842b){if(_0x36842b){this['selectedItem']=_0x36842b;const _0x1829fc=this['options']['renderItem'](_0x36842b);this['input']['value']=_0x1829fc['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1b5924){this['allItems']=_0x1b5924,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'](_0x429b15){this['input']['placeholder']=_0x429b15;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5a452b=null){const _0x145e06=document['getElementById']('admin-menu-container'),_0x6aaa3d=document['getElementById']('admin-menu-btn'),_0x2c4c7f=document['getElementById']('admin-menu');if(!_0x145e06||!_0x6aaa3d||!_0x2c4c7f)return;try{!_0x5a452b&&(_0x5a452b=await API['getCurrentUser']());if(_0x5a452b){const _0x3d2f9d=window['Permissions'],_0x464e69=_0x3d2f9d['hasServerPermission'](_0x5a452b,'*')||_0x3d2f9d['hasEnvPermission'](_0x5a452b,'environments:manage')||_0x3d2f9d['hasServerPermission'](_0x5a452b,'users:create')||_0x3d2f9d['hasTeamPermission'](_0x5a452b,'teams:manage')||_0x3d2f9d['hasEnvPermission'](_0x5a452b,'environments:view_details');if(!_0x464e69)return;_0x145e06['hidden']=![];if(!_0x3d2f9d['hasServerPermission'](_0x5a452b,'*')){const _0x341ce0=_0x2c4c7f['querySelectorAll']('.admin-menu-item');_0x341ce0['forEach'](_0x5c8ee4=>{const _0x87c0be=_0x5c8ee4['querySelector']('.option-text')?.['textContent']?.['trim']();_0x87c0be==='Users'&&!_0x3d2f9d['hasServerPermission'](_0x5a452b,'users:create')&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Skills'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Server\x20Settings'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Server\x20Administration'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Git\x20History'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Roles'&&(_0x5c8ee4['hidden']=!![]);});}_0x6aaa3d['addEventListener']('click',_0x4e5a33=>{_0x4e5a33['stopPropagation']();const _0x19b6be=document['getElementById']('actions-menu');if(_0x19b6be)_0x19b6be['hidden']=!![];_0x2c4c7f['hidden']=!_0x2c4c7f['hidden'];}),document['addEventListener']('click',_0x575baf=>{!_0x2c4c7f['hidden']&&!_0x6aaa3d['contains'](_0x575baf['target'])&&!_0x2c4c7f['contains'](_0x575baf['target'])&&(_0x2c4c7f['hidden']=!![]);}),document['addEventListener']('keydown',_0x34e8b7=>{_0x34e8b7['key']==='Escape'&&!_0x2c4c7f['hidden']&&(_0x2c4c7f['hidden']=!![]);});}}catch(_0x1d608c){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1d608c['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|