@profoundlogic/coderflow-server 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/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-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/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task.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 _0x229083=window['location']['pathname'],_0x58493e=_0x229083['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x58493e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x58493e[0x1]),_0x58493e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x11ab96={}){const _0x24aab5=new URLSearchParams();_0x11ab96['userId']&&_0x24aab5['set']('userId',String(_0x11ab96['userId']));_0x11ab96['automation']&&_0x24aab5['set']('automation',String(_0x11ab96['automation']));const _0x28bb2b=API_BASE+'/tasks/stats'+(_0x24aab5['toString']()?'?'+_0x24aab5['toString']():''),_0x12666d=await fetch(_0x28bb2b);if(!_0x12666d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x12666d['statusText']);return await _0x12666d['json']();},async 'getTasks'(_0x1c0f2c={}){const _0x496e10=new URLSearchParams();_0x1c0f2c['status']&&_0x496e10['set']('status',String(_0x1c0f2c['status']));_0x1c0f2c['environment']&&_0x496e10['set']('environment',String(_0x1c0f2c['environment']));_0x1c0f2c['automation']&&_0x496e10['set']('automation',String(_0x1c0f2c['automation']));if(_0x1c0f2c['include']){const _0x3a37c7=Array['isArray'](_0x1c0f2c['include'])?_0x1c0f2c['include']['join'](','):String(_0x1c0f2c['include']);_0x3a37c7&&_0x496e10['set']('include',_0x3a37c7);}_0x1c0f2c['filter']&&_0x496e10['set']('filter',String(_0x1c0f2c['filter']));_0x1c0f2c['page']&&_0x496e10['set']('page',String(_0x1c0f2c['page']));_0x1c0f2c['limit']&&_0x496e10['set']('limit',String(_0x1c0f2c['limit']));_0x1c0f2c['userId']&&_0x496e10['set']('userId',String(_0x1c0f2c['userId']));_0x1c0f2c['search']&&_0x496e10['set']('search',String(_0x1c0f2c['search']));_0x1c0f2c['includeChildTasks']&&_0x496e10['set']('includeChildTasks','true');const _0x810deb=API_BASE+'/tasks'+(_0x496e10['toString']()?'?'+_0x496e10['toString']():''),_0x5cea20=await fetch(_0x810deb);if(!_0x5cea20['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x5cea20['statusText']);return await _0x5cea20['json']();},async 'getAutomations'(_0x39783c={}){const _0x465ff7=new URLSearchParams();_0x39783c['environment']&&_0x465ff7['set']('environment',String(_0x39783c['environment']));const _0xcc7b4=await fetch(API_BASE+'/api/automations'+(_0x465ff7['toString']()?'?'+_0x465ff7['toString']():''));if(!_0xcc7b4['ok']){const _0x2eb720=await _0xcc7b4['json']()['catch'](()=>({}));throw new Error(_0x2eb720['message']||_0x2eb720['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xcc7b4['statusText']);}return await _0xcc7b4['json']();},async 'getAutomation'(_0x423788){const _0x117e46=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x423788));if(!_0x117e46['ok']){const _0x56bc47=await _0x117e46['json']()['catch'](()=>({}));throw new Error(_0x56bc47['message']||_0x56bc47['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x117e46['statusText']);}return await _0x117e46['json']();},async 'createAutomation'(_0x5664cd){const _0xa8e459=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5664cd||{})});if(!_0xa8e459['ok']){const _0x59d50f=await _0xa8e459['json']()['catch'](()=>({}));throw new Error(_0x59d50f['message']||_0x59d50f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xa8e459['statusText']);}return await _0xa8e459['json']();},async 'updateAutomation'(_0x5b0711,_0x4dff1a){const _0x350de1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5b0711),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dff1a||{})});if(!_0x350de1['ok']){const _0x4d992d=await _0x350de1['json']()['catch'](()=>({}));throw new Error(_0x4d992d['message']||_0x4d992d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x350de1['statusText']);}return await _0x350de1['json']();},async 'deleteAutomation'(_0x11a95c){const _0x2bb3b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x11a95c),{'method':'DELETE'});if(!_0x2bb3b7['ok']){const _0x503db7=await _0x2bb3b7['json']()['catch'](()=>({}));throw new Error(_0x503db7['message']||_0x503db7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x2bb3b7['statusText']);}return await _0x2bb3b7['json']();},async 'triggerAutomation'(_0x416d04){const _0x5a7a6a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x416d04)+'/trigger',{'method':'POST'});if(!_0x5a7a6a['ok']){const _0x27f181=await _0x5a7a6a['json']()['catch'](()=>({}));throw new Error(_0x27f181['message']||_0x27f181['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5a7a6a['statusText']);}return await _0x5a7a6a['json']();},async 'setAutomationEnabled'(_0x410c45,_0x56b341){const _0x4fea4f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x410c45)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x56b341})});if(!_0x4fea4f['ok']){const _0x22818e=await _0x4fea4f['json']()['catch'](()=>({}));throw new Error(_0x22818e['message']||_0x22818e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4fea4f['statusText']);}return await _0x4fea4f['json']();},async 'getAutomationHistory'(_0x4d86bd,_0x4cfbed=0x32){const _0x5ef4f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d86bd)+'/history?limit='+encodeURIComponent(String(_0x4cfbed)));if(!_0x5ef4f5['ok']){const _0xa082bd=await _0x5ef4f5['json']()['catch'](()=>({}));throw new Error(_0xa082bd['message']||_0xa082bd['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5ef4f5['statusText']);}return await _0x5ef4f5['json']();},async 'getTask'(_0x4b0c61,_0x129543={}){const _0xa28a94=new URLSearchParams();if(_0x129543['include']){const _0x41aeb3=Array['isArray'](_0x129543['include'])?_0x129543['include']['join'](','):String(_0x129543['include']);if(_0x41aeb3)_0xa28a94['set']('include',_0x41aeb3);}const _0x39a224=await fetch(API_BASE+'/tasks/'+_0x4b0c61+(_0xa28a94['toString']()?'?'+_0xa28a94['toString']():''));if(!_0x39a224['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39a224['statusText']);return await _0x39a224['json']();},async 'getTaskResults'(_0x3cda08){const _0xd1d5b7=await fetch(API_BASE+'/tasks/'+_0x3cda08+'/results');if(!_0xd1d5b7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xd1d5b7['statusText']);return await _0xd1d5b7['json']();},async 'getTaskPatches'(_0xf637e6){const _0x475ab5=await fetch(API_BASE+'/tasks/'+_0xf637e6+'/patches');if(!_0x475ab5['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x475ab5['statusText']);return await _0x475ab5['json']();},async 'getTaskAttachments'(_0x224164){const _0x2a0347=await fetch(API_BASE+'/tasks/'+_0x224164+'/attachments');if(!_0x2a0347['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2a0347['statusText']);return await _0x2a0347['json']();},async 'uploadAttachments'(_0x2fc9af,_0x34e054){const _0x4f1445=new FormData();for(const _0x10d473 of _0x34e054){_0x4f1445['append']('attachments',_0x10d473);}const _0x4b874b=await fetch(API_BASE+'/tasks/'+_0x2fc9af+'/attachments',{'method':'POST','body':_0x4f1445});if(!_0x4b874b['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4b874b['statusText']);return await _0x4b874b['json']();},async 'isAINameGenerationAvailable'(){try{const _0x41d761=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x41d761['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x41d761['json']();}catch(_0x32a20c){return{'available':![],'reason':_0x32a20c['message']};}},async 'generateTaskName'(_0x3d018e){try{const _0x287591=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x3d018e})});return await _0x287591['json']();}catch(_0x5df5c4){return{'success':![],'error':_0x5df5c4['message']};}},async 'createTask'(_0x25c41b){let _0x56288e,_0x3d75c1={};if(_0x25c41b['files']&&_0x25c41b['files']['length']>0x0){const _0x1e194a=new FormData();for(const [_0x43d711,_0x1e35fc]of Object['entries'](_0x25c41b)){if(_0x43d711!=='files'){if(_0x1e35fc==null)continue;typeof _0x1e35fc==='object'?_0x1e194a['append'](_0x43d711,JSON['stringify'](_0x1e35fc)):_0x1e194a['append'](_0x43d711,String(_0x1e35fc));}}for(const _0xa2a908 of _0x25c41b['files']){_0x1e194a['append']('attachments',_0xa2a908);}_0x56288e=_0x1e194a;}else _0x3d75c1['Content-Type']='application/json',_0x56288e=JSON['stringify'](_0x25c41b);const _0x1ebe70=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3d75c1,'body':_0x56288e});if(!_0x1ebe70['ok']){const _0x13fbcc=await _0x1ebe70['json'](),_0x18cc6c=new Error(_0x13fbcc['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1ebe70['statusText']),{message:_0x58df92,..._0x2c4c4f}=_0x13fbcc;Object['assign'](_0x18cc6c,_0x2c4c4f);throw _0x18cc6c;}return await _0x1ebe70['json']();},async 'createTestTask'(_0x21881e){const _0x3895d1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21881e)});if(!_0x3895d1['ok']){const _0x100595=await _0x3895d1['json']();throw new Error(_0x100595['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3895d1['statusText']);}return await _0x3895d1['json']();},async 'createEphemeralTest'(_0x4bb8b9){const _0x191f45=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb8b9)});if(!_0x191f45['ok']){const _0x5f1542=await _0x191f45['json']();throw new Error(_0x5f1542['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x191f45['statusText']);}return await _0x191f45['json']();},async 'createDeployTask'(_0x14c319){const _0x5b662f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x14c319)});if(!_0x5b662f['ok']){const _0x3867f0=await _0x5b662f['json']();throw new Error(_0x3867f0['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5b662f['statusText']);}return await _0x5b662f['json']();},async 'getEnvironments'(){const _0x27ea33=await fetch(API_BASE+'/environments');if(!_0x27ea33['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x27ea33['statusText']);return await _0x27ea33['json']();},async 'getEnvironment'(_0x4611a3){const _0x4cd911=await fetch(API_BASE+'/environments/'+_0x4611a3);if(!_0x4cd911['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4cd911['statusText']);return await _0x4cd911['json']();},async 'getEnvironmentRepoHistory'(_0x35c19d,_0x5c7794,_0x55ec2c={}){if(!_0x35c19d||!_0x5c7794)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x11d30b=new URLSearchParams();if(_0x55ec2c['limit'])_0x11d30b['set']('limit',String(_0x55ec2c['limit']));if(_0x55ec2c['offset'])_0x11d30b['set']('offset',String(_0x55ec2c['offset']));if(_0x55ec2c['search'])_0x11d30b['set']('search',String(_0x55ec2c['search']));if(_0x55ec2c['branch'])_0x11d30b['set']('branch',String(_0x55ec2c['branch']));const _0x6d95c1=API_BASE+'/environments/'+encodeURIComponent(_0x35c19d)+'/repos/'+encodeURIComponent(_0x5c7794)+'/git/history',_0x5aa716=await fetch(''+_0x6d95c1+(_0x11d30b['toString']()?'?'+_0x11d30b['toString']():''));if(!_0x5aa716['ok']){const _0x3fc348=await _0x5aa716['json']()['catch'](()=>({}));throw new Error(_0x3fc348['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5aa716['statusText']);}return await _0x5aa716['json']();},async 'getEnvironmentRepoCommit'(_0x16ca91,_0x3e548e,_0x14b333){if(!_0x16ca91||!_0x3e548e||!_0x14b333)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2ba090=API_BASE+'/environments/'+encodeURIComponent(_0x16ca91)+'/repos/'+encodeURIComponent(_0x3e548e)+'/git/commits/'+encodeURIComponent(_0x14b333),_0x1684b9=await fetch(_0x2ba090);if(!_0x1684b9['ok']){const _0x1c6ebb=await _0x1684b9['json']()['catch'](()=>({}));throw new Error(_0x1c6ebb['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1684b9['statusText']);}return await _0x1684b9['json']();},async 'getEnvironmentRepoBranches'(_0x204664,_0x3b31a2){if(!_0x204664||!_0x3b31a2)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4de03e=API_BASE+'/environments/'+encodeURIComponent(_0x204664)+'/repos/'+encodeURIComponent(_0x3b31a2)+'/git/branches',_0x2cbd7f=await fetch(_0x4de03e);if(!_0x2cbd7f['ok']){const _0x292527=await _0x2cbd7f['json']()['catch'](()=>({}));throw new Error(_0x292527['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2cbd7f['statusText']);}return await _0x2cbd7f['json']();},async 'revertEnvironmentRepoCommit'(_0x3a9136,_0xfbe155,_0x1d4ad2,_0x21a4e7={}){if(!_0x3a9136||!_0xfbe155||!_0x1d4ad2)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3a0238=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x3a9136)+'/repos/'+encodeURIComponent(_0xfbe155)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1d4ad2,..._0x21a4e7})});if(!_0x3a0238['ok']){const _0xa9cc5c=await _0x3a0238['json']()['catch'](()=>({}));throw new Error(_0xa9cc5c['message']||_0xa9cc5c['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3a0238['statusText']);}return await _0x3a0238['json']();},async 'getTemplates'(_0x23f847={}){const _0x565345=new URLSearchParams();if(_0x23f847['include']){const _0x43ace4=Array['isArray'](_0x23f847['include'])?_0x23f847['include']['join'](','):String(_0x23f847['include']);if(_0x43ace4)_0x565345['set']('include',_0x43ace4);}const _0x4a82fb=await fetch(API_BASE+'/templates'+(_0x565345['toString']()?'?'+_0x565345['toString']():''));if(!_0x4a82fb['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4a82fb['statusText']);return await _0x4a82fb['json']();},async 'getTemplatesForEnvironment'(_0x31a65b,_0x2dda94={}){if(!_0x31a65b)throw new Error('Environment\x20name\x20is\x20required');const _0x219d6a=new URLSearchParams();if(_0x2dda94['include']){const _0x131313=Array['isArray'](_0x2dda94['include'])?_0x2dda94['include']['join'](','):String(_0x2dda94['include']);if(_0x131313)_0x219d6a['set']('include',_0x131313);}const _0x38b5ca=await fetch(API_BASE+'/templates/'+_0x31a65b+(_0x219d6a['toString']()?'?'+_0x219d6a['toString']():''));if(!_0x38b5ca['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x31a65b+':\x20'+_0x38b5ca['statusText']);return await _0x38b5ca['json']();},async 'getTemplate'(_0x3347b1,_0x123869,_0x553bb2={}){if(!_0x3347b1||!_0x123869)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2807e2=new URLSearchParams();if(_0x553bb2['include']){const _0x4cabca=Array['isArray'](_0x553bb2['include'])?_0x553bb2['include']['join'](','):String(_0x553bb2['include']);if(_0x4cabca)_0x2807e2['set']('include',_0x4cabca);}const _0x490a60=await fetch(API_BASE+'/templates/'+_0x3347b1+'/'+_0x123869+(_0x2807e2['toString']()?'?'+_0x2807e2['toString']():''));if(!_0x490a60['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x490a60['statusText']);return await _0x490a60['json']();},async 'getTaskLogs'(_0x56b6db,_0x45accb={}){if(!_0x56b6db)throw new Error('Task\x20ID\x20is\x20required');const _0x56ae74=new URLSearchParams();_0x45accb['tail']&&_0x56ae74['set']('tail',String(_0x45accb['tail']));const _0xdc7c1e=await fetch(API_BASE+'/tasks/'+_0x56b6db+'/logs'+(_0x56ae74['toString']()?'?'+_0x56ae74['toString']():''));if(!_0xdc7c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0xdc7c1e['statusText']);return await _0xdc7c1e['text']();},async 'getContainers'(){const _0x351480=await fetch(API_BASE+'/containers');if(!_0x351480['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x351480['statusText']);return await _0x351480['json']();},async 'getContainer'(_0x4b6fbd){const _0xdf80c6=await fetch(API_BASE+'/containers/'+_0x4b6fbd);if(!_0xdf80c6['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xdf80c6['statusText']);return await _0xdf80c6['json']();},async 'startInteractiveContainer'(_0x3ba937){const _0x35ffda=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ba937)});if(!_0x35ffda['ok']){const _0x4684bf=await _0x35ffda['json']()['catch'](()=>({}));throw new Error(_0x4684bf['message']||'Failed\x20to\x20start\x20container:\x20'+_0x35ffda['statusText']);}return await _0x35ffda['json']();},async 'stopContainer'(_0x140e27){const _0x14b17f=await fetch(API_BASE+'/containers/'+_0x140e27,{'method':'DELETE'});if(!_0x14b17f['ok']){const _0x31de43=await _0x14b17f['json']()['catch'](()=>({}));throw new Error(_0x31de43['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x14b17f['statusText']);}return await _0x14b17f['json']();},async 'stopTask'(_0x437548){if(!_0x437548)throw new Error('Task\x20ID\x20is\x20required');const _0x36ef73=await fetch(API_BASE+'/tasks/'+_0x437548+'/stop',{'method':'POST'});if(!_0x36ef73['ok']){const _0xe4868b=await _0x36ef73['json']()['catch'](()=>({}));throw new Error(_0xe4868b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x36ef73['statusText']);}return await _0x36ef73['json']();},async 'interruptTask'(_0x56d8d6){if(!_0x56d8d6)throw new Error('Task\x20ID\x20is\x20required');const _0x4c15ec=await fetch(API_BASE+'/tasks/'+_0x56d8d6+'/interrupt',{'method':'POST'});if(!_0x4c15ec['ok']){const _0xbb2161=await _0x4c15ec['json']()['catch'](()=>({}));throw new Error(_0xbb2161['error']||_0xbb2161['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4c15ec['statusText']);}return await _0x4c15ec['json']();},async 'startTask'(_0x1ec50a){if(!_0x1ec50a)throw new Error('Task\x20ID\x20is\x20required');const _0x4a0a45=await fetch(API_BASE+'/tasks/'+_0x1ec50a+'/start',{'method':'POST'});if(!_0x4a0a45['ok']){const _0x17f93b=await _0x4a0a45['json']()['catch'](()=>({}));throw new Error(_0x17f93b['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4a0a45['statusText']);}return await _0x4a0a45['json']();},async 'deleteTask'(_0x3c3de9){if(!_0x3c3de9)throw new Error('Task\x20ID\x20is\x20required');const _0x65a60f=await fetch(API_BASE+'/tasks/'+_0x3c3de9,{'method':'DELETE'});if(!_0x65a60f['ok']){const _0x13c149=await _0x65a60f['json']()['catch'](()=>({}));throw new Error(_0x13c149['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x65a60f['statusText']);}return await _0x65a60f['json']();},async 'refreshTasksFromDisk'(){const _0xa20ac5=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xa20ac5['ok']){const _0x563e9c=await _0xa20ac5['json']()['catch'](()=>({}));throw new Error(_0x563e9c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xa20ac5['statusText']);}return await _0xa20ac5['json']();},async 'approveTask'(_0x5bc5e9,_0x4fa32f={}){if(!_0x5bc5e9)throw new Error('Task\x20ID\x20is\x20required');const _0x27c124={'commit_message':_0x4fa32f['commit_message']||'','pull':_0x4fa32f['pull']??![],'push':_0x4fa32f['push']??![]};_0x4fa32f['new_branch']&&(_0x27c124['new_branch']=_0x4fa32f['new_branch']);const _0x2d4734=await fetch(API_BASE+'/tasks/'+_0x5bc5e9+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x27c124)});if(!_0x2d4734['ok']){const _0x1bea20=await _0x2d4734['json']()['catch'](()=>({}));let _0x49b8f9=_0x1bea20['error']||_0x1bea20['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2d4734['statusText'];if(_0x1bea20['results']&&Array['isArray'](_0x1bea20['results'])){const _0x1e413f=_0x1bea20['results']['filter'](_0x4e1db5=>!_0x4e1db5['success']&&_0x4e1db5['error']);_0x1e413f['length']>0x0&&(_0x49b8f9=_0x1e413f[0x0]['error']);}throw new Error(_0x49b8f9);}return await _0x2d4734['json']();},async 'getPullRequestInfo'(_0x4c3ae3){if(!_0x4c3ae3)throw new Error('Task\x20ID\x20is\x20required');const _0x3d84ea=await fetch(API_BASE+'/tasks/'+_0x4c3ae3+'/pull-request-info');if(!_0x3d84ea['ok']){const _0x41b8c6=await _0x3d84ea['json']()['catch'](()=>({}));throw new Error(_0x41b8c6['error']||_0x41b8c6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d84ea['statusText']);}return await _0x3d84ea['json']();},async 'createPullRequests'(_0x425cf8,_0x37bdb9){if(!_0x425cf8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37bdb9||!Array['isArray'](_0x37bdb9))throw new Error('repos\x20array\x20is\x20required');const _0x58c5cb=await fetch(API_BASE+'/tasks/'+_0x425cf8+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37bdb9})});if(!_0x58c5cb['ok']){const _0xcc9f67=await _0x58c5cb['json']()['catch'](()=>({}));let _0x5a1a9a=_0xcc9f67['error']||_0xcc9f67['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c5cb['statusText'];if(_0xcc9f67['results']&&Array['isArray'](_0xcc9f67['results'])){const _0x33d7e7=_0xcc9f67['results']['filter'](_0x4fa5a7=>!_0x4fa5a7['success']&&_0x4fa5a7['error']);_0x33d7e7['length']>0x0&&(_0x5a1a9a=_0x33d7e7[0x0]['error']);}throw new Error(_0x5a1a9a);}return await _0x58c5cb['json']();},async 'syncRepos'(_0x13fabd){if(!_0x13fabd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d6321=await fetch(API_BASE+'/tasks/'+_0x13fabd+'/sync-repos',{'method':'POST'});if(!_0x4d6321['ok']){const _0x574cf2=await _0x4d6321['json']()['catch'](()=>({}));throw new Error(_0x574cf2['error']||_0x574cf2['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4d6321['statusText']);}return await _0x4d6321['json']();},async 'getIbmiSyncInfo'(_0x2c3132){if(!_0x2c3132)throw new Error('Task\x20ID\x20is\x20required');const _0x5ee9d3=await fetch(API_BASE+'/tasks/'+_0x2c3132+'/ibmi-sync-info');if(!_0x5ee9d3['ok']){const _0x60d2ff=await _0x5ee9d3['json']()['catch'](()=>({}));throw new Error(_0x60d2ff['error']||_0x60d2ff['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5ee9d3['json']();},async 'getSyncFiles'(_0x312b1b){if(!_0x312b1b)throw new Error('Task\x20ID\x20is\x20required');const _0x30e6d4=await fetch(API_BASE+'/tasks/'+_0x312b1b+'/sync-to-ibmi/files');if(!_0x30e6d4['ok']){const _0x1dbc2a=await _0x30e6d4['json']()['catch'](()=>({}));throw new Error(_0x1dbc2a['error']||_0x1dbc2a['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x30e6d4['json']();},async 'syncToIbmi'(_0x598fa3,_0x1a8be4,_0x3d8d38=null,_0x5883f5=null,_0x16ac4f=null){if(!_0x598fa3)throw new Error('Task\x20ID\x20is\x20required');const _0x1cbb6a={'library':_0x1a8be4};if(_0x3d8d38)_0x1cbb6a['user']=_0x3d8d38;if(_0x5883f5)_0x1cbb6a['password']=_0x5883f5;if(_0x16ac4f)_0x1cbb6a['files']=_0x16ac4f;const _0x53a64c=await fetch(API_BASE+'/tasks/'+_0x598fa3+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cbb6a)});if(!_0x53a64c['ok']){const _0x53fb41=await _0x53a64c['json']()['catch'](()=>({}));throw new Error(_0x53fb41['error']||_0x53fb41['message']||'Sync\x20failed');}return await _0x53a64c['json']();},async 'getIbmiSyncLog'(_0x83b36){if(!_0x83b36)throw new Error('Task\x20ID\x20is\x20required');const _0x4ebc9a=await fetch(API_BASE+'/tasks/'+_0x83b36+'/ibmi-sync-log');if(!_0x4ebc9a['ok']){const _0x431fd0=await _0x4ebc9a['json']()['catch'](()=>({}));throw new Error(_0x431fd0['error']||_0x431fd0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4ebc9a['json']();},async 'pullChanges'(_0x160cf6){if(!_0x160cf6)throw new Error('Task\x20ID\x20is\x20required');const _0x42e047=await fetch(API_BASE+'/tasks/'+_0x160cf6+'/pull-changes',{'method':'POST'});if(!_0x42e047['ok']){const _0x14ab00=await _0x42e047['json']()['catch'](()=>({}));throw new Error(_0x14ab00['error']||_0x14ab00['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x42e047['statusText']);}return await _0x42e047['json']();},async 'readFile'(_0x295da9,_0x23f4ca){if(!_0x295da9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23f4ca)throw new Error('File\x20path\x20is\x20required');const _0x46b551=await fetch(API_BASE+'/tasks/'+_0x295da9+'/files?path='+encodeURIComponent(_0x23f4ca));if(!_0x46b551['ok']){const _0x31e0f4=await _0x46b551['json']()['catch'](()=>({}));throw new Error(_0x31e0f4['error']||_0x31e0f4['message']||'Failed\x20to\x20read\x20file:\x20'+_0x46b551['statusText']);}return await _0x46b551['json']();},'getTaskFileDownloadUrl'(_0x58f072,_0x57f6db){if(!_0x58f072)throw new Error('Task\x20ID\x20is\x20required');if(!_0x57f6db)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x58f072+'/files/download?path='+encodeURIComponent(_0x57f6db);},async 'writeFile'(_0x2c3e5a,_0x29039b,_0x2ea222){if(!_0x2c3e5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x29039b)throw new Error('File\x20path\x20is\x20required');if(_0x2ea222===undefined)throw new Error('Content\x20is\x20required');const _0x787931=await fetch(API_BASE+'/tasks/'+_0x2c3e5a+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x29039b,'content':_0x2ea222})});if(!_0x787931['ok']){const _0x244615=await _0x787931['json']()['catch'](()=>({}));throw new Error(_0x244615['error']||_0x244615['message']||'Failed\x20to\x20write\x20file:\x20'+_0x787931['statusText']);}return await _0x787931['json']();},async 'uploadTaskFiles'(_0x5d7976,_0x4d3996,_0x2e0d8d){if(!_0x5d7976)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d3996)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2e0d8d||_0x2e0d8d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3ef37c=new FormData();_0x3ef37c['append']('targetDir',_0x4d3996);for(const _0x2383d9 of _0x2e0d8d){_0x3ef37c['append']('files',_0x2383d9,_0x2383d9['name']);}const _0xa50fb6=await fetch(API_BASE+'/tasks/'+_0x5d7976+'/files/upload',{'method':'POST','body':_0x3ef37c});if(!_0xa50fb6['ok']){const _0x2123e2=await _0xa50fb6['json']()['catch'](()=>({}));throw new Error(_0x2123e2['error']||_0x2123e2['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa50fb6['statusText']);}return await _0xa50fb6['json']();},async 'deleteFile'(_0x3b2497,_0x5a36d9){if(!_0x3b2497)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a36d9)throw new Error('File\x20path\x20is\x20required');const _0x140864=await fetch(API_BASE+'/tasks/'+_0x3b2497+'/files?path='+encodeURIComponent(_0x5a36d9),{'method':'DELETE'});if(!_0x140864['ok']){const _0x14cdc4=await _0x140864['json']()['catch'](()=>({}));throw new Error(_0x14cdc4['error']||_0x14cdc4['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x140864['statusText']);}return await _0x140864['json']();},async 'discardFile'(_0x2e5d81,_0x2275db,_0x3189cc){if(!_0x2e5d81)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2275db)throw new Error('File\x20path\x20is\x20required');if(!_0x3189cc)throw new Error('Repository\x20path\x20is\x20required');const _0x4f04fe=await fetch(API_BASE+'/tasks/'+_0x2e5d81+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2275db,'repoPath':_0x3189cc})});if(!_0x4f04fe['ok']){const _0x17ec6a=await _0x4f04fe['json']()['catch'](()=>({}));throw new Error(_0x17ec6a['error']||_0x17ec6a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4f04fe['statusText']);}return await _0x4f04fe['json']();},async 'followUpTask'(_0x1e3f0a,_0x5ce96a={}){if(!_0x1e3f0a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ce96a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x341251,_0x1d243b={};if(_0x5ce96a['files']&&_0x5ce96a['files']['length']>0x0){const _0x51504d=new FormData();_0x51504d['append']('instructions',_0x5ce96a['instructions']);for(const _0x574150 of _0x5ce96a['files']){_0x51504d['append']('attachments',_0x574150);}_0x341251=_0x51504d;}else _0x1d243b['Content-Type']='application/json',_0x341251=JSON['stringify']({'instructions':_0x5ce96a['instructions']});const _0x41454f=await fetch(API_BASE+'/tasks/'+_0x1e3f0a+'/follow-up',{'method':'POST','headers':_0x1d243b,'body':_0x341251});if(!_0x41454f['ok']){const _0x5a867d=await _0x41454f['json']()['catch'](()=>({}));throw new Error(_0x5a867d['error']||_0x5a867d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x41454f['statusText']);}return await _0x41454f['json']();},async 'getTaskRewindPoints'(_0x5df724){if(!_0x5df724)throw new Error('Task\x20ID\x20is\x20required');const _0xcea0ee=await fetch(API_BASE+'/tasks/'+_0x5df724+'/rewind-points');if(!_0xcea0ee['ok']){const _0x47bccb=await _0xcea0ee['json']()['catch'](()=>({}));throw new Error(_0x47bccb['error']||_0x47bccb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xcea0ee['statusText']);}return await _0xcea0ee['json']();},async 'rewindTask'(_0x54df15,_0x53d9f5={}){if(!_0x54df15)throw new Error('Task\x20ID\x20is\x20required');const _0x41ccf2=Number['isInteger'](_0x53d9f5['targetFollowUpCount'])?_0x53d9f5['targetFollowUpCount']:0x0,_0x4859f5={'targetFollowUpCount':_0x41ccf2};typeof _0x53d9f5['instructions']==='string'&&_0x53d9f5['instructions']['trim']()&&(_0x4859f5['instructions']=_0x53d9f5['instructions']['trim']());typeof _0x53d9f5['rewindFiles']==='boolean'&&(_0x4859f5['rewindFiles']=_0x53d9f5['rewindFiles']);const _0x588915=await fetch(API_BASE+'/tasks/'+_0x54df15+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4859f5)});if(!_0x588915['ok']){const _0x9d5789=await _0x588915['json']()['catch'](()=>({}));throw new Error(_0x9d5789['error']||_0x9d5789['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x588915['statusText']);}return await _0x588915['json']();},async 'login'(_0x44bca6,_0x2ed539){const _0x27f0d1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x44bca6,'password':_0x2ed539})});if(!_0x27f0d1['ok']){const _0x4d209b=await _0x27f0d1['json']();throw new Error(_0x4d209b['message']||'Login\x20failed');}return await _0x27f0d1['json']();},async 'logout'(){const _0x330d70=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x330d70['ok']){const _0x553591=await _0x330d70['json']();throw new Error(_0x553591['message']||'Logout\x20failed');}return await _0x330d70['json']();},async 'getCurrentUser'(){const _0x455e1c=await fetch(API_BASE+'/auth/me');if(!_0x455e1c['ok'])throw new Error('Not\x20authenticated');const _0x4acfe1=await _0x455e1c['json']();return _0x4acfe1['user'];},async 'getRolesInfo'(){const _0x337fb5=await fetch(API_BASE+'/users/roles');if(!_0x337fb5['ok']){const _0x4af7e1=await _0x337fb5['json']();throw new Error(_0x4af7e1['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x337fb5['json']();},async 'getUsers'(){const _0x2069af=await fetch(API_BASE+'/users');if(!_0x2069af['ok']){const _0x3df7ba=await _0x2069af['json']();throw new Error(_0x3df7ba['message']||'Failed\x20to\x20get\x20users');}return await _0x2069af['json']();},async 'getUser'(_0x1c72f4){const _0x534b14=await fetch(API_BASE+'/users/'+_0x1c72f4);if(!_0x534b14['ok']){const _0x31f1c8=await _0x534b14['json']();throw new Error(_0x31f1c8['message']||'Failed\x20to\x20get\x20user');}return await _0x534b14['json']();},async 'createUser'(_0x5b3627){const _0x34f2c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b3627)});if(!_0x34f2c0['ok']){const _0x36ca69=await _0x34f2c0['json']();throw new Error(_0x36ca69['message']||'Failed\x20to\x20create\x20user');}return await _0x34f2c0['json']();},async 'updateUser'(_0x22c85d,_0x336626){const _0x1c3253=await fetch(API_BASE+'/users/'+_0x22c85d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336626)});if(!_0x1c3253['ok']){const _0x4dc1de=await _0x1c3253['json']();throw new Error(_0x4dc1de['message']||'Failed\x20to\x20update\x20user');}return await _0x1c3253['json']();},async 'deleteUser'(_0x31f99e){const _0x312284=await fetch(API_BASE+'/users/'+_0x31f99e,{'method':'DELETE'});if(!_0x312284['ok']){const _0x56b348=await _0x312284['json']();throw new Error(_0x56b348['message']||'Failed\x20to\x20delete\x20user');}return await _0x312284['json']();},async 'stopAllContainers'(){const _0x5971ee=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x59aebe=await _0x5971ee['json']()['catch'](()=>({}));if(!_0x5971ee['ok'])throw new Error(_0x59aebe['message']||_0x59aebe['error']||'Failed\x20to\x20stop\x20containers');return _0x59aebe;},async 'removeStoppedContainers'(){const _0x3d666c=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x45d5e8=await _0x3d666c['json']()['catch'](()=>({}));if(!_0x3d666c['ok'])throw new Error(_0x45d5e8['message']||_0x45d5e8['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x45d5e8;},async 'pruneDockerResources'(){const _0x40412c=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xf25a82=await _0x40412c['json']()['catch'](()=>({}));if(!_0x40412c['ok'])throw new Error(_0xf25a82['message']||_0xf25a82['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xf25a82;},async 'createPasswordToken'(_0x11860d,_0xd19d93='setup',_0x5b807b=![]){const _0x2644a5=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x11860d,'type':_0xd19d93,'sendEmail':_0x5b807b})});if(!_0x2644a5['ok']){const _0x8e7a14=await _0x2644a5['json']();throw new Error(_0x8e7a14['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2644a5['json']();},async 'getEmailConfig'(){const _0x2ff86d=await fetch(API_BASE+'/password/email-config');if(!_0x2ff86d['ok']){const _0x5c00c6=await _0x2ff86d['json']();throw new Error(_0x5c00c6['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2ff86d['json']();},async 'updateTaskName'(_0x2c18af,_0x16252a){const _0x1a16d2=await fetch(API_BASE+'/tasks/'+_0x2c18af,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x16252a})});if(!_0x1a16d2['ok']){const _0x486537=await _0x1a16d2['json']();throw new Error(_0x486537['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1a16d2['json']();},async 'pinTask'(_0x19c533,_0x50e4a1,_0x137902=null){if(!_0x19c533)throw new Error('Task\x20ID\x20is\x20required');const _0x3072ec={'pinned':_0x50e4a1};_0x137902&&_0x137902['length']>0x0&&(_0x3072ec['additionalTaskIds']=_0x137902);const _0x5afee4=await fetch(API_BASE+'/tasks/'+_0x19c533+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072ec)});if(!_0x5afee4['ok']){const _0x2eb511=await _0x5afee4['json']();throw new Error(_0x2eb511['error']||'Failed\x20to\x20pin\x20task');}return await _0x5afee4['json']();},async 'setTaskWinner'(_0xb3d47f,_0x3be891,_0x551cca=[]){if(!_0xb3d47f)throw new Error('Task\x20ID\x20is\x20required');const _0x2599a5=await fetch(API_BASE+'/tasks/'+_0xb3d47f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3be891,'siblings':_0x551cca})});if(!_0x2599a5['ok']){const _0x199951=await _0x2599a5['json']();throw new Error(_0x199951['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2599a5['json']();},async 'setTaskLoser'(_0x45b06e,_0x2b1389){if(!_0x45b06e)throw new Error('Task\x20ID\x20is\x20required');const _0x2049c4=await fetch(API_BASE+'/tasks/'+_0x45b06e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2b1389})});if(!_0x2049c4['ok']){const _0x45aea6=await _0x2049c4['json']();throw new Error(_0x45aea6['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2049c4['json']();},async 'createTaskGroup'(_0x111faf){const _0x1d98bb=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111faf)});if(!_0x1d98bb['ok']){const _0x4751a3=await _0x1d98bb['json']();throw new Error(_0x4751a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1d98bb['json']();},async 'getTaskGroups'(_0x2dc4de={}){const _0xb2bacd=new URLSearchParams();if(_0x2dc4de['userId'])_0xb2bacd['set']('userId',String(_0x2dc4de['userId']));if(_0x2dc4de['status'])_0xb2bacd['set']('status',String(_0x2dc4de['status']));if(_0x2dc4de['limit'])_0xb2bacd['set']('limit',String(_0x2dc4de['limit']));const _0xfbe2ac=API_BASE+'/tasks/groups'+(_0xb2bacd['toString']()?'?'+_0xb2bacd['toString']():''),_0x2b9a23=await fetch(_0xfbe2ac);if(!_0x2b9a23['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b9a23['json']();},async 'getTaskGroup'(_0x360d97){const _0x5a8bef=await fetch(API_BASE+'/tasks/groups/'+_0x360d97);if(!_0x5a8bef['ok']){const _0x58315e=await _0x5a8bef['json']();throw new Error(_0x58315e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5a8bef['json']();},async 'updateTaskGroup'(_0x20700c,_0x50833c,_0x34494f){const _0x2e9d00=await fetch(API_BASE+'/tasks/'+_0x20700c+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50833c,'groupIndex':_0x34494f})});if(!_0x2e9d00['ok']){const _0x596ed0=await _0x2e9d00['json']();throw new Error(_0x596ed0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2e9d00['json']();},async 'removeTaskFromGroup'(_0x5b993c){return this['updateTaskGroup'](_0x5b993c,null,null);},async 'deleteTaskGroup'(_0x50198e,_0x40cecd=![]){const _0x55aeab=_0x40cecd?'?deleteTasks=true':'',_0x13bb47=await fetch(API_BASE+'/tasks/groups/'+_0x50198e+_0x55aeab,{'method':'DELETE'});if(!_0x13bb47['ok']){const _0x1d889e=await _0x13bb47['json']();throw new Error(_0x1d889e['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x4552b9,_0x1baed7){const _0xc393f2=await fetch(API_BASE+'/tasks/groups/'+_0x4552b9+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x1baed7})});if(!_0xc393f2['ok']){const _0x2c5066=await _0xc393f2['json']();throw new Error(_0x2c5066['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xc393f2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x37375d){if(!_0x37375d)throw new Error('Task\x20ID\x20is\x20required');const _0x11e421=await fetch(API_BASE+'/tasks/'+_0x37375d+'/comments');if(!_0x11e421['ok']){const _0x49ba8c=await _0x11e421['json']()['catch'](()=>({}));throw new Error(_0x49ba8c['error']||'Failed\x20to\x20get\x20comments');}return await _0x11e421['json']();},async 'addComment'(_0x191c53,_0x2d24cf){if(!_0x191c53)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d24cf)throw new Error('Comment\x20content\x20is\x20required');const _0xa11d57=await fetch(API_BASE+'/tasks/'+_0x191c53+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2d24cf})});if(!_0xa11d57['ok']){const _0x429ed2=await _0xa11d57['json']()['catch'](()=>({}));throw new Error(_0x429ed2['error']||'Failed\x20to\x20add\x20comment');}return await _0xa11d57['json']();},async 'updateComment'(_0x407f47,_0x445141,_0x1d4d89){if(!_0x407f47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x445141)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d4d89)throw new Error('Comment\x20content\x20is\x20required');const _0x1fa569=await fetch(API_BASE+'/tasks/'+_0x407f47+'/comments/'+_0x445141,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4d89})});if(!_0x1fa569['ok']){const _0xb48f61=await _0x1fa569['json']()['catch'](()=>({}));throw new Error(_0xb48f61['error']||'Failed\x20to\x20update\x20comment');}return await _0x1fa569['json']();},async 'deleteComment'(_0x5e972d,_0x3790de){if(!_0x5e972d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3790de)throw new Error('Comment\x20ID\x20is\x20required');const _0x203f84=await fetch(API_BASE+'/tasks/'+_0x5e972d+'/comments/'+_0x3790de,{'method':'DELETE'});if(!_0x203f84['ok']){const _0x3892b6=await _0x203f84['json']()['catch'](()=>({}));throw new Error(_0x3892b6['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203f84['json']();},async 'createObjective'(_0x598c06){const _0x67eed7={'objective':!![],'name':_0x598c06['name']||'','environment':_0x598c06['environment']||null,'agents':_0x598c06['agents']||[],'branches':_0x598c06['branches']||{},'isPinned':_0x598c06['isPinned']||![],'parentObjectiveId':_0x598c06['parentObjectiveId']||null,'env_vars':_0x598c06['envVars']||{},'parameters':{'instructions':_0x598c06['instructions']||''},'files':_0x598c06['files']||[],'jira':_0x598c06['jira']||null};return this['createTask'](_0x67eed7);},async 'updateObjective'(_0x5a2e52,_0x2cec87,_0x2ab3ba=[],_0x5d035c=[]){let _0x1c4487,_0x1b4b50={};const _0x1b5ddd={..._0x2cec87};_0x5d035c&&_0x5d035c['length']>0x0&&(_0x1b5ddd['removeAttachments']=_0x5d035c);if(_0x2ab3ba&&_0x2ab3ba['length']>0x0){const _0x78a83f=new FormData();for(const [_0x33c122,_0x4b18d2]of Object['entries'](_0x1b5ddd)){if(_0x4b18d2==null)continue;typeof _0x4b18d2==='object'?_0x78a83f['append'](_0x33c122,JSON['stringify'](_0x4b18d2)):_0x78a83f['append'](_0x33c122,String(_0x4b18d2));}for(const _0x10fc1c of _0x2ab3ba){_0x78a83f['append']('attachments',_0x10fc1c);}_0x1c4487=_0x78a83f;}else _0x1b4b50['Content-Type']='application/json',_0x1c4487=JSON['stringify'](_0x1b5ddd);const _0x28d716=await fetch(API_BASE+'/tasks/'+_0x5a2e52,{'method':'PATCH','headers':_0x1b4b50,'body':_0x1c4487});if(!_0x28d716['ok']){const _0x3db064=await _0x28d716['json']();throw new Error(_0x3db064['error']||'Failed\x20to\x20update\x20objective');}return await _0x28d716['json']();},async 'deleteObjective'(_0xb09d94){return this['deleteTask'](_0xb09d94);},async 'launchObjective'(_0x383a8a,_0x558f9e={}){const _0x12a286=await fetch(API_BASE+'/tasks/'+_0x383a8a+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x558f9e)});if(!_0x12a286['ok']){const _0x2aa4bd=await _0x12a286['json']();throw new Error(_0x2aa4bd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x12a286['json']();},async 'getObjectiveAttachments'(_0x365f34){return this['getTaskAttachments'](_0x365f34);},async 'createJudgeTask'({environment:_0x484bf5,judgeAgent:_0x30f5cc,groupId:_0x4283e2,taskIds:_0x590ce4,judgeCustomInstructions:_0xa0d4e7,isPinned:_0x37a681}){const _0x20b92c=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x484bf5,'judgeAgent':_0x30f5cc,'groupId':_0x4283e2,'taskIds':_0x590ce4,'judgeCustomInstructions':_0xa0d4e7,'isPinned':_0x37a681})});if(!_0x20b92c['ok']){const _0x180cb7=await _0x20b92c['json']();throw new Error(_0x180cb7['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x20b92c['json']();},async 'getJudgeTasks'(_0x48bd61){const _0x4f7d0c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x48bd61));if(!_0x4f7d0c['ok']){const _0x788803=await _0x4f7d0c['json']();throw new Error(_0x788803['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4f7d0c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1a3070,_0x14bda5,_0x9b4492=''){const _0xbb18b3=await fetch(API_BASE+'/tasks/'+_0x1a3070+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14bda5,'customPreamble':_0x9b4492})});if(!_0xbb18b3['ok']){const _0x2d680a=await _0xbb18b3['json']();throw new Error(_0x2d680a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xbb18b3['json']();},async 'getJiraConfig'(){const _0x3e5f8c=await fetch(API_BASE+'/jira/config');if(!_0x3e5f8c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3e5f8c['json']();},async 'getJiraIssue'(_0x1c3c22){const _0x4b5e13=await fetch(API_BASE+'/jira/issues/'+_0x1c3c22);if(!_0x4b5e13['ok']){const _0x2b1524=await _0x4b5e13['json']()['catch'](()=>({}));throw new Error(_0x2b1524['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4b5e13['statusText']);}return await _0x4b5e13['json']();},async 'searchJiraIssues'(_0x54e077,_0x44140a=0x14){const _0xcdd605=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x54e077,'maxResults':_0x44140a})});if(!_0xcdd605['ok']){const _0x16fb44=await _0xcdd605['json']()['catch'](()=>({}));throw new Error(_0x16fb44['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xcdd605['statusText']);}return await _0xcdd605['json']();},async 'postJiraComment'(_0x537221,_0xeea3a6){const _0x53dbf7=await fetch(API_BASE+'/jira/issues/'+_0x537221+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xeea3a6})});if(!_0x53dbf7['ok']){const _0x325168=await _0x53dbf7['json']()['catch'](()=>({}));throw new Error(_0x325168['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x53dbf7['statusText']);}return await _0x53dbf7['json']();},async 'getJiraComments'(_0x25473a){const _0x225564=await fetch(API_BASE+'/jira/issues/'+_0x25473a+'/comments');if(!_0x225564['ok']){const _0x25d8e9=await _0x225564['json']()['catch'](()=>({}));throw new Error(_0x25d8e9['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x225564['statusText']);}return await _0x225564['json']();},async 'promptParameter'({environment:_0xadeb33,command:_0x37317c,parser:parser='json'}){const _0x261577=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xadeb33,'command':_0x37317c,'parser':parser})});if(!_0x261577['ok']){const _0x28c258=await _0x261577['json']()['catch'](()=>({}));throw new Error(_0x28c258['message']||_0x28c258['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x261577['statusText']);}return await _0x261577['json']();},async 'promptParameterStream'(_0x3c0c9a,_0x3f89dc){const _0x5c09ed=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c0c9a)});if(!_0x5c09ed['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c09ed['statusText']);const _0x4b64b5=_0x5c09ed['body']['getReader'](),_0xbd794c=new TextDecoder();let _0x3cf11d='';return new Promise((_0x591f10,_0x114e6e)=>{const _0x270cef=async()=>{try{const {done:_0x5dd171,value:_0x57dff6}=await _0x4b64b5['read']();if(_0x5dd171)return;_0x3cf11d+=_0xbd794c['decode'](_0x57dff6,{'stream':!![]});const _0xa86b82=_0x3cf11d['split']('\x0a\x0a');_0x3cf11d=_0xa86b82['pop']()||'';for(const _0x1dd1ba of _0xa86b82){if(!_0x1dd1ba['trim']())continue;const _0x5d7861=_0x1dd1ba['split']('\x0a');let _0x2d7c07='message',_0x5235df='';for(const _0x273a45 of _0x5d7861){if(_0x273a45['startsWith']('event:'))_0x2d7c07=_0x273a45['substring'](0x6)['trim']();else _0x273a45['startsWith']('data:')&&(_0x5235df=_0x273a45['substring'](0x5)['trim']());}if(!_0x5235df)continue;try{const _0x4f893c=JSON['parse'](_0x5235df);if(_0x2d7c07==='progress'&&_0x3f89dc)_0x3f89dc(_0x4f893c['stage'],_0x4f893c['message']);else{if(_0x2d7c07==='result'){_0x591f10(_0x4f893c);return;}else{if(_0x2d7c07==='error'){let _0x184051=_0x4f893c['message']||_0x4f893c['error']||'Prompt\x20command\x20failed';_0x4f893c['rawOutput']&&(_0x184051+='\x0a\x0aRaw\x20output:\x0a'+_0x4f893c['rawOutput']);_0x114e6e(new Error(_0x184051));return;}}}}catch(_0x1d5e9c){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1d5e9c),console['error']('Event\x20type:',_0x2d7c07),console['error']('Event\x20data:',_0x5235df),console['error']('First\x20200\x20chars:',_0x5235df['substring'](0x0,0xc8)),_0x114e6e(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1d5e9c['message']+'\x0a\x0aData:\x20'+_0x5235df['substring'](0x0,0x1f4)));return;}}_0x270cef();}catch(_0x4e777b){_0x114e6e(_0x4e777b);}};_0x270cef();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xd20658){const _0x180568=await fetch(''+API_BASE+_0xd20658);if(!_0x180568['ok']){const _0x22c9eb=await _0x180568['json']()['catch'](()=>({'error':_0x180568['statusText']})),_0x40ef63=new Error(_0x22c9eb['error']||_0x22c9eb['message']||_0x180568['statusText']);if(_0x22c9eb['detail']!==undefined)_0x40ef63['detail']=_0x22c9eb['detail'];throw _0x40ef63;}return await _0x180568['json']();},async 'post'(_0x55a0f7,_0x2d2525){const _0x553c66=await fetch(''+API_BASE+_0x55a0f7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2525)});if(!_0x553c66['ok']){const _0x5dc01c=await _0x553c66['json']()['catch'](()=>({'error':_0x553c66['statusText']})),_0x1cf9b9=new Error(_0x5dc01c['error']||_0x5dc01c['message']||_0x553c66['statusText']);if(_0x5dc01c['detail']!==undefined)_0x1cf9b9['detail']=_0x5dc01c['detail'];throw _0x1cf9b9;}return await _0x553c66['json']();},async 'put'(_0x5db327,_0x546895){const _0x598dc9=await fetch(''+API_BASE+_0x5db327,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x546895)});if(!_0x598dc9['ok']){const _0x4c0ee7=await _0x598dc9['json']()['catch'](()=>({'error':_0x598dc9['statusText']})),_0x147b4e=new Error(_0x4c0ee7['error']||_0x4c0ee7['message']||_0x598dc9['statusText']);if(_0x4c0ee7['detail']!==undefined)_0x147b4e['detail']=_0x4c0ee7['detail'];throw _0x147b4e;}return await _0x598dc9['json']();},async 'delete'(_0xac8916,_0x502f18){const _0x2ec6de={'method':'DELETE'};_0x502f18&&(_0x2ec6de['headers']={'Content-Type':'application/json'},_0x2ec6de['body']=JSON['stringify'](_0x502f18));const _0x52a6b0=await fetch(''+API_BASE+_0xac8916,_0x2ec6de);if(!_0x52a6b0['ok']){const _0x20c900=await _0x52a6b0['json']()['catch'](()=>({'error':_0x52a6b0['statusText']})),_0x33d7b1=new Error(_0x20c900['error']||_0x20c900['message']||_0x52a6b0['statusText']);if(_0x20c900['detail']!==undefined)_0x33d7b1['detail']=_0x20c900['detail'];throw _0x33d7b1;}return await _0x52a6b0['json']();},async 'getSkills'(){const _0x41fad3=await fetch(API_BASE+'/skills');if(!_0x41fad3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x41fad3['statusText']);return await _0x41fad3['json']();},async 'getSkill'(_0x2632b8){const _0x213ea1=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2632b8));if(!_0x213ea1['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x213ea1['statusText']);return await _0x213ea1['json']();},async 'createSkill'(_0x559888){const _0x3b78ad=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x559888)});if(!_0x3b78ad['ok']){const _0x2baa18=await _0x3b78ad['json']()['catch'](()=>({'error':_0x3b78ad['statusText']})),_0x3ed6d9=new Error(_0x2baa18['error']||_0x2baa18['message']||_0x3b78ad['statusText']);if(_0x2baa18['detail']!==undefined)_0x3ed6d9['detail']=_0x2baa18['detail'];throw _0x3ed6d9;}return await _0x3b78ad['json']();},async 'updateSkill'(_0x16209c,_0x206422){const _0x6f3362=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x16209c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x206422)});if(!_0x6f3362['ok']){const _0x28e9dd=await _0x6f3362['json']()['catch'](()=>({'error':_0x6f3362['statusText']})),_0x897dbb=new Error(_0x28e9dd['error']||_0x28e9dd['message']||_0x6f3362['statusText']);if(_0x28e9dd['detail']!==undefined)_0x897dbb['detail']=_0x28e9dd['detail'];throw _0x897dbb;}return await _0x6f3362['json']();},async 'deleteSkill'(_0x433fa9){const _0x13703=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x433fa9),{'method':'DELETE'});if(!_0x13703['ok']){const _0x55b363=await _0x13703['json']()['catch'](()=>({'error':_0x13703['statusText']})),_0x3f0dc3=new Error(_0x55b363['error']||_0x55b363['message']||_0x13703['statusText']);if(_0x55b363['detail']!==undefined)_0x3f0dc3['detail']=_0x55b363['detail'];throw _0x3f0dc3;}return await _0x13703['json']();},async 'getSkillFile'(_0x17e140,_0x35dbba){const _0x5a84fe=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e140)+'/files/'+_0x35dbba);if(!_0x5a84fe['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a84fe['statusText']);return await _0x5a84fe['json']();},async 'saveSkillFile'(_0x25dded,_0x7f444a,_0x23c628){const _0x3c0fc5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x25dded)+'/files/'+_0x7f444a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23c628})});if(!_0x3c0fc5['ok']){const _0x6b01=await _0x3c0fc5['json']()['catch'](()=>({'error':_0x3c0fc5['statusText']})),_0x25765d=new Error(_0x6b01['error']||_0x6b01['message']||_0x3c0fc5['statusText']);if(_0x6b01['detail']!==undefined)_0x25765d['detail']=_0x6b01['detail'];throw _0x25765d;}return await _0x3c0fc5['json']();},async 'deleteSkillFile'(_0x4b9509,_0x4fe70a){const _0x3d1cc2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b9509)+'/files/'+_0x4fe70a,{'method':'DELETE'});if(!_0x3d1cc2['ok']){const _0x557260=await _0x3d1cc2['json']()['catch'](()=>({'error':_0x3d1cc2['statusText']})),_0x1fb12e=new Error(_0x557260['error']||_0x557260['message']||_0x3d1cc2['statusText']);if(_0x557260['detail']!==undefined)_0x1fb12e['detail']=_0x557260['detail'];throw _0x1fb12e;}return await _0x3d1cc2['json']();},async 'pullSkills'(){const _0x296bbc=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x296bbc['ok']){const _0x237c30=await _0x296bbc['json']()['catch'](()=>({'error':_0x296bbc['statusText']})),_0x4dd749=new Error(_0x237c30['error']||_0x237c30['message']||_0x296bbc['statusText']);if(_0x237c30['detail']!==undefined)_0x4dd749['detail']=_0x237c30['detail'];throw _0x4dd749;}return await _0x296bbc['json']();},async 'commitSkills'(_0x34920d,_0x3ef7de={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3ef7de,_0x129738=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x34920d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x129738['ok']){const _0x455124=await _0x129738['json']()['catch'](()=>({'error':_0x129738['statusText']})),_0x3591da=new Error(_0x455124['error']||_0x455124['message']||_0x129738['statusText']);if(_0x455124['detail']!==undefined)_0x3591da['detail']=_0x455124['detail'];throw _0x3591da;}return await _0x129738['json']();},async 'discardSkillsChanges'(){const _0x399e19=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x399e19['ok']){const _0x57cf4c=await _0x399e19['json']()['catch'](()=>({'error':_0x399e19['statusText']})),_0x2eb9b7=new Error(_0x57cf4c['error']||_0x57cf4c['message']||_0x399e19['statusText']);if(_0x57cf4c['detail']!==undefined)_0x2eb9b7['detail']=_0x57cf4c['detail'];throw _0x2eb9b7;}return await _0x399e19['json']();},async 'getSkillCatalog'(){const _0x5b7132=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5b7132['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5b7132['statusText']);return await _0x5b7132['json']();},async 'getImportedSkillsRegistry'(){const _0x137238=await fetch(API_BASE+'/external-skills/registry');if(!_0x137238['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x137238['statusText']);return await _0x137238['json']();},async 'importCatalogSkill'(_0x2ff205){const _0x50f88d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2ff205})});if(!_0x50f88d['ok']){const _0x41d5de=await _0x50f88d['json']()['catch'](()=>({'error':_0x50f88d['statusText']})),_0x9b7f17=new Error(_0x41d5de['error']||_0x41d5de['message']||_0x50f88d['statusText']);if(_0x41d5de['detail']!==undefined)_0x9b7f17['detail']=_0x41d5de['detail'];throw _0x9b7f17;}return await _0x50f88d['json']();},async 'importSkillFromGit'(_0x536a93,_0x215b61,_0x3d1f42='main',_0x564ec4=null){const _0x14b286=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x536a93,'skillPath':_0x215b61,'branch':_0x3d1f42,'skillId':_0x564ec4})});if(!_0x14b286['ok']){const _0x3806bf=await _0x14b286['json']()['catch'](()=>({'error':_0x14b286['statusText']})),_0x172a48=new Error(_0x3806bf['error']||_0x3806bf['message']||_0x14b286['statusText']);if(_0x3806bf['detail']!==undefined)_0x172a48['detail']=_0x3806bf['detail'];throw _0x172a48;}return await _0x14b286['json']();},async 'probeMarketplace'(_0xa926f1,_0x1dffb6='main'){const _0x4da08d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa926f1,'branch':_0x1dffb6})});if(!_0x4da08d['ok']){const _0x8413ad=await _0x4da08d['json']()['catch'](()=>({'error':_0x4da08d['statusText']})),_0x3e5b76=new Error(_0x8413ad['error']||_0x8413ad['message']||_0x4da08d['statusText']);if(_0x8413ad['detail']!==undefined)_0x3e5b76['detail']=_0x8413ad['detail'];throw _0x3e5b76;}return await _0x4da08d['json']();},async 'importMarketplaceBundle'(_0x432464,_0x1eb4fd,_0x39b275,_0x196a52=null){const _0x1af5cc=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x432464,'branch':_0x1eb4fd,'bundleId':_0x39b275,'selectedSkills':_0x196a52})});if(!_0x1af5cc['ok']){const _0x1e70a6=await _0x1af5cc['json']()['catch'](()=>({'error':_0x1af5cc['statusText']})),_0x48b28d=new Error(_0x1e70a6['error']||_0x1e70a6['message']||_0x1af5cc['statusText']);if(_0x1e70a6['detail']!==undefined)_0x48b28d['detail']=_0x1e70a6['detail'];throw _0x48b28d;}return await _0x1af5cc['json']();},async 'importSkillFromFolder'(_0x2de262,_0x2122ba=null){const _0x4ed6f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2de262,'skillId':_0x2122ba})});if(!_0x4ed6f7['ok']){const _0x189ecd=await _0x4ed6f7['json']()['catch'](()=>({'error':_0x4ed6f7['statusText']})),_0x214c15=new Error(_0x189ecd['error']||_0x189ecd['message']||_0x4ed6f7['statusText']);if(_0x189ecd['detail']!==undefined)_0x214c15['detail']=_0x189ecd['detail'];throw _0x214c15;}return await _0x4ed6f7['json']();},async 'importSkillFromNpm'(_0x54ed27,_0x4011d5='latest',_0x3239ac=null,_0x386f35=null){const _0x25edc0=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x54ed27,'version':_0x4011d5,'skillId':_0x3239ac,'registry':_0x386f35})});if(!_0x25edc0['ok']){const _0x519a9f=await _0x25edc0['json']()['catch'](()=>({'error':_0x25edc0['statusText']})),_0x219e17=new Error(_0x519a9f['error']||_0x519a9f['message']||_0x25edc0['statusText']);if(_0x519a9f['detail']!==undefined)_0x219e17['detail']=_0x519a9f['detail'];throw _0x219e17;}return await _0x25edc0['json']();},async 'checkSkillUpdates'(_0x164760){const _0x2b14db=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x164760)+'/check-updates',{'method':'POST'});if(!_0x2b14db['ok']){const _0x162df2=await _0x2b14db['json']()['catch'](()=>({'error':_0x2b14db['statusText']})),_0x5989d9=new Error(_0x162df2['error']||_0x162df2['message']||_0x2b14db['statusText']);if(_0x162df2['detail']!==undefined)_0x5989d9['detail']=_0x162df2['detail'];throw _0x5989d9;}return await _0x2b14db['json']();},async 'updateExternalSkill'(_0x2e0252){const _0x26c1cc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e0252)+'/update',{'method':'POST'});if(!_0x26c1cc['ok']){const _0x262cce=await _0x26c1cc['json']()['catch'](()=>({'error':_0x26c1cc['statusText']})),_0x39bb10=new Error(_0x262cce['error']||_0x262cce['message']||_0x26c1cc['statusText']);if(_0x262cce['detail']!==undefined)_0x39bb10['detail']=_0x262cce['detail'];throw _0x39bb10;}return await _0x26c1cc['json']();},async 'updateSkillFlags'(_0x48b1fc,_0x4e4730){const _0x1efcd9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48b1fc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4e4730})});if(!_0x1efcd9['ok']){const _0x1a86ad=await _0x1efcd9['json']()['catch'](()=>({'error':_0x1efcd9['statusText']})),_0x37c39c=new Error(_0x1a86ad['error']||_0x1a86ad['message']||_0x1efcd9['statusText']);if(_0x1a86ad['detail']!==undefined)_0x37c39c['detail']=_0x1a86ad['detail'];throw _0x37c39c;}return await _0x1efcd9['json']();},async 'removeFromImportedRegistry'(_0x330d72){const _0x10f501=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x330d72)+'/registry',{'method':'DELETE'});if(!_0x10f501['ok']){const _0x31e739=await _0x10f501['json']()['catch'](()=>({'error':_0x10f501['statusText']})),_0x58291d=new Error(_0x31e739['error']||_0x31e739['message']||_0x10f501['statusText']);if(_0x31e739['detail']!==undefined)_0x58291d['detail']=_0x31e739['detail'];throw _0x58291d;}return await _0x10f501['json']();},async 'getTeams'(){const _0x4ec490=await fetch(API_BASE+'/teams');if(!_0x4ec490['ok']){const _0x175474=await _0x4ec490['json']()['catch'](()=>({'message':_0x4ec490['statusText']}));throw new Error(_0x175474['message']||'Failed\x20to\x20get\x20teams');}return await _0x4ec490['json']();},async 'getTeam'(_0x3b2d82){const _0x3a50f2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b2d82));if(!_0x3a50f2['ok']){const _0x55e95d=await _0x3a50f2['json']()['catch'](()=>({'message':_0x3a50f2['statusText']}));throw new Error(_0x55e95d['message']||'Failed\x20to\x20get\x20team');}return await _0x3a50f2['json']();},async 'createTeam'(_0xcdd67b){const _0x766aae=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcdd67b)});if(!_0x766aae['ok']){const _0x398853=await _0x766aae['json']()['catch'](()=>({'message':_0x766aae['statusText']}));throw new Error(_0x398853['message']||'Failed\x20to\x20create\x20team');}return await _0x766aae['json']();},async 'updateTeam'(_0x15a0d1,_0x2e3085){const _0x4241e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15a0d1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3085)});if(!_0x4241e8['ok']){const _0x350c80=await _0x4241e8['json']()['catch'](()=>({'message':_0x4241e8['statusText']}));throw new Error(_0x350c80['message']||'Failed\x20to\x20update\x20team');}return await _0x4241e8['json']();},async 'deleteTeam'(_0xd6a32b){const _0x2cc9d2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd6a32b),{'method':'DELETE'});if(!_0x2cc9d2['ok']){const _0x51da6c=await _0x2cc9d2['json']()['catch'](()=>({'message':_0x2cc9d2['statusText']}));throw new Error(_0x51da6c['message']||'Failed\x20to\x20delete\x20team');}return await _0x2cc9d2['json']();},async 'addTeamMember'(_0x27fada,_0x3fa5cc){const _0x16f8c5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x27fada)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3fa5cc})});if(!_0x16f8c5['ok']){const _0x3abd7c=await _0x16f8c5['json']()['catch'](()=>({'message':_0x16f8c5['statusText']}));throw new Error(_0x3abd7c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x16f8c5['json']();},async 'removeTeamMember'(_0x4823f3,_0x553962){const _0x5d78fa=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4823f3)+'/members/'+encodeURIComponent(_0x553962),{'method':'DELETE'});if(!_0x5d78fa['ok']){const _0x2435bd=await _0x5d78fa['json']()['catch'](()=>({'message':_0x5d78fa['statusText']}));throw new Error(_0x2435bd['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x5d78fa['json']();},async 'getBindings'(_0x295fa8={}){const _0xbedc88=new URLSearchParams();if(_0x295fa8['resource_type'])_0xbedc88['set']('resource_type',_0x295fa8['resource_type']);if(_0x295fa8['resource_id'])_0xbedc88['set']('resource_id',_0x295fa8['resource_id']);if(_0x295fa8['subject_type'])_0xbedc88['set']('subject_type',_0x295fa8['subject_type']);if(_0x295fa8['subject_id'])_0xbedc88['set']('subject_id',_0x295fa8['subject_id']);const _0x13f0a8=_0xbedc88['toString'](),_0x8f8606=await fetch(API_BASE+'/bindings'+(_0x13f0a8?'?'+_0x13f0a8:''));if(!_0x8f8606['ok']){const _0x16b6f2=await _0x8f8606['json']()['catch'](()=>({'message':_0x8f8606['statusText']}));throw new Error(_0x16b6f2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8f8606['json']();},async 'createBinding'(_0x12f47b){const _0x366318=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12f47b)});if(!_0x366318['ok']){const _0x20e237=await _0x366318['json']()['catch'](()=>({'message':_0x366318['statusText']}));throw new Error(_0x20e237['message']||'Failed\x20to\x20create\x20binding');}return await _0x366318['json']();},async 'updateBinding'(_0x4fc73d,_0x5b39f8){const _0x276c30=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4fc73d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b39f8)});if(!_0x276c30['ok']){const _0x5a9918=await _0x276c30['json']()['catch'](()=>({'message':_0x276c30['statusText']}));throw new Error(_0x5a9918['message']||'Failed\x20to\x20update\x20binding');}return await _0x276c30['json']();},async 'deleteBinding'(_0x2b6467){const _0x24f299=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2b6467),{'method':'DELETE'});if(!_0x24f299['ok']){const _0x4e92c6=await _0x24f299['json']()['catch'](()=>({'message':_0x24f299['statusText']}));throw new Error(_0x4e92c6['message']||'Failed\x20to\x20delete\x20binding');}return await _0x24f299['json']();},async 'getRoleDefinitions'(){const _0x2f3d57=await fetch(API_BASE+'/roles');if(!_0x2f3d57['ok']){const _0x4eb6b4=await _0x2f3d57['json']()['catch'](()=>({'message':_0x2f3d57['statusText']}));throw new Error(_0x4eb6b4['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2f3d57['json']();},async 'getRoleDefinition'(_0x56fa0e){const _0x55f9ae=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x56fa0e));if(!_0x55f9ae['ok']){const _0x3f0879=await _0x55f9ae['json']()['catch'](()=>({'message':_0x55f9ae['statusText']}));throw new Error(_0x3f0879['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55f9ae['json']();},async 'createRoleDefinition'(_0x1271e3){const _0x482a9f=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1271e3)});if(!_0x482a9f['ok']){const _0x2b02f9=await _0x482a9f['json']()['catch'](()=>({'message':_0x482a9f['statusText']}));throw new Error(_0x2b02f9['message']||_0x2b02f9['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x482a9f['json']();},async 'updateRoleDefinition'(_0x5b861e,_0x10506d){const _0x23c451=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5b861e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10506d)});if(!_0x23c451['ok']){const _0x5eedd0=await _0x23c451['json']()['catch'](()=>({'message':_0x23c451['statusText']}));throw new Error(_0x5eedd0['message']||_0x5eedd0['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x23c451['json']();},async 'deleteRoleDefinition'(_0x425aa7){const _0x5241d9=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x425aa7),{'method':'DELETE'});if(!_0x5241d9['ok']){const _0x975d61=await _0x5241d9['json']()['catch'](()=>({'message':_0x5241d9['statusText']}));throw new Error(_0x975d61['message']||_0x975d61['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5241d9['json']();},async 'getAvailablePermissions'(){const _0x5de42a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5de42a['ok']){const _0x4a923f=await _0x5de42a['json']()['catch'](()=>({'message':_0x5de42a['statusText']}));throw new Error(_0x4a923f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5de42a['json']();},async 'getGitProviderAllowedTeams'(_0x14e463){const _0x49b567=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x14e463)+'/allowed-teams');if(!_0x49b567['ok']){const _0x2f6da4=await _0x49b567['json']()['catch'](()=>({'message':_0x49b567['statusText']}));throw new Error(_0x2f6da4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x49b567['json']();},async 'setGitProviderAllowedTeams'(_0x24c055,_0x2a73d7){const _0x61cf47=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24c055)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2a73d7})});if(!_0x61cf47['ok']){const _0x4dcfc1=await _0x61cf47['json']()['catch'](()=>({'message':_0x61cf47['statusText']}));throw new Error(_0x4dcfc1['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x61cf47['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 _0x4fa871=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3516c5=>{_0x3516c5['el']['style']['bottom']=_0x4fa871+'px';const _0xfec112=_0x3516c5['el']['offsetHeight']||toastState['defaultHeight'];_0x4fa871+=_0xfec112+toastState['gap'];});});}function removeToastById(_0x3c438d){const _0x46f2b5=toastState['toasts']['findIndex'](_0x203878=>_0x203878['id']===_0x3c438d);if(_0x46f2b5===-0x1)return;const _0x24757d=toastState['toasts'][_0x46f2b5];if(_0x24757d['timeoutId'])clearTimeout(_0x24757d['timeoutId']);_0x24757d['el']['classList']['remove']('show'),setTimeout(()=>_0x24757d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x46f2b5,0x1),repositionAllToasts();}function registerToast(_0x280b2b){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x280b2b),repositionAllToasts(),_0x280b2b['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(_0x3e6d68){if(_0x3e6d68===null||_0x3e6d68===undefined)return'';return String(_0x3e6d68)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xac8c54,_0x28910a){if(_0xac8c54&&typeof _0xac8c54==='object'&&!Array['isArray'](_0xac8c54))return{'code':typeof _0xac8c54['text']==='string'?_0xac8c54['text']:'','language':typeof _0xac8c54['lang']==='string'?_0xac8c54['lang']:''};return{'code':typeof _0xac8c54==='string'?_0xac8c54:'','language':typeof _0x28910a==='string'?_0x28910a:''};}function buildMermaidBlock(_0x3ade44){const _0x100f23=String(_0x3ade44||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x100f23))+'\x22>'+escapeHtmlValue(_0x100f23)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x39370b=new marked['Renderer'](),_0x3e015c=_0x39370b['code']['bind'](_0x39370b);return _0x39370b['code']=function(_0x2efffa,_0xb6092e,..._0x38dca0){const {code:_0x4c570f,language:_0x2c5b5b}=getMarkdownCodeBlockPayload(_0x2efffa,_0xb6092e),_0x2134d5=String(_0x2c5b5b||'')['trim']()['toLowerCase']();if(_0x2134d5==='mermaid')return buildMermaidBlock(_0x4c570f);const _0x1aa94c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1aa94c&&_0x2134d5)try{const _0x54d83c=_0x1aa94c['getLanguage'](_0x2134d5)?_0x2134d5:'plaintext',_0x22015d=_0x1aa94c['highlight'](_0x4c570f,{'language':_0x54d83c})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2134d5)+'\x22>'+_0x22015d+'</code></pre>';}catch(_0x1489ff){console['error']('Syntax\x20highlighting\x20error:',_0x1489ff);}return _0x3e015c(_0x2efffa,_0xb6092e,..._0x38dca0);},sharedMarkedRenderer=_0x39370b,_0x39370b;}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 _0x55fc6d=window['mermaid'];if(!_0x55fc6d||typeof _0x55fc6d['initialize']!=='function')return _0x55fc6d||null;return _0x55fc6d['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x55fc6d;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1a163f,_0x50dce8)=>{const _0x293f2a=()=>_0x1a163f(configureMermaidInstance()),_0x885e77=()=>{mermaidLoadPromise=null,_0x50dce8(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x16907b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x16907b&&(_0x16907b=document['createElement']('script'),_0x16907b['id']=MERMAID_SCRIPT_ID,_0x16907b['src']=MERMAID_SCRIPT_SRC,_0x16907b['async']=!![],document['head']['appendChild'](_0x16907b));if(window['mermaid']){_0x293f2a();return;}_0x16907b['addEventListener']('load',_0x293f2a,{'once':!![]}),_0x16907b['addEventListener']('error',_0x885e77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5b01e9){const _0x5a85cd=_0x5b01e9['getAttribute']('data-mermaid-source');if(!_0x5a85cd)return null;let _0x8c3aa9=_0x5a85cd;try{_0x8c3aa9=decodeURIComponent(_0x5a85cd);}catch{}return _0x5b01e9['textContent']=_0x8c3aa9,_0x5b01e9['removeAttribute']('data-processed'),_0x5b01e9['removeAttribute']('aria-roledescription'),_0x5b01e9['removeAttribute']('role'),_0x5b01e9['removeAttribute']('aria-label'),_0x8c3aa9;}function collectMermaidNodes(_0x474349,_0x224db7){if(!(_0x474349 instanceof Element))return;_0x474349['matches']('.mermaid[data-mermaid-source]')&&_0x224db7['add'](_0x474349),_0x474349['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x201440=>{_0x224db7['add'](_0x201440);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11cfb6=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x275478=>setTimeout(_0x275478,0x0);_0x11cfb6(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1bc65b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1bc65b);});});}function queueMermaidRender(_0x809dfd){const _0x4e4e1c=new Set();_0x809dfd instanceof Document||_0x809dfd instanceof DocumentFragment?_0x809dfd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x117268=>_0x4e4e1c['add'](_0x117268)):collectMermaidNodes(_0x809dfd,_0x4e4e1c);if(_0x4e4e1c['size']===0x0)return;_0x4e4e1c['forEach'](_0x51d30e=>pendingMermaidNodes['add'](_0x51d30e)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x36d0a5=Array['from'](pendingMermaidNodes)['filter'](_0x2c2f5a=>_0x2c2f5a['isConnected']);pendingMermaidNodes['clear']();if(_0x36d0a5['length']===0x0)return;const _0xd10ff5=await loadMermaid();if(!_0xd10ff5)return;configureMermaidInstance();const _0x41e7fe=getMermaidTheme();for(const _0x27179f of _0x36d0a5){const _0x164189=_0x27179f['getAttribute']('data-mermaid-source');if(!_0x164189)continue;const _0x1505a0=_0x27179f['getAttribute']('data-processed')==='true';if(_0x1505a0&&_0x27179f['dataset']['mermaidTheme']===_0x41e7fe)continue;restoreMermaidSource(_0x27179f);try{if(typeof _0xd10ff5['run']==='function')await _0xd10ff5['run']({'nodes':[_0x27179f]});else typeof _0xd10ff5['init']==='function'&&_0xd10ff5['init'](undefined,[_0x27179f]);_0x27179f['dataset']['mermaidTheme']=_0x41e7fe,delete _0x27179f['dataset']['mermaidError'];}catch(_0x260283){console['error']('Mermaid\x20render\x20failed:',_0x260283),restoreMermaidSource(_0x27179f),_0x27179f['dataset']['mermaidError']='true',delete _0x27179f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x549de1=>{_0x549de1['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x549de1);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1dbb58=>{_0x1dbb58['forEach'](_0x30b273=>{_0x30b273['addedNodes']['forEach'](_0xb5c048=>{_0xb5c048['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xb5c048);});});}),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'(_0x1cc4cb){const _0x5ec1f3=new Date(_0x1cc4cb),_0xce5009=new Date(),_0x57340e=_0xce5009-_0x5ec1f3,_0x44c44f=Math['floor'](_0x57340e/0x3e8),_0x48a8a5=Math['floor'](_0x44c44f/0x3c),_0x3fcbba=Math['floor'](_0x48a8a5/0x3c),_0x5391e2=Math['floor'](_0x3fcbba/0x18);if(_0x44c44f<0x3c)return'now';if(_0x48a8a5<0x3c)return _0x48a8a5+'m\x20ago';if(_0x3fcbba<0x18)return _0x3fcbba+'h\x20ago';return _0x5391e2+'d\x20ago';},'getStatusIcon'(_0x5544f0){switch(_0x5544f0){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a42bb){switch(_0x4a42bb){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'(_0x50494a,_0x323404=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x39f204={};_0x39f204['text/plain']=new Blob([_0x50494a],{'type':'text/plain'});_0x323404&&(_0x39f204['text/html']=new Blob([_0x323404],{'type':'text/html'}));const _0x5deda2=new ClipboardItem(_0x39f204);return await navigator['clipboard']['write']([_0x5deda2]),!![];}catch(_0xc19abc){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc19abc);}try{const _0x36f279=_0x1452be=>{_0x1452be['preventDefault'](),_0x1452be['clipboardData']['setData']('text/plain',_0x50494a),_0x323404&&_0x1452be['clipboardData']['setData']('text/html',_0x323404);};document['addEventListener']('copy',_0x36f279);const _0x209b8a=document['execCommand']('copy');document['removeEventListener']('copy',_0x36f279);if(_0x209b8a)return!![];}catch(_0x39556b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x39556b);}try{const _0x4bcba1=document['createElement']('textarea');_0x4bcba1['value']=_0x50494a,_0x4bcba1['style']['position']='fixed',_0x4bcba1['style']['opacity']='0',_0x4bcba1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4bcba1),_0x4bcba1['select']();const _0x401863=document['execCommand']('copy');return document['body']['removeChild'](_0x4bcba1),_0x401863;}catch(_0xfe77d8){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xfe77d8),![];}},'showToast'(_0x5d9341,_0x463245='info'){const _0x3afd8b=getNextToastId(),_0x323df9=document['createElement']('div');_0x323df9['className']='toast\x20toast-'+_0x463245,_0x323df9['textContent']=_0x5d9341,_0x323df9['dataset']['toastId']=_0x3afd8b,document['body']['appendChild'](_0x323df9);const _0x5a2ab8=_0x463245==='error'?0x2710:0xbb8,_0x29aedd=setTimeout(()=>{removeToastById(_0x3afd8b);},_0x5a2ab8),_0x107031={'id':_0x3afd8b,'el':_0x323df9,'timeoutId':_0x29aedd};return registerToast(_0x107031),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x323df9['classList']['add']('show');});}),_0x3afd8b;},'showError'(_0x47a311){console['error'](_0x47a311);const _0x18288a=typeof _0x47a311==='string'?_0x47a311:_0x47a311['message']||'An\x20error\x20occurred';this['showToast'](_0x18288a,'error');},'showSuccess'(_0xe80d63){this['showToast'](_0xe80d63,'success');},'capitalize'(_0x21174d){if(!_0x21174d)return'';return _0x21174d['charAt'](0x0)['toUpperCase']()+_0x21174d['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3338a3){return escapeHtmlValue(_0x3338a3);},'ansiToHtml'(_0x276d64){if(_0x276d64===null||_0x276d64===undefined)return'';let _0x18f1f7=this['escapeHtml'](_0x276d64);const _0x4906d7={'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'},_0x32db31={'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 _0x2372e8=0x0;return _0x18f1f7=_0x18f1f7['replace'](/\x1b\[([0-9;]*)m/g,(_0x5e0a99,_0x3d3f40)=>{if(!_0x3d3f40||_0x3d3f40==='0'){const _0x314b74='</span>'['repeat'](_0x2372e8);return _0x2372e8=0x0,_0x314b74;}const _0x2f6cb0=_0x3d3f40['split'](';'),_0x242fe1=[];for(const _0x1855e5 of _0x2f6cb0){if(_0x1855e5==='1')_0x242fe1['push']('font-weight:bold');else{if(_0x1855e5==='2')_0x242fe1['push']('opacity:0.7');else{if(_0x1855e5==='3')_0x242fe1['push']('font-style:italic');else{if(_0x1855e5==='4')_0x242fe1['push']('text-decoration:underline');else{if(_0x1855e5==='9')_0x242fe1['push']('text-decoration:line-through');else{if(_0x4906d7[_0x1855e5])_0x242fe1['push']('color:'+_0x4906d7[_0x1855e5]);else{if(_0x32db31[_0x1855e5])_0x242fe1['push']('background-color:'+_0x32db31[_0x1855e5]);}}}}}}}if(_0x242fe1['length']>0x0)return _0x2372e8++,'<span\x20style=\x22'+_0x242fe1['join'](';')+'\x22>';return'';}),_0x18f1f7+='</span>'['repeat'](_0x2372e8),_0x18f1f7=_0x18f1f7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x15e8f1,_0x4ea55c)=>{if(!_0x4ea55c||_0x4ea55c==='0')return'';const _0x1efdbc=_0x4ea55c['split'](';'),_0x174ff7=[];for(const _0x19d995 of _0x1efdbc){if(_0x19d995==='1')_0x174ff7['push']('font-weight:bold');else{if(_0x4906d7[_0x19d995])_0x174ff7['push']('color:'+_0x4906d7[_0x19d995]);else{if(_0x32db31[_0x19d995])_0x174ff7['push']('background-color:'+_0x32db31[_0x19d995]);}}}if(_0x174ff7['length']>0x0)return'<span\x20style=\x22'+_0x174ff7['join'](';')+'\x22>';return'';}),_0x18f1f7;},'showModal'({title:_0x5185a2,content:_0x29eaa1,buttons:buttons=[]}){const _0x484b42='\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'](_0x5185a2)+'</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'+_0x29eaa1+'\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']((_0x212d44,_0x49f117)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x212d44['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x49f117+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x212d44['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',_0x536f79=document['createElement']('div');_0x536f79['id']='utils-modal',_0x536f79['className']='modal',_0x536f79['innerHTML']=_0x484b42,document['body']['appendChild'](_0x536f79);const _0x56729a=document['getElementById']('utils-modal-close');_0x56729a&&_0x56729a['addEventListener']('click',()=>this['hideModal']());const _0x347d=_0x536f79['querySelectorAll']('[data-btn-index]');_0x347d['forEach'](_0x543c5e=>{const _0x1a04ef=parseInt(_0x543c5e['dataset']['btnIndex']);buttons[_0x1a04ef]?.['onClick']&&_0x543c5e['addEventListener']('click',buttons[_0x1a04ef]['onClick']);});const _0x388b98=document['getElementById']('utils-modal-overlay');_0x388b98&&_0x388b98['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1d6af0=document['getElementById']('utils-modal');_0x1d6af0&&_0x1d6af0['remove']();},'parseKeyValuePairs'(_0x1c008c){const _0x1eb68a={};if(!_0x1c008c)return _0x1eb68a;return _0x1c008c['split'](/\r?\n/)['map'](_0x128a36=>_0x128a36['trim']())['filter'](Boolean)['forEach'](_0x413fd6=>{const _0x4b1ab9=_0x413fd6['indexOf']('=');if(_0x4b1ab9>0x0){const _0x4c9ae9=_0x413fd6['slice'](0x0,_0x4b1ab9)['trim'](),_0x542bfd=_0x413fd6['slice'](_0x4b1ab9+0x1)['trim']();if(_0x4c9ae9)_0x1eb68a[_0x4c9ae9]=_0x542bfd;}}),_0x1eb68a;},'debounce'(_0x3cb44f,_0x38d998=0xfa){let _0x5c9606=null;return(..._0x51e903)=>{clearTimeout(_0x5c9606),_0x5c9606=setTimeout(()=>_0x3cb44f['apply'](this,_0x51e903),_0x38d998);};},'formatTimestamp'(_0x2f0cc4){if(!_0x2f0cc4)return'N/A';const _0x3ec1c2=new Date(_0x2f0cc4);return _0x3ec1c2['toLocaleDateString']()+'\x20'+_0x3ec1c2['toLocaleTimeString']();},'getQueryParams'(){const _0x7af1e=new URLSearchParams(window['location']['search']),_0x5f4ca7={};for(const [_0x1738b7,_0x239573]of _0x7af1e){_0x5f4ca7[_0x1738b7]=_0x239573;}return _0x5f4ca7;},'formatDuration'(_0x36b4e3,_0x37fc32){if(!_0x36b4e3)return'N/A';const _0x15a2d6=new Date(_0x36b4e3),_0x265079=_0x37fc32?new Date(_0x37fc32):new Date(),_0x1e8111=_0x265079-_0x15a2d6;if(_0x1e8111<0x0)return'0s';const _0x459eaa=Math['floor'](_0x1e8111/0x3e8),_0x57b5e8=Math['floor'](_0x459eaa/0x3c),_0x1a56eb=Math['floor'](_0x57b5e8/0x3c),_0x2ebbfe=Math['floor'](_0x1a56eb/0x18);if(_0x459eaa<0x3c)return _0x459eaa+'s';if(_0x57b5e8<0x3c)return _0x57b5e8+'m\x20'+_0x459eaa%0x3c+'s';if(_0x1a56eb<0x18)return _0x1a56eb+'h\x20'+_0x57b5e8%0x3c+'m\x20'+_0x459eaa%0x3c+'s';return _0x2ebbfe+'d\x20'+_0x1a56eb%0x18+'h\x20'+_0x57b5e8%0x3c+'m';},'renderMarkdown'(_0x485edd,_0x28dcae={}){if(!_0x485edd)return'';_0x485edd=this['rewriteAttachmentLinks'](_0x485edd,_0x28dcae),_0x485edd=this['rewriteColorSyntax'](_0x485edd);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x485edd);}catch(_0x50866b){return console['error']('Markdown\x20parsing\x20error:',_0x50866b),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);}},'rewriteAttachmentLinks'(_0x2df884,_0x3e9ea5={}){const _0x62310a=typeof _0x3e9ea5['resolveAttachmentUrl']==='function'?_0x3e9ea5['resolveAttachmentUrl']:_0x3e9ea5['taskId']?_0x2eb663=>API_BASE+'/tasks/'+_0x3e9ea5['taskId']+'/attachments/'+encodeURIComponent(_0x2eb663):null;if(!_0x62310a)return _0x2df884;return String(_0x2df884)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x54bd4c,_0x8dd37a)=>{const _0x445a77=String(_0x8dd37a||'')['trim']();if(!_0x445a77)return _0x54bd4c;let _0x27b056=_0x445a77;try{_0x27b056=decodeURIComponent(_0x445a77);}catch{}const _0x34f81f=_0x62310a(_0x27b056);if(!_0x34f81f)return _0x54bd4c;return']('+_0x34f81f+')';});},'rewriteColorSyntax'(_0x391ede){if(!_0x391ede)return _0x391ede;return String(_0x391ede)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1673ee,_0x444781,_0x53d931)=>{const _0x2519ab=this['rewriteColorSyntax'](_0x53d931);return'<span\x20style=\x22color:\x20'+_0x444781+'\x22>'+_0x2519ab+'</span>';});},'renderMarkdownFallback'(_0x1e1613,_0x516787={}){if(!_0x1e1613)return'';_0x1e1613=_0x1e1613['replace'](/\r\n/g,'\x0a'),_0x1e1613=_0x1e1613['replace'](/\r/g,'\x0a'),_0x1e1613=this['rewriteAttachmentLinks'](_0x1e1613,_0x516787);let _0x322186=this['escapeHtml'](_0x1e1613);return _0x322186=_0x322186['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x322186=_0x322186['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x322186=_0x322186['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x322186=_0x322186['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x322186=_0x322186['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x322186=_0x322186['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x322186=_0x322186['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x322186=_0x322186['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x322186=_0x322186['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x322186=_0x322186['replace'](/\n\n/g,'</p><p>'),_0x322186=_0x322186['replace'](/\n/g,'<br>'),'<p>'+_0x322186+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5d5e8c=new Uint8Array(0x10);crypto['getRandomValues'](_0x5d5e8c),_0x5d5e8c[0x6]=_0x5d5e8c[0x6]&0xf|0x40,_0x5d5e8c[0x8]=_0x5d5e8c[0x8]&0x3f|0x80;const _0x248b39=Array['from'](_0x5d5e8c,_0x3050e3=>_0x3050e3['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x248b39['slice'](0x0,0x8)+'-'+_0x248b39['slice'](0x8,0xc)+'-'+_0x248b39['slice'](0xc,0x10)+'-'+_0x248b39['slice'](0x10,0x14)+'-'+_0x248b39['slice'](0x14);}};export class CustomSelect{constructor(_0x43c675,_0x9039={}){this['nativeSelect']=_0x43c675,this['options']=_0x9039,this['isOpen']=![],this['selectedValue']=_0x43c675['value']||'',this['searchable']=_0x9039['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x320b74=document['createElement']('div');_0x320b74['className']='custom-select';const _0x378729=document['createElement']('div');_0x378729['className']='custom-select-trigger',_0x378729['setAttribute']('tabindex','0'),_0x378729['setAttribute']('role','button'),_0x378729['setAttribute']('aria-haspopup','listbox');const _0x3cb8de=document['createElement']('span');_0x3cb8de['className']='custom-select-trigger-text';const _0x109aae=document['createElement']('span');_0x109aae['className']='custom-select-arrow',_0x109aae['textContent']='▼',_0x378729['appendChild'](_0x3cb8de),_0x378729['appendChild'](_0x109aae);const _0x5692d8=document['createElement']('div');_0x5692d8['className']='custom-select-dropdown',_0x5692d8['setAttribute']('role','listbox');if(this['searchable']){const _0x3f026e=document['createElement']('div');_0x3f026e['className']='custom-select-search';const _0x551636=document['createElement']('input');_0x551636['type']='text',_0x551636['className']='custom-select-search-input',_0x551636['placeholder']='Type\x20to\x20search...',_0x551636['setAttribute']('aria-label','Search\x20options'),_0x551636['addEventListener']('input',_0x2cf364=>{this['searchQuery']=_0x2cf364['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x551636['addEventListener']('keydown',_0x2131ff=>{if(_0x2131ff['key']==='Escape')_0x2131ff['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2131ff['key']==='Enter'){_0x2131ff['preventDefault'](),_0x2131ff['stopPropagation']();const _0x1f60a0=_0x5692d8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1f60a0){const _0x4c7581=_0x1f60a0['getAttribute']('data-value');this['select'](_0x4c7581);}}}}),_0x3f026e['appendChild'](_0x551636),_0x5692d8['appendChild'](_0x3f026e),this['searchInput']=_0x551636;}const _0x51f1a3=document['createElement']('div');_0x51f1a3['className']='custom-select-options',_0x5692d8['appendChild'](_0x51f1a3),_0x320b74['appendChild'](_0x378729),_0x320b74['appendChild'](_0x5692d8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x320b74,this['nativeSelect']),this['wrapper']=_0x320b74,this['trigger']=_0x378729,this['triggerText']=_0x3cb8de,this['dropdown']=_0x5692d8,this['optionsContainer']=_0x51f1a3,_0x378729['addEventListener']('click',()=>this['toggle']()),_0x378729['addEventListener']('keydown',_0x161e94=>this['handleKeydown'](_0x161e94)),document['addEventListener']('click',_0xd0b7b4=>{!_0x320b74['contains'](_0xd0b7b4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x572de0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x572de0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x408edc=new MutationObserver(()=>{this['updateDisabledState']();});_0x408edc['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x569ade=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x569ade['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x53fe2e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x53fe2e),this['trigger']['setAttribute']('aria-disabled',_0x53fe2e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x53fe2e?'-1':'0'),_0x53fe2e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xacc49e=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x123461=_0xacc49e['filter'](_0x3c1032=>!_0x3c1032['disabled']&&!_0x3c1032['hidden']);_0xacc49e['forEach']((_0x76fb24,_0x2c9933)=>{const _0x1e62a9=document['createElement']('div');_0x1e62a9['className']='custom-select-option',_0x1e62a9['textContent']=_0x76fb24['textContent'],_0x1e62a9['setAttribute']('data-value',_0x76fb24['value']),_0x1e62a9['setAttribute']('data-index',_0x2c9933),_0x1e62a9['setAttribute']('role','option'),_0x76fb24['disabled']?_0x1e62a9['classList']['add']('disabled'):_0x1e62a9['addEventListener']('click',()=>this['select'](_0x76fb24['value'])),_0x76fb24['value']===this['selectedValue']&&_0x1e62a9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1e62a9),this['allOptions']['push']({'element':_0x1e62a9,'text':_0x76fb24['textContent']['toLowerCase'](),'value':_0x76fb24['value'],'disabled':_0x76fb24['disabled']});});if(this['searchable']&&this['searchInput']){const _0x18572b=this['searchInput']['parentElement'];_0x123461['length']>0x3?_0x18572b['style']['display']='':_0x18572b['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x41a89c=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2d008f=>{if(!_0x41a89c||_0x2d008f['disabled'])_0x2d008f['element']['style']['display']='';else{const _0x3b6fa9=_0x2d008f['text']['includes'](_0x41a89c);_0x2d008f['element']['style']['display']=_0x3b6fa9?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x19f510){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x19f510,this['nativeSelect']['value']=_0x19f510;const _0x13d6a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x13d6a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x55db19=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x55db19&&(this['triggerText']['textContent']=_0x55db19['textContent'],_0x55db19['disabled']||_0x55db19['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ec56a=>{_0x1ec56a['getAttribute']('data-value')===this['selectedValue']?_0x1ec56a['classList']['add']('selected'):_0x1ec56a['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 _0x5ea021=window['getComputedStyle'](this['dropdown']);if(_0x5ea021['position']==='fixed'){const _0x1fde6f=this['trigger']['getBoundingClientRect'](),_0x2cef97=parseInt(_0x5ea021['maxHeight'])||0xc8,_0x5a5297=window['innerHeight'],_0x443131=_0x5a5297-_0x1fde6f['bottom'],_0x476428=_0x1fde6f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x6279f2;_0x443131<_0x2cef97&&_0x476428>_0x443131?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5a5297-_0x1fde6f['top']+'px',_0x6279f2=Math['min'](_0x2cef97,_0x476428-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1fde6f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x6279f2=Math['min'](_0x2cef97,_0x443131-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px');if(this['optionsContainer']){let _0x5ec5a0=_0x6279f2;if(this['searchInput']){const _0x1ee1f0=this['searchInput']['parentElement'];_0x1ee1f0&&(_0x5ec5a0-=_0x1ee1f0['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ec5a0)+'px';}this['dropdown']['style']['left']=_0x1fde6f['left']+'px',this['dropdown']['style']['width']=_0x1fde6f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x25b4e1=this['searchInput']['parentElement'];_0x25b4e1&&_0x25b4e1['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'](_0x51d133){if(this['nativeSelect']['disabled'])return;if(_0x51d133['key']==='Enter'||_0x51d133['key']==='\x20')_0x51d133['preventDefault'](),this['toggle']();else _0x51d133['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ac308='\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',_0x4ac308),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2d0d71=document['getElementById']('confirm-dialog-close'),_0xa2b4da=document['getElementById']('confirm-dialog-cancel'),_0x5882ad=document['getElementById']('confirm-dialog-confirm'),_0x27a586=this['_modal']['querySelector']('.modal-overlay');_0x2d0d71['addEventListener']('click',()=>this['_resolve'](![])),_0xa2b4da['addEventListener']('click',()=>this['_resolve'](![])),_0x5882ad['addEventListener']('click',()=>this['_resolve'](!![])),_0x27a586['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x16d80a=>{if(_0x16d80a['key']==='Escape')_0x16d80a['preventDefault'](),this['_resolve'](![]);else _0x16d80a['key']==='Enter'&&(_0x16d80a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1c064c,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4b88d9=>{this['_resolvePromise']=_0x4b88d9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1c064c;const _0x978a3d=document['getElementById']('confirm-dialog-cancel'),_0x41e8b7=document['getElementById']('confirm-dialog-confirm');_0x978a3d['textContent']=cancelText,_0x41e8b7['textContent']=confirmText,_0x41e8b7['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x41e8b7['focus']();});},'_resolve'(_0x4b99a6){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4b99a6),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4f50d6,_0x12dd63={}){this['container']=_0x4f50d6,this['options']={'placeholder':_0x12dd63['placeholder']||'Type\x20to\x20search...','maxItems':_0x12dd63['maxItems']||0x64,'loadItems':_0x12dd63['loadItems']||(async()=>[]),'renderItem':_0x12dd63['renderItem']||(_0x224c0f=>({'primary':String(_0x224c0f),'secondary':''})),'onSelect':_0x12dd63['onSelect']||(()=>{}),'filterItems':_0x12dd63['filterItems']||null,'getItemValue':_0x12dd63['getItemValue']||(_0x4ee339=>_0x4ee339),'sortItems':_0x12dd63['sortItems']||null,'debounceMs':_0x12dd63['debounceMs']||0xc8,'minCharsForSearch':_0x12dd63['minCharsForSearch']||0x0,'emptyMessage':_0x12dd63['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x12dd63['loadingMessage']||'Loading...','preload':_0x12dd63['preload']!==![],'searchMode':_0x12dd63['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',_0x61e152=>this['onBlur'](_0x61e152)),this['input']['addEventListener']('input',_0x550fa1=>this['onInput'](_0x550fa1)),this['input']['addEventListener']('keydown',_0xba785e=>this['onKeydown'](_0xba785e)),this['clearBtn']['addEventListener']('mousedown',_0x21ceff=>{_0x21ceff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4a7c91=>{_0x4a7c91['preventDefault']();}),document['addEventListener']('click',_0x33e817=>{!this['wrapper']['contains'](_0x33e817['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(_0x29614f){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x29614f);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x195814){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x2dbfa0){const _0x3694ca=_0x2dbfa0['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3694ca);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3694ca):this['loadAndShow'](_0x3694ca);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48b142){switch(_0x48b142['key']){case'ArrowDown':_0x48b142['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48b142['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48b142['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48b142['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c0aab){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0xcfba6c=this['selectedIndex']+_0x5c0aab;if(_0xcfba6c>=0x0&&_0xcfba6c<this['filteredItems']['length']){this['selectedIndex']=_0xcfba6c,this['updateSelectionHighlight']();const _0x3c3261=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3c3261[this['selectedIndex']]&&_0x3c3261[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2d9120=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2d9120['forEach']((_0x39b9e4,_0x2ff62a)=>{_0x39b9e4['classList']['toggle']('keyboard-selected',_0x2ff62a===this['selectedIndex']);});}async['loadAndShow'](_0x5eb2f9){this['showLoading']();try{const _0x2217b1=await this['options']['loadItems'](_0x5eb2f9);if(this['options']['searchMode']==='server'){let _0x1a2da6=_0x2217b1;this['options']['sortItems']&&(_0x1a2da6=this['options']['sortItems']([..._0x2217b1]));this['filteredItems']=_0x1a2da6;const _0x1b4ded=this['filteredItems']['length']>=this['options']['maxItems'];_0x1b4ded&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x1b4ded),this['open']();}else this['allItems']=_0x2217b1,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5eb2f9);}catch(_0x19fcb8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x19fcb8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x406da6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x406da6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49acd9=this['filteredItems']['length']>=this['options']['maxItems'];_0x49acd9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49acd9),this['open']();}['renderItems'](_0xf5fab6){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']((_0x3efb8c,_0x574995)=>{const _0xf362ed=document['createElement']('div');_0xf362ed['className']='autocomplete-select-item',_0xf362ed['setAttribute']('role','option'),_0xf362ed['setAttribute']('data-index',_0x574995);const _0x4f28a0=this['options']['renderItem'](_0x3efb8c);let _0x44657b='';_0x4f28a0['icon']&&(_0x44657b='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4f28a0['iconClass']||'')+'\x22>'+_0x4f28a0['icon']+'</span>'),_0xf362ed['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x44657b+'\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'](_0x4f28a0['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4f28a0['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4f28a0['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf362ed['addEventListener']('click',()=>{this['selectItem'](_0x3efb8c);}),_0xf362ed['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x574995,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf362ed);}),_0xf5fab6?(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'](_0x1a2a0f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1a2a0f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x52714b){this['selectedItem']=_0x52714b;const _0x533785=this['options']['renderItem'](_0x52714b);this['input']['value']=_0x533785['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x52714b);}['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'](_0x3a6a2b){if(_0x3a6a2b){this['selectedItem']=_0x3a6a2b;const _0x25cebd=this['options']['renderItem'](_0x3a6a2b);this['input']['value']=_0x25cebd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1dd7cd){this['allItems']=_0x1dd7cd,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'](_0x2e4d66){this['input']['placeholder']=_0x2e4d66;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3c778b=null){const _0xa0613c=document['getElementById']('admin-menu-container'),_0x485ecb=document['getElementById']('admin-menu-btn'),_0x26badd=document['getElementById']('admin-menu');if(!_0xa0613c||!_0x485ecb||!_0x26badd)return;try{!_0x3c778b&&(_0x3c778b=await API['getCurrentUser']());if(_0x3c778b){const _0x5ee7e8=window['Permissions'],_0x5a5602=_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')||_0x5ee7e8['hasEnvPermission'](_0x3c778b,'environments:manage')||_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')||_0x5ee7e8['hasTeamPermission'](_0x3c778b,'teams:manage')||_0x5ee7e8['hasAnyEnvironment'](_0x3c778b);if(!_0x5a5602)return;_0xa0613c['hidden']=![];if(!_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')){const _0x12be6f=_0x26badd['querySelectorAll']('.admin-menu-item');_0x12be6f['forEach'](_0x325aca=>{const _0x4521ee=_0x325aca['querySelector']('.option-text')?.['textContent']?.['trim']();_0x4521ee==='Users'&&!_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')&&(_0x325aca['hidden']=!![]),_0x4521ee==='Skills'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Settings'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Health'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Git\x20History'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Roles'&&(_0x325aca['hidden']=!![]);});}_0x485ecb['addEventListener']('click',_0x3f4f3d=>{_0x3f4f3d['stopPropagation']();const _0x437e42=document['getElementById']('actions-menu');if(_0x437e42)_0x437e42['hidden']=!![];_0x26badd['hidden']=!_0x26badd['hidden'];}),document['addEventListener']('click',_0x36aecd=>{!_0x26badd['hidden']&&!_0x485ecb['contains'](_0x36aecd['target'])&&!_0x26badd['contains'](_0x36aecd['target'])&&(_0x26badd['hidden']=!![]);}),document['addEventListener']('keydown',_0x5971a7=>{_0x5971a7['key']==='Escape'&&!_0x26badd['hidden']&&(_0x26badd['hidden']=!![]);});const _0x5b1f48=document['getElementById']('server-health-btn');_0x5b1f48&&_0x5b1f48['addEventListener']('click',async()=>{_0x26badd['hidden']=!![];const {openServerHealthModal:_0x335146}=await import('./server-health.js');_0x335146();});}}catch(_0x581d97){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x581d97['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 _0x42476c=window['location']['pathname'],_0x558d68=_0x42476c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x558d68)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x558d68[0x1]),_0x558d68[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x43de9c={}){const _0x1dcaed=new URLSearchParams();_0x43de9c['userId']&&_0x1dcaed['set']('userId',String(_0x43de9c['userId']));_0x43de9c['automation']&&_0x1dcaed['set']('automation',String(_0x43de9c['automation']));const _0x59b5cf=API_BASE+'/tasks/stats'+(_0x1dcaed['toString']()?'?'+_0x1dcaed['toString']():''),_0x50f9fa=await fetch(_0x59b5cf);if(!_0x50f9fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x50f9fa['statusText']);return await _0x50f9fa['json']();},async 'getTasks'(_0x250da0={}){const _0x4f39c0=new URLSearchParams();_0x250da0['status']&&_0x4f39c0['set']('status',String(_0x250da0['status']));_0x250da0['environment']&&_0x4f39c0['set']('environment',String(_0x250da0['environment']));_0x250da0['automation']&&_0x4f39c0['set']('automation',String(_0x250da0['automation']));if(_0x250da0['include']){const _0x48ff97=Array['isArray'](_0x250da0['include'])?_0x250da0['include']['join'](','):String(_0x250da0['include']);_0x48ff97&&_0x4f39c0['set']('include',_0x48ff97);}_0x250da0['filter']&&_0x4f39c0['set']('filter',String(_0x250da0['filter']));_0x250da0['page']&&_0x4f39c0['set']('page',String(_0x250da0['page']));_0x250da0['limit']&&_0x4f39c0['set']('limit',String(_0x250da0['limit']));_0x250da0['userId']&&_0x4f39c0['set']('userId',String(_0x250da0['userId']));_0x250da0['search']&&_0x4f39c0['set']('search',String(_0x250da0['search']));_0x250da0['includeChildTasks']&&_0x4f39c0['set']('includeChildTasks','true');const _0x2de641=API_BASE+'/tasks'+(_0x4f39c0['toString']()?'?'+_0x4f39c0['toString']():''),_0x20bec9=await fetch(_0x2de641);if(!_0x20bec9['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x20bec9['statusText']);return await _0x20bec9['json']();},async 'getAutomations'(_0x1246fe={}){const _0x321b7e=new URLSearchParams();_0x1246fe['environment']&&_0x321b7e['set']('environment',String(_0x1246fe['environment']));const _0x404ecb=await fetch(API_BASE+'/api/automations'+(_0x321b7e['toString']()?'?'+_0x321b7e['toString']():''));if(!_0x404ecb['ok']){const _0x11d396=await _0x404ecb['json']()['catch'](()=>({}));throw new Error(_0x11d396['message']||_0x11d396['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x404ecb['statusText']);}return await _0x404ecb['json']();},async 'getAutomation'(_0x5370ca){const _0x341304=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5370ca));if(!_0x341304['ok']){const _0x289565=await _0x341304['json']()['catch'](()=>({}));throw new Error(_0x289565['message']||_0x289565['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x341304['statusText']);}return await _0x341304['json']();},async 'createAutomation'(_0x29c72c){const _0x365953=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29c72c||{})});if(!_0x365953['ok']){const _0x4768d5=await _0x365953['json']()['catch'](()=>({}));throw new Error(_0x4768d5['message']||_0x4768d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x365953['statusText']);}return await _0x365953['json']();},async 'updateAutomation'(_0x305c01,_0x19dbfa){const _0x4e593c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x305c01),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19dbfa||{})});if(!_0x4e593c['ok']){const _0x1a2f37=await _0x4e593c['json']()['catch'](()=>({}));throw new Error(_0x1a2f37['message']||_0x1a2f37['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e593c['statusText']);}return await _0x4e593c['json']();},async 'deleteAutomation'(_0x44ca89){const _0x5b73a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x44ca89),{'method':'DELETE'});if(!_0x5b73a['ok']){const _0x4674f6=await _0x5b73a['json']()['catch'](()=>({}));throw new Error(_0x4674f6['message']||_0x4674f6['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5b73a['statusText']);}return await _0x5b73a['json']();},async 'triggerAutomation'(_0x4d3daf){const _0x44fb3b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d3daf)+'/trigger',{'method':'POST'});if(!_0x44fb3b['ok']){const _0x561c44=await _0x44fb3b['json']()['catch'](()=>({}));throw new Error(_0x561c44['message']||_0x561c44['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x44fb3b['statusText']);}return await _0x44fb3b['json']();},async 'setAutomationEnabled'(_0x31c4b8,_0x569658){const _0x4e751a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31c4b8)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x569658})});if(!_0x4e751a['ok']){const _0x408971=await _0x4e751a['json']()['catch'](()=>({}));throw new Error(_0x408971['message']||_0x408971['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4e751a['statusText']);}return await _0x4e751a['json']();},async 'getAutomationHistory'(_0x16912d,_0x161393=0x32){const _0x40cc1b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16912d)+'/history?limit='+encodeURIComponent(String(_0x161393)));if(!_0x40cc1b['ok']){const _0x4fc767=await _0x40cc1b['json']()['catch'](()=>({}));throw new Error(_0x4fc767['message']||_0x4fc767['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40cc1b['statusText']);}return await _0x40cc1b['json']();},async 'getTask'(_0x498122,_0x52b715={}){const _0x103f4a=new URLSearchParams();if(_0x52b715['include']){const _0x2bdf9e=Array['isArray'](_0x52b715['include'])?_0x52b715['include']['join'](','):String(_0x52b715['include']);if(_0x2bdf9e)_0x103f4a['set']('include',_0x2bdf9e);}const _0xeaae=await fetch(API_BASE+'/tasks/'+_0x498122+(_0x103f4a['toString']()?'?'+_0x103f4a['toString']():''));if(!_0xeaae['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xeaae['statusText']);return await _0xeaae['json']();},async 'getTaskResults'(_0x42657f){const _0x2a2a91=await fetch(API_BASE+'/tasks/'+_0x42657f+'/results');if(!_0x2a2a91['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a2a91['statusText']);return await _0x2a2a91['json']();},async 'getTaskPatches'(_0x3a5009){const _0xcb2d04=await fetch(API_BASE+'/tasks/'+_0x3a5009+'/patches');if(!_0xcb2d04['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xcb2d04['statusText']);return await _0xcb2d04['json']();},async 'getTaskAttachments'(_0x5d9f86){const _0x777c45=await fetch(API_BASE+'/tasks/'+_0x5d9f86+'/attachments');if(!_0x777c45['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x777c45['statusText']);return await _0x777c45['json']();},async 'uploadAttachments'(_0x372826,_0x3eb7b9){const _0x236fdc=new FormData();for(const _0x4c417a of _0x3eb7b9){_0x236fdc['append']('attachments',_0x4c417a);}const _0x3e5746=await fetch(API_BASE+'/tasks/'+_0x372826+'/attachments',{'method':'POST','body':_0x236fdc});if(!_0x3e5746['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3e5746['statusText']);return await _0x3e5746['json']();},async 'isAINameGenerationAvailable'(){try{const _0x5c4a21=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x5c4a21['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x5c4a21['json']();}catch(_0x486119){return{'available':![],'reason':_0x486119['message']};}},async 'generateTaskName'(_0x4e445e){try{const _0x4a708c=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x4e445e})});return await _0x4a708c['json']();}catch(_0x135a72){return{'success':![],'error':_0x135a72['message']};}},async 'createTask'(_0x5a411f){let _0x822d50,_0x17ff5c={};if(_0x5a411f['files']&&_0x5a411f['files']['length']>0x0){const _0x324ef0=new FormData();for(const [_0x3d4553,_0x477af7]of Object['entries'](_0x5a411f)){if(_0x3d4553!=='files'){if(_0x477af7==null)continue;typeof _0x477af7==='object'?_0x324ef0['append'](_0x3d4553,JSON['stringify'](_0x477af7)):_0x324ef0['append'](_0x3d4553,String(_0x477af7));}}for(const _0x344553 of _0x5a411f['files']){_0x324ef0['append']('attachments',_0x344553);}_0x822d50=_0x324ef0;}else _0x17ff5c['Content-Type']='application/json',_0x822d50=JSON['stringify'](_0x5a411f);const _0x2f7600=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x17ff5c,'body':_0x822d50});if(!_0x2f7600['ok']){const _0x3b7770=await _0x2f7600['json'](),_0x5c5a25=new Error(_0x3b7770['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2f7600['statusText']),{message:_0x3c6d5e,..._0x192f98}=_0x3b7770;Object['assign'](_0x5c5a25,_0x192f98);throw _0x5c5a25;}return await _0x2f7600['json']();},async 'createTestTask'(_0x1a5069){const _0x52847e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a5069)});if(!_0x52847e['ok']){const _0x4eade0=await _0x52847e['json']();throw new Error(_0x4eade0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x52847e['statusText']);}return await _0x52847e['json']();},async 'createEphemeralTest'(_0x3f92f2){const _0xc67335=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f92f2)});if(!_0xc67335['ok']){const _0x61b045=await _0xc67335['json']();throw new Error(_0x61b045['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xc67335['statusText']);}return await _0xc67335['json']();},async 'createDeployTask'(_0x351295){const _0x25b9ff=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351295)});if(!_0x25b9ff['ok']){const _0x390dfd=await _0x25b9ff['json']();throw new Error(_0x390dfd['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x25b9ff['statusText']);}return await _0x25b9ff['json']();},async 'getEnvironments'(){const _0xb4c4e8=await fetch(API_BASE+'/environments');if(!_0xb4c4e8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xb4c4e8['statusText']);return await _0xb4c4e8['json']();},async 'getEnvironment'(_0x3cc28e){const _0x20af52=await fetch(API_BASE+'/environments/'+_0x3cc28e);if(!_0x20af52['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x20af52['statusText']);return await _0x20af52['json']();},async 'getEnvironmentRepoHistory'(_0x3985fd,_0x4da5f0,_0x41ccf1={}){if(!_0x3985fd||!_0x4da5f0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2ffa82=new URLSearchParams();if(_0x41ccf1['limit'])_0x2ffa82['set']('limit',String(_0x41ccf1['limit']));if(_0x41ccf1['offset'])_0x2ffa82['set']('offset',String(_0x41ccf1['offset']));if(_0x41ccf1['search'])_0x2ffa82['set']('search',String(_0x41ccf1['search']));if(_0x41ccf1['branch'])_0x2ffa82['set']('branch',String(_0x41ccf1['branch']));const _0x5a7f3f=API_BASE+'/environments/'+encodeURIComponent(_0x3985fd)+'/repos/'+encodeURIComponent(_0x4da5f0)+'/git/history',_0x229db6=await fetch(''+_0x5a7f3f+(_0x2ffa82['toString']()?'?'+_0x2ffa82['toString']():''));if(!_0x229db6['ok']){const _0x3a9f71=await _0x229db6['json']()['catch'](()=>({}));throw new Error(_0x3a9f71['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x229db6['statusText']);}return await _0x229db6['json']();},async 'getEnvironmentRepoCommit'(_0x451bef,_0x41e024,_0x112cbb){if(!_0x451bef||!_0x41e024||!_0x112cbb)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x161219=API_BASE+'/environments/'+encodeURIComponent(_0x451bef)+'/repos/'+encodeURIComponent(_0x41e024)+'/git/commits/'+encodeURIComponent(_0x112cbb),_0x425f42=await fetch(_0x161219);if(!_0x425f42['ok']){const _0x367791=await _0x425f42['json']()['catch'](()=>({}));throw new Error(_0x367791['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x425f42['statusText']);}return await _0x425f42['json']();},async 'getEnvironmentRepoBranches'(_0xe0cbf7,_0x1a24bd){if(!_0xe0cbf7||!_0x1a24bd)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a999f=API_BASE+'/environments/'+encodeURIComponent(_0xe0cbf7)+'/repos/'+encodeURIComponent(_0x1a24bd)+'/git/branches',_0xe4409e=await fetch(_0x2a999f);if(!_0xe4409e['ok']){const _0x566444=await _0xe4409e['json']()['catch'](()=>({}));throw new Error(_0x566444['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xe4409e['statusText']);}return await _0xe4409e['json']();},async 'revertEnvironmentRepoCommit'(_0x255ead,_0x23d32b,_0x9d8a3c,_0x54ddb2={}){if(!_0x255ead||!_0x23d32b||!_0x9d8a3c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x597b93=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x255ead)+'/repos/'+encodeURIComponent(_0x23d32b)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x9d8a3c,..._0x54ddb2})});if(!_0x597b93['ok']){const _0x31a053=await _0x597b93['json']()['catch'](()=>({}));throw new Error(_0x31a053['message']||_0x31a053['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x597b93['statusText']);}return await _0x597b93['json']();},async 'getTemplates'(_0x5caee4={}){const _0x16a05b=new URLSearchParams();if(_0x5caee4['include']){const _0x4a241e=Array['isArray'](_0x5caee4['include'])?_0x5caee4['include']['join'](','):String(_0x5caee4['include']);if(_0x4a241e)_0x16a05b['set']('include',_0x4a241e);}const _0x3d7a44=await fetch(API_BASE+'/templates'+(_0x16a05b['toString']()?'?'+_0x16a05b['toString']():''));if(!_0x3d7a44['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d7a44['statusText']);return await _0x3d7a44['json']();},async 'getTemplatesForEnvironment'(_0xc528e9,_0x35353a={}){if(!_0xc528e9)throw new Error('Environment\x20name\x20is\x20required');const _0x718a59=new URLSearchParams();if(_0x35353a['include']){const _0x2593c5=Array['isArray'](_0x35353a['include'])?_0x35353a['include']['join'](','):String(_0x35353a['include']);if(_0x2593c5)_0x718a59['set']('include',_0x2593c5);}const _0x4adac0=await fetch(API_BASE+'/templates/'+_0xc528e9+(_0x718a59['toString']()?'?'+_0x718a59['toString']():''));if(!_0x4adac0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0xc528e9+':\x20'+_0x4adac0['statusText']);return await _0x4adac0['json']();},async 'getTemplate'(_0x598d43,_0x2e0d94,_0x1f4e92={}){if(!_0x598d43||!_0x2e0d94)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x212bcf=new URLSearchParams();if(_0x1f4e92['include']){const _0x559a1b=Array['isArray'](_0x1f4e92['include'])?_0x1f4e92['include']['join'](','):String(_0x1f4e92['include']);if(_0x559a1b)_0x212bcf['set']('include',_0x559a1b);}const _0x218e30=await fetch(API_BASE+'/templates/'+_0x598d43+'/'+_0x2e0d94+(_0x212bcf['toString']()?'?'+_0x212bcf['toString']():''));if(!_0x218e30['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x218e30['statusText']);return await _0x218e30['json']();},async 'getTaskLogs'(_0x4699da,_0xa9739c={}){if(!_0x4699da)throw new Error('Task\x20ID\x20is\x20required');const _0x3287ed=new URLSearchParams();_0xa9739c['tail']&&_0x3287ed['set']('tail',String(_0xa9739c['tail']));const _0x2239c3=await fetch(API_BASE+'/tasks/'+_0x4699da+'/logs'+(_0x3287ed['toString']()?'?'+_0x3287ed['toString']():''));if(!_0x2239c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2239c3['statusText']);return await _0x2239c3['text']();},async 'getContainers'(){const _0x2ed2e4=await fetch(API_BASE+'/containers');if(!_0x2ed2e4['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ed2e4['statusText']);return await _0x2ed2e4['json']();},async 'getContainer'(_0x3d3281){const _0x529cbe=await fetch(API_BASE+'/containers/'+_0x3d3281);if(!_0x529cbe['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x529cbe['statusText']);return await _0x529cbe['json']();},async 'startInteractiveContainer'(_0x2d1f5c){const _0x478aca=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1f5c)});if(!_0x478aca['ok']){const _0x84aded=await _0x478aca['json']()['catch'](()=>({}));throw new Error(_0x84aded['message']||'Failed\x20to\x20start\x20container:\x20'+_0x478aca['statusText']);}return await _0x478aca['json']();},async 'stopContainer'(_0x1c7379){const _0x4dc06e=await fetch(API_BASE+'/containers/'+_0x1c7379,{'method':'DELETE'});if(!_0x4dc06e['ok']){const _0x315233=await _0x4dc06e['json']()['catch'](()=>({}));throw new Error(_0x315233['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4dc06e['statusText']);}return await _0x4dc06e['json']();},async 'stopTask'(_0x3e58f1){if(!_0x3e58f1)throw new Error('Task\x20ID\x20is\x20required');const _0x403311=await fetch(API_BASE+'/tasks/'+_0x3e58f1+'/stop',{'method':'POST'});if(!_0x403311['ok']){const _0x407205=await _0x403311['json']()['catch'](()=>({}));throw new Error(_0x407205['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x403311['statusText']);}return await _0x403311['json']();},async 'interruptTask'(_0x1d85d5){if(!_0x1d85d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4861b5=await fetch(API_BASE+'/tasks/'+_0x1d85d5+'/interrupt',{'method':'POST'});if(!_0x4861b5['ok']){const _0x39ff50=await _0x4861b5['json']()['catch'](()=>({}));throw new Error(_0x39ff50['error']||_0x39ff50['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4861b5['statusText']);}return await _0x4861b5['json']();},async 'startTask'(_0x23057f){if(!_0x23057f)throw new Error('Task\x20ID\x20is\x20required');const _0x290b07=await fetch(API_BASE+'/tasks/'+_0x23057f+'/start',{'method':'POST'});if(!_0x290b07['ok']){const _0x293c39=await _0x290b07['json']()['catch'](()=>({}));throw new Error(_0x293c39['error']||'Failed\x20to\x20start\x20task:\x20'+_0x290b07['statusText']);}return await _0x290b07['json']();},async 'deleteTask'(_0x57eb11){if(!_0x57eb11)throw new Error('Task\x20ID\x20is\x20required');const _0xe4f711=await fetch(API_BASE+'/tasks/'+_0x57eb11,{'method':'DELETE'});if(!_0xe4f711['ok']){const _0x2be710=await _0xe4f711['json']()['catch'](()=>({}));throw new Error(_0x2be710['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xe4f711['statusText']);}return await _0xe4f711['json']();},async 'refreshTasksFromDisk'(){const _0x3e961c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3e961c['ok']){const _0xb433f3=await _0x3e961c['json']()['catch'](()=>({}));throw new Error(_0xb433f3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3e961c['statusText']);}return await _0x3e961c['json']();},async 'approveTask'(_0x2b7f93,_0x11ae6e={}){if(!_0x2b7f93)throw new Error('Task\x20ID\x20is\x20required');const _0x4f0fc3={'commit_message':_0x11ae6e['commit_message']||'','pull':_0x11ae6e['pull']??![],'push':_0x11ae6e['push']??![]};_0x11ae6e['new_branch']&&(_0x4f0fc3['new_branch']=_0x11ae6e['new_branch']);const _0x1b2227=await fetch(API_BASE+'/tasks/'+_0x2b7f93+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f0fc3)});if(!_0x1b2227['ok']){const _0x2aa5fd=await _0x1b2227['json']()['catch'](()=>({}));let _0x17c73f=_0x2aa5fd['error']||_0x2aa5fd['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1b2227['statusText'];if(_0x2aa5fd['results']&&Array['isArray'](_0x2aa5fd['results'])){const _0x710d2a=_0x2aa5fd['results']['filter'](_0xa67d26=>!_0xa67d26['success']&&_0xa67d26['error']);_0x710d2a['length']>0x0&&(_0x17c73f=_0x710d2a[0x0]['error']);}throw new Error(_0x17c73f);}return await _0x1b2227['json']();},async 'getPullRequestInfo'(_0x3da47c){if(!_0x3da47c)throw new Error('Task\x20ID\x20is\x20required');const _0x38f305=await fetch(API_BASE+'/tasks/'+_0x3da47c+'/pull-request-info');if(!_0x38f305['ok']){const _0x1639e7=await _0x38f305['json']()['catch'](()=>({}));throw new Error(_0x1639e7['error']||_0x1639e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x38f305['statusText']);}return await _0x38f305['json']();},async 'createPullRequests'(_0x258f89,_0x429529){if(!_0x258f89)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429529||!Array['isArray'](_0x429529))throw new Error('repos\x20array\x20is\x20required');const _0x428464=await fetch(API_BASE+'/tasks/'+_0x258f89+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x429529})});if(!_0x428464['ok']){const _0x2611bc=await _0x428464['json']()['catch'](()=>({}));let _0x39f4a1=_0x2611bc['error']||_0x2611bc['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x428464['statusText'];if(_0x2611bc['results']&&Array['isArray'](_0x2611bc['results'])){const _0xc562ca=_0x2611bc['results']['filter'](_0x4d15c6=>!_0x4d15c6['success']&&_0x4d15c6['error']);_0xc562ca['length']>0x0&&(_0x39f4a1=_0xc562ca[0x0]['error']);}throw new Error(_0x39f4a1);}return await _0x428464['json']();},async 'syncRepos'(_0x1c30ec){if(!_0x1c30ec)throw new Error('Task\x20ID\x20is\x20required');const _0x576734=await fetch(API_BASE+'/tasks/'+_0x1c30ec+'/sync-repos',{'method':'POST'});if(!_0x576734['ok']){const _0x1f7d64=await _0x576734['json']()['catch'](()=>({}));throw new Error(_0x1f7d64['error']||_0x1f7d64['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x576734['statusText']);}return await _0x576734['json']();},async 'getIbmiSyncInfo'(_0x22a24a){if(!_0x22a24a)throw new Error('Task\x20ID\x20is\x20required');const _0x22cf62=await fetch(API_BASE+'/tasks/'+_0x22a24a+'/ibmi-sync-info');if(!_0x22cf62['ok']){const _0x3ca861=await _0x22cf62['json']()['catch'](()=>({}));throw new Error(_0x3ca861['error']||_0x3ca861['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x22cf62['json']();},async 'getSyncFiles'(_0xd6487f){if(!_0xd6487f)throw new Error('Task\x20ID\x20is\x20required');const _0x5ffc73=await fetch(API_BASE+'/tasks/'+_0xd6487f+'/sync-to-ibmi/files');if(!_0x5ffc73['ok']){const _0xcfcd8c=await _0x5ffc73['json']()['catch'](()=>({}));throw new Error(_0xcfcd8c['error']||_0xcfcd8c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5ffc73['json']();},async 'syncToIbmi'(_0x988772,_0x5f889e,_0x1be4db=null,_0x23293a=null,_0x14dc2e=null){if(!_0x988772)throw new Error('Task\x20ID\x20is\x20required');const _0x4bc0c9={'library':_0x5f889e};if(_0x1be4db)_0x4bc0c9['user']=_0x1be4db;if(_0x23293a)_0x4bc0c9['password']=_0x23293a;if(_0x14dc2e)_0x4bc0c9['files']=_0x14dc2e;const _0x52b87f=await fetch(API_BASE+'/tasks/'+_0x988772+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc0c9)});if(!_0x52b87f['ok']){const _0x49ff76=await _0x52b87f['json']()['catch'](()=>({}));throw new Error(_0x49ff76['error']||_0x49ff76['message']||'Sync\x20failed');}return await _0x52b87f['json']();},async 'getIbmiSyncLog'(_0xb9fc59){if(!_0xb9fc59)throw new Error('Task\x20ID\x20is\x20required');const _0x569cdf=await fetch(API_BASE+'/tasks/'+_0xb9fc59+'/ibmi-sync-log');if(!_0x569cdf['ok']){const _0x1c3d64=await _0x569cdf['json']()['catch'](()=>({}));throw new Error(_0x1c3d64['error']||_0x1c3d64['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x569cdf['json']();},async 'pullChanges'(_0x32bfe1){if(!_0x32bfe1)throw new Error('Task\x20ID\x20is\x20required');const _0x1f0fd8=await fetch(API_BASE+'/tasks/'+_0x32bfe1+'/pull-changes',{'method':'POST'});if(!_0x1f0fd8['ok']){const _0x27588a=await _0x1f0fd8['json']()['catch'](()=>({}));throw new Error(_0x27588a['error']||_0x27588a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1f0fd8['statusText']);}return await _0x1f0fd8['json']();},async 'readFile'(_0x5d3d82,_0xf724e4){if(!_0x5d3d82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf724e4)throw new Error('File\x20path\x20is\x20required');const _0x2d8e8e=await fetch(API_BASE+'/tasks/'+_0x5d3d82+'/files?path='+encodeURIComponent(_0xf724e4));if(!_0x2d8e8e['ok']){const _0x41ac1d=await _0x2d8e8e['json']()['catch'](()=>({}));throw new Error(_0x41ac1d['error']||_0x41ac1d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2d8e8e['statusText']);}return await _0x2d8e8e['json']();},'getTaskFileDownloadUrl'(_0x3bb483,_0x1852a6){if(!_0x3bb483)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1852a6)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3bb483+'/files/download?path='+encodeURIComponent(_0x1852a6);},async 'writeFile'(_0x1e285b,_0x4e8aa6,_0x22cb52){if(!_0x1e285b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e8aa6)throw new Error('File\x20path\x20is\x20required');if(_0x22cb52===undefined)throw new Error('Content\x20is\x20required');const _0x4cc7ae=await fetch(API_BASE+'/tasks/'+_0x1e285b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4e8aa6,'content':_0x22cb52})});if(!_0x4cc7ae['ok']){const _0x549006=await _0x4cc7ae['json']()['catch'](()=>({}));throw new Error(_0x549006['error']||_0x549006['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4cc7ae['statusText']);}return await _0x4cc7ae['json']();},async 'uploadTaskFiles'(_0x114294,_0x48eeb5,_0x528713){if(!_0x114294)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48eeb5)throw new Error('Target\x20directory\x20is\x20required');if(!_0x528713||_0x528713['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52d198=new FormData();_0x52d198['append']('targetDir',_0x48eeb5);for(const _0x1e9bbe of _0x528713){_0x52d198['append']('files',_0x1e9bbe,_0x1e9bbe['name']);}const _0x128072=await fetch(API_BASE+'/tasks/'+_0x114294+'/files/upload',{'method':'POST','body':_0x52d198});if(!_0x128072['ok']){const _0x4735e6=await _0x128072['json']()['catch'](()=>({}));throw new Error(_0x4735e6['error']||_0x4735e6['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x128072['statusText']);}return await _0x128072['json']();},async 'deleteFile'(_0x4db528,_0x559ccd){if(!_0x4db528)throw new Error('Task\x20ID\x20is\x20required');if(!_0x559ccd)throw new Error('File\x20path\x20is\x20required');const _0x476e73=await fetch(API_BASE+'/tasks/'+_0x4db528+'/files?path='+encodeURIComponent(_0x559ccd),{'method':'DELETE'});if(!_0x476e73['ok']){const _0x45370e=await _0x476e73['json']()['catch'](()=>({}));throw new Error(_0x45370e['error']||_0x45370e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x476e73['statusText']);}return await _0x476e73['json']();},async 'discardFile'(_0x5e66de,_0x1b02a4,_0x270edf){if(!_0x5e66de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b02a4)throw new Error('File\x20path\x20is\x20required');if(!_0x270edf)throw new Error('Repository\x20path\x20is\x20required');const _0x3c868c=await fetch(API_BASE+'/tasks/'+_0x5e66de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1b02a4,'repoPath':_0x270edf})});if(!_0x3c868c['ok']){const _0x508ee5=await _0x3c868c['json']()['catch'](()=>({}));throw new Error(_0x508ee5['error']||_0x508ee5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3c868c['statusText']);}return await _0x3c868c['json']();},async 'followUpTask'(_0x4cfe7f,_0x2067d7={}){if(!_0x4cfe7f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2067d7['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x45870e,_0x3c09f2={};if(_0x2067d7['files']&&_0x2067d7['files']['length']>0x0){const _0x40fe01=new FormData();_0x40fe01['append']('instructions',_0x2067d7['instructions']);for(const _0xde4dd1 of _0x2067d7['files']){_0x40fe01['append']('attachments',_0xde4dd1);}_0x45870e=_0x40fe01;}else _0x3c09f2['Content-Type']='application/json',_0x45870e=JSON['stringify']({'instructions':_0x2067d7['instructions']});const _0x523dbb=await fetch(API_BASE+'/tasks/'+_0x4cfe7f+'/follow-up',{'method':'POST','headers':_0x3c09f2,'body':_0x45870e});if(!_0x523dbb['ok']){const _0x3e7a64=await _0x523dbb['json']()['catch'](()=>({}));throw new Error(_0x3e7a64['error']||_0x3e7a64['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x523dbb['statusText']);}return await _0x523dbb['json']();},async 'getTaskRewindPoints'(_0x263d39){if(!_0x263d39)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed208=await fetch(API_BASE+'/tasks/'+_0x263d39+'/rewind-points');if(!_0x3ed208['ok']){const _0x48fef8=await _0x3ed208['json']()['catch'](()=>({}));throw new Error(_0x48fef8['error']||_0x48fef8['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x3ed208['statusText']);}return await _0x3ed208['json']();},async 'rewindTask'(_0x409d0c,_0x45dd31={}){if(!_0x409d0c)throw new Error('Task\x20ID\x20is\x20required');const _0x193e57=Number['isInteger'](_0x45dd31['targetFollowUpCount'])?_0x45dd31['targetFollowUpCount']:0x0,_0x2f9eae={'targetFollowUpCount':_0x193e57};typeof _0x45dd31['instructions']==='string'&&_0x45dd31['instructions']['trim']()&&(_0x2f9eae['instructions']=_0x45dd31['instructions']['trim']());typeof _0x45dd31['rewindFiles']==='boolean'&&(_0x2f9eae['rewindFiles']=_0x45dd31['rewindFiles']);const _0x4f9f3d=await fetch(API_BASE+'/tasks/'+_0x409d0c+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f9eae)});if(!_0x4f9f3d['ok']){const _0x56a4db=await _0x4f9f3d['json']()['catch'](()=>({}));throw new Error(_0x56a4db['error']||_0x56a4db['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x4f9f3d['statusText']);}return await _0x4f9f3d['json']();},async 'login'(_0x47164b,_0x1fdb3f){const _0x1b36a7=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47164b,'password':_0x1fdb3f})});if(!_0x1b36a7['ok']){const _0x502417=await _0x1b36a7['json']();throw new Error(_0x502417['message']||'Login\x20failed');}return await _0x1b36a7['json']();},async 'logout'(){const _0xafeed2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xafeed2['ok']){const _0x2a287b=await _0xafeed2['json']();throw new Error(_0x2a287b['message']||'Logout\x20failed');}return await _0xafeed2['json']();},async 'getCurrentUser'(){const _0x28c93a=await fetch(API_BASE+'/auth/me');if(!_0x28c93a['ok'])throw new Error('Not\x20authenticated');const _0x11eb18=await _0x28c93a['json']();return _0x11eb18['user'];},async 'getRolesInfo'(){const _0x3ad0e7=await fetch(API_BASE+'/users/roles');if(!_0x3ad0e7['ok']){const _0x3ee58a=await _0x3ad0e7['json']();throw new Error(_0x3ee58a['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3ad0e7['json']();},async 'getUsers'(){const _0x32c42f=await fetch(API_BASE+'/users');if(!_0x32c42f['ok']){const _0x7b104e=await _0x32c42f['json']();throw new Error(_0x7b104e['message']||'Failed\x20to\x20get\x20users');}return await _0x32c42f['json']();},async 'getUser'(_0xc1799f){const _0x8b2305=await fetch(API_BASE+'/users/'+_0xc1799f);if(!_0x8b2305['ok']){const _0x3c632d=await _0x8b2305['json']();throw new Error(_0x3c632d['message']||'Failed\x20to\x20get\x20user');}return await _0x8b2305['json']();},async 'createUser'(_0x257e2b){const _0x29064e=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x257e2b)});if(!_0x29064e['ok']){const _0x2d99d5=await _0x29064e['json']();throw new Error(_0x2d99d5['message']||'Failed\x20to\x20create\x20user');}return await _0x29064e['json']();},async 'updateUser'(_0x23ae54,_0x29e49b){const _0x33b06=await fetch(API_BASE+'/users/'+_0x23ae54,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e49b)});if(!_0x33b06['ok']){const _0x561a8f=await _0x33b06['json']();throw new Error(_0x561a8f['message']||'Failed\x20to\x20update\x20user');}return await _0x33b06['json']();},async 'deleteUser'(_0x2e1714){const _0x5ac332=await fetch(API_BASE+'/users/'+_0x2e1714,{'method':'DELETE'});if(!_0x5ac332['ok']){const _0x3ecd95=await _0x5ac332['json']();throw new Error(_0x3ecd95['message']||'Failed\x20to\x20delete\x20user');}return await _0x5ac332['json']();},async 'stopAllContainers'(){const _0x14163f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x16a727=await _0x14163f['json']()['catch'](()=>({}));if(!_0x14163f['ok'])throw new Error(_0x16a727['message']||_0x16a727['error']||'Failed\x20to\x20stop\x20containers');return _0x16a727;},async 'removeStoppedContainers'(){const _0x5205dd=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bf738=await _0x5205dd['json']()['catch'](()=>({}));if(!_0x5205dd['ok'])throw new Error(_0x2bf738['message']||_0x2bf738['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bf738;},async 'pruneDockerResources'(){const _0x37cdd2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2a395b=await _0x37cdd2['json']()['catch'](()=>({}));if(!_0x37cdd2['ok'])throw new Error(_0x2a395b['message']||_0x2a395b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2a395b;},async 'createPasswordToken'(_0x19c799,_0x50ec2d='setup',_0x549bdc=![]){const _0x5390a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x19c799,'type':_0x50ec2d,'sendEmail':_0x549bdc})});if(!_0x5390a8['ok']){const _0x10c112=await _0x5390a8['json']();throw new Error(_0x10c112['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5390a8['json']();},async 'getEmailConfig'(){const _0x228a12=await fetch(API_BASE+'/password/email-config');if(!_0x228a12['ok']){const _0x5708e1=await _0x228a12['json']();throw new Error(_0x5708e1['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x228a12['json']();},async 'updateTaskName'(_0x3357df,_0x20e80a){const _0x2a4d70=await fetch(API_BASE+'/tasks/'+_0x3357df,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x20e80a})});if(!_0x2a4d70['ok']){const _0x20760c=await _0x2a4d70['json']();throw new Error(_0x20760c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2a4d70['json']();},async 'pinTask'(_0x18e7c9,_0x52bd03,_0x374c4a=null){if(!_0x18e7c9)throw new Error('Task\x20ID\x20is\x20required');const _0x1c7fd4={'pinned':_0x52bd03};_0x374c4a&&_0x374c4a['length']>0x0&&(_0x1c7fd4['additionalTaskIds']=_0x374c4a);const _0x2defe7=await fetch(API_BASE+'/tasks/'+_0x18e7c9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c7fd4)});if(!_0x2defe7['ok']){const _0x573cd9=await _0x2defe7['json']();throw new Error(_0x573cd9['error']||'Failed\x20to\x20pin\x20task');}return await _0x2defe7['json']();},async 'setTaskWinner'(_0x50e37a,_0x13c258,_0x4bd746=[]){if(!_0x50e37a)throw new Error('Task\x20ID\x20is\x20required');const _0x2ee07b=await fetch(API_BASE+'/tasks/'+_0x50e37a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x13c258,'siblings':_0x4bd746})});if(!_0x2ee07b['ok']){const _0x95a63c=await _0x2ee07b['json']();throw new Error(_0x95a63c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2ee07b['json']();},async 'setTaskLoser'(_0x3cb566,_0xb22c02){if(!_0x3cb566)throw new Error('Task\x20ID\x20is\x20required');const _0x4016ff=await fetch(API_BASE+'/tasks/'+_0x3cb566+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xb22c02})});if(!_0x4016ff['ok']){const _0x41773c=await _0x4016ff['json']();throw new Error(_0x41773c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4016ff['json']();},async 'createTaskGroup'(_0x513382){const _0x478e2a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x513382)});if(!_0x478e2a['ok']){const _0x747db2=await _0x478e2a['json']();throw new Error(_0x747db2['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x478e2a['json']();},async 'getTaskGroups'(_0x348059={}){const _0x48aadc=new URLSearchParams();if(_0x348059['userId'])_0x48aadc['set']('userId',String(_0x348059['userId']));if(_0x348059['status'])_0x48aadc['set']('status',String(_0x348059['status']));if(_0x348059['limit'])_0x48aadc['set']('limit',String(_0x348059['limit']));const _0x58823f=API_BASE+'/tasks/groups'+(_0x48aadc['toString']()?'?'+_0x48aadc['toString']():''),_0x277e9d=await fetch(_0x58823f);if(!_0x277e9d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x277e9d['json']();},async 'getTaskGroup'(_0x129a28){const _0x191942=await fetch(API_BASE+'/tasks/groups/'+_0x129a28);if(!_0x191942['ok']){const _0x107485=await _0x191942['json']();throw new Error(_0x107485['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x191942['json']();},async 'updateTaskGroup'(_0x3a6133,_0x35cd9d,_0x3e0bd6){const _0x392fc6=await fetch(API_BASE+'/tasks/'+_0x3a6133+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x35cd9d,'groupIndex':_0x3e0bd6})});if(!_0x392fc6['ok']){const _0xbf9b83=await _0x392fc6['json']();throw new Error(_0xbf9b83['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x392fc6['json']();},async 'removeTaskFromGroup'(_0x54775a){return this['updateTaskGroup'](_0x54775a,null,null);},async 'deleteTaskGroup'(_0x1d069d,_0x5abb96=![]){const _0x4a091c=_0x5abb96?'?deleteTasks=true':'',_0x36b2b1=await fetch(API_BASE+'/tasks/groups/'+_0x1d069d+_0x4a091c,{'method':'DELETE'});if(!_0x36b2b1['ok']){const _0x4d51fc=await _0x36b2b1['json']();throw new Error(_0x4d51fc['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x52206f,_0x51a790){const _0x3b9f6a=await fetch(API_BASE+'/tasks/groups/'+_0x52206f+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x51a790})});if(!_0x3b9f6a['ok']){const _0xda0aca=await _0x3b9f6a['json']();throw new Error(_0xda0aca['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3b9f6a['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54e2e5){if(!_0x54e2e5)throw new Error('Task\x20ID\x20is\x20required');const _0x489e9c=await fetch(API_BASE+'/tasks/'+_0x54e2e5+'/comments');if(!_0x489e9c['ok']){const _0x213b7f=await _0x489e9c['json']()['catch'](()=>({}));throw new Error(_0x213b7f['error']||'Failed\x20to\x20get\x20comments');}return await _0x489e9c['json']();},async 'addComment'(_0x43763d,_0x5e455e){if(!_0x43763d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5e455e)throw new Error('Comment\x20content\x20is\x20required');const _0xa65c27=await fetch(API_BASE+'/tasks/'+_0x43763d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5e455e})});if(!_0xa65c27['ok']){const _0x4c85ba=await _0xa65c27['json']()['catch'](()=>({}));throw new Error(_0x4c85ba['error']||'Failed\x20to\x20add\x20comment');}return await _0xa65c27['json']();},async 'updateComment'(_0x453e1,_0xd2577c,_0x28e867){if(!_0x453e1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2577c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x28e867)throw new Error('Comment\x20content\x20is\x20required');const _0x3d08a8=await fetch(API_BASE+'/tasks/'+_0x453e1+'/comments/'+_0xd2577c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x28e867})});if(!_0x3d08a8['ok']){const _0x58558f=await _0x3d08a8['json']()['catch'](()=>({}));throw new Error(_0x58558f['error']||'Failed\x20to\x20update\x20comment');}return await _0x3d08a8['json']();},async 'deleteComment'(_0x4df4ce,_0x1f84a4){if(!_0x4df4ce)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f84a4)throw new Error('Comment\x20ID\x20is\x20required');const _0x555a01=await fetch(API_BASE+'/tasks/'+_0x4df4ce+'/comments/'+_0x1f84a4,{'method':'DELETE'});if(!_0x555a01['ok']){const _0x501499=await _0x555a01['json']()['catch'](()=>({}));throw new Error(_0x501499['error']||'Failed\x20to\x20delete\x20comment');}return await _0x555a01['json']();},async 'createObjective'(_0x3ab068){const _0x189cd2={'objective':!![],'name':_0x3ab068['name']||'','environment':_0x3ab068['environment']||null,'agents':_0x3ab068['agents']||[],'branches':_0x3ab068['branches']||{},'isPinned':_0x3ab068['isPinned']||![],'parentObjectiveId':_0x3ab068['parentObjectiveId']||null,'env_vars':_0x3ab068['envVars']||{},'parameters':{'instructions':_0x3ab068['instructions']||''},'files':_0x3ab068['files']||[],'jira':_0x3ab068['jira']||null};return this['createTask'](_0x189cd2);},async 'updateObjective'(_0x4217d4,_0x8490dc,_0x4d92ca=[],_0x25f963=[]){let _0x52efc2,_0x2e4e03={};const _0x1fbb48={..._0x8490dc};_0x25f963&&_0x25f963['length']>0x0&&(_0x1fbb48['removeAttachments']=_0x25f963);if(_0x4d92ca&&_0x4d92ca['length']>0x0){const _0x3318ed=new FormData();for(const [_0xf5dc50,_0x40fa02]of Object['entries'](_0x1fbb48)){if(_0x40fa02==null)continue;typeof _0x40fa02==='object'?_0x3318ed['append'](_0xf5dc50,JSON['stringify'](_0x40fa02)):_0x3318ed['append'](_0xf5dc50,String(_0x40fa02));}for(const _0x5cfadb of _0x4d92ca){_0x3318ed['append']('attachments',_0x5cfadb);}_0x52efc2=_0x3318ed;}else _0x2e4e03['Content-Type']='application/json',_0x52efc2=JSON['stringify'](_0x1fbb48);const _0x7958d7=await fetch(API_BASE+'/tasks/'+_0x4217d4,{'method':'PATCH','headers':_0x2e4e03,'body':_0x52efc2});if(!_0x7958d7['ok']){const _0x382abe=await _0x7958d7['json']();throw new Error(_0x382abe['error']||'Failed\x20to\x20update\x20objective');}return await _0x7958d7['json']();},async 'deleteObjective'(_0x216d92){return this['deleteTask'](_0x216d92);},async 'launchObjective'(_0x1d6967,_0x26b458={}){const _0x309255=await fetch(API_BASE+'/tasks/'+_0x1d6967+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26b458)});if(!_0x309255['ok']){const _0x1e50c1=await _0x309255['json']();throw new Error(_0x1e50c1['error']||'Failed\x20to\x20launch\x20objective');}return await _0x309255['json']();},async 'getObjectiveAttachments'(_0x3adcbb){return this['getTaskAttachments'](_0x3adcbb);},async 'createJudgeTask'({environment:_0x108d0e,judgeAgent:_0x4fab18,groupId:_0x1f8019,taskIds:_0x4cf49c,judgeCustomInstructions:_0x538e39,isPinned:_0x46f9cc}){const _0x382ecd=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x108d0e,'judgeAgent':_0x4fab18,'groupId':_0x1f8019,'taskIds':_0x4cf49c,'judgeCustomInstructions':_0x538e39,'isPinned':_0x46f9cc})});if(!_0x382ecd['ok']){const _0x144ea0=await _0x382ecd['json']();throw new Error(_0x144ea0['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x382ecd['json']();},async 'getJudgeTasks'(_0x4a145d){const _0x132c89=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x4a145d));if(!_0x132c89['ok']){const _0x4ace71=await _0x132c89['json']();throw new Error(_0x4ace71['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x132c89['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2a226e,_0x564e0a,_0x4fef3=''){const _0x1f01a7=await fetch(API_BASE+'/tasks/'+_0x2a226e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x564e0a,'customPreamble':_0x4fef3})});if(!_0x1f01a7['ok']){const _0xa0c8cc=await _0x1f01a7['json']();throw new Error(_0xa0c8cc['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1f01a7['json']();},async 'getJiraConfig'(){const _0x4e285c=await fetch(API_BASE+'/jira/config');if(!_0x4e285c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4e285c['json']();},async 'getJiraIssue'(_0x3b493a){const _0x179e6f=await fetch(API_BASE+'/jira/issues/'+_0x3b493a);if(!_0x179e6f['ok']){const _0x3ff39e=await _0x179e6f['json']()['catch'](()=>({}));throw new Error(_0x3ff39e['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x179e6f['statusText']);}return await _0x179e6f['json']();},async 'searchJiraIssues'(_0x423248,_0x488052=0x14){const _0x25b4ea=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x423248,'maxResults':_0x488052})});if(!_0x25b4ea['ok']){const _0x314af8=await _0x25b4ea['json']()['catch'](()=>({}));throw new Error(_0x314af8['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x25b4ea['statusText']);}return await _0x25b4ea['json']();},async 'postJiraComment'(_0x29f2c9,_0x3bc22e){const _0x4764f0=await fetch(API_BASE+'/jira/issues/'+_0x29f2c9+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3bc22e})});if(!_0x4764f0['ok']){const _0x4c2757=await _0x4764f0['json']()['catch'](()=>({}));throw new Error(_0x4c2757['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4764f0['statusText']);}return await _0x4764f0['json']();},async 'getJiraComments'(_0x582392){const _0x1f9d51=await fetch(API_BASE+'/jira/issues/'+_0x582392+'/comments');if(!_0x1f9d51['ok']){const _0x590929=await _0x1f9d51['json']()['catch'](()=>({}));throw new Error(_0x590929['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f9d51['statusText']);}return await _0x1f9d51['json']();},async 'promptParameter'({environment:_0x3d8fa8,command:_0x2e7e4d,parser:parser='json'}){const _0x37f201=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d8fa8,'command':_0x2e7e4d,'parser':parser})});if(!_0x37f201['ok']){const _0x1624c6=await _0x37f201['json']()['catch'](()=>({}));throw new Error(_0x1624c6['message']||_0x1624c6['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x37f201['statusText']);}return await _0x37f201['json']();},async 'promptParameterStream'(_0xb1905b,_0x33b90){const _0x55e68f=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb1905b)});if(!_0x55e68f['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x55e68f['statusText']);const _0x2ff7be=_0x55e68f['body']['getReader'](),_0x80d65=new TextDecoder();let _0x1d4e49='';return new Promise((_0xb4f896,_0x18ca82)=>{const _0x49440d=async()=>{try{const {done:_0x3b0972,value:_0x253294}=await _0x2ff7be['read']();if(_0x3b0972)return;_0x1d4e49+=_0x80d65['decode'](_0x253294,{'stream':!![]});const _0x3b3b5d=_0x1d4e49['split']('\x0a\x0a');_0x1d4e49=_0x3b3b5d['pop']()||'';for(const _0x5dfdf7 of _0x3b3b5d){if(!_0x5dfdf7['trim']())continue;const _0x163635=_0x5dfdf7['split']('\x0a');let _0x1864af='message',_0x468787='';for(const _0x4141a2 of _0x163635){if(_0x4141a2['startsWith']('event:'))_0x1864af=_0x4141a2['substring'](0x6)['trim']();else _0x4141a2['startsWith']('data:')&&(_0x468787=_0x4141a2['substring'](0x5)['trim']());}if(!_0x468787)continue;try{const _0x35f6bf=JSON['parse'](_0x468787);if(_0x1864af==='progress'&&_0x33b90)_0x33b90(_0x35f6bf['stage'],_0x35f6bf['message']);else{if(_0x1864af==='result'){_0xb4f896(_0x35f6bf);return;}else{if(_0x1864af==='error'){let _0x1e9a4e=_0x35f6bf['message']||_0x35f6bf['error']||'Prompt\x20command\x20failed';_0x35f6bf['rawOutput']&&(_0x1e9a4e+='\x0a\x0aRaw\x20output:\x0a'+_0x35f6bf['rawOutput']);_0x18ca82(new Error(_0x1e9a4e));return;}}}}catch(_0x30fe07){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x30fe07),console['error']('Event\x20type:',_0x1864af),console['error']('Event\x20data:',_0x468787),console['error']('First\x20200\x20chars:',_0x468787['substring'](0x0,0xc8)),_0x18ca82(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x30fe07['message']+'\x0a\x0aData:\x20'+_0x468787['substring'](0x0,0x1f4)));return;}}_0x49440d();}catch(_0x22827b){_0x18ca82(_0x22827b);}};_0x49440d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5bd063){const _0x236f97=await fetch(''+API_BASE+_0x5bd063);if(!_0x236f97['ok']){const _0x5b0c48=await _0x236f97['json']()['catch'](()=>({'error':_0x236f97['statusText']})),_0x1a7f71=new Error(_0x5b0c48['error']||_0x5b0c48['message']||_0x236f97['statusText']);if(_0x5b0c48['detail']!==undefined)_0x1a7f71['detail']=_0x5b0c48['detail'];throw _0x1a7f71;}return await _0x236f97['json']();},async 'post'(_0x1db669,_0x3430d2){const _0x2ada6d=await fetch(''+API_BASE+_0x1db669,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3430d2)});if(!_0x2ada6d['ok']){const _0x3ed745=await _0x2ada6d['json']()['catch'](()=>({'error':_0x2ada6d['statusText']})),_0x474272=new Error(_0x3ed745['error']||_0x3ed745['message']||_0x2ada6d['statusText']);if(_0x3ed745['detail']!==undefined)_0x474272['detail']=_0x3ed745['detail'];throw _0x474272;}return await _0x2ada6d['json']();},async 'put'(_0x49d644,_0x255baf){const _0x55a275=await fetch(''+API_BASE+_0x49d644,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x255baf)});if(!_0x55a275['ok']){const _0x4e5f57=await _0x55a275['json']()['catch'](()=>({'error':_0x55a275['statusText']})),_0x185994=new Error(_0x4e5f57['error']||_0x4e5f57['message']||_0x55a275['statusText']);if(_0x4e5f57['detail']!==undefined)_0x185994['detail']=_0x4e5f57['detail'];throw _0x185994;}return await _0x55a275['json']();},async 'delete'(_0x44980e,_0x37975d){const _0x505dcd={'method':'DELETE'};_0x37975d&&(_0x505dcd['headers']={'Content-Type':'application/json'},_0x505dcd['body']=JSON['stringify'](_0x37975d));const _0x3e999f=await fetch(''+API_BASE+_0x44980e,_0x505dcd);if(!_0x3e999f['ok']){const _0x608dbc=await _0x3e999f['json']()['catch'](()=>({'error':_0x3e999f['statusText']})),_0x22a1c3=new Error(_0x608dbc['error']||_0x608dbc['message']||_0x3e999f['statusText']);if(_0x608dbc['detail']!==undefined)_0x22a1c3['detail']=_0x608dbc['detail'];throw _0x22a1c3;}return await _0x3e999f['json']();},async 'getSkills'(){const _0x505399=await fetch(API_BASE+'/skills');if(!_0x505399['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x505399['statusText']);return await _0x505399['json']();},async 'getSkill'(_0x12951d){const _0x1867f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12951d));if(!_0x1867f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1867f4['statusText']);return await _0x1867f4['json']();},async 'createSkill'(_0x234c80){const _0x5883a5=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x234c80)});if(!_0x5883a5['ok']){const _0x38a232=await _0x5883a5['json']()['catch'](()=>({'error':_0x5883a5['statusText']})),_0x99c5be=new Error(_0x38a232['error']||_0x38a232['message']||_0x5883a5['statusText']);if(_0x38a232['detail']!==undefined)_0x99c5be['detail']=_0x38a232['detail'];throw _0x99c5be;}return await _0x5883a5['json']();},async 'updateSkill'(_0x3da565,_0xc2876d){const _0x2525f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3da565),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc2876d)});if(!_0x2525f0['ok']){const _0x425fce=await _0x2525f0['json']()['catch'](()=>({'error':_0x2525f0['statusText']})),_0x42252d=new Error(_0x425fce['error']||_0x425fce['message']||_0x2525f0['statusText']);if(_0x425fce['detail']!==undefined)_0x42252d['detail']=_0x425fce['detail'];throw _0x42252d;}return await _0x2525f0['json']();},async 'deleteSkill'(_0x27f2ab){const _0x15820e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27f2ab),{'method':'DELETE'});if(!_0x15820e['ok']){const _0x4c3237=await _0x15820e['json']()['catch'](()=>({'error':_0x15820e['statusText']})),_0x166acb=new Error(_0x4c3237['error']||_0x4c3237['message']||_0x15820e['statusText']);if(_0x4c3237['detail']!==undefined)_0x166acb['detail']=_0x4c3237['detail'];throw _0x166acb;}return await _0x15820e['json']();},async 'getSkillFile'(_0x3ebcc0,_0x250ca5){const _0x297d54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3ebcc0)+'/files/'+_0x250ca5);if(!_0x297d54['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x297d54['statusText']);return await _0x297d54['json']();},async 'saveSkillFile'(_0x176708,_0x1110ad,_0x3180b2){const _0x4778b3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x176708)+'/files/'+_0x1110ad,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3180b2})});if(!_0x4778b3['ok']){const _0x29f5a2=await _0x4778b3['json']()['catch'](()=>({'error':_0x4778b3['statusText']})),_0x591fd9=new Error(_0x29f5a2['error']||_0x29f5a2['message']||_0x4778b3['statusText']);if(_0x29f5a2['detail']!==undefined)_0x591fd9['detail']=_0x29f5a2['detail'];throw _0x591fd9;}return await _0x4778b3['json']();},async 'deleteSkillFile'(_0x329790,_0x20c81d){const _0x444a16=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x329790)+'/files/'+_0x20c81d,{'method':'DELETE'});if(!_0x444a16['ok']){const _0x7187a4=await _0x444a16['json']()['catch'](()=>({'error':_0x444a16['statusText']})),_0x18cd8d=new Error(_0x7187a4['error']||_0x7187a4['message']||_0x444a16['statusText']);if(_0x7187a4['detail']!==undefined)_0x18cd8d['detail']=_0x7187a4['detail'];throw _0x18cd8d;}return await _0x444a16['json']();},async 'pullSkills'(){const _0x1a0bcb=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x1a0bcb['ok']){const _0x6dccd9=await _0x1a0bcb['json']()['catch'](()=>({'error':_0x1a0bcb['statusText']})),_0x5cd070=new Error(_0x6dccd9['error']||_0x6dccd9['message']||_0x1a0bcb['statusText']);if(_0x6dccd9['detail']!==undefined)_0x5cd070['detail']=_0x6dccd9['detail'];throw _0x5cd070;}return await _0x1a0bcb['json']();},async 'commitSkills'(_0x5ebf17,_0x36226d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x36226d,_0xcd2eed=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5ebf17,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0xcd2eed['ok']){const _0x5d2aa2=await _0xcd2eed['json']()['catch'](()=>({'error':_0xcd2eed['statusText']})),_0x488c80=new Error(_0x5d2aa2['error']||_0x5d2aa2['message']||_0xcd2eed['statusText']);if(_0x5d2aa2['detail']!==undefined)_0x488c80['detail']=_0x5d2aa2['detail'];throw _0x488c80;}return await _0xcd2eed['json']();},async 'discardSkillsChanges'(){const _0x450e55=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x450e55['ok']){const _0x42c100=await _0x450e55['json']()['catch'](()=>({'error':_0x450e55['statusText']})),_0x3dec0b=new Error(_0x42c100['error']||_0x42c100['message']||_0x450e55['statusText']);if(_0x42c100['detail']!==undefined)_0x3dec0b['detail']=_0x42c100['detail'];throw _0x3dec0b;}return await _0x450e55['json']();},async 'getSkillCatalog'(){const _0x76844c=await fetch(API_BASE+'/external-skills/catalog');if(!_0x76844c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x76844c['statusText']);return await _0x76844c['json']();},async 'getImportedSkillsRegistry'(){const _0x3bb006=await fetch(API_BASE+'/external-skills/registry');if(!_0x3bb006['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3bb006['statusText']);return await _0x3bb006['json']();},async 'importCatalogSkill'(_0x375190){const _0x60d5bb=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x375190})});if(!_0x60d5bb['ok']){const _0x1abd76=await _0x60d5bb['json']()['catch'](()=>({'error':_0x60d5bb['statusText']})),_0x1b0419=new Error(_0x1abd76['error']||_0x1abd76['message']||_0x60d5bb['statusText']);if(_0x1abd76['detail']!==undefined)_0x1b0419['detail']=_0x1abd76['detail'];throw _0x1b0419;}return await _0x60d5bb['json']();},async 'importSkillFromGit'(_0x190a8a,_0x2919bf,_0x2af31f='main',_0x2da099=null){const _0x2b7792=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x190a8a,'skillPath':_0x2919bf,'branch':_0x2af31f,'skillId':_0x2da099})});if(!_0x2b7792['ok']){const _0x3bae0e=await _0x2b7792['json']()['catch'](()=>({'error':_0x2b7792['statusText']})),_0xaf6a98=new Error(_0x3bae0e['error']||_0x3bae0e['message']||_0x2b7792['statusText']);if(_0x3bae0e['detail']!==undefined)_0xaf6a98['detail']=_0x3bae0e['detail'];throw _0xaf6a98;}return await _0x2b7792['json']();},async 'probeMarketplace'(_0x28beeb,_0x59d750='main'){const _0x2288f7=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x28beeb,'branch':_0x59d750})});if(!_0x2288f7['ok']){const _0x44dce4=await _0x2288f7['json']()['catch'](()=>({'error':_0x2288f7['statusText']})),_0x27985c=new Error(_0x44dce4['error']||_0x44dce4['message']||_0x2288f7['statusText']);if(_0x44dce4['detail']!==undefined)_0x27985c['detail']=_0x44dce4['detail'];throw _0x27985c;}return await _0x2288f7['json']();},async 'importMarketplaceBundle'(_0x1b5fd5,_0x4f25b0,_0x46f256,_0x2da15b=null){const _0x524adb=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b5fd5,'branch':_0x4f25b0,'bundleId':_0x46f256,'selectedSkills':_0x2da15b})});if(!_0x524adb['ok']){const _0x163439=await _0x524adb['json']()['catch'](()=>({'error':_0x524adb['statusText']})),_0x494461=new Error(_0x163439['error']||_0x163439['message']||_0x524adb['statusText']);if(_0x163439['detail']!==undefined)_0x494461['detail']=_0x163439['detail'];throw _0x494461;}return await _0x524adb['json']();},async 'importSkillFromFolder'(_0x5c5901,_0x189550=null){const _0x1a2dc0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x5c5901,'skillId':_0x189550})});if(!_0x1a2dc0['ok']){const _0x562189=await _0x1a2dc0['json']()['catch'](()=>({'error':_0x1a2dc0['statusText']})),_0x36f4c8=new Error(_0x562189['error']||_0x562189['message']||_0x1a2dc0['statusText']);if(_0x562189['detail']!==undefined)_0x36f4c8['detail']=_0x562189['detail'];throw _0x36f4c8;}return await _0x1a2dc0['json']();},async 'importSkillFromNpm'(_0x407ef4,_0x167ecf='latest',_0x970b32=null,_0x25246c=null){const _0x268e70=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x407ef4,'version':_0x167ecf,'skillId':_0x970b32,'registry':_0x25246c})});if(!_0x268e70['ok']){const _0x295c8b=await _0x268e70['json']()['catch'](()=>({'error':_0x268e70['statusText']})),_0x127512=new Error(_0x295c8b['error']||_0x295c8b['message']||_0x268e70['statusText']);if(_0x295c8b['detail']!==undefined)_0x127512['detail']=_0x295c8b['detail'];throw _0x127512;}return await _0x268e70['json']();},async 'checkSkillUpdates'(_0x21cca5){const _0x36ec29=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x21cca5)+'/check-updates',{'method':'POST'});if(!_0x36ec29['ok']){const _0x35e5f2=await _0x36ec29['json']()['catch'](()=>({'error':_0x36ec29['statusText']})),_0x16a007=new Error(_0x35e5f2['error']||_0x35e5f2['message']||_0x36ec29['statusText']);if(_0x35e5f2['detail']!==undefined)_0x16a007['detail']=_0x35e5f2['detail'];throw _0x16a007;}return await _0x36ec29['json']();},async 'updateExternalSkill'(_0x40d700){const _0x3663e7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40d700)+'/update',{'method':'POST'});if(!_0x3663e7['ok']){const _0x2832d6=await _0x3663e7['json']()['catch'](()=>({'error':_0x3663e7['statusText']})),_0x4eeb36=new Error(_0x2832d6['error']||_0x2832d6['message']||_0x3663e7['statusText']);if(_0x2832d6['detail']!==undefined)_0x4eeb36['detail']=_0x2832d6['detail'];throw _0x4eeb36;}return await _0x3663e7['json']();},async 'updateSkillFlags'(_0x4f99fd,_0x291450){const _0x4e57f6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4f99fd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x291450})});if(!_0x4e57f6['ok']){const _0x5efcd0=await _0x4e57f6['json']()['catch'](()=>({'error':_0x4e57f6['statusText']})),_0x4ef618=new Error(_0x5efcd0['error']||_0x5efcd0['message']||_0x4e57f6['statusText']);if(_0x5efcd0['detail']!==undefined)_0x4ef618['detail']=_0x5efcd0['detail'];throw _0x4ef618;}return await _0x4e57f6['json']();},async 'removeFromImportedRegistry'(_0x1fe7fe){const _0x56d589=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1fe7fe)+'/registry',{'method':'DELETE'});if(!_0x56d589['ok']){const _0x291681=await _0x56d589['json']()['catch'](()=>({'error':_0x56d589['statusText']})),_0x43aaaa=new Error(_0x291681['error']||_0x291681['message']||_0x56d589['statusText']);if(_0x291681['detail']!==undefined)_0x43aaaa['detail']=_0x291681['detail'];throw _0x43aaaa;}return await _0x56d589['json']();},async 'getTeams'(){const _0x4fae50=await fetch(API_BASE+'/teams');if(!_0x4fae50['ok']){const _0x4c9fe9=await _0x4fae50['json']()['catch'](()=>({'message':_0x4fae50['statusText']}));throw new Error(_0x4c9fe9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4fae50['json']();},async 'getTeam'(_0x165b38){const _0x3bfde3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x165b38));if(!_0x3bfde3['ok']){const _0x2ab6d3=await _0x3bfde3['json']()['catch'](()=>({'message':_0x3bfde3['statusText']}));throw new Error(_0x2ab6d3['message']||'Failed\x20to\x20get\x20team');}return await _0x3bfde3['json']();},async 'createTeam'(_0x4dfac6){const _0xa9485a=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dfac6)});if(!_0xa9485a['ok']){const _0x502eeb=await _0xa9485a['json']()['catch'](()=>({'message':_0xa9485a['statusText']}));throw new Error(_0x502eeb['message']||'Failed\x20to\x20create\x20team');}return await _0xa9485a['json']();},async 'updateTeam'(_0x31c89b,_0x39ba42){const _0x94a367=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31c89b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39ba42)});if(!_0x94a367['ok']){const _0xc7232a=await _0x94a367['json']()['catch'](()=>({'message':_0x94a367['statusText']}));throw new Error(_0xc7232a['message']||'Failed\x20to\x20update\x20team');}return await _0x94a367['json']();},async 'deleteTeam'(_0x279e4e){const _0x8664c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x279e4e),{'method':'DELETE'});if(!_0x8664c['ok']){const _0x1de73=await _0x8664c['json']()['catch'](()=>({'message':_0x8664c['statusText']}));throw new Error(_0x1de73['message']||'Failed\x20to\x20delete\x20team');}return await _0x8664c['json']();},async 'addTeamMember'(_0x1c3242,_0x69851c){const _0x7c2563=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c3242)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x69851c})});if(!_0x7c2563['ok']){const _0x3a7c1b=await _0x7c2563['json']()['catch'](()=>({'message':_0x7c2563['statusText']}));throw new Error(_0x3a7c1b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x7c2563['json']();},async 'removeTeamMember'(_0xe83c61,_0x16dbe0){const _0xd465d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xe83c61)+'/members/'+encodeURIComponent(_0x16dbe0),{'method':'DELETE'});if(!_0xd465d1['ok']){const _0x3a3e9b=await _0xd465d1['json']()['catch'](()=>({'message':_0xd465d1['statusText']}));throw new Error(_0x3a3e9b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xd465d1['json']();},async 'getBindings'(_0x2444b9={}){const _0x248343=new URLSearchParams();if(_0x2444b9['resource_type'])_0x248343['set']('resource_type',_0x2444b9['resource_type']);if(_0x2444b9['resource_id'])_0x248343['set']('resource_id',_0x2444b9['resource_id']);if(_0x2444b9['subject_type'])_0x248343['set']('subject_type',_0x2444b9['subject_type']);if(_0x2444b9['subject_id'])_0x248343['set']('subject_id',_0x2444b9['subject_id']);const _0x137101=_0x248343['toString'](),_0x50833a=await fetch(API_BASE+'/bindings'+(_0x137101?'?'+_0x137101:''));if(!_0x50833a['ok']){const _0xb58eed=await _0x50833a['json']()['catch'](()=>({'message':_0x50833a['statusText']}));throw new Error(_0xb58eed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x50833a['json']();},async 'createBinding'(_0x2f6d0b){const _0x40fb18=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f6d0b)});if(!_0x40fb18['ok']){const _0x509928=await _0x40fb18['json']()['catch'](()=>({'message':_0x40fb18['statusText']}));throw new Error(_0x509928['message']||'Failed\x20to\x20create\x20binding');}return await _0x40fb18['json']();},async 'updateBinding'(_0xa4cde9,_0x49ad57){const _0x418974=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xa4cde9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x49ad57)});if(!_0x418974['ok']){const _0x5a9b67=await _0x418974['json']()['catch'](()=>({'message':_0x418974['statusText']}));throw new Error(_0x5a9b67['message']||'Failed\x20to\x20update\x20binding');}return await _0x418974['json']();},async 'deleteBinding'(_0x4ffd6d){const _0x23fb4c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4ffd6d),{'method':'DELETE'});if(!_0x23fb4c['ok']){const _0x824f=await _0x23fb4c['json']()['catch'](()=>({'message':_0x23fb4c['statusText']}));throw new Error(_0x824f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x23fb4c['json']();},async 'getRoleDefinitions'(){const _0x5a34d0=await fetch(API_BASE+'/roles');if(!_0x5a34d0['ok']){const _0x5c249c=await _0x5a34d0['json']()['catch'](()=>({'message':_0x5a34d0['statusText']}));throw new Error(_0x5c249c['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x5a34d0['json']();},async 'getRoleDefinition'(_0x31aca3){const _0x5d14ed=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31aca3));if(!_0x5d14ed['ok']){const _0x168362=await _0x5d14ed['json']()['catch'](()=>({'message':_0x5d14ed['statusText']}));throw new Error(_0x168362['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5d14ed['json']();},async 'createRoleDefinition'(_0x22f5dd){const _0x2ee1a0=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22f5dd)});if(!_0x2ee1a0['ok']){const _0x2249ed=await _0x2ee1a0['json']()['catch'](()=>({'message':_0x2ee1a0['statusText']}));throw new Error(_0x2249ed['message']||_0x2249ed['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2ee1a0['json']();},async 'updateRoleDefinition'(_0x5adb76,_0x3459ae){const _0x10fb16=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5adb76),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3459ae)});if(!_0x10fb16['ok']){const _0x58f317=await _0x10fb16['json']()['catch'](()=>({'message':_0x10fb16['statusText']}));throw new Error(_0x58f317['message']||_0x58f317['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x10fb16['json']();},async 'deleteRoleDefinition'(_0x115874){const _0x3d6bbd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x115874),{'method':'DELETE'});if(!_0x3d6bbd['ok']){const _0x4c3190=await _0x3d6bbd['json']()['catch'](()=>({'message':_0x3d6bbd['statusText']}));throw new Error(_0x4c3190['message']||_0x4c3190['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x3d6bbd['json']();},async 'getAvailablePermissions'(){const _0xdbf1d6=await fetch(API_BASE+'/roles/available-permissions');if(!_0xdbf1d6['ok']){const _0x2eebd1=await _0xdbf1d6['json']()['catch'](()=>({'message':_0xdbf1d6['statusText']}));throw new Error(_0x2eebd1['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xdbf1d6['json']();},async 'getGitProviderAllowedTeams'(_0x4e5abd){const _0x3f2dca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4e5abd)+'/allowed-teams');if(!_0x3f2dca['ok']){const _0x562ad9=await _0x3f2dca['json']()['catch'](()=>({'message':_0x3f2dca['statusText']}));throw new Error(_0x562ad9['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3f2dca['json']();},async 'setGitProviderAllowedTeams'(_0x58dc34,_0x30f03a){const _0x200e64=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x58dc34)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x30f03a})});if(!_0x200e64['ok']){const _0x507d32=await _0x200e64['json']()['catch'](()=>({'message':_0x200e64['statusText']}));throw new Error(_0x507d32['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x200e64['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 _0x3307c0=toastState['baseBottom'];toastState['toasts']['forEach'](_0x447151=>{_0x447151['el']['style']['bottom']=_0x3307c0+'px';const _0x32d995=_0x447151['el']['offsetHeight']||toastState['defaultHeight'];_0x3307c0+=_0x32d995+toastState['gap'];});});}function removeToastById(_0x5f3048){const _0x55eeaf=toastState['toasts']['findIndex'](_0x1862c8=>_0x1862c8['id']===_0x5f3048);if(_0x55eeaf===-0x1)return;const _0x5c415f=toastState['toasts'][_0x55eeaf];if(_0x5c415f['timeoutId'])clearTimeout(_0x5c415f['timeoutId']);_0x5c415f['el']['classList']['remove']('show'),setTimeout(()=>_0x5c415f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x55eeaf,0x1),repositionAllToasts();}function registerToast(_0x40fc0c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x40fc0c),repositionAllToasts(),_0x40fc0c['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(_0x20a126){if(_0x20a126===null||_0x20a126===undefined)return'';return String(_0x20a126)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x536407,_0x3b7480){if(_0x536407&&typeof _0x536407==='object'&&!Array['isArray'](_0x536407))return{'code':typeof _0x536407['text']==='string'?_0x536407['text']:'','language':typeof _0x536407['lang']==='string'?_0x536407['lang']:''};return{'code':typeof _0x536407==='string'?_0x536407:'','language':typeof _0x3b7480==='string'?_0x3b7480:''};}function buildMermaidBlock(_0x4ea6bf){const _0x4e0b0f=String(_0x4ea6bf||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4e0b0f))+'\x22>'+escapeHtmlValue(_0x4e0b0f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x182b1e=new marked['Renderer'](),_0x4f295f=_0x182b1e['code']['bind'](_0x182b1e);return _0x182b1e['code']=function(_0x1b0c14,_0x1a202d,..._0x406a22){const {code:_0x3e0ac1,language:_0x52938a}=getMarkdownCodeBlockPayload(_0x1b0c14,_0x1a202d),_0x1e9bc9=String(_0x52938a||'')['trim']()['toLowerCase']();if(_0x1e9bc9==='mermaid')return buildMermaidBlock(_0x3e0ac1);const _0x4c71a3=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4c71a3&&_0x1e9bc9)try{const _0x5c5f55=_0x4c71a3['getLanguage'](_0x1e9bc9)?_0x1e9bc9:'plaintext',_0x2dd074=_0x4c71a3['highlight'](_0x3e0ac1,{'language':_0x5c5f55})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1e9bc9)+'\x22>'+_0x2dd074+'</code></pre>';}catch(_0x39e55b){console['error']('Syntax\x20highlighting\x20error:',_0x39e55b);}return _0x4f295f(_0x1b0c14,_0x1a202d,..._0x406a22);},sharedMarkedRenderer=_0x182b1e,_0x182b1e;}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 _0x1f3ef9=window['mermaid'];if(!_0x1f3ef9||typeof _0x1f3ef9['initialize']!=='function')return _0x1f3ef9||null;return _0x1f3ef9['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f3ef9;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2d381d,_0x54e82e)=>{const _0x4df2d5=()=>_0x2d381d(configureMermaidInstance()),_0x1a2824=()=>{mermaidLoadPromise=null,_0x54e82e(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xe2ba29=document['getElementById'](MERMAID_SCRIPT_ID);!_0xe2ba29&&(_0xe2ba29=document['createElement']('script'),_0xe2ba29['id']=MERMAID_SCRIPT_ID,_0xe2ba29['src']=MERMAID_SCRIPT_SRC,_0xe2ba29['async']=!![],document['head']['appendChild'](_0xe2ba29));if(window['mermaid']){_0x4df2d5();return;}_0xe2ba29['addEventListener']('load',_0x4df2d5,{'once':!![]}),_0xe2ba29['addEventListener']('error',_0x1a2824,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x14f82d){const _0x2cd517=_0x14f82d['getAttribute']('data-mermaid-source');if(!_0x2cd517)return null;let _0x5953dd=_0x2cd517;try{_0x5953dd=decodeURIComponent(_0x2cd517);}catch{}return _0x14f82d['textContent']=_0x5953dd,_0x14f82d['removeAttribute']('data-processed'),_0x14f82d['removeAttribute']('aria-roledescription'),_0x14f82d['removeAttribute']('role'),_0x14f82d['removeAttribute']('aria-label'),_0x5953dd;}function collectMermaidNodes(_0x3afd22,_0x506205){if(!(_0x3afd22 instanceof Element))return;_0x3afd22['matches']('.mermaid[data-mermaid-source]')&&_0x506205['add'](_0x3afd22),_0x3afd22['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a8011=>{_0x506205['add'](_0x3a8011);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x14119c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x198554=>setTimeout(_0x198554,0x0);_0x14119c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x37431b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x37431b);});});}function queueMermaidRender(_0x37465d){const _0x4ad636=new Set();_0x37465d instanceof Document||_0x37465d instanceof DocumentFragment?_0x37465d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x480212=>_0x4ad636['add'](_0x480212)):collectMermaidNodes(_0x37465d,_0x4ad636);if(_0x4ad636['size']===0x0)return;_0x4ad636['forEach'](_0x3b1c99=>pendingMermaidNodes['add'](_0x3b1c99)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xa53688=Array['from'](pendingMermaidNodes)['filter'](_0x255e4a=>_0x255e4a['isConnected']);pendingMermaidNodes['clear']();if(_0xa53688['length']===0x0)return;const _0x1e53e3=await loadMermaid();if(!_0x1e53e3)return;configureMermaidInstance();const _0x4d426c=getMermaidTheme();for(const _0x59ef9e of _0xa53688){const _0x231787=_0x59ef9e['getAttribute']('data-mermaid-source');if(!_0x231787)continue;const _0x572088=_0x59ef9e['getAttribute']('data-processed')==='true';if(_0x572088&&_0x59ef9e['dataset']['mermaidTheme']===_0x4d426c)continue;restoreMermaidSource(_0x59ef9e);try{if(typeof _0x1e53e3['run']==='function')await _0x1e53e3['run']({'nodes':[_0x59ef9e]});else typeof _0x1e53e3['init']==='function'&&_0x1e53e3['init'](undefined,[_0x59ef9e]);_0x59ef9e['dataset']['mermaidTheme']=_0x4d426c,delete _0x59ef9e['dataset']['mermaidError'];}catch(_0x3a7485){console['error']('Mermaid\x20render\x20failed:',_0x3a7485),restoreMermaidSource(_0x59ef9e),_0x59ef9e['dataset']['mermaidError']='true',delete _0x59ef9e['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x97308=>{_0x97308['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x97308);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b3ca0=>{_0x5b3ca0['forEach'](_0x458441=>{_0x458441['addedNodes']['forEach'](_0x5b0c92=>{_0x5b0c92['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5b0c92);});});}),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'(_0x138b82){const _0x8cedfc=new Date(_0x138b82),_0xd82a86=new Date(),_0x45bdbe=_0xd82a86-_0x8cedfc,_0x5e0d77=Math['floor'](_0x45bdbe/0x3e8),_0xd03d54=Math['floor'](_0x5e0d77/0x3c),_0xb7fdf8=Math['floor'](_0xd03d54/0x3c),_0x36a856=Math['floor'](_0xb7fdf8/0x18);if(_0x5e0d77<0x3c)return'now';if(_0xd03d54<0x3c)return _0xd03d54+'m\x20ago';if(_0xb7fdf8<0x18)return _0xb7fdf8+'h\x20ago';return _0x36a856+'d\x20ago';},'getStatusIcon'(_0x4a8f51){switch(_0x4a8f51){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x38da31){switch(_0x38da31){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'(_0x210d73,_0x3b6f2c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x44c29b={};_0x44c29b['text/plain']=new Blob([_0x210d73],{'type':'text/plain'});_0x3b6f2c&&(_0x44c29b['text/html']=new Blob([_0x3b6f2c],{'type':'text/html'}));const _0xd30f31=new ClipboardItem(_0x44c29b);return await navigator['clipboard']['write']([_0xd30f31]),!![];}catch(_0x174390){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x174390);}try{const _0x1696af=_0x2d973a=>{_0x2d973a['preventDefault'](),_0x2d973a['clipboardData']['setData']('text/plain',_0x210d73),_0x3b6f2c&&_0x2d973a['clipboardData']['setData']('text/html',_0x3b6f2c);};document['addEventListener']('copy',_0x1696af);const _0x50be4b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1696af);if(_0x50be4b)return!![];}catch(_0x175005){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x175005);}try{const _0x4dc4d1=document['createElement']('textarea');_0x4dc4d1['value']=_0x210d73,_0x4dc4d1['style']['position']='fixed',_0x4dc4d1['style']['opacity']='0',_0x4dc4d1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4dc4d1),_0x4dc4d1['select']();const _0x32a5ff=document['execCommand']('copy');return document['body']['removeChild'](_0x4dc4d1),_0x32a5ff;}catch(_0x55c1dd){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x55c1dd),![];}},'showToast'(_0x5a113e,_0x4068d3='info'){const _0x1d88a7=getNextToastId(),_0xed22c3=document['createElement']('div');_0xed22c3['className']='toast\x20toast-'+_0x4068d3,_0xed22c3['textContent']=_0x5a113e,_0xed22c3['dataset']['toastId']=_0x1d88a7,document['body']['appendChild'](_0xed22c3);const _0x28259c=_0x4068d3==='error'?0x2710:0xbb8,_0xda34c2=setTimeout(()=>{removeToastById(_0x1d88a7);},_0x28259c),_0x46e9b1={'id':_0x1d88a7,'el':_0xed22c3,'timeoutId':_0xda34c2};return registerToast(_0x46e9b1),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xed22c3['classList']['add']('show');});}),_0x1d88a7;},'showError'(_0x59eb54){console['error'](_0x59eb54);const _0x1d2d34=typeof _0x59eb54==='string'?_0x59eb54:_0x59eb54['message']||'An\x20error\x20occurred';this['showToast'](_0x1d2d34,'error');},'showSuccess'(_0x5f1f4d){this['showToast'](_0x5f1f4d,'success');},'capitalize'(_0xaec8f1){if(!_0xaec8f1)return'';return _0xaec8f1['charAt'](0x0)['toUpperCase']()+_0xaec8f1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54b85a){return escapeHtmlValue(_0x54b85a);},'ansiToHtml'(_0x35848e){if(_0x35848e===null||_0x35848e===undefined)return'';let _0x498c61=this['escapeHtml'](_0x35848e);const _0x44606b={'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'},_0x2c3299={'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 _0x5073a3=0x0;return _0x498c61=_0x498c61['replace'](/\x1b\[([0-9;]*)m/g,(_0x306611,_0x4734dc)=>{if(!_0x4734dc||_0x4734dc==='0'){const _0x32e20b='</span>'['repeat'](_0x5073a3);return _0x5073a3=0x0,_0x32e20b;}const _0x1af24e=_0x4734dc['split'](';'),_0x564c72=[];for(const _0x4ccb29 of _0x1af24e){if(_0x4ccb29==='1')_0x564c72['push']('font-weight:bold');else{if(_0x4ccb29==='2')_0x564c72['push']('opacity:0.7');else{if(_0x4ccb29==='3')_0x564c72['push']('font-style:italic');else{if(_0x4ccb29==='4')_0x564c72['push']('text-decoration:underline');else{if(_0x4ccb29==='9')_0x564c72['push']('text-decoration:line-through');else{if(_0x44606b[_0x4ccb29])_0x564c72['push']('color:'+_0x44606b[_0x4ccb29]);else{if(_0x2c3299[_0x4ccb29])_0x564c72['push']('background-color:'+_0x2c3299[_0x4ccb29]);}}}}}}}if(_0x564c72['length']>0x0)return _0x5073a3++,'<span\x20style=\x22'+_0x564c72['join'](';')+'\x22>';return'';}),_0x498c61+='</span>'['repeat'](_0x5073a3),_0x498c61=_0x498c61['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4177f9,_0x1d98f0)=>{if(!_0x1d98f0||_0x1d98f0==='0')return'';const _0x2d0512=_0x1d98f0['split'](';'),_0x491be5=[];for(const _0x5c6810 of _0x2d0512){if(_0x5c6810==='1')_0x491be5['push']('font-weight:bold');else{if(_0x44606b[_0x5c6810])_0x491be5['push']('color:'+_0x44606b[_0x5c6810]);else{if(_0x2c3299[_0x5c6810])_0x491be5['push']('background-color:'+_0x2c3299[_0x5c6810]);}}}if(_0x491be5['length']>0x0)return'<span\x20style=\x22'+_0x491be5['join'](';')+'\x22>';return'';}),_0x498c61;},'showModal'({title:_0x507932,content:_0x200215,buttons:buttons=[]}){const _0x30450d='\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'](_0x507932)+'</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'+_0x200215+'\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']((_0x527b08,_0xb35d2c)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x527b08['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xb35d2c+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x527b08['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',_0x4bfeb5=document['createElement']('div');_0x4bfeb5['id']='utils-modal',_0x4bfeb5['className']='modal',_0x4bfeb5['innerHTML']=_0x30450d,document['body']['appendChild'](_0x4bfeb5);const _0x1e4974=document['getElementById']('utils-modal-close');_0x1e4974&&_0x1e4974['addEventListener']('click',()=>this['hideModal']());const _0x55c083=_0x4bfeb5['querySelectorAll']('[data-btn-index]');_0x55c083['forEach'](_0x3be19d=>{const _0x1975fd=parseInt(_0x3be19d['dataset']['btnIndex']);buttons[_0x1975fd]?.['onClick']&&_0x3be19d['addEventListener']('click',buttons[_0x1975fd]['onClick']);});const _0xf53d2f=document['getElementById']('utils-modal-overlay');_0xf53d2f&&_0xf53d2f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29466a=document['getElementById']('utils-modal');_0x29466a&&_0x29466a['remove']();},'parseKeyValuePairs'(_0x417782){const _0x246833={};if(!_0x417782)return _0x246833;return _0x417782['split'](/\r?\n/)['map'](_0x2eaa35=>_0x2eaa35['trim']())['filter'](Boolean)['forEach'](_0x509555=>{const _0x23f9d2=_0x509555['indexOf']('=');if(_0x23f9d2>0x0){const _0xead946=_0x509555['slice'](0x0,_0x23f9d2)['trim'](),_0x23f0f2=_0x509555['slice'](_0x23f9d2+0x1)['trim']();if(_0xead946)_0x246833[_0xead946]=_0x23f0f2;}}),_0x246833;},'debounce'(_0x473757,_0x3e745b=0xfa){let _0x2c3dfd=null;return(..._0x4bbb51)=>{clearTimeout(_0x2c3dfd),_0x2c3dfd=setTimeout(()=>_0x473757['apply'](this,_0x4bbb51),_0x3e745b);};},'formatTimestamp'(_0x8ebf7c){if(!_0x8ebf7c)return'N/A';const _0x1e6262=new Date(_0x8ebf7c);return _0x1e6262['toLocaleDateString']()+'\x20'+_0x1e6262['toLocaleTimeString']();},'getQueryParams'(){const _0x5a5d75=new URLSearchParams(window['location']['search']),_0x509acc={};for(const [_0x27f3fe,_0x3368f4]of _0x5a5d75){_0x509acc[_0x27f3fe]=_0x3368f4;}return _0x509acc;},'formatDuration'(_0x191dce,_0x5ddd74){if(!_0x191dce)return'N/A';const _0x97e268=new Date(_0x191dce),_0x1639d3=_0x5ddd74?new Date(_0x5ddd74):new Date(),_0x481ff6=_0x1639d3-_0x97e268;if(_0x481ff6<0x0)return'0s';const _0x4fdbc9=Math['floor'](_0x481ff6/0x3e8),_0x56a6aa=Math['floor'](_0x4fdbc9/0x3c),_0x3ec545=Math['floor'](_0x56a6aa/0x3c),_0x7042f3=Math['floor'](_0x3ec545/0x18);if(_0x4fdbc9<0x3c)return _0x4fdbc9+'s';if(_0x56a6aa<0x3c)return _0x56a6aa+'m\x20'+_0x4fdbc9%0x3c+'s';if(_0x3ec545<0x18)return _0x3ec545+'h\x20'+_0x56a6aa%0x3c+'m\x20'+_0x4fdbc9%0x3c+'s';return _0x7042f3+'d\x20'+_0x3ec545%0x18+'h\x20'+_0x56a6aa%0x3c+'m';},'renderMarkdown'(_0x18713b,_0x231108={}){if(!_0x18713b)return'';_0x18713b=this['rewriteAttachmentLinks'](_0x18713b,_0x231108),_0x18713b=this['rewriteColorSyntax'](_0x18713b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x18713b,_0x231108);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x18713b);}catch(_0x15c280){return console['error']('Markdown\x20parsing\x20error:',_0x15c280),this['renderMarkdownFallback'](_0x18713b,_0x231108);}},'rewriteAttachmentLinks'(_0x2323bb,_0x18b555={}){const _0x2f1010=typeof _0x18b555['resolveAttachmentUrl']==='function'?_0x18b555['resolveAttachmentUrl']:_0x18b555['taskId']?_0x1c0dd4=>API_BASE+'/tasks/'+_0x18b555['taskId']+'/attachments/'+encodeURIComponent(_0x1c0dd4):null;if(!_0x2f1010)return _0x2323bb;return String(_0x2323bb)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x230b2b,_0x131976)=>{const _0x1e8301=String(_0x131976||'')['trim']();if(!_0x1e8301)return _0x230b2b;let _0x3ad8cb=_0x1e8301;try{_0x3ad8cb=decodeURIComponent(_0x1e8301);}catch{}const _0x1c8296=_0x2f1010(_0x3ad8cb);if(!_0x1c8296)return _0x230b2b;return']('+_0x1c8296+')';});},'rewriteColorSyntax'(_0x13a351){if(!_0x13a351)return _0x13a351;return String(_0x13a351)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x356d65,_0x51a7cc,_0x377fa4)=>{const _0x3def5c=this['rewriteColorSyntax'](_0x377fa4);return'<span\x20style=\x22color:\x20'+_0x51a7cc+'\x22>'+_0x3def5c+'</span>';});},'renderMarkdownFallback'(_0x297afa,_0x2d8d3e={}){if(!_0x297afa)return'';_0x297afa=_0x297afa['replace'](/\r\n/g,'\x0a'),_0x297afa=_0x297afa['replace'](/\r/g,'\x0a'),_0x297afa=this['rewriteAttachmentLinks'](_0x297afa,_0x2d8d3e);let _0x21e7cc=this['escapeHtml'](_0x297afa);return _0x21e7cc=_0x21e7cc['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x21e7cc=_0x21e7cc['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x21e7cc=_0x21e7cc['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x21e7cc=_0x21e7cc['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x21e7cc=_0x21e7cc['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x21e7cc=_0x21e7cc['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x21e7cc=_0x21e7cc['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x21e7cc=_0x21e7cc['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x21e7cc=_0x21e7cc['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x21e7cc=_0x21e7cc['replace'](/\n\n/g,'</p><p>'),_0x21e7cc=_0x21e7cc['replace'](/\n/g,'<br>'),'<p>'+_0x21e7cc+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x205afd=new Uint8Array(0x10);crypto['getRandomValues'](_0x205afd),_0x205afd[0x6]=_0x205afd[0x6]&0xf|0x40,_0x205afd[0x8]=_0x205afd[0x8]&0x3f|0x80;const _0x43c18f=Array['from'](_0x205afd,_0x3bb9b2=>_0x3bb9b2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x43c18f['slice'](0x0,0x8)+'-'+_0x43c18f['slice'](0x8,0xc)+'-'+_0x43c18f['slice'](0xc,0x10)+'-'+_0x43c18f['slice'](0x10,0x14)+'-'+_0x43c18f['slice'](0x14);}};export class CustomSelect{constructor(_0x57d27b,_0x31d8fb={}){this['nativeSelect']=_0x57d27b,this['options']=_0x31d8fb,this['isOpen']=![],this['selectedValue']=_0x57d27b['value']||'',this['searchable']=_0x31d8fb['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4780a4=document['createElement']('div');_0x4780a4['className']='custom-select';const _0x4e0379=document['createElement']('div');_0x4e0379['className']='custom-select-trigger',_0x4e0379['setAttribute']('tabindex','0'),_0x4e0379['setAttribute']('role','button'),_0x4e0379['setAttribute']('aria-haspopup','listbox');const _0x59d7ae=document['createElement']('span');_0x59d7ae['className']='custom-select-trigger-text';const _0x1343d0=document['createElement']('span');_0x1343d0['className']='custom-select-arrow',_0x1343d0['textContent']='▼',_0x4e0379['appendChild'](_0x59d7ae),_0x4e0379['appendChild'](_0x1343d0);const _0x63410d=document['createElement']('div');_0x63410d['className']='custom-select-dropdown',_0x63410d['setAttribute']('role','listbox');if(this['searchable']){const _0x1f1d73=document['createElement']('div');_0x1f1d73['className']='custom-select-search';const _0x350eff=document['createElement']('input');_0x350eff['type']='text',_0x350eff['className']='custom-select-search-input',_0x350eff['placeholder']='Type\x20to\x20search...',_0x350eff['setAttribute']('aria-label','Search\x20options'),_0x350eff['addEventListener']('input',_0x15d3f1=>{this['searchQuery']=_0x15d3f1['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x350eff['addEventListener']('keydown',_0x2e3405=>{if(_0x2e3405['key']==='Escape')_0x2e3405['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e3405['key']==='Enter'){_0x2e3405['preventDefault'](),_0x2e3405['stopPropagation']();const _0x416ab2=_0x63410d['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x416ab2){const _0x407b52=_0x416ab2['getAttribute']('data-value');this['select'](_0x407b52);}}}}),_0x1f1d73['appendChild'](_0x350eff),_0x63410d['appendChild'](_0x1f1d73),this['searchInput']=_0x350eff;}const _0x233cf9=document['createElement']('div');_0x233cf9['className']='custom-select-options',_0x63410d['appendChild'](_0x233cf9),_0x4780a4['appendChild'](_0x4e0379),_0x4780a4['appendChild'](_0x63410d),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4780a4,this['nativeSelect']),this['wrapper']=_0x4780a4,this['trigger']=_0x4e0379,this['triggerText']=_0x59d7ae,this['dropdown']=_0x63410d,this['optionsContainer']=_0x233cf9,_0x4e0379['addEventListener']('click',()=>this['toggle']()),_0x4e0379['addEventListener']('keydown',_0x4b868f=>this['handleKeydown'](_0x4b868f)),document['addEventListener']('click',_0x25c90c=>{!_0x4780a4['contains'](_0x25c90c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x59518e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x59518e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1c9220=new MutationObserver(()=>{this['updateDisabledState']();});_0x1c9220['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x16a0f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x16a0f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xf79a29=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xf79a29),this['trigger']['setAttribute']('aria-disabled',_0xf79a29?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xf79a29?'-1':'0'),_0xf79a29&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x300157=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x279f6e=_0x300157['filter'](_0xaea9b8=>!_0xaea9b8['disabled']&&!_0xaea9b8['hidden']);_0x300157['forEach']((_0x142d4a,_0x5c1206)=>{const _0x1803ba=document['createElement']('div');_0x1803ba['className']='custom-select-option',_0x1803ba['textContent']=_0x142d4a['textContent'],_0x1803ba['setAttribute']('data-value',_0x142d4a['value']),_0x1803ba['setAttribute']('data-index',_0x5c1206),_0x1803ba['setAttribute']('role','option'),_0x142d4a['disabled']?_0x1803ba['classList']['add']('disabled'):_0x1803ba['addEventListener']('click',()=>this['select'](_0x142d4a['value'])),_0x142d4a['value']===this['selectedValue']&&_0x1803ba['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1803ba),this['allOptions']['push']({'element':_0x1803ba,'text':_0x142d4a['textContent']['toLowerCase'](),'value':_0x142d4a['value'],'disabled':_0x142d4a['disabled']});});if(this['searchable']&&this['searchInput']){const _0x418652=this['searchInput']['parentElement'];_0x279f6e['length']>0x3?_0x418652['style']['display']='':_0x418652['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b4da6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x13d781=>{if(!_0x2b4da6||_0x13d781['disabled'])_0x13d781['element']['style']['display']='';else{const _0x4634d7=_0x13d781['text']['includes'](_0x2b4da6);_0x13d781['element']['style']['display']=_0x4634d7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x42563f){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x42563f,this['nativeSelect']['value']=_0x42563f;const _0xd88095=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xd88095),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d5f1b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d5f1b&&(this['triggerText']['textContent']=_0x1d5f1b['textContent'],_0x1d5f1b['disabled']||_0x1d5f1b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x53b74b=>{_0x53b74b['getAttribute']('data-value')===this['selectedValue']?_0x53b74b['classList']['add']('selected'):_0x53b74b['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 _0x25e476=window['getComputedStyle'](this['dropdown']);if(_0x25e476['position']==='fixed'){const _0x4c6410=this['trigger']['getBoundingClientRect'](),_0x5850c1=parseInt(_0x25e476['maxHeight'])||0xc8,_0x3249dd=window['innerHeight'],_0x4f5e5e=_0x3249dd-_0x4c6410['bottom'],_0x3d7138=_0x4c6410['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1c9be6;_0x4f5e5e<_0x5850c1&&_0x3d7138>_0x4f5e5e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3249dd-_0x4c6410['top']+'px',_0x1c9be6=Math['min'](_0x5850c1,_0x3d7138-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c6410['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1c9be6=Math['min'](_0x5850c1,_0x4f5e5e-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px');if(this['optionsContainer']){let _0x59945b=_0x1c9be6;if(this['searchInput']){const _0x16e6c1=this['searchInput']['parentElement'];_0x16e6c1&&(_0x59945b-=_0x16e6c1['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x59945b)+'px';}this['dropdown']['style']['left']=_0x4c6410['left']+'px',this['dropdown']['style']['width']=_0x4c6410['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4848d6=this['searchInput']['parentElement'];_0x4848d6&&_0x4848d6['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'](_0x261709){if(this['nativeSelect']['disabled'])return;if(_0x261709['key']==='Enter'||_0x261709['key']==='\x20')_0x261709['preventDefault'](),this['toggle']();else _0x261709['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3a49fa='\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',_0x3a49fa),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x24b3ea=document['getElementById']('confirm-dialog-close'),_0x15e9ff=document['getElementById']('confirm-dialog-cancel'),_0x1f2f0e=document['getElementById']('confirm-dialog-confirm'),_0x2324be=this['_modal']['querySelector']('.modal-overlay');_0x24b3ea['addEventListener']('click',()=>this['_resolve'](![])),_0x15e9ff['addEventListener']('click',()=>this['_resolve'](![])),_0x1f2f0e['addEventListener']('click',()=>this['_resolve'](!![])),_0x2324be['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x286240=>{if(_0x286240['key']==='Escape')_0x286240['preventDefault'](),this['_resolve'](![]);else _0x286240['key']==='Enter'&&(_0x286240['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1deb22,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x255fdf=>{this['_resolvePromise']=_0x255fdf,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1deb22;const _0x52e0dc=document['getElementById']('confirm-dialog-cancel'),_0x17476a=document['getElementById']('confirm-dialog-confirm');_0x52e0dc['textContent']=cancelText,_0x17476a['textContent']=confirmText,_0x17476a['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x17476a['focus']();});},'_resolve'(_0x1b9d1b){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b9d1b),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x369a3e,_0x26a9e0={}){this['container']=_0x369a3e,this['options']={'placeholder':_0x26a9e0['placeholder']||'Type\x20to\x20search...','maxItems':_0x26a9e0['maxItems']||0x64,'loadItems':_0x26a9e0['loadItems']||(async()=>[]),'renderItem':_0x26a9e0['renderItem']||(_0x386177=>({'primary':String(_0x386177),'secondary':''})),'onSelect':_0x26a9e0['onSelect']||(()=>{}),'filterItems':_0x26a9e0['filterItems']||null,'getItemValue':_0x26a9e0['getItemValue']||(_0x58f63f=>_0x58f63f),'sortItems':_0x26a9e0['sortItems']||null,'debounceMs':_0x26a9e0['debounceMs']||0xc8,'minCharsForSearch':_0x26a9e0['minCharsForSearch']||0x0,'emptyMessage':_0x26a9e0['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x26a9e0['loadingMessage']||'Loading...','preload':_0x26a9e0['preload']!==![],'searchMode':_0x26a9e0['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',_0x3746d1=>this['onBlur'](_0x3746d1)),this['input']['addEventListener']('input',_0x54c01b=>this['onInput'](_0x54c01b)),this['input']['addEventListener']('keydown',_0x9ea724=>this['onKeydown'](_0x9ea724)),this['clearBtn']['addEventListener']('mousedown',_0x2bb166=>{_0x2bb166['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25361f=>{_0x25361f['preventDefault']();}),document['addEventListener']('click',_0x3786cf=>{!this['wrapper']['contains'](_0x3786cf['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(_0x38412e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x38412e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x20a060){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5e938e){const _0x18a280=_0x5e938e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x18a280);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x18a280):this['loadAndShow'](_0x18a280);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x35be46){switch(_0x35be46['key']){case'ArrowDown':_0x35be46['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x35be46['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x35be46['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x35be46['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x45f072){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x25c9f5=this['selectedIndex']+_0x45f072;if(_0x25c9f5>=0x0&&_0x25c9f5<this['filteredItems']['length']){this['selectedIndex']=_0x25c9f5,this['updateSelectionHighlight']();const _0x2cc322=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2cc322[this['selectedIndex']]&&_0x2cc322[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x138e33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x138e33['forEach']((_0x528cd7,_0x45221f)=>{_0x528cd7['classList']['toggle']('keyboard-selected',_0x45221f===this['selectedIndex']);});}async['loadAndShow'](_0xc7f594){this['showLoading']();try{const _0x52e810=await this['options']['loadItems'](_0xc7f594);if(this['options']['searchMode']==='server'){let _0x3fb20e=_0x52e810;this['options']['sortItems']&&(_0x3fb20e=this['options']['sortItems']([..._0x52e810]));this['filteredItems']=_0x3fb20e;const _0x2aa222=this['filteredItems']['length']>=this['options']['maxItems'];_0x2aa222&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2aa222),this['open']();}else this['allItems']=_0x52e810,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0xc7f594);}catch(_0xc8f0a3){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0xc8f0a3),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x424367){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x424367):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x31679b=this['filteredItems']['length']>=this['options']['maxItems'];_0x31679b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x31679b),this['open']();}['renderItems'](_0x32dce1){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']((_0x54dc00,_0x429d6a)=>{const _0x1b04e1=document['createElement']('div');_0x1b04e1['className']='autocomplete-select-item',_0x1b04e1['setAttribute']('role','option'),_0x1b04e1['setAttribute']('data-index',_0x429d6a);const _0x596f29=this['options']['renderItem'](_0x54dc00);let _0x148dd9='';_0x596f29['icon']&&(_0x148dd9='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x596f29['iconClass']||'')+'\x22>'+_0x596f29['icon']+'</span>'),_0x1b04e1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x148dd9+'\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'](_0x596f29['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x596f29['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x596f29['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1b04e1['addEventListener']('click',()=>{this['selectItem'](_0x54dc00);}),_0x1b04e1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x429d6a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1b04e1);}),_0x32dce1?(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'](_0x470dd2){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x470dd2)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x11a3ea){this['selectedItem']=_0x11a3ea;const _0x5d2e22=this['options']['renderItem'](_0x11a3ea);this['input']['value']=_0x5d2e22['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x11a3ea);}['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'](_0x482f44){if(_0x482f44){this['selectedItem']=_0x482f44;const _0x3737d8=this['options']['renderItem'](_0x482f44);this['input']['value']=_0x3737d8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4e9747){this['allItems']=_0x4e9747,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'](_0x9eb395){this['input']['placeholder']=_0x9eb395;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x404e93=null){const _0x9bedce=document['getElementById']('admin-menu-container'),_0x13efff=document['getElementById']('admin-menu-btn'),_0x1cb969=document['getElementById']('admin-menu');if(!_0x9bedce||!_0x13efff||!_0x1cb969)return;try{!_0x404e93&&(_0x404e93=await API['getCurrentUser']());if(_0x404e93){const _0x4cddeb=window['Permissions'],_0x54e846=_0x4cddeb['hasServerPermission'](_0x404e93,'*')||_0x4cddeb['hasEnvPermission'](_0x404e93,'environments:manage')||_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')||_0x4cddeb['hasTeamPermission'](_0x404e93,'teams:manage')||_0x4cddeb['hasAnyEnvironment'](_0x404e93);if(!_0x54e846)return;_0x9bedce['hidden']=![];if(!_0x4cddeb['hasServerPermission'](_0x404e93,'*')){const _0x51cc15=_0x1cb969['querySelectorAll']('.admin-menu-item');_0x51cc15['forEach'](_0x2396e7=>{const _0x65a0ed=_0x2396e7['querySelector']('.option-text')?.['textContent']?.['trim']();_0x65a0ed==='Users'&&!_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Skills'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Settings'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Health'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Git\x20History'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Roles'&&(_0x2396e7['hidden']=!![]);});}_0x13efff['addEventListener']('click',_0x35569c=>{_0x35569c['stopPropagation']();const _0x2830a9=document['getElementById']('actions-menu');if(_0x2830a9)_0x2830a9['hidden']=!![];_0x1cb969['hidden']=!_0x1cb969['hidden'];}),document['addEventListener']('click',_0x13ffa8=>{!_0x1cb969['hidden']&&!_0x13efff['contains'](_0x13ffa8['target'])&&!_0x1cb969['contains'](_0x13ffa8['target'])&&(_0x1cb969['hidden']=!![]);}),document['addEventListener']('keydown',_0x3ab3a5=>{_0x3ab3a5['key']==='Escape'&&!_0x1cb969['hidden']&&(_0x1cb969['hidden']=!![]);});const _0x571e4c=document['getElementById']('server-health-btn');_0x571e4c&&_0x571e4c['addEventListener']('click',async()=>{_0x1cb969['hidden']=!![];const {openServerHealthModal:_0x2e022e}=await import('./server-health.js');_0x2e022e();});}}catch(_0x1a0c69){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1a0c69['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|