@profoundlogic/coderflow-server 0.7.6 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/agent-wrapper.sh +3 -1
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -0
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -0
- 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 -0
- 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 +575 -0
- package/dist/web-ui/public/admin.html +636 -0
- package/dist/web-ui/public/admin.js +1 -0
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.html +2 -2
- package/dist/web-ui/public/environments.js +1 -1
- 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.html +2 -2
- 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.html +2 -170
- 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.html +2 -2
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.html +66 -4
- 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.html +2 -2
- 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 +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.html +2 -2
- 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.html +2 -2
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/web-ui/public/server-health.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x4bb51f=window['location']['pathname'],_0x5725f0=_0x4bb51f['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5725f0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5725f0[0x1]),_0x5725f0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x587be8={}){const _0x3321c3=new URLSearchParams();_0x587be8['userId']&&_0x3321c3['set']('userId',String(_0x587be8['userId']));_0x587be8['automation']&&_0x3321c3['set']('automation',String(_0x587be8['automation']));const _0x4fa211=API_BASE+'/tasks/stats'+(_0x3321c3['toString']()?'?'+_0x3321c3['toString']():''),_0x5c9f5e=await fetch(_0x4fa211);if(!_0x5c9f5e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5c9f5e['statusText']);return await _0x5c9f5e['json']();},async 'getTasks'(_0x57585e={}){const _0x360ba4=new URLSearchParams();_0x57585e['status']&&_0x360ba4['set']('status',String(_0x57585e['status']));_0x57585e['environment']&&_0x360ba4['set']('environment',String(_0x57585e['environment']));_0x57585e['automation']&&_0x360ba4['set']('automation',String(_0x57585e['automation']));if(_0x57585e['include']){const _0x477f6f=Array['isArray'](_0x57585e['include'])?_0x57585e['include']['join'](','):String(_0x57585e['include']);_0x477f6f&&_0x360ba4['set']('include',_0x477f6f);}_0x57585e['filter']&&_0x360ba4['set']('filter',String(_0x57585e['filter']));_0x57585e['page']&&_0x360ba4['set']('page',String(_0x57585e['page']));_0x57585e['limit']&&_0x360ba4['set']('limit',String(_0x57585e['limit']));_0x57585e['userId']&&_0x360ba4['set']('userId',String(_0x57585e['userId']));_0x57585e['search']&&_0x360ba4['set']('search',String(_0x57585e['search']));_0x57585e['includeChildTasks']&&_0x360ba4['set']('includeChildTasks','true');const _0x1aa742=API_BASE+'/tasks'+(_0x360ba4['toString']()?'?'+_0x360ba4['toString']():''),_0x3f1dc1=await fetch(_0x1aa742);if(!_0x3f1dc1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f1dc1['statusText']);return await _0x3f1dc1['json']();},async 'getAutomations'(_0x5d4dba={}){const _0x23d13f=new URLSearchParams();_0x5d4dba['environment']&&_0x23d13f['set']('environment',String(_0x5d4dba['environment']));const _0xec53f7=await fetch(API_BASE+'/api/automations'+(_0x23d13f['toString']()?'?'+_0x23d13f['toString']():''));if(!_0xec53f7['ok']){const _0x52d526=await _0xec53f7['json']()['catch'](()=>({}));throw new Error(_0x52d526['message']||_0x52d526['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xec53f7['statusText']);}return await _0xec53f7['json']();},async 'getAutomation'(_0x30e532){const _0x52ae95=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30e532));if(!_0x52ae95['ok']){const _0x597517=await _0x52ae95['json']()['catch'](()=>({}));throw new Error(_0x597517['message']||_0x597517['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x52ae95['statusText']);}return await _0x52ae95['json']();},async 'createAutomation'(_0xc7e1ee){const _0x3fa918=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7e1ee||{})});if(!_0x3fa918['ok']){const _0x56bfaa=await _0x3fa918['json']()['catch'](()=>({}));throw new Error(_0x56bfaa['message']||_0x56bfaa['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3fa918['statusText']);}return await _0x3fa918['json']();},async 'updateAutomation'(_0x62893d,_0xa0c542){const _0x4bf762=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x62893d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa0c542||{})});if(!_0x4bf762['ok']){const _0x1658df=await _0x4bf762['json']()['catch'](()=>({}));throw new Error(_0x1658df['message']||_0x1658df['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4bf762['statusText']);}return await _0x4bf762['json']();},async 'deleteAutomation'(_0x2793a5){const _0x184c01=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2793a5),{'method':'DELETE'});if(!_0x184c01['ok']){const _0x574d3d=await _0x184c01['json']()['catch'](()=>({}));throw new Error(_0x574d3d['message']||_0x574d3d['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x184c01['statusText']);}return await _0x184c01['json']();},async 'triggerAutomation'(_0x548456){const _0x3089d2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x548456)+'/trigger',{'method':'POST'});if(!_0x3089d2['ok']){const _0x1eb995=await _0x3089d2['json']()['catch'](()=>({}));throw new Error(_0x1eb995['message']||_0x1eb995['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3089d2['statusText']);}return await _0x3089d2['json']();},async 'setAutomationEnabled'(_0x34d52c,_0x29ac4e){const _0x1669e5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34d52c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x29ac4e})});if(!_0x1669e5['ok']){const _0x283bc3=await _0x1669e5['json']()['catch'](()=>({}));throw new Error(_0x283bc3['message']||_0x283bc3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1669e5['statusText']);}return await _0x1669e5['json']();},async 'getAutomationHistory'(_0x3cacbc,_0x1faec8=0x32){const _0x59cd57=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3cacbc)+'/history?limit='+encodeURIComponent(String(_0x1faec8)));if(!_0x59cd57['ok']){const _0x246c49=await _0x59cd57['json']()['catch'](()=>({}));throw new Error(_0x246c49['message']||_0x246c49['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59cd57['statusText']);}return await _0x59cd57['json']();},async 'getTask'(_0x45c931,_0x4ad45e={}){const _0x1f6497=new URLSearchParams();if(_0x4ad45e['include']){const _0x47ff96=Array['isArray'](_0x4ad45e['include'])?_0x4ad45e['include']['join'](','):String(_0x4ad45e['include']);if(_0x47ff96)_0x1f6497['set']('include',_0x47ff96);}const _0x55b51d=await fetch(API_BASE+'/tasks/'+_0x45c931+(_0x1f6497['toString']()?'?'+_0x1f6497['toString']():''));if(!_0x55b51d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x55b51d['statusText']);return await _0x55b51d['json']();},async 'getTaskResults'(_0x1eb142){const _0xb1be5f=await fetch(API_BASE+'/tasks/'+_0x1eb142+'/results');if(!_0xb1be5f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xb1be5f['statusText']);return await _0xb1be5f['json']();},async 'getTaskPatches'(_0x555343){const _0x5b0e1d=await fetch(API_BASE+'/tasks/'+_0x555343+'/patches');if(!_0x5b0e1d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5b0e1d['statusText']);return await _0x5b0e1d['json']();},async 'getTaskAttachments'(_0x4f5531){const _0x653340=await fetch(API_BASE+'/tasks/'+_0x4f5531+'/attachments');if(!_0x653340['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x653340['statusText']);return await _0x653340['json']();},async 'uploadAttachments'(_0x195bb2,_0x3fb384){const _0x28c8e7=new FormData();for(const _0x4bad4e of _0x3fb384){_0x28c8e7['append']('attachments',_0x4bad4e);}const _0xcb33b1=await fetch(API_BASE+'/tasks/'+_0x195bb2+'/attachments',{'method':'POST','body':_0x28c8e7});if(!_0xcb33b1['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0xcb33b1['statusText']);return await _0xcb33b1['json']();},async 'isAINameGenerationAvailable'(){try{const _0x4f2db8=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x4f2db8['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x4f2db8['json']();}catch(_0x37f7a0){return{'available':![],'reason':_0x37f7a0['message']};}},async 'generateTaskName'(_0x499395){try{const _0x3ddd94=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x499395})});return await _0x3ddd94['json']();}catch(_0x49860b){return{'success':![],'error':_0x49860b['message']};}},async 'createTask'(_0x4be9b7){let _0x5472ed,_0x26305c={};if(_0x4be9b7['files']&&_0x4be9b7['files']['length']>0x0){const _0x3a13cf=new FormData();for(const [_0x152dd0,_0x495694]of Object['entries'](_0x4be9b7)){if(_0x152dd0!=='files'){if(_0x495694==null)continue;typeof _0x495694==='object'?_0x3a13cf['append'](_0x152dd0,JSON['stringify'](_0x495694)):_0x3a13cf['append'](_0x152dd0,String(_0x495694));}}for(const _0x2788d4 of _0x4be9b7['files']){_0x3a13cf['append']('attachments',_0x2788d4);}_0x5472ed=_0x3a13cf;}else _0x26305c['Content-Type']='application/json',_0x5472ed=JSON['stringify'](_0x4be9b7);const _0x5dc0d2=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x26305c,'body':_0x5472ed});if(!_0x5dc0d2['ok']){const _0x3fe7e9=await _0x5dc0d2['json'](),_0x3d8286=new Error(_0x3fe7e9['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc0d2['statusText']),{message:_0x51c36b,..._0x28be92}=_0x3fe7e9;Object['assign'](_0x3d8286,_0x28be92);throw _0x3d8286;}return await _0x5dc0d2['json']();},async 'createTestTask'(_0x54ed8a){const _0x3e1e5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54ed8a)});if(!_0x3e1e5f['ok']){const _0x2fafcc=await _0x3e1e5f['json']();throw new Error(_0x2fafcc['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e1e5f['statusText']);}return await _0x3e1e5f['json']();},async 'createEphemeralTest'(_0x229e33){const _0x377b03=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x229e33)});if(!_0x377b03['ok']){const _0x2c6daa=await _0x377b03['json']();throw new Error(_0x2c6daa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x377b03['statusText']);}return await _0x377b03['json']();},async 'createDeployTask'(_0x30b957){const _0x22b95d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30b957)});if(!_0x22b95d['ok']){const _0x6d0ef1=await _0x22b95d['json']();throw new Error(_0x6d0ef1['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x22b95d['statusText']);}return await _0x22b95d['json']();},async 'getEnvironments'(){const _0x3e7f39=await fetch(API_BASE+'/environments');if(!_0x3e7f39['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3e7f39['statusText']);return await _0x3e7f39['json']();},async 'getEnvironment'(_0x2ff284){const _0x5de99d=await fetch(API_BASE+'/environments/'+_0x2ff284);if(!_0x5de99d['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5de99d['statusText']);return await _0x5de99d['json']();},async 'getEnvironmentRepoHistory'(_0x38d9b4,_0x4fa2fc,_0x49394a={}){if(!_0x38d9b4||!_0x4fa2fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b2939=new URLSearchParams();if(_0x49394a['limit'])_0x2b2939['set']('limit',String(_0x49394a['limit']));if(_0x49394a['offset'])_0x2b2939['set']('offset',String(_0x49394a['offset']));if(_0x49394a['search'])_0x2b2939['set']('search',String(_0x49394a['search']));if(_0x49394a['branch'])_0x2b2939['set']('branch',String(_0x49394a['branch']));const _0x51a9e0=API_BASE+'/environments/'+encodeURIComponent(_0x38d9b4)+'/repos/'+encodeURIComponent(_0x4fa2fc)+'/git/history',_0x3a2fae=await fetch(''+_0x51a9e0+(_0x2b2939['toString']()?'?'+_0x2b2939['toString']():''));if(!_0x3a2fae['ok']){const _0x4b80b7=await _0x3a2fae['json']()['catch'](()=>({}));throw new Error(_0x4b80b7['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3a2fae['statusText']);}return await _0x3a2fae['json']();},async 'getEnvironmentRepoCommit'(_0x408067,_0x38cc1d,_0x41d161){if(!_0x408067||!_0x38cc1d||!_0x41d161)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21a37d=API_BASE+'/environments/'+encodeURIComponent(_0x408067)+'/repos/'+encodeURIComponent(_0x38cc1d)+'/git/commits/'+encodeURIComponent(_0x41d161),_0x36d3ed=await fetch(_0x21a37d);if(!_0x36d3ed['ok']){const _0x19d6f4=await _0x36d3ed['json']()['catch'](()=>({}));throw new Error(_0x19d6f4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x36d3ed['statusText']);}return await _0x36d3ed['json']();},async 'getEnvironmentRepoBranches'(_0x291ef7,_0x58c43f){if(!_0x291ef7||!_0x58c43f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5de367=API_BASE+'/environments/'+encodeURIComponent(_0x291ef7)+'/repos/'+encodeURIComponent(_0x58c43f)+'/git/branches',_0x3fa850=await fetch(_0x5de367);if(!_0x3fa850['ok']){const _0x88abb3=await _0x3fa850['json']()['catch'](()=>({}));throw new Error(_0x88abb3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3fa850['statusText']);}return await _0x3fa850['json']();},async 'revertEnvironmentRepoCommit'(_0x4ddb63,_0x46fb7e,_0x36e7ae,_0x4fe631={}){if(!_0x4ddb63||!_0x46fb7e||!_0x36e7ae)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87cbda=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4ddb63)+'/repos/'+encodeURIComponent(_0x46fb7e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x36e7ae,..._0x4fe631})});if(!_0x87cbda['ok']){const _0x5b6851=await _0x87cbda['json']()['catch'](()=>({}));throw new Error(_0x5b6851['message']||_0x5b6851['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x87cbda['statusText']);}return await _0x87cbda['json']();},async 'getTemplates'(_0x1a2f67={}){const _0x287223=new URLSearchParams();if(_0x1a2f67['include']){const _0x39969c=Array['isArray'](_0x1a2f67['include'])?_0x1a2f67['include']['join'](','):String(_0x1a2f67['include']);if(_0x39969c)_0x287223['set']('include',_0x39969c);}const _0x208696=await fetch(API_BASE+'/templates'+(_0x287223['toString']()?'?'+_0x287223['toString']():''));if(!_0x208696['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x208696['statusText']);return await _0x208696['json']();},async 'getTemplatesForEnvironment'(_0x3f6f80,_0x2f121d={}){if(!_0x3f6f80)throw new Error('Environment\x20name\x20is\x20required');const _0x1e56f2=new URLSearchParams();if(_0x2f121d['include']){const _0x3277f4=Array['isArray'](_0x2f121d['include'])?_0x2f121d['include']['join'](','):String(_0x2f121d['include']);if(_0x3277f4)_0x1e56f2['set']('include',_0x3277f4);}const _0x39c561=await fetch(API_BASE+'/templates/'+_0x3f6f80+(_0x1e56f2['toString']()?'?'+_0x1e56f2['toString']():''));if(!_0x39c561['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3f6f80+':\x20'+_0x39c561['statusText']);return await _0x39c561['json']();},async 'getTemplate'(_0x1f5700,_0x18f5ce,_0x5bd9da={}){if(!_0x1f5700||!_0x18f5ce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x38df9e=new URLSearchParams();if(_0x5bd9da['include']){const _0x5c32c3=Array['isArray'](_0x5bd9da['include'])?_0x5bd9da['include']['join'](','):String(_0x5bd9da['include']);if(_0x5c32c3)_0x38df9e['set']('include',_0x5c32c3);}const _0x4ad1bd=await fetch(API_BASE+'/templates/'+_0x1f5700+'/'+_0x18f5ce+(_0x38df9e['toString']()?'?'+_0x38df9e['toString']():''));if(!_0x4ad1bd['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ad1bd['statusText']);return await _0x4ad1bd['json']();},async 'getTaskLogs'(_0xef9467,_0x4da596={}){if(!_0xef9467)throw new Error('Task\x20ID\x20is\x20required');const _0x2602e2=new URLSearchParams();_0x4da596['tail']&&_0x2602e2['set']('tail',String(_0x4da596['tail']));const _0x506214=await fetch(API_BASE+'/tasks/'+_0xef9467+'/logs'+(_0x2602e2['toString']()?'?'+_0x2602e2['toString']():''));if(!_0x506214['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x506214['statusText']);return await _0x506214['text']();},async 'getContainers'(){const _0x26157b=await fetch(API_BASE+'/containers');if(!_0x26157b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x26157b['statusText']);return await _0x26157b['json']();},async 'getContainer'(_0x22bcea){const _0x5ee83c=await fetch(API_BASE+'/containers/'+_0x22bcea);if(!_0x5ee83c['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ee83c['statusText']);return await _0x5ee83c['json']();},async 'startInteractiveContainer'(_0x336fe6){const _0x4e38b0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336fe6)});if(!_0x4e38b0['ok']){const _0x2cc3ed=await _0x4e38b0['json']()['catch'](()=>({}));throw new Error(_0x2cc3ed['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4e38b0['statusText']);}return await _0x4e38b0['json']();},async 'startContainerCodeServer'(_0x2a52fc,_0x5459bb={}){if(!_0x2a52fc)throw new Error('Container\x20ID\x20is\x20required');const _0x144e36=new URLSearchParams();_0x5459bb['theme']&&_0x144e36['set']('theme',_0x5459bb['theme']);const _0x5e7907=await fetch(API_BASE+'/containers/'+_0x2a52fc+'/code-server'+(_0x144e36['toString']()?'?'+_0x144e36['toString']():'')),_0x58a17=await _0x5e7907['json']()['catch'](()=>({}));if(!_0x5e7907['ok'])throw new Error(_0x58a17['message']||_0x58a17['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5e7907['statusText']);return _0x58a17;},async 'stopContainer'(_0x3ebb27){const _0x368003=await fetch(API_BASE+'/containers/'+_0x3ebb27,{'method':'DELETE'});if(!_0x368003['ok']){const _0x278ee0=await _0x368003['json']()['catch'](()=>({}));throw new Error(_0x278ee0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x368003['statusText']);}return await _0x368003['json']();},async 'stopTask'(_0x9789e9){if(!_0x9789e9)throw new Error('Task\x20ID\x20is\x20required');const _0x2b84dd=await fetch(API_BASE+'/tasks/'+_0x9789e9+'/stop',{'method':'POST'});if(!_0x2b84dd['ok']){const _0x4bacc7=await _0x2b84dd['json']()['catch'](()=>({}));throw new Error(_0x4bacc7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2b84dd['statusText']);}return await _0x2b84dd['json']();},async 'interruptTask'(_0x3d6d66){if(!_0x3d6d66)throw new Error('Task\x20ID\x20is\x20required');const _0x473cc3=await fetch(API_BASE+'/tasks/'+_0x3d6d66+'/interrupt',{'method':'POST'});if(!_0x473cc3['ok']){const _0x4db43c=await _0x473cc3['json']()['catch'](()=>({}));throw new Error(_0x4db43c['error']||_0x4db43c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x473cc3['statusText']);}return await _0x473cc3['json']();},async 'startTask'(_0x426132){if(!_0x426132)throw new Error('Task\x20ID\x20is\x20required');const _0x56b48a=await fetch(API_BASE+'/tasks/'+_0x426132+'/start',{'method':'POST'});if(!_0x56b48a['ok']){const _0x3e122d=await _0x56b48a['json']()['catch'](()=>({}));throw new Error(_0x3e122d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x56b48a['statusText']);}return await _0x56b48a['json']();},async 'deleteTask'(_0x4688cf){if(!_0x4688cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4a3395=await fetch(API_BASE+'/tasks/'+_0x4688cf,{'method':'DELETE'});if(!_0x4a3395['ok']){const _0x32ca61=await _0x4a3395['json']()['catch'](()=>({}));throw new Error(_0x32ca61['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4a3395['statusText']);}return await _0x4a3395['json']();},async 'refreshTasksFromDisk'(){const _0x2c0c0f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2c0c0f['ok']){const _0x48cf47=await _0x2c0c0f['json']()['catch'](()=>({}));throw new Error(_0x48cf47['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2c0c0f['statusText']);}return await _0x2c0c0f['json']();},async 'approveTask'(_0x703018,_0x5c3d54={}){if(!_0x703018)throw new Error('Task\x20ID\x20is\x20required');const _0x1b8eae={'commit_message':_0x5c3d54['commit_message']||'','pull':_0x5c3d54['pull']??![],'push':_0x5c3d54['push']??![]};_0x5c3d54['new_branch']&&(_0x1b8eae['new_branch']=_0x5c3d54['new_branch']);const _0xa27914=await fetch(API_BASE+'/tasks/'+_0x703018+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b8eae)});if(!_0xa27914['ok']){const _0x2cb030=await _0xa27914['json']()['catch'](()=>({}));let _0x4b56e0=_0x2cb030['error']||_0x2cb030['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xa27914['statusText'];if(_0x2cb030['results']&&Array['isArray'](_0x2cb030['results'])){const _0x245201=_0x2cb030['results']['filter'](_0x928bb=>!_0x928bb['success']&&_0x928bb['error']);_0x245201['length']>0x0&&(_0x4b56e0=_0x245201[0x0]['error']);}throw new Error(_0x4b56e0);}return await _0xa27914['json']();},async 'getPullRequestInfo'(_0x243afc){if(!_0x243afc)throw new Error('Task\x20ID\x20is\x20required');const _0x5de768=await fetch(API_BASE+'/tasks/'+_0x243afc+'/pull-request-info');if(!_0x5de768['ok']){const _0xa350c9=await _0x5de768['json']()['catch'](()=>({}));throw new Error(_0xa350c9['error']||_0xa350c9['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x5de768['statusText']);}return await _0x5de768['json']();},async 'createPullRequests'(_0x507eed,_0x2c9ac5){if(!_0x507eed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ac5||!Array['isArray'](_0x2c9ac5))throw new Error('repos\x20array\x20is\x20required');const _0x265b0b=await fetch(API_BASE+'/tasks/'+_0x507eed+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2c9ac5})});if(!_0x265b0b['ok']){const _0x2f57b=await _0x265b0b['json']()['catch'](()=>({}));let _0x2a0313=_0x2f57b['error']||_0x2f57b['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x265b0b['statusText'];if(_0x2f57b['results']&&Array['isArray'](_0x2f57b['results'])){const _0x5e7840=_0x2f57b['results']['filter'](_0x70ab46=>!_0x70ab46['success']&&_0x70ab46['error']);_0x5e7840['length']>0x0&&(_0x2a0313=_0x5e7840[0x0]['error']);}throw new Error(_0x2a0313);}return await _0x265b0b['json']();},async 'syncRepos'(_0x8a01b4){if(!_0x8a01b4)throw new Error('Task\x20ID\x20is\x20required');const _0x9fa078=await fetch(API_BASE+'/tasks/'+_0x8a01b4+'/sync-repos',{'method':'POST'});if(!_0x9fa078['ok']){const _0x2b84b9=await _0x9fa078['json']()['catch'](()=>({}));throw new Error(_0x2b84b9['error']||_0x2b84b9['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9fa078['statusText']);}return await _0x9fa078['json']();},async 'getIbmiSyncInfo'(_0x48fe9e){if(!_0x48fe9e)throw new Error('Task\x20ID\x20is\x20required');const _0x459b02=await fetch(API_BASE+'/tasks/'+_0x48fe9e+'/ibmi-sync-info');if(!_0x459b02['ok']){const _0x5a5e70=await _0x459b02['json']()['catch'](()=>({}));throw new Error(_0x5a5e70['error']||_0x5a5e70['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x459b02['json']();},async 'getSyncFiles'(_0x3a40f2){if(!_0x3a40f2)throw new Error('Task\x20ID\x20is\x20required');const _0xaf47d4=await fetch(API_BASE+'/tasks/'+_0x3a40f2+'/sync-to-ibmi/files');if(!_0xaf47d4['ok']){const _0x2afe2e=await _0xaf47d4['json']()['catch'](()=>({}));throw new Error(_0x2afe2e['error']||_0x2afe2e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xaf47d4['json']();},async 'syncToIbmi'(_0x16ab48,_0x1d4bab,_0x38f44e=null,_0x26725b=null,_0x15feb3=null){if(!_0x16ab48)throw new Error('Task\x20ID\x20is\x20required');const _0x1887f4={'library':_0x1d4bab};if(_0x38f44e)_0x1887f4['user']=_0x38f44e;if(_0x26725b)_0x1887f4['password']=_0x26725b;if(_0x15feb3)_0x1887f4['files']=_0x15feb3;const _0x3db2a2=await fetch(API_BASE+'/tasks/'+_0x16ab48+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1887f4)});if(!_0x3db2a2['ok']){const _0x3d02c8=await _0x3db2a2['json']()['catch'](()=>({}));throw new Error(_0x3d02c8['error']||_0x3d02c8['message']||'Sync\x20failed');}return await _0x3db2a2['json']();},async 'getIbmiSyncLog'(_0x37c01a){if(!_0x37c01a)throw new Error('Task\x20ID\x20is\x20required');const _0x2966e0=await fetch(API_BASE+'/tasks/'+_0x37c01a+'/ibmi-sync-log');if(!_0x2966e0['ok']){const _0x400168=await _0x2966e0['json']()['catch'](()=>({}));throw new Error(_0x400168['error']||_0x400168['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2966e0['json']();},async 'pullChanges'(_0x36329f){if(!_0x36329f)throw new Error('Task\x20ID\x20is\x20required');const _0x2fc9d6=await fetch(API_BASE+'/tasks/'+_0x36329f+'/pull-changes',{'method':'POST'});if(!_0x2fc9d6['ok']){const _0x2ccd06=await _0x2fc9d6['json']()['catch'](()=>({}));throw new Error(_0x2ccd06['error']||_0x2ccd06['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2fc9d6['statusText']);}return await _0x2fc9d6['json']();},async 'readFile'(_0x332e6d,_0x19c1f4){if(!_0x332e6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19c1f4)throw new Error('File\x20path\x20is\x20required');const _0x225fa6=await fetch(API_BASE+'/tasks/'+_0x332e6d+'/files?path='+encodeURIComponent(_0x19c1f4));if(!_0x225fa6['ok']){const _0x4ab434=await _0x225fa6['json']()['catch'](()=>({}));throw new Error(_0x4ab434['error']||_0x4ab434['message']||'Failed\x20to\x20read\x20file:\x20'+_0x225fa6['statusText']);}return await _0x225fa6['json']();},'getTaskFileDownloadUrl'(_0x56c30f,_0x24e84f){if(!_0x56c30f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24e84f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x56c30f+'/files/download?path='+encodeURIComponent(_0x24e84f);},async 'writeFile'(_0x5472d7,_0x49ad7b,_0x458c80){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49ad7b)throw new Error('File\x20path\x20is\x20required');if(_0x458c80===undefined)throw new Error('Content\x20is\x20required');const _0x3f2718=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49ad7b,'content':_0x458c80})});if(!_0x3f2718['ok']){const _0x18be80=await _0x3f2718['json']()['catch'](()=>({}));throw new Error(_0x18be80['error']||_0x18be80['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3f2718['statusText']);}return await _0x3f2718['json']();},async 'uploadTaskFiles'(_0x4c926d,_0x1e3d1c,_0x558c4e){if(!_0x4c926d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3d1c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x558c4e||_0x558c4e['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31f22c=new FormData();_0x31f22c['append']('targetDir',_0x1e3d1c);for(const _0x27334e of _0x558c4e){_0x31f22c['append']('files',_0x27334e,_0x27334e['name']);}const _0x23c431=await fetch(API_BASE+'/tasks/'+_0x4c926d+'/files/upload',{'method':'POST','body':_0x31f22c});if(!_0x23c431['ok']){const _0x4b3bed=await _0x23c431['json']()['catch'](()=>({}));throw new Error(_0x4b3bed['error']||_0x4b3bed['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x23c431['statusText']);}return await _0x23c431['json']();},async 'createDirectory'(_0x31462c,_0x48b721){if(!_0x31462c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48b721)throw new Error('Directory\x20path\x20is\x20required');const _0x38fb4f=await fetch(API_BASE+'/tasks/'+_0x31462c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x48b721})});if(!_0x38fb4f['ok']){const _0x126f81=await _0x38fb4f['json']()['catch'](()=>({}));throw new Error(_0x126f81['error']||_0x126f81['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x38fb4f['statusText']);}return await _0x38fb4f['json']();},async 'renamePath'(_0xcc5a35,_0x3d9b96,_0x3223be){if(!_0xcc5a35)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9b96)throw new Error('Source\x20path\x20is\x20required');if(!_0x3223be)throw new Error('Destination\x20path\x20is\x20required');const _0x253046=await fetch(API_BASE+'/tasks/'+_0xcc5a35+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x3d9b96,'newPath':_0x3223be})});if(!_0x253046['ok']){const _0x1febe1=await _0x253046['json']()['catch'](()=>({}));throw new Error(_0x1febe1['error']||_0x1febe1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x253046['statusText']);}return await _0x253046['json']();},async 'deleteFile'(_0x474a1f,_0x1a1c02){if(!_0x474a1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1c02)throw new Error('File\x20path\x20is\x20required');const _0x1413e0=await fetch(API_BASE+'/tasks/'+_0x474a1f+'/files?path='+encodeURIComponent(_0x1a1c02),{'method':'DELETE'});if(!_0x1413e0['ok']){const _0xadec7c=await _0x1413e0['json']()['catch'](()=>({}));throw new Error(_0xadec7c['error']||_0xadec7c['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1413e0['statusText']);}return await _0x1413e0['json']();},async 'deleteDirectory'(_0x5acf32,_0x59b802){if(!_0x5acf32)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59b802)throw new Error('Directory\x20path\x20is\x20required');const _0x5d3596=await fetch(API_BASE+'/tasks/'+_0x5acf32+'/files/directory?path='+encodeURIComponent(_0x59b802),{'method':'DELETE'});if(!_0x5d3596['ok']){const _0x1c8c68=await _0x5d3596['json']()['catch'](()=>({}));throw new Error(_0x1c8c68['error']||_0x1c8c68['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5d3596['statusText']);}return await _0x5d3596['json']();},async 'discardFile'(_0x1e0230,_0x28fd47,_0x232ea1){if(!_0x1e0230)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28fd47)throw new Error('File\x20path\x20is\x20required');if(!_0x232ea1)throw new Error('Repository\x20path\x20is\x20required');const _0xc93d16=await fetch(API_BASE+'/tasks/'+_0x1e0230+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28fd47,'repoPath':_0x232ea1})});if(!_0xc93d16['ok']){const _0x3f51ea=await _0xc93d16['json']()['catch'](()=>({}));throw new Error(_0x3f51ea['error']||_0x3f51ea['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xc93d16['statusText']);}return await _0xc93d16['json']();},async 'followUpTask'(_0x1fe836,_0x5b3b53={}){if(!_0x1fe836)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b3b53['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5a92fb,_0x28e393={};if(_0x5b3b53['files']&&_0x5b3b53['files']['length']>0x0){const _0x12228e=new FormData();_0x12228e['append']('instructions',_0x5b3b53['instructions']);for(const _0x40a0e6 of _0x5b3b53['files']){_0x12228e['append']('attachments',_0x40a0e6);}_0x5a92fb=_0x12228e;}else _0x28e393['Content-Type']='application/json',_0x5a92fb=JSON['stringify']({'instructions':_0x5b3b53['instructions']});const _0x1f1a0b=await fetch(API_BASE+'/tasks/'+_0x1fe836+'/follow-up',{'method':'POST','headers':_0x28e393,'body':_0x5a92fb});if(!_0x1f1a0b['ok']){const _0x425211=await _0x1f1a0b['json']()['catch'](()=>({}));throw new Error(_0x425211['error']||_0x425211['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1f1a0b['statusText']);}return await _0x1f1a0b['json']();},async 'getTaskRewindPoints'(_0x3a9f8a){if(!_0x3a9f8a)throw new Error('Task\x20ID\x20is\x20required');const _0x2eec13=await fetch(API_BASE+'/tasks/'+_0x3a9f8a+'/rewind-points');if(!_0x2eec13['ok']){const _0x3fc4b5=await _0x2eec13['json']()['catch'](()=>({}));throw new Error(_0x3fc4b5['error']||_0x3fc4b5['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2eec13['statusText']);}return await _0x2eec13['json']();},async 'rewindTask'(_0x2a90f0,_0x5a8591={}){if(!_0x2a90f0)throw new Error('Task\x20ID\x20is\x20required');const _0x2fffb5=Number['isInteger'](_0x5a8591['targetFollowUpCount'])?_0x5a8591['targetFollowUpCount']:0x0,_0x1eba7c={'targetFollowUpCount':_0x2fffb5};typeof _0x5a8591['instructions']==='string'&&_0x5a8591['instructions']['trim']()&&(_0x1eba7c['instructions']=_0x5a8591['instructions']['trim']());typeof _0x5a8591['rewindFiles']==='boolean'&&(_0x1eba7c['rewindFiles']=_0x5a8591['rewindFiles']);const _0x3e53f6=await fetch(API_BASE+'/tasks/'+_0x2a90f0+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1eba7c)});if(!_0x3e53f6['ok']){const _0xad14c6=await _0x3e53f6['json']()['catch'](()=>({}));throw new Error(_0xad14c6['error']||_0xad14c6['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3e53f6['statusText']);}return await _0x3e53f6['json']();},async 'login'(_0x54dbcb,_0x118d6f){const _0xaeb793=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x54dbcb,'password':_0x118d6f})});if(!_0xaeb793['ok']){const _0x2056b3=await _0xaeb793['json']();throw new Error(_0x2056b3['message']||'Login\x20failed');}return await _0xaeb793['json']();},async 'logout'(){const _0x4ccb68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ccb68['ok']){const _0x3ab912=await _0x4ccb68['json']();throw new Error(_0x3ab912['message']||'Logout\x20failed');}return await _0x4ccb68['json']();},async 'getCurrentUser'(){const _0x143fb3=await fetch(API_BASE+'/auth/me');if(!_0x143fb3['ok'])throw new Error('Not\x20authenticated');const _0x774d50=await _0x143fb3['json']();return _0x774d50['user'];},async 'getRolesInfo'(){const _0x526bfb=await fetch(API_BASE+'/users/roles');if(!_0x526bfb['ok']){const _0x5eba4e=await _0x526bfb['json']();throw new Error(_0x5eba4e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x526bfb['json']();},async 'getUsers'(){const _0x32d630=await fetch(API_BASE+'/users');if(!_0x32d630['ok']){const _0x4646ea=await _0x32d630['json']();throw new Error(_0x4646ea['message']||'Failed\x20to\x20get\x20users');}return await _0x32d630['json']();},async 'getUser'(_0x5232dd){const _0x69587a=await fetch(API_BASE+'/users/'+_0x5232dd);if(!_0x69587a['ok']){const _0x3d9c1b=await _0x69587a['json']();throw new Error(_0x3d9c1b['message']||'Failed\x20to\x20get\x20user');}return await _0x69587a['json']();},async 'createUser'(_0x6b9641){const _0xae3063=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6b9641)});if(!_0xae3063['ok']){const _0x5df25a=await _0xae3063['json']();throw new Error(_0x5df25a['message']||'Failed\x20to\x20create\x20user');}return await _0xae3063['json']();},async 'updateUser'(_0x1d15ac,_0x469a9e){const _0xb6e1ee=await fetch(API_BASE+'/users/'+_0x1d15ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x469a9e)});if(!_0xb6e1ee['ok']){const _0x549bcd=await _0xb6e1ee['json']();throw new Error(_0x549bcd['message']||'Failed\x20to\x20update\x20user');}return await _0xb6e1ee['json']();},async 'deleteUser'(_0x5ebee4){const _0x4249a1=await fetch(API_BASE+'/users/'+_0x5ebee4,{'method':'DELETE'});if(!_0x4249a1['ok']){const _0x337f4c=await _0x4249a1['json']();throw new Error(_0x337f4c['message']||'Failed\x20to\x20delete\x20user');}return await _0x4249a1['json']();},async 'stopAllContainers'(){const _0x4bc0eb=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3219e2=await _0x4bc0eb['json']()['catch'](()=>({}));if(!_0x4bc0eb['ok'])throw new Error(_0x3219e2['message']||_0x3219e2['error']||'Failed\x20to\x20stop\x20containers');return _0x3219e2;},async 'removeStoppedContainers'(){const _0x54eb62=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x37b611=await _0x54eb62['json']()['catch'](()=>({}));if(!_0x54eb62['ok'])throw new Error(_0x37b611['message']||_0x37b611['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x37b611;},async 'pruneDockerResources'(){const _0x413ebe=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x25e975=await _0x413ebe['json']()['catch'](()=>({}));if(!_0x413ebe['ok'])throw new Error(_0x25e975['message']||_0x25e975['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x25e975;},async 'createPasswordToken'(_0x3437d5,_0x44c965='setup',_0x1afa9b=![]){const _0x31442c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3437d5,'type':_0x44c965,'sendEmail':_0x1afa9b})});if(!_0x31442c['ok']){const _0x4839e2=await _0x31442c['json']();throw new Error(_0x4839e2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31442c['json']();},async 'getEmailConfig'(){const _0x2bab08=await fetch(API_BASE+'/password/email-config');if(!_0x2bab08['ok']){const _0x5ae8e3=await _0x2bab08['json']();throw new Error(_0x5ae8e3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2bab08['json']();},async 'updateTaskName'(_0x9739cc,_0x1ad9d2){const _0x1aac7d=await fetch(API_BASE+'/tasks/'+_0x9739cc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1ad9d2})});if(!_0x1aac7d['ok']){const _0xf7e9b0=await _0x1aac7d['json']();throw new Error(_0xf7e9b0['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1aac7d['json']();},async 'pinTask'(_0x5a9230,_0x27aba7,_0x23df79=null){if(!_0x5a9230)throw new Error('Task\x20ID\x20is\x20required');const _0x245ff0={'pinned':_0x27aba7};_0x23df79&&_0x23df79['length']>0x0&&(_0x245ff0['additionalTaskIds']=_0x23df79);const _0x3371e4=await fetch(API_BASE+'/tasks/'+_0x5a9230+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x245ff0)});if(!_0x3371e4['ok']){const _0x4b545c=await _0x3371e4['json']();throw new Error(_0x4b545c['error']||'Failed\x20to\x20pin\x20task');}return await _0x3371e4['json']();},async 'setTaskWinner'(_0xcbab0e,_0x149167,_0x3d78c7=[]){if(!_0xcbab0e)throw new Error('Task\x20ID\x20is\x20required');const _0x1ebf78=await fetch(API_BASE+'/tasks/'+_0xcbab0e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x149167,'siblings':_0x3d78c7})});if(!_0x1ebf78['ok']){const _0x1857a2=await _0x1ebf78['json']();throw new Error(_0x1857a2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ebf78['json']();},async 'setTaskLoser'(_0x3063a2,_0x4c4a9b){if(!_0x3063a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21feb8=await fetch(API_BASE+'/tasks/'+_0x3063a2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c4a9b})});if(!_0x21feb8['ok']){const _0x41be62=await _0x21feb8['json']();throw new Error(_0x41be62['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x21feb8['json']();},async 'createTaskGroup'(_0x61ecfd){const _0x1da6cd=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x61ecfd)});if(!_0x1da6cd['ok']){const _0x17fb7f=await _0x1da6cd['json']();throw new Error(_0x17fb7f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1da6cd['json']();},async 'getTaskGroups'(_0x37cf50={}){const _0x44b1c0=new URLSearchParams();if(_0x37cf50['userId'])_0x44b1c0['set']('userId',String(_0x37cf50['userId']));if(_0x37cf50['status'])_0x44b1c0['set']('status',String(_0x37cf50['status']));if(_0x37cf50['limit'])_0x44b1c0['set']('limit',String(_0x37cf50['limit']));const _0x33b17b=API_BASE+'/tasks/groups'+(_0x44b1c0['toString']()?'?'+_0x44b1c0['toString']():''),_0x62922=await fetch(_0x33b17b);if(!_0x62922['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x62922['json']();},async 'getTaskGroup'(_0x278ec5){const _0x85e1a7=await fetch(API_BASE+'/tasks/groups/'+_0x278ec5);if(!_0x85e1a7['ok']){const _0xf9a8d=await _0x85e1a7['json']();throw new Error(_0xf9a8d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x85e1a7['json']();},async 'updateTaskGroup'(_0x1a33ec,_0x5b26b3,_0x5b0546){const _0x289b49=await fetch(API_BASE+'/tasks/'+_0x1a33ec+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x5b26b3,'groupIndex':_0x5b0546})});if(!_0x289b49['ok']){const _0xccdd12=await _0x289b49['json']();throw new Error(_0xccdd12['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x289b49['json']();},async 'removeTaskFromGroup'(_0x397544){return this['updateTaskGroup'](_0x397544,null,null);},async 'deleteTaskGroup'(_0x4ea0c7,_0x3e7b73=![]){const _0x79a301=_0x3e7b73?'?deleteTasks=true':'',_0x4a9eef=await fetch(API_BASE+'/tasks/groups/'+_0x4ea0c7+_0x79a301,{'method':'DELETE'});if(!_0x4a9eef['ok']){const _0x4a6227=await _0x4a9eef['json']();throw new Error(_0x4a6227['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1a5494,_0x29ff85){const _0x3785fc=await fetch(API_BASE+'/tasks/groups/'+_0x1a5494+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29ff85})});if(!_0x3785fc['ok']){const _0x28d810=await _0x3785fc['json']();throw new Error(_0x28d810['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3785fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4d959b){if(!_0x4d959b)throw new Error('Task\x20ID\x20is\x20required');const _0x422cc0=await fetch(API_BASE+'/tasks/'+_0x4d959b+'/comments');if(!_0x422cc0['ok']){const _0x43151e=await _0x422cc0['json']()['catch'](()=>({}));throw new Error(_0x43151e['error']||'Failed\x20to\x20get\x20comments');}return await _0x422cc0['json']();},async 'addComment'(_0x437431,_0x2fa066){if(!_0x437431)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fa066)throw new Error('Comment\x20content\x20is\x20required');const _0x436e94=await fetch(API_BASE+'/tasks/'+_0x437431+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2fa066})});if(!_0x436e94['ok']){const _0x2713fa=await _0x436e94['json']()['catch'](()=>({}));throw new Error(_0x2713fa['error']||'Failed\x20to\x20add\x20comment');}return await _0x436e94['json']();},async 'updateComment'(_0x1b11c6,_0x58e6dd,_0x4296e2){if(!_0x1b11c6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58e6dd)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4296e2)throw new Error('Comment\x20content\x20is\x20required');const _0x135c49=await fetch(API_BASE+'/tasks/'+_0x1b11c6+'/comments/'+_0x58e6dd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4296e2})});if(!_0x135c49['ok']){const _0x111abd=await _0x135c49['json']()['catch'](()=>({}));throw new Error(_0x111abd['error']||'Failed\x20to\x20update\x20comment');}return await _0x135c49['json']();},async 'deleteComment'(_0x3fd657,_0x48144e){if(!_0x3fd657)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48144e)throw new Error('Comment\x20ID\x20is\x20required');const _0x35f82f=await fetch(API_BASE+'/tasks/'+_0x3fd657+'/comments/'+_0x48144e,{'method':'DELETE'});if(!_0x35f82f['ok']){const _0x1837a0=await _0x35f82f['json']()['catch'](()=>({}));throw new Error(_0x1837a0['error']||'Failed\x20to\x20delete\x20comment');}return await _0x35f82f['json']();},async 'createObjective'(_0x4c9785){const _0x3fb18f={'objective':!![],'name':_0x4c9785['name']||'','environment':_0x4c9785['environment']||null,'agents':_0x4c9785['agents']||[],'branches':_0x4c9785['branches']||{},'isPinned':_0x4c9785['isPinned']||![],'parentObjectiveId':_0x4c9785['parentObjectiveId']||null,'env_vars':_0x4c9785['envVars']||{},'parameters':{'instructions':_0x4c9785['instructions']||''},'files':_0x4c9785['files']||[],'jira':_0x4c9785['jira']||null};return this['createTask'](_0x3fb18f);},async 'updateObjective'(_0x39ea0d,_0x2d63ba,_0x2660eb=[],_0x30ada7=[]){let _0xe2278b,_0x281f15={};const _0x4f79f6={..._0x2d63ba};_0x30ada7&&_0x30ada7['length']>0x0&&(_0x4f79f6['removeAttachments']=_0x30ada7);if(_0x2660eb&&_0x2660eb['length']>0x0){const _0x106009=new FormData();for(const [_0x4ea73f,_0x2a883c]of Object['entries'](_0x4f79f6)){if(_0x2a883c==null)continue;typeof _0x2a883c==='object'?_0x106009['append'](_0x4ea73f,JSON['stringify'](_0x2a883c)):_0x106009['append'](_0x4ea73f,String(_0x2a883c));}for(const _0x13d46b of _0x2660eb){_0x106009['append']('attachments',_0x13d46b);}_0xe2278b=_0x106009;}else _0x281f15['Content-Type']='application/json',_0xe2278b=JSON['stringify'](_0x4f79f6);const _0x471e57=await fetch(API_BASE+'/tasks/'+_0x39ea0d,{'method':'PATCH','headers':_0x281f15,'body':_0xe2278b});if(!_0x471e57['ok']){const _0x2a33aa=await _0x471e57['json']();throw new Error(_0x2a33aa['error']||'Failed\x20to\x20update\x20objective');}return await _0x471e57['json']();},async 'deleteObjective'(_0x2f5628){return this['deleteTask'](_0x2f5628);},async 'launchObjective'(_0x255d05,_0x4b1697={}){const _0x5d1788=await fetch(API_BASE+'/tasks/'+_0x255d05+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b1697)});if(!_0x5d1788['ok']){const _0x13f552=await _0x5d1788['json']();throw new Error(_0x13f552['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5d1788['json']();},async 'getObjectiveAttachments'(_0x166044){return this['getTaskAttachments'](_0x166044);},async 'createJudgeTask'({environment:_0x3ce01c,judgeAgent:_0x29ccb9,groupId:_0xf824b9,taskIds:_0x5e574f,judgeCustomInstructions:_0x2ee94d,isPinned:_0x54e387}){const _0x407b19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ce01c,'judgeAgent':_0x29ccb9,'groupId':_0xf824b9,'taskIds':_0x5e574f,'judgeCustomInstructions':_0x2ee94d,'isPinned':_0x54e387})});if(!_0x407b19['ok']){const _0x3af567=await _0x407b19['json']();throw new Error(_0x3af567['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x407b19['json']();},async 'getJudgeTasks'(_0x2b9bd2){const _0x1e2fc0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2b9bd2));if(!_0x1e2fc0['ok']){const _0x1726be=await _0x1e2fc0['json']();throw new Error(_0x1726be['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1e2fc0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3d0000,_0x4039c8,_0x379f98=''){const _0xeffe90=await fetch(API_BASE+'/tasks/'+_0x3d0000+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4039c8,'customPreamble':_0x379f98})});if(!_0xeffe90['ok']){const _0x195c7e=await _0xeffe90['json']();throw new Error(_0x195c7e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xeffe90['json']();},async 'getJiraConfig'(){const _0x53851d=await fetch(API_BASE+'/jira/config');if(!_0x53851d['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x53851d['json']();},async 'getJiraIssue'(_0x4c6b66){const _0x4f8ec9=await fetch(API_BASE+'/jira/issues/'+_0x4c6b66);if(!_0x4f8ec9['ok']){const _0x188afb=await _0x4f8ec9['json']()['catch'](()=>({}));throw new Error(_0x188afb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4f8ec9['statusText']);}return await _0x4f8ec9['json']();},async 'searchJiraIssues'(_0x1ed265,_0x2145e=0x14){const _0xbbe800=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x1ed265,'maxResults':_0x2145e})});if(!_0xbbe800['ok']){const _0x515f69=await _0xbbe800['json']()['catch'](()=>({}));throw new Error(_0x515f69['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xbbe800['statusText']);}return await _0xbbe800['json']();},async 'postJiraComment'(_0x57c1e6,_0x204b88){const _0x41e5c2=await fetch(API_BASE+'/jira/issues/'+_0x57c1e6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x204b88})});if(!_0x41e5c2['ok']){const _0x37d64f=await _0x41e5c2['json']()['catch'](()=>({}));throw new Error(_0x37d64f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x41e5c2['statusText']);}return await _0x41e5c2['json']();},async 'getJiraComments'(_0x55ccce){const _0x267a49=await fetch(API_BASE+'/jira/issues/'+_0x55ccce+'/comments');if(!_0x267a49['ok']){const _0x163b75=await _0x267a49['json']()['catch'](()=>({}));throw new Error(_0x163b75['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x267a49['statusText']);}return await _0x267a49['json']();},async 'promptParameter'({environment:_0x584556,command:_0x2363af,parser:parser='json'}){const _0x1d9d93=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x584556,'command':_0x2363af,'parser':parser})});if(!_0x1d9d93['ok']){const _0x4bb76e=await _0x1d9d93['json']()['catch'](()=>({}));throw new Error(_0x4bb76e['message']||_0x4bb76e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1d9d93['statusText']);}return await _0x1d9d93['json']();},async 'promptParameterStream'(_0x73c6db,_0x17550a){const _0xdbc89d=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x73c6db)});if(!_0xdbc89d['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xdbc89d['statusText']);const _0x333520=_0xdbc89d['body']['getReader'](),_0x75a106=new TextDecoder();let _0x3915ad='';return new Promise((_0x333623,_0x4ae81d)=>{const _0x5d7f3b=async()=>{try{const {done:_0x10f589,value:_0x183273}=await _0x333520['read']();if(_0x10f589)return;_0x3915ad+=_0x75a106['decode'](_0x183273,{'stream':!![]});const _0x404533=_0x3915ad['split']('\x0a\x0a');_0x3915ad=_0x404533['pop']()||'';for(const _0xe214d7 of _0x404533){if(!_0xe214d7['trim']())continue;const _0x4bd758=_0xe214d7['split']('\x0a');let _0xe261f8='message',_0x479e50='';for(const _0x256c32 of _0x4bd758){if(_0x256c32['startsWith']('event:'))_0xe261f8=_0x256c32['substring'](0x6)['trim']();else _0x256c32['startsWith']('data:')&&(_0x479e50=_0x256c32['substring'](0x5)['trim']());}if(!_0x479e50)continue;try{const _0x55d54d=JSON['parse'](_0x479e50);if(_0xe261f8==='progress'&&_0x17550a)_0x17550a(_0x55d54d['stage'],_0x55d54d['message']);else{if(_0xe261f8==='result'){_0x333623(_0x55d54d);return;}else{if(_0xe261f8==='error'){let _0x21e229=_0x55d54d['message']||_0x55d54d['error']||'Prompt\x20command\x20failed';_0x55d54d['rawOutput']&&(_0x21e229+='\x0a\x0aRaw\x20output:\x0a'+_0x55d54d['rawOutput']);_0x4ae81d(new Error(_0x21e229));return;}}}}catch(_0x4d3d55){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d3d55),console['error']('Event\x20type:',_0xe261f8),console['error']('Event\x20data:',_0x479e50),console['error']('First\x20200\x20chars:',_0x479e50['substring'](0x0,0xc8)),_0x4ae81d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d3d55['message']+'\x0a\x0aData:\x20'+_0x479e50['substring'](0x0,0x1f4)));return;}}_0x5d7f3b();}catch(_0x20808f){_0x4ae81d(_0x20808f);}};_0x5d7f3b();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x28b34e){const _0x1fc1b9=await fetch(''+API_BASE+_0x28b34e);if(!_0x1fc1b9['ok']){const _0x343daf=await _0x1fc1b9['json']()['catch'](()=>({'error':_0x1fc1b9['statusText']})),_0x5ebb58=new Error(_0x343daf['error']||_0x343daf['message']||_0x1fc1b9['statusText']);if(_0x343daf['detail']!==undefined)_0x5ebb58['detail']=_0x343daf['detail'];throw _0x5ebb58;}return await _0x1fc1b9['json']();},async 'post'(_0x4efb7f,_0x19ca47){const _0x541598=await fetch(''+API_BASE+_0x4efb7f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19ca47)});if(!_0x541598['ok']){const _0x43dd44=await _0x541598['json']()['catch'](()=>({'error':_0x541598['statusText']})),_0x4a084d=new Error(_0x43dd44['error']||_0x43dd44['message']||_0x541598['statusText']);if(_0x43dd44['detail']!==undefined)_0x4a084d['detail']=_0x43dd44['detail'];throw _0x4a084d;}return await _0x541598['json']();},async 'put'(_0x423b38,_0x378dca){const _0x14965b=await fetch(''+API_BASE+_0x423b38,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x378dca)});if(!_0x14965b['ok']){const _0x1a12f5=await _0x14965b['json']()['catch'](()=>({'error':_0x14965b['statusText']})),_0x2177de=new Error(_0x1a12f5['error']||_0x1a12f5['message']||_0x14965b['statusText']);if(_0x1a12f5['detail']!==undefined)_0x2177de['detail']=_0x1a12f5['detail'];throw _0x2177de;}return await _0x14965b['json']();},async 'delete'(_0x2d870a,_0x38e316){const _0x4968d9={'method':'DELETE'};_0x38e316&&(_0x4968d9['headers']={'Content-Type':'application/json'},_0x4968d9['body']=JSON['stringify'](_0x38e316));const _0x4c90fb=await fetch(''+API_BASE+_0x2d870a,_0x4968d9);if(!_0x4c90fb['ok']){const _0xeac2be=await _0x4c90fb['json']()['catch'](()=>({'error':_0x4c90fb['statusText']})),_0x452b49=new Error(_0xeac2be['error']||_0xeac2be['message']||_0x4c90fb['statusText']);if(_0xeac2be['detail']!==undefined)_0x452b49['detail']=_0xeac2be['detail'];throw _0x452b49;}return await _0x4c90fb['json']();},async 'getSkills'(){const _0x1dfb07=await fetch(API_BASE+'/skills');if(!_0x1dfb07['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1dfb07['statusText']);return await _0x1dfb07['json']();},async 'getSkill'(_0x4b5778){const _0x454802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b5778));if(!_0x454802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x454802['statusText']);return await _0x454802['json']();},async 'createSkill'(_0x1087a6){const _0x5d16ff=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1087a6)});if(!_0x5d16ff['ok']){const _0x146d2d=await _0x5d16ff['json']()['catch'](()=>({'error':_0x5d16ff['statusText']})),_0x478ce0=new Error(_0x146d2d['error']||_0x146d2d['message']||_0x5d16ff['statusText']);if(_0x146d2d['detail']!==undefined)_0x478ce0['detail']=_0x146d2d['detail'];throw _0x478ce0;}return await _0x5d16ff['json']();},async 'updateSkill'(_0x23d3e8,_0x407528){const _0x5c66c0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23d3e8),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x407528)});if(!_0x5c66c0['ok']){const _0x1adf7a=await _0x5c66c0['json']()['catch'](()=>({'error':_0x5c66c0['statusText']})),_0x17835d=new Error(_0x1adf7a['error']||_0x1adf7a['message']||_0x5c66c0['statusText']);if(_0x1adf7a['detail']!==undefined)_0x17835d['detail']=_0x1adf7a['detail'];throw _0x17835d;}return await _0x5c66c0['json']();},async 'deleteSkill'(_0x5ef87e){const _0x560712=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5ef87e),{'method':'DELETE'});if(!_0x560712['ok']){const _0x1d228b=await _0x560712['json']()['catch'](()=>({'error':_0x560712['statusText']})),_0x534072=new Error(_0x1d228b['error']||_0x1d228b['message']||_0x560712['statusText']);if(_0x1d228b['detail']!==undefined)_0x534072['detail']=_0x1d228b['detail'];throw _0x534072;}return await _0x560712['json']();},async 'getSkillFile'(_0x58bd3d,_0x144f5d){const _0x23013a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x58bd3d)+'/files/'+_0x144f5d);if(!_0x23013a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x23013a['statusText']);return await _0x23013a['json']();},async 'saveSkillFile'(_0x4c2268,_0x5cff27,_0x162d1c){const _0x4e54a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2268)+'/files/'+_0x5cff27,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x162d1c})});if(!_0x4e54a7['ok']){const _0xb952b=await _0x4e54a7['json']()['catch'](()=>({'error':_0x4e54a7['statusText']})),_0x5bc90d=new Error(_0xb952b['error']||_0xb952b['message']||_0x4e54a7['statusText']);if(_0xb952b['detail']!==undefined)_0x5bc90d['detail']=_0xb952b['detail'];throw _0x5bc90d;}return await _0x4e54a7['json']();},async 'deleteSkillFile'(_0x31224f,_0x40aee5){const _0x34b745=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31224f)+'/files/'+_0x40aee5,{'method':'DELETE'});if(!_0x34b745['ok']){const _0x55a154=await _0x34b745['json']()['catch'](()=>({'error':_0x34b745['statusText']})),_0x379f3c=new Error(_0x55a154['error']||_0x55a154['message']||_0x34b745['statusText']);if(_0x55a154['detail']!==undefined)_0x379f3c['detail']=_0x55a154['detail'];throw _0x379f3c;}return await _0x34b745['json']();},async 'pullSkills'(){const _0x4260a0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4260a0['ok']){const _0x247753=await _0x4260a0['json']()['catch'](()=>({'error':_0x4260a0['statusText']})),_0x4b374a=new Error(_0x247753['error']||_0x247753['message']||_0x4260a0['statusText']);if(_0x247753['detail']!==undefined)_0x4b374a['detail']=_0x247753['detail'];throw _0x4b374a;}return await _0x4260a0['json']();},async 'commitSkills'(_0x39469b,_0x3cabf8={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3cabf8,_0x4d676d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39469b,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4d676d['ok']){const _0x5908a9=await _0x4d676d['json']()['catch'](()=>({'error':_0x4d676d['statusText']})),_0x3b1813=new Error(_0x5908a9['error']||_0x5908a9['message']||_0x4d676d['statusText']);if(_0x5908a9['detail']!==undefined)_0x3b1813['detail']=_0x5908a9['detail'];throw _0x3b1813;}return await _0x4d676d['json']();},async 'discardSkillsChanges'(){const _0x3282b7=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3282b7['ok']){const _0xceb222=await _0x3282b7['json']()['catch'](()=>({'error':_0x3282b7['statusText']})),_0x579547=new Error(_0xceb222['error']||_0xceb222['message']||_0x3282b7['statusText']);if(_0xceb222['detail']!==undefined)_0x579547['detail']=_0xceb222['detail'];throw _0x579547;}return await _0x3282b7['json']();},async 'getSkillCatalog'(){const _0x4f3eb7=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4f3eb7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4f3eb7['statusText']);return await _0x4f3eb7['json']();},async 'getImportedSkillsRegistry'(){const _0x45ea95=await fetch(API_BASE+'/external-skills/registry');if(!_0x45ea95['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x45ea95['statusText']);return await _0x45ea95['json']();},async 'importCatalogSkill'(_0x396ac0){const _0xba980f=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x396ac0})});if(!_0xba980f['ok']){const _0x4e9736=await _0xba980f['json']()['catch'](()=>({'error':_0xba980f['statusText']})),_0x38eb13=new Error(_0x4e9736['error']||_0x4e9736['message']||_0xba980f['statusText']);if(_0x4e9736['detail']!==undefined)_0x38eb13['detail']=_0x4e9736['detail'];throw _0x38eb13;}return await _0xba980f['json']();},async 'importSkillFromGit'(_0xa7c8ec,_0x4feeb4,_0x4d9bea='main',_0x12e9f0=null){const _0x53b121=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa7c8ec,'skillPath':_0x4feeb4,'branch':_0x4d9bea,'skillId':_0x12e9f0})});if(!_0x53b121['ok']){const _0x257999=await _0x53b121['json']()['catch'](()=>({'error':_0x53b121['statusText']})),_0x4912da=new Error(_0x257999['error']||_0x257999['message']||_0x53b121['statusText']);if(_0x257999['detail']!==undefined)_0x4912da['detail']=_0x257999['detail'];throw _0x4912da;}return await _0x53b121['json']();},async 'probeMarketplace'(_0xc48db1,_0x19d48e='main'){const _0x5e23d2=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xc48db1,'branch':_0x19d48e})});if(!_0x5e23d2['ok']){const _0x4db86b=await _0x5e23d2['json']()['catch'](()=>({'error':_0x5e23d2['statusText']})),_0x35db4b=new Error(_0x4db86b['error']||_0x4db86b['message']||_0x5e23d2['statusText']);if(_0x4db86b['detail']!==undefined)_0x35db4b['detail']=_0x4db86b['detail'];throw _0x35db4b;}return await _0x5e23d2['json']();},async 'importMarketplaceBundle'(_0x153780,_0x41d918,_0x1c5804,_0x3685c5=null){const _0x5a4709=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x153780,'branch':_0x41d918,'bundleId':_0x1c5804,'selectedSkills':_0x3685c5})});if(!_0x5a4709['ok']){const _0x3ba446=await _0x5a4709['json']()['catch'](()=>({'error':_0x5a4709['statusText']})),_0x241949=new Error(_0x3ba446['error']||_0x3ba446['message']||_0x5a4709['statusText']);if(_0x3ba446['detail']!==undefined)_0x241949['detail']=_0x3ba446['detail'];throw _0x241949;}return await _0x5a4709['json']();},async 'importSkillFromFolder'(_0x295dce,_0x3cc761=null){const _0x2800a0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x295dce,'skillId':_0x3cc761})});if(!_0x2800a0['ok']){const _0x2fc6bd=await _0x2800a0['json']()['catch'](()=>({'error':_0x2800a0['statusText']})),_0x4c9664=new Error(_0x2fc6bd['error']||_0x2fc6bd['message']||_0x2800a0['statusText']);if(_0x2fc6bd['detail']!==undefined)_0x4c9664['detail']=_0x2fc6bd['detail'];throw _0x4c9664;}return await _0x2800a0['json']();},async 'importSkillFromNpm'(_0x556d57,_0x56e74b='latest',_0x3cf22c=null,_0x2fc566=null){const _0x45267e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x556d57,'version':_0x56e74b,'skillId':_0x3cf22c,'registry':_0x2fc566})});if(!_0x45267e['ok']){const _0x317ad5=await _0x45267e['json']()['catch'](()=>({'error':_0x45267e['statusText']})),_0x30c82b=new Error(_0x317ad5['error']||_0x317ad5['message']||_0x45267e['statusText']);if(_0x317ad5['detail']!==undefined)_0x30c82b['detail']=_0x317ad5['detail'];throw _0x30c82b;}return await _0x45267e['json']();},async 'checkSkillUpdates'(_0x3539dc){const _0x34fbce=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3539dc)+'/check-updates',{'method':'POST'});if(!_0x34fbce['ok']){const _0x5e4ce7=await _0x34fbce['json']()['catch'](()=>({'error':_0x34fbce['statusText']})),_0x36cf7f=new Error(_0x5e4ce7['error']||_0x5e4ce7['message']||_0x34fbce['statusText']);if(_0x5e4ce7['detail']!==undefined)_0x36cf7f['detail']=_0x5e4ce7['detail'];throw _0x36cf7f;}return await _0x34fbce['json']();},async 'updateExternalSkill'(_0x3d545d){const _0x2f75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3d545d)+'/update',{'method':'POST'});if(!_0x2f75f3['ok']){const _0x548dcf=await _0x2f75f3['json']()['catch'](()=>({'error':_0x2f75f3['statusText']})),_0x17c7f2=new Error(_0x548dcf['error']||_0x548dcf['message']||_0x2f75f3['statusText']);if(_0x548dcf['detail']!==undefined)_0x17c7f2['detail']=_0x548dcf['detail'];throw _0x17c7f2;}return await _0x2f75f3['json']();},async 'updateSkillFlags'(_0x31be6e,_0x1f628d){const _0x4eff4f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x31be6e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f628d})});if(!_0x4eff4f['ok']){const _0x37675d=await _0x4eff4f['json']()['catch'](()=>({'error':_0x4eff4f['statusText']})),_0x253962=new Error(_0x37675d['error']||_0x37675d['message']||_0x4eff4f['statusText']);if(_0x37675d['detail']!==undefined)_0x253962['detail']=_0x37675d['detail'];throw _0x253962;}return await _0x4eff4f['json']();},async 'removeFromImportedRegistry'(_0x454a9e){const _0xdc508f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x454a9e)+'/registry',{'method':'DELETE'});if(!_0xdc508f['ok']){const _0x250e97=await _0xdc508f['json']()['catch'](()=>({'error':_0xdc508f['statusText']})),_0x2409fe=new Error(_0x250e97['error']||_0x250e97['message']||_0xdc508f['statusText']);if(_0x250e97['detail']!==undefined)_0x2409fe['detail']=_0x250e97['detail'];throw _0x2409fe;}return await _0xdc508f['json']();},async 'getTeams'(){const _0x3aaef5=await fetch(API_BASE+'/teams');if(!_0x3aaef5['ok']){const _0x3e694a=await _0x3aaef5['json']()['catch'](()=>({'message':_0x3aaef5['statusText']}));throw new Error(_0x3e694a['message']||'Failed\x20to\x20get\x20teams');}return await _0x3aaef5['json']();},async 'getTeam'(_0x135452){const _0x32a5b3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x135452));if(!_0x32a5b3['ok']){const _0x2b31d3=await _0x32a5b3['json']()['catch'](()=>({'message':_0x32a5b3['statusText']}));throw new Error(_0x2b31d3['message']||'Failed\x20to\x20get\x20team');}return await _0x32a5b3['json']();},async 'createTeam'(_0x42dfec){const _0x3b1cda=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dfec)});if(!_0x3b1cda['ok']){const _0x249f28=await _0x3b1cda['json']()['catch'](()=>({'message':_0x3b1cda['statusText']}));throw new Error(_0x249f28['message']||'Failed\x20to\x20create\x20team');}return await _0x3b1cda['json']();},async 'updateTeam'(_0x47742f,_0x2f7d58){const _0x3bbb69=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x47742f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f7d58)});if(!_0x3bbb69['ok']){const _0xd65067=await _0x3bbb69['json']()['catch'](()=>({'message':_0x3bbb69['statusText']}));throw new Error(_0xd65067['message']||'Failed\x20to\x20update\x20team');}return await _0x3bbb69['json']();},async 'deleteTeam'(_0x3b69bf){const _0x207f6c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b69bf),{'method':'DELETE'});if(!_0x207f6c['ok']){const _0xc20ef6=await _0x207f6c['json']()['catch'](()=>({'message':_0x207f6c['statusText']}));throw new Error(_0xc20ef6['message']||'Failed\x20to\x20delete\x20team');}return await _0x207f6c['json']();},async 'addTeamMember'(_0x3786b0,_0x5c9330){const _0xe3760=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3786b0)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5c9330})});if(!_0xe3760['ok']){const _0xd72d56=await _0xe3760['json']()['catch'](()=>({'message':_0xe3760['statusText']}));throw new Error(_0xd72d56['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xe3760['json']();},async 'removeTeamMember'(_0x2b2484,_0x5de465){const _0x377cf6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b2484)+'/members/'+encodeURIComponent(_0x5de465),{'method':'DELETE'});if(!_0x377cf6['ok']){const _0x10fd42=await _0x377cf6['json']()['catch'](()=>({'message':_0x377cf6['statusText']}));throw new Error(_0x10fd42['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x377cf6['json']();},async 'getBindings'(_0x51be8b={}){const _0x521f6d=new URLSearchParams();if(_0x51be8b['resource_type'])_0x521f6d['set']('resource_type',_0x51be8b['resource_type']);if(_0x51be8b['resource_id'])_0x521f6d['set']('resource_id',_0x51be8b['resource_id']);if(_0x51be8b['subject_type'])_0x521f6d['set']('subject_type',_0x51be8b['subject_type']);if(_0x51be8b['subject_id'])_0x521f6d['set']('subject_id',_0x51be8b['subject_id']);const _0x45c27a=_0x521f6d['toString'](),_0x1bb326=await fetch(API_BASE+'/bindings'+(_0x45c27a?'?'+_0x45c27a:''));if(!_0x1bb326['ok']){const _0x5dabf4=await _0x1bb326['json']()['catch'](()=>({'message':_0x1bb326['statusText']}));throw new Error(_0x5dabf4['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1bb326['json']();},async 'createBinding'(_0x460d34){const _0x5bfc2e=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x460d34)});if(!_0x5bfc2e['ok']){const _0x2b2ace=await _0x5bfc2e['json']()['catch'](()=>({'message':_0x5bfc2e['statusText']}));throw new Error(_0x2b2ace['message']||'Failed\x20to\x20create\x20binding');}return await _0x5bfc2e['json']();},async 'updateBinding'(_0x3106bc,_0xcc83){const _0x5e5fd2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3106bc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcc83)});if(!_0x5e5fd2['ok']){const _0x33a108=await _0x5e5fd2['json']()['catch'](()=>({'message':_0x5e5fd2['statusText']}));throw new Error(_0x33a108['message']||'Failed\x20to\x20update\x20binding');}return await _0x5e5fd2['json']();},async 'deleteBinding'(_0x4056db){const _0x12f43f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4056db),{'method':'DELETE'});if(!_0x12f43f['ok']){const _0x535e9c=await _0x12f43f['json']()['catch'](()=>({'message':_0x12f43f['statusText']}));throw new Error(_0x535e9c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x12f43f['json']();},async 'getRoleDefinitions'(){const _0x40c3f5=await fetch(API_BASE+'/roles');if(!_0x40c3f5['ok']){const _0x9bb671=await _0x40c3f5['json']()['catch'](()=>({'message':_0x40c3f5['statusText']}));throw new Error(_0x9bb671['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x40c3f5['json']();},async 'getRoleDefinition'(_0x17b834){const _0x16cdca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x17b834));if(!_0x16cdca['ok']){const _0x584a39=await _0x16cdca['json']()['catch'](()=>({'message':_0x16cdca['statusText']}));throw new Error(_0x584a39['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x16cdca['json']();},async 'createRoleDefinition'(_0x5cb685){const _0x4b54b9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cb685)});if(!_0x4b54b9['ok']){const _0x1ce08c=await _0x4b54b9['json']()['catch'](()=>({'message':_0x4b54b9['statusText']}));throw new Error(_0x1ce08c['message']||_0x1ce08c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4b54b9['json']();},async 'updateRoleDefinition'(_0x5d6b22,_0x3bd72c){const _0x182850=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5d6b22),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bd72c)});if(!_0x182850['ok']){const _0x1532e3=await _0x182850['json']()['catch'](()=>({'message':_0x182850['statusText']}));throw new Error(_0x1532e3['message']||_0x1532e3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x182850['json']();},async 'deleteRoleDefinition'(_0x45982a){const _0x28029b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x45982a),{'method':'DELETE'});if(!_0x28029b['ok']){const _0x313a8f=await _0x28029b['json']()['catch'](()=>({'message':_0x28029b['statusText']}));throw new Error(_0x313a8f['message']||_0x313a8f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28029b['json']();},async 'getAvailablePermissions'(){const _0xb524c3=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb524c3['ok']){const _0x36b8ed=await _0xb524c3['json']()['catch'](()=>({'message':_0xb524c3['statusText']}));throw new Error(_0x36b8ed['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb524c3['json']();},async 'getGitProviderAllowedTeams'(_0x5d16e3){const _0x1726eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d16e3)+'/allowed-teams');if(!_0x1726eb['ok']){const _0x14a5f4=await _0x1726eb['json']()['catch'](()=>({'message':_0x1726eb['statusText']}));throw new Error(_0x14a5f4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1726eb['json']();},async 'setGitProviderAllowedTeams'(_0x4945f5,_0x9249ac){const _0x2ebe37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4945f5)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x9249ac})});if(!_0x2ebe37['ok']){const _0x5a68d2=await _0x2ebe37['json']()['catch'](()=>({'message':_0x2ebe37['statusText']}));throw new Error(_0x5a68d2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x2ebe37['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x2a1af5=toastState['baseBottom'];toastState['toasts']['forEach'](_0x676bba=>{_0x676bba['el']['style']['bottom']=_0x2a1af5+'px';const _0x3bae7a=_0x676bba['el']['offsetHeight']||toastState['defaultHeight'];_0x2a1af5+=_0x3bae7a+toastState['gap'];});});}function removeToastById(_0x55b0ec){const _0x193fd5=toastState['toasts']['findIndex'](_0x167bba=>_0x167bba['id']===_0x55b0ec);if(_0x193fd5===-0x1)return;const _0x2e9eca=toastState['toasts'][_0x193fd5];if(_0x2e9eca['timeoutId'])clearTimeout(_0x2e9eca['timeoutId']);_0x2e9eca['el']['classList']['remove']('show'),setTimeout(()=>_0x2e9eca['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x193fd5,0x1),repositionAllToasts();}function registerToast(_0x2d2125){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d2125),repositionAllToasts(),_0x2d2125['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x37a7cb){if(_0x37a7cb===null||_0x37a7cb===undefined)return'';return String(_0x37a7cb)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x4c0475,_0x4d60c0){if(_0x4c0475&&typeof _0x4c0475==='object'&&!Array['isArray'](_0x4c0475))return{'code':typeof _0x4c0475['text']==='string'?_0x4c0475['text']:'','language':typeof _0x4c0475['lang']==='string'?_0x4c0475['lang']:''};return{'code':typeof _0x4c0475==='string'?_0x4c0475:'','language':typeof _0x4d60c0==='string'?_0x4d60c0:''};}function buildMermaidBlock(_0x557e6b){const _0x180850=String(_0x557e6b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x180850))+'\x22>'+escapeHtmlValue(_0x180850)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x463461=new marked['Renderer'](),_0x15a85f=_0x463461['code']['bind'](_0x463461);return _0x463461['code']=function(_0x3166cb,_0x5f4ed4,..._0x46ee6e){const {code:_0x50385d,language:_0x2774bb}=getMarkdownCodeBlockPayload(_0x3166cb,_0x5f4ed4),_0x1795fa=String(_0x2774bb||'')['trim']()['toLowerCase']();if(_0x1795fa==='mermaid')return buildMermaidBlock(_0x50385d);const _0x2526d7=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2526d7&&_0x1795fa)try{const _0x4a6d9e=_0x2526d7['getLanguage'](_0x1795fa)?_0x1795fa:'plaintext',_0xd6ae95=_0x2526d7['highlight'](_0x50385d,{'language':_0x4a6d9e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1795fa)+'\x22>'+_0xd6ae95+'</code></pre>';}catch(_0x4c1d12){console['error']('Syntax\x20highlighting\x20error:',_0x4c1d12);}return _0x15a85f(_0x3166cb,_0x5f4ed4,..._0x46ee6e);},sharedMarkedRenderer=_0x463461,_0x463461;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x15446b=window['mermaid'];if(!_0x15446b||typeof _0x15446b['initialize']!=='function')return _0x15446b||null;return _0x15446b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x15446b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x749826,_0x17030b)=>{const _0x207511=()=>_0x749826(configureMermaidInstance()),_0x549c64=()=>{mermaidLoadPromise=null,_0x17030b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1db1ca=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1db1ca&&(_0x1db1ca=document['createElement']('script'),_0x1db1ca['id']=MERMAID_SCRIPT_ID,_0x1db1ca['src']=MERMAID_SCRIPT_SRC,_0x1db1ca['async']=!![],document['head']['appendChild'](_0x1db1ca));if(window['mermaid']){_0x207511();return;}_0x1db1ca['addEventListener']('load',_0x207511,{'once':!![]}),_0x1db1ca['addEventListener']('error',_0x549c64,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x45712f){const _0x422168=_0x45712f['getAttribute']('data-mermaid-source');if(!_0x422168)return null;let _0x53e77e=_0x422168;try{_0x53e77e=decodeURIComponent(_0x422168);}catch{}return _0x45712f['textContent']=_0x53e77e,_0x45712f['removeAttribute']('data-processed'),_0x45712f['removeAttribute']('aria-roledescription'),_0x45712f['removeAttribute']('role'),_0x45712f['removeAttribute']('aria-label'),_0x53e77e;}function collectMermaidNodes(_0x500636,_0x4f1135){if(!(_0x500636 instanceof Element))return;_0x500636['matches']('.mermaid[data-mermaid-source]')&&_0x4f1135['add'](_0x500636),_0x500636['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x10d39d=>{_0x4f1135['add'](_0x10d39d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x318e7e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x77b3dc=>setTimeout(_0x77b3dc,0x0);_0x318e7e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3d82f6=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3d82f6);});});}function queueMermaidRender(_0x219ba4){const _0x1b7338=new Set();_0x219ba4 instanceof Document||_0x219ba4 instanceof DocumentFragment?_0x219ba4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4cc4e5=>_0x1b7338['add'](_0x4cc4e5)):collectMermaidNodes(_0x219ba4,_0x1b7338);if(_0x1b7338['size']===0x0)return;_0x1b7338['forEach'](_0x2e5d17=>pendingMermaidNodes['add'](_0x2e5d17)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5f44ea=Array['from'](pendingMermaidNodes)['filter'](_0x2912c8=>_0x2912c8['isConnected']);pendingMermaidNodes['clear']();if(_0x5f44ea['length']===0x0)return;const _0x2516b4=await loadMermaid();if(!_0x2516b4)return;configureMermaidInstance();const _0x407f7e=getMermaidTheme();for(const _0x15dec2 of _0x5f44ea){const _0x42cc0f=_0x15dec2['getAttribute']('data-mermaid-source');if(!_0x42cc0f)continue;const _0x10caca=_0x15dec2['getAttribute']('data-processed')==='true';if(_0x10caca&&_0x15dec2['dataset']['mermaidTheme']===_0x407f7e)continue;restoreMermaidSource(_0x15dec2);try{if(typeof _0x2516b4['run']==='function')await _0x2516b4['run']({'nodes':[_0x15dec2]});else typeof _0x2516b4['init']==='function'&&_0x2516b4['init'](undefined,[_0x15dec2]);_0x15dec2['dataset']['mermaidTheme']=_0x407f7e,delete _0x15dec2['dataset']['mermaidError'];}catch(_0xc56f92){console['error']('Mermaid\x20render\x20failed:',_0xc56f92),restoreMermaidSource(_0x15dec2),_0x15dec2['dataset']['mermaidError']='true',delete _0x15dec2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x53b517=>{_0x53b517['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x53b517);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2d97f9=>{_0x2d97f9['forEach'](_0x53c2de=>{_0x53c2de['addedNodes']['forEach'](_0xba2938=>{_0xba2938['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xba2938);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x50d657){const _0x1c2948=new Date(_0x50d657),_0x235326=new Date(),_0x4c9402=_0x235326-_0x1c2948,_0x1b95a9=Math['floor'](_0x4c9402/0x3e8),_0x512cf4=Math['floor'](_0x1b95a9/0x3c),_0x123fa7=Math['floor'](_0x512cf4/0x3c),_0x105459=Math['floor'](_0x123fa7/0x18);if(_0x1b95a9<0x3c)return'now';if(_0x512cf4<0x3c)return _0x512cf4+'m\x20ago';if(_0x123fa7<0x18)return _0x123fa7+'h\x20ago';return _0x105459+'d\x20ago';},'getStatusIcon'(_0x546e77){switch(_0x546e77){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x450556){switch(_0x450556){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x24d0fb,_0xafabe5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2262bb={};_0x2262bb['text/plain']=new Blob([_0x24d0fb],{'type':'text/plain'});_0xafabe5&&(_0x2262bb['text/html']=new Blob([_0xafabe5],{'type':'text/html'}));const _0x80deaa=new ClipboardItem(_0x2262bb);return await navigator['clipboard']['write']([_0x80deaa]),!![];}catch(_0x4071ea){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4071ea);}try{const _0x1f60f8=_0x4a6da5=>{_0x4a6da5['preventDefault'](),_0x4a6da5['clipboardData']['setData']('text/plain',_0x24d0fb),_0xafabe5&&_0x4a6da5['clipboardData']['setData']('text/html',_0xafabe5);};document['addEventListener']('copy',_0x1f60f8);const _0x41263b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f60f8);if(_0x41263b)return!![];}catch(_0x398750){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398750);}try{const _0x26c71c=document['createElement']('textarea');_0x26c71c['value']=_0x24d0fb,_0x26c71c['style']['position']='fixed',_0x26c71c['style']['opacity']='0',_0x26c71c['style']['pointerEvents']='none',document['body']['appendChild'](_0x26c71c),_0x26c71c['select']();const _0x29bfad=document['execCommand']('copy');return document['body']['removeChild'](_0x26c71c),_0x29bfad;}catch(_0x6066de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x6066de),![];}},'showToast'(_0x33c58b,_0x13d2a1='info'){const _0x1f6709=getNextToastId(),_0x8f4b10=document['createElement']('div');_0x8f4b10['className']='toast\x20toast-'+_0x13d2a1,_0x8f4b10['textContent']=_0x33c58b,_0x8f4b10['dataset']['toastId']=_0x1f6709,document['body']['appendChild'](_0x8f4b10);const _0x3f859c=_0x13d2a1==='error'?0x2710:0xbb8,_0x307743=setTimeout(()=>{removeToastById(_0x1f6709);},_0x3f859c),_0x5f4121={'id':_0x1f6709,'el':_0x8f4b10,'timeoutId':_0x307743};return registerToast(_0x5f4121),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x8f4b10['classList']['add']('show');});}),_0x1f6709;},'showError'(_0x48f352){console['error'](_0x48f352);const _0x517ff5=typeof _0x48f352==='string'?_0x48f352:_0x48f352['message']||'An\x20error\x20occurred';this['showToast'](_0x517ff5,'error');},'showSuccess'(_0x17337c){this['showToast'](_0x17337c,'success');},'capitalize'(_0x2c3119){if(!_0x2c3119)return'';return _0x2c3119['charAt'](0x0)['toUpperCase']()+_0x2c3119['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3e53f9){return escapeHtmlValue(_0x3e53f9);},'ansiToHtml'(_0x3b6a1a){if(_0x3b6a1a===null||_0x3b6a1a===undefined)return'';let _0x3aeee7=this['escapeHtml'](_0x3b6a1a);const _0x124495={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x5abc8d={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x2a1781=0x0;return _0x3aeee7=_0x3aeee7['replace'](/\x1b\[([0-9;]*)m/g,(_0x475443,_0x491756)=>{if(!_0x491756||_0x491756==='0'){const _0x41c802='</span>'['repeat'](_0x2a1781);return _0x2a1781=0x0,_0x41c802;}const _0x170125=_0x491756['split'](';'),_0x3b3441=[];for(const _0x136ed2 of _0x170125){if(_0x136ed2==='1')_0x3b3441['push']('font-weight:bold');else{if(_0x136ed2==='2')_0x3b3441['push']('opacity:0.7');else{if(_0x136ed2==='3')_0x3b3441['push']('font-style:italic');else{if(_0x136ed2==='4')_0x3b3441['push']('text-decoration:underline');else{if(_0x136ed2==='9')_0x3b3441['push']('text-decoration:line-through');else{if(_0x124495[_0x136ed2])_0x3b3441['push']('color:'+_0x124495[_0x136ed2]);else{if(_0x5abc8d[_0x136ed2])_0x3b3441['push']('background-color:'+_0x5abc8d[_0x136ed2]);}}}}}}}if(_0x3b3441['length']>0x0)return _0x2a1781++,'<span\x20style=\x22'+_0x3b3441['join'](';')+'\x22>';return'';}),_0x3aeee7+='</span>'['repeat'](_0x2a1781),_0x3aeee7=_0x3aeee7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1c10ca,_0x3db66b)=>{if(!_0x3db66b||_0x3db66b==='0')return'';const _0x31953f=_0x3db66b['split'](';'),_0x494710=[];for(const _0x1fe5cb of _0x31953f){if(_0x1fe5cb==='1')_0x494710['push']('font-weight:bold');else{if(_0x124495[_0x1fe5cb])_0x494710['push']('color:'+_0x124495[_0x1fe5cb]);else{if(_0x5abc8d[_0x1fe5cb])_0x494710['push']('background-color:'+_0x5abc8d[_0x1fe5cb]);}}}if(_0x494710['length']>0x0)return'<span\x20style=\x22'+_0x494710['join'](';')+'\x22>';return'';}),_0x3aeee7;},'showModal'({title:_0x4378df,content:_0x2fba3b,buttons:buttons=[]}){const _0x41cbd2='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x4378df)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2fba3b+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x4d18f8,_0x26dc48)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4d18f8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x26dc48+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4d18f8['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0xd32454=document['createElement']('div');_0xd32454['id']='utils-modal',_0xd32454['className']='modal',_0xd32454['innerHTML']=_0x41cbd2,document['body']['appendChild'](_0xd32454);const _0x4f421d=document['getElementById']('utils-modal-close');_0x4f421d&&_0x4f421d['addEventListener']('click',()=>this['hideModal']());const _0x4de974=_0xd32454['querySelectorAll']('[data-btn-index]');_0x4de974['forEach'](_0x1ed970=>{const _0x4305b7=parseInt(_0x1ed970['dataset']['btnIndex']);buttons[_0x4305b7]?.['onClick']&&_0x1ed970['addEventListener']('click',buttons[_0x4305b7]['onClick']);});const _0x18d9c9=document['getElementById']('utils-modal-overlay');_0x18d9c9&&_0x18d9c9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29f850=document['getElementById']('utils-modal');_0x29f850&&_0x29f850['remove']();},'parseKeyValuePairs'(_0x1e3417){const _0x4d3fd6={};if(!_0x1e3417)return _0x4d3fd6;return _0x1e3417['split'](/\r?\n/)['map'](_0x5cff84=>_0x5cff84['trim']())['filter'](Boolean)['forEach'](_0x1c3c7d=>{const _0x40b9e2=_0x1c3c7d['indexOf']('=');if(_0x40b9e2>0x0){const _0x8b1b55=_0x1c3c7d['slice'](0x0,_0x40b9e2)['trim'](),_0xb7be69=_0x1c3c7d['slice'](_0x40b9e2+0x1)['trim']();if(_0x8b1b55)_0x4d3fd6[_0x8b1b55]=_0xb7be69;}}),_0x4d3fd6;},'debounce'(_0x4f49d6,_0x133afa=0xfa){let _0x73862d=null;return(..._0x56ebdb)=>{clearTimeout(_0x73862d),_0x73862d=setTimeout(()=>_0x4f49d6['apply'](this,_0x56ebdb),_0x133afa);};},'formatTimestamp'(_0x33869e){if(!_0x33869e)return'N/A';const _0x22653b=new Date(_0x33869e);return _0x22653b['toLocaleDateString']()+'\x20'+_0x22653b['toLocaleTimeString']();},'getQueryParams'(){const _0x5ce64c=new URLSearchParams(window['location']['search']),_0x725a49={};for(const [_0x455627,_0x3c26cc]of _0x5ce64c){_0x725a49[_0x455627]=_0x3c26cc;}return _0x725a49;},'formatDuration'(_0x5b80c5,_0x4b6442){if(!_0x5b80c5)return'N/A';const _0x18b254=new Date(_0x5b80c5),_0xd5639a=_0x4b6442?new Date(_0x4b6442):new Date(),_0x4475be=_0xd5639a-_0x18b254;if(_0x4475be<0x0)return'0s';const _0x10b962=Math['floor'](_0x4475be/0x3e8),_0x20b89e=Math['floor'](_0x10b962/0x3c),_0x305e4c=Math['floor'](_0x20b89e/0x3c),_0x3b9ec0=Math['floor'](_0x305e4c/0x18);if(_0x10b962<0x3c)return _0x10b962+'s';if(_0x20b89e<0x3c)return _0x20b89e+'m\x20'+_0x10b962%0x3c+'s';if(_0x305e4c<0x18)return _0x305e4c+'h\x20'+_0x20b89e%0x3c+'m\x20'+_0x10b962%0x3c+'s';return _0x3b9ec0+'d\x20'+_0x305e4c%0x18+'h\x20'+_0x20b89e%0x3c+'m';},'renderMarkdown'(_0x58a012,_0x2fa12f={}){if(!_0x58a012)return'';_0x58a012=this['rewriteAttachmentLinks'](_0x58a012,_0x2fa12f),_0x58a012=this['rewriteColorSyntax'](_0x58a012);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x58a012);}catch(_0x3913a5){return console['error']('Markdown\x20parsing\x20error:',_0x3913a5),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);}},'rewriteAttachmentLinks'(_0x5c0ac1,_0x2e862f={}){const _0x108206=typeof _0x2e862f['resolveAttachmentUrl']==='function'?_0x2e862f['resolveAttachmentUrl']:_0x2e862f['taskId']?_0x1b7822=>API_BASE+'/tasks/'+_0x2e862f['taskId']+'/attachments/'+encodeURIComponent(_0x1b7822):null;if(!_0x108206)return _0x5c0ac1;return String(_0x5c0ac1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5d6a31,_0x1e2fc3)=>{const _0x15ada0=String(_0x1e2fc3||'')['trim']();if(!_0x15ada0)return _0x5d6a31;let _0x572223=_0x15ada0;try{_0x572223=decodeURIComponent(_0x15ada0);}catch{}const _0xab9e61=_0x108206(_0x572223);if(!_0xab9e61)return _0x5d6a31;return']('+_0xab9e61+')';});},'rewriteColorSyntax'(_0x4e3ed3){if(!_0x4e3ed3)return _0x4e3ed3;return String(_0x4e3ed3)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x56d653,_0x37e5e2,_0x524485)=>{const _0x3db3f9=this['rewriteColorSyntax'](_0x524485);return'<span\x20style=\x22color:\x20'+_0x37e5e2+'\x22>'+_0x3db3f9+'</span>';});},'renderMarkdownFallback'(_0x4fb402,_0x226c76={}){if(!_0x4fb402)return'';_0x4fb402=_0x4fb402['replace'](/\r\n/g,'\x0a'),_0x4fb402=_0x4fb402['replace'](/\r/g,'\x0a'),_0x4fb402=this['rewriteAttachmentLinks'](_0x4fb402,_0x226c76);let _0x22d8b3=this['escapeHtml'](_0x4fb402);return _0x22d8b3=_0x22d8b3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22d8b3=_0x22d8b3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22d8b3=_0x22d8b3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22d8b3=_0x22d8b3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22d8b3=_0x22d8b3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22d8b3=_0x22d8b3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22d8b3=_0x22d8b3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22d8b3=_0x22d8b3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22d8b3=_0x22d8b3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22d8b3=_0x22d8b3['replace'](/\n\n/g,'</p><p>'),_0x22d8b3=_0x22d8b3['replace'](/\n/g,'<br>'),'<p>'+_0x22d8b3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2743a0=new Uint8Array(0x10);crypto['getRandomValues'](_0x2743a0),_0x2743a0[0x6]=_0x2743a0[0x6]&0xf|0x40,_0x2743a0[0x8]=_0x2743a0[0x8]&0x3f|0x80;const _0x4dd9e5=Array['from'](_0x2743a0,_0x3e032d=>_0x3e032d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4dd9e5['slice'](0x0,0x8)+'-'+_0x4dd9e5['slice'](0x8,0xc)+'-'+_0x4dd9e5['slice'](0xc,0x10)+'-'+_0x4dd9e5['slice'](0x10,0x14)+'-'+_0x4dd9e5['slice'](0x14);}};export class CustomSelect{constructor(_0x584e12,_0x1efa2b={}){this['nativeSelect']=_0x584e12,this['options']=_0x1efa2b,this['isOpen']=![],this['selectedValue']=_0x584e12['value']||'',this['searchable']=_0x1efa2b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3598c6=document['createElement']('div');_0x3598c6['className']='custom-select';const _0x2533e9=document['createElement']('div');_0x2533e9['className']='custom-select-trigger',_0x2533e9['setAttribute']('tabindex','0'),_0x2533e9['setAttribute']('role','button'),_0x2533e9['setAttribute']('aria-haspopup','listbox');const _0x244806=document['createElement']('span');_0x244806['className']='custom-select-trigger-text';const _0xac8285=document['createElement']('span');_0xac8285['className']='custom-select-arrow',_0xac8285['textContent']='▼',_0x2533e9['appendChild'](_0x244806),_0x2533e9['appendChild'](_0xac8285);const _0x293357=document['createElement']('div');_0x293357['className']='custom-select-dropdown',_0x293357['setAttribute']('role','listbox');if(this['searchable']){const _0x16299c=document['createElement']('div');_0x16299c['className']='custom-select-search';const _0x56d4c3=document['createElement']('input');_0x56d4c3['type']='text',_0x56d4c3['className']='custom-select-search-input',_0x56d4c3['placeholder']='Type\x20to\x20search...',_0x56d4c3['setAttribute']('aria-label','Search\x20options'),_0x56d4c3['addEventListener']('input',_0x2fe5ab=>{this['searchQuery']=_0x2fe5ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x56d4c3['addEventListener']('keydown',_0x1c18c7=>{if(_0x1c18c7['key']==='Escape')_0x1c18c7['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1c18c7['key']==='Enter'){_0x1c18c7['preventDefault'](),_0x1c18c7['stopPropagation']();const _0x2b60c9=_0x293357['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2b60c9){const _0x4e769b=_0x2b60c9['getAttribute']('data-value');this['select'](_0x4e769b);}}}}),_0x16299c['appendChild'](_0x56d4c3),_0x293357['appendChild'](_0x16299c),this['searchInput']=_0x56d4c3;}const _0x387a05=document['createElement']('div');_0x387a05['className']='custom-select-options',_0x293357['appendChild'](_0x387a05),_0x3598c6['appendChild'](_0x2533e9),_0x3598c6['appendChild'](_0x293357),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3598c6,this['nativeSelect']),this['wrapper']=_0x3598c6,this['trigger']=_0x2533e9,this['triggerText']=_0x244806,this['dropdown']=_0x293357,this['optionsContainer']=_0x387a05,_0x2533e9['addEventListener']('click',()=>this['toggle']()),_0x2533e9['addEventListener']('keydown',_0xf8d3bf=>this['handleKeydown'](_0xf8d3bf)),document['addEventListener']('click',_0x29c3a4=>{!_0x3598c6['contains'](_0x29c3a4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x515eab=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x515eab['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x26a222=new MutationObserver(()=>{this['updateDisabledState']();});_0x26a222['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x540be3=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x540be3['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x576f0d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x576f0d),this['trigger']['setAttribute']('aria-disabled',_0x576f0d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x576f0d?'-1':'0'),_0x576f0d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x51bb13=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x3dd48e=_0x51bb13['filter'](_0x282bc2=>!_0x282bc2['disabled']&&!_0x282bc2['hidden']);_0x51bb13['forEach']((_0x5033ad,_0x46f45b)=>{const _0x402b89=document['createElement']('div');_0x402b89['className']='custom-select-option',_0x402b89['textContent']=_0x5033ad['textContent'],_0x402b89['setAttribute']('data-value',_0x5033ad['value']),_0x402b89['setAttribute']('data-index',_0x46f45b),_0x402b89['setAttribute']('role','option'),_0x5033ad['disabled']?_0x402b89['classList']['add']('disabled'):_0x402b89['addEventListener']('click',()=>this['select'](_0x5033ad['value'])),_0x5033ad['value']===this['selectedValue']&&_0x402b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x402b89),this['allOptions']['push']({'element':_0x402b89,'text':_0x5033ad['textContent']['toLowerCase'](),'value':_0x5033ad['value'],'disabled':_0x5033ad['disabled']});});if(this['searchable']&&this['searchInput']){const _0xbb1852=this['searchInput']['parentElement'];_0x3dd48e['length']>0x3?_0xbb1852['style']['display']='':_0xbb1852['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x54c16a=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x5d88ff=>{if(!_0x54c16a||_0x5d88ff['disabled'])_0x5d88ff['element']['style']['display']='';else{const _0x1d93c4=_0x5d88ff['text']['includes'](_0x54c16a);_0x5d88ff['element']['style']['display']=_0x1d93c4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x235200){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x235200,this['nativeSelect']['value']=_0x235200;const _0x4571ec=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x4571ec),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x38fd18=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x38fd18&&(this['triggerText']['textContent']=_0x38fd18['textContent'],_0x38fd18['disabled']||_0x38fd18['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4a151e=>{_0x4a151e['getAttribute']('data-value')===this['selectedValue']?_0x4a151e['classList']['add']('selected'):_0x4a151e['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x889f4b=window['getComputedStyle'](this['dropdown']);if(_0x889f4b['position']==='fixed'){const _0x1549e3=this['trigger']['getBoundingClientRect'](),_0x16cd38=parseInt(_0x889f4b['maxHeight'])||0xc8,_0x550481=window['innerHeight'],_0x313251=_0x550481-_0x1549e3['bottom'],_0x3055bd=_0x1549e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x2e781f;_0x313251<_0x16cd38&&_0x3055bd>_0x313251?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x550481-_0x1549e3['top']+'px',_0x2e781f=Math['min'](_0x16cd38,_0x3055bd-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1549e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x2e781f=Math['min'](_0x16cd38,_0x313251-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px');if(this['optionsContainer']){let _0x25fcfa=_0x2e781f;if(this['searchInput']){const _0x165c5f=this['searchInput']['parentElement'];_0x165c5f&&(_0x25fcfa-=_0x165c5f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x25fcfa)+'px';}this['dropdown']['style']['left']=_0x1549e3['left']+'px',this['dropdown']['style']['width']=_0x1549e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52ec90=this['searchInput']['parentElement'];_0x52ec90&&_0x52ec90['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x3d1dc3){if(this['nativeSelect']['disabled'])return;if(_0x3d1dc3['key']==='Enter'||_0x3d1dc3['key']==='\x20')_0x3d1dc3['preventDefault'](),this['toggle']();else _0x3d1dc3['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2ccfcf='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x2ccfcf),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x42fc3f=document['getElementById']('confirm-dialog-close'),_0x1e6d67=document['getElementById']('confirm-dialog-cancel'),_0x1c8b5b=document['getElementById']('confirm-dialog-confirm'),_0x7f57a2=this['_modal']['querySelector']('.modal-overlay');_0x42fc3f['addEventListener']('click',()=>this['_resolve'](![])),_0x1e6d67['addEventListener']('click',()=>this['_resolve'](![])),_0x1c8b5b['addEventListener']('click',()=>this['_resolve'](!![])),_0x7f57a2['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x50773e=>{if(_0x50773e['key']==='Escape')_0x50773e['preventDefault'](),this['_resolve'](![]);else _0x50773e['key']==='Enter'&&(_0x50773e['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x346bbd,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x34be55=>{this['_resolvePromise']=_0x34be55,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x346bbd;const _0x2b1bcf=document['getElementById']('confirm-dialog-cancel'),_0x1ffc71=document['getElementById']('confirm-dialog-confirm');_0x2b1bcf['textContent']=cancelText,_0x1ffc71['textContent']=confirmText,_0x1ffc71['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1ffc71['focus']();});},'_resolve'(_0x358d3f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x358d3f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x141111,_0x1b64d5={}){this['container']=_0x141111,this['options']={'placeholder':_0x1b64d5['placeholder']||'Type\x20to\x20search...','maxItems':_0x1b64d5['maxItems']||0x64,'loadItems':_0x1b64d5['loadItems']||(async()=>[]),'renderItem':_0x1b64d5['renderItem']||(_0x593557=>({'primary':String(_0x593557),'secondary':''})),'onSelect':_0x1b64d5['onSelect']||(()=>{}),'filterItems':_0x1b64d5['filterItems']||null,'getItemValue':_0x1b64d5['getItemValue']||(_0x1d0482=>_0x1d0482),'sortItems':_0x1b64d5['sortItems']||null,'debounceMs':_0x1b64d5['debounceMs']||0xc8,'minCharsForSearch':_0x1b64d5['minCharsForSearch']||0x0,'emptyMessage':_0x1b64d5['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1b64d5['loadingMessage']||'Loading...','preload':_0x1b64d5['preload']!==![],'searchMode':_0x1b64d5['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x29735b=>this['onBlur'](_0x29735b)),this['input']['addEventListener']('input',_0x5e3d85=>this['onInput'](_0x5e3d85)),this['input']['addEventListener']('keydown',_0x199555=>this['onKeydown'](_0x199555)),this['clearBtn']['addEventListener']('mousedown',_0x37d126=>{_0x37d126['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x43ade5=>{_0x43ade5['preventDefault']();}),document['addEventListener']('click',_0xc7d31c=>{!this['wrapper']['contains'](_0xc7d31c['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x294182){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x294182);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x466dc9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xe4717a){const _0x2b80c9=_0xe4717a['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b80c9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b80c9):this['loadAndShow'](_0x2b80c9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4108c8){switch(_0x4108c8['key']){case'ArrowDown':_0x4108c8['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4108c8['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4108c8['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4108c8['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c8e8e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5d3899=this['selectedIndex']+_0x5c8e8e;if(_0x5d3899>=0x0&&_0x5d3899<this['filteredItems']['length']){this['selectedIndex']=_0x5d3899,this['updateSelectionHighlight']();const _0xaddc73=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xaddc73[this['selectedIndex']]&&_0xaddc73[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4ab843=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4ab843['forEach']((_0x1b3e06,_0x1f7f1a)=>{_0x1b3e06['classList']['toggle']('keyboard-selected',_0x1f7f1a===this['selectedIndex']);});}async['loadAndShow'](_0x2db2ab){this['showLoading']();try{const _0x44af0a=await this['options']['loadItems'](_0x2db2ab);if(this['options']['searchMode']==='server'){let _0x3b42da=_0x44af0a;this['options']['sortItems']&&(_0x3b42da=this['options']['sortItems']([..._0x44af0a]));this['filteredItems']=_0x3b42da;const _0x13121a=this['filteredItems']['length']>=this['options']['maxItems'];_0x13121a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x13121a),this['open']();}else this['allItems']=_0x44af0a,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2db2ab);}catch(_0x14501f){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x14501f),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419a75){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419a75):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x23e326=this['filteredItems']['length']>=this['options']['maxItems'];_0x23e326&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23e326),this['open']();}['renderItems'](_0x279744){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x352472,_0x4beccd)=>{const _0x4809fa=document['createElement']('div');_0x4809fa['className']='autocomplete-select-item',_0x4809fa['setAttribute']('role','option'),_0x4809fa['setAttribute']('data-index',_0x4beccd);const _0x22bf2b=this['options']['renderItem'](_0x352472);let _0x4cbf4e='';_0x22bf2b['icon']&&(_0x4cbf4e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x22bf2b['iconClass']||'')+'\x22>'+_0x22bf2b['icon']+'</span>'),_0x4809fa['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4cbf4e+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x22bf2b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x22bf2b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x22bf2b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4809fa['addEventListener']('click',()=>{this['selectItem'](_0x352472);}),_0x4809fa['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4beccd,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4809fa);}),_0x279744?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x530be6){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x530be6)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x510cd1){this['selectedItem']=_0x510cd1;const _0xe1a64f=this['options']['renderItem'](_0x510cd1);this['input']['value']=_0xe1a64f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x510cd1);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x5ba19a){if(_0x5ba19a){this['selectedItem']=_0x5ba19a;const _0x4d4127=this['options']['renderItem'](_0x5ba19a);this['input']['value']=_0x4d4127['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x57ffea){this['allItems']=_0x57ffea,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x3ed5eb){this['input']['placeholder']=_0x3ed5eb;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x56aa56=null){const _0x2c6bbf=document['getElementById']('admin-menu-container'),_0x11c762=document['getElementById']('admin-menu-btn'),_0x386884=document['getElementById']('admin-menu');if(!_0x2c6bbf||!_0x11c762||!_0x386884)return;try{!_0x56aa56&&(_0x56aa56=await API['getCurrentUser']());if(_0x56aa56){const _0x533d04=window['Permissions'],_0x4daa09=_0x533d04['hasServerPermission'](_0x56aa56,'*')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:manage')||_0x533d04['hasServerPermission'](_0x56aa56,'users:create')||_0x533d04['hasTeamPermission'](_0x56aa56,'teams:manage')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:view_details');if(!_0x4daa09)return;_0x2c6bbf['hidden']=![];if(!_0x533d04['hasServerPermission'](_0x56aa56,'*')){const _0x2a67e3=_0x386884['querySelectorAll']('.admin-menu-item');_0x2a67e3['forEach'](_0x217945=>{const _0x425597=_0x217945['querySelector']('.option-text')?.['textContent']?.['trim']();_0x425597==='Users'&&!_0x533d04['hasServerPermission'](_0x56aa56,'users:create')&&(_0x217945['hidden']=!![]),_0x425597==='Skills'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Settings'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Health'&&(_0x217945['hidden']=!![]),_0x425597==='Git\x20History'&&(_0x217945['hidden']=!![]),_0x425597==='Roles'&&(_0x217945['hidden']=!![]);});}_0x11c762['addEventListener']('click',_0x38a687=>{_0x38a687['stopPropagation']();const _0x1fa77c=document['getElementById']('actions-menu');if(_0x1fa77c)_0x1fa77c['hidden']=!![];_0x386884['hidden']=!_0x386884['hidden'];}),document['addEventListener']('click',_0x53d25f=>{!_0x386884['hidden']&&!_0x11c762['contains'](_0x53d25f['target'])&&!_0x386884['contains'](_0x53d25f['target'])&&(_0x386884['hidden']=!![]);}),document['addEventListener']('keydown',_0x77422d=>{_0x77422d['key']==='Escape'&&!_0x386884['hidden']&&(_0x386884['hidden']=!![]);});const _0x28c159=document['getElementById']('server-health-btn');_0x28c159&&_0x28c159['addEventListener']('click',async()=>{_0x386884['hidden']=!![];const {openServerHealthModal:_0x1097a9}=await import('./server-health.js');_0x1097a9();});}}catch(_0x431d7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x431d7f['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|
|
1
|
+
function detectApiBase(){const _0x233e76=window['location']['pathname'],_0x42606e=_0x233e76['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x42606e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x42606e[0x1]),_0x42606e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51326d={}){const _0x286f2c=new URLSearchParams();_0x51326d['userId']&&_0x286f2c['set']('userId',String(_0x51326d['userId']));_0x51326d['automation']&&_0x286f2c['set']('automation',String(_0x51326d['automation']));const _0x4753fe=API_BASE+'/tasks/stats'+(_0x286f2c['toString']()?'?'+_0x286f2c['toString']():''),_0x40243d=await fetch(_0x4753fe);if(!_0x40243d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x40243d['statusText']);return await _0x40243d['json']();},async 'getTasks'(_0xcf7701={}){const _0x20bac0=new URLSearchParams();_0xcf7701['status']&&_0x20bac0['set']('status',String(_0xcf7701['status']));_0xcf7701['environment']&&_0x20bac0['set']('environment',String(_0xcf7701['environment']));_0xcf7701['automation']&&_0x20bac0['set']('automation',String(_0xcf7701['automation']));if(_0xcf7701['include']){const _0x25ff1b=Array['isArray'](_0xcf7701['include'])?_0xcf7701['include']['join'](','):String(_0xcf7701['include']);_0x25ff1b&&_0x20bac0['set']('include',_0x25ff1b);}_0xcf7701['filter']&&_0x20bac0['set']('filter',String(_0xcf7701['filter']));_0xcf7701['page']&&_0x20bac0['set']('page',String(_0xcf7701['page']));_0xcf7701['limit']&&_0x20bac0['set']('limit',String(_0xcf7701['limit']));_0xcf7701['userId']&&_0x20bac0['set']('userId',String(_0xcf7701['userId']));_0xcf7701['search']&&_0x20bac0['set']('search',String(_0xcf7701['search']));_0xcf7701['includeChildTasks']&&_0x20bac0['set']('includeChildTasks','true');const _0x2fe253=API_BASE+'/tasks'+(_0x20bac0['toString']()?'?'+_0x20bac0['toString']():''),_0x3559e8=await fetch(_0x2fe253);if(!_0x3559e8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3559e8['statusText']);return await _0x3559e8['json']();},async 'getAutomations'(_0x57513d={}){const _0x5b03ef=new URLSearchParams();_0x57513d['environment']&&_0x5b03ef['set']('environment',String(_0x57513d['environment']));const _0xc2c37f=await fetch(API_BASE+'/api/automations'+(_0x5b03ef['toString']()?'?'+_0x5b03ef['toString']():''));if(!_0xc2c37f['ok']){const _0x2fc5c1=await _0xc2c37f['json']()['catch'](()=>({}));throw new Error(_0x2fc5c1['message']||_0x2fc5c1['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc2c37f['statusText']);}return await _0xc2c37f['json']();},async 'getAutomation'(_0x3d1457){const _0x287925=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3d1457));if(!_0x287925['ok']){const _0x2050d8=await _0x287925['json']()['catch'](()=>({}));throw new Error(_0x2050d8['message']||_0x2050d8['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x287925['statusText']);}return await _0x287925['json']();},async 'createAutomation'(_0xbb7a54){const _0x3334aa=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbb7a54||{})});if(!_0x3334aa['ok']){const _0x53f690=await _0x3334aa['json']()['catch'](()=>({}));throw new Error(_0x53f690['message']||_0x53f690['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3334aa['statusText']);}return await _0x3334aa['json']();},async 'updateAutomation'(_0x21deb8,_0x25a9c7){const _0x1c34d7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x21deb8),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a9c7||{})});if(!_0x1c34d7['ok']){const _0x532df9=await _0x1c34d7['json']()['catch'](()=>({}));throw new Error(_0x532df9['message']||_0x532df9['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1c34d7['statusText']);}return await _0x1c34d7['json']();},async 'deleteAutomation'(_0x449e86){const _0xe0f73f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x449e86),{'method':'DELETE'});if(!_0xe0f73f['ok']){const _0x5e9e81=await _0xe0f73f['json']()['catch'](()=>({}));throw new Error(_0x5e9e81['message']||_0x5e9e81['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xe0f73f['statusText']);}return await _0xe0f73f['json']();},async 'triggerAutomation'(_0x57a1e0){const _0x53d422=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57a1e0)+'/trigger',{'method':'POST'});if(!_0x53d422['ok']){const _0x22be42=await _0x53d422['json']()['catch'](()=>({}));throw new Error(_0x22be42['message']||_0x22be42['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x53d422['statusText']);}return await _0x53d422['json']();},async 'setAutomationEnabled'(_0x2c7e53,_0x3779fc){const _0x1de884=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c7e53)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x3779fc})});if(!_0x1de884['ok']){const _0x1823e1=await _0x1de884['json']()['catch'](()=>({}));throw new Error(_0x1823e1['message']||_0x1823e1['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1de884['statusText']);}return await _0x1de884['json']();},async 'getAutomationHistory'(_0x1f6557,_0x2e7794=0x32){const _0x44544e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f6557)+'/history?limit='+encodeURIComponent(String(_0x2e7794)));if(!_0x44544e['ok']){const _0x3909f0=await _0x44544e['json']()['catch'](()=>({}));throw new Error(_0x3909f0['message']||_0x3909f0['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x44544e['statusText']);}return await _0x44544e['json']();},async 'getTask'(_0x3a95cc,_0x370eb6={}){const _0xd98613=new URLSearchParams();if(_0x370eb6['include']){const _0x1c1921=Array['isArray'](_0x370eb6['include'])?_0x370eb6['include']['join'](','):String(_0x370eb6['include']);if(_0x1c1921)_0xd98613['set']('include',_0x1c1921);}const _0x2dbec9=await fetch(API_BASE+'/tasks/'+_0x3a95cc+(_0xd98613['toString']()?'?'+_0xd98613['toString']():''));if(!_0x2dbec9['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2dbec9['statusText']);return await _0x2dbec9['json']();},async 'getTaskResults'(_0x16d0d6){const _0x33107a=await fetch(API_BASE+'/tasks/'+_0x16d0d6+'/results');if(!_0x33107a['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x33107a['statusText']);return await _0x33107a['json']();},async 'getTaskPatches'(_0x5844d2){const _0x3754b2=await fetch(API_BASE+'/tasks/'+_0x5844d2+'/patches');if(!_0x3754b2['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x3754b2['statusText']);return await _0x3754b2['json']();},async 'getTaskAttachments'(_0x1d5d56){const _0x386fbe=await fetch(API_BASE+'/tasks/'+_0x1d5d56+'/attachments');if(!_0x386fbe['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x386fbe['statusText']);return await _0x386fbe['json']();},async 'uploadAttachments'(_0xab1186,_0x448dd3){const _0x18c024=new FormData();for(const _0x129ffe of _0x448dd3){_0x18c024['append']('attachments',_0x129ffe);}const _0x5edfbe=await fetch(API_BASE+'/tasks/'+_0xab1186+'/attachments',{'method':'POST','body':_0x18c024});if(!_0x5edfbe['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5edfbe['statusText']);return await _0x5edfbe['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3f02f9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3f02f9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3f02f9['json']();}catch(_0x24e1b1){return{'available':![],'reason':_0x24e1b1['message']};}},async 'generateTaskName'(_0x1e9346){try{const _0x3bccdd=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x1e9346})});return await _0x3bccdd['json']();}catch(_0x1d19dc){return{'success':![],'error':_0x1d19dc['message']};}},async 'createTask'(_0x5864a8){let _0x13d7a1,_0x4ec753={};if(_0x5864a8['files']&&_0x5864a8['files']['length']>0x0){const _0x45b4eb=new FormData();for(const [_0x319c78,_0x4f9e88]of Object['entries'](_0x5864a8)){if(_0x319c78!=='files'){if(_0x4f9e88==null)continue;typeof _0x4f9e88==='object'?_0x45b4eb['append'](_0x319c78,JSON['stringify'](_0x4f9e88)):_0x45b4eb['append'](_0x319c78,String(_0x4f9e88));}}for(const _0x58f640 of _0x5864a8['files']){_0x45b4eb['append']('attachments',_0x58f640);}_0x13d7a1=_0x45b4eb;}else _0x4ec753['Content-Type']='application/json',_0x13d7a1=JSON['stringify'](_0x5864a8);const _0x300fc5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4ec753,'body':_0x13d7a1});if(!_0x300fc5['ok']){const _0x171555=await _0x300fc5['json'](),_0x479552=new Error(_0x171555['error']||'Failed\x20to\x20create\x20task:\x20'+_0x300fc5['statusText']),{message:_0x12f62a,..._0x3731b1}=_0x171555;Object['assign'](_0x479552,_0x3731b1);throw _0x479552;}return await _0x300fc5['json']();},async 'createTestTask'(_0x39c482){const _0x6d1269=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39c482)});if(!_0x6d1269['ok']){const _0x28537b=await _0x6d1269['json']();throw new Error(_0x28537b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x6d1269['statusText']);}return await _0x6d1269['json']();},async 'createEphemeralTest'(_0x16d9ce){const _0x35b6b0=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16d9ce)});if(!_0x35b6b0['ok']){const _0x16e855=await _0x35b6b0['json']();throw new Error(_0x16e855['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35b6b0['statusText']);}return await _0x35b6b0['json']();},async 'createDeployTask'(_0x39782d){const _0x41c85a=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39782d)});if(!_0x41c85a['ok']){const _0x4dc5a2=await _0x41c85a['json']();throw new Error(_0x4dc5a2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41c85a['statusText']);}return await _0x41c85a['json']();},async 'getEnvironments'(){const _0x3dad25=await fetch(API_BASE+'/environments');if(!_0x3dad25['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3dad25['statusText']);return await _0x3dad25['json']();},async 'getEnvironment'(_0x2e975d){const _0x5d82a3=await fetch(API_BASE+'/environments/'+_0x2e975d);if(!_0x5d82a3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5d82a3['statusText']);return await _0x5d82a3['json']();},async 'getEnvironmentRepoHistory'(_0x13764c,_0x1f97e8,_0x5b8869={}){if(!_0x13764c||!_0x1f97e8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4d95b9=new URLSearchParams();if(_0x5b8869['limit'])_0x4d95b9['set']('limit',String(_0x5b8869['limit']));if(_0x5b8869['offset'])_0x4d95b9['set']('offset',String(_0x5b8869['offset']));if(_0x5b8869['search'])_0x4d95b9['set']('search',String(_0x5b8869['search']));if(_0x5b8869['branch'])_0x4d95b9['set']('branch',String(_0x5b8869['branch']));const _0x27fa13=API_BASE+'/environments/'+encodeURIComponent(_0x13764c)+'/repos/'+encodeURIComponent(_0x1f97e8)+'/git/history',_0x4e686f=await fetch(''+_0x27fa13+(_0x4d95b9['toString']()?'?'+_0x4d95b9['toString']():''));if(!_0x4e686f['ok']){const _0x51af5e=await _0x4e686f['json']()['catch'](()=>({}));throw new Error(_0x51af5e['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4e686f['statusText']);}return await _0x4e686f['json']();},async 'getEnvironmentRepoCommit'(_0x240753,_0x40b235,_0x5ed338){if(!_0x240753||!_0x40b235||!_0x5ed338)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xdd87bb=API_BASE+'/environments/'+encodeURIComponent(_0x240753)+'/repos/'+encodeURIComponent(_0x40b235)+'/git/commits/'+encodeURIComponent(_0x5ed338),_0x2907e4=await fetch(_0xdd87bb);if(!_0x2907e4['ok']){const _0x4715df=await _0x2907e4['json']()['catch'](()=>({}));throw new Error(_0x4715df['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2907e4['statusText']);}return await _0x2907e4['json']();},async 'getEnvironmentRepoBranches'(_0x3bca45,_0x58a792){if(!_0x3bca45||!_0x58a792)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x359fdd=API_BASE+'/environments/'+encodeURIComponent(_0x3bca45)+'/repos/'+encodeURIComponent(_0x58a792)+'/git/branches',_0x1b6374=await fetch(_0x359fdd);if(!_0x1b6374['ok']){const _0x3d67a6=await _0x1b6374['json']()['catch'](()=>({}));throw new Error(_0x3d67a6['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b6374['statusText']);}return await _0x1b6374['json']();},async 'revertEnvironmentRepoCommit'(_0x1c5518,_0x1adb33,_0x12a37d,_0x558789={}){if(!_0x1c5518||!_0x1adb33||!_0x12a37d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3aacdc=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c5518)+'/repos/'+encodeURIComponent(_0x1adb33)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x12a37d,..._0x558789})});if(!_0x3aacdc['ok']){const _0x5efba7=await _0x3aacdc['json']()['catch'](()=>({}));throw new Error(_0x5efba7['message']||_0x5efba7['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3aacdc['statusText']);}return await _0x3aacdc['json']();},async 'getTemplates'(_0x2f948f={}){const _0x49ab1a=new URLSearchParams();if(_0x2f948f['include']){const _0x39127f=Array['isArray'](_0x2f948f['include'])?_0x2f948f['include']['join'](','):String(_0x2f948f['include']);if(_0x39127f)_0x49ab1a['set']('include',_0x39127f);}const _0x47a483=await fetch(API_BASE+'/templates'+(_0x49ab1a['toString']()?'?'+_0x49ab1a['toString']():''));if(!_0x47a483['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x47a483['statusText']);return await _0x47a483['json']();},async 'getTemplatesForEnvironment'(_0x321859,_0x3afc16={}){if(!_0x321859)throw new Error('Environment\x20name\x20is\x20required');const _0x421eed=new URLSearchParams();if(_0x3afc16['include']){const _0x8d462b=Array['isArray'](_0x3afc16['include'])?_0x3afc16['include']['join'](','):String(_0x3afc16['include']);if(_0x8d462b)_0x421eed['set']('include',_0x8d462b);}const _0x4c60fa=await fetch(API_BASE+'/templates/'+_0x321859+(_0x421eed['toString']()?'?'+_0x421eed['toString']():''));if(!_0x4c60fa['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x321859+':\x20'+_0x4c60fa['statusText']);return await _0x4c60fa['json']();},async 'getTemplate'(_0xd6cb03,_0x4e2863,_0x5e64bd={}){if(!_0xd6cb03||!_0x4e2863)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x59453d=new URLSearchParams();if(_0x5e64bd['include']){const _0x38c5d1=Array['isArray'](_0x5e64bd['include'])?_0x5e64bd['include']['join'](','):String(_0x5e64bd['include']);if(_0x38c5d1)_0x59453d['set']('include',_0x38c5d1);}const _0xefadee=await fetch(API_BASE+'/templates/'+_0xd6cb03+'/'+_0x4e2863+(_0x59453d['toString']()?'?'+_0x59453d['toString']():''));if(!_0xefadee['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0xefadee['statusText']);return await _0xefadee['json']();},async 'getTaskLogs'(_0x1641e0,_0x4edb76={}){if(!_0x1641e0)throw new Error('Task\x20ID\x20is\x20required');const _0xf1d8f2=new URLSearchParams();_0x4edb76['tail']&&_0xf1d8f2['set']('tail',String(_0x4edb76['tail']));const _0x1ffbcc=await fetch(API_BASE+'/tasks/'+_0x1641e0+'/logs'+(_0xf1d8f2['toString']()?'?'+_0xf1d8f2['toString']():''));if(!_0x1ffbcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1ffbcc['statusText']);return await _0x1ffbcc['text']();},async 'getContainers'(){const _0x2c00cc=await fetch(API_BASE+'/containers');if(!_0x2c00cc['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2c00cc['statusText']);return await _0x2c00cc['json']();},async 'getContainer'(_0x52da2d){const _0x1cf3a7=await fetch(API_BASE+'/containers/'+_0x52da2d);if(!_0x1cf3a7['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1cf3a7['statusText']);return await _0x1cf3a7['json']();},async 'startInteractiveContainer'(_0x151c7c){const _0x15a0f2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x151c7c)});if(!_0x15a0f2['ok']){const _0x4cac7b=await _0x15a0f2['json']()['catch'](()=>({}));throw new Error(_0x4cac7b['message']||'Failed\x20to\x20start\x20container:\x20'+_0x15a0f2['statusText']);}return await _0x15a0f2['json']();},async 'startContainerCodeServer'(_0x37c55c,_0x3934ce={}){if(!_0x37c55c)throw new Error('Container\x20ID\x20is\x20required');const _0x549dc3=new URLSearchParams();_0x3934ce['theme']&&_0x549dc3['set']('theme',_0x3934ce['theme']);const _0x4132c9=await fetch(API_BASE+'/containers/'+_0x37c55c+'/code-server'+(_0x549dc3['toString']()?'?'+_0x549dc3['toString']():'')),_0xde09f5=await _0x4132c9['json']()['catch'](()=>({}));if(!_0x4132c9['ok'])throw new Error(_0xde09f5['message']||_0xde09f5['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4132c9['statusText']);return _0xde09f5;},async 'stopContainer'(_0x36f147){const _0x24687a=await fetch(API_BASE+'/containers/'+_0x36f147,{'method':'DELETE'});if(!_0x24687a['ok']){const _0x12e39e=await _0x24687a['json']()['catch'](()=>({}));throw new Error(_0x12e39e['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x24687a['statusText']);}return await _0x24687a['json']();},async 'stopTask'(_0x4e72e2){if(!_0x4e72e2)throw new Error('Task\x20ID\x20is\x20required');const _0x94cb8=await fetch(API_BASE+'/tasks/'+_0x4e72e2+'/stop',{'method':'POST'});if(!_0x94cb8['ok']){const _0x3008fa=await _0x94cb8['json']()['catch'](()=>({}));throw new Error(_0x3008fa['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x94cb8['statusText']);}return await _0x94cb8['json']();},async 'interruptTask'(_0x442fd5){if(!_0x442fd5)throw new Error('Task\x20ID\x20is\x20required');const _0x249195=await fetch(API_BASE+'/tasks/'+_0x442fd5+'/interrupt',{'method':'POST'});if(!_0x249195['ok']){const _0x56313a=await _0x249195['json']()['catch'](()=>({}));throw new Error(_0x56313a['error']||_0x56313a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x249195['statusText']);}return await _0x249195['json']();},async 'startTask'(_0x2b3d49){if(!_0x2b3d49)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc511=await fetch(API_BASE+'/tasks/'+_0x2b3d49+'/start',{'method':'POST'});if(!_0x5dc511['ok']){const _0x1edb7c=await _0x5dc511['json']()['catch'](()=>({}));throw new Error(_0x1edb7c['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5dc511['statusText']);}return await _0x5dc511['json']();},async 'deleteTask'(_0x487e5c){if(!_0x487e5c)throw new Error('Task\x20ID\x20is\x20required');const _0x370fa3=await fetch(API_BASE+'/tasks/'+_0x487e5c,{'method':'DELETE'});if(!_0x370fa3['ok']){const _0x3ea64d=await _0x370fa3['json']()['catch'](()=>({}));throw new Error(_0x3ea64d['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x370fa3['statusText']);}return await _0x370fa3['json']();},async 'refreshTasksFromDisk'(){const _0x24922f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x24922f['ok']){const _0x316317=await _0x24922f['json']()['catch'](()=>({}));throw new Error(_0x316317['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x24922f['statusText']);}return await _0x24922f['json']();},async 'approveTask'(_0x24b161,_0x47a71f={}){if(!_0x24b161)throw new Error('Task\x20ID\x20is\x20required');const _0x19d528={'commit_message':_0x47a71f['commit_message']||'','pull':_0x47a71f['pull']??![],'push':_0x47a71f['push']??![]};_0x47a71f['new_branch']&&(_0x19d528['new_branch']=_0x47a71f['new_branch']);const _0x1e1413=await fetch(API_BASE+'/tasks/'+_0x24b161+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d528)});if(!_0x1e1413['ok']){const _0x354d8e=await _0x1e1413['json']()['catch'](()=>({}));let _0x4ba1a4=_0x354d8e['error']||_0x354d8e['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1e1413['statusText'];if(_0x354d8e['results']&&Array['isArray'](_0x354d8e['results'])){const _0x49ff04=_0x354d8e['results']['filter'](_0x1ab344=>!_0x1ab344['success']&&_0x1ab344['error']);_0x49ff04['length']>0x0&&(_0x4ba1a4=_0x49ff04[0x0]['error']);}throw new Error(_0x4ba1a4);}return await _0x1e1413['json']();},async 'getPullRequestInfo'(_0x58e444){if(!_0x58e444)throw new Error('Task\x20ID\x20is\x20required');const _0x10b24d=await fetch(API_BASE+'/tasks/'+_0x58e444+'/pull-request-info');if(!_0x10b24d['ok']){const _0x27bf18=await _0x10b24d['json']()['catch'](()=>({}));throw new Error(_0x27bf18['error']||_0x27bf18['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x10b24d['statusText']);}return await _0x10b24d['json']();},async 'createPullRequests'(_0x2815c9,_0x3e5a54){if(!_0x2815c9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e5a54||!Array['isArray'](_0x3e5a54))throw new Error('repos\x20array\x20is\x20required');const _0x58c0f2=await fetch(API_BASE+'/tasks/'+_0x2815c9+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3e5a54})});if(!_0x58c0f2['ok']){const _0x3fea8c=await _0x58c0f2['json']()['catch'](()=>({}));let _0x4c933e=_0x3fea8c['error']||_0x3fea8c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c0f2['statusText'];if(_0x3fea8c['results']&&Array['isArray'](_0x3fea8c['results'])){const _0x17fb02=_0x3fea8c['results']['filter'](_0x5d58f3=>!_0x5d58f3['success']&&_0x5d58f3['error']);_0x17fb02['length']>0x0&&(_0x4c933e=_0x17fb02[0x0]['error']);}throw new Error(_0x4c933e);}return await _0x58c0f2['json']();},async 'syncRepos'(_0xf094d){if(!_0xf094d)throw new Error('Task\x20ID\x20is\x20required');const _0x3515d5=await fetch(API_BASE+'/tasks/'+_0xf094d+'/sync-repos',{'method':'POST'});if(!_0x3515d5['ok']){const _0x3e7884=await _0x3515d5['json']()['catch'](()=>({}));throw new Error(_0x3e7884['error']||_0x3e7884['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3515d5['statusText']);}return await _0x3515d5['json']();},async 'getIbmiSyncInfo'(_0x341e0f){if(!_0x341e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x389324=await fetch(API_BASE+'/tasks/'+_0x341e0f+'/ibmi-sync-info');if(!_0x389324['ok']){const _0x4addca=await _0x389324['json']()['catch'](()=>({}));throw new Error(_0x4addca['error']||_0x4addca['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x389324['json']();},async 'getSyncFiles'(_0x1d1d69){if(!_0x1d1d69)throw new Error('Task\x20ID\x20is\x20required');const _0x6ee51a=await fetch(API_BASE+'/tasks/'+_0x1d1d69+'/sync-to-ibmi/files');if(!_0x6ee51a['ok']){const _0x360d36=await _0x6ee51a['json']()['catch'](()=>({}));throw new Error(_0x360d36['error']||_0x360d36['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x6ee51a['json']();},async 'syncToIbmi'(_0x8440d7,_0x19a302,_0x4fd5b2=null,_0x2bd054=null,_0x26f393=null){if(!_0x8440d7)throw new Error('Task\x20ID\x20is\x20required');const _0x5e561c={'library':_0x19a302};if(_0x4fd5b2)_0x5e561c['user']=_0x4fd5b2;if(_0x2bd054)_0x5e561c['password']=_0x2bd054;if(_0x26f393)_0x5e561c['files']=_0x26f393;const _0x569095=await fetch(API_BASE+'/tasks/'+_0x8440d7+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e561c)});if(!_0x569095['ok']){const _0x5ac8eb=await _0x569095['json']()['catch'](()=>({}));throw new Error(_0x5ac8eb['error']||_0x5ac8eb['message']||'Sync\x20failed');}return await _0x569095['json']();},async 'getIbmiSyncLog'(_0x9eff87){if(!_0x9eff87)throw new Error('Task\x20ID\x20is\x20required');const _0x20daf6=await fetch(API_BASE+'/tasks/'+_0x9eff87+'/ibmi-sync-log');if(!_0x20daf6['ok']){const _0x26e11b=await _0x20daf6['json']()['catch'](()=>({}));throw new Error(_0x26e11b['error']||_0x26e11b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20daf6['json']();},async 'pullChanges'(_0x48596c){if(!_0x48596c)throw new Error('Task\x20ID\x20is\x20required');const _0x953177=await fetch(API_BASE+'/tasks/'+_0x48596c+'/pull-changes',{'method':'POST'});if(!_0x953177['ok']){const _0x30d760=await _0x953177['json']()['catch'](()=>({}));throw new Error(_0x30d760['error']||_0x30d760['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x953177['statusText']);}return await _0x953177['json']();},async 'readFile'(_0xe71118,_0x791054){if(!_0xe71118)throw new Error('Task\x20ID\x20is\x20required');if(!_0x791054)throw new Error('File\x20path\x20is\x20required');const _0x2f6906=await fetch(API_BASE+'/tasks/'+_0xe71118+'/files?path='+encodeURIComponent(_0x791054));if(!_0x2f6906['ok']){const _0x2316e0=await _0x2f6906['json']()['catch'](()=>({}));throw new Error(_0x2316e0['error']||_0x2316e0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2f6906['statusText']);}return await _0x2f6906['json']();},'getTaskFileDownloadUrl'(_0x2d0f82,_0xee3c5){if(!_0x2d0f82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xee3c5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2d0f82+'/files/download?path='+encodeURIComponent(_0xee3c5);},async 'writeFile'(_0x496ed1,_0x5d6866,_0x2eb14c){if(!_0x496ed1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d6866)throw new Error('File\x20path\x20is\x20required');if(_0x2eb14c===undefined)throw new Error('Content\x20is\x20required');const _0x728ba=await fetch(API_BASE+'/tasks/'+_0x496ed1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d6866,'content':_0x2eb14c})});if(!_0x728ba['ok']){const _0x5f51e4=await _0x728ba['json']()['catch'](()=>({}));throw new Error(_0x5f51e4['error']||_0x5f51e4['message']||'Failed\x20to\x20write\x20file:\x20'+_0x728ba['statusText']);}return await _0x728ba['json']();},async 'uploadTaskFiles'(_0x4051cc,_0x35333d,_0x3a82c5){if(!_0x4051cc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35333d)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a82c5||_0x3a82c5['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0xe489f4=new FormData();_0xe489f4['append']('targetDir',_0x35333d);for(const _0x999a0 of _0x3a82c5){_0xe489f4['append']('files',_0x999a0,_0x999a0['name']);}const _0x2fbfa6=await fetch(API_BASE+'/tasks/'+_0x4051cc+'/files/upload',{'method':'POST','body':_0xe489f4});if(!_0x2fbfa6['ok']){const _0x255b88=await _0x2fbfa6['json']()['catch'](()=>({}));throw new Error(_0x255b88['error']||_0x255b88['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2fbfa6['statusText']);}return await _0x2fbfa6['json']();},async 'createDirectory'(_0x2f2e1e,_0x3095a4){if(!_0x2f2e1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3095a4)throw new Error('Directory\x20path\x20is\x20required');const _0x2121f4=await fetch(API_BASE+'/tasks/'+_0x2f2e1e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3095a4})});if(!_0x2121f4['ok']){const _0x16a913=await _0x2121f4['json']()['catch'](()=>({}));throw new Error(_0x16a913['error']||_0x16a913['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x2121f4['statusText']);}return await _0x2121f4['json']();},async 'renamePath'(_0x22de85,_0x45b0a8,_0x4fa939){if(!_0x22de85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45b0a8)throw new Error('Source\x20path\x20is\x20required');if(!_0x4fa939)throw new Error('Destination\x20path\x20is\x20required');const _0x3d394d=await fetch(API_BASE+'/tasks/'+_0x22de85+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45b0a8,'newPath':_0x4fa939})});if(!_0x3d394d['ok']){const _0x1029ce=await _0x3d394d['json']()['catch'](()=>({}));throw new Error(_0x1029ce['error']||_0x1029ce['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x3d394d['statusText']);}return await _0x3d394d['json']();},async 'deleteFile'(_0x1e291a,_0x4787d8){if(!_0x1e291a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4787d8)throw new Error('File\x20path\x20is\x20required');const _0x4f20d1=await fetch(API_BASE+'/tasks/'+_0x1e291a+'/files?path='+encodeURIComponent(_0x4787d8),{'method':'DELETE'});if(!_0x4f20d1['ok']){const _0x19e06d=await _0x4f20d1['json']()['catch'](()=>({}));throw new Error(_0x19e06d['error']||_0x19e06d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f20d1['statusText']);}return await _0x4f20d1['json']();},async 'deleteDirectory'(_0x326155,_0x20b120){if(!_0x326155)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20b120)throw new Error('Directory\x20path\x20is\x20required');const _0x334751=await fetch(API_BASE+'/tasks/'+_0x326155+'/files/directory?path='+encodeURIComponent(_0x20b120),{'method':'DELETE'});if(!_0x334751['ok']){const _0x115c48=await _0x334751['json']()['catch'](()=>({}));throw new Error(_0x115c48['error']||_0x115c48['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x334751['statusText']);}return await _0x334751['json']();},async 'discardFile'(_0x3361de,_0x4c9221,_0x196ae6){if(!_0x3361de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4c9221)throw new Error('File\x20path\x20is\x20required');if(!_0x196ae6)throw new Error('Repository\x20path\x20is\x20required');const _0x44f686=await fetch(API_BASE+'/tasks/'+_0x3361de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4c9221,'repoPath':_0x196ae6})});if(!_0x44f686['ok']){const _0x347196=await _0x44f686['json']()['catch'](()=>({}));throw new Error(_0x347196['error']||_0x347196['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x44f686['statusText']);}return await _0x44f686['json']();},async 'followUpTask'(_0x12de5a,_0x3f5458={}){if(!_0x12de5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f5458['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1befb9,_0x29c66f={};if(_0x3f5458['files']&&_0x3f5458['files']['length']>0x0){const _0x112214=new FormData();_0x112214['append']('instructions',_0x3f5458['instructions']);for(const _0xc81535 of _0x3f5458['files']){_0x112214['append']('attachments',_0xc81535);}_0x1befb9=_0x112214;}else _0x29c66f['Content-Type']='application/json',_0x1befb9=JSON['stringify']({'instructions':_0x3f5458['instructions']});const _0x1b6f4a=await fetch(API_BASE+'/tasks/'+_0x12de5a+'/follow-up',{'method':'POST','headers':_0x29c66f,'body':_0x1befb9});if(!_0x1b6f4a['ok']){const _0x36dd98=await _0x1b6f4a['json']()['catch'](()=>({}));throw new Error(_0x36dd98['error']||_0x36dd98['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1b6f4a['statusText']);}return await _0x1b6f4a['json']();},async 'getTaskRewindPoints'(_0x47f57a){if(!_0x47f57a)throw new Error('Task\x20ID\x20is\x20required');const _0x2746eb=await fetch(API_BASE+'/tasks/'+_0x47f57a+'/rewind-points');if(!_0x2746eb['ok']){const _0x1374fc=await _0x2746eb['json']()['catch'](()=>({}));throw new Error(_0x1374fc['error']||_0x1374fc['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2746eb['statusText']);}return await _0x2746eb['json']();},async 'rewindTask'(_0x376c69,_0x339888={}){if(!_0x376c69)throw new Error('Task\x20ID\x20is\x20required');const _0x6257c6=Number['isInteger'](_0x339888['targetFollowUpCount'])?_0x339888['targetFollowUpCount']:0x0,_0x486e3f={'targetFollowUpCount':_0x6257c6};typeof _0x339888['instructions']==='string'&&_0x339888['instructions']['trim']()&&(_0x486e3f['instructions']=_0x339888['instructions']['trim']());typeof _0x339888['rewindFiles']==='boolean'&&(_0x486e3f['rewindFiles']=_0x339888['rewindFiles']);const _0x3d71ba=await fetch(API_BASE+'/tasks/'+_0x376c69+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486e3f)});if(!_0x3d71ba['ok']){const _0x2dc3f7=await _0x3d71ba['json']()['catch'](()=>({}));throw new Error(_0x2dc3f7['error']||_0x2dc3f7['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d71ba['statusText']);}return await _0x3d71ba['json']();},async 'login'(_0x4d2314,_0x108efd){const _0x5ccc2e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4d2314,'password':_0x108efd})});if(!_0x5ccc2e['ok']){const _0x5d231c=await _0x5ccc2e['json']();throw new Error(_0x5d231c['message']||'Login\x20failed');}return await _0x5ccc2e['json']();},async 'logout'(){const _0x529c56=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x529c56['ok']){const _0x458bf3=await _0x529c56['json']();throw new Error(_0x458bf3['message']||'Logout\x20failed');}return await _0x529c56['json']();},async 'getCurrentUser'(){const _0x40a1cb=await fetch(API_BASE+'/auth/me');if(!_0x40a1cb['ok'])throw new Error('Not\x20authenticated');const _0x426a76=await _0x40a1cb['json']();return _0x426a76['user'];},async 'getRolesInfo'(){const _0x40fd7c=await fetch(API_BASE+'/users/roles');if(!_0x40fd7c['ok']){const _0x490a59=await _0x40fd7c['json']();throw new Error(_0x490a59['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x40fd7c['json']();},async 'getUsers'(){const _0x11f86a=await fetch(API_BASE+'/users');if(!_0x11f86a['ok']){const _0x1ef210=await _0x11f86a['json']();throw new Error(_0x1ef210['message']||'Failed\x20to\x20get\x20users');}return await _0x11f86a['json']();},async 'getUser'(_0x1e0075){const _0x199c03=await fetch(API_BASE+'/users/'+_0x1e0075);if(!_0x199c03['ok']){const _0x15bd2b=await _0x199c03['json']();throw new Error(_0x15bd2b['message']||'Failed\x20to\x20get\x20user');}return await _0x199c03['json']();},async 'createUser'(_0x5da985){const _0x4d7315=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da985)});if(!_0x4d7315['ok']){const _0x2b4b1e=await _0x4d7315['json']();throw new Error(_0x2b4b1e['message']||'Failed\x20to\x20create\x20user');}return await _0x4d7315['json']();},async 'updateUser'(_0x24b74d,_0x37ebb5){const _0x6c6ced=await fetch(API_BASE+'/users/'+_0x24b74d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37ebb5)});if(!_0x6c6ced['ok']){const _0x280292=await _0x6c6ced['json']();throw new Error(_0x280292['message']||'Failed\x20to\x20update\x20user');}return await _0x6c6ced['json']();},async 'deleteUser'(_0x11a713){const _0x140950=await fetch(API_BASE+'/users/'+_0x11a713,{'method':'DELETE'});if(!_0x140950['ok']){const _0x441443=await _0x140950['json']();throw new Error(_0x441443['message']||'Failed\x20to\x20delete\x20user');}return await _0x140950['json']();},async 'stopAllContainers'(){const _0x43b6d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x302dbc=await _0x43b6d1['json']()['catch'](()=>({}));if(!_0x43b6d1['ok'])throw new Error(_0x302dbc['message']||_0x302dbc['error']||'Failed\x20to\x20stop\x20containers');return _0x302dbc;},async 'removeStoppedContainers'(){const _0x5cf77b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c3693=await _0x5cf77b['json']()['catch'](()=>({}));if(!_0x5cf77b['ok'])throw new Error(_0x5c3693['message']||_0x5c3693['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c3693;},async 'pruneDockerResources'(){const _0x3eb461=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x33b2af=await _0x3eb461['json']()['catch'](()=>({}));if(!_0x3eb461['ok'])throw new Error(_0x33b2af['message']||_0x33b2af['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x33b2af;},async 'getUpdateSettings'(){const _0x19df42=await fetch(API_BASE+'/health/update-settings'),_0x219899=await _0x19df42['json']()['catch'](()=>({}));if(!_0x19df42['ok'])throw new Error(_0x219899['message']||_0x219899['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x219899;},async 'applyServerUpdate'(_0x2ba00b){const _0x110c0b=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2ba00b})}),_0x169130=await _0x110c0b['json']()['catch'](()=>({}));if(!_0x110c0b['ok']){const _0x4a614c=new Error(_0x169130['message']||_0x169130['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x169130['output']!==undefined)_0x4a614c['output']=_0x169130['output'];if(_0x169130['error']!==undefined)_0x4a614c['commandError']=_0x169130['error'];throw _0x4a614c;}return _0x169130;},async 'restartServer'(){const _0x439e6d=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2a0587=await _0x439e6d['json']()['catch'](()=>({}));if(!_0x439e6d['ok'])throw new Error(_0x2a0587['message']||_0x2a0587['error']||'Failed\x20to\x20restart\x20server');return _0x2a0587;},async 'createPasswordToken'(_0x2ab5f6,_0x4f986e='setup',_0x5cfe11=![]){const _0x1823f4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab5f6,'type':_0x4f986e,'sendEmail':_0x5cfe11})});if(!_0x1823f4['ok']){const _0x2311d9=await _0x1823f4['json']();throw new Error(_0x2311d9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1823f4['json']();},async 'getEmailConfig'(){const _0x4030e5=await fetch(API_BASE+'/password/email-config');if(!_0x4030e5['ok']){const _0x402f96=await _0x4030e5['json']();throw new Error(_0x402f96['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x4030e5['json']();},async 'updateTaskName'(_0x136cf9,_0x395772){const _0x4ed0c9=await fetch(API_BASE+'/tasks/'+_0x136cf9,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x395772})});if(!_0x4ed0c9['ok']){const _0x3a7bda=await _0x4ed0c9['json']();throw new Error(_0x3a7bda['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4ed0c9['json']();},async 'pinTask'(_0x1097a6,_0x3b5bc6,_0x2c4c19=null){if(!_0x1097a6)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7b98={'pinned':_0x3b5bc6};_0x2c4c19&&_0x2c4c19['length']>0x0&&(_0x3f7b98['additionalTaskIds']=_0x2c4c19);const _0x7768b4=await fetch(API_BASE+'/tasks/'+_0x1097a6+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f7b98)});if(!_0x7768b4['ok']){const _0x3988e5=await _0x7768b4['json']();throw new Error(_0x3988e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x7768b4['json']();},async 'setTaskWinner'(_0x311f7b,_0x964870,_0x340cc6=[]){if(!_0x311f7b)throw new Error('Task\x20ID\x20is\x20required');const _0x2f7bde=await fetch(API_BASE+'/tasks/'+_0x311f7b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x964870,'siblings':_0x340cc6})});if(!_0x2f7bde['ok']){const _0x5344d2=await _0x2f7bde['json']();throw new Error(_0x5344d2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2f7bde['json']();},async 'setTaskLoser'(_0x30aaac,_0xfc3182){if(!_0x30aaac)throw new Error('Task\x20ID\x20is\x20required');const _0x268b8d=await fetch(API_BASE+'/tasks/'+_0x30aaac+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xfc3182})});if(!_0x268b8d['ok']){const _0x3af909=await _0x268b8d['json']();throw new Error(_0x3af909['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x268b8d['json']();},async 'createTaskGroup'(_0x36234b){const _0x200909=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36234b)});if(!_0x200909['ok']){const _0x56caa3=await _0x200909['json']();throw new Error(_0x56caa3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x200909['json']();},async 'getTaskGroups'(_0x1f20fb={}){const _0x5aa66e=new URLSearchParams();if(_0x1f20fb['userId'])_0x5aa66e['set']('userId',String(_0x1f20fb['userId']));if(_0x1f20fb['status'])_0x5aa66e['set']('status',String(_0x1f20fb['status']));if(_0x1f20fb['limit'])_0x5aa66e['set']('limit',String(_0x1f20fb['limit']));const _0x1acfb7=API_BASE+'/tasks/groups'+(_0x5aa66e['toString']()?'?'+_0x5aa66e['toString']():''),_0x3bdb2e=await fetch(_0x1acfb7);if(!_0x3bdb2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3bdb2e['json']();},async 'getTaskGroup'(_0x351831){const _0x231d38=await fetch(API_BASE+'/tasks/groups/'+_0x351831);if(!_0x231d38['ok']){const _0x2a0efe=await _0x231d38['json']();throw new Error(_0x2a0efe['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x231d38['json']();},async 'updateTaskGroup'(_0x1c689d,_0x4c7fb2,_0xec00){const _0x29850d=await fetch(API_BASE+'/tasks/'+_0x1c689d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4c7fb2,'groupIndex':_0xec00})});if(!_0x29850d['ok']){const _0xa5c500=await _0x29850d['json']();throw new Error(_0xa5c500['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x29850d['json']();},async 'removeTaskFromGroup'(_0x3f8d18){return this['updateTaskGroup'](_0x3f8d18,null,null);},async 'deleteTaskGroup'(_0x8bc16f,_0x12c72d=![]){const _0x47329f=_0x12c72d?'?deleteTasks=true':'',_0x249f7d=await fetch(API_BASE+'/tasks/groups/'+_0x8bc16f+_0x47329f,{'method':'DELETE'});if(!_0x249f7d['ok']){const _0x4471f8=await _0x249f7d['json']();throw new Error(_0x4471f8['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xdfa827,_0x4de897){const _0x51f2b1=await fetch(API_BASE+'/tasks/groups/'+_0xdfa827+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4de897})});if(!_0x51f2b1['ok']){const _0x359156=await _0x51f2b1['json']();throw new Error(_0x359156['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x51f2b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4c0b3c){if(!_0x4c0b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x3a8287=await fetch(API_BASE+'/tasks/'+_0x4c0b3c+'/comments');if(!_0x3a8287['ok']){const _0x1c26d5=await _0x3a8287['json']()['catch'](()=>({}));throw new Error(_0x1c26d5['error']||'Failed\x20to\x20get\x20comments');}return await _0x3a8287['json']();},async 'addComment'(_0x445f18,_0x477e8a){if(!_0x445f18)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477e8a)throw new Error('Comment\x20content\x20is\x20required');const _0x1c7da1=await fetch(API_BASE+'/tasks/'+_0x445f18+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477e8a})});if(!_0x1c7da1['ok']){const _0x52a895=await _0x1c7da1['json']()['catch'](()=>({}));throw new Error(_0x52a895['error']||'Failed\x20to\x20add\x20comment');}return await _0x1c7da1['json']();},async 'updateComment'(_0x45161c,_0x42c89d,_0x1d7b23){if(!_0x45161c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x42c89d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d7b23)throw new Error('Comment\x20content\x20is\x20required');const _0x627f43=await fetch(API_BASE+'/tasks/'+_0x45161c+'/comments/'+_0x42c89d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d7b23})});if(!_0x627f43['ok']){const _0x3485f8=await _0x627f43['json']()['catch'](()=>({}));throw new Error(_0x3485f8['error']||'Failed\x20to\x20update\x20comment');}return await _0x627f43['json']();},async 'deleteComment'(_0x21e767,_0x1e821b){if(!_0x21e767)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e821b)throw new Error('Comment\x20ID\x20is\x20required');const _0x5c42a7=await fetch(API_BASE+'/tasks/'+_0x21e767+'/comments/'+_0x1e821b,{'method':'DELETE'});if(!_0x5c42a7['ok']){const _0x416663=await _0x5c42a7['json']()['catch'](()=>({}));throw new Error(_0x416663['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5c42a7['json']();},async 'createObjective'(_0x48ab24){const _0x39196d={'objective':!![],'name':_0x48ab24['name']||'','environment':_0x48ab24['environment']||null,'agents':_0x48ab24['agents']||[],'branches':_0x48ab24['branches']||{},'isPinned':_0x48ab24['isPinned']||![],'parentObjectiveId':_0x48ab24['parentObjectiveId']||null,'env_vars':_0x48ab24['envVars']||{},'parameters':{'instructions':_0x48ab24['instructions']||''},'files':_0x48ab24['files']||[],'jira':_0x48ab24['jira']||null};return this['createTask'](_0x39196d);},async 'updateObjective'(_0xf19063,_0x1a5ae8,_0x1d4b24=[],_0x29342e=[]){let _0x24e186,_0x454555={};const _0x432e8b={..._0x1a5ae8};_0x29342e&&_0x29342e['length']>0x0&&(_0x432e8b['removeAttachments']=_0x29342e);if(_0x1d4b24&&_0x1d4b24['length']>0x0){const _0x3ceae8=new FormData();for(const [_0x4fe500,_0x3b5c3c]of Object['entries'](_0x432e8b)){if(_0x3b5c3c==null)continue;typeof _0x3b5c3c==='object'?_0x3ceae8['append'](_0x4fe500,JSON['stringify'](_0x3b5c3c)):_0x3ceae8['append'](_0x4fe500,String(_0x3b5c3c));}for(const _0x3da565 of _0x1d4b24){_0x3ceae8['append']('attachments',_0x3da565);}_0x24e186=_0x3ceae8;}else _0x454555['Content-Type']='application/json',_0x24e186=JSON['stringify'](_0x432e8b);const _0x50ca71=await fetch(API_BASE+'/tasks/'+_0xf19063,{'method':'PATCH','headers':_0x454555,'body':_0x24e186});if(!_0x50ca71['ok']){const _0x3a7292=await _0x50ca71['json']();throw new Error(_0x3a7292['error']||'Failed\x20to\x20update\x20objective');}return await _0x50ca71['json']();},async 'deleteObjective'(_0x4cc428){return this['deleteTask'](_0x4cc428);},async 'launchObjective'(_0x58bd96,_0x25a5d7={}){const _0x65db77=await fetch(API_BASE+'/tasks/'+_0x58bd96+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a5d7)});if(!_0x65db77['ok']){const _0x4578e7=await _0x65db77['json']();throw new Error(_0x4578e7['error']||'Failed\x20to\x20launch\x20objective');}return await _0x65db77['json']();},async 'getObjectiveAttachments'(_0x1600a1){return this['getTaskAttachments'](_0x1600a1);},async 'createJudgeTask'({environment:_0x236238,judgeAgent:_0x58395c,groupId:_0x56f280,taskIds:_0x1537e3,judgeCustomInstructions:_0x53991c,isPinned:_0x1f7b8c}){const _0x592753=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x236238,'judgeAgent':_0x58395c,'groupId':_0x56f280,'taskIds':_0x1537e3,'judgeCustomInstructions':_0x53991c,'isPinned':_0x1f7b8c})});if(!_0x592753['ok']){const _0x5ab901=await _0x592753['json']();throw new Error(_0x5ab901['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x592753['json']();},async 'getJudgeTasks'(_0x29fa06){const _0x359bbf=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x29fa06));if(!_0x359bbf['ok']){const _0x2a8f9d=await _0x359bbf['json']();throw new Error(_0x2a8f9d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x359bbf['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ae539,_0x4e53e4,_0x74e5f=''){const _0x1924ae=await fetch(API_BASE+'/tasks/'+_0x4ae539+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4e53e4,'customPreamble':_0x74e5f})});if(!_0x1924ae['ok']){const _0x49f9c7=await _0x1924ae['json']();throw new Error(_0x49f9c7['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1924ae['json']();},async 'getJiraConfig'(){const _0x5f4794=await fetch(API_BASE+'/jira/config');if(!_0x5f4794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5f4794['json']();},async 'getJiraIssue'(_0x3e0a74){const _0x222b6b=await fetch(API_BASE+'/jira/issues/'+_0x3e0a74);if(!_0x222b6b['ok']){const _0x4499ac=await _0x222b6b['json']()['catch'](()=>({}));throw new Error(_0x4499ac['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x222b6b['statusText']);}return await _0x222b6b['json']();},async 'searchJiraIssues'(_0x5738d9,_0x360243=0x14){const _0x7ed25d=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5738d9,'maxResults':_0x360243})});if(!_0x7ed25d['ok']){const _0x5d7b15=await _0x7ed25d['json']()['catch'](()=>({}));throw new Error(_0x5d7b15['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x7ed25d['statusText']);}return await _0x7ed25d['json']();},async 'postJiraComment'(_0x3d72ed,_0x3fb28a){const _0x1ced74=await fetch(API_BASE+'/jira/issues/'+_0x3d72ed+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fb28a})});if(!_0x1ced74['ok']){const _0x220e1e=await _0x1ced74['json']()['catch'](()=>({}));throw new Error(_0x220e1e['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1ced74['statusText']);}return await _0x1ced74['json']();},async 'getJiraComments'(_0x151940){const _0x44d6fc=await fetch(API_BASE+'/jira/issues/'+_0x151940+'/comments');if(!_0x44d6fc['ok']){const _0x1795a0=await _0x44d6fc['json']()['catch'](()=>({}));throw new Error(_0x1795a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x44d6fc['statusText']);}return await _0x44d6fc['json']();},async 'promptParameter'({environment:_0x8509c6,command:_0x17ea5c,parser:parser='json'}){const _0x475c28=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x8509c6,'command':_0x17ea5c,'parser':parser})});if(!_0x475c28['ok']){const _0x5e6826=await _0x475c28['json']()['catch'](()=>({}));throw new Error(_0x5e6826['message']||_0x5e6826['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x475c28['statusText']);}return await _0x475c28['json']();},async 'promptParameterStream'(_0x4228df,_0x5c9d04){const _0x31868b=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4228df)});if(!_0x31868b['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x31868b['statusText']);const _0x7d6fd5=_0x31868b['body']['getReader'](),_0x57a86a=new TextDecoder();let _0x3e72df='';return new Promise((_0x394a8e,_0x27032b)=>{const _0x17ffc3=async()=>{try{const {done:_0x392ab4,value:_0x592e02}=await _0x7d6fd5['read']();if(_0x392ab4)return;_0x3e72df+=_0x57a86a['decode'](_0x592e02,{'stream':!![]});const _0x13cea3=_0x3e72df['split']('\x0a\x0a');_0x3e72df=_0x13cea3['pop']()||'';for(const _0x4b5dde of _0x13cea3){if(!_0x4b5dde['trim']())continue;const _0x31e5d5=_0x4b5dde['split']('\x0a');let _0xa22f95='message',_0x478855='';for(const _0x3e90b5 of _0x31e5d5){if(_0x3e90b5['startsWith']('event:'))_0xa22f95=_0x3e90b5['substring'](0x6)['trim']();else _0x3e90b5['startsWith']('data:')&&(_0x478855=_0x3e90b5['substring'](0x5)['trim']());}if(!_0x478855)continue;try{const _0x3e6190=JSON['parse'](_0x478855);if(_0xa22f95==='progress'&&_0x5c9d04)_0x5c9d04(_0x3e6190['stage'],_0x3e6190['message']);else{if(_0xa22f95==='result'){_0x394a8e(_0x3e6190);return;}else{if(_0xa22f95==='error'){let _0x1ae605=_0x3e6190['message']||_0x3e6190['error']||'Prompt\x20command\x20failed';_0x3e6190['rawOutput']&&(_0x1ae605+='\x0a\x0aRaw\x20output:\x0a'+_0x3e6190['rawOutput']);_0x27032b(new Error(_0x1ae605));return;}}}}catch(_0x92375e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x92375e),console['error']('Event\x20type:',_0xa22f95),console['error']('Event\x20data:',_0x478855),console['error']('First\x20200\x20chars:',_0x478855['substring'](0x0,0xc8)),_0x27032b(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x92375e['message']+'\x0a\x0aData:\x20'+_0x478855['substring'](0x0,0x1f4)));return;}}_0x17ffc3();}catch(_0x4ffbc8){_0x27032b(_0x4ffbc8);}};_0x17ffc3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x44bfa7){const _0x3736d6=await fetch(''+API_BASE+_0x44bfa7);if(!_0x3736d6['ok']){const _0x47b177=await _0x3736d6['json']()['catch'](()=>({'error':_0x3736d6['statusText']})),_0x44756e=new Error(_0x47b177['error']||_0x47b177['message']||_0x3736d6['statusText']);if(_0x47b177['detail']!==undefined)_0x44756e['detail']=_0x47b177['detail'];throw _0x44756e;}return await _0x3736d6['json']();},async 'post'(_0x1b01cd,_0x54543c){const _0xae01f2=await fetch(''+API_BASE+_0x1b01cd,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54543c)});if(!_0xae01f2['ok']){const _0x2df876=await _0xae01f2['json']()['catch'](()=>({'error':_0xae01f2['statusText']})),_0x8fae97=new Error(_0x2df876['error']||_0x2df876['message']||_0xae01f2['statusText']);if(_0x2df876['detail']!==undefined)_0x8fae97['detail']=_0x2df876['detail'];throw _0x8fae97;}return await _0xae01f2['json']();},async 'put'(_0xcb210a,_0x444029){const _0x552765=await fetch(''+API_BASE+_0xcb210a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x444029)});if(!_0x552765['ok']){const _0x39e666=await _0x552765['json']()['catch'](()=>({'error':_0x552765['statusText']})),_0x251fdc=new Error(_0x39e666['error']||_0x39e666['message']||_0x552765['statusText']);if(_0x39e666['detail']!==undefined)_0x251fdc['detail']=_0x39e666['detail'];throw _0x251fdc;}return await _0x552765['json']();},async 'delete'(_0x247240,_0x4842fe){const _0x39c273={'method':'DELETE'};_0x4842fe&&(_0x39c273['headers']={'Content-Type':'application/json'},_0x39c273['body']=JSON['stringify'](_0x4842fe));const _0x6a0543=await fetch(''+API_BASE+_0x247240,_0x39c273);if(!_0x6a0543['ok']){const _0x1b9951=await _0x6a0543['json']()['catch'](()=>({'error':_0x6a0543['statusText']})),_0x320aba=new Error(_0x1b9951['error']||_0x1b9951['message']||_0x6a0543['statusText']);if(_0x1b9951['detail']!==undefined)_0x320aba['detail']=_0x1b9951['detail'];throw _0x320aba;}return await _0x6a0543['json']();},async 'getSkills'(){const _0x40eaf4=await fetch(API_BASE+'/skills');if(!_0x40eaf4['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x40eaf4['statusText']);return await _0x40eaf4['json']();},async 'getSkill'(_0x478fb4){const _0x1c3f65=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x478fb4));if(!_0x1c3f65['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c3f65['statusText']);return await _0x1c3f65['json']();},async 'createSkill'(_0x17727f){const _0xf36826=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17727f)});if(!_0xf36826['ok']){const _0xeb44d1=await _0xf36826['json']()['catch'](()=>({'error':_0xf36826['statusText']})),_0x1f918b=new Error(_0xeb44d1['error']||_0xeb44d1['message']||_0xf36826['statusText']);if(_0xeb44d1['detail']!==undefined)_0x1f918b['detail']=_0xeb44d1['detail'];throw _0x1f918b;}return await _0xf36826['json']();},async 'updateSkill'(_0x17d44c,_0x13701d){const _0x37771c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17d44c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13701d)});if(!_0x37771c['ok']){const _0x2551ca=await _0x37771c['json']()['catch'](()=>({'error':_0x37771c['statusText']})),_0x23d3d=new Error(_0x2551ca['error']||_0x2551ca['message']||_0x37771c['statusText']);if(_0x2551ca['detail']!==undefined)_0x23d3d['detail']=_0x2551ca['detail'];throw _0x23d3d;}return await _0x37771c['json']();},async 'deleteSkill'(_0x5f20fb){const _0x49118b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f20fb),{'method':'DELETE'});if(!_0x49118b['ok']){const _0x1b2471=await _0x49118b['json']()['catch'](()=>({'error':_0x49118b['statusText']})),_0xa4aa33=new Error(_0x1b2471['error']||_0x1b2471['message']||_0x49118b['statusText']);if(_0x1b2471['detail']!==undefined)_0xa4aa33['detail']=_0x1b2471['detail'];throw _0xa4aa33;}return await _0x49118b['json']();},async 'getSkillFile'(_0x5b14c1,_0x57f767){const _0x2e81ac=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b14c1)+'/files/'+_0x57f767);if(!_0x2e81ac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2e81ac['statusText']);return await _0x2e81ac['json']();},async 'saveSkillFile'(_0x274bfd,_0x2d3b6a,_0x37372f){const _0x5edd5a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x274bfd)+'/files/'+_0x2d3b6a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37372f})});if(!_0x5edd5a['ok']){const _0x459e8b=await _0x5edd5a['json']()['catch'](()=>({'error':_0x5edd5a['statusText']})),_0x3a4547=new Error(_0x459e8b['error']||_0x459e8b['message']||_0x5edd5a['statusText']);if(_0x459e8b['detail']!==undefined)_0x3a4547['detail']=_0x459e8b['detail'];throw _0x3a4547;}return await _0x5edd5a['json']();},async 'deleteSkillFile'(_0x321a8d,_0x5df29d){const _0x6bb2ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x321a8d)+'/files/'+_0x5df29d,{'method':'DELETE'});if(!_0x6bb2ca['ok']){const _0x279ff0=await _0x6bb2ca['json']()['catch'](()=>({'error':_0x6bb2ca['statusText']})),_0x3d1705=new Error(_0x279ff0['error']||_0x279ff0['message']||_0x6bb2ca['statusText']);if(_0x279ff0['detail']!==undefined)_0x3d1705['detail']=_0x279ff0['detail'];throw _0x3d1705;}return await _0x6bb2ca['json']();},async 'pullSkills'(){const _0x5cd26a=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5cd26a['ok']){const _0x32c52a=await _0x5cd26a['json']()['catch'](()=>({'error':_0x5cd26a['statusText']})),_0x1a8e49=new Error(_0x32c52a['error']||_0x32c52a['message']||_0x5cd26a['statusText']);if(_0x32c52a['detail']!==undefined)_0x1a8e49['detail']=_0x32c52a['detail'];throw _0x1a8e49;}return await _0x5cd26a['json']();},async 'commitSkills'(_0x39b8d6,_0xd87e21={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xd87e21,_0x3ed0d7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39b8d6,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ed0d7['ok']){const _0x2c67c1=await _0x3ed0d7['json']()['catch'](()=>({'error':_0x3ed0d7['statusText']})),_0x28db48=new Error(_0x2c67c1['error']||_0x2c67c1['message']||_0x3ed0d7['statusText']);if(_0x2c67c1['detail']!==undefined)_0x28db48['detail']=_0x2c67c1['detail'];throw _0x28db48;}return await _0x3ed0d7['json']();},async 'discardSkillsChanges'(){const _0x573ca3=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x573ca3['ok']){const _0x5cc126=await _0x573ca3['json']()['catch'](()=>({'error':_0x573ca3['statusText']})),_0xabe7e9=new Error(_0x5cc126['error']||_0x5cc126['message']||_0x573ca3['statusText']);if(_0x5cc126['detail']!==undefined)_0xabe7e9['detail']=_0x5cc126['detail'];throw _0xabe7e9;}return await _0x573ca3['json']();},async 'getSkillCatalog'(){const _0x5c35f6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5c35f6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5c35f6['statusText']);return await _0x5c35f6['json']();},async 'getImportedSkillsRegistry'(){const _0x4a58c0=await fetch(API_BASE+'/external-skills/registry');if(!_0x4a58c0['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4a58c0['statusText']);return await _0x4a58c0['json']();},async 'importCatalogSkill'(_0x5813cf){const _0x49fd66=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5813cf})});if(!_0x49fd66['ok']){const _0x4f89d2=await _0x49fd66['json']()['catch'](()=>({'error':_0x49fd66['statusText']})),_0x59f2ef=new Error(_0x4f89d2['error']||_0x4f89d2['message']||_0x49fd66['statusText']);if(_0x4f89d2['detail']!==undefined)_0x59f2ef['detail']=_0x4f89d2['detail'];throw _0x59f2ef;}return await _0x49fd66['json']();},async 'importSkillFromGit'(_0x562261,_0x21fc0d,_0x3b5ca8='main',_0x56577c=null){const _0x1c514f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x562261,'skillPath':_0x21fc0d,'branch':_0x3b5ca8,'skillId':_0x56577c})});if(!_0x1c514f['ok']){const _0x7e1f06=await _0x1c514f['json']()['catch'](()=>({'error':_0x1c514f['statusText']})),_0x4a1daa=new Error(_0x7e1f06['error']||_0x7e1f06['message']||_0x1c514f['statusText']);if(_0x7e1f06['detail']!==undefined)_0x4a1daa['detail']=_0x7e1f06['detail'];throw _0x4a1daa;}return await _0x1c514f['json']();},async 'probeMarketplace'(_0x3c477c,_0x5d3d14='main'){const _0x14a4b5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3c477c,'branch':_0x5d3d14})});if(!_0x14a4b5['ok']){const _0x39a0a2=await _0x14a4b5['json']()['catch'](()=>({'error':_0x14a4b5['statusText']})),_0x451e3a=new Error(_0x39a0a2['error']||_0x39a0a2['message']||_0x14a4b5['statusText']);if(_0x39a0a2['detail']!==undefined)_0x451e3a['detail']=_0x39a0a2['detail'];throw _0x451e3a;}return await _0x14a4b5['json']();},async 'importMarketplaceBundle'(_0x2b404c,_0x578b46,_0x3dd329,_0x173984=null){const _0x57f76d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2b404c,'branch':_0x578b46,'bundleId':_0x3dd329,'selectedSkills':_0x173984})});if(!_0x57f76d['ok']){const _0x276f33=await _0x57f76d['json']()['catch'](()=>({'error':_0x57f76d['statusText']})),_0x13da96=new Error(_0x276f33['error']||_0x276f33['message']||_0x57f76d['statusText']);if(_0x276f33['detail']!==undefined)_0x13da96['detail']=_0x276f33['detail'];throw _0x13da96;}return await _0x57f76d['json']();},async 'importSkillFromFolder'(_0x3644c1,_0x5a9c4d=null){const _0x3927bd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3644c1,'skillId':_0x5a9c4d})});if(!_0x3927bd['ok']){const _0x23691a=await _0x3927bd['json']()['catch'](()=>({'error':_0x3927bd['statusText']})),_0x2d491e=new Error(_0x23691a['error']||_0x23691a['message']||_0x3927bd['statusText']);if(_0x23691a['detail']!==undefined)_0x2d491e['detail']=_0x23691a['detail'];throw _0x2d491e;}return await _0x3927bd['json']();},async 'importSkillFromNpm'(_0x7adaf2,_0x2b3054='latest',_0x3d65d4=null,_0x5d3bad=null){const _0x2786fe=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x7adaf2,'version':_0x2b3054,'skillId':_0x3d65d4,'registry':_0x5d3bad})});if(!_0x2786fe['ok']){const _0x3ee74c=await _0x2786fe['json']()['catch'](()=>({'error':_0x2786fe['statusText']})),_0x3a0dc3=new Error(_0x3ee74c['error']||_0x3ee74c['message']||_0x2786fe['statusText']);if(_0x3ee74c['detail']!==undefined)_0x3a0dc3['detail']=_0x3ee74c['detail'];throw _0x3a0dc3;}return await _0x2786fe['json']();},async 'checkSkillUpdates'(_0x260ab4){const _0x1e169e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x260ab4)+'/check-updates',{'method':'POST'});if(!_0x1e169e['ok']){const _0x30adfd=await _0x1e169e['json']()['catch'](()=>({'error':_0x1e169e['statusText']})),_0x158c51=new Error(_0x30adfd['error']||_0x30adfd['message']||_0x1e169e['statusText']);if(_0x30adfd['detail']!==undefined)_0x158c51['detail']=_0x30adfd['detail'];throw _0x158c51;}return await _0x1e169e['json']();},async 'updateExternalSkill'(_0x290f12){const _0x15adde=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x290f12)+'/update',{'method':'POST'});if(!_0x15adde['ok']){const _0x3f0f96=await _0x15adde['json']()['catch'](()=>({'error':_0x15adde['statusText']})),_0x350d0=new Error(_0x3f0f96['error']||_0x3f0f96['message']||_0x15adde['statusText']);if(_0x3f0f96['detail']!==undefined)_0x350d0['detail']=_0x3f0f96['detail'];throw _0x350d0;}return await _0x15adde['json']();},async 'updateSkillFlags'(_0x196d7c,_0x3c741f){const _0x34f322=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x196d7c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x3c741f})});if(!_0x34f322['ok']){const _0x46accf=await _0x34f322['json']()['catch'](()=>({'error':_0x34f322['statusText']})),_0x3791ab=new Error(_0x46accf['error']||_0x46accf['message']||_0x34f322['statusText']);if(_0x46accf['detail']!==undefined)_0x3791ab['detail']=_0x46accf['detail'];throw _0x3791ab;}return await _0x34f322['json']();},async 'removeFromImportedRegistry'(_0x3cc825){const _0x5bd941=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cc825)+'/registry',{'method':'DELETE'});if(!_0x5bd941['ok']){const _0x57907a=await _0x5bd941['json']()['catch'](()=>({'error':_0x5bd941['statusText']})),_0x23edde=new Error(_0x57907a['error']||_0x57907a['message']||_0x5bd941['statusText']);if(_0x57907a['detail']!==undefined)_0x23edde['detail']=_0x57907a['detail'];throw _0x23edde;}return await _0x5bd941['json']();},async 'getTeams'(){const _0x23f724=await fetch(API_BASE+'/teams');if(!_0x23f724['ok']){const _0x4dc15e=await _0x23f724['json']()['catch'](()=>({'message':_0x23f724['statusText']}));throw new Error(_0x4dc15e['message']||'Failed\x20to\x20get\x20teams');}return await _0x23f724['json']();},async 'getTeam'(_0x9a67a6){const _0x19e22f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x9a67a6));if(!_0x19e22f['ok']){const _0x2cadfb=await _0x19e22f['json']()['catch'](()=>({'message':_0x19e22f['statusText']}));throw new Error(_0x2cadfb['message']||'Failed\x20to\x20get\x20team');}return await _0x19e22f['json']();},async 'createTeam'(_0xef7fe9){const _0x5c26d2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xef7fe9)});if(!_0x5c26d2['ok']){const _0x145628=await _0x5c26d2['json']()['catch'](()=>({'message':_0x5c26d2['statusText']}));throw new Error(_0x145628['message']||'Failed\x20to\x20create\x20team');}return await _0x5c26d2['json']();},async 'updateTeam'(_0x2a2beb,_0x190400){const _0x4db1a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2a2beb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x190400)});if(!_0x4db1a2['ok']){const _0x4c46c7=await _0x4db1a2['json']()['catch'](()=>({'message':_0x4db1a2['statusText']}));throw new Error(_0x4c46c7['message']||'Failed\x20to\x20update\x20team');}return await _0x4db1a2['json']();},async 'deleteTeam'(_0x31bd68){const _0x19da0f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31bd68),{'method':'DELETE'});if(!_0x19da0f['ok']){const _0x35db8e=await _0x19da0f['json']()['catch'](()=>({'message':_0x19da0f['statusText']}));throw new Error(_0x35db8e['message']||'Failed\x20to\x20delete\x20team');}return await _0x19da0f['json']();},async 'addTeamMember'(_0x68d7d9,_0x4ad51c){const _0x5936a4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x68d7d9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ad51c})});if(!_0x5936a4['ok']){const _0x124659=await _0x5936a4['json']()['catch'](()=>({'message':_0x5936a4['statusText']}));throw new Error(_0x124659['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5936a4['json']();},async 'removeTeamMember'(_0x4cc020,_0x50a989){const _0xcf6c25=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cc020)+'/members/'+encodeURIComponent(_0x50a989),{'method':'DELETE'});if(!_0xcf6c25['ok']){const _0x4d1966=await _0xcf6c25['json']()['catch'](()=>({'message':_0xcf6c25['statusText']}));throw new Error(_0x4d1966['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xcf6c25['json']();},async 'getBindings'(_0x814fde={}){const _0x51adff=new URLSearchParams();if(_0x814fde['resource_type'])_0x51adff['set']('resource_type',_0x814fde['resource_type']);if(_0x814fde['resource_id'])_0x51adff['set']('resource_id',_0x814fde['resource_id']);if(_0x814fde['subject_type'])_0x51adff['set']('subject_type',_0x814fde['subject_type']);if(_0x814fde['subject_id'])_0x51adff['set']('subject_id',_0x814fde['subject_id']);const _0x50af96=_0x51adff['toString'](),_0xb98aa1=await fetch(API_BASE+'/bindings'+(_0x50af96?'?'+_0x50af96:''));if(!_0xb98aa1['ok']){const _0x32b073=await _0xb98aa1['json']()['catch'](()=>({'message':_0xb98aa1['statusText']}));throw new Error(_0x32b073['message']||'Failed\x20to\x20get\x20bindings');}return await _0xb98aa1['json']();},async 'createBinding'(_0x2f833d){const _0x16c6b7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f833d)});if(!_0x16c6b7['ok']){const _0x3279c0=await _0x16c6b7['json']()['catch'](()=>({'message':_0x16c6b7['statusText']}));throw new Error(_0x3279c0['message']||'Failed\x20to\x20create\x20binding');}return await _0x16c6b7['json']();},async 'updateBinding'(_0x4f212d,_0x5ab9d5){const _0x42f537=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4f212d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ab9d5)});if(!_0x42f537['ok']){const _0x539b94=await _0x42f537['json']()['catch'](()=>({'message':_0x42f537['statusText']}));throw new Error(_0x539b94['message']||'Failed\x20to\x20update\x20binding');}return await _0x42f537['json']();},async 'deleteBinding'(_0x128ce6){const _0xf1be6e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x128ce6),{'method':'DELETE'});if(!_0xf1be6e['ok']){const _0x1630e1=await _0xf1be6e['json']()['catch'](()=>({'message':_0xf1be6e['statusText']}));throw new Error(_0x1630e1['message']||'Failed\x20to\x20delete\x20binding');}return await _0xf1be6e['json']();},async 'getRoleDefinitions'(){const _0x539b5f=await fetch(API_BASE+'/roles');if(!_0x539b5f['ok']){const _0x170bb5=await _0x539b5f['json']()['catch'](()=>({'message':_0x539b5f['statusText']}));throw new Error(_0x170bb5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x539b5f['json']();},async 'getRoleDefinition'(_0x165787){const _0x4b62ca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x165787));if(!_0x4b62ca['ok']){const _0x3ccee1=await _0x4b62ca['json']()['catch'](()=>({'message':_0x4b62ca['statusText']}));throw new Error(_0x3ccee1['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b62ca['json']();},async 'createRoleDefinition'(_0x367654){const _0x15f5cb=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x367654)});if(!_0x15f5cb['ok']){const _0x5018c1=await _0x15f5cb['json']()['catch'](()=>({'message':_0x15f5cb['statusText']}));throw new Error(_0x5018c1['message']||_0x5018c1['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x15f5cb['json']();},async 'updateRoleDefinition'(_0x3bc267,_0x44775a){const _0xca4965=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3bc267),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44775a)});if(!_0xca4965['ok']){const _0x9fe032=await _0xca4965['json']()['catch'](()=>({'message':_0xca4965['statusText']}));throw new Error(_0x9fe032['message']||_0x9fe032['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xca4965['json']();},async 'deleteRoleDefinition'(_0x542fb9){const _0x23d669=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x542fb9),{'method':'DELETE'});if(!_0x23d669['ok']){const _0x37153b=await _0x23d669['json']()['catch'](()=>({'message':_0x23d669['statusText']}));throw new Error(_0x37153b['message']||_0x37153b['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x23d669['json']();},async 'getAvailablePermissions'(){const _0x264288=await fetch(API_BASE+'/roles/available-permissions');if(!_0x264288['ok']){const _0x328547=await _0x264288['json']()['catch'](()=>({'message':_0x264288['statusText']}));throw new Error(_0x328547['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x264288['json']();},async 'getGitProviderAllowedTeams'(_0xd60c38){const _0x1f70b0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xd60c38)+'/allowed-teams');if(!_0x1f70b0['ok']){const _0x174298=await _0x1f70b0['json']()['catch'](()=>({'message':_0x1f70b0['statusText']}));throw new Error(_0x174298['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1f70b0['json']();},async 'setGitProviderAllowedTeams'(_0x57f2a7,_0x3b4055){const _0x3ee051=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x57f2a7)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3b4055})});if(!_0x3ee051['ok']){const _0x4f90e2=await _0x3ee051['json']()['catch'](()=>({'message':_0x3ee051['statusText']}));throw new Error(_0x4f90e2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3ee051['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 _0x60455e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x24d9b0=>{_0x24d9b0['el']['style']['bottom']=_0x60455e+'px';const _0x4e734e=_0x24d9b0['el']['offsetHeight']||toastState['defaultHeight'];_0x60455e+=_0x4e734e+toastState['gap'];});});}function removeToastById(_0x3598b6){const _0x343079=toastState['toasts']['findIndex'](_0x43ef48=>_0x43ef48['id']===_0x3598b6);if(_0x343079===-0x1)return;const _0x1dd206=toastState['toasts'][_0x343079];if(_0x1dd206['timeoutId'])clearTimeout(_0x1dd206['timeoutId']);_0x1dd206['el']['classList']['remove']('show'),setTimeout(()=>_0x1dd206['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x343079,0x1),repositionAllToasts();}function registerToast(_0x23e3a2){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23e3a2),repositionAllToasts(),_0x23e3a2['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(_0x5c7da1){if(_0x5c7da1===null||_0x5c7da1===undefined)return'';return String(_0x5c7da1)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x591b5f,_0x44f3b2){if(_0x591b5f&&typeof _0x591b5f==='object'&&!Array['isArray'](_0x591b5f))return{'code':typeof _0x591b5f['text']==='string'?_0x591b5f['text']:'','language':typeof _0x591b5f['lang']==='string'?_0x591b5f['lang']:''};return{'code':typeof _0x591b5f==='string'?_0x591b5f:'','language':typeof _0x44f3b2==='string'?_0x44f3b2:''};}function buildMermaidBlock(_0x249c92){const _0x369737=String(_0x249c92||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x369737))+'\x22>'+escapeHtmlValue(_0x369737)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x33488b=new marked['Renderer'](),_0x3dcb32=_0x33488b['code']['bind'](_0x33488b);return _0x33488b['code']=function(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d){const {code:_0x905ce4,language:_0x4095a8}=getMarkdownCodeBlockPayload(_0x1ad7fd,_0x5c3c8e),_0x21743c=String(_0x4095a8||'')['trim']()['toLowerCase']();if(_0x21743c==='mermaid')return buildMermaidBlock(_0x905ce4);const _0x5aa106=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5aa106&&_0x21743c)try{const _0xc9fddf=_0x5aa106['getLanguage'](_0x21743c)?_0x21743c:'plaintext',_0x37ecb1=_0x5aa106['highlight'](_0x905ce4,{'language':_0xc9fddf})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x21743c)+'\x22>'+_0x37ecb1+'</code></pre>';}catch(_0x306f98){console['error']('Syntax\x20highlighting\x20error:',_0x306f98);}return _0x3dcb32(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d);},sharedMarkedRenderer=_0x33488b,_0x33488b;}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 _0x3efc43=window['mermaid'];if(!_0x3efc43||typeof _0x3efc43['initialize']!=='function')return _0x3efc43||null;return _0x3efc43['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3efc43;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x19bb72,_0x2ed899)=>{const _0x267f54=()=>_0x19bb72(configureMermaidInstance()),_0x5df3c7=()=>{mermaidLoadPromise=null,_0x2ed899(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x118b3f=document['getElementById'](MERMAID_SCRIPT_ID);!_0x118b3f&&(_0x118b3f=document['createElement']('script'),_0x118b3f['id']=MERMAID_SCRIPT_ID,_0x118b3f['src']=MERMAID_SCRIPT_SRC,_0x118b3f['async']=!![],document['head']['appendChild'](_0x118b3f));if(window['mermaid']){_0x267f54();return;}_0x118b3f['addEventListener']('load',_0x267f54,{'once':!![]}),_0x118b3f['addEventListener']('error',_0x5df3c7,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x135afd){const _0x119632=_0x135afd['getAttribute']('data-mermaid-source');if(!_0x119632)return null;let _0x250c00=_0x119632;try{_0x250c00=decodeURIComponent(_0x119632);}catch{}return _0x135afd['textContent']=_0x250c00,_0x135afd['removeAttribute']('data-processed'),_0x135afd['removeAttribute']('aria-roledescription'),_0x135afd['removeAttribute']('role'),_0x135afd['removeAttribute']('aria-label'),_0x250c00;}function collectMermaidNodes(_0x15ede8,_0x60259c){if(!(_0x15ede8 instanceof Element))return;_0x15ede8['matches']('.mermaid[data-mermaid-source]')&&_0x60259c['add'](_0x15ede8),_0x15ede8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a6895=>{_0x60259c['add'](_0x5a6895);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x97a52f=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x131cd9=>setTimeout(_0x131cd9,0x0);_0x97a52f(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x96ec71=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x96ec71);});});}function queueMermaidRender(_0x529f6c){const _0x4e28b9=new Set();_0x529f6c instanceof Document||_0x529f6c instanceof DocumentFragment?_0x529f6c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x51d48b=>_0x4e28b9['add'](_0x51d48b)):collectMermaidNodes(_0x529f6c,_0x4e28b9);if(_0x4e28b9['size']===0x0)return;_0x4e28b9['forEach'](_0xdb9593=>pendingMermaidNodes['add'](_0xdb9593)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x42e500=Array['from'](pendingMermaidNodes)['filter'](_0x4e4b15=>_0x4e4b15['isConnected']);pendingMermaidNodes['clear']();if(_0x42e500['length']===0x0)return;const _0x11de54=await loadMermaid();if(!_0x11de54)return;configureMermaidInstance();const _0xa11c94=getMermaidTheme();for(const _0x4691fe of _0x42e500){const _0xd8bc1b=_0x4691fe['getAttribute']('data-mermaid-source');if(!_0xd8bc1b)continue;const _0x527f33=_0x4691fe['getAttribute']('data-processed')==='true';if(_0x527f33&&_0x4691fe['dataset']['mermaidTheme']===_0xa11c94)continue;restoreMermaidSource(_0x4691fe);try{if(typeof _0x11de54['run']==='function')await _0x11de54['run']({'nodes':[_0x4691fe]});else typeof _0x11de54['init']==='function'&&_0x11de54['init'](undefined,[_0x4691fe]);_0x4691fe['dataset']['mermaidTheme']=_0xa11c94,delete _0x4691fe['dataset']['mermaidError'];}catch(_0x20af6d){console['error']('Mermaid\x20render\x20failed:',_0x20af6d),restoreMermaidSource(_0x4691fe),_0x4691fe['dataset']['mermaidError']='true',delete _0x4691fe['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1dc16b=>{_0x1dc16b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1dc16b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b533f=>{_0x5b533f['forEach'](_0x3ca313=>{_0x3ca313['addedNodes']['forEach'](_0x14f6bd=>{_0x14f6bd['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x14f6bd);});});}),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'(_0x112985){const _0x466913=new Date(_0x112985),_0x485c16=new Date(),_0x206e75=_0x485c16-_0x466913,_0x3c0b8c=Math['floor'](_0x206e75/0x3e8),_0x12b79c=Math['floor'](_0x3c0b8c/0x3c),_0xf0a61d=Math['floor'](_0x12b79c/0x3c),_0x5d7dc5=Math['floor'](_0xf0a61d/0x18);if(_0x3c0b8c<0x3c)return'now';if(_0x12b79c<0x3c)return _0x12b79c+'m\x20ago';if(_0xf0a61d<0x18)return _0xf0a61d+'h\x20ago';return _0x5d7dc5+'d\x20ago';},'getStatusIcon'(_0x7dcdc){switch(_0x7dcdc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x5a7f29){switch(_0x5a7f29){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'(_0x2a625f,_0x554b24=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2a2336={};_0x2a2336['text/plain']=new Blob([_0x2a625f],{'type':'text/plain'});_0x554b24&&(_0x2a2336['text/html']=new Blob([_0x554b24],{'type':'text/html'}));const _0xa586e5=new ClipboardItem(_0x2a2336);return await navigator['clipboard']['write']([_0xa586e5]),!![];}catch(_0x2baa93){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2baa93);}try{const _0x3e8da9=_0x3177e4=>{_0x3177e4['preventDefault'](),_0x3177e4['clipboardData']['setData']('text/plain',_0x2a625f),_0x554b24&&_0x3177e4['clipboardData']['setData']('text/html',_0x554b24);};document['addEventListener']('copy',_0x3e8da9);const _0x3eada7=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e8da9);if(_0x3eada7)return!![];}catch(_0x398cec){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398cec);}try{const _0x1c18bf=document['createElement']('textarea');_0x1c18bf['value']=_0x2a625f,_0x1c18bf['style']['position']='fixed',_0x1c18bf['style']['opacity']='0',_0x1c18bf['style']['pointerEvents']='none',document['body']['appendChild'](_0x1c18bf),_0x1c18bf['select']();const _0x2c8650=document['execCommand']('copy');return document['body']['removeChild'](_0x1c18bf),_0x2c8650;}catch(_0x4c325b){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c325b),![];}},'showToast'(_0x37b8b0,_0x16f275='info'){const _0x437d97=getNextToastId(),_0x5d46f7=document['createElement']('div');_0x5d46f7['className']='toast\x20toast-'+_0x16f275,_0x5d46f7['textContent']=_0x37b8b0,_0x5d46f7['dataset']['toastId']=_0x437d97,document['body']['appendChild'](_0x5d46f7);const _0x19f059=_0x16f275==='error'?0x2710:0xbb8,_0x30a536=setTimeout(()=>{removeToastById(_0x437d97);},_0x19f059),_0x2d9fbc={'id':_0x437d97,'el':_0x5d46f7,'timeoutId':_0x30a536};return registerToast(_0x2d9fbc),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d46f7['classList']['add']('show');});}),_0x437d97;},'showError'(_0x1e44a5){console['error'](_0x1e44a5);const _0x571233=typeof _0x1e44a5==='string'?_0x1e44a5:_0x1e44a5['message']||'An\x20error\x20occurred';this['showToast'](_0x571233,'error');},'showSuccess'(_0x15007b){this['showToast'](_0x15007b,'success');},'capitalize'(_0xf131c1){if(!_0xf131c1)return'';return _0xf131c1['charAt'](0x0)['toUpperCase']()+_0xf131c1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x37d115){return escapeHtmlValue(_0x37d115);},'ansiToHtml'(_0x5afa20){if(_0x5afa20===null||_0x5afa20===undefined)return'';let _0x567e5b=this['escapeHtml'](_0x5afa20);const _0x34c157={'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'},_0x3d60f4={'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 _0x277094=0x0;return _0x567e5b=_0x567e5b['replace'](/\x1b\[([0-9;]*)m/g,(_0x946b3b,_0x42578b)=>{if(!_0x42578b||_0x42578b==='0'){const _0x179bc6='</span>'['repeat'](_0x277094);return _0x277094=0x0,_0x179bc6;}const _0x4d08ee=_0x42578b['split'](';'),_0x43a9a0=[];for(const _0x30c912 of _0x4d08ee){if(_0x30c912==='1')_0x43a9a0['push']('font-weight:bold');else{if(_0x30c912==='2')_0x43a9a0['push']('opacity:0.7');else{if(_0x30c912==='3')_0x43a9a0['push']('font-style:italic');else{if(_0x30c912==='4')_0x43a9a0['push']('text-decoration:underline');else{if(_0x30c912==='9')_0x43a9a0['push']('text-decoration:line-through');else{if(_0x34c157[_0x30c912])_0x43a9a0['push']('color:'+_0x34c157[_0x30c912]);else{if(_0x3d60f4[_0x30c912])_0x43a9a0['push']('background-color:'+_0x3d60f4[_0x30c912]);}}}}}}}if(_0x43a9a0['length']>0x0)return _0x277094++,'<span\x20style=\x22'+_0x43a9a0['join'](';')+'\x22>';return'';}),_0x567e5b+='</span>'['repeat'](_0x277094),_0x567e5b=_0x567e5b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x345384,_0x3f6890)=>{if(!_0x3f6890||_0x3f6890==='0')return'';const _0x584ab3=_0x3f6890['split'](';'),_0x50b2b7=[];for(const _0x1dd7f4 of _0x584ab3){if(_0x1dd7f4==='1')_0x50b2b7['push']('font-weight:bold');else{if(_0x34c157[_0x1dd7f4])_0x50b2b7['push']('color:'+_0x34c157[_0x1dd7f4]);else{if(_0x3d60f4[_0x1dd7f4])_0x50b2b7['push']('background-color:'+_0x3d60f4[_0x1dd7f4]);}}}if(_0x50b2b7['length']>0x0)return'<span\x20style=\x22'+_0x50b2b7['join'](';')+'\x22>';return'';}),_0x567e5b;},'showModal'({title:_0x416e2f,content:_0x2f5ac5,buttons:buttons=[]}){const _0x8173ab='\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'](_0x416e2f)+'</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'+_0x2f5ac5+'\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']((_0x98896e,_0x52bfa0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x98896e['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x52bfa0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x98896e['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',_0x3c1c05=document['createElement']('div');_0x3c1c05['id']='utils-modal',_0x3c1c05['className']='modal',_0x3c1c05['innerHTML']=_0x8173ab,document['body']['appendChild'](_0x3c1c05);const _0x73ad6c=document['getElementById']('utils-modal-close');_0x73ad6c&&_0x73ad6c['addEventListener']('click',()=>this['hideModal']());const _0x23182e=_0x3c1c05['querySelectorAll']('[data-btn-index]');_0x23182e['forEach'](_0x5ab40f=>{const _0x26bb2a=parseInt(_0x5ab40f['dataset']['btnIndex']);buttons[_0x26bb2a]?.['onClick']&&_0x5ab40f['addEventListener']('click',buttons[_0x26bb2a]['onClick']);});const _0x1d7568=document['getElementById']('utils-modal-overlay');_0x1d7568&&_0x1d7568['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x57bd6e=document['getElementById']('utils-modal');_0x57bd6e&&_0x57bd6e['remove']();},'parseKeyValuePairs'(_0x4269b5){const _0x2ed03e={};if(!_0x4269b5)return _0x2ed03e;return _0x4269b5['split'](/\r?\n/)['map'](_0x6e0d94=>_0x6e0d94['trim']())['filter'](Boolean)['forEach'](_0x1138ff=>{const _0x5108ea=_0x1138ff['indexOf']('=');if(_0x5108ea>0x0){const _0x1dc5a7=_0x1138ff['slice'](0x0,_0x5108ea)['trim'](),_0x299b52=_0x1138ff['slice'](_0x5108ea+0x1)['trim']();if(_0x1dc5a7)_0x2ed03e[_0x1dc5a7]=_0x299b52;}}),_0x2ed03e;},'debounce'(_0x45e559,_0x99e7db=0xfa){let _0x4b21bb=null;return(..._0xa865fe)=>{clearTimeout(_0x4b21bb),_0x4b21bb=setTimeout(()=>_0x45e559['apply'](this,_0xa865fe),_0x99e7db);};},'formatTimestamp'(_0x16da4e){if(!_0x16da4e)return'N/A';const _0x4a8415=new Date(_0x16da4e);return _0x4a8415['toLocaleDateString']()+'\x20'+_0x4a8415['toLocaleTimeString']();},'getQueryParams'(){const _0x259eb2=new URLSearchParams(window['location']['search']),_0x2b8dcf={};for(const [_0x862d5e,_0xe84f81]of _0x259eb2){_0x2b8dcf[_0x862d5e]=_0xe84f81;}return _0x2b8dcf;},'formatDuration'(_0x401564,_0x483e29){if(!_0x401564)return'N/A';const _0x3443e0=new Date(_0x401564),_0x4aad0e=_0x483e29?new Date(_0x483e29):new Date(),_0x5b5d29=_0x4aad0e-_0x3443e0;if(_0x5b5d29<0x0)return'0s';const _0x41fa56=Math['floor'](_0x5b5d29/0x3e8),_0x42da4f=Math['floor'](_0x41fa56/0x3c),_0x57fe1d=Math['floor'](_0x42da4f/0x3c),_0x113490=Math['floor'](_0x57fe1d/0x18);if(_0x41fa56<0x3c)return _0x41fa56+'s';if(_0x42da4f<0x3c)return _0x42da4f+'m\x20'+_0x41fa56%0x3c+'s';if(_0x57fe1d<0x18)return _0x57fe1d+'h\x20'+_0x42da4f%0x3c+'m\x20'+_0x41fa56%0x3c+'s';return _0x113490+'d\x20'+_0x57fe1d%0x18+'h\x20'+_0x42da4f%0x3c+'m';},'renderMarkdown'(_0x45622a,_0x2c60ae={}){if(!_0x45622a)return'';_0x45622a=this['rewriteAttachmentLinks'](_0x45622a,_0x2c60ae),_0x45622a=this['rewriteColorSyntax'](_0x45622a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x45622a);}catch(_0x1224b9){return console['error']('Markdown\x20parsing\x20error:',_0x1224b9),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);}},'rewriteAttachmentLinks'(_0x1b3386,_0x332c17={}){const _0x3aaeba=typeof _0x332c17['resolveAttachmentUrl']==='function'?_0x332c17['resolveAttachmentUrl']:_0x332c17['taskId']?_0x244e2e=>API_BASE+'/tasks/'+_0x332c17['taskId']+'/attachments/'+encodeURIComponent(_0x244e2e):null;if(!_0x3aaeba)return _0x1b3386;return String(_0x1b3386)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x309920,_0x1387f9)=>{const _0x256617=String(_0x1387f9||'')['trim']();if(!_0x256617)return _0x309920;let _0x264df0=_0x256617;try{_0x264df0=decodeURIComponent(_0x256617);}catch{}const _0x4f528e=_0x3aaeba(_0x264df0);if(!_0x4f528e)return _0x309920;return']('+_0x4f528e+')';});},'rewriteColorSyntax'(_0x5c7cdb){if(!_0x5c7cdb)return _0x5c7cdb;return String(_0x5c7cdb)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e7fcf,_0x563dc0,_0x2b0d69)=>{const _0x8655c8=this['rewriteColorSyntax'](_0x2b0d69);return'<span\x20style=\x22color:\x20'+_0x563dc0+'\x22>'+_0x8655c8+'</span>';});},'renderMarkdownFallback'(_0x41246d,_0x24a360={}){if(!_0x41246d)return'';_0x41246d=_0x41246d['replace'](/\r\n/g,'\x0a'),_0x41246d=_0x41246d['replace'](/\r/g,'\x0a'),_0x41246d=this['rewriteAttachmentLinks'](_0x41246d,_0x24a360);let _0x44af68=this['escapeHtml'](_0x41246d);return _0x44af68=_0x44af68['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x44af68=_0x44af68['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x44af68=_0x44af68['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x44af68=_0x44af68['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x44af68=_0x44af68['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x44af68=_0x44af68['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x44af68=_0x44af68['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x44af68=_0x44af68['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x44af68=_0x44af68['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x44af68=_0x44af68['replace'](/\n\n/g,'</p><p>'),_0x44af68=_0x44af68['replace'](/\n/g,'<br>'),'<p>'+_0x44af68+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3284f6=new Uint8Array(0x10);crypto['getRandomValues'](_0x3284f6),_0x3284f6[0x6]=_0x3284f6[0x6]&0xf|0x40,_0x3284f6[0x8]=_0x3284f6[0x8]&0x3f|0x80;const _0x41fbe5=Array['from'](_0x3284f6,_0x187002=>_0x187002['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x41fbe5['slice'](0x0,0x8)+'-'+_0x41fbe5['slice'](0x8,0xc)+'-'+_0x41fbe5['slice'](0xc,0x10)+'-'+_0x41fbe5['slice'](0x10,0x14)+'-'+_0x41fbe5['slice'](0x14);}};export class CustomSelect{constructor(_0x30b5e2,_0x59e62b={}){this['nativeSelect']=_0x30b5e2,this['options']=_0x59e62b,this['isOpen']=![],this['selectedValue']=_0x30b5e2['value']||'',this['searchable']=_0x59e62b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1de5a2=document['createElement']('div');_0x1de5a2['className']='custom-select';const _0x5d5768=document['createElement']('div');_0x5d5768['className']='custom-select-trigger',_0x5d5768['setAttribute']('tabindex','0'),_0x5d5768['setAttribute']('role','button'),_0x5d5768['setAttribute']('aria-haspopup','listbox');const _0x51c77f=document['createElement']('span');_0x51c77f['className']='custom-select-trigger-text';const _0x13b50e=document['createElement']('span');_0x13b50e['className']='custom-select-arrow',_0x13b50e['textContent']='▼',_0x5d5768['appendChild'](_0x51c77f),_0x5d5768['appendChild'](_0x13b50e);const _0x24edea=document['createElement']('div');_0x24edea['className']='custom-select-dropdown',_0x24edea['setAttribute']('role','listbox');if(this['searchable']){const _0x520941=document['createElement']('div');_0x520941['className']='custom-select-search';const _0x45a016=document['createElement']('input');_0x45a016['type']='text',_0x45a016['className']='custom-select-search-input',_0x45a016['placeholder']='Type\x20to\x20search...',_0x45a016['setAttribute']('aria-label','Search\x20options'),_0x45a016['addEventListener']('input',_0x1594b5=>{this['searchQuery']=_0x1594b5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x45a016['addEventListener']('keydown',_0xd82833=>{if(_0xd82833['key']==='Escape')_0xd82833['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xd82833['key']==='Enter'){_0xd82833['preventDefault'](),_0xd82833['stopPropagation']();const _0x1355ba=_0x24edea['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1355ba){const _0x5d0875=_0x1355ba['getAttribute']('data-value');this['select'](_0x5d0875);}}}}),_0x520941['appendChild'](_0x45a016),_0x24edea['appendChild'](_0x520941),this['searchInput']=_0x45a016;}const _0x567f85=document['createElement']('div');_0x567f85['className']='custom-select-options',_0x24edea['appendChild'](_0x567f85),_0x1de5a2['appendChild'](_0x5d5768),_0x1de5a2['appendChild'](_0x24edea),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1de5a2,this['nativeSelect']),this['wrapper']=_0x1de5a2,this['trigger']=_0x5d5768,this['triggerText']=_0x51c77f,this['dropdown']=_0x24edea,this['optionsContainer']=_0x567f85,_0x5d5768['addEventListener']('click',()=>this['toggle']()),_0x5d5768['addEventListener']('keydown',_0x3f31eb=>this['handleKeydown'](_0x3f31eb)),document['addEventListener']('click',_0x38cd60=>{!_0x1de5a2['contains'](_0x38cd60['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5223fc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5223fc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x5c71b4=new MutationObserver(()=>{this['updateDisabledState']();});_0x5c71b4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x19ded8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x19ded8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x55205f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x55205f),this['trigger']['setAttribute']('aria-disabled',_0x55205f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x55205f?'-1':'0'),_0x55205f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2942ff=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1dd185=_0x2942ff['filter'](_0x5a37ca=>!_0x5a37ca['disabled']&&!_0x5a37ca['hidden']);_0x2942ff['forEach']((_0x2f020e,_0x1c839b)=>{const _0x18c7da=document['createElement']('div');_0x18c7da['className']='custom-select-option',_0x18c7da['textContent']=_0x2f020e['textContent'],_0x18c7da['setAttribute']('data-value',_0x2f020e['value']),_0x18c7da['setAttribute']('data-index',_0x1c839b),_0x18c7da['setAttribute']('role','option'),_0x2f020e['disabled']?_0x18c7da['classList']['add']('disabled'):_0x18c7da['addEventListener']('click',()=>this['select'](_0x2f020e['value'])),_0x2f020e['value']===this['selectedValue']&&_0x18c7da['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x18c7da),this['allOptions']['push']({'element':_0x18c7da,'text':_0x2f020e['textContent']['toLowerCase'](),'value':_0x2f020e['value'],'disabled':_0x2f020e['disabled']});});if(this['searchable']&&this['searchInput']){const _0x30dcd4=this['searchInput']['parentElement'];_0x1dd185['length']>0x3?_0x30dcd4['style']['display']='':_0x30dcd4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2cb20f=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x24922b=>{if(!_0x2cb20f||_0x24922b['disabled'])_0x24922b['element']['style']['display']='';else{const _0x467345=_0x24922b['text']['includes'](_0x2cb20f);_0x24922b['element']['style']['display']=_0x467345?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x55ac77){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x55ac77,this['nativeSelect']['value']=_0x55ac77;const _0x124fcd=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x124fcd),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3217e2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3217e2&&(this['triggerText']['textContent']=_0x3217e2['textContent'],_0x3217e2['disabled']||_0x3217e2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3956a6=>{_0x3956a6['getAttribute']('data-value')===this['selectedValue']?_0x3956a6['classList']['add']('selected'):_0x3956a6['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 _0x238f99=window['getComputedStyle'](this['dropdown']);if(_0x238f99['position']==='fixed'){const _0x2cd673=this['trigger']['getBoundingClientRect'](),_0x444062=parseInt(_0x238f99['maxHeight'])||0xc8,_0x2ee5e4=window['innerHeight'],_0x19a90c=_0x2ee5e4-_0x2cd673['bottom'],_0x1f08f9=_0x2cd673['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1e7f82;_0x19a90c<_0x444062&&_0x1f08f9>_0x19a90c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2ee5e4-_0x2cd673['top']+'px',_0x1e7f82=Math['min'](_0x444062,_0x1f08f9-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2cd673['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1e7f82=Math['min'](_0x444062,_0x19a90c-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px');if(this['optionsContainer']){let _0x392df3=_0x1e7f82;if(this['searchInput']){const _0x551d4f=this['searchInput']['parentElement'];_0x551d4f&&(_0x392df3-=_0x551d4f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x392df3)+'px';}this['dropdown']['style']['left']=_0x2cd673['left']+'px',this['dropdown']['style']['width']=_0x2cd673['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc89154=this['searchInput']['parentElement'];_0xc89154&&_0xc89154['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'](_0x198b26){if(this['nativeSelect']['disabled'])return;if(_0x198b26['key']==='Enter'||_0x198b26['key']==='\x20')_0x198b26['preventDefault'](),this['toggle']();else _0x198b26['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1d6183='\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',_0x1d6183),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4d30aa=document['getElementById']('confirm-dialog-close'),_0x363e66=document['getElementById']('confirm-dialog-cancel'),_0x10b668=document['getElementById']('confirm-dialog-confirm'),_0x16c3bb=this['_modal']['querySelector']('.modal-overlay');_0x4d30aa['addEventListener']('click',()=>this['_resolve'](![])),_0x363e66['addEventListener']('click',()=>this['_resolve'](![])),_0x10b668['addEventListener']('click',()=>this['_resolve'](!![])),_0x16c3bb['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4065b1=>{if(_0x4065b1['key']==='Escape')_0x4065b1['preventDefault'](),this['_resolve'](![]);else _0x4065b1['key']==='Enter'&&(_0x4065b1['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x538117,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2704be=>{this['_resolvePromise']=_0x2704be,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x538117;const _0x4b82c5=document['getElementById']('confirm-dialog-cancel'),_0x1460c2=document['getElementById']('confirm-dialog-confirm');_0x4b82c5['textContent']=cancelText,_0x1460c2['textContent']=confirmText,_0x1460c2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1460c2['focus']();});},'_resolve'(_0x151f7f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x151f7f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d777a,_0x484a09={}){this['container']=_0x3d777a,this['options']={'placeholder':_0x484a09['placeholder']||'Type\x20to\x20search...','maxItems':_0x484a09['maxItems']||0x64,'loadItems':_0x484a09['loadItems']||(async()=>[]),'renderItem':_0x484a09['renderItem']||(_0x239bca=>({'primary':String(_0x239bca),'secondary':''})),'onSelect':_0x484a09['onSelect']||(()=>{}),'filterItems':_0x484a09['filterItems']||null,'getItemValue':_0x484a09['getItemValue']||(_0x41f9a1=>_0x41f9a1),'sortItems':_0x484a09['sortItems']||null,'debounceMs':_0x484a09['debounceMs']||0xc8,'minCharsForSearch':_0x484a09['minCharsForSearch']||0x0,'emptyMessage':_0x484a09['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x484a09['loadingMessage']||'Loading...','preload':_0x484a09['preload']!==![],'searchMode':_0x484a09['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',_0x58e735=>this['onBlur'](_0x58e735)),this['input']['addEventListener']('input',_0x2d7826=>this['onInput'](_0x2d7826)),this['input']['addEventListener']('keydown',_0x484370=>this['onKeydown'](_0x484370)),this['clearBtn']['addEventListener']('mousedown',_0x298f51=>{_0x298f51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5a6c59=>{_0x5a6c59['preventDefault']();}),document['addEventListener']('click',_0x45960a=>{!this['wrapper']['contains'](_0x45960a['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(_0x26c9af){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x26c9af);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x215ff3){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x22843e){const _0x573a10=_0x22843e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x573a10);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x573a10):this['loadAndShow'](_0x573a10);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2139e2){switch(_0x2139e2['key']){case'ArrowDown':_0x2139e2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2139e2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2139e2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2139e2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x16836c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2dcd99=this['selectedIndex']+_0x16836c;if(_0x2dcd99>=0x0&&_0x2dcd99<this['filteredItems']['length']){this['selectedIndex']=_0x2dcd99,this['updateSelectionHighlight']();const _0x59f91b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x59f91b[this['selectedIndex']]&&_0x59f91b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5306a4=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5306a4['forEach']((_0x155c2f,_0x413f20)=>{_0x155c2f['classList']['toggle']('keyboard-selected',_0x413f20===this['selectedIndex']);});}async['loadAndShow'](_0x409a2e){this['showLoading']();try{const _0x13f5f3=await this['options']['loadItems'](_0x409a2e);if(this['options']['searchMode']==='server'){let _0x24d045=_0x13f5f3;this['options']['sortItems']&&(_0x24d045=this['options']['sortItems']([..._0x13f5f3]));this['filteredItems']=_0x24d045;const _0x4603e9=this['filteredItems']['length']>=this['options']['maxItems'];_0x4603e9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4603e9),this['open']();}else this['allItems']=_0x13f5f3,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x409a2e);}catch(_0x543fb1){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x543fb1),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x303485){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x303485):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x351ed3=this['filteredItems']['length']>=this['options']['maxItems'];_0x351ed3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x351ed3),this['open']();}['renderItems'](_0x2e7924){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']((_0x7ceb21,_0x52c720)=>{const _0x174a1b=document['createElement']('div');_0x174a1b['className']='autocomplete-select-item',_0x174a1b['setAttribute']('role','option'),_0x174a1b['setAttribute']('data-index',_0x52c720);const _0xe6f12=this['options']['renderItem'](_0x7ceb21);let _0x49c079='';_0xe6f12['icon']&&(_0x49c079='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0xe6f12['iconClass']||'')+'\x22>'+_0xe6f12['icon']+'</span>'),_0x174a1b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x49c079+'\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'](_0xe6f12['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xe6f12['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0xe6f12['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x174a1b['addEventListener']('click',()=>{this['selectItem'](_0x7ceb21);}),_0x174a1b['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x52c720,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x174a1b);}),_0x2e7924?(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'](_0x205f31){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x205f31)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x37979f){this['selectedItem']=_0x37979f;const _0x1395ac=this['options']['renderItem'](_0x37979f);this['input']['value']=_0x1395ac['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x37979f);}['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'](_0x1ec4d8){if(_0x1ec4d8){this['selectedItem']=_0x1ec4d8;const _0x3d0bfd=this['options']['renderItem'](_0x1ec4d8);this['input']['value']=_0x3d0bfd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x9fb1c){this['allItems']=_0x9fb1c,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'](_0x498c2d){this['input']['placeholder']=_0x498c2d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x518054=null){const _0x3a813b=document['getElementById']('admin-menu-container'),_0x52af0c=document['getElementById']('admin-menu-btn'),_0xbfa5ca=document['getElementById']('admin-menu');if(!_0x3a813b||!_0x52af0c||!_0xbfa5ca)return;try{!_0x518054&&(_0x518054=await API['getCurrentUser']());if(_0x518054){const _0x35aa42=window['Permissions'],_0x3cf8b1=_0x35aa42['hasServerPermission'](_0x518054,'*')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:manage')||_0x35aa42['hasServerPermission'](_0x518054,'users:create')||_0x35aa42['hasTeamPermission'](_0x518054,'teams:manage')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:view_details');if(!_0x3cf8b1)return;_0x3a813b['hidden']=![];if(!_0x35aa42['hasServerPermission'](_0x518054,'*')){const _0x537a7a=_0xbfa5ca['querySelectorAll']('.admin-menu-item');_0x537a7a['forEach'](_0x48479e=>{const _0x3dce0e=_0x48479e['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3dce0e==='Users'&&!_0x35aa42['hasServerPermission'](_0x518054,'users:create')&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Skills'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Settings'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Administration'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Git\x20History'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Roles'&&(_0x48479e['hidden']=!![]);});}_0x52af0c['addEventListener']('click',_0x4a8cde=>{_0x4a8cde['stopPropagation']();const _0x47ab42=document['getElementById']('actions-menu');if(_0x47ab42)_0x47ab42['hidden']=!![];_0xbfa5ca['hidden']=!_0xbfa5ca['hidden'];}),document['addEventListener']('click',_0x366609=>{!_0xbfa5ca['hidden']&&!_0x52af0c['contains'](_0x366609['target'])&&!_0xbfa5ca['contains'](_0x366609['target'])&&(_0xbfa5ca['hidden']=!![]);}),document['addEventListener']('keydown',_0x274f19=>{_0x274f19['key']==='Escape'&&!_0xbfa5ca['hidden']&&(_0xbfa5ca['hidden']=!![]);});}}catch(_0x1aa6bc){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1aa6bc['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|