@profoundlogic/coderflow-server 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/docs/admin/ai-providers.md +5 -5
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.css +15 -5
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.html +20 -0
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +25 -0
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +15 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0xe75446=window['location']['pathname'],_0x242d87=_0xe75446['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x242d87)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x242d87[0x1]),_0x242d87[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x160712={}){const _0x504545=new URLSearchParams();_0x160712['userId']&&_0x504545['set']('userId',String(_0x160712['userId']));_0x160712['automation']&&_0x504545['set']('automation',String(_0x160712['automation']));const _0x3e2874=API_BASE+'/tasks/stats'+(_0x504545['toString']()?'?'+_0x504545['toString']():''),_0x26fdb8=await fetch(_0x3e2874);if(!_0x26fdb8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x26fdb8['statusText']);return await _0x26fdb8['json']();},async 'getTasks'(_0x2bdb84={}){const _0x3c361e=new URLSearchParams();_0x2bdb84['status']&&_0x3c361e['set']('status',String(_0x2bdb84['status']));_0x2bdb84['environment']&&_0x3c361e['set']('environment',String(_0x2bdb84['environment']));_0x2bdb84['automation']&&_0x3c361e['set']('automation',String(_0x2bdb84['automation']));if(_0x2bdb84['include']){const _0x2c051f=Array['isArray'](_0x2bdb84['include'])?_0x2bdb84['include']['join'](','):String(_0x2bdb84['include']);_0x2c051f&&_0x3c361e['set']('include',_0x2c051f);}_0x2bdb84['filter']&&_0x3c361e['set']('filter',String(_0x2bdb84['filter']));_0x2bdb84['page']&&_0x3c361e['set']('page',String(_0x2bdb84['page']));_0x2bdb84['limit']&&_0x3c361e['set']('limit',String(_0x2bdb84['limit']));_0x2bdb84['userId']&&_0x3c361e['set']('userId',String(_0x2bdb84['userId']));_0x2bdb84['search']&&_0x3c361e['set']('search',String(_0x2bdb84['search']));_0x2bdb84['includeChildTasks']&&_0x3c361e['set']('includeChildTasks','true');const _0xe2699c=API_BASE+'/tasks'+(_0x3c361e['toString']()?'?'+_0x3c361e['toString']():''),_0xfc479b=await fetch(_0xe2699c);if(!_0xfc479b['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xfc479b['statusText']);return await _0xfc479b['json']();},async 'getAutomations'(_0x1e8b63={}){const _0x49f636=new URLSearchParams();_0x1e8b63['environment']&&_0x49f636['set']('environment',String(_0x1e8b63['environment']));const _0x4d480e=await fetch(API_BASE+'/api/automations'+(_0x49f636['toString']()?'?'+_0x49f636['toString']():''));if(!_0x4d480e['ok']){const _0x1174e3=await _0x4d480e['json']()['catch'](()=>({}));throw new Error(_0x1174e3['message']||_0x1174e3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4d480e['statusText']);}return await _0x4d480e['json']();},async 'getAutomation'(_0x47be6e){const _0x3fabeb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x47be6e));if(!_0x3fabeb['ok']){const _0x1c01f6=await _0x3fabeb['json']()['catch'](()=>({}));throw new Error(_0x1c01f6['message']||_0x1c01f6['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3fabeb['statusText']);}return await _0x3fabeb['json']();},async 'createAutomation'(_0x536834){const _0x21d6fe=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x536834||{})});if(!_0x21d6fe['ok']){const _0x278026=await _0x21d6fe['json']()['catch'](()=>({}));throw new Error(_0x278026['message']||_0x278026['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x21d6fe['statusText']);}return await _0x21d6fe['json']();},async 'updateAutomation'(_0x45b3f0,_0x42e21){const _0x38c6b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x45b3f0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42e21||{})});if(!_0x38c6b7['ok']){const _0x32be5e=await _0x38c6b7['json']()['catch'](()=>({}));throw new Error(_0x32be5e['message']||_0x32be5e['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x38c6b7['statusText']);}return await _0x38c6b7['json']();},async 'deleteAutomation'(_0x46b157){const _0x298c87=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x46b157),{'method':'DELETE'});if(!_0x298c87['ok']){const _0x2e506a=await _0x298c87['json']()['catch'](()=>({}));throw new Error(_0x2e506a['message']||_0x2e506a['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x298c87['statusText']);}return await _0x298c87['json']();},async 'triggerAutomation'(_0x4e2a42){const _0x350c4c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e2a42)+'/trigger',{'method':'POST'});if(!_0x350c4c['ok']){const _0x27a7e1=await _0x350c4c['json']()['catch'](()=>({}));throw new Error(_0x27a7e1['message']||_0x27a7e1['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x350c4c['statusText']);}return await _0x350c4c['json']();},async 'setAutomationEnabled'(_0x698066,_0x559ef0){const _0x36ace3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x698066)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x559ef0})});if(!_0x36ace3['ok']){const _0x350f6e=await _0x36ace3['json']()['catch'](()=>({}));throw new Error(_0x350f6e['message']||_0x350f6e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x36ace3['statusText']);}return await _0x36ace3['json']();},async 'getAutomationHistory'(_0x48024b,_0x204777=0x32){const _0x153cd4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48024b)+'/history?limit='+encodeURIComponent(String(_0x204777)));if(!_0x153cd4['ok']){const _0x1388d2=await _0x153cd4['json']()['catch'](()=>({}));throw new Error(_0x1388d2['message']||_0x1388d2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x153cd4['statusText']);}return await _0x153cd4['json']();},async 'getTask'(_0x35a820,_0x5a8818={}){const _0x38f146=new URLSearchParams();if(_0x5a8818['include']){const _0x45747=Array['isArray'](_0x5a8818['include'])?_0x5a8818['include']['join'](','):String(_0x5a8818['include']);if(_0x45747)_0x38f146['set']('include',_0x45747);}const _0x1d12d5=await fetch(API_BASE+'/tasks/'+_0x35a820+(_0x38f146['toString']()?'?'+_0x38f146['toString']():''));if(!_0x1d12d5['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d12d5['statusText']);return await _0x1d12d5['json']();},async 'getTaskResults'(_0x5a6b1b){const _0xeaae28=await fetch(API_BASE+'/tasks/'+_0x5a6b1b+'/results');if(!_0xeaae28['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xeaae28['statusText']);return await _0xeaae28['json']();},async 'getTaskPatches'(_0x3dd7f5){const _0x28d359=await fetch(API_BASE+'/tasks/'+_0x3dd7f5+'/patches');if(!_0x28d359['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x28d359['statusText']);return await _0x28d359['json']();},async 'getTaskAttachments'(_0x5da68f){const _0x58bcd1=await fetch(API_BASE+'/tasks/'+_0x5da68f+'/attachments');if(!_0x58bcd1['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x58bcd1['statusText']);return await _0x58bcd1['json']();},async 'uploadAttachments'(_0x12fd2a,_0x5b05af){const _0x52a749=new FormData();for(const _0x85787d of _0x5b05af){_0x52a749['append']('attachments',_0x85787d);}const _0x3a0100=await fetch(API_BASE+'/tasks/'+_0x12fd2a+'/attachments',{'method':'POST','body':_0x52a749});if(!_0x3a0100['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3a0100['statusText']);return await _0x3a0100['json']();},async 'isAINameGenerationAvailable'(){try{const _0x40dcd9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x40dcd9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x40dcd9['json']();}catch(_0xa3333a){return{'available':![],'reason':_0xa3333a['message']};}},async 'generateTaskName'(_0x19ce25){try{const _0x57f323=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x19ce25})});return await _0x57f323['json']();}catch(_0xc482f4){return{'success':![],'error':_0xc482f4['message']};}},async 'createTask'(_0x4e3fdc){let _0x10263f,_0x255f4b={};if(_0x4e3fdc['files']&&_0x4e3fdc['files']['length']>0x0){const _0x3f1684=new FormData();for(const [_0x3673a6,_0xb8086e]of Object['entries'](_0x4e3fdc)){if(_0x3673a6!=='files'){if(_0xb8086e==null)continue;typeof _0xb8086e==='object'?_0x3f1684['append'](_0x3673a6,JSON['stringify'](_0xb8086e)):_0x3f1684['append'](_0x3673a6,String(_0xb8086e));}}for(const _0x51296f of _0x4e3fdc['files']){_0x3f1684['append']('attachments',_0x51296f);}_0x10263f=_0x3f1684;}else _0x255f4b['Content-Type']='application/json',_0x10263f=JSON['stringify'](_0x4e3fdc);const _0x3c912e=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x255f4b,'body':_0x10263f});if(!_0x3c912e['ok']){const _0xa87c=await _0x3c912e['json'](),_0x501eaf=new Error(_0xa87c['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3c912e['statusText']),{message:_0x231644,..._0x5854cd}=_0xa87c;Object['assign'](_0x501eaf,_0x5854cd);throw _0x501eaf;}return await _0x3c912e['json']();},async 'createTestTask'(_0x572a13){const _0x5390a1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572a13)});if(!_0x5390a1['ok']){const _0x1918cf=await _0x5390a1['json']();throw new Error(_0x1918cf['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5390a1['statusText']);}return await _0x5390a1['json']();},async 'createEphemeralTest'(_0x544742){const _0x6ddbce=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x544742)});if(!_0x6ddbce['ok']){const _0x5be8bb=await _0x6ddbce['json']();throw new Error(_0x5be8bb['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x6ddbce['statusText']);}return await _0x6ddbce['json']();},async 'createDeployTask'(_0x54c2a7){const _0xccbf4d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54c2a7)});if(!_0xccbf4d['ok']){const _0x5de944=await _0xccbf4d['json']();throw new Error(_0x5de944['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xccbf4d['statusText']);}return await _0xccbf4d['json']();},async 'getEnvironments'(){const _0x3642e9=await fetch(API_BASE+'/environments');if(!_0x3642e9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3642e9['statusText']);return await _0x3642e9['json']();},async 'getEnvironment'(_0x13d3a4){const _0x51823b=await fetch(API_BASE+'/environments/'+_0x13d3a4);if(!_0x51823b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x51823b['statusText']);return await _0x51823b['json']();},async 'getEnvironmentRepoHistory'(_0x56a836,_0x598fd3,_0x4d9816={}){if(!_0x56a836||!_0x598fd3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b6844=new URLSearchParams();if(_0x4d9816['limit'])_0x1b6844['set']('limit',String(_0x4d9816['limit']));if(_0x4d9816['offset'])_0x1b6844['set']('offset',String(_0x4d9816['offset']));if(_0x4d9816['search'])_0x1b6844['set']('search',String(_0x4d9816['search']));if(_0x4d9816['branch'])_0x1b6844['set']('branch',String(_0x4d9816['branch']));const _0x35a43d=API_BASE+'/environments/'+encodeURIComponent(_0x56a836)+'/repos/'+encodeURIComponent(_0x598fd3)+'/git/history',_0x26b58e=await fetch(''+_0x35a43d+(_0x1b6844['toString']()?'?'+_0x1b6844['toString']():''));if(!_0x26b58e['ok']){const _0x233f2a=await _0x26b58e['json']()['catch'](()=>({}));throw new Error(_0x233f2a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x26b58e['statusText']);}return await _0x26b58e['json']();},async 'getEnvironmentRepoCommit'(_0x183eed,_0x5c9455,_0x444b8c){if(!_0x183eed||!_0x5c9455||!_0x444b8c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35002f=API_BASE+'/environments/'+encodeURIComponent(_0x183eed)+'/repos/'+encodeURIComponent(_0x5c9455)+'/git/commits/'+encodeURIComponent(_0x444b8c),_0x609e14=await fetch(_0x35002f);if(!_0x609e14['ok']){const _0x31ba54=await _0x609e14['json']()['catch'](()=>({}));throw new Error(_0x31ba54['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x609e14['statusText']);}return await _0x609e14['json']();},async 'getEnvironmentRepoBranches'(_0x523550,_0x3f4d6c){if(!_0x523550||!_0x3f4d6c)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3e533f=API_BASE+'/environments/'+encodeURIComponent(_0x523550)+'/repos/'+encodeURIComponent(_0x3f4d6c)+'/git/branches',_0x17979f=await fetch(_0x3e533f);if(!_0x17979f['ok']){const _0x1d433a=await _0x17979f['json']()['catch'](()=>({}));throw new Error(_0x1d433a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x17979f['statusText']);}return await _0x17979f['json']();},async 'revertEnvironmentRepoCommit'(_0x557006,_0x5304fb,_0x45d406,_0x4be97={}){if(!_0x557006||!_0x5304fb||!_0x45d406)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5eb4a6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x557006)+'/repos/'+encodeURIComponent(_0x5304fb)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x45d406,..._0x4be97})});if(!_0x5eb4a6['ok']){const _0x723ce9=await _0x5eb4a6['json']()['catch'](()=>({}));throw new Error(_0x723ce9['message']||_0x723ce9['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5eb4a6['statusText']);}return await _0x5eb4a6['json']();},async 'getTemplates'(_0x2a9017={}){const _0x41baaf=new URLSearchParams();if(_0x2a9017['include']){const _0x159d29=Array['isArray'](_0x2a9017['include'])?_0x2a9017['include']['join'](','):String(_0x2a9017['include']);if(_0x159d29)_0x41baaf['set']('include',_0x159d29);}const _0x372a89=await fetch(API_BASE+'/templates'+(_0x41baaf['toString']()?'?'+_0x41baaf['toString']():''));if(!_0x372a89['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x372a89['statusText']);return await _0x372a89['json']();},async 'getTemplatesForEnvironment'(_0x27e41e,_0x4da9a6={}){if(!_0x27e41e)throw new Error('Environment\x20name\x20is\x20required');const _0x2612cd=new URLSearchParams();if(_0x4da9a6['include']){const _0x182b09=Array['isArray'](_0x4da9a6['include'])?_0x4da9a6['include']['join'](','):String(_0x4da9a6['include']);if(_0x182b09)_0x2612cd['set']('include',_0x182b09);}const _0x1f2b66=await fetch(API_BASE+'/templates/'+_0x27e41e+(_0x2612cd['toString']()?'?'+_0x2612cd['toString']():''));if(!_0x1f2b66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x27e41e+':\x20'+_0x1f2b66['statusText']);return await _0x1f2b66['json']();},async 'getTemplate'(_0x4ff035,_0x19eb96,_0x20caa0={}){if(!_0x4ff035||!_0x19eb96)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x443131=new URLSearchParams();if(_0x20caa0['include']){const _0x468e3b=Array['isArray'](_0x20caa0['include'])?_0x20caa0['include']['join'](','):String(_0x20caa0['include']);if(_0x468e3b)_0x443131['set']('include',_0x468e3b);}const _0x3c1f39=await fetch(API_BASE+'/templates/'+_0x4ff035+'/'+_0x19eb96+(_0x443131['toString']()?'?'+_0x443131['toString']():''));if(!_0x3c1f39['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x3c1f39['statusText']);return await _0x3c1f39['json']();},async 'getTaskLogs'(_0x3f11ee,_0x5a9e6c={}){if(!_0x3f11ee)throw new Error('Task\x20ID\x20is\x20required');const _0x38cac3=new URLSearchParams();_0x5a9e6c['tail']&&_0x38cac3['set']('tail',String(_0x5a9e6c['tail']));const _0x23be6b=await fetch(API_BASE+'/tasks/'+_0x3f11ee+'/logs'+(_0x38cac3['toString']()?'?'+_0x38cac3['toString']():''));if(!_0x23be6b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x23be6b['statusText']);return await _0x23be6b['text']();},async 'getContainers'(){const _0xa50f22=await fetch(API_BASE+'/containers');if(!_0xa50f22['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa50f22['statusText']);return await _0xa50f22['json']();},async 'getContainer'(_0x4d7ac5){const _0x20f975=await fetch(API_BASE+'/containers/'+_0x4d7ac5);if(!_0x20f975['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x20f975['statusText']);return await _0x20f975['json']();},async 'startInteractiveContainer'(_0x2783b1){const _0x1826ab=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2783b1)});if(!_0x1826ab['ok']){const _0x1704b7=await _0x1826ab['json']()['catch'](()=>({}));throw new Error(_0x1704b7['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1826ab['statusText']);}return await _0x1826ab['json']();},async 'stopContainer'(_0x4252ae){const _0x315caa=await fetch(API_BASE+'/containers/'+_0x4252ae,{'method':'DELETE'});if(!_0x315caa['ok']){const _0x3d6cb1=await _0x315caa['json']()['catch'](()=>({}));throw new Error(_0x3d6cb1['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x315caa['statusText']);}return await _0x315caa['json']();},async 'stopTask'(_0x1504ea){if(!_0x1504ea)throw new Error('Task\x20ID\x20is\x20required');const _0x10b51c=await fetch(API_BASE+'/tasks/'+_0x1504ea+'/stop',{'method':'POST'});if(!_0x10b51c['ok']){const _0x255a3d=await _0x10b51c['json']()['catch'](()=>({}));throw new Error(_0x255a3d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x10b51c['statusText']);}return await _0x10b51c['json']();},async 'interruptTask'(_0x3d1a96){if(!_0x3d1a96)throw new Error('Task\x20ID\x20is\x20required');const _0x711d88=await fetch(API_BASE+'/tasks/'+_0x3d1a96+'/interrupt',{'method':'POST'});if(!_0x711d88['ok']){const _0x11e92f=await _0x711d88['json']()['catch'](()=>({}));throw new Error(_0x11e92f['error']||_0x11e92f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x711d88['statusText']);}return await _0x711d88['json']();},async 'startTask'(_0x476f73){if(!_0x476f73)throw new Error('Task\x20ID\x20is\x20required');const _0x468e65=await fetch(API_BASE+'/tasks/'+_0x476f73+'/start',{'method':'POST'});if(!_0x468e65['ok']){const _0x1c98ba=await _0x468e65['json']()['catch'](()=>({}));throw new Error(_0x1c98ba['error']||'Failed\x20to\x20start\x20task:\x20'+_0x468e65['statusText']);}return await _0x468e65['json']();},async 'deleteTask'(_0xbf10f8){if(!_0xbf10f8)throw new Error('Task\x20ID\x20is\x20required');const _0x33e721=await fetch(API_BASE+'/tasks/'+_0xbf10f8,{'method':'DELETE'});if(!_0x33e721['ok']){const _0x4a9a93=await _0x33e721['json']()['catch'](()=>({}));throw new Error(_0x4a9a93['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33e721['statusText']);}return await _0x33e721['json']();},async 'refreshTasksFromDisk'(){const _0x1b24e1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b24e1['ok']){const _0x57b47a=await _0x1b24e1['json']()['catch'](()=>({}));throw new Error(_0x57b47a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b24e1['statusText']);}return await _0x1b24e1['json']();},async 'approveTask'(_0x3fdea7,_0x4c95e1={}){if(!_0x3fdea7)throw new Error('Task\x20ID\x20is\x20required');const _0x1a6dab={'commit_message':_0x4c95e1['commit_message']||'','pull':_0x4c95e1['pull']??![],'push':_0x4c95e1['push']??![]};_0x4c95e1['new_branch']&&(_0x1a6dab['new_branch']=_0x4c95e1['new_branch']);const _0xf74ab5=await fetch(API_BASE+'/tasks/'+_0x3fdea7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a6dab)});if(!_0xf74ab5['ok']){const _0x5da999=await _0xf74ab5['json']()['catch'](()=>({}));let _0x49e69d=_0x5da999['error']||_0x5da999['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xf74ab5['statusText'];if(_0x5da999['results']&&Array['isArray'](_0x5da999['results'])){const _0x41f2da=_0x5da999['results']['filter'](_0x3e14b2=>!_0x3e14b2['success']&&_0x3e14b2['error']);_0x41f2da['length']>0x0&&(_0x49e69d=_0x41f2da[0x0]['error']);}throw new Error(_0x49e69d);}return await _0xf74ab5['json']();},async 'getPullRequestInfo'(_0x297202){if(!_0x297202)throw new Error('Task\x20ID\x20is\x20required');const _0x25b29e=await fetch(API_BASE+'/tasks/'+_0x297202+'/pull-request-info');if(!_0x25b29e['ok']){const _0x533846=await _0x25b29e['json']()['catch'](()=>({}));throw new Error(_0x533846['error']||_0x533846['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x25b29e['statusText']);}return await _0x25b29e['json']();},async 'createPullRequests'(_0x4e8ea2,_0x331814){if(!_0x4e8ea2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x331814||!Array['isArray'](_0x331814))throw new Error('repos\x20array\x20is\x20required');const _0x5ad418=await fetch(API_BASE+'/tasks/'+_0x4e8ea2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x331814})});if(!_0x5ad418['ok']){const _0x5910fd=await _0x5ad418['json']()['catch'](()=>({}));let _0x235cf9=_0x5910fd['error']||_0x5910fd['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5ad418['statusText'];if(_0x5910fd['results']&&Array['isArray'](_0x5910fd['results'])){const _0x2a99ff=_0x5910fd['results']['filter'](_0x45dbdb=>!_0x45dbdb['success']&&_0x45dbdb['error']);_0x2a99ff['length']>0x0&&(_0x235cf9=_0x2a99ff[0x0]['error']);}throw new Error(_0x235cf9);}return await _0x5ad418['json']();},async 'syncRepos'(_0x30956d){if(!_0x30956d)throw new Error('Task\x20ID\x20is\x20required');const _0x525597=await fetch(API_BASE+'/tasks/'+_0x30956d+'/sync-repos',{'method':'POST'});if(!_0x525597['ok']){const _0x2adc2a=await _0x525597['json']()['catch'](()=>({}));throw new Error(_0x2adc2a['error']||_0x2adc2a['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x525597['statusText']);}return await _0x525597['json']();},async 'getIbmiSyncInfo'(_0x5c9fdb){if(!_0x5c9fdb)throw new Error('Task\x20ID\x20is\x20required');const _0x5a0d70=await fetch(API_BASE+'/tasks/'+_0x5c9fdb+'/ibmi-sync-info');if(!_0x5a0d70['ok']){const _0xa48dec=await _0x5a0d70['json']()['catch'](()=>({}));throw new Error(_0xa48dec['error']||_0xa48dec['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5a0d70['json']();},async 'getSyncFiles'(_0x2d295f){if(!_0x2d295f)throw new Error('Task\x20ID\x20is\x20required');const _0x1b5225=await fetch(API_BASE+'/tasks/'+_0x2d295f+'/sync-to-ibmi/files');if(!_0x1b5225['ok']){const _0x33e7ca=await _0x1b5225['json']()['catch'](()=>({}));throw new Error(_0x33e7ca['error']||_0x33e7ca['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1b5225['json']();},async 'syncToIbmi'(_0x1f636c,_0x2d8847,_0xb72997=null,_0xb6b3c9=null,_0x152308=null){if(!_0x1f636c)throw new Error('Task\x20ID\x20is\x20required');const _0x21ab79={'library':_0x2d8847};if(_0xb72997)_0x21ab79['user']=_0xb72997;if(_0xb6b3c9)_0x21ab79['password']=_0xb6b3c9;if(_0x152308)_0x21ab79['files']=_0x152308;const _0x19e207=await fetch(API_BASE+'/tasks/'+_0x1f636c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ab79)});if(!_0x19e207['ok']){const _0x540104=await _0x19e207['json']()['catch'](()=>({}));throw new Error(_0x540104['error']||_0x540104['message']||'Sync\x20failed');}return await _0x19e207['json']();},async 'getIbmiSyncLog'(_0x54cc5a){if(!_0x54cc5a)throw new Error('Task\x20ID\x20is\x20required');const _0x224a1c=await fetch(API_BASE+'/tasks/'+_0x54cc5a+'/ibmi-sync-log');if(!_0x224a1c['ok']){const _0x4d86c0=await _0x224a1c['json']()['catch'](()=>({}));throw new Error(_0x4d86c0['error']||_0x4d86c0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x224a1c['json']();},async 'pullChanges'(_0x51d8fa){if(!_0x51d8fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5517d7=await fetch(API_BASE+'/tasks/'+_0x51d8fa+'/pull-changes',{'method':'POST'});if(!_0x5517d7['ok']){const _0x531bb5=await _0x5517d7['json']()['catch'](()=>({}));throw new Error(_0x531bb5['error']||_0x531bb5['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5517d7['statusText']);}return await _0x5517d7['json']();},async 'readFile'(_0x21a92c,_0x4ac747){if(!_0x21a92c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ac747)throw new Error('File\x20path\x20is\x20required');const _0x3007a1=await fetch(API_BASE+'/tasks/'+_0x21a92c+'/files?path='+encodeURIComponent(_0x4ac747));if(!_0x3007a1['ok']){const _0x2e9a26=await _0x3007a1['json']()['catch'](()=>({}));throw new Error(_0x2e9a26['error']||_0x2e9a26['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3007a1['statusText']);}return await _0x3007a1['json']();},'getTaskFileDownloadUrl'(_0x485211,_0x4a53a5){if(!_0x485211)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4a53a5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x485211+'/files/download?path='+encodeURIComponent(_0x4a53a5);},async 'writeFile'(_0x1ab033,_0x106a99,_0xaa35b6){if(!_0x1ab033)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106a99)throw new Error('File\x20path\x20is\x20required');if(_0xaa35b6===undefined)throw new Error('Content\x20is\x20required');const _0x48cde3=await fetch(API_BASE+'/tasks/'+_0x1ab033+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x106a99,'content':_0xaa35b6})});if(!_0x48cde3['ok']){const _0x5815b7=await _0x48cde3['json']()['catch'](()=>({}));throw new Error(_0x5815b7['error']||_0x5815b7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x48cde3['statusText']);}return await _0x48cde3['json']();},async 'uploadTaskFiles'(_0x2bb558,_0x6d0079,_0x52c9a8){if(!_0x2bb558)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d0079)throw new Error('Target\x20directory\x20is\x20required');if(!_0x52c9a8||_0x52c9a8['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52eb48=new FormData();_0x52eb48['append']('targetDir',_0x6d0079);for(const _0x5a2986 of _0x52c9a8){_0x52eb48['append']('files',_0x5a2986,_0x5a2986['name']);}const _0x2027c1=await fetch(API_BASE+'/tasks/'+_0x2bb558+'/files/upload',{'method':'POST','body':_0x52eb48});if(!_0x2027c1['ok']){const _0x54939c=await _0x2027c1['json']()['catch'](()=>({}));throw new Error(_0x54939c['error']||_0x54939c['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2027c1['statusText']);}return await _0x2027c1['json']();},async 'createDirectory'(_0x37b51e,_0x4104e6){if(!_0x37b51e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4104e6)throw new Error('Directory\x20path\x20is\x20required');const _0x23a7c4=await fetch(API_BASE+'/tasks/'+_0x37b51e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4104e6})});if(!_0x23a7c4['ok']){const _0x3602d6=await _0x23a7c4['json']()['catch'](()=>({}));throw new Error(_0x3602d6['error']||_0x3602d6['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x23a7c4['statusText']);}return await _0x23a7c4['json']();},async 'renamePath'(_0xcc5aa4,_0x2f03b6,_0x5edded){if(!_0xcc5aa4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f03b6)throw new Error('Source\x20path\x20is\x20required');if(!_0x5edded)throw new Error('Destination\x20path\x20is\x20required');const _0x4c50b8=await fetch(API_BASE+'/tasks/'+_0xcc5aa4+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2f03b6,'newPath':_0x5edded})});if(!_0x4c50b8['ok']){const _0x10984f=await _0x4c50b8['json']()['catch'](()=>({}));throw new Error(_0x10984f['error']||_0x10984f['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x4c50b8['statusText']);}return await _0x4c50b8['json']();},async 'deleteFile'(_0x48fa9f,_0x106b13){if(!_0x48fa9f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106b13)throw new Error('File\x20path\x20is\x20required');const _0x1a8ab1=await fetch(API_BASE+'/tasks/'+_0x48fa9f+'/files?path='+encodeURIComponent(_0x106b13),{'method':'DELETE'});if(!_0x1a8ab1['ok']){const _0x28c8be=await _0x1a8ab1['json']()['catch'](()=>({}));throw new Error(_0x28c8be['error']||_0x28c8be['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1a8ab1['statusText']);}return await _0x1a8ab1['json']();},async 'deleteDirectory'(_0x5e7f29,_0x44f19e){if(!_0x5e7f29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44f19e)throw new Error('Directory\x20path\x20is\x20required');const _0x258719=await fetch(API_BASE+'/tasks/'+_0x5e7f29+'/files/directory?path='+encodeURIComponent(_0x44f19e),{'method':'DELETE'});if(!_0x258719['ok']){const _0x3787c4=await _0x258719['json']()['catch'](()=>({}));throw new Error(_0x3787c4['error']||_0x3787c4['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x258719['statusText']);}return await _0x258719['json']();},async 'discardFile'(_0x3704a3,_0x3176f3,_0x225b6a){if(!_0x3704a3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3176f3)throw new Error('File\x20path\x20is\x20required');if(!_0x225b6a)throw new Error('Repository\x20path\x20is\x20required');const _0x4db01d=await fetch(API_BASE+'/tasks/'+_0x3704a3+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3176f3,'repoPath':_0x225b6a})});if(!_0x4db01d['ok']){const _0x13c1e9=await _0x4db01d['json']()['catch'](()=>({}));throw new Error(_0x13c1e9['error']||_0x13c1e9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4db01d['statusText']);}return await _0x4db01d['json']();},async 'followUpTask'(_0x3c3e06,_0x5335f5={}){if(!_0x3c3e06)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5335f5['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x4aed42,_0x4dde62={};if(_0x5335f5['files']&&_0x5335f5['files']['length']>0x0){const _0x3d5818=new FormData();_0x3d5818['append']('instructions',_0x5335f5['instructions']);for(const _0x1c8b83 of _0x5335f5['files']){_0x3d5818['append']('attachments',_0x1c8b83);}_0x4aed42=_0x3d5818;}else _0x4dde62['Content-Type']='application/json',_0x4aed42=JSON['stringify']({'instructions':_0x5335f5['instructions']});const _0x16fc2e=await fetch(API_BASE+'/tasks/'+_0x3c3e06+'/follow-up',{'method':'POST','headers':_0x4dde62,'body':_0x4aed42});if(!_0x16fc2e['ok']){const _0x20918c=await _0x16fc2e['json']()['catch'](()=>({}));throw new Error(_0x20918c['error']||_0x20918c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x16fc2e['statusText']);}return await _0x16fc2e['json']();},async 'getTaskRewindPoints'(_0x4ce594){if(!_0x4ce594)throw new Error('Task\x20ID\x20is\x20required');const _0x4c1b43=await fetch(API_BASE+'/tasks/'+_0x4ce594+'/rewind-points');if(!_0x4c1b43['ok']){const _0x1a9ffe=await _0x4c1b43['json']()['catch'](()=>({}));throw new Error(_0x1a9ffe['error']||_0x1a9ffe['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4c1b43['statusText']);}return await _0x4c1b43['json']();},async 'rewindTask'(_0x26eebf,_0x3dd7cc={}){if(!_0x26eebf)throw new Error('Task\x20ID\x20is\x20required');const _0x2ef09d=Number['isInteger'](_0x3dd7cc['targetFollowUpCount'])?_0x3dd7cc['targetFollowUpCount']:0x0,_0xccca9d={'targetFollowUpCount':_0x2ef09d};typeof _0x3dd7cc['instructions']==='string'&&_0x3dd7cc['instructions']['trim']()&&(_0xccca9d['instructions']=_0x3dd7cc['instructions']['trim']());typeof _0x3dd7cc['rewindFiles']==='boolean'&&(_0xccca9d['rewindFiles']=_0x3dd7cc['rewindFiles']);const _0x10c00c=await fetch(API_BASE+'/tasks/'+_0x26eebf+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xccca9d)});if(!_0x10c00c['ok']){const _0x47f1cc=await _0x10c00c['json']()['catch'](()=>({}));throw new Error(_0x47f1cc['error']||_0x47f1cc['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x10c00c['statusText']);}return await _0x10c00c['json']();},async 'login'(_0x1fa377,_0x4c2265){const _0x5d25f6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1fa377,'password':_0x4c2265})});if(!_0x5d25f6['ok']){const _0x3c5463=await _0x5d25f6['json']();throw new Error(_0x3c5463['message']||'Login\x20failed');}return await _0x5d25f6['json']();},async 'logout'(){const _0x5afba8=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5afba8['ok']){const _0x82d051=await _0x5afba8['json']();throw new Error(_0x82d051['message']||'Logout\x20failed');}return await _0x5afba8['json']();},async 'getCurrentUser'(){const _0x36c891=await fetch(API_BASE+'/auth/me');if(!_0x36c891['ok'])throw new Error('Not\x20authenticated');const _0x1d391c=await _0x36c891['json']();return _0x1d391c['user'];},async 'getRolesInfo'(){const _0x2b63d7=await fetch(API_BASE+'/users/roles');if(!_0x2b63d7['ok']){const _0x2d4d17=await _0x2b63d7['json']();throw new Error(_0x2d4d17['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2b63d7['json']();},async 'getUsers'(){const _0x45a610=await fetch(API_BASE+'/users');if(!_0x45a610['ok']){const _0x7a2890=await _0x45a610['json']();throw new Error(_0x7a2890['message']||'Failed\x20to\x20get\x20users');}return await _0x45a610['json']();},async 'getUser'(_0x3b4021){const _0x55436f=await fetch(API_BASE+'/users/'+_0x3b4021);if(!_0x55436f['ok']){const _0x3756c8=await _0x55436f['json']();throw new Error(_0x3756c8['message']||'Failed\x20to\x20get\x20user');}return await _0x55436f['json']();},async 'createUser'(_0x22a654){const _0x321c19=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22a654)});if(!_0x321c19['ok']){const _0x3fa49c=await _0x321c19['json']();throw new Error(_0x3fa49c['message']||'Failed\x20to\x20create\x20user');}return await _0x321c19['json']();},async 'updateUser'(_0x5b8b7a,_0x3794a3){const _0x5ca934=await fetch(API_BASE+'/users/'+_0x5b8b7a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3794a3)});if(!_0x5ca934['ok']){const _0x1dbd2b=await _0x5ca934['json']();throw new Error(_0x1dbd2b['message']||'Failed\x20to\x20update\x20user');}return await _0x5ca934['json']();},async 'deleteUser'(_0x47ee0e){const _0x56a991=await fetch(API_BASE+'/users/'+_0x47ee0e,{'method':'DELETE'});if(!_0x56a991['ok']){const _0x11b7ef=await _0x56a991['json']();throw new Error(_0x11b7ef['message']||'Failed\x20to\x20delete\x20user');}return await _0x56a991['json']();},async 'stopAllContainers'(){const _0x3cd357=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x361e27=await _0x3cd357['json']()['catch'](()=>({}));if(!_0x3cd357['ok'])throw new Error(_0x361e27['message']||_0x361e27['error']||'Failed\x20to\x20stop\x20containers');return _0x361e27;},async 'removeStoppedContainers'(){const _0x3140d6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5ecdde=await _0x3140d6['json']()['catch'](()=>({}));if(!_0x3140d6['ok'])throw new Error(_0x5ecdde['message']||_0x5ecdde['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5ecdde;},async 'pruneDockerResources'(){const _0x1354ef=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x594a58=await _0x1354ef['json']()['catch'](()=>({}));if(!_0x1354ef['ok'])throw new Error(_0x594a58['message']||_0x594a58['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x594a58;},async 'createPasswordToken'(_0x4ce690,_0x139e2f='setup',_0x44cb48=![]){const _0x2ec2d3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ce690,'type':_0x139e2f,'sendEmail':_0x44cb48})});if(!_0x2ec2d3['ok']){const _0x24c170=await _0x2ec2d3['json']();throw new Error(_0x24c170['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2ec2d3['json']();},async 'getEmailConfig'(){const _0x50176e=await fetch(API_BASE+'/password/email-config');if(!_0x50176e['ok']){const _0x216da3=await _0x50176e['json']();throw new Error(_0x216da3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x50176e['json']();},async 'updateTaskName'(_0x438ab6,_0x9269f8){const _0x5a9829=await fetch(API_BASE+'/tasks/'+_0x438ab6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x9269f8})});if(!_0x5a9829['ok']){const _0x45ffcf=await _0x5a9829['json']();throw new Error(_0x45ffcf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a9829['json']();},async 'pinTask'(_0x583770,_0x371272,_0xdfe2d3=null){if(!_0x583770)throw new Error('Task\x20ID\x20is\x20required');const _0x389f84={'pinned':_0x371272};_0xdfe2d3&&_0xdfe2d3['length']>0x0&&(_0x389f84['additionalTaskIds']=_0xdfe2d3);const _0x2a5425=await fetch(API_BASE+'/tasks/'+_0x583770+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x389f84)});if(!_0x2a5425['ok']){const _0x5c958f=await _0x2a5425['json']();throw new Error(_0x5c958f['error']||'Failed\x20to\x20pin\x20task');}return await _0x2a5425['json']();},async 'setTaskWinner'(_0x18e9ab,_0x357acc,_0x5b7ae5=[]){if(!_0x18e9ab)throw new Error('Task\x20ID\x20is\x20required');const _0x44f8fe=await fetch(API_BASE+'/tasks/'+_0x18e9ab+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x357acc,'siblings':_0x5b7ae5})});if(!_0x44f8fe['ok']){const _0x41ade8=await _0x44f8fe['json']();throw new Error(_0x41ade8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x44f8fe['json']();},async 'setTaskLoser'(_0x18a498,_0x3ddfb3){if(!_0x18a498)throw new Error('Task\x20ID\x20is\x20required');const _0xac9085=await fetch(API_BASE+'/tasks/'+_0x18a498+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3ddfb3})});if(!_0xac9085['ok']){const _0x5c20c3=await _0xac9085['json']();throw new Error(_0x5c20c3['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0xac9085['json']();},async 'createTaskGroup'(_0x3c14b5){const _0x4975d0=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c14b5)});if(!_0x4975d0['ok']){const _0x437e1c=await _0x4975d0['json']();throw new Error(_0x437e1c['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4975d0['json']();},async 'getTaskGroups'(_0x4aeee5={}){const _0x53618f=new URLSearchParams();if(_0x4aeee5['userId'])_0x53618f['set']('userId',String(_0x4aeee5['userId']));if(_0x4aeee5['status'])_0x53618f['set']('status',String(_0x4aeee5['status']));if(_0x4aeee5['limit'])_0x53618f['set']('limit',String(_0x4aeee5['limit']));const _0x394ae2=API_BASE+'/tasks/groups'+(_0x53618f['toString']()?'?'+_0x53618f['toString']():''),_0x13633e=await fetch(_0x394ae2);if(!_0x13633e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x13633e['json']();},async 'getTaskGroup'(_0x55782b){const _0x4ec24c=await fetch(API_BASE+'/tasks/groups/'+_0x55782b);if(!_0x4ec24c['ok']){const _0x2dd67b=await _0x4ec24c['json']();throw new Error(_0x2dd67b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4ec24c['json']();},async 'updateTaskGroup'(_0x3a4828,_0xe5be75,_0x487e49){const _0x3cc652=await fetch(API_BASE+'/tasks/'+_0x3a4828+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe5be75,'groupIndex':_0x487e49})});if(!_0x3cc652['ok']){const _0x446939=await _0x3cc652['json']();throw new Error(_0x446939['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3cc652['json']();},async 'removeTaskFromGroup'(_0x127c03){return this['updateTaskGroup'](_0x127c03,null,null);},async 'deleteTaskGroup'(_0x5a5e61,_0x503b47=![]){const _0x52eba5=_0x503b47?'?deleteTasks=true':'',_0x550fb4=await fetch(API_BASE+'/tasks/groups/'+_0x5a5e61+_0x52eba5,{'method':'DELETE'});if(!_0x550fb4['ok']){const _0x198d66=await _0x550fb4['json']();throw new Error(_0x198d66['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x128a76,_0x331e52){const _0x3ae109=await fetch(API_BASE+'/tasks/groups/'+_0x128a76+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x331e52})});if(!_0x3ae109['ok']){const _0x47e322=await _0x3ae109['json']();throw new Error(_0x47e322['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ae109['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a49f9){if(!_0x5a49f9)throw new Error('Task\x20ID\x20is\x20required');const _0x905a0=await fetch(API_BASE+'/tasks/'+_0x5a49f9+'/comments');if(!_0x905a0['ok']){const _0x55a3ab=await _0x905a0['json']()['catch'](()=>({}));throw new Error(_0x55a3ab['error']||'Failed\x20to\x20get\x20comments');}return await _0x905a0['json']();},async 'addComment'(_0x4ca22f,_0x3656b5){if(!_0x4ca22f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3656b5)throw new Error('Comment\x20content\x20is\x20required');const _0x3205c1=await fetch(API_BASE+'/tasks/'+_0x4ca22f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3656b5})});if(!_0x3205c1['ok']){const _0x5425c9=await _0x3205c1['json']()['catch'](()=>({}));throw new Error(_0x5425c9['error']||'Failed\x20to\x20add\x20comment');}return await _0x3205c1['json']();},async 'updateComment'(_0x2b7300,_0x26e732,_0x1f1fd5){if(!_0x2b7300)throw new Error('Task\x20ID\x20is\x20required');if(!_0x26e732)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1fd5)throw new Error('Comment\x20content\x20is\x20required');const _0x38687a=await fetch(API_BASE+'/tasks/'+_0x2b7300+'/comments/'+_0x26e732,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1fd5})});if(!_0x38687a['ok']){const _0xf270c2=await _0x38687a['json']()['catch'](()=>({}));throw new Error(_0xf270c2['error']||'Failed\x20to\x20update\x20comment');}return await _0x38687a['json']();},async 'deleteComment'(_0x2695bd,_0x6e36f){if(!_0x2695bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6e36f)throw new Error('Comment\x20ID\x20is\x20required');const _0x2929a=await fetch(API_BASE+'/tasks/'+_0x2695bd+'/comments/'+_0x6e36f,{'method':'DELETE'});if(!_0x2929a['ok']){const _0x5c3235=await _0x2929a['json']()['catch'](()=>({}));throw new Error(_0x5c3235['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2929a['json']();},async 'createObjective'(_0x3eb3d3){const _0x4ceb25={'objective':!![],'name':_0x3eb3d3['name']||'','environment':_0x3eb3d3['environment']||null,'agents':_0x3eb3d3['agents']||[],'branches':_0x3eb3d3['branches']||{},'isPinned':_0x3eb3d3['isPinned']||![],'parentObjectiveId':_0x3eb3d3['parentObjectiveId']||null,'env_vars':_0x3eb3d3['envVars']||{},'parameters':{'instructions':_0x3eb3d3['instructions']||''},'files':_0x3eb3d3['files']||[],'jira':_0x3eb3d3['jira']||null};return this['createTask'](_0x4ceb25);},async 'updateObjective'(_0x48a2af,_0x181c86,_0x2ddbd1=[],_0x1fd84c=[]){let _0x10b776,_0x1442d7={};const _0x171cfa={..._0x181c86};_0x1fd84c&&_0x1fd84c['length']>0x0&&(_0x171cfa['removeAttachments']=_0x1fd84c);if(_0x2ddbd1&&_0x2ddbd1['length']>0x0){const _0x1e6e49=new FormData();for(const [_0x410035,_0x22ca64]of Object['entries'](_0x171cfa)){if(_0x22ca64==null)continue;typeof _0x22ca64==='object'?_0x1e6e49['append'](_0x410035,JSON['stringify'](_0x22ca64)):_0x1e6e49['append'](_0x410035,String(_0x22ca64));}for(const _0x1ffee3 of _0x2ddbd1){_0x1e6e49['append']('attachments',_0x1ffee3);}_0x10b776=_0x1e6e49;}else _0x1442d7['Content-Type']='application/json',_0x10b776=JSON['stringify'](_0x171cfa);const _0x1f37b3=await fetch(API_BASE+'/tasks/'+_0x48a2af,{'method':'PATCH','headers':_0x1442d7,'body':_0x10b776});if(!_0x1f37b3['ok']){const _0x430a23=await _0x1f37b3['json']();throw new Error(_0x430a23['error']||'Failed\x20to\x20update\x20objective');}return await _0x1f37b3['json']();},async 'deleteObjective'(_0x4f0e36){return this['deleteTask'](_0x4f0e36);},async 'launchObjective'(_0x478978,_0x2dc8e4={}){const _0x922a6a=await fetch(API_BASE+'/tasks/'+_0x478978+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc8e4)});if(!_0x922a6a['ok']){const _0x248587=await _0x922a6a['json']();throw new Error(_0x248587['error']||'Failed\x20to\x20launch\x20objective');}return await _0x922a6a['json']();},async 'getObjectiveAttachments'(_0x644d58){return this['getTaskAttachments'](_0x644d58);},async 'createJudgeTask'({environment:_0x1cbc46,judgeAgent:_0x393e5b,groupId:_0x12588e,taskIds:_0x2d99ab,judgeCustomInstructions:_0x1bfee7,isPinned:_0x2d279c}){const _0x58270f=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1cbc46,'judgeAgent':_0x393e5b,'groupId':_0x12588e,'taskIds':_0x2d99ab,'judgeCustomInstructions':_0x1bfee7,'isPinned':_0x2d279c})});if(!_0x58270f['ok']){const _0x45a0ba=await _0x58270f['json']();throw new Error(_0x45a0ba['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x58270f['json']();},async 'getJudgeTasks'(_0x187b27){const _0x4ca6d5=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x187b27));if(!_0x4ca6d5['ok']){const _0x197ab6=await _0x4ca6d5['json']();throw new Error(_0x197ab6['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4ca6d5['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x15a39e,_0x2a1fcf,_0x3a7fb7=''){const _0x239e4e=await fetch(API_BASE+'/tasks/'+_0x15a39e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2a1fcf,'customPreamble':_0x3a7fb7})});if(!_0x239e4e['ok']){const _0x2aa29a=await _0x239e4e['json']();throw new Error(_0x2aa29a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x239e4e['json']();},async 'getJiraConfig'(){const _0x5137c1=await fetch(API_BASE+'/jira/config');if(!_0x5137c1['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5137c1['json']();},async 'getJiraIssue'(_0x3e0454){const _0x4d9533=await fetch(API_BASE+'/jira/issues/'+_0x3e0454);if(!_0x4d9533['ok']){const _0x436580=await _0x4d9533['json']()['catch'](()=>({}));throw new Error(_0x436580['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4d9533['statusText']);}return await _0x4d9533['json']();},async 'searchJiraIssues'(_0x13f125,_0x512b95=0x14){const _0x11ae82=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x13f125,'maxResults':_0x512b95})});if(!_0x11ae82['ok']){const _0x5e56ad=await _0x11ae82['json']()['catch'](()=>({}));throw new Error(_0x5e56ad['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x11ae82['statusText']);}return await _0x11ae82['json']();},async 'postJiraComment'(_0x51ae79,_0x4fc474){const _0x4a10ba=await fetch(API_BASE+'/jira/issues/'+_0x51ae79+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4fc474})});if(!_0x4a10ba['ok']){const _0x380b8b=await _0x4a10ba['json']()['catch'](()=>({}));throw new Error(_0x380b8b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4a10ba['statusText']);}return await _0x4a10ba['json']();},async 'getJiraComments'(_0x154dbe){const _0x5b757c=await fetch(API_BASE+'/jira/issues/'+_0x154dbe+'/comments');if(!_0x5b757c['ok']){const _0x1b5624=await _0x5b757c['json']()['catch'](()=>({}));throw new Error(_0x1b5624['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5b757c['statusText']);}return await _0x5b757c['json']();},async 'promptParameter'({environment:_0x11da74,command:_0x277c5f,parser:parser='json'}){const _0x4e8569=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x11da74,'command':_0x277c5f,'parser':parser})});if(!_0x4e8569['ok']){const _0x184969=await _0x4e8569['json']()['catch'](()=>({}));throw new Error(_0x184969['message']||_0x184969['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4e8569['statusText']);}return await _0x4e8569['json']();},async 'promptParameterStream'(_0xa48139,_0x2d615f){const _0x42fbb8=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa48139)});if(!_0x42fbb8['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x42fbb8['statusText']);const _0x2f0d6e=_0x42fbb8['body']['getReader'](),_0x46ec9b=new TextDecoder();let _0xb35547='';return new Promise((_0x29762a,_0x2abae0)=>{const _0x5a0670=async()=>{try{const {done:_0x2f38e3,value:_0x2988a8}=await _0x2f0d6e['read']();if(_0x2f38e3)return;_0xb35547+=_0x46ec9b['decode'](_0x2988a8,{'stream':!![]});const _0x2eca4c=_0xb35547['split']('\x0a\x0a');_0xb35547=_0x2eca4c['pop']()||'';for(const _0xe70b97 of _0x2eca4c){if(!_0xe70b97['trim']())continue;const _0x2eb6ff=_0xe70b97['split']('\x0a');let _0x559d27='message',_0x2138c2='';for(const _0x1fe3b3 of _0x2eb6ff){if(_0x1fe3b3['startsWith']('event:'))_0x559d27=_0x1fe3b3['substring'](0x6)['trim']();else _0x1fe3b3['startsWith']('data:')&&(_0x2138c2=_0x1fe3b3['substring'](0x5)['trim']());}if(!_0x2138c2)continue;try{const _0x5182ea=JSON['parse'](_0x2138c2);if(_0x559d27==='progress'&&_0x2d615f)_0x2d615f(_0x5182ea['stage'],_0x5182ea['message']);else{if(_0x559d27==='result'){_0x29762a(_0x5182ea);return;}else{if(_0x559d27==='error'){let _0x46bf8f=_0x5182ea['message']||_0x5182ea['error']||'Prompt\x20command\x20failed';_0x5182ea['rawOutput']&&(_0x46bf8f+='\x0a\x0aRaw\x20output:\x0a'+_0x5182ea['rawOutput']);_0x2abae0(new Error(_0x46bf8f));return;}}}}catch(_0xb74d99){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0xb74d99),console['error']('Event\x20type:',_0x559d27),console['error']('Event\x20data:',_0x2138c2),console['error']('First\x20200\x20chars:',_0x2138c2['substring'](0x0,0xc8)),_0x2abae0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0xb74d99['message']+'\x0a\x0aData:\x20'+_0x2138c2['substring'](0x0,0x1f4)));return;}}_0x5a0670();}catch(_0x36faae){_0x2abae0(_0x36faae);}};_0x5a0670();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2b8e3c){const _0x2bbd76=await fetch(''+API_BASE+_0x2b8e3c);if(!_0x2bbd76['ok']){const _0x579a78=await _0x2bbd76['json']()['catch'](()=>({'error':_0x2bbd76['statusText']})),_0x10e405=new Error(_0x579a78['error']||_0x579a78['message']||_0x2bbd76['statusText']);if(_0x579a78['detail']!==undefined)_0x10e405['detail']=_0x579a78['detail'];throw _0x10e405;}return await _0x2bbd76['json']();},async 'post'(_0x30100c,_0x792112){const _0x82cb0f=await fetch(''+API_BASE+_0x30100c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x792112)});if(!_0x82cb0f['ok']){const _0xf7d260=await _0x82cb0f['json']()['catch'](()=>({'error':_0x82cb0f['statusText']})),_0x106d30=new Error(_0xf7d260['error']||_0xf7d260['message']||_0x82cb0f['statusText']);if(_0xf7d260['detail']!==undefined)_0x106d30['detail']=_0xf7d260['detail'];throw _0x106d30;}return await _0x82cb0f['json']();},async 'put'(_0x503fbf,_0x368b12){const _0x18a1b5=await fetch(''+API_BASE+_0x503fbf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x368b12)});if(!_0x18a1b5['ok']){const _0x3e7aea=await _0x18a1b5['json']()['catch'](()=>({'error':_0x18a1b5['statusText']})),_0x26a42d=new Error(_0x3e7aea['error']||_0x3e7aea['message']||_0x18a1b5['statusText']);if(_0x3e7aea['detail']!==undefined)_0x26a42d['detail']=_0x3e7aea['detail'];throw _0x26a42d;}return await _0x18a1b5['json']();},async 'delete'(_0x28a398,_0x59d4d7){const _0x15d34b={'method':'DELETE'};_0x59d4d7&&(_0x15d34b['headers']={'Content-Type':'application/json'},_0x15d34b['body']=JSON['stringify'](_0x59d4d7));const _0x2f402e=await fetch(''+API_BASE+_0x28a398,_0x15d34b);if(!_0x2f402e['ok']){const _0x29a690=await _0x2f402e['json']()['catch'](()=>({'error':_0x2f402e['statusText']})),_0x294920=new Error(_0x29a690['error']||_0x29a690['message']||_0x2f402e['statusText']);if(_0x29a690['detail']!==undefined)_0x294920['detail']=_0x29a690['detail'];throw _0x294920;}return await _0x2f402e['json']();},async 'getSkills'(){const _0x46c298=await fetch(API_BASE+'/skills');if(!_0x46c298['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x46c298['statusText']);return await _0x46c298['json']();},async 'getSkill'(_0x3bbd54){const _0x55569b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3bbd54));if(!_0x55569b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x55569b['statusText']);return await _0x55569b['json']();},async 'createSkill'(_0x4cdadc){const _0x149328=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdadc)});if(!_0x149328['ok']){const _0x11541d=await _0x149328['json']()['catch'](()=>({'error':_0x149328['statusText']})),_0x12e6f9=new Error(_0x11541d['error']||_0x11541d['message']||_0x149328['statusText']);if(_0x11541d['detail']!==undefined)_0x12e6f9['detail']=_0x11541d['detail'];throw _0x12e6f9;}return await _0x149328['json']();},async 'updateSkill'(_0x4b072,_0x179b7e){const _0x280390=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b072),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x179b7e)});if(!_0x280390['ok']){const _0x1c350b=await _0x280390['json']()['catch'](()=>({'error':_0x280390['statusText']})),_0x35ef78=new Error(_0x1c350b['error']||_0x1c350b['message']||_0x280390['statusText']);if(_0x1c350b['detail']!==undefined)_0x35ef78['detail']=_0x1c350b['detail'];throw _0x35ef78;}return await _0x280390['json']();},async 'deleteSkill'(_0x510ab1){const _0x33004e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x510ab1),{'method':'DELETE'});if(!_0x33004e['ok']){const _0x5ea4ce=await _0x33004e['json']()['catch'](()=>({'error':_0x33004e['statusText']})),_0x5a2496=new Error(_0x5ea4ce['error']||_0x5ea4ce['message']||_0x33004e['statusText']);if(_0x5ea4ce['detail']!==undefined)_0x5a2496['detail']=_0x5ea4ce['detail'];throw _0x5a2496;}return await _0x33004e['json']();},async 'getSkillFile'(_0x27ddb3,_0x1f8cad){const _0x45faa7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27ddb3)+'/files/'+_0x1f8cad);if(!_0x45faa7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x45faa7['statusText']);return await _0x45faa7['json']();},async 'saveSkillFile'(_0x1598a2,_0x131620,_0x125721){const _0x3458f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1598a2)+'/files/'+_0x131620,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x125721})});if(!_0x3458f0['ok']){const _0x10ae1c=await _0x3458f0['json']()['catch'](()=>({'error':_0x3458f0['statusText']})),_0x53699a=new Error(_0x10ae1c['error']||_0x10ae1c['message']||_0x3458f0['statusText']);if(_0x10ae1c['detail']!==undefined)_0x53699a['detail']=_0x10ae1c['detail'];throw _0x53699a;}return await _0x3458f0['json']();},async 'deleteSkillFile'(_0x14744d,_0x4b049d){const _0x189cd5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x14744d)+'/files/'+_0x4b049d,{'method':'DELETE'});if(!_0x189cd5['ok']){const _0x2c7b96=await _0x189cd5['json']()['catch'](()=>({'error':_0x189cd5['statusText']})),_0xeb634d=new Error(_0x2c7b96['error']||_0x2c7b96['message']||_0x189cd5['statusText']);if(_0x2c7b96['detail']!==undefined)_0xeb634d['detail']=_0x2c7b96['detail'];throw _0xeb634d;}return await _0x189cd5['json']();},async 'pullSkills'(){const _0x58bd9f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x58bd9f['ok']){const _0xf0a93f=await _0x58bd9f['json']()['catch'](()=>({'error':_0x58bd9f['statusText']})),_0x55cd4e=new Error(_0xf0a93f['error']||_0xf0a93f['message']||_0x58bd9f['statusText']);if(_0xf0a93f['detail']!==undefined)_0x55cd4e['detail']=_0xf0a93f['detail'];throw _0x55cd4e;}return await _0x58bd9f['json']();},async 'commitSkills'(_0x25fc8c,_0x34433a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x34433a,_0x5895d5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x25fc8c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5895d5['ok']){const _0x557f01=await _0x5895d5['json']()['catch'](()=>({'error':_0x5895d5['statusText']})),_0x562aab=new Error(_0x557f01['error']||_0x557f01['message']||_0x5895d5['statusText']);if(_0x557f01['detail']!==undefined)_0x562aab['detail']=_0x557f01['detail'];throw _0x562aab;}return await _0x5895d5['json']();},async 'discardSkillsChanges'(){const _0x1691db=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1691db['ok']){const _0x1c0c24=await _0x1691db['json']()['catch'](()=>({'error':_0x1691db['statusText']})),_0x56b2d3=new Error(_0x1c0c24['error']||_0x1c0c24['message']||_0x1691db['statusText']);if(_0x1c0c24['detail']!==undefined)_0x56b2d3['detail']=_0x1c0c24['detail'];throw _0x56b2d3;}return await _0x1691db['json']();},async 'getSkillCatalog'(){const _0x2ed70f=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ed70f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ed70f['statusText']);return await _0x2ed70f['json']();},async 'getImportedSkillsRegistry'(){const _0x5a56f6=await fetch(API_BASE+'/external-skills/registry');if(!_0x5a56f6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5a56f6['statusText']);return await _0x5a56f6['json']();},async 'importCatalogSkill'(_0x36aeaa){const _0x1ff798=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x36aeaa})});if(!_0x1ff798['ok']){const _0x2d7544=await _0x1ff798['json']()['catch'](()=>({'error':_0x1ff798['statusText']})),_0x421ada=new Error(_0x2d7544['error']||_0x2d7544['message']||_0x1ff798['statusText']);if(_0x2d7544['detail']!==undefined)_0x421ada['detail']=_0x2d7544['detail'];throw _0x421ada;}return await _0x1ff798['json']();},async 'importSkillFromGit'(_0x38ca08,_0x8842ad,_0xc9c89='main',_0x8069d0=null){const _0xa8887f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x38ca08,'skillPath':_0x8842ad,'branch':_0xc9c89,'skillId':_0x8069d0})});if(!_0xa8887f['ok']){const _0x5a0a30=await _0xa8887f['json']()['catch'](()=>({'error':_0xa8887f['statusText']})),_0x59945e=new Error(_0x5a0a30['error']||_0x5a0a30['message']||_0xa8887f['statusText']);if(_0x5a0a30['detail']!==undefined)_0x59945e['detail']=_0x5a0a30['detail'];throw _0x59945e;}return await _0xa8887f['json']();},async 'probeMarketplace'(_0x13d938,_0x9f349b='main'){const _0x31078d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13d938,'branch':_0x9f349b})});if(!_0x31078d['ok']){const _0x34352c=await _0x31078d['json']()['catch'](()=>({'error':_0x31078d['statusText']})),_0x362dbb=new Error(_0x34352c['error']||_0x34352c['message']||_0x31078d['statusText']);if(_0x34352c['detail']!==undefined)_0x362dbb['detail']=_0x34352c['detail'];throw _0x362dbb;}return await _0x31078d['json']();},async 'importMarketplaceBundle'(_0x5d9cd4,_0x3ca55d,_0x21e541,_0x9e6440=null){const _0x260f52=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5d9cd4,'branch':_0x3ca55d,'bundleId':_0x21e541,'selectedSkills':_0x9e6440})});if(!_0x260f52['ok']){const _0x2f316a=await _0x260f52['json']()['catch'](()=>({'error':_0x260f52['statusText']})),_0x5059a4=new Error(_0x2f316a['error']||_0x2f316a['message']||_0x260f52['statusText']);if(_0x2f316a['detail']!==undefined)_0x5059a4['detail']=_0x2f316a['detail'];throw _0x5059a4;}return await _0x260f52['json']();},async 'importSkillFromFolder'(_0x305d51,_0x100a09=null){const _0x521b91=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x305d51,'skillId':_0x100a09})});if(!_0x521b91['ok']){const _0x3beb4d=await _0x521b91['json']()['catch'](()=>({'error':_0x521b91['statusText']})),_0x216bf2=new Error(_0x3beb4d['error']||_0x3beb4d['message']||_0x521b91['statusText']);if(_0x3beb4d['detail']!==undefined)_0x216bf2['detail']=_0x3beb4d['detail'];throw _0x216bf2;}return await _0x521b91['json']();},async 'importSkillFromNpm'(_0x49352a,_0x43937f='latest',_0x50af09=null,_0x19be08=null){const _0x13fb6e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x49352a,'version':_0x43937f,'skillId':_0x50af09,'registry':_0x19be08})});if(!_0x13fb6e['ok']){const _0x2638c1=await _0x13fb6e['json']()['catch'](()=>({'error':_0x13fb6e['statusText']})),_0x2b32bf=new Error(_0x2638c1['error']||_0x2638c1['message']||_0x13fb6e['statusText']);if(_0x2638c1['detail']!==undefined)_0x2b32bf['detail']=_0x2638c1['detail'];throw _0x2b32bf;}return await _0x13fb6e['json']();},async 'checkSkillUpdates'(_0x2eb4d0){const _0x4c8b38=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2eb4d0)+'/check-updates',{'method':'POST'});if(!_0x4c8b38['ok']){const _0x12882e=await _0x4c8b38['json']()['catch'](()=>({'error':_0x4c8b38['statusText']})),_0x2c2fd7=new Error(_0x12882e['error']||_0x12882e['message']||_0x4c8b38['statusText']);if(_0x12882e['detail']!==undefined)_0x2c2fd7['detail']=_0x12882e['detail'];throw _0x2c2fd7;}return await _0x4c8b38['json']();},async 'updateExternalSkill'(_0x790739){const _0x3ad7aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x790739)+'/update',{'method':'POST'});if(!_0x3ad7aa['ok']){const _0x1d8624=await _0x3ad7aa['json']()['catch'](()=>({'error':_0x3ad7aa['statusText']})),_0x33ff7a=new Error(_0x1d8624['error']||_0x1d8624['message']||_0x3ad7aa['statusText']);if(_0x1d8624['detail']!==undefined)_0x33ff7a['detail']=_0x1d8624['detail'];throw _0x33ff7a;}return await _0x3ad7aa['json']();},async 'updateSkillFlags'(_0x4edc0d,_0x208cd1){const _0x2603eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4edc0d)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x208cd1})});if(!_0x2603eb['ok']){const _0x3cae26=await _0x2603eb['json']()['catch'](()=>({'error':_0x2603eb['statusText']})),_0x244211=new Error(_0x3cae26['error']||_0x3cae26['message']||_0x2603eb['statusText']);if(_0x3cae26['detail']!==undefined)_0x244211['detail']=_0x3cae26['detail'];throw _0x244211;}return await _0x2603eb['json']();},async 'removeFromImportedRegistry'(_0x54d98a){const _0x3c0bac=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x54d98a)+'/registry',{'method':'DELETE'});if(!_0x3c0bac['ok']){const _0x53c538=await _0x3c0bac['json']()['catch'](()=>({'error':_0x3c0bac['statusText']})),_0x2d29ea=new Error(_0x53c538['error']||_0x53c538['message']||_0x3c0bac['statusText']);if(_0x53c538['detail']!==undefined)_0x2d29ea['detail']=_0x53c538['detail'];throw _0x2d29ea;}return await _0x3c0bac['json']();},async 'getTeams'(){const _0x59182e=await fetch(API_BASE+'/teams');if(!_0x59182e['ok']){const _0x3a177a=await _0x59182e['json']()['catch'](()=>({'message':_0x59182e['statusText']}));throw new Error(_0x3a177a['message']||'Failed\x20to\x20get\x20teams');}return await _0x59182e['json']();},async 'getTeam'(_0x176b2b){const _0x531eb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x176b2b));if(!_0x531eb3['ok']){const _0x19f615=await _0x531eb3['json']()['catch'](()=>({'message':_0x531eb3['statusText']}));throw new Error(_0x19f615['message']||'Failed\x20to\x20get\x20team');}return await _0x531eb3['json']();},async 'createTeam'(_0x1bdbe2){const _0x55e996=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bdbe2)});if(!_0x55e996['ok']){const _0x2f984d=await _0x55e996['json']()['catch'](()=>({'message':_0x55e996['statusText']}));throw new Error(_0x2f984d['message']||'Failed\x20to\x20create\x20team');}return await _0x55e996['json']();},async 'updateTeam'(_0x476cdb,_0x18d847){const _0x4f8444=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x476cdb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18d847)});if(!_0x4f8444['ok']){const _0x447fc8=await _0x4f8444['json']()['catch'](()=>({'message':_0x4f8444['statusText']}));throw new Error(_0x447fc8['message']||'Failed\x20to\x20update\x20team');}return await _0x4f8444['json']();},async 'deleteTeam'(_0x511b96){const _0x193c7b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x511b96),{'method':'DELETE'});if(!_0x193c7b['ok']){const _0x21ea1a=await _0x193c7b['json']()['catch'](()=>({'message':_0x193c7b['statusText']}));throw new Error(_0x21ea1a['message']||'Failed\x20to\x20delete\x20team');}return await _0x193c7b['json']();},async 'addTeamMember'(_0xd7bf23,_0x3c289d){const _0x1d0657=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd7bf23)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3c289d})});if(!_0x1d0657['ok']){const _0x56a433=await _0x1d0657['json']()['catch'](()=>({'message':_0x1d0657['statusText']}));throw new Error(_0x56a433['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1d0657['json']();},async 'removeTeamMember'(_0xab8754,_0x274a7a){const _0x3bc003=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xab8754)+'/members/'+encodeURIComponent(_0x274a7a),{'method':'DELETE'});if(!_0x3bc003['ok']){const _0x29b2a0=await _0x3bc003['json']()['catch'](()=>({'message':_0x3bc003['statusText']}));throw new Error(_0x29b2a0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x3bc003['json']();},async 'getBindings'(_0x33676d={}){const _0x1f1507=new URLSearchParams();if(_0x33676d['resource_type'])_0x1f1507['set']('resource_type',_0x33676d['resource_type']);if(_0x33676d['resource_id'])_0x1f1507['set']('resource_id',_0x33676d['resource_id']);if(_0x33676d['subject_type'])_0x1f1507['set']('subject_type',_0x33676d['subject_type']);if(_0x33676d['subject_id'])_0x1f1507['set']('subject_id',_0x33676d['subject_id']);const _0x4a9917=_0x1f1507['toString'](),_0xf1b4b4=await fetch(API_BASE+'/bindings'+(_0x4a9917?'?'+_0x4a9917:''));if(!_0xf1b4b4['ok']){const _0x5afe56=await _0xf1b4b4['json']()['catch'](()=>({'message':_0xf1b4b4['statusText']}));throw new Error(_0x5afe56['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf1b4b4['json']();},async 'createBinding'(_0x228622){const _0x111235=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x228622)});if(!_0x111235['ok']){const _0x5968a0=await _0x111235['json']()['catch'](()=>({'message':_0x111235['statusText']}));throw new Error(_0x5968a0['message']||'Failed\x20to\x20create\x20binding');}return await _0x111235['json']();},async 'updateBinding'(_0x37d4a9,_0x45c954){const _0x201d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37d4a9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45c954)});if(!_0x201d7e['ok']){const _0x54539a=await _0x201d7e['json']()['catch'](()=>({'message':_0x201d7e['statusText']}));throw new Error(_0x54539a['message']||'Failed\x20to\x20update\x20binding');}return await _0x201d7e['json']();},async 'deleteBinding'(_0x389bf1){const _0x386295=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x389bf1),{'method':'DELETE'});if(!_0x386295['ok']){const _0x11fb23=await _0x386295['json']()['catch'](()=>({'message':_0x386295['statusText']}));throw new Error(_0x11fb23['message']||'Failed\x20to\x20delete\x20binding');}return await _0x386295['json']();},async 'getRoleDefinitions'(){const _0x1e8e95=await fetch(API_BASE+'/roles');if(!_0x1e8e95['ok']){const _0x4710f6=await _0x1e8e95['json']()['catch'](()=>({'message':_0x1e8e95['statusText']}));throw new Error(_0x4710f6['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e8e95['json']();},async 'getRoleDefinition'(_0x520d0c){const _0x565b54=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x520d0c));if(!_0x565b54['ok']){const _0x117946=await _0x565b54['json']()['catch'](()=>({'message':_0x565b54['statusText']}));throw new Error(_0x117946['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x565b54['json']();},async 'createRoleDefinition'(_0x16368f){const _0x1e2de1=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16368f)});if(!_0x1e2de1['ok']){const _0x23d5ba=await _0x1e2de1['json']()['catch'](()=>({'message':_0x1e2de1['statusText']}));throw new Error(_0x23d5ba['message']||_0x23d5ba['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e2de1['json']();},async 'updateRoleDefinition'(_0x21c822,_0x3aecf0){const _0x53337c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x21c822),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3aecf0)});if(!_0x53337c['ok']){const _0x2fde25=await _0x53337c['json']()['catch'](()=>({'message':_0x53337c['statusText']}));throw new Error(_0x2fde25['message']||_0x2fde25['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53337c['json']();},async 'deleteRoleDefinition'(_0x428996){const _0x2d9d69=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x428996),{'method':'DELETE'});if(!_0x2d9d69['ok']){const _0x12a32e=await _0x2d9d69['json']()['catch'](()=>({'message':_0x2d9d69['statusText']}));throw new Error(_0x12a32e['message']||_0x12a32e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2d9d69['json']();},async 'getAvailablePermissions'(){const _0x23585f=await fetch(API_BASE+'/roles/available-permissions');if(!_0x23585f['ok']){const _0x381b1a=await _0x23585f['json']()['catch'](()=>({'message':_0x23585f['statusText']}));throw new Error(_0x381b1a['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x23585f['json']();},async 'getGitProviderAllowedTeams'(_0x33d47b){const _0x32b274=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x33d47b)+'/allowed-teams');if(!_0x32b274['ok']){const _0x6f52dd=await _0x32b274['json']()['catch'](()=>({'message':_0x32b274['statusText']}));throw new Error(_0x6f52dd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x32b274['json']();},async 'setGitProviderAllowedTeams'(_0x5ed604,_0x2c195b){const _0x1fc2ca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5ed604)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2c195b})});if(!_0x1fc2ca['ok']){const _0x42f53e=await _0x1fc2ca['json']()['catch'](()=>({'message':_0x1fc2ca['statusText']}));throw new Error(_0x42f53e['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1fc2ca['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 _0x597482=toastState['baseBottom'];toastState['toasts']['forEach'](_0x46d2b6=>{_0x46d2b6['el']['style']['bottom']=_0x597482+'px';const _0x5769b9=_0x46d2b6['el']['offsetHeight']||toastState['defaultHeight'];_0x597482+=_0x5769b9+toastState['gap'];});});}function removeToastById(_0x7b6319){const _0x3180e1=toastState['toasts']['findIndex'](_0x1f0920=>_0x1f0920['id']===_0x7b6319);if(_0x3180e1===-0x1)return;const _0x40f90d=toastState['toasts'][_0x3180e1];if(_0x40f90d['timeoutId'])clearTimeout(_0x40f90d['timeoutId']);_0x40f90d['el']['classList']['remove']('show'),setTimeout(()=>_0x40f90d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3180e1,0x1),repositionAllToasts();}function registerToast(_0x2d77af){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d77af),repositionAllToasts(),_0x2d77af['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(_0x30e887){if(_0x30e887===null||_0x30e887===undefined)return'';return String(_0x30e887)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x48f4c9,_0x2c347e){if(_0x48f4c9&&typeof _0x48f4c9==='object'&&!Array['isArray'](_0x48f4c9))return{'code':typeof _0x48f4c9['text']==='string'?_0x48f4c9['text']:'','language':typeof _0x48f4c9['lang']==='string'?_0x48f4c9['lang']:''};return{'code':typeof _0x48f4c9==='string'?_0x48f4c9:'','language':typeof _0x2c347e==='string'?_0x2c347e:''};}function buildMermaidBlock(_0xcc6691){const _0x4c8e3c=String(_0xcc6691||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c8e3c))+'\x22>'+escapeHtmlValue(_0x4c8e3c)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x34bee4=new marked['Renderer'](),_0x5c7bdb=_0x34bee4['code']['bind'](_0x34bee4);return _0x34bee4['code']=function(_0x7443a5,_0x5c4efb,..._0x434658){const {code:_0x3ab0af,language:_0x16b930}=getMarkdownCodeBlockPayload(_0x7443a5,_0x5c4efb),_0x72fc08=String(_0x16b930||'')['trim']()['toLowerCase']();if(_0x72fc08==='mermaid')return buildMermaidBlock(_0x3ab0af);const _0x1196e9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1196e9&&_0x72fc08)try{const _0x4fdab1=_0x1196e9['getLanguage'](_0x72fc08)?_0x72fc08:'plaintext',_0x5080f9=_0x1196e9['highlight'](_0x3ab0af,{'language':_0x4fdab1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x72fc08)+'\x22>'+_0x5080f9+'</code></pre>';}catch(_0x5bbc3b){console['error']('Syntax\x20highlighting\x20error:',_0x5bbc3b);}return _0x5c7bdb(_0x7443a5,_0x5c4efb,..._0x434658);},sharedMarkedRenderer=_0x34bee4,_0x34bee4;}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 _0x386839=window['mermaid'];if(!_0x386839||typeof _0x386839['initialize']!=='function')return _0x386839||null;return _0x386839['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x386839;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1318bf,_0x295a3b)=>{const _0x1a1097=()=>_0x1318bf(configureMermaidInstance()),_0x10d44c=()=>{mermaidLoadPromise=null,_0x295a3b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x429a37=document['getElementById'](MERMAID_SCRIPT_ID);!_0x429a37&&(_0x429a37=document['createElement']('script'),_0x429a37['id']=MERMAID_SCRIPT_ID,_0x429a37['src']=MERMAID_SCRIPT_SRC,_0x429a37['async']=!![],document['head']['appendChild'](_0x429a37));if(window['mermaid']){_0x1a1097();return;}_0x429a37['addEventListener']('load',_0x1a1097,{'once':!![]}),_0x429a37['addEventListener']('error',_0x10d44c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e095f){const _0x1329fc=_0x3e095f['getAttribute']('data-mermaid-source');if(!_0x1329fc)return null;let _0x598e27=_0x1329fc;try{_0x598e27=decodeURIComponent(_0x1329fc);}catch{}return _0x3e095f['textContent']=_0x598e27,_0x3e095f['removeAttribute']('data-processed'),_0x3e095f['removeAttribute']('aria-roledescription'),_0x3e095f['removeAttribute']('role'),_0x3e095f['removeAttribute']('aria-label'),_0x598e27;}function collectMermaidNodes(_0x3d3d8e,_0x103640){if(!(_0x3d3d8e instanceof Element))return;_0x3d3d8e['matches']('.mermaid[data-mermaid-source]')&&_0x103640['add'](_0x3d3d8e),_0x3d3d8e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3c3198=>{_0x103640['add'](_0x3c3198);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x4e277c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x294ff4=>setTimeout(_0x294ff4,0x0);_0x4e277c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x4d3a17=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x4d3a17);});});}function queueMermaidRender(_0x53031b){const _0x327805=new Set();_0x53031b instanceof Document||_0x53031b instanceof DocumentFragment?_0x53031b['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xd0d846=>_0x327805['add'](_0xd0d846)):collectMermaidNodes(_0x53031b,_0x327805);if(_0x327805['size']===0x0)return;_0x327805['forEach'](_0x5a3d0f=>pendingMermaidNodes['add'](_0x5a3d0f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4d4a97=Array['from'](pendingMermaidNodes)['filter'](_0x1de7e5=>_0x1de7e5['isConnected']);pendingMermaidNodes['clear']();if(_0x4d4a97['length']===0x0)return;const _0x474d48=await loadMermaid();if(!_0x474d48)return;configureMermaidInstance();const _0x55e50f=getMermaidTheme();for(const _0x508813 of _0x4d4a97){const _0x1c998c=_0x508813['getAttribute']('data-mermaid-source');if(!_0x1c998c)continue;const _0x5e78f8=_0x508813['getAttribute']('data-processed')==='true';if(_0x5e78f8&&_0x508813['dataset']['mermaidTheme']===_0x55e50f)continue;restoreMermaidSource(_0x508813);try{if(typeof _0x474d48['run']==='function')await _0x474d48['run']({'nodes':[_0x508813]});else typeof _0x474d48['init']==='function'&&_0x474d48['init'](undefined,[_0x508813]);_0x508813['dataset']['mermaidTheme']=_0x55e50f,delete _0x508813['dataset']['mermaidError'];}catch(_0x3b7010){console['error']('Mermaid\x20render\x20failed:',_0x3b7010),restoreMermaidSource(_0x508813),_0x508813['dataset']['mermaidError']='true',delete _0x508813['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1fc439=>{_0x1fc439['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1fc439);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x42a7be=>{_0x42a7be['forEach'](_0x2a376d=>{_0x2a376d['addedNodes']['forEach'](_0x13b3f2=>{_0x13b3f2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x13b3f2);});});}),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'(_0x16a201){const _0x375e01=new Date(_0x16a201),_0x592e2a=new Date(),_0x45c316=_0x592e2a-_0x375e01,_0x40ba47=Math['floor'](_0x45c316/0x3e8),_0x45bfb7=Math['floor'](_0x40ba47/0x3c),_0x38c6bf=Math['floor'](_0x45bfb7/0x3c),_0x165d09=Math['floor'](_0x38c6bf/0x18);if(_0x40ba47<0x3c)return'now';if(_0x45bfb7<0x3c)return _0x45bfb7+'m\x20ago';if(_0x38c6bf<0x18)return _0x38c6bf+'h\x20ago';return _0x165d09+'d\x20ago';},'getStatusIcon'(_0x5aa154){switch(_0x5aa154){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x21bb62){switch(_0x21bb62){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'(_0x3cf3a1,_0x5a214c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dea56={};_0x3dea56['text/plain']=new Blob([_0x3cf3a1],{'type':'text/plain'});_0x5a214c&&(_0x3dea56['text/html']=new Blob([_0x5a214c],{'type':'text/html'}));const _0x569920=new ClipboardItem(_0x3dea56);return await navigator['clipboard']['write']([_0x569920]),!![];}catch(_0x3533f7){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3533f7);}try{const _0x12971c=_0x4ed2c1=>{_0x4ed2c1['preventDefault'](),_0x4ed2c1['clipboardData']['setData']('text/plain',_0x3cf3a1),_0x5a214c&&_0x4ed2c1['clipboardData']['setData']('text/html',_0x5a214c);};document['addEventListener']('copy',_0x12971c);const _0x32d071=document['execCommand']('copy');document['removeEventListener']('copy',_0x12971c);if(_0x32d071)return!![];}catch(_0x4380a7){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4380a7);}try{const _0x55804c=document['createElement']('textarea');_0x55804c['value']=_0x3cf3a1,_0x55804c['style']['position']='fixed',_0x55804c['style']['opacity']='0',_0x55804c['style']['pointerEvents']='none',document['body']['appendChild'](_0x55804c),_0x55804c['select']();const _0x2a7d40=document['execCommand']('copy');return document['body']['removeChild'](_0x55804c),_0x2a7d40;}catch(_0xa0544f){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xa0544f),![];}},'showToast'(_0x356f12,_0x3eed47='info'){const _0x4ac450=getNextToastId(),_0x229211=document['createElement']('div');_0x229211['className']='toast\x20toast-'+_0x3eed47,_0x229211['textContent']=_0x356f12,_0x229211['dataset']['toastId']=_0x4ac450,document['body']['appendChild'](_0x229211);const _0x204c56=_0x3eed47==='error'?0x2710:0xbb8,_0x5c524f=setTimeout(()=>{removeToastById(_0x4ac450);},_0x204c56),_0x35f5f9={'id':_0x4ac450,'el':_0x229211,'timeoutId':_0x5c524f};return registerToast(_0x35f5f9),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x229211['classList']['add']('show');});}),_0x4ac450;},'showError'(_0x31adb3){console['error'](_0x31adb3);const _0x1023a6=typeof _0x31adb3==='string'?_0x31adb3:_0x31adb3['message']||'An\x20error\x20occurred';this['showToast'](_0x1023a6,'error');},'showSuccess'(_0x2566e1){this['showToast'](_0x2566e1,'success');},'capitalize'(_0x1d907b){if(!_0x1d907b)return'';return _0x1d907b['charAt'](0x0)['toUpperCase']()+_0x1d907b['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5b3fad){return escapeHtmlValue(_0x5b3fad);},'ansiToHtml'(_0x5a744b){if(_0x5a744b===null||_0x5a744b===undefined)return'';let _0x531979=this['escapeHtml'](_0x5a744b);const _0x73c867={'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'},_0x307c98={'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 _0x16aa48=0x0;return _0x531979=_0x531979['replace'](/\x1b\[([0-9;]*)m/g,(_0x12b1d6,_0x453d62)=>{if(!_0x453d62||_0x453d62==='0'){const _0x51c4ca='</span>'['repeat'](_0x16aa48);return _0x16aa48=0x0,_0x51c4ca;}const _0x46fe78=_0x453d62['split'](';'),_0x5c917e=[];for(const _0x303869 of _0x46fe78){if(_0x303869==='1')_0x5c917e['push']('font-weight:bold');else{if(_0x303869==='2')_0x5c917e['push']('opacity:0.7');else{if(_0x303869==='3')_0x5c917e['push']('font-style:italic');else{if(_0x303869==='4')_0x5c917e['push']('text-decoration:underline');else{if(_0x303869==='9')_0x5c917e['push']('text-decoration:line-through');else{if(_0x73c867[_0x303869])_0x5c917e['push']('color:'+_0x73c867[_0x303869]);else{if(_0x307c98[_0x303869])_0x5c917e['push']('background-color:'+_0x307c98[_0x303869]);}}}}}}}if(_0x5c917e['length']>0x0)return _0x16aa48++,'<span\x20style=\x22'+_0x5c917e['join'](';')+'\x22>';return'';}),_0x531979+='</span>'['repeat'](_0x16aa48),_0x531979=_0x531979['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2e3033,_0x56be35)=>{if(!_0x56be35||_0x56be35==='0')return'';const _0x28969e=_0x56be35['split'](';'),_0x295e0e=[];for(const _0x81825 of _0x28969e){if(_0x81825==='1')_0x295e0e['push']('font-weight:bold');else{if(_0x73c867[_0x81825])_0x295e0e['push']('color:'+_0x73c867[_0x81825]);else{if(_0x307c98[_0x81825])_0x295e0e['push']('background-color:'+_0x307c98[_0x81825]);}}}if(_0x295e0e['length']>0x0)return'<span\x20style=\x22'+_0x295e0e['join'](';')+'\x22>';return'';}),_0x531979;},'showModal'({title:_0x155b2b,content:_0x34e6db,buttons:buttons=[]}){const _0x1be983='\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'](_0x155b2b)+'</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'+_0x34e6db+'\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']((_0x59a2e8,_0x19a6cc)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59a2e8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x19a6cc+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59a2e8['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',_0x24cace=document['createElement']('div');_0x24cace['id']='utils-modal',_0x24cace['className']='modal',_0x24cace['innerHTML']=_0x1be983,document['body']['appendChild'](_0x24cace);const _0x52a509=document['getElementById']('utils-modal-close');_0x52a509&&_0x52a509['addEventListener']('click',()=>this['hideModal']());const _0x3cd490=_0x24cace['querySelectorAll']('[data-btn-index]');_0x3cd490['forEach'](_0x51982b=>{const _0x512fda=parseInt(_0x51982b['dataset']['btnIndex']);buttons[_0x512fda]?.['onClick']&&_0x51982b['addEventListener']('click',buttons[_0x512fda]['onClick']);});const _0xeccd6a=document['getElementById']('utils-modal-overlay');_0xeccd6a&&_0xeccd6a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x147dd6=document['getElementById']('utils-modal');_0x147dd6&&_0x147dd6['remove']();},'parseKeyValuePairs'(_0x2ccb52){const _0x1d8f26={};if(!_0x2ccb52)return _0x1d8f26;return _0x2ccb52['split'](/\r?\n/)['map'](_0x27169f=>_0x27169f['trim']())['filter'](Boolean)['forEach'](_0x40eb86=>{const _0x946f18=_0x40eb86['indexOf']('=');if(_0x946f18>0x0){const _0x3dd032=_0x40eb86['slice'](0x0,_0x946f18)['trim'](),_0x536b5d=_0x40eb86['slice'](_0x946f18+0x1)['trim']();if(_0x3dd032)_0x1d8f26[_0x3dd032]=_0x536b5d;}}),_0x1d8f26;},'debounce'(_0x276755,_0x53efb9=0xfa){let _0x58c18f=null;return(..._0x4a1974)=>{clearTimeout(_0x58c18f),_0x58c18f=setTimeout(()=>_0x276755['apply'](this,_0x4a1974),_0x53efb9);};},'formatTimestamp'(_0x2eb6be){if(!_0x2eb6be)return'N/A';const _0x41d44e=new Date(_0x2eb6be);return _0x41d44e['toLocaleDateString']()+'\x20'+_0x41d44e['toLocaleTimeString']();},'getQueryParams'(){const _0x5294c4=new URLSearchParams(window['location']['search']),_0x1195b0={};for(const [_0x1f7276,_0x566708]of _0x5294c4){_0x1195b0[_0x1f7276]=_0x566708;}return _0x1195b0;},'formatDuration'(_0x25a114,_0x5b6185){if(!_0x25a114)return'N/A';const _0x26a242=new Date(_0x25a114),_0x1142f1=_0x5b6185?new Date(_0x5b6185):new Date(),_0x1c9cbb=_0x1142f1-_0x26a242;if(_0x1c9cbb<0x0)return'0s';const _0x1e352c=Math['floor'](_0x1c9cbb/0x3e8),_0x809cd4=Math['floor'](_0x1e352c/0x3c),_0x12b841=Math['floor'](_0x809cd4/0x3c),_0x451be6=Math['floor'](_0x12b841/0x18);if(_0x1e352c<0x3c)return _0x1e352c+'s';if(_0x809cd4<0x3c)return _0x809cd4+'m\x20'+_0x1e352c%0x3c+'s';if(_0x12b841<0x18)return _0x12b841+'h\x20'+_0x809cd4%0x3c+'m\x20'+_0x1e352c%0x3c+'s';return _0x451be6+'d\x20'+_0x12b841%0x18+'h\x20'+_0x809cd4%0x3c+'m';},'renderMarkdown'(_0x5e50e8,_0x2882f1={}){if(!_0x5e50e8)return'';_0x5e50e8=this['rewriteAttachmentLinks'](_0x5e50e8,_0x2882f1),_0x5e50e8=this['rewriteColorSyntax'](_0x5e50e8);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5e50e8);}catch(_0x4654b6){return console['error']('Markdown\x20parsing\x20error:',_0x4654b6),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);}},'rewriteAttachmentLinks'(_0x2be6a3,_0x1beaf2={}){const _0x49faec=typeof _0x1beaf2['resolveAttachmentUrl']==='function'?_0x1beaf2['resolveAttachmentUrl']:_0x1beaf2['taskId']?_0x5cda00=>API_BASE+'/tasks/'+_0x1beaf2['taskId']+'/attachments/'+encodeURIComponent(_0x5cda00):null;if(!_0x49faec)return _0x2be6a3;return String(_0x2be6a3)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x535251,_0x38ccf0)=>{const _0x5bd055=String(_0x38ccf0||'')['trim']();if(!_0x5bd055)return _0x535251;let _0x40973b=_0x5bd055;try{_0x40973b=decodeURIComponent(_0x5bd055);}catch{}const _0x543637=_0x49faec(_0x40973b);if(!_0x543637)return _0x535251;return']('+_0x543637+')';});},'rewriteColorSyntax'(_0x24de39){if(!_0x24de39)return _0x24de39;return String(_0x24de39)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4094e4,_0x217377,_0x7615fe)=>{const _0x526bc0=this['rewriteColorSyntax'](_0x7615fe);return'<span\x20style=\x22color:\x20'+_0x217377+'\x22>'+_0x526bc0+'</span>';});},'renderMarkdownFallback'(_0x581d11,_0x348987={}){if(!_0x581d11)return'';_0x581d11=_0x581d11['replace'](/\r\n/g,'\x0a'),_0x581d11=_0x581d11['replace'](/\r/g,'\x0a'),_0x581d11=this['rewriteAttachmentLinks'](_0x581d11,_0x348987);let _0x5e0063=this['escapeHtml'](_0x581d11);return _0x5e0063=_0x5e0063['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5e0063=_0x5e0063['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5e0063=_0x5e0063['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5e0063=_0x5e0063['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5e0063=_0x5e0063['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5e0063=_0x5e0063['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5e0063=_0x5e0063['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5e0063=_0x5e0063['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5e0063=_0x5e0063['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5e0063=_0x5e0063['replace'](/\n\n/g,'</p><p>'),_0x5e0063=_0x5e0063['replace'](/\n/g,'<br>'),'<p>'+_0x5e0063+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5cf9ee=new Uint8Array(0x10);crypto['getRandomValues'](_0x5cf9ee),_0x5cf9ee[0x6]=_0x5cf9ee[0x6]&0xf|0x40,_0x5cf9ee[0x8]=_0x5cf9ee[0x8]&0x3f|0x80;const _0x2a651c=Array['from'](_0x5cf9ee,_0x371916=>_0x371916['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2a651c['slice'](0x0,0x8)+'-'+_0x2a651c['slice'](0x8,0xc)+'-'+_0x2a651c['slice'](0xc,0x10)+'-'+_0x2a651c['slice'](0x10,0x14)+'-'+_0x2a651c['slice'](0x14);}};export class CustomSelect{constructor(_0x3d21eb,_0x5d7aa4={}){this['nativeSelect']=_0x3d21eb,this['options']=_0x5d7aa4,this['isOpen']=![],this['selectedValue']=_0x3d21eb['value']||'',this['searchable']=_0x5d7aa4['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x38ca61=document['createElement']('div');_0x38ca61['className']='custom-select';const _0x169d8a=document['createElement']('div');_0x169d8a['className']='custom-select-trigger',_0x169d8a['setAttribute']('tabindex','0'),_0x169d8a['setAttribute']('role','button'),_0x169d8a['setAttribute']('aria-haspopup','listbox');const _0x73f3aa=document['createElement']('span');_0x73f3aa['className']='custom-select-trigger-text';const _0x1287c7=document['createElement']('span');_0x1287c7['className']='custom-select-arrow',_0x1287c7['textContent']='▼',_0x169d8a['appendChild'](_0x73f3aa),_0x169d8a['appendChild'](_0x1287c7);const _0x423055=document['createElement']('div');_0x423055['className']='custom-select-dropdown',_0x423055['setAttribute']('role','listbox');if(this['searchable']){const _0x39224a=document['createElement']('div');_0x39224a['className']='custom-select-search';const _0x43f5ff=document['createElement']('input');_0x43f5ff['type']='text',_0x43f5ff['className']='custom-select-search-input',_0x43f5ff['placeholder']='Type\x20to\x20search...',_0x43f5ff['setAttribute']('aria-label','Search\x20options'),_0x43f5ff['addEventListener']('input',_0x9df05=>{this['searchQuery']=_0x9df05['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x43f5ff['addEventListener']('keydown',_0x3817b0=>{if(_0x3817b0['key']==='Escape')_0x3817b0['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3817b0['key']==='Enter'){_0x3817b0['preventDefault'](),_0x3817b0['stopPropagation']();const _0x287346=_0x423055['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x287346){const _0x1acc1e=_0x287346['getAttribute']('data-value');this['select'](_0x1acc1e);}}}}),_0x39224a['appendChild'](_0x43f5ff),_0x423055['appendChild'](_0x39224a),this['searchInput']=_0x43f5ff;}const _0x1742de=document['createElement']('div');_0x1742de['className']='custom-select-options',_0x423055['appendChild'](_0x1742de),_0x38ca61['appendChild'](_0x169d8a),_0x38ca61['appendChild'](_0x423055),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x38ca61,this['nativeSelect']),this['wrapper']=_0x38ca61,this['trigger']=_0x169d8a,this['triggerText']=_0x73f3aa,this['dropdown']=_0x423055,this['optionsContainer']=_0x1742de,_0x169d8a['addEventListener']('click',()=>this['toggle']()),_0x169d8a['addEventListener']('keydown',_0x4d5916=>this['handleKeydown'](_0x4d5916)),document['addEventListener']('click',_0x386067=>{!_0x38ca61['contains'](_0x386067['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x44a844=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x44a844['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de64c=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de64c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4406ab=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4406ab['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x52ec88=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x52ec88),this['trigger']['setAttribute']('aria-disabled',_0x52ec88?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x52ec88?'-1':'0'),_0x52ec88&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x351aef=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x39651f=_0x351aef['filter'](_0x261e24=>!_0x261e24['disabled']&&!_0x261e24['hidden']);_0x351aef['forEach']((_0xb2f934,_0x3cf0ce)=>{const _0x188870=document['createElement']('div');_0x188870['className']='custom-select-option',_0x188870['textContent']=_0xb2f934['textContent'],_0x188870['setAttribute']('data-value',_0xb2f934['value']),_0x188870['setAttribute']('data-index',_0x3cf0ce),_0x188870['setAttribute']('role','option'),_0xb2f934['disabled']?_0x188870['classList']['add']('disabled'):_0x188870['addEventListener']('click',()=>this['select'](_0xb2f934['value'])),_0xb2f934['value']===this['selectedValue']&&_0x188870['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x188870),this['allOptions']['push']({'element':_0x188870,'text':_0xb2f934['textContent']['toLowerCase'](),'value':_0xb2f934['value'],'disabled':_0xb2f934['disabled']});});if(this['searchable']&&this['searchInput']){const _0x495e3a=this['searchInput']['parentElement'];_0x39651f['length']>0x3?_0x495e3a['style']['display']='':_0x495e3a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x25addc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x12dac8=>{if(!_0x25addc||_0x12dac8['disabled'])_0x12dac8['element']['style']['display']='';else{const _0x403633=_0x12dac8['text']['includes'](_0x25addc);_0x12dac8['element']['style']['display']=_0x403633?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3824dd){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3824dd,this['nativeSelect']['value']=_0x3824dd;const _0x2edf20=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2edf20),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x578214=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x578214&&(this['triggerText']['textContent']=_0x578214['textContent'],_0x578214['disabled']||_0x578214['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4c62e0=>{_0x4c62e0['getAttribute']('data-value')===this['selectedValue']?_0x4c62e0['classList']['add']('selected'):_0x4c62e0['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 _0xd928c2=window['getComputedStyle'](this['dropdown']);if(_0xd928c2['position']==='fixed'){const _0x3605c3=this['trigger']['getBoundingClientRect'](),_0xdef1c7=parseInt(_0xd928c2['maxHeight'])||0xc8,_0x12459e=window['innerHeight'],_0xcb444d=_0x12459e-_0x3605c3['bottom'],_0x46f274=_0x3605c3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4d8f82;_0xcb444d<_0xdef1c7&&_0x46f274>_0xcb444d?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x12459e-_0x3605c3['top']+'px',_0x4d8f82=Math['min'](_0xdef1c7,_0x46f274-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3605c3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4d8f82=Math['min'](_0xdef1c7,_0xcb444d-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px');if(this['optionsContainer']){let _0x314f15=_0x4d8f82;if(this['searchInput']){const _0x5f43cf=this['searchInput']['parentElement'];_0x5f43cf&&(_0x314f15-=_0x5f43cf['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x314f15)+'px';}this['dropdown']['style']['left']=_0x3605c3['left']+'px',this['dropdown']['style']['width']=_0x3605c3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5b9953=this['searchInput']['parentElement'];_0x5b9953&&_0x5b9953['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'](_0x581759){if(this['nativeSelect']['disabled'])return;if(_0x581759['key']==='Enter'||_0x581759['key']==='\x20')_0x581759['preventDefault'](),this['toggle']();else _0x581759['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x13d5a8='\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',_0x13d5a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x43f587=document['getElementById']('confirm-dialog-close'),_0x357bd3=document['getElementById']('confirm-dialog-cancel'),_0x449fb8=document['getElementById']('confirm-dialog-confirm'),_0x1f9517=this['_modal']['querySelector']('.modal-overlay');_0x43f587['addEventListener']('click',()=>this['_resolve'](![])),_0x357bd3['addEventListener']('click',()=>this['_resolve'](![])),_0x449fb8['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f9517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x247888=>{if(_0x247888['key']==='Escape')_0x247888['preventDefault'](),this['_resolve'](![]);else _0x247888['key']==='Enter'&&(_0x247888['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x29a998,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2d1d33=>{this['_resolvePromise']=_0x2d1d33,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x29a998;const _0x45af30=document['getElementById']('confirm-dialog-cancel'),_0x34f2c1=document['getElementById']('confirm-dialog-confirm');_0x45af30['textContent']=cancelText,_0x34f2c1['textContent']=confirmText,_0x34f2c1['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x34f2c1['focus']();});},'_resolve'(_0x1b2a0a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b2a0a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x561d37,_0x1416d4={}){this['container']=_0x561d37,this['options']={'placeholder':_0x1416d4['placeholder']||'Type\x20to\x20search...','maxItems':_0x1416d4['maxItems']||0x64,'loadItems':_0x1416d4['loadItems']||(async()=>[]),'renderItem':_0x1416d4['renderItem']||(_0x22e2f2=>({'primary':String(_0x22e2f2),'secondary':''})),'onSelect':_0x1416d4['onSelect']||(()=>{}),'filterItems':_0x1416d4['filterItems']||null,'getItemValue':_0x1416d4['getItemValue']||(_0x289192=>_0x289192),'sortItems':_0x1416d4['sortItems']||null,'debounceMs':_0x1416d4['debounceMs']||0xc8,'minCharsForSearch':_0x1416d4['minCharsForSearch']||0x0,'emptyMessage':_0x1416d4['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1416d4['loadingMessage']||'Loading...','preload':_0x1416d4['preload']!==![],'searchMode':_0x1416d4['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',_0x3506f7=>this['onBlur'](_0x3506f7)),this['input']['addEventListener']('input',_0x100616=>this['onInput'](_0x100616)),this['input']['addEventListener']('keydown',_0x4b7728=>this['onKeydown'](_0x4b7728)),this['clearBtn']['addEventListener']('mousedown',_0x132e6a=>{_0x132e6a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x7e646e=>{_0x7e646e['preventDefault']();}),document['addEventListener']('click',_0x1725fa=>{!this['wrapper']['contains'](_0x1725fa['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(_0x432b4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x432b4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x9196a6){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x26301d){const _0x2b5ff1=_0x26301d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b5ff1);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b5ff1):this['loadAndShow'](_0x2b5ff1);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x47d06f){switch(_0x47d06f['key']){case'ArrowDown':_0x47d06f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x47d06f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x47d06f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x47d06f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2e7ef3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x432356=this['selectedIndex']+_0x2e7ef3;if(_0x432356>=0x0&&_0x432356<this['filteredItems']['length']){this['selectedIndex']=_0x432356,this['updateSelectionHighlight']();const _0x27662a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x27662a[this['selectedIndex']]&&_0x27662a[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1a2976=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1a2976['forEach']((_0x2751c3,_0x26ad97)=>{_0x2751c3['classList']['toggle']('keyboard-selected',_0x26ad97===this['selectedIndex']);});}async['loadAndShow'](_0x2bd452){this['showLoading']();try{const _0x192faf=await this['options']['loadItems'](_0x2bd452);if(this['options']['searchMode']==='server'){let _0x4d96a9=_0x192faf;this['options']['sortItems']&&(_0x4d96a9=this['options']['sortItems']([..._0x192faf]));this['filteredItems']=_0x4d96a9;const _0x449f4e=this['filteredItems']['length']>=this['options']['maxItems'];_0x449f4e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x449f4e),this['open']();}else this['allItems']=_0x192faf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2bd452);}catch(_0x5c601e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5c601e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5283c4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5283c4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xb3dee3=this['filteredItems']['length']>=this['options']['maxItems'];_0xb3dee3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xb3dee3),this['open']();}['renderItems'](_0x24e15c){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']((_0x509372,_0x18fd67)=>{const _0x3903b2=document['createElement']('div');_0x3903b2['className']='autocomplete-select-item',_0x3903b2['setAttribute']('role','option'),_0x3903b2['setAttribute']('data-index',_0x18fd67);const _0x464e8b=this['options']['renderItem'](_0x509372);let _0x208bd6='';_0x464e8b['icon']&&(_0x208bd6='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x464e8b['iconClass']||'')+'\x22>'+_0x464e8b['icon']+'</span>'),_0x3903b2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x208bd6+'\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'](_0x464e8b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x464e8b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x464e8b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3903b2['addEventListener']('click',()=>{this['selectItem'](_0x509372);}),_0x3903b2['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x18fd67,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3903b2);}),_0x24e15c?(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'](_0x1d3e8e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1d3e8e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xda1433){this['selectedItem']=_0xda1433;const _0x3d044a=this['options']['renderItem'](_0xda1433);this['input']['value']=_0x3d044a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xda1433);}['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'](_0x203c10){if(_0x203c10){this['selectedItem']=_0x203c10;const _0x1bc184=this['options']['renderItem'](_0x203c10);this['input']['value']=_0x1bc184['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1ee9cf){this['allItems']=_0x1ee9cf,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'](_0x55da25){this['input']['placeholder']=_0x55da25;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x15ad7c=null){const _0x396990=document['getElementById']('admin-menu-container'),_0x51ef87=document['getElementById']('admin-menu-btn'),_0x2eaefa=document['getElementById']('admin-menu');if(!_0x396990||!_0x51ef87||!_0x2eaefa)return;try{!_0x15ad7c&&(_0x15ad7c=await API['getCurrentUser']());if(_0x15ad7c){const _0x5b8273=window['Permissions'],_0x31d865=_0x5b8273['hasServerPermission'](_0x15ad7c,'*')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:manage')||_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')||_0x5b8273['hasTeamPermission'](_0x15ad7c,'teams:manage')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:view_details');if(!_0x31d865)return;_0x396990['hidden']=![];if(!_0x5b8273['hasServerPermission'](_0x15ad7c,'*')){const _0x1891fc=_0x2eaefa['querySelectorAll']('.admin-menu-item');_0x1891fc['forEach'](_0x20a2bb=>{const _0xf6c8fc=_0x20a2bb['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c8fc==='Users'&&!_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Skills'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Settings'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Health'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Git\x20History'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Roles'&&(_0x20a2bb['hidden']=!![]);});}_0x51ef87['addEventListener']('click',_0x4ae0fe=>{_0x4ae0fe['stopPropagation']();const _0x55a903=document['getElementById']('actions-menu');if(_0x55a903)_0x55a903['hidden']=!![];_0x2eaefa['hidden']=!_0x2eaefa['hidden'];}),document['addEventListener']('click',_0x40e09b=>{!_0x2eaefa['hidden']&&!_0x51ef87['contains'](_0x40e09b['target'])&&!_0x2eaefa['contains'](_0x40e09b['target'])&&(_0x2eaefa['hidden']=!![]);}),document['addEventListener']('keydown',_0x19dd24=>{_0x19dd24['key']==='Escape'&&!_0x2eaefa['hidden']&&(_0x2eaefa['hidden']=!![]);});const _0x4d6b9f=document['getElementById']('server-health-btn');_0x4d6b9f&&_0x4d6b9f['addEventListener']('click',async()=>{_0x2eaefa['hidden']=!![];const {openServerHealthModal:_0x3ec906}=await import('./server-health.js');_0x3ec906();});}}catch(_0x5cf1b0){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5cf1b0['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 _0xf77772=window['location']['pathname'],_0x14c53a=_0xf77772['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x14c53a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x14c53a[0x1]),_0x14c53a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4743b1={}){const _0x4c724d=new URLSearchParams();_0x4743b1['userId']&&_0x4c724d['set']('userId',String(_0x4743b1['userId']));_0x4743b1['automation']&&_0x4c724d['set']('automation',String(_0x4743b1['automation']));const _0x4eeab1=API_BASE+'/tasks/stats'+(_0x4c724d['toString']()?'?'+_0x4c724d['toString']():''),_0x514be8=await fetch(_0x4eeab1);if(!_0x514be8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x514be8['statusText']);return await _0x514be8['json']();},async 'getTasks'(_0x9e405a={}){const _0x4a5d30=new URLSearchParams();_0x9e405a['status']&&_0x4a5d30['set']('status',String(_0x9e405a['status']));_0x9e405a['environment']&&_0x4a5d30['set']('environment',String(_0x9e405a['environment']));_0x9e405a['automation']&&_0x4a5d30['set']('automation',String(_0x9e405a['automation']));if(_0x9e405a['include']){const _0x60338d=Array['isArray'](_0x9e405a['include'])?_0x9e405a['include']['join'](','):String(_0x9e405a['include']);_0x60338d&&_0x4a5d30['set']('include',_0x60338d);}_0x9e405a['filter']&&_0x4a5d30['set']('filter',String(_0x9e405a['filter']));_0x9e405a['page']&&_0x4a5d30['set']('page',String(_0x9e405a['page']));_0x9e405a['limit']&&_0x4a5d30['set']('limit',String(_0x9e405a['limit']));_0x9e405a['userId']&&_0x4a5d30['set']('userId',String(_0x9e405a['userId']));_0x9e405a['search']&&_0x4a5d30['set']('search',String(_0x9e405a['search']));_0x9e405a['includeChildTasks']&&_0x4a5d30['set']('includeChildTasks','true');const _0x2b115c=API_BASE+'/tasks'+(_0x4a5d30['toString']()?'?'+_0x4a5d30['toString']():''),_0x4ce87e=await fetch(_0x2b115c);if(!_0x4ce87e['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4ce87e['statusText']);return await _0x4ce87e['json']();},async 'getAutomations'(_0x2a27c5={}){const _0x360c2a=new URLSearchParams();_0x2a27c5['environment']&&_0x360c2a['set']('environment',String(_0x2a27c5['environment']));const _0x4226af=await fetch(API_BASE+'/api/automations'+(_0x360c2a['toString']()?'?'+_0x360c2a['toString']():''));if(!_0x4226af['ok']){const _0x28b6e0=await _0x4226af['json']()['catch'](()=>({}));throw new Error(_0x28b6e0['message']||_0x28b6e0['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4226af['statusText']);}return await _0x4226af['json']();},async 'getAutomation'(_0x1c31f7){const _0x539de7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c31f7));if(!_0x539de7['ok']){const _0x1e64c1=await _0x539de7['json']()['catch'](()=>({}));throw new Error(_0x1e64c1['message']||_0x1e64c1['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539de7['statusText']);}return await _0x539de7['json']();},async 'createAutomation'(_0xcec2f8){const _0x276401=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcec2f8||{})});if(!_0x276401['ok']){const _0xb324ed=await _0x276401['json']()['catch'](()=>({}));throw new Error(_0xb324ed['message']||_0xb324ed['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x276401['statusText']);}return await _0x276401['json']();},async 'updateAutomation'(_0x913043,_0x195e47){const _0x915938=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x913043),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195e47||{})});if(!_0x915938['ok']){const _0xc7d5af=await _0x915938['json']()['catch'](()=>({}));throw new Error(_0xc7d5af['message']||_0xc7d5af['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x915938['statusText']);}return await _0x915938['json']();},async 'deleteAutomation'(_0x809c9f){const _0x149bea=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x809c9f),{'method':'DELETE'});if(!_0x149bea['ok']){const _0x4eac0b=await _0x149bea['json']()['catch'](()=>({}));throw new Error(_0x4eac0b['message']||_0x4eac0b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x149bea['statusText']);}return await _0x149bea['json']();},async 'triggerAutomation'(_0x127eb9){const _0xa8ccc2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x127eb9)+'/trigger',{'method':'POST'});if(!_0xa8ccc2['ok']){const _0x529c41=await _0xa8ccc2['json']()['catch'](()=>({}));throw new Error(_0x529c41['message']||_0x529c41['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa8ccc2['statusText']);}return await _0xa8ccc2['json']();},async 'setAutomationEnabled'(_0x1acd6e,_0xe6eec3){const _0x8afeb3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1acd6e)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe6eec3})});if(!_0x8afeb3['ok']){const _0x4194f4=await _0x8afeb3['json']()['catch'](()=>({}));throw new Error(_0x4194f4['message']||_0x4194f4['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x8afeb3['statusText']);}return await _0x8afeb3['json']();},async 'getAutomationHistory'(_0x2f351c,_0x13a11f=0x32){const _0x125920=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f351c)+'/history?limit='+encodeURIComponent(String(_0x13a11f)));if(!_0x125920['ok']){const _0x7eaf5a=await _0x125920['json']()['catch'](()=>({}));throw new Error(_0x7eaf5a['message']||_0x7eaf5a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x125920['statusText']);}return await _0x125920['json']();},async 'getTask'(_0x14346b,_0xe8a522={}){const _0x401b32=new URLSearchParams();if(_0xe8a522['include']){const _0x1411ad=Array['isArray'](_0xe8a522['include'])?_0xe8a522['include']['join'](','):String(_0xe8a522['include']);if(_0x1411ad)_0x401b32['set']('include',_0x1411ad);}const _0xd35fe4=await fetch(API_BASE+'/tasks/'+_0x14346b+(_0x401b32['toString']()?'?'+_0x401b32['toString']():''));if(!_0xd35fe4['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xd35fe4['statusText']);return await _0xd35fe4['json']();},async 'getTaskResults'(_0x3a17d5){const _0x180c8f=await fetch(API_BASE+'/tasks/'+_0x3a17d5+'/results');if(!_0x180c8f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x180c8f['statusText']);return await _0x180c8f['json']();},async 'getTaskPatches'(_0x50586e){const _0x1f9a6a=await fetch(API_BASE+'/tasks/'+_0x50586e+'/patches');if(!_0x1f9a6a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1f9a6a['statusText']);return await _0x1f9a6a['json']();},async 'getTaskAttachments'(_0x58587c){const _0x28bec7=await fetch(API_BASE+'/tasks/'+_0x58587c+'/attachments');if(!_0x28bec7['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x28bec7['statusText']);return await _0x28bec7['json']();},async 'uploadAttachments'(_0x39de27,_0x5bf0b2){const _0x1e96e1=new FormData();for(const _0x257a0f of _0x5bf0b2){_0x1e96e1['append']('attachments',_0x257a0f);}const _0x11cc98=await fetch(API_BASE+'/tasks/'+_0x39de27+'/attachments',{'method':'POST','body':_0x1e96e1});if(!_0x11cc98['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x11cc98['statusText']);return await _0x11cc98['json']();},async 'isAINameGenerationAvailable'(){try{const _0x25a756=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x25a756['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x25a756['json']();}catch(_0x2e1d2a){return{'available':![],'reason':_0x2e1d2a['message']};}},async 'generateTaskName'(_0x568af4){try{const _0x581042=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x568af4})});return await _0x581042['json']();}catch(_0x3ec8f3){return{'success':![],'error':_0x3ec8f3['message']};}},async 'createTask'(_0x5c2598){let _0x4517b4,_0x124c76={};if(_0x5c2598['files']&&_0x5c2598['files']['length']>0x0){const _0x5b665a=new FormData();for(const [_0x4f040b,_0x513c4c]of Object['entries'](_0x5c2598)){if(_0x4f040b!=='files'){if(_0x513c4c==null)continue;typeof _0x513c4c==='object'?_0x5b665a['append'](_0x4f040b,JSON['stringify'](_0x513c4c)):_0x5b665a['append'](_0x4f040b,String(_0x513c4c));}}for(const _0x17a843 of _0x5c2598['files']){_0x5b665a['append']('attachments',_0x17a843);}_0x4517b4=_0x5b665a;}else _0x124c76['Content-Type']='application/json',_0x4517b4=JSON['stringify'](_0x5c2598);const _0x47fa8b=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x124c76,'body':_0x4517b4});if(!_0x47fa8b['ok']){const _0x8fe7ad=await _0x47fa8b['json'](),_0x3adb8f=new Error(_0x8fe7ad['error']||'Failed\x20to\x20create\x20task:\x20'+_0x47fa8b['statusText']),{message:_0x3e62d8,..._0x2c1167}=_0x8fe7ad;Object['assign'](_0x3adb8f,_0x2c1167);throw _0x3adb8f;}return await _0x47fa8b['json']();},async 'createTestTask'(_0x2de358){const _0x2c623b=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2de358)});if(!_0x2c623b['ok']){const _0x46248a=await _0x2c623b['json']();throw new Error(_0x46248a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x2c623b['statusText']);}return await _0x2c623b['json']();},async 'createEphemeralTest'(_0x33395a){const _0x263d7c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33395a)});if(!_0x263d7c['ok']){const _0x9d2d8f=await _0x263d7c['json']();throw new Error(_0x9d2d8f['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x263d7c['statusText']);}return await _0x263d7c['json']();},async 'createDeployTask'(_0x53501e){const _0x58c20b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53501e)});if(!_0x58c20b['ok']){const _0xb46254=await _0x58c20b['json']();throw new Error(_0xb46254['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x58c20b['statusText']);}return await _0x58c20b['json']();},async 'getEnvironments'(){const _0x2cd8eb=await fetch(API_BASE+'/environments');if(!_0x2cd8eb['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2cd8eb['statusText']);return await _0x2cd8eb['json']();},async 'getEnvironment'(_0x4b53e6){const _0x1d6802=await fetch(API_BASE+'/environments/'+_0x4b53e6);if(!_0x1d6802['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1d6802['statusText']);return await _0x1d6802['json']();},async 'getEnvironmentRepoHistory'(_0x2fe623,_0x5553c6,_0x5c423e={}){if(!_0x2fe623||!_0x5553c6)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x220502=new URLSearchParams();if(_0x5c423e['limit'])_0x220502['set']('limit',String(_0x5c423e['limit']));if(_0x5c423e['offset'])_0x220502['set']('offset',String(_0x5c423e['offset']));if(_0x5c423e['search'])_0x220502['set']('search',String(_0x5c423e['search']));if(_0x5c423e['branch'])_0x220502['set']('branch',String(_0x5c423e['branch']));const _0x45720f=API_BASE+'/environments/'+encodeURIComponent(_0x2fe623)+'/repos/'+encodeURIComponent(_0x5553c6)+'/git/history',_0xd41bce=await fetch(''+_0x45720f+(_0x220502['toString']()?'?'+_0x220502['toString']():''));if(!_0xd41bce['ok']){const _0x11fd2d=await _0xd41bce['json']()['catch'](()=>({}));throw new Error(_0x11fd2d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0xd41bce['statusText']);}return await _0xd41bce['json']();},async 'getEnvironmentRepoCommit'(_0x24c751,_0x11d6c9,_0x2ca77a){if(!_0x24c751||!_0x11d6c9||!_0x2ca77a)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87ff78=API_BASE+'/environments/'+encodeURIComponent(_0x24c751)+'/repos/'+encodeURIComponent(_0x11d6c9)+'/git/commits/'+encodeURIComponent(_0x2ca77a),_0x415fc4=await fetch(_0x87ff78);if(!_0x415fc4['ok']){const _0x4bcb20=await _0x415fc4['json']()['catch'](()=>({}));throw new Error(_0x4bcb20['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x415fc4['statusText']);}return await _0x415fc4['json']();},async 'getEnvironmentRepoBranches'(_0x41e141,_0x1ad26a){if(!_0x41e141||!_0x1ad26a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3d9946=API_BASE+'/environments/'+encodeURIComponent(_0x41e141)+'/repos/'+encodeURIComponent(_0x1ad26a)+'/git/branches',_0xd00936=await fetch(_0x3d9946);if(!_0xd00936['ok']){const _0x39aaf2=await _0xd00936['json']()['catch'](()=>({}));throw new Error(_0x39aaf2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xd00936['statusText']);}return await _0xd00936['json']();},async 'revertEnvironmentRepoCommit'(_0x576286,_0x38b9e1,_0x333ea4,_0x489de9={}){if(!_0x576286||!_0x38b9e1||!_0x333ea4)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b7843=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x576286)+'/repos/'+encodeURIComponent(_0x38b9e1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x333ea4,..._0x489de9})});if(!_0x2b7843['ok']){const _0x1164ad=await _0x2b7843['json']()['catch'](()=>({}));throw new Error(_0x1164ad['message']||_0x1164ad['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b7843['statusText']);}return await _0x2b7843['json']();},async 'getTemplates'(_0x23e8cf={}){const _0x2cca8a=new URLSearchParams();if(_0x23e8cf['include']){const _0x3b602f=Array['isArray'](_0x23e8cf['include'])?_0x23e8cf['include']['join'](','):String(_0x23e8cf['include']);if(_0x3b602f)_0x2cca8a['set']('include',_0x3b602f);}const _0xfaf8=await fetch(API_BASE+'/templates'+(_0x2cca8a['toString']()?'?'+_0x2cca8a['toString']():''));if(!_0xfaf8['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0xfaf8['statusText']);return await _0xfaf8['json']();},async 'getTemplatesForEnvironment'(_0x1d4fc0,_0x418509={}){if(!_0x1d4fc0)throw new Error('Environment\x20name\x20is\x20required');const _0x3b7155=new URLSearchParams();if(_0x418509['include']){const _0x222d06=Array['isArray'](_0x418509['include'])?_0x418509['include']['join'](','):String(_0x418509['include']);if(_0x222d06)_0x3b7155['set']('include',_0x222d06);}const _0x958913=await fetch(API_BASE+'/templates/'+_0x1d4fc0+(_0x3b7155['toString']()?'?'+_0x3b7155['toString']():''));if(!_0x958913['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x1d4fc0+':\x20'+_0x958913['statusText']);return await _0x958913['json']();},async 'getTemplate'(_0x441a4f,_0x3d4143,_0x2e9311={}){if(!_0x441a4f||!_0x3d4143)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x461e10=new URLSearchParams();if(_0x2e9311['include']){const _0x3a96f4=Array['isArray'](_0x2e9311['include'])?_0x2e9311['include']['join'](','):String(_0x2e9311['include']);if(_0x3a96f4)_0x461e10['set']('include',_0x3a96f4);}const _0x105ba7=await fetch(API_BASE+'/templates/'+_0x441a4f+'/'+_0x3d4143+(_0x461e10['toString']()?'?'+_0x461e10['toString']():''));if(!_0x105ba7['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x105ba7['statusText']);return await _0x105ba7['json']();},async 'getTaskLogs'(_0x2129b4,_0xa20923={}){if(!_0x2129b4)throw new Error('Task\x20ID\x20is\x20required');const _0x31078e=new URLSearchParams();_0xa20923['tail']&&_0x31078e['set']('tail',String(_0xa20923['tail']));const _0x4c8e42=await fetch(API_BASE+'/tasks/'+_0x2129b4+'/logs'+(_0x31078e['toString']()?'?'+_0x31078e['toString']():''));if(!_0x4c8e42['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x4c8e42['statusText']);return await _0x4c8e42['text']();},async 'getContainers'(){const _0x2e3066=await fetch(API_BASE+'/containers');if(!_0x2e3066['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2e3066['statusText']);return await _0x2e3066['json']();},async 'getContainer'(_0x2b9759){const _0x5ae44e=await fetch(API_BASE+'/containers/'+_0x2b9759);if(!_0x5ae44e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ae44e['statusText']);return await _0x5ae44e['json']();},async 'startInteractiveContainer'(_0x4fee50){const _0x2ad9cf=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fee50)});if(!_0x2ad9cf['ok']){const _0x5e18fd=await _0x2ad9cf['json']()['catch'](()=>({}));throw new Error(_0x5e18fd['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2ad9cf['statusText']);}return await _0x2ad9cf['json']();},async 'startContainerCodeServer'(_0x1726fb,_0xd0b934={}){if(!_0x1726fb)throw new Error('Container\x20ID\x20is\x20required');const _0xc6e470=new URLSearchParams();_0xd0b934['theme']&&_0xc6e470['set']('theme',_0xd0b934['theme']);const _0x2b9a19=await fetch(API_BASE+'/containers/'+_0x1726fb+'/code-server'+(_0xc6e470['toString']()?'?'+_0xc6e470['toString']():'')),_0x5ee94d=await _0x2b9a19['json']()['catch'](()=>({}));if(!_0x2b9a19['ok'])throw new Error(_0x5ee94d['message']||_0x5ee94d['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x2b9a19['statusText']);return _0x5ee94d;},async 'stopContainer'(_0x4fbcdb){const _0x499f08=await fetch(API_BASE+'/containers/'+_0x4fbcdb,{'method':'DELETE'});if(!_0x499f08['ok']){const _0x1c002a=await _0x499f08['json']()['catch'](()=>({}));throw new Error(_0x1c002a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x499f08['statusText']);}return await _0x499f08['json']();},async 'stopTask'(_0x2a4c8e){if(!_0x2a4c8e)throw new Error('Task\x20ID\x20is\x20required');const _0xc66dca=await fetch(API_BASE+'/tasks/'+_0x2a4c8e+'/stop',{'method':'POST'});if(!_0xc66dca['ok']){const _0x318c2f=await _0xc66dca['json']()['catch'](()=>({}));throw new Error(_0x318c2f['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xc66dca['statusText']);}return await _0xc66dca['json']();},async 'interruptTask'(_0x1a5ecf){if(!_0x1a5ecf)throw new Error('Task\x20ID\x20is\x20required');const _0x5a1651=await fetch(API_BASE+'/tasks/'+_0x1a5ecf+'/interrupt',{'method':'POST'});if(!_0x5a1651['ok']){const _0x41d6e8=await _0x5a1651['json']()['catch'](()=>({}));throw new Error(_0x41d6e8['error']||_0x41d6e8['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5a1651['statusText']);}return await _0x5a1651['json']();},async 'startTask'(_0x522ac6){if(!_0x522ac6)throw new Error('Task\x20ID\x20is\x20required');const _0x274713=await fetch(API_BASE+'/tasks/'+_0x522ac6+'/start',{'method':'POST'});if(!_0x274713['ok']){const _0x10301d=await _0x274713['json']()['catch'](()=>({}));throw new Error(_0x10301d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x274713['statusText']);}return await _0x274713['json']();},async 'deleteTask'(_0x177f1f){if(!_0x177f1f)throw new Error('Task\x20ID\x20is\x20required');const _0x9ddcd4=await fetch(API_BASE+'/tasks/'+_0x177f1f,{'method':'DELETE'});if(!_0x9ddcd4['ok']){const _0xc04fa=await _0x9ddcd4['json']()['catch'](()=>({}));throw new Error(_0xc04fa['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x9ddcd4['statusText']);}return await _0x9ddcd4['json']();},async 'refreshTasksFromDisk'(){const _0x28058c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x28058c['ok']){const _0x552488=await _0x28058c['json']()['catch'](()=>({}));throw new Error(_0x552488['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x28058c['statusText']);}return await _0x28058c['json']();},async 'approveTask'(_0x561380,_0x726cef={}){if(!_0x561380)throw new Error('Task\x20ID\x20is\x20required');const _0x3603dd={'commit_message':_0x726cef['commit_message']||'','pull':_0x726cef['pull']??![],'push':_0x726cef['push']??![]};_0x726cef['new_branch']&&(_0x3603dd['new_branch']=_0x726cef['new_branch']);const _0x9bbcff=await fetch(API_BASE+'/tasks/'+_0x561380+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3603dd)});if(!_0x9bbcff['ok']){const _0x36caa4=await _0x9bbcff['json']()['catch'](()=>({}));let _0xa5fb6e=_0x36caa4['error']||_0x36caa4['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x9bbcff['statusText'];if(_0x36caa4['results']&&Array['isArray'](_0x36caa4['results'])){const _0x327e74=_0x36caa4['results']['filter'](_0x2d5103=>!_0x2d5103['success']&&_0x2d5103['error']);_0x327e74['length']>0x0&&(_0xa5fb6e=_0x327e74[0x0]['error']);}throw new Error(_0xa5fb6e);}return await _0x9bbcff['json']();},async 'getPullRequestInfo'(_0x250ebc){if(!_0x250ebc)throw new Error('Task\x20ID\x20is\x20required');const _0x1bb2e3=await fetch(API_BASE+'/tasks/'+_0x250ebc+'/pull-request-info');if(!_0x1bb2e3['ok']){const _0x3f6c37=await _0x1bb2e3['json']()['catch'](()=>({}));throw new Error(_0x3f6c37['error']||_0x3f6c37['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1bb2e3['statusText']);}return await _0x1bb2e3['json']();},async 'createPullRequests'(_0x6a820a,_0x44cccc){if(!_0x6a820a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44cccc||!Array['isArray'](_0x44cccc))throw new Error('repos\x20array\x20is\x20required');const _0x1b4242=await fetch(API_BASE+'/tasks/'+_0x6a820a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x44cccc})});if(!_0x1b4242['ok']){const _0x34f915=await _0x1b4242['json']()['catch'](()=>({}));let _0x3b9d50=_0x34f915['error']||_0x34f915['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1b4242['statusText'];if(_0x34f915['results']&&Array['isArray'](_0x34f915['results'])){const _0xf6353b=_0x34f915['results']['filter'](_0x3b9c69=>!_0x3b9c69['success']&&_0x3b9c69['error']);_0xf6353b['length']>0x0&&(_0x3b9d50=_0xf6353b[0x0]['error']);}throw new Error(_0x3b9d50);}return await _0x1b4242['json']();},async 'syncRepos'(_0x1a7baa){if(!_0x1a7baa)throw new Error('Task\x20ID\x20is\x20required');const _0xca7545=await fetch(API_BASE+'/tasks/'+_0x1a7baa+'/sync-repos',{'method':'POST'});if(!_0xca7545['ok']){const _0x233e13=await _0xca7545['json']()['catch'](()=>({}));throw new Error(_0x233e13['error']||_0x233e13['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xca7545['statusText']);}return await _0xca7545['json']();},async 'getIbmiSyncInfo'(_0x2c578c){if(!_0x2c578c)throw new Error('Task\x20ID\x20is\x20required');const _0x21fff5=await fetch(API_BASE+'/tasks/'+_0x2c578c+'/ibmi-sync-info');if(!_0x21fff5['ok']){const _0x2a0753=await _0x21fff5['json']()['catch'](()=>({}));throw new Error(_0x2a0753['error']||_0x2a0753['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x21fff5['json']();},async 'getSyncFiles'(_0x2ae913){if(!_0x2ae913)throw new Error('Task\x20ID\x20is\x20required');const _0x451026=await fetch(API_BASE+'/tasks/'+_0x2ae913+'/sync-to-ibmi/files');if(!_0x451026['ok']){const _0x50f9eb=await _0x451026['json']()['catch'](()=>({}));throw new Error(_0x50f9eb['error']||_0x50f9eb['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x451026['json']();},async 'syncToIbmi'(_0x1c69db,_0x437183,_0x54595d=null,_0x1eed15=null,_0x52a08a=null){if(!_0x1c69db)throw new Error('Task\x20ID\x20is\x20required');const _0x2f97e1={'library':_0x437183};if(_0x54595d)_0x2f97e1['user']=_0x54595d;if(_0x1eed15)_0x2f97e1['password']=_0x1eed15;if(_0x52a08a)_0x2f97e1['files']=_0x52a08a;const _0x3b6d18=await fetch(API_BASE+'/tasks/'+_0x1c69db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f97e1)});if(!_0x3b6d18['ok']){const _0x5865cb=await _0x3b6d18['json']()['catch'](()=>({}));throw new Error(_0x5865cb['error']||_0x5865cb['message']||'Sync\x20failed');}return await _0x3b6d18['json']();},async 'getIbmiSyncLog'(_0x3b30a7){if(!_0x3b30a7)throw new Error('Task\x20ID\x20is\x20required');const _0x5ded18=await fetch(API_BASE+'/tasks/'+_0x3b30a7+'/ibmi-sync-log');if(!_0x5ded18['ok']){const _0x5d17ef=await _0x5ded18['json']()['catch'](()=>({}));throw new Error(_0x5d17ef['error']||_0x5d17ef['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5ded18['json']();},async 'pullChanges'(_0x30525e){if(!_0x30525e)throw new Error('Task\x20ID\x20is\x20required');const _0x56ef32=await fetch(API_BASE+'/tasks/'+_0x30525e+'/pull-changes',{'method':'POST'});if(!_0x56ef32['ok']){const _0x98ebfd=await _0x56ef32['json']()['catch'](()=>({}));throw new Error(_0x98ebfd['error']||_0x98ebfd['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x56ef32['statusText']);}return await _0x56ef32['json']();},async 'readFile'(_0x495420,_0x18f66e){if(!_0x495420)throw new Error('Task\x20ID\x20is\x20required');if(!_0x18f66e)throw new Error('File\x20path\x20is\x20required');const _0x402e21=await fetch(API_BASE+'/tasks/'+_0x495420+'/files?path='+encodeURIComponent(_0x18f66e));if(!_0x402e21['ok']){const _0x33750d=await _0x402e21['json']()['catch'](()=>({}));throw new Error(_0x33750d['error']||_0x33750d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x402e21['statusText']);}return await _0x402e21['json']();},'getTaskFileDownloadUrl'(_0x367de9,_0x344a38){if(!_0x367de9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x344a38)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x367de9+'/files/download?path='+encodeURIComponent(_0x344a38);},async 'writeFile'(_0x5e7219,_0x4d5dfa,_0x56fe70){if(!_0x5e7219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d5dfa)throw new Error('File\x20path\x20is\x20required');if(_0x56fe70===undefined)throw new Error('Content\x20is\x20required');const _0x502222=await fetch(API_BASE+'/tasks/'+_0x5e7219+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4d5dfa,'content':_0x56fe70})});if(!_0x502222['ok']){const _0x20454e=await _0x502222['json']()['catch'](()=>({}));throw new Error(_0x20454e['error']||_0x20454e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x502222['statusText']);}return await _0x502222['json']();},async 'uploadTaskFiles'(_0x2e024c,_0x4df537,_0x2fc1ba){if(!_0x2e024c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df537)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2fc1ba||_0x2fc1ba['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x44ff65=new FormData();_0x44ff65['append']('targetDir',_0x4df537);for(const _0xd79ca4 of _0x2fc1ba){_0x44ff65['append']('files',_0xd79ca4,_0xd79ca4['name']);}const _0x234e8b=await fetch(API_BASE+'/tasks/'+_0x2e024c+'/files/upload',{'method':'POST','body':_0x44ff65});if(!_0x234e8b['ok']){const _0x4827d1=await _0x234e8b['json']()['catch'](()=>({}));throw new Error(_0x4827d1['error']||_0x4827d1['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x234e8b['statusText']);}return await _0x234e8b['json']();},async 'createDirectory'(_0x58e6f5,_0x34184f){if(!_0x58e6f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34184f)throw new Error('Directory\x20path\x20is\x20required');const _0x3fe71d=await fetch(API_BASE+'/tasks/'+_0x58e6f5+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x34184f})});if(!_0x3fe71d['ok']){const _0x4483d2=await _0x3fe71d['json']()['catch'](()=>({}));throw new Error(_0x4483d2['error']||_0x4483d2['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3fe71d['statusText']);}return await _0x3fe71d['json']();},async 'renamePath'(_0x201083,_0x22b2ae,_0x56cbee){if(!_0x201083)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22b2ae)throw new Error('Source\x20path\x20is\x20required');if(!_0x56cbee)throw new Error('Destination\x20path\x20is\x20required');const _0x433361=await fetch(API_BASE+'/tasks/'+_0x201083+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22b2ae,'newPath':_0x56cbee})});if(!_0x433361['ok']){const _0x3118ac=await _0x433361['json']()['catch'](()=>({}));throw new Error(_0x3118ac['error']||_0x3118ac['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x433361['statusText']);}return await _0x433361['json']();},async 'deleteFile'(_0x337504,_0x4bc59f){if(!_0x337504)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4bc59f)throw new Error('File\x20path\x20is\x20required');const _0x2e84f1=await fetch(API_BASE+'/tasks/'+_0x337504+'/files?path='+encodeURIComponent(_0x4bc59f),{'method':'DELETE'});if(!_0x2e84f1['ok']){const _0x26f391=await _0x2e84f1['json']()['catch'](()=>({}));throw new Error(_0x26f391['error']||_0x26f391['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2e84f1['statusText']);}return await _0x2e84f1['json']();},async 'deleteDirectory'(_0x29edae,_0x51af77){if(!_0x29edae)throw new Error('Task\x20ID\x20is\x20required');if(!_0x51af77)throw new Error('Directory\x20path\x20is\x20required');const _0x1e9f61=await fetch(API_BASE+'/tasks/'+_0x29edae+'/files/directory?path='+encodeURIComponent(_0x51af77),{'method':'DELETE'});if(!_0x1e9f61['ok']){const _0x217a4b=await _0x1e9f61['json']()['catch'](()=>({}));throw new Error(_0x217a4b['error']||_0x217a4b['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x1e9f61['statusText']);}return await _0x1e9f61['json']();},async 'discardFile'(_0x55b25d,_0x28dd8e,_0x492fc8){if(!_0x55b25d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28dd8e)throw new Error('File\x20path\x20is\x20required');if(!_0x492fc8)throw new Error('Repository\x20path\x20is\x20required');const _0x33cd11=await fetch(API_BASE+'/tasks/'+_0x55b25d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28dd8e,'repoPath':_0x492fc8})});if(!_0x33cd11['ok']){const _0x39f411=await _0x33cd11['json']()['catch'](()=>({}));throw new Error(_0x39f411['error']||_0x39f411['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x33cd11['statusText']);}return await _0x33cd11['json']();},async 'followUpTask'(_0x5c565a,_0x354fa8={}){if(!_0x5c565a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x354fa8['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x23fded,_0x73a88={};if(_0x354fa8['files']&&_0x354fa8['files']['length']>0x0){const _0x3931bc=new FormData();_0x3931bc['append']('instructions',_0x354fa8['instructions']);for(const _0x49513c of _0x354fa8['files']){_0x3931bc['append']('attachments',_0x49513c);}_0x23fded=_0x3931bc;}else _0x73a88['Content-Type']='application/json',_0x23fded=JSON['stringify']({'instructions':_0x354fa8['instructions']});const _0x40d10e=await fetch(API_BASE+'/tasks/'+_0x5c565a+'/follow-up',{'method':'POST','headers':_0x73a88,'body':_0x23fded});if(!_0x40d10e['ok']){const _0x53ea1f=await _0x40d10e['json']()['catch'](()=>({}));throw new Error(_0x53ea1f['error']||_0x53ea1f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x40d10e['statusText']);}return await _0x40d10e['json']();},async 'getTaskRewindPoints'(_0x28c6c1){if(!_0x28c6c1)throw new Error('Task\x20ID\x20is\x20required');const _0x43fe96=await fetch(API_BASE+'/tasks/'+_0x28c6c1+'/rewind-points');if(!_0x43fe96['ok']){const _0x2e28cf=await _0x43fe96['json']()['catch'](()=>({}));throw new Error(_0x2e28cf['error']||_0x2e28cf['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x43fe96['statusText']);}return await _0x43fe96['json']();},async 'rewindTask'(_0x465618,_0x8aa8c8={}){if(!_0x465618)throw new Error('Task\x20ID\x20is\x20required');const _0x108bfb=Number['isInteger'](_0x8aa8c8['targetFollowUpCount'])?_0x8aa8c8['targetFollowUpCount']:0x0,_0x38f889={'targetFollowUpCount':_0x108bfb};typeof _0x8aa8c8['instructions']==='string'&&_0x8aa8c8['instructions']['trim']()&&(_0x38f889['instructions']=_0x8aa8c8['instructions']['trim']());typeof _0x8aa8c8['rewindFiles']==='boolean'&&(_0x38f889['rewindFiles']=_0x8aa8c8['rewindFiles']);const _0x36a2a3=await fetch(API_BASE+'/tasks/'+_0x465618+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38f889)});if(!_0x36a2a3['ok']){const _0x21e438=await _0x36a2a3['json']()['catch'](()=>({}));throw new Error(_0x21e438['error']||_0x21e438['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x36a2a3['statusText']);}return await _0x36a2a3['json']();},async 'login'(_0x2da6b9,_0x5a2d52){const _0xaed262=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2da6b9,'password':_0x5a2d52})});if(!_0xaed262['ok']){const _0x4a1383=await _0xaed262['json']();throw new Error(_0x4a1383['message']||'Login\x20failed');}return await _0xaed262['json']();},async 'logout'(){const _0x3dbeeb=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3dbeeb['ok']){const _0x21918e=await _0x3dbeeb['json']();throw new Error(_0x21918e['message']||'Logout\x20failed');}return await _0x3dbeeb['json']();},async 'getCurrentUser'(){const _0x1fc009=await fetch(API_BASE+'/auth/me');if(!_0x1fc009['ok'])throw new Error('Not\x20authenticated');const _0x4ec6fc=await _0x1fc009['json']();return _0x4ec6fc['user'];},async 'getRolesInfo'(){const _0x3a33c9=await fetch(API_BASE+'/users/roles');if(!_0x3a33c9['ok']){const _0x4c4671=await _0x3a33c9['json']();throw new Error(_0x4c4671['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3a33c9['json']();},async 'getUsers'(){const _0x2e2a0e=await fetch(API_BASE+'/users');if(!_0x2e2a0e['ok']){const _0x4a9195=await _0x2e2a0e['json']();throw new Error(_0x4a9195['message']||'Failed\x20to\x20get\x20users');}return await _0x2e2a0e['json']();},async 'getUser'(_0x57392f){const _0x276ac7=await fetch(API_BASE+'/users/'+_0x57392f);if(!_0x276ac7['ok']){const _0x49e0d4=await _0x276ac7['json']();throw new Error(_0x49e0d4['message']||'Failed\x20to\x20get\x20user');}return await _0x276ac7['json']();},async 'createUser'(_0x45f785){const _0x30f6fa=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45f785)});if(!_0x30f6fa['ok']){const _0x1fc15c=await _0x30f6fa['json']();throw new Error(_0x1fc15c['message']||'Failed\x20to\x20create\x20user');}return await _0x30f6fa['json']();},async 'updateUser'(_0x43b86a,_0x305518){const _0x2eba29=await fetch(API_BASE+'/users/'+_0x43b86a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x305518)});if(!_0x2eba29['ok']){const _0x12899f=await _0x2eba29['json']();throw new Error(_0x12899f['message']||'Failed\x20to\x20update\x20user');}return await _0x2eba29['json']();},async 'deleteUser'(_0x45f484){const _0xce2117=await fetch(API_BASE+'/users/'+_0x45f484,{'method':'DELETE'});if(!_0xce2117['ok']){const _0x53e4e0=await _0xce2117['json']();throw new Error(_0x53e4e0['message']||'Failed\x20to\x20delete\x20user');}return await _0xce2117['json']();},async 'stopAllContainers'(){const _0x28da70=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3a8d98=await _0x28da70['json']()['catch'](()=>({}));if(!_0x28da70['ok'])throw new Error(_0x3a8d98['message']||_0x3a8d98['error']||'Failed\x20to\x20stop\x20containers');return _0x3a8d98;},async 'removeStoppedContainers'(){const _0x31b665=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c4374=await _0x31b665['json']()['catch'](()=>({}));if(!_0x31b665['ok'])throw new Error(_0x5c4374['message']||_0x5c4374['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c4374;},async 'pruneDockerResources'(){const _0x162a49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5b46a2=await _0x162a49['json']()['catch'](()=>({}));if(!_0x162a49['ok'])throw new Error(_0x5b46a2['message']||_0x5b46a2['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5b46a2;},async 'createPasswordToken'(_0x2bac72,_0x2b2d97='setup',_0x200444=![]){const _0x31f1c3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2bac72,'type':_0x2b2d97,'sendEmail':_0x200444})});if(!_0x31f1c3['ok']){const _0x47227b=await _0x31f1c3['json']();throw new Error(_0x47227b['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31f1c3['json']();},async 'getEmailConfig'(){const _0x14682c=await fetch(API_BASE+'/password/email-config');if(!_0x14682c['ok']){const _0x5ce32d=await _0x14682c['json']();throw new Error(_0x5ce32d['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14682c['json']();},async 'updateTaskName'(_0x801a87,_0x271cf7){const _0x28856e=await fetch(API_BASE+'/tasks/'+_0x801a87,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x271cf7})});if(!_0x28856e['ok']){const _0x3c0972=await _0x28856e['json']();throw new Error(_0x3c0972['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x28856e['json']();},async 'pinTask'(_0x334842,_0x36c3fb,_0x40ecd3=null){if(!_0x334842)throw new Error('Task\x20ID\x20is\x20required');const _0x184247={'pinned':_0x36c3fb};_0x40ecd3&&_0x40ecd3['length']>0x0&&(_0x184247['additionalTaskIds']=_0x40ecd3);const _0x438a4d=await fetch(API_BASE+'/tasks/'+_0x334842+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x184247)});if(!_0x438a4d['ok']){const _0x4c4cdd=await _0x438a4d['json']();throw new Error(_0x4c4cdd['error']||'Failed\x20to\x20pin\x20task');}return await _0x438a4d['json']();},async 'setTaskWinner'(_0x18e2bb,_0x52bbfd,_0x12dcef=[]){if(!_0x18e2bb)throw new Error('Task\x20ID\x20is\x20required');const _0x1ab404=await fetch(API_BASE+'/tasks/'+_0x18e2bb+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x52bbfd,'siblings':_0x12dcef})});if(!_0x1ab404['ok']){const _0x1724f5=await _0x1ab404['json']();throw new Error(_0x1724f5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ab404['json']();},async 'setTaskLoser'(_0x4e53fc,_0x41ae43){if(!_0x4e53fc)throw new Error('Task\x20ID\x20is\x20required');const _0x5c7eb4=await fetch(API_BASE+'/tasks/'+_0x4e53fc+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x41ae43})});if(!_0x5c7eb4['ok']){const _0x466343=await _0x5c7eb4['json']();throw new Error(_0x466343['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c7eb4['json']();},async 'createTaskGroup'(_0x1af15){const _0x385436=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1af15)});if(!_0x385436['ok']){const _0x144c33=await _0x385436['json']();throw new Error(_0x144c33['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x385436['json']();},async 'getTaskGroups'(_0x11b684={}){const _0x4bbfff=new URLSearchParams();if(_0x11b684['userId'])_0x4bbfff['set']('userId',String(_0x11b684['userId']));if(_0x11b684['status'])_0x4bbfff['set']('status',String(_0x11b684['status']));if(_0x11b684['limit'])_0x4bbfff['set']('limit',String(_0x11b684['limit']));const _0x1fc8da=API_BASE+'/tasks/groups'+(_0x4bbfff['toString']()?'?'+_0x4bbfff['toString']():''),_0x492b97=await fetch(_0x1fc8da);if(!_0x492b97['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x492b97['json']();},async 'getTaskGroup'(_0x5cb371){const _0x4e5487=await fetch(API_BASE+'/tasks/groups/'+_0x5cb371);if(!_0x4e5487['ok']){const _0x2097df=await _0x4e5487['json']();throw new Error(_0x2097df['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4e5487['json']();},async 'updateTaskGroup'(_0x47c2b6,_0x515b13,_0x1f6dff){const _0x566c04=await fetch(API_BASE+'/tasks/'+_0x47c2b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x515b13,'groupIndex':_0x1f6dff})});if(!_0x566c04['ok']){const _0x1e4bfc=await _0x566c04['json']();throw new Error(_0x1e4bfc['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x566c04['json']();},async 'removeTaskFromGroup'(_0x13a64d){return this['updateTaskGroup'](_0x13a64d,null,null);},async 'deleteTaskGroup'(_0xe42836,_0xf77dc7=![]){const _0x1114b4=_0xf77dc7?'?deleteTasks=true':'',_0x43ff7d=await fetch(API_BASE+'/tasks/groups/'+_0xe42836+_0x1114b4,{'method':'DELETE'});if(!_0x43ff7d['ok']){const _0xf7e456=await _0x43ff7d['json']();throw new Error(_0xf7e456['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5d5d58,_0x28a014){const _0x1579b1=await fetch(API_BASE+'/tasks/groups/'+_0x5d5d58+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x28a014})});if(!_0x1579b1['ok']){const _0x1a1f5b=await _0x1579b1['json']();throw new Error(_0x1a1f5b['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1579b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3681ad){if(!_0x3681ad)throw new Error('Task\x20ID\x20is\x20required');const _0x1e87af=await fetch(API_BASE+'/tasks/'+_0x3681ad+'/comments');if(!_0x1e87af['ok']){const _0x3c2619=await _0x1e87af['json']()['catch'](()=>({}));throw new Error(_0x3c2619['error']||'Failed\x20to\x20get\x20comments');}return await _0x1e87af['json']();},async 'addComment'(_0x34e884,_0x45e1cd){if(!_0x34e884)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45e1cd)throw new Error('Comment\x20content\x20is\x20required');const _0x50709d=await fetch(API_BASE+'/tasks/'+_0x34e884+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45e1cd})});if(!_0x50709d['ok']){const _0x256ec5=await _0x50709d['json']()['catch'](()=>({}));throw new Error(_0x256ec5['error']||'Failed\x20to\x20add\x20comment');}return await _0x50709d['json']();},async 'updateComment'(_0xaee489,_0x521797,_0x394ef1){if(!_0xaee489)throw new Error('Task\x20ID\x20is\x20required');if(!_0x521797)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x394ef1)throw new Error('Comment\x20content\x20is\x20required');const _0x1d45d2=await fetch(API_BASE+'/tasks/'+_0xaee489+'/comments/'+_0x521797,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x394ef1})});if(!_0x1d45d2['ok']){const _0x76def4=await _0x1d45d2['json']()['catch'](()=>({}));throw new Error(_0x76def4['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d45d2['json']();},async 'deleteComment'(_0x556add,_0x5d51bd){if(!_0x556add)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d51bd)throw new Error('Comment\x20ID\x20is\x20required');const _0x5781fa=await fetch(API_BASE+'/tasks/'+_0x556add+'/comments/'+_0x5d51bd,{'method':'DELETE'});if(!_0x5781fa['ok']){const _0x512a6a=await _0x5781fa['json']()['catch'](()=>({}));throw new Error(_0x512a6a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5781fa['json']();},async 'createObjective'(_0x4cba3f){const _0x47ba68={'objective':!![],'name':_0x4cba3f['name']||'','environment':_0x4cba3f['environment']||null,'agents':_0x4cba3f['agents']||[],'branches':_0x4cba3f['branches']||{},'isPinned':_0x4cba3f['isPinned']||![],'parentObjectiveId':_0x4cba3f['parentObjectiveId']||null,'env_vars':_0x4cba3f['envVars']||{},'parameters':{'instructions':_0x4cba3f['instructions']||''},'files':_0x4cba3f['files']||[],'jira':_0x4cba3f['jira']||null};return this['createTask'](_0x47ba68);},async 'updateObjective'(_0x456cca,_0x163592,_0x359f0a=[],_0xf54b6b=[]){let _0x43d3be,_0x3bcc24={};const _0x5341c7={..._0x163592};_0xf54b6b&&_0xf54b6b['length']>0x0&&(_0x5341c7['removeAttachments']=_0xf54b6b);if(_0x359f0a&&_0x359f0a['length']>0x0){const _0x50efa2=new FormData();for(const [_0x3976d8,_0x3d8c2a]of Object['entries'](_0x5341c7)){if(_0x3d8c2a==null)continue;typeof _0x3d8c2a==='object'?_0x50efa2['append'](_0x3976d8,JSON['stringify'](_0x3d8c2a)):_0x50efa2['append'](_0x3976d8,String(_0x3d8c2a));}for(const _0x2e45f4 of _0x359f0a){_0x50efa2['append']('attachments',_0x2e45f4);}_0x43d3be=_0x50efa2;}else _0x3bcc24['Content-Type']='application/json',_0x43d3be=JSON['stringify'](_0x5341c7);const _0x154f8a=await fetch(API_BASE+'/tasks/'+_0x456cca,{'method':'PATCH','headers':_0x3bcc24,'body':_0x43d3be});if(!_0x154f8a['ok']){const _0x460b12=await _0x154f8a['json']();throw new Error(_0x460b12['error']||'Failed\x20to\x20update\x20objective');}return await _0x154f8a['json']();},async 'deleteObjective'(_0x2419c0){return this['deleteTask'](_0x2419c0);},async 'launchObjective'(_0x2f287e,_0x8761ce={}){const _0x4271f9=await fetch(API_BASE+'/tasks/'+_0x2f287e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x8761ce)});if(!_0x4271f9['ok']){const _0x42c424=await _0x4271f9['json']();throw new Error(_0x42c424['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4271f9['json']();},async 'getObjectiveAttachments'(_0x49064a){return this['getTaskAttachments'](_0x49064a);},async 'createJudgeTask'({environment:_0x4e1b37,judgeAgent:_0x5ae8b6,groupId:_0x18c15e,taskIds:_0x5a965d,judgeCustomInstructions:_0x1cb4b6,isPinned:_0x2528d1}){const _0x376ba3=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4e1b37,'judgeAgent':_0x5ae8b6,'groupId':_0x18c15e,'taskIds':_0x5a965d,'judgeCustomInstructions':_0x1cb4b6,'isPinned':_0x2528d1})});if(!_0x376ba3['ok']){const _0x4e5f85=await _0x376ba3['json']();throw new Error(_0x4e5f85['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x376ba3['json']();},async 'getJudgeTasks'(_0x575808){const _0x2df4db=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x575808));if(!_0x2df4db['ok']){const _0x4d4c8b=await _0x2df4db['json']();throw new Error(_0x4d4c8b['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2df4db['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x19ac10,_0x138df0,_0x1b444b=''){const _0x338a6c=await fetch(API_BASE+'/tasks/'+_0x19ac10+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x138df0,'customPreamble':_0x1b444b})});if(!_0x338a6c['ok']){const _0x3046e0=await _0x338a6c['json']();throw new Error(_0x3046e0['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x338a6c['json']();},async 'getJiraConfig'(){const _0x353002=await fetch(API_BASE+'/jira/config');if(!_0x353002['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x353002['json']();},async 'getJiraIssue'(_0x44ad34){const _0x294cdb=await fetch(API_BASE+'/jira/issues/'+_0x44ad34);if(!_0x294cdb['ok']){const _0x247715=await _0x294cdb['json']()['catch'](()=>({}));throw new Error(_0x247715['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x294cdb['statusText']);}return await _0x294cdb['json']();},async 'searchJiraIssues'(_0x43fa66,_0x308046=0x14){const _0x19b527=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x43fa66,'maxResults':_0x308046})});if(!_0x19b527['ok']){const _0x39b3f4=await _0x19b527['json']()['catch'](()=>({}));throw new Error(_0x39b3f4['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x19b527['statusText']);}return await _0x19b527['json']();},async 'postJiraComment'(_0x457961,_0x3474ba){const _0x2aad36=await fetch(API_BASE+'/jira/issues/'+_0x457961+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3474ba})});if(!_0x2aad36['ok']){const _0x44e217=await _0x2aad36['json']()['catch'](()=>({}));throw new Error(_0x44e217['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x2aad36['statusText']);}return await _0x2aad36['json']();},async 'getJiraComments'(_0x12d3e9){const _0x3a4f13=await fetch(API_BASE+'/jira/issues/'+_0x12d3e9+'/comments');if(!_0x3a4f13['ok']){const _0x54b9d4=await _0x3a4f13['json']()['catch'](()=>({}));throw new Error(_0x54b9d4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3a4f13['statusText']);}return await _0x3a4f13['json']();},async 'promptParameter'({environment:_0x3d25dc,command:_0x2af2d8,parser:parser='json'}){const _0x324493=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d25dc,'command':_0x2af2d8,'parser':parser})});if(!_0x324493['ok']){const _0x4f5109=await _0x324493['json']()['catch'](()=>({}));throw new Error(_0x4f5109['message']||_0x4f5109['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x324493['statusText']);}return await _0x324493['json']();},async 'promptParameterStream'(_0x4ea61b,_0x5aac4a){const _0x599234=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ea61b)});if(!_0x599234['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x599234['statusText']);const _0x43b2e3=_0x599234['body']['getReader'](),_0x55927d=new TextDecoder();let _0x3c0eb0='';return new Promise((_0x511ec8,_0xced8fa)=>{const _0x377afb=async()=>{try{const {done:_0x367417,value:_0x2496af}=await _0x43b2e3['read']();if(_0x367417)return;_0x3c0eb0+=_0x55927d['decode'](_0x2496af,{'stream':!![]});const _0x179678=_0x3c0eb0['split']('\x0a\x0a');_0x3c0eb0=_0x179678['pop']()||'';for(const _0x50112c of _0x179678){if(!_0x50112c['trim']())continue;const _0x135df3=_0x50112c['split']('\x0a');let _0x1f3cc3='message',_0x4c43ba='';for(const _0x23d843 of _0x135df3){if(_0x23d843['startsWith']('event:'))_0x1f3cc3=_0x23d843['substring'](0x6)['trim']();else _0x23d843['startsWith']('data:')&&(_0x4c43ba=_0x23d843['substring'](0x5)['trim']());}if(!_0x4c43ba)continue;try{const _0x34e27d=JSON['parse'](_0x4c43ba);if(_0x1f3cc3==='progress'&&_0x5aac4a)_0x5aac4a(_0x34e27d['stage'],_0x34e27d['message']);else{if(_0x1f3cc3==='result'){_0x511ec8(_0x34e27d);return;}else{if(_0x1f3cc3==='error'){let _0x24b294=_0x34e27d['message']||_0x34e27d['error']||'Prompt\x20command\x20failed';_0x34e27d['rawOutput']&&(_0x24b294+='\x0a\x0aRaw\x20output:\x0a'+_0x34e27d['rawOutput']);_0xced8fa(new Error(_0x24b294));return;}}}}catch(_0x133c52){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x133c52),console['error']('Event\x20type:',_0x1f3cc3),console['error']('Event\x20data:',_0x4c43ba),console['error']('First\x20200\x20chars:',_0x4c43ba['substring'](0x0,0xc8)),_0xced8fa(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x133c52['message']+'\x0a\x0aData:\x20'+_0x4c43ba['substring'](0x0,0x1f4)));return;}}_0x377afb();}catch(_0x2094c1){_0xced8fa(_0x2094c1);}};_0x377afb();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x434998){const _0x59207e=await fetch(''+API_BASE+_0x434998);if(!_0x59207e['ok']){const _0x1c06da=await _0x59207e['json']()['catch'](()=>({'error':_0x59207e['statusText']})),_0x4ccc63=new Error(_0x1c06da['error']||_0x1c06da['message']||_0x59207e['statusText']);if(_0x1c06da['detail']!==undefined)_0x4ccc63['detail']=_0x1c06da['detail'];throw _0x4ccc63;}return await _0x59207e['json']();},async 'post'(_0x2c87d0,_0x1063ae){const _0x183015=await fetch(''+API_BASE+_0x2c87d0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1063ae)});if(!_0x183015['ok']){const _0x359078=await _0x183015['json']()['catch'](()=>({'error':_0x183015['statusText']})),_0x32ffd6=new Error(_0x359078['error']||_0x359078['message']||_0x183015['statusText']);if(_0x359078['detail']!==undefined)_0x32ffd6['detail']=_0x359078['detail'];throw _0x32ffd6;}return await _0x183015['json']();},async 'put'(_0x35e566,_0x1f87a6){const _0x568590=await fetch(''+API_BASE+_0x35e566,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f87a6)});if(!_0x568590['ok']){const _0x4e01a2=await _0x568590['json']()['catch'](()=>({'error':_0x568590['statusText']})),_0x5957c6=new Error(_0x4e01a2['error']||_0x4e01a2['message']||_0x568590['statusText']);if(_0x4e01a2['detail']!==undefined)_0x5957c6['detail']=_0x4e01a2['detail'];throw _0x5957c6;}return await _0x568590['json']();},async 'delete'(_0x562179,_0x56c64d){const _0x4d228a={'method':'DELETE'};_0x56c64d&&(_0x4d228a['headers']={'Content-Type':'application/json'},_0x4d228a['body']=JSON['stringify'](_0x56c64d));const _0x3bb833=await fetch(''+API_BASE+_0x562179,_0x4d228a);if(!_0x3bb833['ok']){const _0x1326da=await _0x3bb833['json']()['catch'](()=>({'error':_0x3bb833['statusText']})),_0x2f9f5e=new Error(_0x1326da['error']||_0x1326da['message']||_0x3bb833['statusText']);if(_0x1326da['detail']!==undefined)_0x2f9f5e['detail']=_0x1326da['detail'];throw _0x2f9f5e;}return await _0x3bb833['json']();},async 'getSkills'(){const _0x1580f3=await fetch(API_BASE+'/skills');if(!_0x1580f3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1580f3['statusText']);return await _0x1580f3['json']();},async 'getSkill'(_0x2b3ad3){const _0x588ce5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2b3ad3));if(!_0x588ce5['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x588ce5['statusText']);return await _0x588ce5['json']();},async 'createSkill'(_0x498f96){const _0x4fcb81=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498f96)});if(!_0x4fcb81['ok']){const _0x5e6a92=await _0x4fcb81['json']()['catch'](()=>({'error':_0x4fcb81['statusText']})),_0x4b8182=new Error(_0x5e6a92['error']||_0x5e6a92['message']||_0x4fcb81['statusText']);if(_0x5e6a92['detail']!==undefined)_0x4b8182['detail']=_0x5e6a92['detail'];throw _0x4b8182;}return await _0x4fcb81['json']();},async 'updateSkill'(_0x26e46d,_0x4b4180){const _0x325204=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x26e46d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b4180)});if(!_0x325204['ok']){const _0xbaf48d=await _0x325204['json']()['catch'](()=>({'error':_0x325204['statusText']})),_0x150474=new Error(_0xbaf48d['error']||_0xbaf48d['message']||_0x325204['statusText']);if(_0xbaf48d['detail']!==undefined)_0x150474['detail']=_0xbaf48d['detail'];throw _0x150474;}return await _0x325204['json']();},async 'deleteSkill'(_0x1ebdea){const _0x546273=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ebdea),{'method':'DELETE'});if(!_0x546273['ok']){const _0x5aeb22=await _0x546273['json']()['catch'](()=>({'error':_0x546273['statusText']})),_0x458889=new Error(_0x5aeb22['error']||_0x5aeb22['message']||_0x546273['statusText']);if(_0x5aeb22['detail']!==undefined)_0x458889['detail']=_0x5aeb22['detail'];throw _0x458889;}return await _0x546273['json']();},async 'getSkillFile'(_0x4d401c,_0x4f22f9){const _0x3967a9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d401c)+'/files/'+_0x4f22f9);if(!_0x3967a9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3967a9['statusText']);return await _0x3967a9['json']();},async 'saveSkillFile'(_0x3cf9f9,_0x15a887,_0x24f3b7){const _0x5df60c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3cf9f9)+'/files/'+_0x15a887,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x24f3b7})});if(!_0x5df60c['ok']){const _0x1055e3=await _0x5df60c['json']()['catch'](()=>({'error':_0x5df60c['statusText']})),_0x375c5a=new Error(_0x1055e3['error']||_0x1055e3['message']||_0x5df60c['statusText']);if(_0x1055e3['detail']!==undefined)_0x375c5a['detail']=_0x1055e3['detail'];throw _0x375c5a;}return await _0x5df60c['json']();},async 'deleteSkillFile'(_0x19c49c,_0x54a511){const _0x5a0864=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x19c49c)+'/files/'+_0x54a511,{'method':'DELETE'});if(!_0x5a0864['ok']){const _0x3b1251=await _0x5a0864['json']()['catch'](()=>({'error':_0x5a0864['statusText']})),_0x3c0726=new Error(_0x3b1251['error']||_0x3b1251['message']||_0x5a0864['statusText']);if(_0x3b1251['detail']!==undefined)_0x3c0726['detail']=_0x3b1251['detail'];throw _0x3c0726;}return await _0x5a0864['json']();},async 'pullSkills'(){const _0x245541=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x245541['ok']){const _0x30c9aa=await _0x245541['json']()['catch'](()=>({'error':_0x245541['statusText']})),_0x39ae9e=new Error(_0x30c9aa['error']||_0x30c9aa['message']||_0x245541['statusText']);if(_0x30c9aa['detail']!==undefined)_0x39ae9e['detail']=_0x30c9aa['detail'];throw _0x39ae9e;}return await _0x245541['json']();},async 'commitSkills'(_0x1736d4,_0xf3841a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xf3841a,_0x2d465b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1736d4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2d465b['ok']){const _0x6ef5b4=await _0x2d465b['json']()['catch'](()=>({'error':_0x2d465b['statusText']})),_0xe6347c=new Error(_0x6ef5b4['error']||_0x6ef5b4['message']||_0x2d465b['statusText']);if(_0x6ef5b4['detail']!==undefined)_0xe6347c['detail']=_0x6ef5b4['detail'];throw _0xe6347c;}return await _0x2d465b['json']();},async 'discardSkillsChanges'(){const _0x36eb77=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x36eb77['ok']){const _0x52e0fc=await _0x36eb77['json']()['catch'](()=>({'error':_0x36eb77['statusText']})),_0x3653f5=new Error(_0x52e0fc['error']||_0x52e0fc['message']||_0x36eb77['statusText']);if(_0x52e0fc['detail']!==undefined)_0x3653f5['detail']=_0x52e0fc['detail'];throw _0x3653f5;}return await _0x36eb77['json']();},async 'getSkillCatalog'(){const _0x2ad5bc=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ad5bc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ad5bc['statusText']);return await _0x2ad5bc['json']();},async 'getImportedSkillsRegistry'(){const _0x5522ee=await fetch(API_BASE+'/external-skills/registry');if(!_0x5522ee['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5522ee['statusText']);return await _0x5522ee['json']();},async 'importCatalogSkill'(_0x6d4a8f){const _0x4a8eb5=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x6d4a8f})});if(!_0x4a8eb5['ok']){const _0x100d89=await _0x4a8eb5['json']()['catch'](()=>({'error':_0x4a8eb5['statusText']})),_0x2a5ee5=new Error(_0x100d89['error']||_0x100d89['message']||_0x4a8eb5['statusText']);if(_0x100d89['detail']!==undefined)_0x2a5ee5['detail']=_0x100d89['detail'];throw _0x2a5ee5;}return await _0x4a8eb5['json']();},async 'importSkillFromGit'(_0x25e71d,_0x24cdd1,_0x42ee2a='main',_0x2d20c0=null){const _0xfc6100=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x25e71d,'skillPath':_0x24cdd1,'branch':_0x42ee2a,'skillId':_0x2d20c0})});if(!_0xfc6100['ok']){const _0x2cc8d5=await _0xfc6100['json']()['catch'](()=>({'error':_0xfc6100['statusText']})),_0x44519e=new Error(_0x2cc8d5['error']||_0x2cc8d5['message']||_0xfc6100['statusText']);if(_0x2cc8d5['detail']!==undefined)_0x44519e['detail']=_0x2cc8d5['detail'];throw _0x44519e;}return await _0xfc6100['json']();},async 'probeMarketplace'(_0x187311,_0x319833='main'){const _0x5147bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x187311,'branch':_0x319833})});if(!_0x5147bd['ok']){const _0x486650=await _0x5147bd['json']()['catch'](()=>({'error':_0x5147bd['statusText']})),_0x3f8d88=new Error(_0x486650['error']||_0x486650['message']||_0x5147bd['statusText']);if(_0x486650['detail']!==undefined)_0x3f8d88['detail']=_0x486650['detail'];throw _0x3f8d88;}return await _0x5147bd['json']();},async 'importMarketplaceBundle'(_0x21baf5,_0x621c98,_0x26056f,_0x221144=null){const _0x37bc63=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x21baf5,'branch':_0x621c98,'bundleId':_0x26056f,'selectedSkills':_0x221144})});if(!_0x37bc63['ok']){const _0x36845c=await _0x37bc63['json']()['catch'](()=>({'error':_0x37bc63['statusText']})),_0x2bb1c4=new Error(_0x36845c['error']||_0x36845c['message']||_0x37bc63['statusText']);if(_0x36845c['detail']!==undefined)_0x2bb1c4['detail']=_0x36845c['detail'];throw _0x2bb1c4;}return await _0x37bc63['json']();},async 'importSkillFromFolder'(_0x2e3288,_0x2bb0ae=null){const _0x7d654e=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2e3288,'skillId':_0x2bb0ae})});if(!_0x7d654e['ok']){const _0x5a3a6e=await _0x7d654e['json']()['catch'](()=>({'error':_0x7d654e['statusText']})),_0x397cd2=new Error(_0x5a3a6e['error']||_0x5a3a6e['message']||_0x7d654e['statusText']);if(_0x5a3a6e['detail']!==undefined)_0x397cd2['detail']=_0x5a3a6e['detail'];throw _0x397cd2;}return await _0x7d654e['json']();},async 'importSkillFromNpm'(_0x20c85b,_0x426073='latest',_0x2dfa63=null,_0x4bd157=null){const _0x28ac67=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x20c85b,'version':_0x426073,'skillId':_0x2dfa63,'registry':_0x4bd157})});if(!_0x28ac67['ok']){const _0x1ebc8c=await _0x28ac67['json']()['catch'](()=>({'error':_0x28ac67['statusText']})),_0x142a67=new Error(_0x1ebc8c['error']||_0x1ebc8c['message']||_0x28ac67['statusText']);if(_0x1ebc8c['detail']!==undefined)_0x142a67['detail']=_0x1ebc8c['detail'];throw _0x142a67;}return await _0x28ac67['json']();},async 'checkSkillUpdates'(_0x4826b8){const _0x39e62d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4826b8)+'/check-updates',{'method':'POST'});if(!_0x39e62d['ok']){const _0x83748a=await _0x39e62d['json']()['catch'](()=>({'error':_0x39e62d['statusText']})),_0x42569c=new Error(_0x83748a['error']||_0x83748a['message']||_0x39e62d['statusText']);if(_0x83748a['detail']!==undefined)_0x42569c['detail']=_0x83748a['detail'];throw _0x42569c;}return await _0x39e62d['json']();},async 'updateExternalSkill'(_0x1c06f5){const _0xb22ed7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c06f5)+'/update',{'method':'POST'});if(!_0xb22ed7['ok']){const _0x304e9e=await _0xb22ed7['json']()['catch'](()=>({'error':_0xb22ed7['statusText']})),_0x1c3996=new Error(_0x304e9e['error']||_0x304e9e['message']||_0xb22ed7['statusText']);if(_0x304e9e['detail']!==undefined)_0x1c3996['detail']=_0x304e9e['detail'];throw _0x1c3996;}return await _0xb22ed7['json']();},async 'updateSkillFlags'(_0x24a923,_0x148196){const _0x490fdd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x24a923)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x148196})});if(!_0x490fdd['ok']){const _0x4d3fd9=await _0x490fdd['json']()['catch'](()=>({'error':_0x490fdd['statusText']})),_0x5cca65=new Error(_0x4d3fd9['error']||_0x4d3fd9['message']||_0x490fdd['statusText']);if(_0x4d3fd9['detail']!==undefined)_0x5cca65['detail']=_0x4d3fd9['detail'];throw _0x5cca65;}return await _0x490fdd['json']();},async 'removeFromImportedRegistry'(_0x556915){const _0x4dbfd4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x556915)+'/registry',{'method':'DELETE'});if(!_0x4dbfd4['ok']){const _0x3c3762=await _0x4dbfd4['json']()['catch'](()=>({'error':_0x4dbfd4['statusText']})),_0x42a590=new Error(_0x3c3762['error']||_0x3c3762['message']||_0x4dbfd4['statusText']);if(_0x3c3762['detail']!==undefined)_0x42a590['detail']=_0x3c3762['detail'];throw _0x42a590;}return await _0x4dbfd4['json']();},async 'getTeams'(){const _0xbc6396=await fetch(API_BASE+'/teams');if(!_0xbc6396['ok']){const _0x1aabb5=await _0xbc6396['json']()['catch'](()=>({'message':_0xbc6396['statusText']}));throw new Error(_0x1aabb5['message']||'Failed\x20to\x20get\x20teams');}return await _0xbc6396['json']();},async 'getTeam'(_0x5dd44a){const _0xa018e5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5dd44a));if(!_0xa018e5['ok']){const _0x34cb50=await _0xa018e5['json']()['catch'](()=>({'message':_0xa018e5['statusText']}));throw new Error(_0x34cb50['message']||'Failed\x20to\x20get\x20team');}return await _0xa018e5['json']();},async 'createTeam'(_0x43ee5a){const _0x433c7b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43ee5a)});if(!_0x433c7b['ok']){const _0x43fdc4=await _0x433c7b['json']()['catch'](()=>({'message':_0x433c7b['statusText']}));throw new Error(_0x43fdc4['message']||'Failed\x20to\x20create\x20team');}return await _0x433c7b['json']();},async 'updateTeam'(_0xa9f9d7,_0x269dfc){const _0x51f254=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa9f9d7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x269dfc)});if(!_0x51f254['ok']){const _0x4f5da2=await _0x51f254['json']()['catch'](()=>({'message':_0x51f254['statusText']}));throw new Error(_0x4f5da2['message']||'Failed\x20to\x20update\x20team');}return await _0x51f254['json']();},async 'deleteTeam'(_0xa0fac){const _0x130138=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa0fac),{'method':'DELETE'});if(!_0x130138['ok']){const _0x434151=await _0x130138['json']()['catch'](()=>({'message':_0x130138['statusText']}));throw new Error(_0x434151['message']||'Failed\x20to\x20delete\x20team');}return await _0x130138['json']();},async 'addTeamMember'(_0x2cfdf1,_0x56a628){const _0x564518=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2cfdf1)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x56a628})});if(!_0x564518['ok']){const _0x5215ea=await _0x564518['json']()['catch'](()=>({'message':_0x564518['statusText']}));throw new Error(_0x5215ea['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x564518['json']();},async 'removeTeamMember'(_0x29a486,_0x17c97d){const _0x1a2296=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29a486)+'/members/'+encodeURIComponent(_0x17c97d),{'method':'DELETE'});if(!_0x1a2296['ok']){const _0x58c5ea=await _0x1a2296['json']()['catch'](()=>({'message':_0x1a2296['statusText']}));throw new Error(_0x58c5ea['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1a2296['json']();},async 'getBindings'(_0x2262a0={}){const _0x5072cc=new URLSearchParams();if(_0x2262a0['resource_type'])_0x5072cc['set']('resource_type',_0x2262a0['resource_type']);if(_0x2262a0['resource_id'])_0x5072cc['set']('resource_id',_0x2262a0['resource_id']);if(_0x2262a0['subject_type'])_0x5072cc['set']('subject_type',_0x2262a0['subject_type']);if(_0x2262a0['subject_id'])_0x5072cc['set']('subject_id',_0x2262a0['subject_id']);const _0x346cfa=_0x5072cc['toString'](),_0x14cf4f=await fetch(API_BASE+'/bindings'+(_0x346cfa?'?'+_0x346cfa:''));if(!_0x14cf4f['ok']){const _0x12fd77=await _0x14cf4f['json']()['catch'](()=>({'message':_0x14cf4f['statusText']}));throw new Error(_0x12fd77['message']||'Failed\x20to\x20get\x20bindings');}return await _0x14cf4f['json']();},async 'createBinding'(_0xbdcbea){const _0x5060c6=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbdcbea)});if(!_0x5060c6['ok']){const _0x355a04=await _0x5060c6['json']()['catch'](()=>({'message':_0x5060c6['statusText']}));throw new Error(_0x355a04['message']||'Failed\x20to\x20create\x20binding');}return await _0x5060c6['json']();},async 'updateBinding'(_0x284d51,_0x593bb0){const _0x531d3e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x284d51),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x593bb0)});if(!_0x531d3e['ok']){const _0x48772a=await _0x531d3e['json']()['catch'](()=>({'message':_0x531d3e['statusText']}));throw new Error(_0x48772a['message']||'Failed\x20to\x20update\x20binding');}return await _0x531d3e['json']();},async 'deleteBinding'(_0x1d62ee){const _0x33d42e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1d62ee),{'method':'DELETE'});if(!_0x33d42e['ok']){const _0x3891bc=await _0x33d42e['json']()['catch'](()=>({'message':_0x33d42e['statusText']}));throw new Error(_0x3891bc['message']||'Failed\x20to\x20delete\x20binding');}return await _0x33d42e['json']();},async 'getRoleDefinitions'(){const _0x36b2fe=await fetch(API_BASE+'/roles');if(!_0x36b2fe['ok']){const _0x49b281=await _0x36b2fe['json']()['catch'](()=>({'message':_0x36b2fe['statusText']}));throw new Error(_0x49b281['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x36b2fe['json']();},async 'getRoleDefinition'(_0x2d73e8){const _0x167c9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2d73e8));if(!_0x167c9a['ok']){const _0x42a121=await _0x167c9a['json']()['catch'](()=>({'message':_0x167c9a['statusText']}));throw new Error(_0x42a121['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x167c9a['json']();},async 'createRoleDefinition'(_0x37adec){const _0x24c21e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37adec)});if(!_0x24c21e['ok']){const _0x5ca44d=await _0x24c21e['json']()['catch'](()=>({'message':_0x24c21e['statusText']}));throw new Error(_0x5ca44d['message']||_0x5ca44d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x24c21e['json']();},async 'updateRoleDefinition'(_0x42c8ee,_0x58c27d){const _0x4f9c7d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x42c8ee),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58c27d)});if(!_0x4f9c7d['ok']){const _0x87633c=await _0x4f9c7d['json']()['catch'](()=>({'message':_0x4f9c7d['statusText']}));throw new Error(_0x87633c['message']||_0x87633c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f9c7d['json']();},async 'deleteRoleDefinition'(_0x180dc9){const _0xdb82cc=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x180dc9),{'method':'DELETE'});if(!_0xdb82cc['ok']){const _0x1cb2a4=await _0xdb82cc['json']()['catch'](()=>({'message':_0xdb82cc['statusText']}));throw new Error(_0x1cb2a4['message']||_0x1cb2a4['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0xdb82cc['json']();},async 'getAvailablePermissions'(){const _0x38e2c4=await fetch(API_BASE+'/roles/available-permissions');if(!_0x38e2c4['ok']){const _0x560981=await _0x38e2c4['json']()['catch'](()=>({'message':_0x38e2c4['statusText']}));throw new Error(_0x560981['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x38e2c4['json']();},async 'getGitProviderAllowedTeams'(_0xc9f0cb){const _0x17dda3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xc9f0cb)+'/allowed-teams');if(!_0x17dda3['ok']){const _0x567efc=await _0x17dda3['json']()['catch'](()=>({'message':_0x17dda3['statusText']}));throw new Error(_0x567efc['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x17dda3['json']();},async 'setGitProviderAllowedTeams'(_0x4ca313,_0x11628b){const _0x23f9a9=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4ca313)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11628b})});if(!_0x23f9a9['ok']){const _0x25bfcf=await _0x23f9a9['json']()['catch'](()=>({'message':_0x23f9a9['statusText']}));throw new Error(_0x25bfcf['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23f9a9['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x3015de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x29a19d=>{_0x29a19d['el']['style']['bottom']=_0x3015de+'px';const _0x2a958a=_0x29a19d['el']['offsetHeight']||toastState['defaultHeight'];_0x3015de+=_0x2a958a+toastState['gap'];});});}function removeToastById(_0x2a730b){const _0x2bd537=toastState['toasts']['findIndex'](_0x3e77ee=>_0x3e77ee['id']===_0x2a730b);if(_0x2bd537===-0x1)return;const _0x34f6fa=toastState['toasts'][_0x2bd537];if(_0x34f6fa['timeoutId'])clearTimeout(_0x34f6fa['timeoutId']);_0x34f6fa['el']['classList']['remove']('show'),setTimeout(()=>_0x34f6fa['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2bd537,0x1),repositionAllToasts();}function registerToast(_0x1db8ab){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1db8ab),repositionAllToasts(),_0x1db8ab['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x51609a){if(_0x51609a===null||_0x51609a===undefined)return'';return String(_0x51609a)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x59af5a,_0x5922d2){if(_0x59af5a&&typeof _0x59af5a==='object'&&!Array['isArray'](_0x59af5a))return{'code':typeof _0x59af5a['text']==='string'?_0x59af5a['text']:'','language':typeof _0x59af5a['lang']==='string'?_0x59af5a['lang']:''};return{'code':typeof _0x59af5a==='string'?_0x59af5a:'','language':typeof _0x5922d2==='string'?_0x5922d2:''};}function buildMermaidBlock(_0x17ee5c){const _0x266365=String(_0x17ee5c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x266365))+'\x22>'+escapeHtmlValue(_0x266365)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3017a9=new marked['Renderer'](),_0x24eb34=_0x3017a9['code']['bind'](_0x3017a9);return _0x3017a9['code']=function(_0x4498ba,_0x1f1b86,..._0x2f21e5){const {code:_0x4ad2e6,language:_0xfb4132}=getMarkdownCodeBlockPayload(_0x4498ba,_0x1f1b86),_0x3b80c0=String(_0xfb4132||'')['trim']()['toLowerCase']();if(_0x3b80c0==='mermaid')return buildMermaidBlock(_0x4ad2e6);const _0x136cc0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x136cc0&&_0x3b80c0)try{const _0x5bb838=_0x136cc0['getLanguage'](_0x3b80c0)?_0x3b80c0:'plaintext',_0x56a426=_0x136cc0['highlight'](_0x4ad2e6,{'language':_0x5bb838})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3b80c0)+'\x22>'+_0x56a426+'</code></pre>';}catch(_0x35cb89){console['error']('Syntax\x20highlighting\x20error:',_0x35cb89);}return _0x24eb34(_0x4498ba,_0x1f1b86,..._0x2f21e5);},sharedMarkedRenderer=_0x3017a9,_0x3017a9;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x183898=window['mermaid'];if(!_0x183898||typeof _0x183898['initialize']!=='function')return _0x183898||null;return _0x183898['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x183898;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x433ef0,_0x218e16)=>{const _0x47a8e7=()=>_0x433ef0(configureMermaidInstance()),_0x3c3d77=()=>{mermaidLoadPromise=null,_0x218e16(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xb4ecee=document['getElementById'](MERMAID_SCRIPT_ID);!_0xb4ecee&&(_0xb4ecee=document['createElement']('script'),_0xb4ecee['id']=MERMAID_SCRIPT_ID,_0xb4ecee['src']=MERMAID_SCRIPT_SRC,_0xb4ecee['async']=!![],document['head']['appendChild'](_0xb4ecee));if(window['mermaid']){_0x47a8e7();return;}_0xb4ecee['addEventListener']('load',_0x47a8e7,{'once':!![]}),_0xb4ecee['addEventListener']('error',_0x3c3d77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bb132){const _0x2831ad=_0x4bb132['getAttribute']('data-mermaid-source');if(!_0x2831ad)return null;let _0x498744=_0x2831ad;try{_0x498744=decodeURIComponent(_0x2831ad);}catch{}return _0x4bb132['textContent']=_0x498744,_0x4bb132['removeAttribute']('data-processed'),_0x4bb132['removeAttribute']('aria-roledescription'),_0x4bb132['removeAttribute']('role'),_0x4bb132['removeAttribute']('aria-label'),_0x498744;}function collectMermaidNodes(_0x580cc1,_0x198135){if(!(_0x580cc1 instanceof Element))return;_0x580cc1['matches']('.mermaid[data-mermaid-source]')&&_0x198135['add'](_0x580cc1),_0x580cc1['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2692fd=>{_0x198135['add'](_0x2692fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2deb86=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x502002=>setTimeout(_0x502002,0x0);_0x2deb86(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5632de=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5632de);});});}function queueMermaidRender(_0x1a6050){const _0x32676d=new Set();_0x1a6050 instanceof Document||_0x1a6050 instanceof DocumentFragment?_0x1a6050['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x11116f=>_0x32676d['add'](_0x11116f)):collectMermaidNodes(_0x1a6050,_0x32676d);if(_0x32676d['size']===0x0)return;_0x32676d['forEach'](_0x2ab9ed=>pendingMermaidNodes['add'](_0x2ab9ed)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x3ee538=Array['from'](pendingMermaidNodes)['filter'](_0x3ebee9=>_0x3ebee9['isConnected']);pendingMermaidNodes['clear']();if(_0x3ee538['length']===0x0)return;const _0x3fb9fd=await loadMermaid();if(!_0x3fb9fd)return;configureMermaidInstance();const _0x5c08d8=getMermaidTheme();for(const _0x3d5cea of _0x3ee538){const _0x269b16=_0x3d5cea['getAttribute']('data-mermaid-source');if(!_0x269b16)continue;const _0x2d5364=_0x3d5cea['getAttribute']('data-processed')==='true';if(_0x2d5364&&_0x3d5cea['dataset']['mermaidTheme']===_0x5c08d8)continue;restoreMermaidSource(_0x3d5cea);try{if(typeof _0x3fb9fd['run']==='function')await _0x3fb9fd['run']({'nodes':[_0x3d5cea]});else typeof _0x3fb9fd['init']==='function'&&_0x3fb9fd['init'](undefined,[_0x3d5cea]);_0x3d5cea['dataset']['mermaidTheme']=_0x5c08d8,delete _0x3d5cea['dataset']['mermaidError'];}catch(_0x3fa2db){console['error']('Mermaid\x20render\x20failed:',_0x3fa2db),restoreMermaidSource(_0x3d5cea),_0x3d5cea['dataset']['mermaidError']='true',delete _0x3d5cea['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x414ce5=>{_0x414ce5['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x414ce5);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x228435=>{_0x228435['forEach'](_0x160fab=>{_0x160fab['addedNodes']['forEach'](_0xd6d553=>{_0xd6d553['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xd6d553);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x4ae011){const _0x568db6=new Date(_0x4ae011),_0x580a73=new Date(),_0x2aaa12=_0x580a73-_0x568db6,_0x41cc77=Math['floor'](_0x2aaa12/0x3e8),_0x12c53b=Math['floor'](_0x41cc77/0x3c),_0x551984=Math['floor'](_0x12c53b/0x3c),_0x277be9=Math['floor'](_0x551984/0x18);if(_0x41cc77<0x3c)return'now';if(_0x12c53b<0x3c)return _0x12c53b+'m\x20ago';if(_0x551984<0x18)return _0x551984+'h\x20ago';return _0x277be9+'d\x20ago';},'getStatusIcon'(_0x39a08f){switch(_0x39a08f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0xe7daa9){switch(_0xe7daa9){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x5a641b,_0x5df41c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x277dda={};_0x277dda['text/plain']=new Blob([_0x5a641b],{'type':'text/plain'});_0x5df41c&&(_0x277dda['text/html']=new Blob([_0x5df41c],{'type':'text/html'}));const _0x723750=new ClipboardItem(_0x277dda);return await navigator['clipboard']['write']([_0x723750]),!![];}catch(_0x5e7857){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5e7857);}try{const _0x42da37=_0x32037b=>{_0x32037b['preventDefault'](),_0x32037b['clipboardData']['setData']('text/plain',_0x5a641b),_0x5df41c&&_0x32037b['clipboardData']['setData']('text/html',_0x5df41c);};document['addEventListener']('copy',_0x42da37);const _0x493005=document['execCommand']('copy');document['removeEventListener']('copy',_0x42da37);if(_0x493005)return!![];}catch(_0x21b475){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x21b475);}try{const _0x18b8f1=document['createElement']('textarea');_0x18b8f1['value']=_0x5a641b,_0x18b8f1['style']['position']='fixed',_0x18b8f1['style']['opacity']='0',_0x18b8f1['style']['pointerEvents']='none',document['body']['appendChild'](_0x18b8f1),_0x18b8f1['select']();const _0x2df0d3=document['execCommand']('copy');return document['body']['removeChild'](_0x18b8f1),_0x2df0d3;}catch(_0x3d3616){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3d3616),![];}},'showToast'(_0x57e5a2,_0x477ae1='info'){const _0x3c1cd2=getNextToastId(),_0x16dff1=document['createElement']('div');_0x16dff1['className']='toast\x20toast-'+_0x477ae1,_0x16dff1['textContent']=_0x57e5a2,_0x16dff1['dataset']['toastId']=_0x3c1cd2,document['body']['appendChild'](_0x16dff1);const _0x2aac46=_0x477ae1==='error'?0x2710:0xbb8,_0x56eb30=setTimeout(()=>{removeToastById(_0x3c1cd2);},_0x2aac46),_0x51fcac={'id':_0x3c1cd2,'el':_0x16dff1,'timeoutId':_0x56eb30};return registerToast(_0x51fcac),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x16dff1['classList']['add']('show');});}),_0x3c1cd2;},'showError'(_0x232c16){console['error'](_0x232c16);const _0x25bf32=typeof _0x232c16==='string'?_0x232c16:_0x232c16['message']||'An\x20error\x20occurred';this['showToast'](_0x25bf32,'error');},'showSuccess'(_0x458e38){this['showToast'](_0x458e38,'success');},'capitalize'(_0x47f55f){if(!_0x47f55f)return'';return _0x47f55f['charAt'](0x0)['toUpperCase']()+_0x47f55f['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x215515){return escapeHtmlValue(_0x215515);},'ansiToHtml'(_0x24aedb){if(_0x24aedb===null||_0x24aedb===undefined)return'';let _0xda6a4c=this['escapeHtml'](_0x24aedb);const _0x2ee094={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x2d2b61={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x2c15de=0x0;return _0xda6a4c=_0xda6a4c['replace'](/\x1b\[([0-9;]*)m/g,(_0xb06d5,_0x159017)=>{if(!_0x159017||_0x159017==='0'){const _0x39e95e='</span>'['repeat'](_0x2c15de);return _0x2c15de=0x0,_0x39e95e;}const _0x35195b=_0x159017['split'](';'),_0x3151f5=[];for(const _0x5ae9e1 of _0x35195b){if(_0x5ae9e1==='1')_0x3151f5['push']('font-weight:bold');else{if(_0x5ae9e1==='2')_0x3151f5['push']('opacity:0.7');else{if(_0x5ae9e1==='3')_0x3151f5['push']('font-style:italic');else{if(_0x5ae9e1==='4')_0x3151f5['push']('text-decoration:underline');else{if(_0x5ae9e1==='9')_0x3151f5['push']('text-decoration:line-through');else{if(_0x2ee094[_0x5ae9e1])_0x3151f5['push']('color:'+_0x2ee094[_0x5ae9e1]);else{if(_0x2d2b61[_0x5ae9e1])_0x3151f5['push']('background-color:'+_0x2d2b61[_0x5ae9e1]);}}}}}}}if(_0x3151f5['length']>0x0)return _0x2c15de++,'<span\x20style=\x22'+_0x3151f5['join'](';')+'\x22>';return'';}),_0xda6a4c+='</span>'['repeat'](_0x2c15de),_0xda6a4c=_0xda6a4c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4a20db,_0x23edbb)=>{if(!_0x23edbb||_0x23edbb==='0')return'';const _0xc97f17=_0x23edbb['split'](';'),_0x253229=[];for(const _0x34d930 of _0xc97f17){if(_0x34d930==='1')_0x253229['push']('font-weight:bold');else{if(_0x2ee094[_0x34d930])_0x253229['push']('color:'+_0x2ee094[_0x34d930]);else{if(_0x2d2b61[_0x34d930])_0x253229['push']('background-color:'+_0x2d2b61[_0x34d930]);}}}if(_0x253229['length']>0x0)return'<span\x20style=\x22'+_0x253229['join'](';')+'\x22>';return'';}),_0xda6a4c;},'showModal'({title:_0x5c60d2,content:_0x34c63c,buttons:buttons=[]}){const _0x8245ab='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x5c60d2)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x34c63c+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x54b884,_0x45ba59)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x54b884['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x45ba59+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x54b884['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x5b382a=document['createElement']('div');_0x5b382a['id']='utils-modal',_0x5b382a['className']='modal',_0x5b382a['innerHTML']=_0x8245ab,document['body']['appendChild'](_0x5b382a);const _0x4f97f8=document['getElementById']('utils-modal-close');_0x4f97f8&&_0x4f97f8['addEventListener']('click',()=>this['hideModal']());const _0x41f88f=_0x5b382a['querySelectorAll']('[data-btn-index]');_0x41f88f['forEach'](_0x4bf303=>{const _0x5b481f=parseInt(_0x4bf303['dataset']['btnIndex']);buttons[_0x5b481f]?.['onClick']&&_0x4bf303['addEventListener']('click',buttons[_0x5b481f]['onClick']);});const _0xd4c9e9=document['getElementById']('utils-modal-overlay');_0xd4c9e9&&_0xd4c9e9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4b63ae=document['getElementById']('utils-modal');_0x4b63ae&&_0x4b63ae['remove']();},'parseKeyValuePairs'(_0x17d5fe){const _0x1c9fa1={};if(!_0x17d5fe)return _0x1c9fa1;return _0x17d5fe['split'](/\r?\n/)['map'](_0xe7857e=>_0xe7857e['trim']())['filter'](Boolean)['forEach'](_0x2bfdd1=>{const _0x13422c=_0x2bfdd1['indexOf']('=');if(_0x13422c>0x0){const _0x122a47=_0x2bfdd1['slice'](0x0,_0x13422c)['trim'](),_0x34be28=_0x2bfdd1['slice'](_0x13422c+0x1)['trim']();if(_0x122a47)_0x1c9fa1[_0x122a47]=_0x34be28;}}),_0x1c9fa1;},'debounce'(_0x5ec9b4,_0x22314d=0xfa){let _0x33dbe1=null;return(..._0x3abff4)=>{clearTimeout(_0x33dbe1),_0x33dbe1=setTimeout(()=>_0x5ec9b4['apply'](this,_0x3abff4),_0x22314d);};},'formatTimestamp'(_0x13b64a){if(!_0x13b64a)return'N/A';const _0x4aa824=new Date(_0x13b64a);return _0x4aa824['toLocaleDateString']()+'\x20'+_0x4aa824['toLocaleTimeString']();},'getQueryParams'(){const _0x2393b7=new URLSearchParams(window['location']['search']),_0x510971={};for(const [_0x3af2f5,_0x5e00b2]of _0x2393b7){_0x510971[_0x3af2f5]=_0x5e00b2;}return _0x510971;},'formatDuration'(_0x253bb2,_0x50eb7b){if(!_0x253bb2)return'N/A';const _0x14a342=new Date(_0x253bb2),_0x4d08bf=_0x50eb7b?new Date(_0x50eb7b):new Date(),_0x1251df=_0x4d08bf-_0x14a342;if(_0x1251df<0x0)return'0s';const _0x4a78c8=Math['floor'](_0x1251df/0x3e8),_0xe80007=Math['floor'](_0x4a78c8/0x3c),_0x10cf10=Math['floor'](_0xe80007/0x3c),_0x41105d=Math['floor'](_0x10cf10/0x18);if(_0x4a78c8<0x3c)return _0x4a78c8+'s';if(_0xe80007<0x3c)return _0xe80007+'m\x20'+_0x4a78c8%0x3c+'s';if(_0x10cf10<0x18)return _0x10cf10+'h\x20'+_0xe80007%0x3c+'m\x20'+_0x4a78c8%0x3c+'s';return _0x41105d+'d\x20'+_0x10cf10%0x18+'h\x20'+_0xe80007%0x3c+'m';},'renderMarkdown'(_0x3dbc8e,_0x5772bc={}){if(!_0x3dbc8e)return'';_0x3dbc8e=this['rewriteAttachmentLinks'](_0x3dbc8e,_0x5772bc),_0x3dbc8e=this['rewriteColorSyntax'](_0x3dbc8e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x3dbc8e);}catch(_0x385089){return console['error']('Markdown\x20parsing\x20error:',_0x385089),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);}},'rewriteAttachmentLinks'(_0x208693,_0x4dbf35={}){const _0x4231b5=typeof _0x4dbf35['resolveAttachmentUrl']==='function'?_0x4dbf35['resolveAttachmentUrl']:_0x4dbf35['taskId']?_0x4407d7=>API_BASE+'/tasks/'+_0x4dbf35['taskId']+'/attachments/'+encodeURIComponent(_0x4407d7):null;if(!_0x4231b5)return _0x208693;return String(_0x208693)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1e5274,_0x5bc737)=>{const _0x44900f=String(_0x5bc737||'')['trim']();if(!_0x44900f)return _0x1e5274;let _0xf0b6a1=_0x44900f;try{_0xf0b6a1=decodeURIComponent(_0x44900f);}catch{}const _0x5dfb4f=_0x4231b5(_0xf0b6a1);if(!_0x5dfb4f)return _0x1e5274;return']('+_0x5dfb4f+')';});},'rewriteColorSyntax'(_0xc00cf5){if(!_0xc00cf5)return _0xc00cf5;return String(_0xc00cf5)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x8e6484,_0x1e95ee,_0x4e6836)=>{const _0x5e8097=this['rewriteColorSyntax'](_0x4e6836);return'<span\x20style=\x22color:\x20'+_0x1e95ee+'\x22>'+_0x5e8097+'</span>';});},'renderMarkdownFallback'(_0x47974f,_0x176282={}){if(!_0x47974f)return'';_0x47974f=_0x47974f['replace'](/\r\n/g,'\x0a'),_0x47974f=_0x47974f['replace'](/\r/g,'\x0a'),_0x47974f=this['rewriteAttachmentLinks'](_0x47974f,_0x176282);let _0xeb5292=this['escapeHtml'](_0x47974f);return _0xeb5292=_0xeb5292['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xeb5292=_0xeb5292['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xeb5292=_0xeb5292['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xeb5292=_0xeb5292['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xeb5292=_0xeb5292['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xeb5292=_0xeb5292['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xeb5292=_0xeb5292['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xeb5292=_0xeb5292['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xeb5292=_0xeb5292['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xeb5292=_0xeb5292['replace'](/\n\n/g,'</p><p>'),_0xeb5292=_0xeb5292['replace'](/\n/g,'<br>'),'<p>'+_0xeb5292+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2d25e5=new Uint8Array(0x10);crypto['getRandomValues'](_0x2d25e5),_0x2d25e5[0x6]=_0x2d25e5[0x6]&0xf|0x40,_0x2d25e5[0x8]=_0x2d25e5[0x8]&0x3f|0x80;const _0x3415d2=Array['from'](_0x2d25e5,_0x3bb197=>_0x3bb197['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3415d2['slice'](0x0,0x8)+'-'+_0x3415d2['slice'](0x8,0xc)+'-'+_0x3415d2['slice'](0xc,0x10)+'-'+_0x3415d2['slice'](0x10,0x14)+'-'+_0x3415d2['slice'](0x14);}};export class CustomSelect{constructor(_0x321ab5,_0xf86142={}){this['nativeSelect']=_0x321ab5,this['options']=_0xf86142,this['isOpen']=![],this['selectedValue']=_0x321ab5['value']||'',this['searchable']=_0xf86142['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1622bd=document['createElement']('div');_0x1622bd['className']='custom-select';const _0x4b69a4=document['createElement']('div');_0x4b69a4['className']='custom-select-trigger',_0x4b69a4['setAttribute']('tabindex','0'),_0x4b69a4['setAttribute']('role','button'),_0x4b69a4['setAttribute']('aria-haspopup','listbox');const _0x39c543=document['createElement']('span');_0x39c543['className']='custom-select-trigger-text';const _0x18052c=document['createElement']('span');_0x18052c['className']='custom-select-arrow',_0x18052c['textContent']='▼',_0x4b69a4['appendChild'](_0x39c543),_0x4b69a4['appendChild'](_0x18052c);const _0x1fe1ab=document['createElement']('div');_0x1fe1ab['className']='custom-select-dropdown',_0x1fe1ab['setAttribute']('role','listbox');if(this['searchable']){const _0x1d60fa=document['createElement']('div');_0x1d60fa['className']='custom-select-search';const _0x32230b=document['createElement']('input');_0x32230b['type']='text',_0x32230b['className']='custom-select-search-input',_0x32230b['placeholder']='Type\x20to\x20search...',_0x32230b['setAttribute']('aria-label','Search\x20options'),_0x32230b['addEventListener']('input',_0x32abde=>{this['searchQuery']=_0x32abde['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x32230b['addEventListener']('keydown',_0x2128a8=>{if(_0x2128a8['key']==='Escape')_0x2128a8['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2128a8['key']==='Enter'){_0x2128a8['preventDefault'](),_0x2128a8['stopPropagation']();const _0x5c2d95=_0x1fe1ab['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5c2d95){const _0x377d0e=_0x5c2d95['getAttribute']('data-value');this['select'](_0x377d0e);}}}}),_0x1d60fa['appendChild'](_0x32230b),_0x1fe1ab['appendChild'](_0x1d60fa),this['searchInput']=_0x32230b;}const _0x380db2=document['createElement']('div');_0x380db2['className']='custom-select-options',_0x1fe1ab['appendChild'](_0x380db2),_0x1622bd['appendChild'](_0x4b69a4),_0x1622bd['appendChild'](_0x1fe1ab),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1622bd,this['nativeSelect']),this['wrapper']=_0x1622bd,this['trigger']=_0x4b69a4,this['triggerText']=_0x39c543,this['dropdown']=_0x1fe1ab,this['optionsContainer']=_0x380db2,_0x4b69a4['addEventListener']('click',()=>this['toggle']()),_0x4b69a4['addEventListener']('keydown',_0x18cbdc=>this['handleKeydown'](_0x18cbdc)),document['addEventListener']('click',_0x179373=>{!_0x1622bd['contains'](_0x179373['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d76dc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d76dc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x42e9=new MutationObserver(()=>{this['updateDisabledState']();});_0x42e9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x57cb13=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x57cb13['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5cf483=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5cf483),this['trigger']['setAttribute']('aria-disabled',_0x5cf483?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5cf483?'-1':'0'),_0x5cf483&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x192e47=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ac0b0=_0x192e47['filter'](_0x101825=>!_0x101825['disabled']&&!_0x101825['hidden']);_0x192e47['forEach']((_0x2d97ba,_0x322290)=>{const _0x2cb146=document['createElement']('div');_0x2cb146['className']='custom-select-option',_0x2cb146['textContent']=_0x2d97ba['textContent'],_0x2cb146['setAttribute']('data-value',_0x2d97ba['value']),_0x2cb146['setAttribute']('data-index',_0x322290),_0x2cb146['setAttribute']('role','option'),_0x2d97ba['disabled']?_0x2cb146['classList']['add']('disabled'):_0x2cb146['addEventListener']('click',()=>this['select'](_0x2d97ba['value'])),_0x2d97ba['value']===this['selectedValue']&&_0x2cb146['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2cb146),this['allOptions']['push']({'element':_0x2cb146,'text':_0x2d97ba['textContent']['toLowerCase'](),'value':_0x2d97ba['value'],'disabled':_0x2d97ba['disabled']});});if(this['searchable']&&this['searchInput']){const _0x455c7c=this['searchInput']['parentElement'];_0x1ac0b0['length']>0x3?_0x455c7c['style']['display']='':_0x455c7c['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x377414=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x575d0e=>{if(!_0x377414||_0x575d0e['disabled'])_0x575d0e['element']['style']['display']='';else{const _0x3ac25d=_0x575d0e['text']['includes'](_0x377414);_0x575d0e['element']['style']['display']=_0x3ac25d?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1c3062){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1c3062,this['nativeSelect']['value']=_0x1c3062;const _0x593b5b=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x593b5b),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xf76975=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xf76975&&(this['triggerText']['textContent']=_0xf76975['textContent'],_0xf76975['disabled']||_0xf76975['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0xf93065=>{_0xf93065['getAttribute']('data-value')===this['selectedValue']?_0xf93065['classList']['add']('selected'):_0xf93065['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x37a018=window['getComputedStyle'](this['dropdown']);if(_0x37a018['position']==='fixed'){const _0xc738cd=this['trigger']['getBoundingClientRect'](),_0x2768ed=parseInt(_0x37a018['maxHeight'])||0xc8,_0xaa7ac1=window['innerHeight'],_0x1599f7=_0xaa7ac1-_0xc738cd['bottom'],_0x17157c=_0xc738cd['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x123201;_0x1599f7<_0x2768ed&&_0x17157c>_0x1599f7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xaa7ac1-_0xc738cd['top']+'px',_0x123201=Math['min'](_0x2768ed,_0x17157c-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xc738cd['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x123201=Math['min'](_0x2768ed,_0x1599f7-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px');if(this['optionsContainer']){let _0x29694b=_0x123201;if(this['searchInput']){const _0x47175f=this['searchInput']['parentElement'];_0x47175f&&(_0x29694b-=_0x47175f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x29694b)+'px';}this['dropdown']['style']['left']=_0xc738cd['left']+'px',this['dropdown']['style']['width']=_0xc738cd['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x16402e=this['searchInput']['parentElement'];_0x16402e&&_0x16402e['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x109669){if(this['nativeSelect']['disabled'])return;if(_0x109669['key']==='Enter'||_0x109669['key']==='\x20')_0x109669['preventDefault'](),this['toggle']();else _0x109669['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ea581='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x4ea581),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x23ff5c=document['getElementById']('confirm-dialog-close'),_0x3111d9=document['getElementById']('confirm-dialog-cancel'),_0x4f4bc5=document['getElementById']('confirm-dialog-confirm'),_0x185f1b=this['_modal']['querySelector']('.modal-overlay');_0x23ff5c['addEventListener']('click',()=>this['_resolve'](![])),_0x3111d9['addEventListener']('click',()=>this['_resolve'](![])),_0x4f4bc5['addEventListener']('click',()=>this['_resolve'](!![])),_0x185f1b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1e8327=>{if(_0x1e8327['key']==='Escape')_0x1e8327['preventDefault'](),this['_resolve'](![]);else _0x1e8327['key']==='Enter'&&(_0x1e8327['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xfd2c16,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x377a41=>{this['_resolvePromise']=_0x377a41,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xfd2c16;const _0x337fec=document['getElementById']('confirm-dialog-cancel'),_0x196b99=document['getElementById']('confirm-dialog-confirm');_0x337fec['textContent']=cancelText,_0x196b99['textContent']=confirmText,_0x196b99['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x196b99['focus']();});},'_resolve'(_0x222db1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x222db1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1f214b,_0x404ef6={}){this['container']=_0x1f214b,this['options']={'placeholder':_0x404ef6['placeholder']||'Type\x20to\x20search...','maxItems':_0x404ef6['maxItems']||0x64,'loadItems':_0x404ef6['loadItems']||(async()=>[]),'renderItem':_0x404ef6['renderItem']||(_0x430315=>({'primary':String(_0x430315),'secondary':''})),'onSelect':_0x404ef6['onSelect']||(()=>{}),'filterItems':_0x404ef6['filterItems']||null,'getItemValue':_0x404ef6['getItemValue']||(_0x297d68=>_0x297d68),'sortItems':_0x404ef6['sortItems']||null,'debounceMs':_0x404ef6['debounceMs']||0xc8,'minCharsForSearch':_0x404ef6['minCharsForSearch']||0x0,'emptyMessage':_0x404ef6['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x404ef6['loadingMessage']||'Loading...','preload':_0x404ef6['preload']!==![],'searchMode':_0x404ef6['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x2a5634=>this['onBlur'](_0x2a5634)),this['input']['addEventListener']('input',_0x5dab8d=>this['onInput'](_0x5dab8d)),this['input']['addEventListener']('keydown',_0x1322a3=>this['onKeydown'](_0x1322a3)),this['clearBtn']['addEventListener']('mousedown',_0x4d3524=>{_0x4d3524['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1d2d80=>{_0x1d2d80['preventDefault']();}),document['addEventListener']('click',_0x3845f4=>{!this['wrapper']['contains'](_0x3845f4['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x18ff78){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x18ff78);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x355c1b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35b0de){const _0x528b4b=_0x35b0de['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x528b4b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x528b4b):this['loadAndShow'](_0x528b4b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x401119){switch(_0x401119['key']){case'ArrowDown':_0x401119['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x401119['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x401119['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x401119['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x1675dd){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x40d07d=this['selectedIndex']+_0x1675dd;if(_0x40d07d>=0x0&&_0x40d07d<this['filteredItems']['length']){this['selectedIndex']=_0x40d07d,this['updateSelectionHighlight']();const _0x1b144b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1b144b[this['selectedIndex']]&&_0x1b144b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0xabb523=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xabb523['forEach']((_0x56a586,_0x2faecb)=>{_0x56a586['classList']['toggle']('keyboard-selected',_0x2faecb===this['selectedIndex']);});}async['loadAndShow'](_0x3a45ba){this['showLoading']();try{const _0x3a7920=await this['options']['loadItems'](_0x3a45ba);if(this['options']['searchMode']==='server'){let _0x576e0d=_0x3a7920;this['options']['sortItems']&&(_0x576e0d=this['options']['sortItems']([..._0x3a7920]));this['filteredItems']=_0x576e0d;const _0x478e5b=this['filteredItems']['length']>=this['options']['maxItems'];_0x478e5b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x478e5b),this['open']();}else this['allItems']=_0x3a7920,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x3a45ba);}catch(_0x3c31aa){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3c31aa),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2f2d19){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2f2d19):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5a4cd7=this['filteredItems']['length']>=this['options']['maxItems'];_0x5a4cd7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5a4cd7),this['open']();}['renderItems'](_0x5a90b4){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x20d51d,_0x1483e1)=>{const _0x5204a6=document['createElement']('div');_0x5204a6['className']='autocomplete-select-item',_0x5204a6['setAttribute']('role','option'),_0x5204a6['setAttribute']('data-index',_0x1483e1);const _0x976381=this['options']['renderItem'](_0x20d51d);let _0xca321f='';_0x976381['icon']&&(_0xca321f='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x976381['iconClass']||'')+'\x22>'+_0x976381['icon']+'</span>'),_0x5204a6['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xca321f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x976381['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x976381['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x976381['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5204a6['addEventListener']('click',()=>{this['selectItem'](_0x20d51d);}),_0x5204a6['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1483e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5204a6);}),_0x5a90b4?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x2ba29a){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2ba29a)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x36c471){this['selectedItem']=_0x36c471;const _0x4c650c=this['options']['renderItem'](_0x36c471);this['input']['value']=_0x4c650c['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x36c471);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x4779a4){if(_0x4779a4){this['selectedItem']=_0x4779a4;const _0x4b9b1b=this['options']['renderItem'](_0x4779a4);this['input']['value']=_0x4b9b1b['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x48a593){this['allItems']=_0x48a593,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x4d487f){this['input']['placeholder']=_0x4d487f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x201a3a=null){const _0x4ff104=document['getElementById']('admin-menu-container'),_0x2bf1de=document['getElementById']('admin-menu-btn'),_0x1fffdb=document['getElementById']('admin-menu');if(!_0x4ff104||!_0x2bf1de||!_0x1fffdb)return;try{!_0x201a3a&&(_0x201a3a=await API['getCurrentUser']());if(_0x201a3a){const _0x4800b3=window['Permissions'],_0x1da9f2=_0x4800b3['hasServerPermission'](_0x201a3a,'*')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:manage')||_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')||_0x4800b3['hasTeamPermission'](_0x201a3a,'teams:manage')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:view_details');if(!_0x1da9f2)return;_0x4ff104['hidden']=![];if(!_0x4800b3['hasServerPermission'](_0x201a3a,'*')){const _0x55e8e5=_0x1fffdb['querySelectorAll']('.admin-menu-item');_0x55e8e5['forEach'](_0x5bbe4a=>{const _0x238dc8=_0x5bbe4a['querySelector']('.option-text')?.['textContent']?.['trim']();_0x238dc8==='Users'&&!_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Skills'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Settings'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Health'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Git\x20History'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Roles'&&(_0x5bbe4a['hidden']=!![]);});}_0x2bf1de['addEventListener']('click',_0x25c738=>{_0x25c738['stopPropagation']();const _0xb0adca=document['getElementById']('actions-menu');if(_0xb0adca)_0xb0adca['hidden']=!![];_0x1fffdb['hidden']=!_0x1fffdb['hidden'];}),document['addEventListener']('click',_0x40afaa=>{!_0x1fffdb['hidden']&&!_0x2bf1de['contains'](_0x40afaa['target'])&&!_0x1fffdb['contains'](_0x40afaa['target'])&&(_0x1fffdb['hidden']=!![]);}),document['addEventListener']('keydown',_0x30a990=>{_0x30a990['key']==='Escape'&&!_0x1fffdb['hidden']&&(_0x1fffdb['hidden']=!![]);});const _0x3e01cf=document['getElementById']('server-health-btn');_0x3e01cf&&_0x3e01cf['addEventListener']('click',async()=>{_0x1fffdb['hidden']=!![];const {openServerHealthModal:_0x326aef}=await import('./server-health.js');_0x326aef();});}}catch(_0x174031){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x174031['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|