@profoundlogic/coderflow-server 0.6.7 → 0.6.9
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-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.html +11 -8
- 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-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/start.js.bak +0 -1381
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x50b2f3=window['location']['pathname'],_0x40a93c=_0x50b2f3['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40a93c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40a93c[0x1]),_0x40a93c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1bc039={}){const _0x72803=new URLSearchParams();_0x1bc039['userId']&&_0x72803['set']('userId',String(_0x1bc039['userId']));_0x1bc039['automation']&&_0x72803['set']('automation',String(_0x1bc039['automation']));const _0x3d9517=API_BASE+'/tasks/stats'+(_0x72803['toString']()?'?'+_0x72803['toString']():''),_0x261cbf=await fetch(_0x3d9517);if(!_0x261cbf['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x261cbf['statusText']);return await _0x261cbf['json']();},async 'getTasks'(_0x41eb60={}){const _0x5caf26=new URLSearchParams();_0x41eb60['status']&&_0x5caf26['set']('status',String(_0x41eb60['status']));_0x41eb60['environment']&&_0x5caf26['set']('environment',String(_0x41eb60['environment']));_0x41eb60['automation']&&_0x5caf26['set']('automation',String(_0x41eb60['automation']));if(_0x41eb60['include']){const _0x4a9ab6=Array['isArray'](_0x41eb60['include'])?_0x41eb60['include']['join'](','):String(_0x41eb60['include']);_0x4a9ab6&&_0x5caf26['set']('include',_0x4a9ab6);}_0x41eb60['filter']&&_0x5caf26['set']('filter',String(_0x41eb60['filter']));_0x41eb60['page']&&_0x5caf26['set']('page',String(_0x41eb60['page']));_0x41eb60['limit']&&_0x5caf26['set']('limit',String(_0x41eb60['limit']));_0x41eb60['userId']&&_0x5caf26['set']('userId',String(_0x41eb60['userId']));_0x41eb60['search']&&_0x5caf26['set']('search',String(_0x41eb60['search']));_0x41eb60['includeChildTasks']&&_0x5caf26['set']('includeChildTasks','true');const _0x496563=API_BASE+'/tasks'+(_0x5caf26['toString']()?'?'+_0x5caf26['toString']():''),_0x3f3eab=await fetch(_0x496563);if(!_0x3f3eab['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f3eab['statusText']);return await _0x3f3eab['json']();},async 'getAutomations'(_0x372580={}){const _0x10b035=new URLSearchParams();_0x372580['environment']&&_0x10b035['set']('environment',String(_0x372580['environment']));const _0x5d904d=await fetch(API_BASE+'/api/automations'+(_0x10b035['toString']()?'?'+_0x10b035['toString']():''));if(!_0x5d904d['ok']){const _0x1e2294=await _0x5d904d['json']()['catch'](()=>({}));throw new Error(_0x1e2294['message']||_0x1e2294['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x5d904d['statusText']);}return await _0x5d904d['json']();},async 'getAutomation'(_0x7fa3aa){const _0x98e15d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7fa3aa));if(!_0x98e15d['ok']){const _0x212d45=await _0x98e15d['json']()['catch'](()=>({}));throw new Error(_0x212d45['message']||_0x212d45['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x98e15d['statusText']);}return await _0x98e15d['json']();},async 'createAutomation'(_0x5977ae){const _0x3f6a49=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5977ae||{})});if(!_0x3f6a49['ok']){const _0x8469dd=await _0x3f6a49['json']()['catch'](()=>({}));throw new Error(_0x8469dd['message']||_0x8469dd['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3f6a49['statusText']);}return await _0x3f6a49['json']();},async 'updateAutomation'(_0x2702e2,_0x4191ca){const _0x25a429=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2702e2),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4191ca||{})});if(!_0x25a429['ok']){const _0x1216cd=await _0x25a429['json']()['catch'](()=>({}));throw new Error(_0x1216cd['message']||_0x1216cd['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x25a429['statusText']);}return await _0x25a429['json']();},async 'deleteAutomation'(_0x216ea8){const _0x382a42=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x216ea8),{'method':'DELETE'});if(!_0x382a42['ok']){const _0x5e7983=await _0x382a42['json']()['catch'](()=>({}));throw new Error(_0x5e7983['message']||_0x5e7983['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x382a42['statusText']);}return await _0x382a42['json']();},async 'triggerAutomation'(_0x235b52){const _0x450a92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235b52)+'/trigger',{'method':'POST'});if(!_0x450a92['ok']){const _0x43abfb=await _0x450a92['json']()['catch'](()=>({}));throw new Error(_0x43abfb['message']||_0x43abfb['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x450a92['statusText']);}return await _0x450a92['json']();},async 'setAutomationEnabled'(_0x3c22c4,_0x28afa9){const _0x103112=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c22c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x28afa9})});if(!_0x103112['ok']){const _0x5928e7=await _0x103112['json']()['catch'](()=>({}));throw new Error(_0x5928e7['message']||_0x5928e7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x103112['statusText']);}return await _0x103112['json']();},async 'getAutomationHistory'(_0xa531ea,_0xfb3946=0x32){const _0x52ade5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa531ea)+'/history?limit='+encodeURIComponent(String(_0xfb3946)));if(!_0x52ade5['ok']){const _0x5ea58f=await _0x52ade5['json']()['catch'](()=>({}));throw new Error(_0x5ea58f['message']||_0x5ea58f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x52ade5['statusText']);}return await _0x52ade5['json']();},async 'getTask'(_0x53b392,_0x2b8972={}){const _0x4e9514=new URLSearchParams();if(_0x2b8972['include']){const _0x134775=Array['isArray'](_0x2b8972['include'])?_0x2b8972['include']['join'](','):String(_0x2b8972['include']);if(_0x134775)_0x4e9514['set']('include',_0x134775);}const _0x56f54b=await fetch(API_BASE+'/tasks/'+_0x53b392+(_0x4e9514['toString']()?'?'+_0x4e9514['toString']():''));if(!_0x56f54b['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56f54b['statusText']);return await _0x56f54b['json']();},async 'getTaskResults'(_0x356e48){const _0x2b5b4f=await fetch(API_BASE+'/tasks/'+_0x356e48+'/results');if(!_0x2b5b4f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2b5b4f['statusText']);return await _0x2b5b4f['json']();},async 'getTaskPatches'(_0x32af6c){const _0x456ac7=await fetch(API_BASE+'/tasks/'+_0x32af6c+'/patches');if(!_0x456ac7['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x456ac7['statusText']);return await _0x456ac7['json']();},async 'getTaskAttachments'(_0x13dba1){const _0x10bfc0=await fetch(API_BASE+'/tasks/'+_0x13dba1+'/attachments');if(!_0x10bfc0['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x10bfc0['statusText']);return await _0x10bfc0['json']();},async 'uploadAttachments'(_0x5187dc,_0x22d2f4){const _0x1101a6=new FormData();for(const _0x31bf4d of _0x22d2f4){_0x1101a6['append']('attachments',_0x31bf4d);}const _0x49b1c4=await fetch(API_BASE+'/tasks/'+_0x5187dc+'/attachments',{'method':'POST','body':_0x1101a6});if(!_0x49b1c4['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x49b1c4['statusText']);return await _0x49b1c4['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44b8ed=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44b8ed['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44b8ed['json']();}catch(_0x525931){return{'available':![],'reason':_0x525931['message']};}},async 'generateTaskName'(_0x272412){try{const _0x647aa9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x272412})});return await _0x647aa9['json']();}catch(_0x32f299){return{'success':![],'error':_0x32f299['message']};}},async 'createTask'(_0x214494){let _0x5da179,_0x3ca501={};if(_0x214494['files']&&_0x214494['files']['length']>0x0){const _0x4afed3=new FormData();for(const [_0xe06d0e,_0x216c3f]of Object['entries'](_0x214494)){if(_0xe06d0e!=='files'){if(_0x216c3f==null)continue;typeof _0x216c3f==='object'?_0x4afed3['append'](_0xe06d0e,JSON['stringify'](_0x216c3f)):_0x4afed3['append'](_0xe06d0e,String(_0x216c3f));}}for(const _0x581391 of _0x214494['files']){_0x4afed3['append']('attachments',_0x581391);}_0x5da179=_0x4afed3;}else _0x3ca501['Content-Type']='application/json',_0x5da179=JSON['stringify'](_0x214494);const _0x59eeae=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ca501,'body':_0x5da179});if(!_0x59eeae['ok']){const _0x135cbf=await _0x59eeae['json'](),_0xa74cb1=new Error(_0x135cbf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x59eeae['statusText']),{message:_0x591f50,..._0x546019}=_0x135cbf;Object['assign'](_0xa74cb1,_0x546019);throw _0xa74cb1;}return await _0x59eeae['json']();},async 'createTestTask'(_0x195b07){const _0x161c74=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195b07)});if(!_0x161c74['ok']){const _0x4fcc26=await _0x161c74['json']();throw new Error(_0x4fcc26['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x161c74['statusText']);}return await _0x161c74['json']();},async 'createEphemeralTest'(_0x478a2f){const _0x2121fa=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478a2f)});if(!_0x2121fa['ok']){const _0x18c47a=await _0x2121fa['json']();throw new Error(_0x18c47a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2121fa['statusText']);}return await _0x2121fa['json']();},async 'createDeployTask'(_0x327893){const _0x5db0d4=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x327893)});if(!_0x5db0d4['ok']){const _0x5a8c0d=await _0x5db0d4['json']();throw new Error(_0x5a8c0d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5db0d4['statusText']);}return await _0x5db0d4['json']();},async 'getEnvironments'(){const _0x2ff4e=await fetch(API_BASE+'/environments');if(!_0x2ff4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ff4e['statusText']);return await _0x2ff4e['json']();},async 'getEnvironment'(_0x340781){const _0x5f186b=await fetch(API_BASE+'/environments/'+_0x340781);if(!_0x5f186b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5f186b['statusText']);return await _0x5f186b['json']();},async 'getEnvironmentRepoHistory'(_0x343309,_0xb1e8a4,_0x47dc6d={}){if(!_0x343309||!_0xb1e8a4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd0058e=new URLSearchParams();if(_0x47dc6d['limit'])_0xd0058e['set']('limit',String(_0x47dc6d['limit']));if(_0x47dc6d['offset'])_0xd0058e['set']('offset',String(_0x47dc6d['offset']));if(_0x47dc6d['search'])_0xd0058e['set']('search',String(_0x47dc6d['search']));if(_0x47dc6d['branch'])_0xd0058e['set']('branch',String(_0x47dc6d['branch']));const _0x7c7d4b=API_BASE+'/environments/'+encodeURIComponent(_0x343309)+'/repos/'+encodeURIComponent(_0xb1e8a4)+'/git/history',_0x5a2fcf=await fetch(''+_0x7c7d4b+(_0xd0058e['toString']()?'?'+_0xd0058e['toString']():''));if(!_0x5a2fcf['ok']){const _0xcd0337=await _0x5a2fcf['json']()['catch'](()=>({}));throw new Error(_0xcd0337['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5a2fcf['statusText']);}return await _0x5a2fcf['json']();},async 'getEnvironmentRepoCommit'(_0x48df4e,_0x29a65f,_0x167f1d){if(!_0x48df4e||!_0x29a65f||!_0x167f1d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22fefc=API_BASE+'/environments/'+encodeURIComponent(_0x48df4e)+'/repos/'+encodeURIComponent(_0x29a65f)+'/git/commits/'+encodeURIComponent(_0x167f1d),_0x11e2fa=await fetch(_0x22fefc);if(!_0x11e2fa['ok']){const _0x461bd8=await _0x11e2fa['json']()['catch'](()=>({}));throw new Error(_0x461bd8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x11e2fa['statusText']);}return await _0x11e2fa['json']();},async 'getEnvironmentRepoBranches'(_0x531379,_0x259049){if(!_0x531379||!_0x259049)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x115530=API_BASE+'/environments/'+encodeURIComponent(_0x531379)+'/repos/'+encodeURIComponent(_0x259049)+'/git/branches',_0xc18ebb=await fetch(_0x115530);if(!_0xc18ebb['ok']){const _0x4d4744=await _0xc18ebb['json']()['catch'](()=>({}));throw new Error(_0x4d4744['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xc18ebb['statusText']);}return await _0xc18ebb['json']();},async 'revertEnvironmentRepoCommit'(_0x373e39,_0x12e1f1,_0x2eeb90,_0x15843e={}){if(!_0x373e39||!_0x12e1f1||!_0x2eeb90)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e1422=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x373e39)+'/repos/'+encodeURIComponent(_0x12e1f1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2eeb90,..._0x15843e})});if(!_0x5e1422['ok']){const _0x4fa808=await _0x5e1422['json']()['catch'](()=>({}));throw new Error(_0x4fa808['message']||_0x4fa808['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e1422['statusText']);}return await _0x5e1422['json']();},async 'getTemplates'(_0x833a56={}){const _0x4b3b84=new URLSearchParams();if(_0x833a56['include']){const _0x1a874b=Array['isArray'](_0x833a56['include'])?_0x833a56['include']['join'](','):String(_0x833a56['include']);if(_0x1a874b)_0x4b3b84['set']('include',_0x1a874b);}const _0x177096=await fetch(API_BASE+'/templates'+(_0x4b3b84['toString']()?'?'+_0x4b3b84['toString']():''));if(!_0x177096['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x177096['statusText']);return await _0x177096['json']();},async 'getTemplatesForEnvironment'(_0x45b535,_0x47a455={}){if(!_0x45b535)throw new Error('Environment\x20name\x20is\x20required');const _0x65cfec=new URLSearchParams();if(_0x47a455['include']){const _0xde3ff=Array['isArray'](_0x47a455['include'])?_0x47a455['include']['join'](','):String(_0x47a455['include']);if(_0xde3ff)_0x65cfec['set']('include',_0xde3ff);}const _0x2b1aa6=await fetch(API_BASE+'/templates/'+_0x45b535+(_0x65cfec['toString']()?'?'+_0x65cfec['toString']():''));if(!_0x2b1aa6['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45b535+':\x20'+_0x2b1aa6['statusText']);return await _0x2b1aa6['json']();},async 'getTemplate'(_0xc6b0e0,_0x369d58,_0x3c1c40={}){if(!_0xc6b0e0||!_0x369d58)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4b352c=new URLSearchParams();if(_0x3c1c40['include']){const _0x30e80b=Array['isArray'](_0x3c1c40['include'])?_0x3c1c40['include']['join'](','):String(_0x3c1c40['include']);if(_0x30e80b)_0x4b352c['set']('include',_0x30e80b);}const _0x2f3f2f=await fetch(API_BASE+'/templates/'+_0xc6b0e0+'/'+_0x369d58+(_0x4b352c['toString']()?'?'+_0x4b352c['toString']():''));if(!_0x2f3f2f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2f3f2f['statusText']);return await _0x2f3f2f['json']();},async 'getTaskLogs'(_0x335fd,_0x2e48a4={}){if(!_0x335fd)throw new Error('Task\x20ID\x20is\x20required');const _0x46f64f=new URLSearchParams();_0x2e48a4['tail']&&_0x46f64f['set']('tail',String(_0x2e48a4['tail']));const _0x496472=await fetch(API_BASE+'/tasks/'+_0x335fd+'/logs'+(_0x46f64f['toString']()?'?'+_0x46f64f['toString']():''));if(!_0x496472['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x496472['statusText']);return await _0x496472['text']();},async 'getContainers'(){const _0x57b311=await fetch(API_BASE+'/containers');if(!_0x57b311['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x57b311['statusText']);return await _0x57b311['json']();},async 'getContainer'(_0x34a05d){const _0x2bae5e=await fetch(API_BASE+'/containers/'+_0x34a05d);if(!_0x2bae5e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x2bae5e['statusText']);return await _0x2bae5e['json']();},async 'startInteractiveContainer'(_0x5551b8){const _0x4bf7c2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5551b8)});if(!_0x4bf7c2['ok']){const _0x39bcf1=await _0x4bf7c2['json']()['catch'](()=>({}));throw new Error(_0x39bcf1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bf7c2['statusText']);}return await _0x4bf7c2['json']();},async 'stopContainer'(_0x3feedc){const _0x72fd0d=await fetch(API_BASE+'/containers/'+_0x3feedc,{'method':'DELETE'});if(!_0x72fd0d['ok']){const _0x318a5a=await _0x72fd0d['json']()['catch'](()=>({}));throw new Error(_0x318a5a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x72fd0d['statusText']);}return await _0x72fd0d['json']();},async 'stopTask'(_0x5d1cd7){if(!_0x5d1cd7)throw new Error('Task\x20ID\x20is\x20required');const _0x2dbbf7=await fetch(API_BASE+'/tasks/'+_0x5d1cd7+'/stop',{'method':'POST'});if(!_0x2dbbf7['ok']){const _0x5e7e56=await _0x2dbbf7['json']()['catch'](()=>({}));throw new Error(_0x5e7e56['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2dbbf7['statusText']);}return await _0x2dbbf7['json']();},async 'interruptTask'(_0x2f8875){if(!_0x2f8875)throw new Error('Task\x20ID\x20is\x20required');const _0x51268c=await fetch(API_BASE+'/tasks/'+_0x2f8875+'/interrupt',{'method':'POST'});if(!_0x51268c['ok']){const _0x4d103e=await _0x51268c['json']()['catch'](()=>({}));throw new Error(_0x4d103e['error']||_0x4d103e['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x51268c['statusText']);}return await _0x51268c['json']();},async 'startTask'(_0x3d7b3c){if(!_0x3d7b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x5b8e75=await fetch(API_BASE+'/tasks/'+_0x3d7b3c+'/start',{'method':'POST'});if(!_0x5b8e75['ok']){const _0x423f8d=await _0x5b8e75['json']()['catch'](()=>({}));throw new Error(_0x423f8d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b8e75['statusText']);}return await _0x5b8e75['json']();},async 'deleteTask'(_0x482f2e){if(!_0x482f2e)throw new Error('Task\x20ID\x20is\x20required');const _0x399289=await fetch(API_BASE+'/tasks/'+_0x482f2e,{'method':'DELETE'});if(!_0x399289['ok']){const _0x42ad4a=await _0x399289['json']()['catch'](()=>({}));throw new Error(_0x42ad4a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x399289['statusText']);}return await _0x399289['json']();},async 'refreshTasksFromDisk'(){const _0x4b7a28=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4b7a28['ok']){const _0x4cb783=await _0x4b7a28['json']()['catch'](()=>({}));throw new Error(_0x4cb783['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4b7a28['statusText']);}return await _0x4b7a28['json']();},async 'approveTask'(_0x313b27,_0x2ee8d7={}){if(!_0x313b27)throw new Error('Task\x20ID\x20is\x20required');const _0x482c0d={'commit_message':_0x2ee8d7['commit_message']||'','pull':_0x2ee8d7['pull']??![],'push':_0x2ee8d7['push']??![]};_0x2ee8d7['new_branch']&&(_0x482c0d['new_branch']=_0x2ee8d7['new_branch']);const _0x3610c3=await fetch(API_BASE+'/tasks/'+_0x313b27+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x482c0d)});if(!_0x3610c3['ok']){const _0x57b0c5=await _0x3610c3['json']()['catch'](()=>({}));let _0xb2de32=_0x57b0c5['error']||_0x57b0c5['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3610c3['statusText'];if(_0x57b0c5['results']&&Array['isArray'](_0x57b0c5['results'])){const _0x2e0414=_0x57b0c5['results']['filter'](_0x460008=>!_0x460008['success']&&_0x460008['error']);_0x2e0414['length']>0x0&&(_0xb2de32=_0x2e0414[0x0]['error']);}throw new Error(_0xb2de32);}return await _0x3610c3['json']();},async 'getPullRequestInfo'(_0x5eeba6){if(!_0x5eeba6)throw new Error('Task\x20ID\x20is\x20required');const _0x418828=await fetch(API_BASE+'/tasks/'+_0x5eeba6+'/pull-request-info');if(!_0x418828['ok']){const _0x54ba6c=await _0x418828['json']()['catch'](()=>({}));throw new Error(_0x54ba6c['error']||_0x54ba6c['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x418828['statusText']);}return await _0x418828['json']();},async 'createPullRequests'(_0x14a700,_0x249c92){if(!_0x14a700)throw new Error('Task\x20ID\x20is\x20required');if(!_0x249c92||!Array['isArray'](_0x249c92))throw new Error('repos\x20array\x20is\x20required');const _0x252884=await fetch(API_BASE+'/tasks/'+_0x14a700+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x249c92})});if(!_0x252884['ok']){const _0x4a4f38=await _0x252884['json']()['catch'](()=>({}));let _0x4c1eb9=_0x4a4f38['error']||_0x4a4f38['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x252884['statusText'];if(_0x4a4f38['results']&&Array['isArray'](_0x4a4f38['results'])){const _0x3acf59=_0x4a4f38['results']['filter'](_0x4f1fa3=>!_0x4f1fa3['success']&&_0x4f1fa3['error']);_0x3acf59['length']>0x0&&(_0x4c1eb9=_0x3acf59[0x0]['error']);}throw new Error(_0x4c1eb9);}return await _0x252884['json']();},async 'syncRepos'(_0x3af19a){if(!_0x3af19a)throw new Error('Task\x20ID\x20is\x20required');const _0x1a9431=await fetch(API_BASE+'/tasks/'+_0x3af19a+'/sync-repos',{'method':'POST'});if(!_0x1a9431['ok']){const _0x5f1121=await _0x1a9431['json']()['catch'](()=>({}));throw new Error(_0x5f1121['error']||_0x5f1121['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x1a9431['statusText']);}return await _0x1a9431['json']();},async 'getIbmiSyncInfo'(_0x54d475){if(!_0x54d475)throw new Error('Task\x20ID\x20is\x20required');const _0x579571=await fetch(API_BASE+'/tasks/'+_0x54d475+'/ibmi-sync-info');if(!_0x579571['ok']){const _0x3ed5e8=await _0x579571['json']()['catch'](()=>({}));throw new Error(_0x3ed5e8['error']||_0x3ed5e8['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x579571['json']();},async 'getSyncFiles'(_0x3e5b24){if(!_0x3e5b24)throw new Error('Task\x20ID\x20is\x20required');const _0x41249f=await fetch(API_BASE+'/tasks/'+_0x3e5b24+'/sync-to-ibmi/files');if(!_0x41249f['ok']){const _0x431017=await _0x41249f['json']()['catch'](()=>({}));throw new Error(_0x431017['error']||_0x431017['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x41249f['json']();},async 'syncToIbmi'(_0x3195e8,_0x31eb53,_0x226cca=null,_0x14fee1=null,_0xf5f4c6=null){if(!_0x3195e8)throw new Error('Task\x20ID\x20is\x20required');const _0x493ff6={'library':_0x31eb53};if(_0x226cca)_0x493ff6['user']=_0x226cca;if(_0x14fee1)_0x493ff6['password']=_0x14fee1;if(_0xf5f4c6)_0x493ff6['files']=_0xf5f4c6;const _0x2a1da3=await fetch(API_BASE+'/tasks/'+_0x3195e8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493ff6)});if(!_0x2a1da3['ok']){const _0x56604c=await _0x2a1da3['json']()['catch'](()=>({}));throw new Error(_0x56604c['error']||_0x56604c['message']||'Sync\x20failed');}return await _0x2a1da3['json']();},async 'getIbmiSyncLog'(_0x4d5cef){if(!_0x4d5cef)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7239=await fetch(API_BASE+'/tasks/'+_0x4d5cef+'/ibmi-sync-log');if(!_0x3f7239['ok']){const _0x1478f4=await _0x3f7239['json']()['catch'](()=>({}));throw new Error(_0x1478f4['error']||_0x1478f4['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3f7239['json']();},async 'pullChanges'(_0x5ab069){if(!_0x5ab069)throw new Error('Task\x20ID\x20is\x20required');const _0x591df4=await fetch(API_BASE+'/tasks/'+_0x5ab069+'/pull-changes',{'method':'POST'});if(!_0x591df4['ok']){const _0x5e3177=await _0x591df4['json']()['catch'](()=>({}));throw new Error(_0x5e3177['error']||_0x5e3177['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x591df4['statusText']);}return await _0x591df4['json']();},async 'readFile'(_0x2e9962,_0x140c8f){if(!_0x2e9962)throw new Error('Task\x20ID\x20is\x20required');if(!_0x140c8f)throw new Error('File\x20path\x20is\x20required');const _0xaee0aa=await fetch(API_BASE+'/tasks/'+_0x2e9962+'/files?path='+encodeURIComponent(_0x140c8f));if(!_0xaee0aa['ok']){const _0x1eeaf8=await _0xaee0aa['json']()['catch'](()=>({}));throw new Error(_0x1eeaf8['error']||_0x1eeaf8['message']||'Failed\x20to\x20read\x20file:\x20'+_0xaee0aa['statusText']);}return await _0xaee0aa['json']();},'getTaskFileDownloadUrl'(_0x15b785,_0xa6b7df){if(!_0x15b785)throw new Error('Task\x20ID\x20is\x20required');if(!_0xa6b7df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x15b785+'/files/download?path='+encodeURIComponent(_0xa6b7df);},async 'writeFile'(_0x1d4811,_0x3a6d57,_0x2b8c8a){if(!_0x1d4811)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a6d57)throw new Error('File\x20path\x20is\x20required');if(_0x2b8c8a===undefined)throw new Error('Content\x20is\x20required');const _0x1e7ce9=await fetch(API_BASE+'/tasks/'+_0x1d4811+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a6d57,'content':_0x2b8c8a})});if(!_0x1e7ce9['ok']){const _0x47d463=await _0x1e7ce9['json']()['catch'](()=>({}));throw new Error(_0x47d463['error']||_0x47d463['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1e7ce9['statusText']);}return await _0x1e7ce9['json']();},async 'uploadTaskFiles'(_0x5a2d13,_0x269f5e,_0x595b9f){if(!_0x5a2d13)throw new Error('Task\x20ID\x20is\x20required');if(!_0x269f5e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x595b9f||_0x595b9f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3d490c=new FormData();_0x3d490c['append']('targetDir',_0x269f5e);for(const _0x1a84e9 of _0x595b9f){_0x3d490c['append']('files',_0x1a84e9,_0x1a84e9['name']);}const _0x1eae1b=await fetch(API_BASE+'/tasks/'+_0x5a2d13+'/files/upload',{'method':'POST','body':_0x3d490c});if(!_0x1eae1b['ok']){const _0x32d81d=await _0x1eae1b['json']()['catch'](()=>({}));throw new Error(_0x32d81d['error']||_0x32d81d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1eae1b['statusText']);}return await _0x1eae1b['json']();},async 'deleteFile'(_0xc9ce1f,_0x21c4c5){if(!_0xc9ce1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x21c4c5)throw new Error('File\x20path\x20is\x20required');const _0x4aaf7f=await fetch(API_BASE+'/tasks/'+_0xc9ce1f+'/files?path='+encodeURIComponent(_0x21c4c5),{'method':'DELETE'});if(!_0x4aaf7f['ok']){const _0x51353b=await _0x4aaf7f['json']()['catch'](()=>({}));throw new Error(_0x51353b['error']||_0x51353b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4aaf7f['statusText']);}return await _0x4aaf7f['json']();},async 'discardFile'(_0x2902c2,_0x2ac733,_0x46a693){if(!_0x2902c2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ac733)throw new Error('File\x20path\x20is\x20required');if(!_0x46a693)throw new Error('Repository\x20path\x20is\x20required');const _0x14b83c=await fetch(API_BASE+'/tasks/'+_0x2902c2+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2ac733,'repoPath':_0x46a693})});if(!_0x14b83c['ok']){const _0x2e88d0=await _0x14b83c['json']()['catch'](()=>({}));throw new Error(_0x2e88d0['error']||_0x2e88d0['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x14b83c['statusText']);}return await _0x14b83c['json']();},async 'followUpTask'(_0x3e5740,_0xb3047a={}){if(!_0x3e5740)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb3047a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5d0d4b,_0x2b426c={};if(_0xb3047a['files']&&_0xb3047a['files']['length']>0x0){const _0x2d8f6f=new FormData();_0x2d8f6f['append']('instructions',_0xb3047a['instructions']);for(const _0x46b74b of _0xb3047a['files']){_0x2d8f6f['append']('attachments',_0x46b74b);}_0x5d0d4b=_0x2d8f6f;}else _0x2b426c['Content-Type']='application/json',_0x5d0d4b=JSON['stringify']({'instructions':_0xb3047a['instructions']});const _0x21b158=await fetch(API_BASE+'/tasks/'+_0x3e5740+'/follow-up',{'method':'POST','headers':_0x2b426c,'body':_0x5d0d4b});if(!_0x21b158['ok']){const _0x486206=await _0x21b158['json']()['catch'](()=>({}));throw new Error(_0x486206['error']||_0x486206['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x21b158['statusText']);}return await _0x21b158['json']();},async 'getTaskRewindPoints'(_0x5539ec){if(!_0x5539ec)throw new Error('Task\x20ID\x20is\x20required');const _0xd08221=await fetch(API_BASE+'/tasks/'+_0x5539ec+'/rewind-points');if(!_0xd08221['ok']){const _0x34aecb=await _0xd08221['json']()['catch'](()=>({}));throw new Error(_0x34aecb['error']||_0x34aecb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xd08221['statusText']);}return await _0xd08221['json']();},async 'rewindTask'(_0x466493,_0x3339b4={}){if(!_0x466493)throw new Error('Task\x20ID\x20is\x20required');const _0x326ba3=Number['isInteger'](_0x3339b4['targetFollowUpCount'])?_0x3339b4['targetFollowUpCount']:0x0,_0x3d1184={'targetFollowUpCount':_0x326ba3};typeof _0x3339b4['instructions']==='string'&&_0x3339b4['instructions']['trim']()&&(_0x3d1184['instructions']=_0x3339b4['instructions']['trim']());typeof _0x3339b4['rewindFiles']==='boolean'&&(_0x3d1184['rewindFiles']=_0x3339b4['rewindFiles']);const _0x275045=await fetch(API_BASE+'/tasks/'+_0x466493+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d1184)});if(!_0x275045['ok']){const _0x15c6c2=await _0x275045['json']()['catch'](()=>({}));throw new Error(_0x15c6c2['error']||_0x15c6c2['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x275045['statusText']);}return await _0x275045['json']();},async 'login'(_0x31f8e8,_0x3002b4){const _0xb27d98=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x31f8e8,'password':_0x3002b4})});if(!_0xb27d98['ok']){const _0x16262a=await _0xb27d98['json']();throw new Error(_0x16262a['message']||'Login\x20failed');}return await _0xb27d98['json']();},async 'logout'(){const _0x276f6f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x276f6f['ok']){const _0x5f3252=await _0x276f6f['json']();throw new Error(_0x5f3252['message']||'Logout\x20failed');}return await _0x276f6f['json']();},async 'getCurrentUser'(){const _0x52027e=await fetch(API_BASE+'/auth/me');if(!_0x52027e['ok'])throw new Error('Not\x20authenticated');const _0x250f4c=await _0x52027e['json']();return _0x250f4c['user'];},async 'getRolesInfo'(){const _0x2dc927=await fetch(API_BASE+'/users/roles');if(!_0x2dc927['ok']){const _0x334e30=await _0x2dc927['json']();throw new Error(_0x334e30['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2dc927['json']();},async 'getUsers'(){const _0x447b25=await fetch(API_BASE+'/users');if(!_0x447b25['ok']){const _0x228e28=await _0x447b25['json']();throw new Error(_0x228e28['message']||'Failed\x20to\x20get\x20users');}return await _0x447b25['json']();},async 'getUser'(_0x1efa7b){const _0x592812=await fetch(API_BASE+'/users/'+_0x1efa7b);if(!_0x592812['ok']){const _0x22090b=await _0x592812['json']();throw new Error(_0x22090b['message']||'Failed\x20to\x20get\x20user');}return await _0x592812['json']();},async 'createUser'(_0x3eef7f){const _0xcd94b0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3eef7f)});if(!_0xcd94b0['ok']){const _0x1a9ec1=await _0xcd94b0['json']();throw new Error(_0x1a9ec1['message']||'Failed\x20to\x20create\x20user');}return await _0xcd94b0['json']();},async 'updateUser'(_0x33607b,_0x42ddd0){const _0x1a4d6c=await fetch(API_BASE+'/users/'+_0x33607b,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42ddd0)});if(!_0x1a4d6c['ok']){const _0x22a5c3=await _0x1a4d6c['json']();throw new Error(_0x22a5c3['message']||'Failed\x20to\x20update\x20user');}return await _0x1a4d6c['json']();},async 'deleteUser'(_0x487040){const _0x49e296=await fetch(API_BASE+'/users/'+_0x487040,{'method':'DELETE'});if(!_0x49e296['ok']){const _0x3c976d=await _0x49e296['json']();throw new Error(_0x3c976d['message']||'Failed\x20to\x20delete\x20user');}return await _0x49e296['json']();},async 'stopAllContainers'(){const _0x5c0ea7=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xfd1cf1=await _0x5c0ea7['json']()['catch'](()=>({}));if(!_0x5c0ea7['ok'])throw new Error(_0xfd1cf1['message']||_0xfd1cf1['error']||'Failed\x20to\x20stop\x20containers');return _0xfd1cf1;},async 'removeStoppedContainers'(){const _0x3f5b73=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5b78bc=await _0x3f5b73['json']()['catch'](()=>({}));if(!_0x3f5b73['ok'])throw new Error(_0x5b78bc['message']||_0x5b78bc['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5b78bc;},async 'pruneDockerResources'(){const _0x5e7633=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x509712=await _0x5e7633['json']()['catch'](()=>({}));if(!_0x5e7633['ok'])throw new Error(_0x509712['message']||_0x509712['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x509712;},async 'createPasswordToken'(_0xba54d,_0x447103='setup',_0x6944b=![]){const _0x17be97=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xba54d,'type':_0x447103,'sendEmail':_0x6944b})});if(!_0x17be97['ok']){const _0x7eb970=await _0x17be97['json']();throw new Error(_0x7eb970['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x17be97['json']();},async 'getEmailConfig'(){const _0x5a4c19=await fetch(API_BASE+'/password/email-config');if(!_0x5a4c19['ok']){const _0x20f9f4=await _0x5a4c19['json']();throw new Error(_0x20f9f4['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5a4c19['json']();},async 'updateTaskName'(_0x3365de,_0x429cd7){const _0x9f5401=await fetch(API_BASE+'/tasks/'+_0x3365de,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x429cd7})});if(!_0x9f5401['ok']){const _0xa453e7=await _0x9f5401['json']();throw new Error(_0xa453e7['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x9f5401['json']();},async 'pinTask'(_0x425b76,_0x4721fc,_0xdc3aa2=null){if(!_0x425b76)throw new Error('Task\x20ID\x20is\x20required');const _0xd44710={'pinned':_0x4721fc};_0xdc3aa2&&_0xdc3aa2['length']>0x0&&(_0xd44710['additionalTaskIds']=_0xdc3aa2);const _0x1f52c6=await fetch(API_BASE+'/tasks/'+_0x425b76+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd44710)});if(!_0x1f52c6['ok']){const _0x6bbaa7=await _0x1f52c6['json']();throw new Error(_0x6bbaa7['error']||'Failed\x20to\x20pin\x20task');}return await _0x1f52c6['json']();},async 'setTaskWinner'(_0x39e2d6,_0xfa33e2,_0x5de333=[]){if(!_0x39e2d6)throw new Error('Task\x20ID\x20is\x20required');const _0x38c557=await fetch(API_BASE+'/tasks/'+_0x39e2d6+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0xfa33e2,'siblings':_0x5de333})});if(!_0x38c557['ok']){const _0x381000=await _0x38c557['json']();throw new Error(_0x381000['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x38c557['json']();},async 'setTaskLoser'(_0x1e7f88,_0x2f242d){if(!_0x1e7f88)throw new Error('Task\x20ID\x20is\x20required');const _0x54050c=await fetch(API_BASE+'/tasks/'+_0x1e7f88+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2f242d})});if(!_0x54050c['ok']){const _0x421817=await _0x54050c['json']();throw new Error(_0x421817['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x54050c['json']();},async 'createTaskGroup'(_0x484682){const _0x869b30=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x484682)});if(!_0x869b30['ok']){const _0x1feb91=await _0x869b30['json']();throw new Error(_0x1feb91['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x869b30['json']();},async 'getTaskGroups'(_0x106d31={}){const _0x2f1556=new URLSearchParams();if(_0x106d31['userId'])_0x2f1556['set']('userId',String(_0x106d31['userId']));if(_0x106d31['status'])_0x2f1556['set']('status',String(_0x106d31['status']));if(_0x106d31['limit'])_0x2f1556['set']('limit',String(_0x106d31['limit']));const _0x231ee8=API_BASE+'/tasks/groups'+(_0x2f1556['toString']()?'?'+_0x2f1556['toString']():''),_0x3c7f3b=await fetch(_0x231ee8);if(!_0x3c7f3b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3c7f3b['json']();},async 'getTaskGroup'(_0x27cf30){const _0x53deff=await fetch(API_BASE+'/tasks/groups/'+_0x27cf30);if(!_0x53deff['ok']){const _0x583487=await _0x53deff['json']();throw new Error(_0x583487['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x53deff['json']();},async 'updateTaskGroup'(_0x28d3dd,_0x4d8ba4,_0x130dd3){const _0x484b8c=await fetch(API_BASE+'/tasks/'+_0x28d3dd+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d8ba4,'groupIndex':_0x130dd3})});if(!_0x484b8c['ok']){const _0x4931b5=await _0x484b8c['json']();throw new Error(_0x4931b5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x484b8c['json']();},async 'removeTaskFromGroup'(_0x35bf6d){return this['updateTaskGroup'](_0x35bf6d,null,null);},async 'deleteTaskGroup'(_0x48dabc,_0x155113=![]){const _0x3dc3ed=_0x155113?'?deleteTasks=true':'',_0x167e83=await fetch(API_BASE+'/tasks/groups/'+_0x48dabc+_0x3dc3ed,{'method':'DELETE'});if(!_0x167e83['ok']){const _0x43dcdd=await _0x167e83['json']();throw new Error(_0x43dcdd['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x32e8c1,_0x581fa1){const _0x3c4300=await fetch(API_BASE+'/tasks/groups/'+_0x32e8c1+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x581fa1})});if(!_0x3c4300['ok']){const _0x476d6c=await _0x3c4300['json']();throw new Error(_0x476d6c['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3c4300['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0xaad829){if(!_0xaad829)throw new Error('Task\x20ID\x20is\x20required');const _0x1fe6ec=await fetch(API_BASE+'/tasks/'+_0xaad829+'/comments');if(!_0x1fe6ec['ok']){const _0x122e90=await _0x1fe6ec['json']()['catch'](()=>({}));throw new Error(_0x122e90['error']||'Failed\x20to\x20get\x20comments');}return await _0x1fe6ec['json']();},async 'addComment'(_0x3d5f3e,_0x477547){if(!_0x3d5f3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477547)throw new Error('Comment\x20content\x20is\x20required');const _0x4a84a8=await fetch(API_BASE+'/tasks/'+_0x3d5f3e+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477547})});if(!_0x4a84a8['ok']){const _0x27f489=await _0x4a84a8['json']()['catch'](()=>({}));throw new Error(_0x27f489['error']||'Failed\x20to\x20add\x20comment');}return await _0x4a84a8['json']();},async 'updateComment'(_0x5d684a,_0x40ec18,_0xc7eb3){if(!_0x5d684a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40ec18)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xc7eb3)throw new Error('Comment\x20content\x20is\x20required');const _0xa9dfef=await fetch(API_BASE+'/tasks/'+_0x5d684a+'/comments/'+_0x40ec18,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc7eb3})});if(!_0xa9dfef['ok']){const _0x504f15=await _0xa9dfef['json']()['catch'](()=>({}));throw new Error(_0x504f15['error']||'Failed\x20to\x20update\x20comment');}return await _0xa9dfef['json']();},async 'deleteComment'(_0x4f7044,_0x47dcb1){if(!_0x4f7044)throw new Error('Task\x20ID\x20is\x20required');if(!_0x47dcb1)throw new Error('Comment\x20ID\x20is\x20required');const _0x4aba16=await fetch(API_BASE+'/tasks/'+_0x4f7044+'/comments/'+_0x47dcb1,{'method':'DELETE'});if(!_0x4aba16['ok']){const _0xc0b74f=await _0x4aba16['json']()['catch'](()=>({}));throw new Error(_0xc0b74f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4aba16['json']();},async 'createObjective'(_0x517e33){const _0x4dc78e={'objective':!![],'name':_0x517e33['name']||'','environment':_0x517e33['environment']||null,'agents':_0x517e33['agents']||[],'branches':_0x517e33['branches']||{},'isPinned':_0x517e33['isPinned']||![],'parentObjectiveId':_0x517e33['parentObjectiveId']||null,'env_vars':_0x517e33['envVars']||{},'parameters':{'instructions':_0x517e33['instructions']||''},'files':_0x517e33['files']||[],'jira':_0x517e33['jira']||null};return this['createTask'](_0x4dc78e);},async 'updateObjective'(_0x103a4b,_0x3d107b,_0x59c92b=[],_0x264377=[]){let _0x47934f,_0x3d3c21={};const _0xd1de9d={..._0x3d107b};_0x264377&&_0x264377['length']>0x0&&(_0xd1de9d['removeAttachments']=_0x264377);if(_0x59c92b&&_0x59c92b['length']>0x0){const _0x457d22=new FormData();for(const [_0x253cb1,_0x579286]of Object['entries'](_0xd1de9d)){if(_0x579286==null)continue;typeof _0x579286==='object'?_0x457d22['append'](_0x253cb1,JSON['stringify'](_0x579286)):_0x457d22['append'](_0x253cb1,String(_0x579286));}for(const _0x440116 of _0x59c92b){_0x457d22['append']('attachments',_0x440116);}_0x47934f=_0x457d22;}else _0x3d3c21['Content-Type']='application/json',_0x47934f=JSON['stringify'](_0xd1de9d);const _0x489dd7=await fetch(API_BASE+'/tasks/'+_0x103a4b,{'method':'PATCH','headers':_0x3d3c21,'body':_0x47934f});if(!_0x489dd7['ok']){const _0x3457f8=await _0x489dd7['json']();throw new Error(_0x3457f8['error']||'Failed\x20to\x20update\x20objective');}return await _0x489dd7['json']();},async 'deleteObjective'(_0x416c57){return this['deleteTask'](_0x416c57);},async 'launchObjective'(_0x20c36e,_0x48807e={}){const _0x504dc3=await fetch(API_BASE+'/tasks/'+_0x20c36e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48807e)});if(!_0x504dc3['ok']){const _0x487756=await _0x504dc3['json']();throw new Error(_0x487756['error']||'Failed\x20to\x20launch\x20objective');}return await _0x504dc3['json']();},async 'getObjectiveAttachments'(_0x302903){return this['getTaskAttachments'](_0x302903);},async 'createJudgeTask'({environment:_0x4bb041,judgeAgent:_0x573596,groupId:_0x4a834c,taskIds:_0x3cc56c,judgeCustomInstructions:_0xb0d9a2,isPinned:_0x4fd9fb}){const _0x828c95=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4bb041,'judgeAgent':_0x573596,'groupId':_0x4a834c,'taskIds':_0x3cc56c,'judgeCustomInstructions':_0xb0d9a2,'isPinned':_0x4fd9fb})});if(!_0x828c95['ok']){const _0x4ce816=await _0x828c95['json']();throw new Error(_0x4ce816['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x828c95['json']();},async 'getJudgeTasks'(_0x468838){const _0xf6844e=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x468838));if(!_0xf6844e['ok']){const _0x268874=await _0xf6844e['json']();throw new Error(_0x268874['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xf6844e['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x587c76,_0x1dacf9,_0x544d88=''){const _0x1a7799=await fetch(API_BASE+'/tasks/'+_0x587c76+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x1dacf9,'customPreamble':_0x544d88})});if(!_0x1a7799['ok']){const _0x5b16a2=await _0x1a7799['json']();throw new Error(_0x5b16a2['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1a7799['json']();},async 'getJiraConfig'(){const _0x4c4a17=await fetch(API_BASE+'/jira/config');if(!_0x4c4a17['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c4a17['json']();},async 'getJiraIssue'(_0x50c386){const _0x2be8e5=await fetch(API_BASE+'/jira/issues/'+_0x50c386);if(!_0x2be8e5['ok']){const _0x141606=await _0x2be8e5['json']()['catch'](()=>({}));throw new Error(_0x141606['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2be8e5['statusText']);}return await _0x2be8e5['json']();},async 'searchJiraIssues'(_0x445ddb,_0x39155b=0x14){const _0xa7a591=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x445ddb,'maxResults':_0x39155b})});if(!_0xa7a591['ok']){const _0x4c0fe0=await _0xa7a591['json']()['catch'](()=>({}));throw new Error(_0x4c0fe0['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xa7a591['statusText']);}return await _0xa7a591['json']();},async 'postJiraComment'(_0x59a68d,_0x6fef2f){const _0x1bdfe9=await fetch(API_BASE+'/jira/issues/'+_0x59a68d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x6fef2f})});if(!_0x1bdfe9['ok']){const _0x209969=await _0x1bdfe9['json']()['catch'](()=>({}));throw new Error(_0x209969['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1bdfe9['statusText']);}return await _0x1bdfe9['json']();},async 'getJiraComments'(_0x2fc7de){const _0x2ae76b=await fetch(API_BASE+'/jira/issues/'+_0x2fc7de+'/comments');if(!_0x2ae76b['ok']){const _0x5150c8=await _0x2ae76b['json']()['catch'](()=>({}));throw new Error(_0x5150c8['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2ae76b['statusText']);}return await _0x2ae76b['json']();},async 'promptParameter'({environment:_0x2bd44a,command:_0x737610,parser:parser='json'}){const _0xb1e4d3=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2bd44a,'command':_0x737610,'parser':parser})});if(!_0xb1e4d3['ok']){const _0x50973b=await _0xb1e4d3['json']()['catch'](()=>({}));throw new Error(_0x50973b['message']||_0x50973b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xb1e4d3['statusText']);}return await _0xb1e4d3['json']();},async 'promptParameterStream'(_0xd06eeb,_0x45731a){const _0x2ec1ba=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd06eeb)});if(!_0x2ec1ba['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ec1ba['statusText']);const _0x4bc463=_0x2ec1ba['body']['getReader'](),_0x5ba90f=new TextDecoder();let _0x337e38='';return new Promise((_0x5ca753,_0x409b3d)=>{const _0x143d15=async()=>{try{const {done:_0x2aa525,value:_0x423447}=await _0x4bc463['read']();if(_0x2aa525)return;_0x337e38+=_0x5ba90f['decode'](_0x423447,{'stream':!![]});const _0x22b12c=_0x337e38['split']('\x0a\x0a');_0x337e38=_0x22b12c['pop']()||'';for(const _0x465135 of _0x22b12c){if(!_0x465135['trim']())continue;const _0x1a1214=_0x465135['split']('\x0a');let _0xf498e9='message',_0x3f4df7='';for(const _0x2862b7 of _0x1a1214){if(_0x2862b7['startsWith']('event:'))_0xf498e9=_0x2862b7['substring'](0x6)['trim']();else _0x2862b7['startsWith']('data:')&&(_0x3f4df7=_0x2862b7['substring'](0x5)['trim']());}if(!_0x3f4df7)continue;try{const _0x22b239=JSON['parse'](_0x3f4df7);if(_0xf498e9==='progress'&&_0x45731a)_0x45731a(_0x22b239['stage'],_0x22b239['message']);else{if(_0xf498e9==='result'){_0x5ca753(_0x22b239);return;}else{if(_0xf498e9==='error'){let _0x34b2aa=_0x22b239['message']||_0x22b239['error']||'Prompt\x20command\x20failed';_0x22b239['rawOutput']&&(_0x34b2aa+='\x0a\x0aRaw\x20output:\x0a'+_0x22b239['rawOutput']);_0x409b3d(new Error(_0x34b2aa));return;}}}}catch(_0x423d64){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x423d64),console['error']('Event\x20type:',_0xf498e9),console['error']('Event\x20data:',_0x3f4df7),console['error']('First\x20200\x20chars:',_0x3f4df7['substring'](0x0,0xc8)),_0x409b3d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x423d64['message']+'\x0a\x0aData:\x20'+_0x3f4df7['substring'](0x0,0x1f4)));return;}}_0x143d15();}catch(_0x1ef6bd){_0x409b3d(_0x1ef6bd);}};_0x143d15();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3c1ff3){const _0x129e92=await fetch(''+API_BASE+_0x3c1ff3);if(!_0x129e92['ok']){const _0x828a86=await _0x129e92['json']()['catch'](()=>({'error':_0x129e92['statusText']})),_0x4921ce=new Error(_0x828a86['error']||_0x828a86['message']||_0x129e92['statusText']);if(_0x828a86['detail']!==undefined)_0x4921ce['detail']=_0x828a86['detail'];throw _0x4921ce;}return await _0x129e92['json']();},async 'post'(_0x50d93c,_0x1a9a19){const _0x5757d6=await fetch(''+API_BASE+_0x50d93c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a9a19)});if(!_0x5757d6['ok']){const _0x52fefd=await _0x5757d6['json']()['catch'](()=>({'error':_0x5757d6['statusText']})),_0x575bf1=new Error(_0x52fefd['error']||_0x52fefd['message']||_0x5757d6['statusText']);if(_0x52fefd['detail']!==undefined)_0x575bf1['detail']=_0x52fefd['detail'];throw _0x575bf1;}return await _0x5757d6['json']();},async 'put'(_0x33da44,_0x44c6f2){const _0x1031f3=await fetch(''+API_BASE+_0x33da44,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44c6f2)});if(!_0x1031f3['ok']){const _0x1ea500=await _0x1031f3['json']()['catch'](()=>({'error':_0x1031f3['statusText']})),_0x347cfc=new Error(_0x1ea500['error']||_0x1ea500['message']||_0x1031f3['statusText']);if(_0x1ea500['detail']!==undefined)_0x347cfc['detail']=_0x1ea500['detail'];throw _0x347cfc;}return await _0x1031f3['json']();},async 'delete'(_0x230207,_0x1dbdfb){const _0x562f9b={'method':'DELETE'};_0x1dbdfb&&(_0x562f9b['headers']={'Content-Type':'application/json'},_0x562f9b['body']=JSON['stringify'](_0x1dbdfb));const _0x220da4=await fetch(''+API_BASE+_0x230207,_0x562f9b);if(!_0x220da4['ok']){const _0x1e2df4=await _0x220da4['json']()['catch'](()=>({'error':_0x220da4['statusText']})),_0x3bdeda=new Error(_0x1e2df4['error']||_0x1e2df4['message']||_0x220da4['statusText']);if(_0x1e2df4['detail']!==undefined)_0x3bdeda['detail']=_0x1e2df4['detail'];throw _0x3bdeda;}return await _0x220da4['json']();},async 'getSkills'(){const _0x381428=await fetch(API_BASE+'/skills');if(!_0x381428['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x381428['statusText']);return await _0x381428['json']();},async 'getSkill'(_0x4561e0){const _0x148980=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4561e0));if(!_0x148980['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x148980['statusText']);return await _0x148980['json']();},async 'createSkill'(_0x2e63e9){const _0x1d84cf=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e63e9)});if(!_0x1d84cf['ok']){const _0x42d6a9=await _0x1d84cf['json']()['catch'](()=>({'error':_0x1d84cf['statusText']})),_0x44735e=new Error(_0x42d6a9['error']||_0x42d6a9['message']||_0x1d84cf['statusText']);if(_0x42d6a9['detail']!==undefined)_0x44735e['detail']=_0x42d6a9['detail'];throw _0x44735e;}return await _0x1d84cf['json']();},async 'updateSkill'(_0x1b0559,_0x113463){const _0x5b676f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b0559),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x113463)});if(!_0x5b676f['ok']){const _0xbed103=await _0x5b676f['json']()['catch'](()=>({'error':_0x5b676f['statusText']})),_0x3711d0=new Error(_0xbed103['error']||_0xbed103['message']||_0x5b676f['statusText']);if(_0xbed103['detail']!==undefined)_0x3711d0['detail']=_0xbed103['detail'];throw _0x3711d0;}return await _0x5b676f['json']();},async 'deleteSkill'(_0x1d3db6){const _0x3e80db=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d3db6),{'method':'DELETE'});if(!_0x3e80db['ok']){const _0x22ccf7=await _0x3e80db['json']()['catch'](()=>({'error':_0x3e80db['statusText']})),_0x42ff3f=new Error(_0x22ccf7['error']||_0x22ccf7['message']||_0x3e80db['statusText']);if(_0x22ccf7['detail']!==undefined)_0x42ff3f['detail']=_0x22ccf7['detail'];throw _0x42ff3f;}return await _0x3e80db['json']();},async 'getSkillFile'(_0x522174,_0x105d53){const _0x429475=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x522174)+'/files/'+_0x105d53);if(!_0x429475['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x429475['statusText']);return await _0x429475['json']();},async 'saveSkillFile'(_0x421f79,_0x2e1434,_0x36628e){const _0x4c86d9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x421f79)+'/files/'+_0x2e1434,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x36628e})});if(!_0x4c86d9['ok']){const _0x9b92b2=await _0x4c86d9['json']()['catch'](()=>({'error':_0x4c86d9['statusText']})),_0x4e1433=new Error(_0x9b92b2['error']||_0x9b92b2['message']||_0x4c86d9['statusText']);if(_0x9b92b2['detail']!==undefined)_0x4e1433['detail']=_0x9b92b2['detail'];throw _0x4e1433;}return await _0x4c86d9['json']();},async 'deleteSkillFile'(_0x716e51,_0x1e2c66){const _0x4c2323=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x716e51)+'/files/'+_0x1e2c66,{'method':'DELETE'});if(!_0x4c2323['ok']){const _0x1ac4f2=await _0x4c2323['json']()['catch'](()=>({'error':_0x4c2323['statusText']})),_0x3c356d=new Error(_0x1ac4f2['error']||_0x1ac4f2['message']||_0x4c2323['statusText']);if(_0x1ac4f2['detail']!==undefined)_0x3c356d['detail']=_0x1ac4f2['detail'];throw _0x3c356d;}return await _0x4c2323['json']();},async 'pullSkills'(){const _0x29c70d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x29c70d['ok']){const _0x2a3fcc=await _0x29c70d['json']()['catch'](()=>({'error':_0x29c70d['statusText']})),_0x264c1a=new Error(_0x2a3fcc['error']||_0x2a3fcc['message']||_0x29c70d['statusText']);if(_0x2a3fcc['detail']!==undefined)_0x264c1a['detail']=_0x2a3fcc['detail'];throw _0x264c1a;}return await _0x29c70d['json']();},async 'commitSkills'(_0x1eea7c,_0x21640a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x21640a,_0x3ddf1c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1eea7c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ddf1c['ok']){const _0x210b1a=await _0x3ddf1c['json']()['catch'](()=>({'error':_0x3ddf1c['statusText']})),_0x13e9f1=new Error(_0x210b1a['error']||_0x210b1a['message']||_0x3ddf1c['statusText']);if(_0x210b1a['detail']!==undefined)_0x13e9f1['detail']=_0x210b1a['detail'];throw _0x13e9f1;}return await _0x3ddf1c['json']();},async 'discardSkillsChanges'(){const _0x26de02=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x26de02['ok']){const _0x4b5f04=await _0x26de02['json']()['catch'](()=>({'error':_0x26de02['statusText']})),_0x3a5045=new Error(_0x4b5f04['error']||_0x4b5f04['message']||_0x26de02['statusText']);if(_0x4b5f04['detail']!==undefined)_0x3a5045['detail']=_0x4b5f04['detail'];throw _0x3a5045;}return await _0x26de02['json']();},async 'getSkillCatalog'(){const _0x347dd3=await fetch(API_BASE+'/external-skills/catalog');if(!_0x347dd3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x347dd3['statusText']);return await _0x347dd3['json']();},async 'getImportedSkillsRegistry'(){const _0x408740=await fetch(API_BASE+'/external-skills/registry');if(!_0x408740['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408740['statusText']);return await _0x408740['json']();},async 'importCatalogSkill'(_0x278a90){const _0x4f92e9=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x278a90})});if(!_0x4f92e9['ok']){const _0x4d651d=await _0x4f92e9['json']()['catch'](()=>({'error':_0x4f92e9['statusText']})),_0x135470=new Error(_0x4d651d['error']||_0x4d651d['message']||_0x4f92e9['statusText']);if(_0x4d651d['detail']!==undefined)_0x135470['detail']=_0x4d651d['detail'];throw _0x135470;}return await _0x4f92e9['json']();},async 'importSkillFromGit'(_0x52523d,_0x357ed4,_0x39abab='main',_0x3028a6=null){const _0x1503f0=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x52523d,'skillPath':_0x357ed4,'branch':_0x39abab,'skillId':_0x3028a6})});if(!_0x1503f0['ok']){const _0x13742f=await _0x1503f0['json']()['catch'](()=>({'error':_0x1503f0['statusText']})),_0x1db842=new Error(_0x13742f['error']||_0x13742f['message']||_0x1503f0['statusText']);if(_0x13742f['detail']!==undefined)_0x1db842['detail']=_0x13742f['detail'];throw _0x1db842;}return await _0x1503f0['json']();},async 'probeMarketplace'(_0x17e4cf,_0xbe4c3d='main'){const _0x2b6dd9=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x17e4cf,'branch':_0xbe4c3d})});if(!_0x2b6dd9['ok']){const _0x1aca12=await _0x2b6dd9['json']()['catch'](()=>({'error':_0x2b6dd9['statusText']})),_0x3f75ae=new Error(_0x1aca12['error']||_0x1aca12['message']||_0x2b6dd9['statusText']);if(_0x1aca12['detail']!==undefined)_0x3f75ae['detail']=_0x1aca12['detail'];throw _0x3f75ae;}return await _0x2b6dd9['json']();},async 'importMarketplaceBundle'(_0xf5ad2d,_0x1a902d,_0x123118,_0x16a855=null){const _0x54d86f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf5ad2d,'branch':_0x1a902d,'bundleId':_0x123118,'selectedSkills':_0x16a855})});if(!_0x54d86f['ok']){const _0x28fb48=await _0x54d86f['json']()['catch'](()=>({'error':_0x54d86f['statusText']})),_0x2ccc57=new Error(_0x28fb48['error']||_0x28fb48['message']||_0x54d86f['statusText']);if(_0x28fb48['detail']!==undefined)_0x2ccc57['detail']=_0x28fb48['detail'];throw _0x2ccc57;}return await _0x54d86f['json']();},async 'importSkillFromFolder'(_0x44f02c,_0x4f4703=null){const _0x27233c=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44f02c,'skillId':_0x4f4703})});if(!_0x27233c['ok']){const _0x3e6670=await _0x27233c['json']()['catch'](()=>({'error':_0x27233c['statusText']})),_0x1500a6=new Error(_0x3e6670['error']||_0x3e6670['message']||_0x27233c['statusText']);if(_0x3e6670['detail']!==undefined)_0x1500a6['detail']=_0x3e6670['detail'];throw _0x1500a6;}return await _0x27233c['json']();},async 'importSkillFromNpm'(_0x32b281,_0x213333='latest',_0x2c9904=null,_0x3867e4=null){const _0x119e13=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32b281,'version':_0x213333,'skillId':_0x2c9904,'registry':_0x3867e4})});if(!_0x119e13['ok']){const _0x4ec8be=await _0x119e13['json']()['catch'](()=>({'error':_0x119e13['statusText']})),_0x222af3=new Error(_0x4ec8be['error']||_0x4ec8be['message']||_0x119e13['statusText']);if(_0x4ec8be['detail']!==undefined)_0x222af3['detail']=_0x4ec8be['detail'];throw _0x222af3;}return await _0x119e13['json']();},async 'checkSkillUpdates'(_0x5a5689){const _0x474093=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5a5689)+'/check-updates',{'method':'POST'});if(!_0x474093['ok']){const _0x2e0855=await _0x474093['json']()['catch'](()=>({'error':_0x474093['statusText']})),_0x1e46ac=new Error(_0x2e0855['error']||_0x2e0855['message']||_0x474093['statusText']);if(_0x2e0855['detail']!==undefined)_0x1e46ac['detail']=_0x2e0855['detail'];throw _0x1e46ac;}return await _0x474093['json']();},async 'updateExternalSkill'(_0x2067fd){const _0x329aa7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2067fd)+'/update',{'method':'POST'});if(!_0x329aa7['ok']){const _0x353afc=await _0x329aa7['json']()['catch'](()=>({'error':_0x329aa7['statusText']})),_0x2c3896=new Error(_0x353afc['error']||_0x353afc['message']||_0x329aa7['statusText']);if(_0x353afc['detail']!==undefined)_0x2c3896['detail']=_0x353afc['detail'];throw _0x2c3896;}return await _0x329aa7['json']();},async 'updateSkillFlags'(_0x5f3a74,_0x405861){const _0x3a89aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f3a74)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x405861})});if(!_0x3a89aa['ok']){const _0x7ea689=await _0x3a89aa['json']()['catch'](()=>({'error':_0x3a89aa['statusText']})),_0x144000=new Error(_0x7ea689['error']||_0x7ea689['message']||_0x3a89aa['statusText']);if(_0x7ea689['detail']!==undefined)_0x144000['detail']=_0x7ea689['detail'];throw _0x144000;}return await _0x3a89aa['json']();},async 'removeFromImportedRegistry'(_0x40957b){const _0x491275=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40957b)+'/registry',{'method':'DELETE'});if(!_0x491275['ok']){const _0x36a40b=await _0x491275['json']()['catch'](()=>({'error':_0x491275['statusText']})),_0x1e95e2=new Error(_0x36a40b['error']||_0x36a40b['message']||_0x491275['statusText']);if(_0x36a40b['detail']!==undefined)_0x1e95e2['detail']=_0x36a40b['detail'];throw _0x1e95e2;}return await _0x491275['json']();},async 'getTeams'(){const _0x19587d=await fetch(API_BASE+'/teams');if(!_0x19587d['ok']){const _0x389376=await _0x19587d['json']()['catch'](()=>({'message':_0x19587d['statusText']}));throw new Error(_0x389376['message']||'Failed\x20to\x20get\x20teams');}return await _0x19587d['json']();},async 'getTeam'(_0x5cbf98){const _0x1abe12=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5cbf98));if(!_0x1abe12['ok']){const _0x57d0a7=await _0x1abe12['json']()['catch'](()=>({'message':_0x1abe12['statusText']}));throw new Error(_0x57d0a7['message']||'Failed\x20to\x20get\x20team');}return await _0x1abe12['json']();},async 'createTeam'(_0x3a13d5){const _0x6bf09f=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a13d5)});if(!_0x6bf09f['ok']){const _0x41d5a2=await _0x6bf09f['json']()['catch'](()=>({'message':_0x6bf09f['statusText']}));throw new Error(_0x41d5a2['message']||'Failed\x20to\x20create\x20team');}return await _0x6bf09f['json']();},async 'updateTeam'(_0x2b5c36,_0x2d1cc7){const _0x4628a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b5c36),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1cc7)});if(!_0x4628a2['ok']){const _0x2aeddb=await _0x4628a2['json']()['catch'](()=>({'message':_0x4628a2['statusText']}));throw new Error(_0x2aeddb['message']||'Failed\x20to\x20update\x20team');}return await _0x4628a2['json']();},async 'deleteTeam'(_0x44c701){const _0x1a4009=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44c701),{'method':'DELETE'});if(!_0x1a4009['ok']){const _0x591f38=await _0x1a4009['json']()['catch'](()=>({'message':_0x1a4009['statusText']}));throw new Error(_0x591f38['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a4009['json']();},async 'addTeamMember'(_0x3700e7,_0x2b849c){const _0x329213=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3700e7)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2b849c})});if(!_0x329213['ok']){const _0x2f8fa3=await _0x329213['json']()['catch'](()=>({'message':_0x329213['statusText']}));throw new Error(_0x2f8fa3['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x329213['json']();},async 'removeTeamMember'(_0x41de8c,_0x7bb887){const _0x4a5971=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x41de8c)+'/members/'+encodeURIComponent(_0x7bb887),{'method':'DELETE'});if(!_0x4a5971['ok']){const _0x306eca=await _0x4a5971['json']()['catch'](()=>({'message':_0x4a5971['statusText']}));throw new Error(_0x306eca['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4a5971['json']();},async 'getBindings'(_0x54f9b6={}){const _0x5db84f=new URLSearchParams();if(_0x54f9b6['resource_type'])_0x5db84f['set']('resource_type',_0x54f9b6['resource_type']);if(_0x54f9b6['resource_id'])_0x5db84f['set']('resource_id',_0x54f9b6['resource_id']);if(_0x54f9b6['subject_type'])_0x5db84f['set']('subject_type',_0x54f9b6['subject_type']);if(_0x54f9b6['subject_id'])_0x5db84f['set']('subject_id',_0x54f9b6['subject_id']);const _0x4de104=_0x5db84f['toString'](),_0x499c2c=await fetch(API_BASE+'/bindings'+(_0x4de104?'?'+_0x4de104:''));if(!_0x499c2c['ok']){const _0x42142f=await _0x499c2c['json']()['catch'](()=>({'message':_0x499c2c['statusText']}));throw new Error(_0x42142f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x499c2c['json']();},async 'createBinding'(_0x3072d0){const _0x33d64b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072d0)});if(!_0x33d64b['ok']){const _0x34cd35=await _0x33d64b['json']()['catch'](()=>({'message':_0x33d64b['statusText']}));throw new Error(_0x34cd35['message']||'Failed\x20to\x20create\x20binding');}return await _0x33d64b['json']();},async 'updateBinding'(_0x548e01,_0x43f7ce){const _0x47f39b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x548e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43f7ce)});if(!_0x47f39b['ok']){const _0x40e75d=await _0x47f39b['json']()['catch'](()=>({'message':_0x47f39b['statusText']}));throw new Error(_0x40e75d['message']||'Failed\x20to\x20update\x20binding');}return await _0x47f39b['json']();},async 'deleteBinding'(_0x122143){const _0x275e57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x122143),{'method':'DELETE'});if(!_0x275e57['ok']){const _0x432566=await _0x275e57['json']()['catch'](()=>({'message':_0x275e57['statusText']}));throw new Error(_0x432566['message']||'Failed\x20to\x20delete\x20binding');}return await _0x275e57['json']();},async 'getRoleDefinitions'(){const _0xbda060=await fetch(API_BASE+'/roles');if(!_0xbda060['ok']){const _0x477e72=await _0xbda060['json']()['catch'](()=>({'message':_0xbda060['statusText']}));throw new Error(_0x477e72['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xbda060['json']();},async 'getRoleDefinition'(_0x16a7a5){const _0x56d69e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x16a7a5));if(!_0x56d69e['ok']){const _0x5ee600=await _0x56d69e['json']()['catch'](()=>({'message':_0x56d69e['statusText']}));throw new Error(_0x5ee600['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x56d69e['json']();},async 'createRoleDefinition'(_0xd221f3){const _0x404ec5=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd221f3)});if(!_0x404ec5['ok']){const _0x13217e=await _0x404ec5['json']()['catch'](()=>({'message':_0x404ec5['statusText']}));throw new Error(_0x13217e['message']||_0x13217e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x404ec5['json']();},async 'updateRoleDefinition'(_0x358ff4,_0x26f110){const _0x327957=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358ff4),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f110)});if(!_0x327957['ok']){const _0x4a5af5=await _0x327957['json']()['catch'](()=>({'message':_0x327957['statusText']}));throw new Error(_0x4a5af5['message']||_0x4a5af5['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x327957['json']();},async 'deleteRoleDefinition'(_0x2f0d57){const _0x5e0383=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2f0d57),{'method':'DELETE'});if(!_0x5e0383['ok']){const _0xb2f665=await _0x5e0383['json']()['catch'](()=>({'message':_0x5e0383['statusText']}));throw new Error(_0xb2f665['message']||_0xb2f665['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5e0383['json']();},async 'getAvailablePermissions'(){const _0x533d81=await fetch(API_BASE+'/roles/available-permissions');if(!_0x533d81['ok']){const _0x208b40=await _0x533d81['json']()['catch'](()=>({'message':_0x533d81['statusText']}));throw new Error(_0x208b40['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x533d81['json']();},async 'getGitProviderAllowedTeams'(_0x51982c){const _0x5f0b50=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x51982c)+'/allowed-teams');if(!_0x5f0b50['ok']){const _0xe98061=await _0x5f0b50['json']()['catch'](()=>({'message':_0x5f0b50['statusText']}));throw new Error(_0xe98061['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5f0b50['json']();},async 'setGitProviderAllowedTeams'(_0x24ffc9,_0x324a80){const _0x46771f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24ffc9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x324a80})});if(!_0x46771f['ok']){const _0xd28db4=await _0x46771f['json']()['catch'](()=>({'message':_0x46771f['statusText']}));throw new Error(_0xd28db4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x46771f['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 _0x344900=toastState['baseBottom'];toastState['toasts']['forEach'](_0x435af2=>{_0x435af2['el']['style']['bottom']=_0x344900+'px';const _0xff551=_0x435af2['el']['offsetHeight']||toastState['defaultHeight'];_0x344900+=_0xff551+toastState['gap'];});});}function removeToastById(_0x3e00cf){const _0x2ef120=toastState['toasts']['findIndex'](_0x28a26e=>_0x28a26e['id']===_0x3e00cf);if(_0x2ef120===-0x1)return;const _0x342d71=toastState['toasts'][_0x2ef120];if(_0x342d71['timeoutId'])clearTimeout(_0x342d71['timeoutId']);_0x342d71['el']['classList']['remove']('show'),setTimeout(()=>_0x342d71['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2ef120,0x1),repositionAllToasts();}function registerToast(_0x39d585){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x39d585),repositionAllToasts(),_0x39d585['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(_0x4947fa){if(_0x4947fa===null||_0x4947fa===undefined)return'';return String(_0x4947fa)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x32a4b6,_0x312aeb){if(_0x32a4b6&&typeof _0x32a4b6==='object'&&!Array['isArray'](_0x32a4b6))return{'code':typeof _0x32a4b6['text']==='string'?_0x32a4b6['text']:'','language':typeof _0x32a4b6['lang']==='string'?_0x32a4b6['lang']:''};return{'code':typeof _0x32a4b6==='string'?_0x32a4b6:'','language':typeof _0x312aeb==='string'?_0x312aeb:''};}function buildMermaidBlock(_0x9a1762){const _0x11f14e=String(_0x9a1762||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x11f14e))+'\x22>'+escapeHtmlValue(_0x11f14e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x392c34=new marked['Renderer'](),_0x2bc123=_0x392c34['code']['bind'](_0x392c34);return _0x392c34['code']=function(_0x3122a0,_0x492ffe,..._0x2a3c67){const {code:_0x4e62d4,language:_0xb11a33}=getMarkdownCodeBlockPayload(_0x3122a0,_0x492ffe),_0x1b713b=String(_0xb11a33||'')['trim']()['toLowerCase']();if(_0x1b713b==='mermaid')return buildMermaidBlock(_0x4e62d4);const _0x1e4add=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1e4add&&_0x1b713b)try{const _0x11882f=_0x1e4add['getLanguage'](_0x1b713b)?_0x1b713b:'plaintext',_0x1e11b4=_0x1e4add['highlight'](_0x4e62d4,{'language':_0x11882f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1b713b)+'\x22>'+_0x1e11b4+'</code></pre>';}catch(_0x1105af){console['error']('Syntax\x20highlighting\x20error:',_0x1105af);}return _0x2bc123(_0x3122a0,_0x492ffe,..._0x2a3c67);},sharedMarkedRenderer=_0x392c34,_0x392c34;}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 _0x41a11a=window['mermaid'];if(!_0x41a11a||typeof _0x41a11a['initialize']!=='function')return _0x41a11a||null;return _0x41a11a['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x41a11a;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x3a3505,_0x2df75b)=>{const _0x11e16e=()=>_0x3a3505(configureMermaidInstance()),_0x176721=()=>{mermaidLoadPromise=null,_0x2df75b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x531134=document['getElementById'](MERMAID_SCRIPT_ID);!_0x531134&&(_0x531134=document['createElement']('script'),_0x531134['id']=MERMAID_SCRIPT_ID,_0x531134['src']=MERMAID_SCRIPT_SRC,_0x531134['async']=!![],document['head']['appendChild'](_0x531134));if(window['mermaid']){_0x11e16e();return;}_0x531134['addEventListener']('load',_0x11e16e,{'once':!![]}),_0x531134['addEventListener']('error',_0x176721,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4c4d62){const _0x3e2789=_0x4c4d62['getAttribute']('data-mermaid-source');if(!_0x3e2789)return null;let _0x1d6b6a=_0x3e2789;try{_0x1d6b6a=decodeURIComponent(_0x3e2789);}catch{}return _0x4c4d62['textContent']=_0x1d6b6a,_0x4c4d62['removeAttribute']('data-processed'),_0x4c4d62['removeAttribute']('aria-roledescription'),_0x4c4d62['removeAttribute']('role'),_0x4c4d62['removeAttribute']('aria-label'),_0x1d6b6a;}function collectMermaidNodes(_0x23a0c0,_0x50f099){if(!(_0x23a0c0 instanceof Element))return;_0x23a0c0['matches']('.mermaid[data-mermaid-source]')&&_0x50f099['add'](_0x23a0c0),_0x23a0c0['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ff5d6=>{_0x50f099['add'](_0x3ff5d6);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x1d5580=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xd934c2=>setTimeout(_0xd934c2,0x0);_0x1d5580(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3dfaf7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3dfaf7);});});}function queueMermaidRender(_0x5d853e){const _0x337187=new Set();_0x5d853e instanceof Document||_0x5d853e instanceof DocumentFragment?_0x5d853e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5da542=>_0x337187['add'](_0x5da542)):collectMermaidNodes(_0x5d853e,_0x337187);if(_0x337187['size']===0x0)return;_0x337187['forEach'](_0x526be8=>pendingMermaidNodes['add'](_0x526be8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x106ac7=Array['from'](pendingMermaidNodes)['filter'](_0x38d3b7=>_0x38d3b7['isConnected']);pendingMermaidNodes['clear']();if(_0x106ac7['length']===0x0)return;const _0x1b449f=await loadMermaid();if(!_0x1b449f)return;configureMermaidInstance();const _0x322123=getMermaidTheme();for(const _0xad8470 of _0x106ac7){const _0x862247=_0xad8470['getAttribute']('data-mermaid-source');if(!_0x862247)continue;const _0x5a9384=_0xad8470['getAttribute']('data-processed')==='true';if(_0x5a9384&&_0xad8470['dataset']['mermaidTheme']===_0x322123)continue;restoreMermaidSource(_0xad8470);try{if(typeof _0x1b449f['run']==='function')await _0x1b449f['run']({'nodes':[_0xad8470]});else typeof _0x1b449f['init']==='function'&&_0x1b449f['init'](undefined,[_0xad8470]);_0xad8470['dataset']['mermaidTheme']=_0x322123,delete _0xad8470['dataset']['mermaidError'];}catch(_0x1cf238){console['error']('Mermaid\x20render\x20failed:',_0x1cf238),restoreMermaidSource(_0xad8470),_0xad8470['dataset']['mermaidError']='true',delete _0xad8470['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xac5186=>{_0xac5186['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0xac5186);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x12ea9d=>{_0x12ea9d['forEach'](_0x353b10=>{_0x353b10['addedNodes']['forEach'](_0x169b33=>{_0x169b33['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x169b33);});});}),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'(_0x9efbbe){const _0x1693a6=new Date(_0x9efbbe),_0x4fe98b=new Date(),_0xe179d=_0x4fe98b-_0x1693a6,_0x4f4925=Math['floor'](_0xe179d/0x3e8),_0x56b7fe=Math['floor'](_0x4f4925/0x3c),_0x572de9=Math['floor'](_0x56b7fe/0x3c),_0x1c39c3=Math['floor'](_0x572de9/0x18);if(_0x4f4925<0x3c)return'now';if(_0x56b7fe<0x3c)return _0x56b7fe+'m\x20ago';if(_0x572de9<0x18)return _0x572de9+'h\x20ago';return _0x1c39c3+'d\x20ago';},'getStatusIcon'(_0x389617){switch(_0x389617){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3fbe71){switch(_0x3fbe71){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'(_0x46585d,_0x352c7e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1ba749={};_0x1ba749['text/plain']=new Blob([_0x46585d],{'type':'text/plain'});_0x352c7e&&(_0x1ba749['text/html']=new Blob([_0x352c7e],{'type':'text/html'}));const _0x5ea660=new ClipboardItem(_0x1ba749);return await navigator['clipboard']['write']([_0x5ea660]),!![];}catch(_0xc80507){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc80507);}try{const _0xcc013f=_0x2a3032=>{_0x2a3032['preventDefault'](),_0x2a3032['clipboardData']['setData']('text/plain',_0x46585d),_0x352c7e&&_0x2a3032['clipboardData']['setData']('text/html',_0x352c7e);};document['addEventListener']('copy',_0xcc013f);const _0x26726f=document['execCommand']('copy');document['removeEventListener']('copy',_0xcc013f);if(_0x26726f)return!![];}catch(_0x56c056){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x56c056);}try{const _0x50de16=document['createElement']('textarea');_0x50de16['value']=_0x46585d,_0x50de16['style']['position']='fixed',_0x50de16['style']['opacity']='0',_0x50de16['style']['pointerEvents']='none',document['body']['appendChild'](_0x50de16),_0x50de16['select']();const _0xcdf81f=document['execCommand']('copy');return document['body']['removeChild'](_0x50de16),_0xcdf81f;}catch(_0x372baf){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x372baf),![];}},'showToast'(_0x3750f5,_0x26177c='info'){const _0x51a9be=getNextToastId(),_0x5d8d73=document['createElement']('div');_0x5d8d73['className']='toast\x20toast-'+_0x26177c,_0x5d8d73['textContent']=_0x3750f5,_0x5d8d73['dataset']['toastId']=_0x51a9be,document['body']['appendChild'](_0x5d8d73);const _0x4026ed=_0x26177c==='error'?0x2710:0xbb8,_0x17ce37=setTimeout(()=>{removeToastById(_0x51a9be);},_0x4026ed),_0x3970f0={'id':_0x51a9be,'el':_0x5d8d73,'timeoutId':_0x17ce37};return registerToast(_0x3970f0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d8d73['classList']['add']('show');});}),_0x51a9be;},'showError'(_0x291f79){console['error'](_0x291f79);const _0x412c04=typeof _0x291f79==='string'?_0x291f79:_0x291f79['message']||'An\x20error\x20occurred';this['showToast'](_0x412c04,'error');},'showSuccess'(_0x45888a){this['showToast'](_0x45888a,'success');},'capitalize'(_0xeab409){if(!_0xeab409)return'';return _0xeab409['charAt'](0x0)['toUpperCase']()+_0xeab409['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x40496d){return escapeHtmlValue(_0x40496d);},'ansiToHtml'(_0x2d3769){if(_0x2d3769===null||_0x2d3769===undefined)return'';let _0x198f71=this['escapeHtml'](_0x2d3769);const _0xf1dc52={'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'},_0x2da1c3={'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 _0x5d9ac9=0x0;return _0x198f71=_0x198f71['replace'](/\x1b\[([0-9;]*)m/g,(_0x3c020d,_0x3c91bd)=>{if(!_0x3c91bd||_0x3c91bd==='0'){const _0x476314='</span>'['repeat'](_0x5d9ac9);return _0x5d9ac9=0x0,_0x476314;}const _0x4afc18=_0x3c91bd['split'](';'),_0x38c830=[];for(const _0xe6b293 of _0x4afc18){if(_0xe6b293==='1')_0x38c830['push']('font-weight:bold');else{if(_0xe6b293==='2')_0x38c830['push']('opacity:0.7');else{if(_0xe6b293==='3')_0x38c830['push']('font-style:italic');else{if(_0xe6b293==='4')_0x38c830['push']('text-decoration:underline');else{if(_0xe6b293==='9')_0x38c830['push']('text-decoration:line-through');else{if(_0xf1dc52[_0xe6b293])_0x38c830['push']('color:'+_0xf1dc52[_0xe6b293]);else{if(_0x2da1c3[_0xe6b293])_0x38c830['push']('background-color:'+_0x2da1c3[_0xe6b293]);}}}}}}}if(_0x38c830['length']>0x0)return _0x5d9ac9++,'<span\x20style=\x22'+_0x38c830['join'](';')+'\x22>';return'';}),_0x198f71+='</span>'['repeat'](_0x5d9ac9),_0x198f71=_0x198f71['replace'](/\\u001b\[([0-9;]*)m/g,(_0x13c475,_0x156547)=>{if(!_0x156547||_0x156547==='0')return'';const _0x35d051=_0x156547['split'](';'),_0x4c7566=[];for(const _0x1ec952 of _0x35d051){if(_0x1ec952==='1')_0x4c7566['push']('font-weight:bold');else{if(_0xf1dc52[_0x1ec952])_0x4c7566['push']('color:'+_0xf1dc52[_0x1ec952]);else{if(_0x2da1c3[_0x1ec952])_0x4c7566['push']('background-color:'+_0x2da1c3[_0x1ec952]);}}}if(_0x4c7566['length']>0x0)return'<span\x20style=\x22'+_0x4c7566['join'](';')+'\x22>';return'';}),_0x198f71;},'showModal'({title:_0x1cbafc,content:_0x42236d,buttons:buttons=[]}){const _0x5a5250='\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'](_0x1cbafc)+'</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'+_0x42236d+'\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']((_0x297e80,_0x58e90f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x297e80['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x58e90f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x297e80['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',_0x45b195=document['createElement']('div');_0x45b195['id']='utils-modal',_0x45b195['className']='modal',_0x45b195['innerHTML']=_0x5a5250,document['body']['appendChild'](_0x45b195);const _0x350202=document['getElementById']('utils-modal-close');_0x350202&&_0x350202['addEventListener']('click',()=>this['hideModal']());const _0x380eed=_0x45b195['querySelectorAll']('[data-btn-index]');_0x380eed['forEach'](_0x40396d=>{const _0x1a4181=parseInt(_0x40396d['dataset']['btnIndex']);buttons[_0x1a4181]?.['onClick']&&_0x40396d['addEventListener']('click',buttons[_0x1a4181]['onClick']);});const _0x524598=document['getElementById']('utils-modal-overlay');_0x524598&&_0x524598['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x512a4d=document['getElementById']('utils-modal');_0x512a4d&&_0x512a4d['remove']();},'parseKeyValuePairs'(_0x1a8d09){const _0x35a481={};if(!_0x1a8d09)return _0x35a481;return _0x1a8d09['split'](/\r?\n/)['map'](_0x5d515a=>_0x5d515a['trim']())['filter'](Boolean)['forEach'](_0x45c2a6=>{const _0x16e7bf=_0x45c2a6['indexOf']('=');if(_0x16e7bf>0x0){const _0x5cb69b=_0x45c2a6['slice'](0x0,_0x16e7bf)['trim'](),_0x4d0378=_0x45c2a6['slice'](_0x16e7bf+0x1)['trim']();if(_0x5cb69b)_0x35a481[_0x5cb69b]=_0x4d0378;}}),_0x35a481;},'debounce'(_0x3c7a1a,_0x4aaa7b=0xfa){let _0x2c6291=null;return(..._0x355a7c)=>{clearTimeout(_0x2c6291),_0x2c6291=setTimeout(()=>_0x3c7a1a['apply'](this,_0x355a7c),_0x4aaa7b);};},'formatTimestamp'(_0x51d0b6){if(!_0x51d0b6)return'N/A';const _0x329a86=new Date(_0x51d0b6);return _0x329a86['toLocaleDateString']()+'\x20'+_0x329a86['toLocaleTimeString']();},'getQueryParams'(){const _0x51942b=new URLSearchParams(window['location']['search']),_0x5338b1={};for(const [_0x4dfb1a,_0xdcb44a]of _0x51942b){_0x5338b1[_0x4dfb1a]=_0xdcb44a;}return _0x5338b1;},'formatDuration'(_0x3ff272,_0x21401b){if(!_0x3ff272)return'N/A';const _0x575a5f=new Date(_0x3ff272),_0x26ef1b=_0x21401b?new Date(_0x21401b):new Date(),_0x2fd6cc=_0x26ef1b-_0x575a5f;if(_0x2fd6cc<0x0)return'0s';const _0x285684=Math['floor'](_0x2fd6cc/0x3e8),_0x239c53=Math['floor'](_0x285684/0x3c),_0x120c91=Math['floor'](_0x239c53/0x3c),_0x12ea7f=Math['floor'](_0x120c91/0x18);if(_0x285684<0x3c)return _0x285684+'s';if(_0x239c53<0x3c)return _0x239c53+'m\x20'+_0x285684%0x3c+'s';if(_0x120c91<0x18)return _0x120c91+'h\x20'+_0x239c53%0x3c+'m\x20'+_0x285684%0x3c+'s';return _0x12ea7f+'d\x20'+_0x120c91%0x18+'h\x20'+_0x239c53%0x3c+'m';},'renderMarkdown'(_0x580345,_0x2a92ae={}){if(!_0x580345)return'';_0x580345=this['rewriteAttachmentLinks'](_0x580345,_0x2a92ae),_0x580345=this['rewriteColorSyntax'](_0x580345);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x580345);}catch(_0x3618c0){return console['error']('Markdown\x20parsing\x20error:',_0x3618c0),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);}},'rewriteAttachmentLinks'(_0x37d6d8,_0x3937f4={}){const _0x12f12c=typeof _0x3937f4['resolveAttachmentUrl']==='function'?_0x3937f4['resolveAttachmentUrl']:_0x3937f4['taskId']?_0x103636=>API_BASE+'/tasks/'+_0x3937f4['taskId']+'/attachments/'+encodeURIComponent(_0x103636):null;if(!_0x12f12c)return _0x37d6d8;return String(_0x37d6d8)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x242280,_0x9dcf5e)=>{const _0x327920=String(_0x9dcf5e||'')['trim']();if(!_0x327920)return _0x242280;let _0x213611=_0x327920;try{_0x213611=decodeURIComponent(_0x327920);}catch{}const _0x4e357e=_0x12f12c(_0x213611);if(!_0x4e357e)return _0x242280;return']('+_0x4e357e+')';});},'rewriteColorSyntax'(_0x45c142){if(!_0x45c142)return _0x45c142;return String(_0x45c142)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x38716d,_0x23be16,_0x1fec9c)=>{const _0x323753=this['rewriteColorSyntax'](_0x1fec9c);return'<span\x20style=\x22color:\x20'+_0x23be16+'\x22>'+_0x323753+'</span>';});},'renderMarkdownFallback'(_0x2c0860,_0x47fc4c={}){if(!_0x2c0860)return'';_0x2c0860=_0x2c0860['replace'](/\r\n/g,'\x0a'),_0x2c0860=_0x2c0860['replace'](/\r/g,'\x0a'),_0x2c0860=this['rewriteAttachmentLinks'](_0x2c0860,_0x47fc4c);let _0x3bdcfb=this['escapeHtml'](_0x2c0860);return _0x3bdcfb=_0x3bdcfb['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3bdcfb=_0x3bdcfb['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3bdcfb=_0x3bdcfb['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3bdcfb=_0x3bdcfb['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3bdcfb=_0x3bdcfb['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3bdcfb=_0x3bdcfb['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3bdcfb=_0x3bdcfb['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n\n/g,'</p><p>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n/g,'<br>'),'<p>'+_0x3bdcfb+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3512d4=new Uint8Array(0x10);crypto['getRandomValues'](_0x3512d4),_0x3512d4[0x6]=_0x3512d4[0x6]&0xf|0x40,_0x3512d4[0x8]=_0x3512d4[0x8]&0x3f|0x80;const _0x211beb=Array['from'](_0x3512d4,_0x3a610d=>_0x3a610d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x211beb['slice'](0x0,0x8)+'-'+_0x211beb['slice'](0x8,0xc)+'-'+_0x211beb['slice'](0xc,0x10)+'-'+_0x211beb['slice'](0x10,0x14)+'-'+_0x211beb['slice'](0x14);}};export class CustomSelect{constructor(_0x1ad0b4,_0x4297e8={}){this['nativeSelect']=_0x1ad0b4,this['options']=_0x4297e8,this['isOpen']=![],this['selectedValue']=_0x1ad0b4['value']||'',this['searchable']=_0x4297e8['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0xd9cee5=document['createElement']('div');_0xd9cee5['className']='custom-select';const _0x5152ad=document['createElement']('div');_0x5152ad['className']='custom-select-trigger',_0x5152ad['setAttribute']('tabindex','0'),_0x5152ad['setAttribute']('role','button'),_0x5152ad['setAttribute']('aria-haspopup','listbox');const _0x267518=document['createElement']('span');_0x267518['className']='custom-select-trigger-text';const _0x24bca4=document['createElement']('span');_0x24bca4['className']='custom-select-arrow',_0x24bca4['textContent']='▼',_0x5152ad['appendChild'](_0x267518),_0x5152ad['appendChild'](_0x24bca4);const _0x1ac0b4=document['createElement']('div');_0x1ac0b4['className']='custom-select-dropdown',_0x1ac0b4['setAttribute']('role','listbox');if(this['searchable']){const _0x7f1796=document['createElement']('div');_0x7f1796['className']='custom-select-search';const _0x24afa0=document['createElement']('input');_0x24afa0['type']='text',_0x24afa0['className']='custom-select-search-input',_0x24afa0['placeholder']='Type\x20to\x20search...',_0x24afa0['setAttribute']('aria-label','Search\x20options'),_0x24afa0['addEventListener']('input',_0x936666=>{this['searchQuery']=_0x936666['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x24afa0['addEventListener']('keydown',_0x242fb5=>{if(_0x242fb5['key']==='Escape')_0x242fb5['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x242fb5['key']==='Enter'){_0x242fb5['preventDefault'](),_0x242fb5['stopPropagation']();const _0x1da4ab=_0x1ac0b4['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1da4ab){const _0x3d054e=_0x1da4ab['getAttribute']('data-value');this['select'](_0x3d054e);}}}}),_0x7f1796['appendChild'](_0x24afa0),_0x1ac0b4['appendChild'](_0x7f1796),this['searchInput']=_0x24afa0;}const _0x28c34b=document['createElement']('div');_0x28c34b['className']='custom-select-options',_0x1ac0b4['appendChild'](_0x28c34b),_0xd9cee5['appendChild'](_0x5152ad),_0xd9cee5['appendChild'](_0x1ac0b4),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0xd9cee5,this['nativeSelect']),this['wrapper']=_0xd9cee5,this['trigger']=_0x5152ad,this['triggerText']=_0x267518,this['dropdown']=_0x1ac0b4,this['optionsContainer']=_0x28c34b,_0x5152ad['addEventListener']('click',()=>this['toggle']()),_0x5152ad['addEventListener']('keydown',_0xbfc325=>this['handleKeydown'](_0xbfc325)),document['addEventListener']('click',_0x358a54=>{!_0xd9cee5['contains'](_0x358a54['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x25f20d=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x25f20d['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x44b919=new MutationObserver(()=>{this['updateDisabledState']();});_0x44b919['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42c82f=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42c82f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3ed07c=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3ed07c),this['trigger']['setAttribute']('aria-disabled',_0x3ed07c?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3ed07c?'-1':'0'),_0x3ed07c&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2fffe6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x8d71cf=_0x2fffe6['filter'](_0x5e36f0=>!_0x5e36f0['disabled']&&!_0x5e36f0['hidden']);_0x2fffe6['forEach']((_0x395043,_0x24341a)=>{const _0x2fd42d=document['createElement']('div');_0x2fd42d['className']='custom-select-option',_0x2fd42d['textContent']=_0x395043['textContent'],_0x2fd42d['setAttribute']('data-value',_0x395043['value']),_0x2fd42d['setAttribute']('data-index',_0x24341a),_0x2fd42d['setAttribute']('role','option'),_0x395043['disabled']?_0x2fd42d['classList']['add']('disabled'):_0x2fd42d['addEventListener']('click',()=>this['select'](_0x395043['value'])),_0x395043['value']===this['selectedValue']&&_0x2fd42d['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2fd42d),this['allOptions']['push']({'element':_0x2fd42d,'text':_0x395043['textContent']['toLowerCase'](),'value':_0x395043['value'],'disabled':_0x395043['disabled']});});if(this['searchable']&&this['searchInput']){const _0x54af67=this['searchInput']['parentElement'];_0x8d71cf['length']>0x3?_0x54af67['style']['display']='':_0x54af67['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x26b7d5=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3c7204=>{if(!_0x26b7d5||_0x3c7204['disabled'])_0x3c7204['element']['style']['display']='';else{const _0x3ea67f=_0x3c7204['text']['includes'](_0x26b7d5);_0x3c7204['element']['style']['display']=_0x3ea67f?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x43f169){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x43f169,this['nativeSelect']['value']=_0x43f169;const _0x554a03=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x554a03),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x359b60=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x359b60&&(this['triggerText']['textContent']=_0x359b60['textContent'],_0x359b60['disabled']||_0x359b60['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x207989=>{_0x207989['getAttribute']('data-value')===this['selectedValue']?_0x207989['classList']['add']('selected'):_0x207989['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 _0x109a3d=window['getComputedStyle'](this['dropdown']);if(_0x109a3d['position']==='fixed'){const _0x130ab7=this['trigger']['getBoundingClientRect'](),_0xe7e0b3=parseInt(_0x109a3d['maxHeight'])||0xc8,_0x5368db=window['innerHeight'],_0x3e4df2=_0x5368db-_0x130ab7['bottom'],_0x105899=_0x130ab7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4e3c27;_0x3e4df2<_0xe7e0b3&&_0x105899>_0x3e4df2?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5368db-_0x130ab7['top']+'px',_0x4e3c27=Math['min'](_0xe7e0b3,_0x105899-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x130ab7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4e3c27=Math['min'](_0xe7e0b3,_0x3e4df2-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px');if(this['optionsContainer']){let _0x5ea2e2=_0x4e3c27;if(this['searchInput']){const _0x528be5=this['searchInput']['parentElement'];_0x528be5&&(_0x5ea2e2-=_0x528be5['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ea2e2)+'px';}this['dropdown']['style']['left']=_0x130ab7['left']+'px',this['dropdown']['style']['width']=_0x130ab7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x23152a=this['searchInput']['parentElement'];_0x23152a&&_0x23152a['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'](_0x46eba2){if(this['nativeSelect']['disabled'])return;if(_0x46eba2['key']==='Enter'||_0x46eba2['key']==='\x20')_0x46eba2['preventDefault'](),this['toggle']();else _0x46eba2['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5b5b80='\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',_0x5b5b80),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xf00283=document['getElementById']('confirm-dialog-close'),_0x3d6fae=document['getElementById']('confirm-dialog-cancel'),_0x44dc88=document['getElementById']('confirm-dialog-confirm'),_0x403f4e=this['_modal']['querySelector']('.modal-overlay');_0xf00283['addEventListener']('click',()=>this['_resolve'](![])),_0x3d6fae['addEventListener']('click',()=>this['_resolve'](![])),_0x44dc88['addEventListener']('click',()=>this['_resolve'](!![])),_0x403f4e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x885363=>{if(_0x885363['key']==='Escape')_0x885363['preventDefault'](),this['_resolve'](![]);else _0x885363['key']==='Enter'&&(_0x885363['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x289e6b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x16df9a=>{this['_resolvePromise']=_0x16df9a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x289e6b;const _0x30066c=document['getElementById']('confirm-dialog-cancel'),_0x53780f=document['getElementById']('confirm-dialog-confirm');_0x30066c['textContent']=cancelText,_0x53780f['textContent']=confirmText,_0x53780f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x53780f['focus']();});},'_resolve'(_0x547c3d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x547c3d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1a3f87,_0x3b0aa3={}){this['container']=_0x1a3f87,this['options']={'placeholder':_0x3b0aa3['placeholder']||'Type\x20to\x20search...','maxItems':_0x3b0aa3['maxItems']||0x64,'loadItems':_0x3b0aa3['loadItems']||(async()=>[]),'renderItem':_0x3b0aa3['renderItem']||(_0x30beef=>({'primary':String(_0x30beef),'secondary':''})),'onSelect':_0x3b0aa3['onSelect']||(()=>{}),'filterItems':_0x3b0aa3['filterItems']||null,'getItemValue':_0x3b0aa3['getItemValue']||(_0x250957=>_0x250957),'sortItems':_0x3b0aa3['sortItems']||null,'debounceMs':_0x3b0aa3['debounceMs']||0xc8,'minCharsForSearch':_0x3b0aa3['minCharsForSearch']||0x0,'emptyMessage':_0x3b0aa3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x3b0aa3['loadingMessage']||'Loading...','preload':_0x3b0aa3['preload']!==![],'searchMode':_0x3b0aa3['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',_0x17a6e8=>this['onBlur'](_0x17a6e8)),this['input']['addEventListener']('input',_0x214723=>this['onInput'](_0x214723)),this['input']['addEventListener']('keydown',_0x2e8cdd=>this['onKeydown'](_0x2e8cdd)),this['clearBtn']['addEventListener']('mousedown',_0x516f03=>{_0x516f03['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25f750=>{_0x25f750['preventDefault']();}),document['addEventListener']('click',_0x487260=>{!this['wrapper']['contains'](_0x487260['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(_0x7964ab){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x7964ab);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c759){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5cd13c){const _0x207a8b=_0x5cd13c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x207a8b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x207a8b):this['loadAndShow'](_0x207a8b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4cf526){switch(_0x4cf526['key']){case'ArrowDown':_0x4cf526['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4cf526['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4cf526['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4cf526['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37dc99){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x32dd83=this['selectedIndex']+_0x37dc99;if(_0x32dd83>=0x0&&_0x32dd83<this['filteredItems']['length']){this['selectedIndex']=_0x32dd83,this['updateSelectionHighlight']();const _0x1de69b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1de69b[this['selectedIndex']]&&_0x1de69b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2c684a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c684a['forEach']((_0x5aeaa5,_0x109dee)=>{_0x5aeaa5['classList']['toggle']('keyboard-selected',_0x109dee===this['selectedIndex']);});}async['loadAndShow'](_0x245ecb){this['showLoading']();try{const _0x38cb58=await this['options']['loadItems'](_0x245ecb);if(this['options']['searchMode']==='server'){let _0x28bba4=_0x38cb58;this['options']['sortItems']&&(_0x28bba4=this['options']['sortItems']([..._0x38cb58]));this['filteredItems']=_0x28bba4;const _0x32f56b=this['filteredItems']['length']>=this['options']['maxItems'];_0x32f56b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x32f56b),this['open']();}else this['allItems']=_0x38cb58,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x245ecb);}catch(_0x72ec37){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x72ec37),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x558629){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x558629):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5f06df=this['filteredItems']['length']>=this['options']['maxItems'];_0x5f06df&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5f06df),this['open']();}['renderItems'](_0x5cb050){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']((_0x3607bb,_0x55cbc8)=>{const _0x4df8fd=document['createElement']('div');_0x4df8fd['className']='autocomplete-select-item',_0x4df8fd['setAttribute']('role','option'),_0x4df8fd['setAttribute']('data-index',_0x55cbc8);const _0x64c304=this['options']['renderItem'](_0x3607bb);let _0x3591b2='';_0x64c304['icon']&&(_0x3591b2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x64c304['iconClass']||'')+'\x22>'+_0x64c304['icon']+'</span>'),_0x4df8fd['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3591b2+'\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'](_0x64c304['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x64c304['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x64c304['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4df8fd['addEventListener']('click',()=>{this['selectItem'](_0x3607bb);}),_0x4df8fd['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55cbc8,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4df8fd);}),_0x5cb050?(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'](_0x5f11c8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5f11c8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3c240a){this['selectedItem']=_0x3c240a;const _0x8ed926=this['options']['renderItem'](_0x3c240a);this['input']['value']=_0x8ed926['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3c240a);}['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'](_0xd08b82){if(_0xd08b82){this['selectedItem']=_0xd08b82;const _0x2e4645=this['options']['renderItem'](_0xd08b82);this['input']['value']=_0x2e4645['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x582cf8){this['allItems']=_0x582cf8,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'](_0x225dbf){this['input']['placeholder']=_0x225dbf;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xeaba9e=null){const _0x4f5c0c=document['getElementById']('admin-menu-container'),_0x40b87a=document['getElementById']('admin-menu-btn'),_0x193114=document['getElementById']('admin-menu');if(!_0x4f5c0c||!_0x40b87a||!_0x193114)return;try{!_0xeaba9e&&(_0xeaba9e=await API['getCurrentUser']());if(_0xeaba9e){const _0x175197=window['Permissions'],_0x2d99d8=_0x175197['hasServerPermission'](_0xeaba9e,'*')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:manage')||_0x175197['hasServerPermission'](_0xeaba9e,'users:create')||_0x175197['hasTeamPermission'](_0xeaba9e,'teams:manage')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:view_details');if(!_0x2d99d8)return;_0x4f5c0c['hidden']=![];if(!_0x175197['hasServerPermission'](_0xeaba9e,'*')){const _0x1fa734=_0x193114['querySelectorAll']('.admin-menu-item');_0x1fa734['forEach'](_0x2f7e03=>{const _0x1c21d5=_0x2f7e03['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1c21d5==='Users'&&!_0x175197['hasServerPermission'](_0xeaba9e,'users:create')&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Skills'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Settings'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Health'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Git\x20History'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Roles'&&(_0x2f7e03['hidden']=!![]);});}_0x40b87a['addEventListener']('click',_0x2728ed=>{_0x2728ed['stopPropagation']();const _0x469deb=document['getElementById']('actions-menu');if(_0x469deb)_0x469deb['hidden']=!![];_0x193114['hidden']=!_0x193114['hidden'];}),document['addEventListener']('click',_0x242925=>{!_0x193114['hidden']&&!_0x40b87a['contains'](_0x242925['target'])&&!_0x193114['contains'](_0x242925['target'])&&(_0x193114['hidden']=!![]);}),document['addEventListener']('keydown',_0x186167=>{_0x186167['key']==='Escape'&&!_0x193114['hidden']&&(_0x193114['hidden']=!![]);});const _0x424684=document['getElementById']('server-health-btn');_0x424684&&_0x424684['addEventListener']('click',async()=>{_0x193114['hidden']=!![];const {openServerHealthModal:_0x3cface}=await import('./server-health.js');_0x3cface();});}}catch(_0x5834bb){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5834bb['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 _0x478d1e=window['location']['pathname'],_0x153d9d=_0x478d1e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x153d9d)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x153d9d[0x1]),_0x153d9d[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3ff65b={}){const _0x4cfaa5=new URLSearchParams();_0x3ff65b['userId']&&_0x4cfaa5['set']('userId',String(_0x3ff65b['userId']));_0x3ff65b['automation']&&_0x4cfaa5['set']('automation',String(_0x3ff65b['automation']));const _0x3a46e9=API_BASE+'/tasks/stats'+(_0x4cfaa5['toString']()?'?'+_0x4cfaa5['toString']():''),_0x42fbc8=await fetch(_0x3a46e9);if(!_0x42fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42fbc8['statusText']);return await _0x42fbc8['json']();},async 'getTasks'(_0x2f8d20={}){const _0x3a356c=new URLSearchParams();_0x2f8d20['status']&&_0x3a356c['set']('status',String(_0x2f8d20['status']));_0x2f8d20['environment']&&_0x3a356c['set']('environment',String(_0x2f8d20['environment']));_0x2f8d20['automation']&&_0x3a356c['set']('automation',String(_0x2f8d20['automation']));if(_0x2f8d20['include']){const _0x2ee5c9=Array['isArray'](_0x2f8d20['include'])?_0x2f8d20['include']['join'](','):String(_0x2f8d20['include']);_0x2ee5c9&&_0x3a356c['set']('include',_0x2ee5c9);}_0x2f8d20['filter']&&_0x3a356c['set']('filter',String(_0x2f8d20['filter']));_0x2f8d20['page']&&_0x3a356c['set']('page',String(_0x2f8d20['page']));_0x2f8d20['limit']&&_0x3a356c['set']('limit',String(_0x2f8d20['limit']));_0x2f8d20['userId']&&_0x3a356c['set']('userId',String(_0x2f8d20['userId']));_0x2f8d20['search']&&_0x3a356c['set']('search',String(_0x2f8d20['search']));_0x2f8d20['includeChildTasks']&&_0x3a356c['set']('includeChildTasks','true');const _0x105b79=API_BASE+'/tasks'+(_0x3a356c['toString']()?'?'+_0x3a356c['toString']():''),_0x22c0e2=await fetch(_0x105b79);if(!_0x22c0e2['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x22c0e2['statusText']);return await _0x22c0e2['json']();},async 'getAutomations'(_0x32a1ef={}){const _0x29f5a1=new URLSearchParams();_0x32a1ef['environment']&&_0x29f5a1['set']('environment',String(_0x32a1ef['environment']));const _0x2ba613=await fetch(API_BASE+'/api/automations'+(_0x29f5a1['toString']()?'?'+_0x29f5a1['toString']():''));if(!_0x2ba613['ok']){const _0x595f2a=await _0x2ba613['json']()['catch'](()=>({}));throw new Error(_0x595f2a['message']||_0x595f2a['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ba613['statusText']);}return await _0x2ba613['json']();},async 'getAutomation'(_0x5c18ad){const _0x1453c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c18ad));if(!_0x1453c0['ok']){const _0x1e0774=await _0x1453c0['json']()['catch'](()=>({}));throw new Error(_0x1e0774['message']||_0x1e0774['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x1453c0['statusText']);}return await _0x1453c0['json']();},async 'createAutomation'(_0x935aab){const _0x54bec9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x935aab||{})});if(!_0x54bec9['ok']){const _0x21906d=await _0x54bec9['json']()['catch'](()=>({}));throw new Error(_0x21906d['message']||_0x21906d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54bec9['statusText']);}return await _0x54bec9['json']();},async 'updateAutomation'(_0x27a019,_0x18897f){const _0x410181=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27a019),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18897f||{})});if(!_0x410181['ok']){const _0x4d3072=await _0x410181['json']()['catch'](()=>({}));throw new Error(_0x4d3072['message']||_0x4d3072['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x410181['statusText']);}return await _0x410181['json']();},async 'deleteAutomation'(_0x588e6e){const _0x4ae845=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x588e6e),{'method':'DELETE'});if(!_0x4ae845['ok']){const _0x41e3e7=await _0x4ae845['json']()['catch'](()=>({}));throw new Error(_0x41e3e7['message']||_0x41e3e7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4ae845['statusText']);}return await _0x4ae845['json']();},async 'triggerAutomation'(_0x38bf14){const _0x1495e4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x38bf14)+'/trigger',{'method':'POST'});if(!_0x1495e4['ok']){const _0x3a88a2=await _0x1495e4['json']()['catch'](()=>({}));throw new Error(_0x3a88a2['message']||_0x3a88a2['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x1495e4['statusText']);}return await _0x1495e4['json']();},async 'setAutomationEnabled'(_0xa81284,_0x47a1e7){const _0x3c8250=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa81284)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x47a1e7})});if(!_0x3c8250['ok']){const _0x109bc9=await _0x3c8250['json']()['catch'](()=>({}));throw new Error(_0x109bc9['message']||_0x109bc9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3c8250['statusText']);}return await _0x3c8250['json']();},async 'getAutomationHistory'(_0x5c1913,_0x4c8a57=0x32){const _0x5cbbd3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c1913)+'/history?limit='+encodeURIComponent(String(_0x4c8a57)));if(!_0x5cbbd3['ok']){const _0x5c004a=await _0x5cbbd3['json']()['catch'](()=>({}));throw new Error(_0x5c004a['message']||_0x5c004a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5cbbd3['statusText']);}return await _0x5cbbd3['json']();},async 'getTask'(_0x5d599a,_0x40dc7c={}){const _0x187bfb=new URLSearchParams();if(_0x40dc7c['include']){const _0x2adef7=Array['isArray'](_0x40dc7c['include'])?_0x40dc7c['include']['join'](','):String(_0x40dc7c['include']);if(_0x2adef7)_0x187bfb['set']('include',_0x2adef7);}const _0x39b1c3=await fetch(API_BASE+'/tasks/'+_0x5d599a+(_0x187bfb['toString']()?'?'+_0x187bfb['toString']():''));if(!_0x39b1c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39b1c3['statusText']);return await _0x39b1c3['json']();},async 'getTaskResults'(_0x47268b){const _0x4af2e7=await fetch(API_BASE+'/tasks/'+_0x47268b+'/results');if(!_0x4af2e7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4af2e7['statusText']);return await _0x4af2e7['json']();},async 'getTaskPatches'(_0x2332e8){const _0x833c3a=await fetch(API_BASE+'/tasks/'+_0x2332e8+'/patches');if(!_0x833c3a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x833c3a['statusText']);return await _0x833c3a['json']();},async 'getTaskAttachments'(_0x44218b){const _0x241683=await fetch(API_BASE+'/tasks/'+_0x44218b+'/attachments');if(!_0x241683['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x241683['statusText']);return await _0x241683['json']();},async 'uploadAttachments'(_0x57d105,_0x3cd3c9){const _0x1e2d84=new FormData();for(const _0x31c505 of _0x3cd3c9){_0x1e2d84['append']('attachments',_0x31c505);}const _0x1bd0d0=await fetch(API_BASE+'/tasks/'+_0x57d105+'/attachments',{'method':'POST','body':_0x1e2d84});if(!_0x1bd0d0['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1bd0d0['statusText']);return await _0x1bd0d0['json']();},async 'isAINameGenerationAvailable'(){try{const _0x102192=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x102192['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x102192['json']();}catch(_0x424296){return{'available':![],'reason':_0x424296['message']};}},async 'generateTaskName'(_0x41406a){try{const _0x197bb5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x41406a})});return await _0x197bb5['json']();}catch(_0x2f5643){return{'success':![],'error':_0x2f5643['message']};}},async 'createTask'(_0x507fc2){let _0x149dc2,_0x14a113={};if(_0x507fc2['files']&&_0x507fc2['files']['length']>0x0){const _0x243c40=new FormData();for(const [_0x5844d8,_0x306da0]of Object['entries'](_0x507fc2)){if(_0x5844d8!=='files'){if(_0x306da0==null)continue;typeof _0x306da0==='object'?_0x243c40['append'](_0x5844d8,JSON['stringify'](_0x306da0)):_0x243c40['append'](_0x5844d8,String(_0x306da0));}}for(const _0x2e90fc of _0x507fc2['files']){_0x243c40['append']('attachments',_0x2e90fc);}_0x149dc2=_0x243c40;}else _0x14a113['Content-Type']='application/json',_0x149dc2=JSON['stringify'](_0x507fc2);const _0x4aee42=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x14a113,'body':_0x149dc2});if(!_0x4aee42['ok']){const _0x154b75=await _0x4aee42['json'](),_0xeaefba=new Error(_0x154b75['error']||'Failed\x20to\x20create\x20task:\x20'+_0x4aee42['statusText']),{message:_0x3882cd,..._0x42d185}=_0x154b75;Object['assign'](_0xeaefba,_0x42d185);throw _0xeaefba;}return await _0x4aee42['json']();},async 'createTestTask'(_0x55758a){const _0xf7e1e3=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55758a)});if(!_0xf7e1e3['ok']){const _0x222c35=await _0xf7e1e3['json']();throw new Error(_0x222c35['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xf7e1e3['statusText']);}return await _0xf7e1e3['json']();},async 'createEphemeralTest'(_0x3adca3){const _0x31b14e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3adca3)});if(!_0x31b14e['ok']){const _0x400f20=await _0x31b14e['json']();throw new Error(_0x400f20['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x31b14e['statusText']);}return await _0x31b14e['json']();},async 'createDeployTask'(_0xe54a85){const _0x2bfd99=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe54a85)});if(!_0x2bfd99['ok']){const _0x14dba9=await _0x2bfd99['json']();throw new Error(_0x14dba9['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2bfd99['statusText']);}return await _0x2bfd99['json']();},async 'getEnvironments'(){const _0x227c4e=await fetch(API_BASE+'/environments');if(!_0x227c4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x227c4e['statusText']);return await _0x227c4e['json']();},async 'getEnvironment'(_0x4f6c1f){const _0x462327=await fetch(API_BASE+'/environments/'+_0x4f6c1f);if(!_0x462327['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x462327['statusText']);return await _0x462327['json']();},async 'getEnvironmentRepoHistory'(_0x3b3a35,_0x58cc79,_0x228cad={}){if(!_0x3b3a35||!_0x58cc79)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x8d9089=new URLSearchParams();if(_0x228cad['limit'])_0x8d9089['set']('limit',String(_0x228cad['limit']));if(_0x228cad['offset'])_0x8d9089['set']('offset',String(_0x228cad['offset']));if(_0x228cad['search'])_0x8d9089['set']('search',String(_0x228cad['search']));if(_0x228cad['branch'])_0x8d9089['set']('branch',String(_0x228cad['branch']));const _0x56c47a=API_BASE+'/environments/'+encodeURIComponent(_0x3b3a35)+'/repos/'+encodeURIComponent(_0x58cc79)+'/git/history',_0x25b399=await fetch(''+_0x56c47a+(_0x8d9089['toString']()?'?'+_0x8d9089['toString']():''));if(!_0x25b399['ok']){const _0x82d95f=await _0x25b399['json']()['catch'](()=>({}));throw new Error(_0x82d95f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x25b399['statusText']);}return await _0x25b399['json']();},async 'getEnvironmentRepoCommit'(_0x27ab5b,_0x1cee47,_0x50d100){if(!_0x27ab5b||!_0x1cee47||!_0x50d100)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4c74c8=API_BASE+'/environments/'+encodeURIComponent(_0x27ab5b)+'/repos/'+encodeURIComponent(_0x1cee47)+'/git/commits/'+encodeURIComponent(_0x50d100),_0x273ad4=await fetch(_0x4c74c8);if(!_0x273ad4['ok']){const _0x4b81b9=await _0x273ad4['json']()['catch'](()=>({}));throw new Error(_0x4b81b9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x273ad4['statusText']);}return await _0x273ad4['json']();},async 'getEnvironmentRepoBranches'(_0x3763d6,_0x4674ab){if(!_0x3763d6||!_0x4674ab)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a1378=API_BASE+'/environments/'+encodeURIComponent(_0x3763d6)+'/repos/'+encodeURIComponent(_0x4674ab)+'/git/branches',_0x51040d=await fetch(_0x3a1378);if(!_0x51040d['ok']){const _0x558c54=await _0x51040d['json']()['catch'](()=>({}));throw new Error(_0x558c54['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x51040d['statusText']);}return await _0x51040d['json']();},async 'revertEnvironmentRepoCommit'(_0x62487,_0x14cc89,_0x40d5df,_0xfc9fec={}){if(!_0x62487||!_0x14cc89||!_0x40d5df)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4e1099=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x62487)+'/repos/'+encodeURIComponent(_0x14cc89)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x40d5df,..._0xfc9fec})});if(!_0x4e1099['ok']){const _0x2ee149=await _0x4e1099['json']()['catch'](()=>({}));throw new Error(_0x2ee149['message']||_0x2ee149['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4e1099['statusText']);}return await _0x4e1099['json']();},async 'getTemplates'(_0x21a608={}){const _0x480d7e=new URLSearchParams();if(_0x21a608['include']){const _0x528cce=Array['isArray'](_0x21a608['include'])?_0x21a608['include']['join'](','):String(_0x21a608['include']);if(_0x528cce)_0x480d7e['set']('include',_0x528cce);}const _0x3b2e36=await fetch(API_BASE+'/templates'+(_0x480d7e['toString']()?'?'+_0x480d7e['toString']():''));if(!_0x3b2e36['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3b2e36['statusText']);return await _0x3b2e36['json']();},async 'getTemplatesForEnvironment'(_0x21843a,_0x39bdc1={}){if(!_0x21843a)throw new Error('Environment\x20name\x20is\x20required');const _0x157094=new URLSearchParams();if(_0x39bdc1['include']){const _0x15bd24=Array['isArray'](_0x39bdc1['include'])?_0x39bdc1['include']['join'](','):String(_0x39bdc1['include']);if(_0x15bd24)_0x157094['set']('include',_0x15bd24);}const _0x771b78=await fetch(API_BASE+'/templates/'+_0x21843a+(_0x157094['toString']()?'?'+_0x157094['toString']():''));if(!_0x771b78['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x21843a+':\x20'+_0x771b78['statusText']);return await _0x771b78['json']();},async 'getTemplate'(_0x56760e,_0x207dce,_0x3356f0={}){if(!_0x56760e||!_0x207dce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4cba66=new URLSearchParams();if(_0x3356f0['include']){const _0x50a5e7=Array['isArray'](_0x3356f0['include'])?_0x3356f0['include']['join'](','):String(_0x3356f0['include']);if(_0x50a5e7)_0x4cba66['set']('include',_0x50a5e7);}const _0x940645=await fetch(API_BASE+'/templates/'+_0x56760e+'/'+_0x207dce+(_0x4cba66['toString']()?'?'+_0x4cba66['toString']():''));if(!_0x940645['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x940645['statusText']);return await _0x940645['json']();},async 'getTaskLogs'(_0x33c9ba,_0x3dbdc4={}){if(!_0x33c9ba)throw new Error('Task\x20ID\x20is\x20required');const _0xfe3a8b=new URLSearchParams();_0x3dbdc4['tail']&&_0xfe3a8b['set']('tail',String(_0x3dbdc4['tail']));const _0x49f4b4=await fetch(API_BASE+'/tasks/'+_0x33c9ba+'/logs'+(_0xfe3a8b['toString']()?'?'+_0xfe3a8b['toString']():''));if(!_0x49f4b4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x49f4b4['statusText']);return await _0x49f4b4['text']();},async 'getContainers'(){const _0x1b43ae=await fetch(API_BASE+'/containers');if(!_0x1b43ae['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1b43ae['statusText']);return await _0x1b43ae['json']();},async 'getContainer'(_0x3ece04){const _0x5ea67b=await fetch(API_BASE+'/containers/'+_0x3ece04);if(!_0x5ea67b['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ea67b['statusText']);return await _0x5ea67b['json']();},async 'startInteractiveContainer'(_0x3ae865){const _0x1bf748=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ae865)});if(!_0x1bf748['ok']){const _0x298881=await _0x1bf748['json']()['catch'](()=>({}));throw new Error(_0x298881['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1bf748['statusText']);}return await _0x1bf748['json']();},async 'stopContainer'(_0x3f5861){const _0x3a3c7f=await fetch(API_BASE+'/containers/'+_0x3f5861,{'method':'DELETE'});if(!_0x3a3c7f['ok']){const _0xc359ff=await _0x3a3c7f['json']()['catch'](()=>({}));throw new Error(_0xc359ff['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3a3c7f['statusText']);}return await _0x3a3c7f['json']();},async 'stopTask'(_0x45a5b8){if(!_0x45a5b8)throw new Error('Task\x20ID\x20is\x20required');const _0x11f746=await fetch(API_BASE+'/tasks/'+_0x45a5b8+'/stop',{'method':'POST'});if(!_0x11f746['ok']){const _0x1f76e8=await _0x11f746['json']()['catch'](()=>({}));throw new Error(_0x1f76e8['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x11f746['statusText']);}return await _0x11f746['json']();},async 'interruptTask'(_0x4bf36b){if(!_0x4bf36b)throw new Error('Task\x20ID\x20is\x20required');const _0x40cc74=await fetch(API_BASE+'/tasks/'+_0x4bf36b+'/interrupt',{'method':'POST'});if(!_0x40cc74['ok']){const _0xd5edfc=await _0x40cc74['json']()['catch'](()=>({}));throw new Error(_0xd5edfc['error']||_0xd5edfc['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x40cc74['statusText']);}return await _0x40cc74['json']();},async 'startTask'(_0x5b15a5){if(!_0x5b15a5)throw new Error('Task\x20ID\x20is\x20required');const _0x4e261f=await fetch(API_BASE+'/tasks/'+_0x5b15a5+'/start',{'method':'POST'});if(!_0x4e261f['ok']){const _0x138eb2=await _0x4e261f['json']()['catch'](()=>({}));throw new Error(_0x138eb2['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4e261f['statusText']);}return await _0x4e261f['json']();},async 'deleteTask'(_0x1804d1){if(!_0x1804d1)throw new Error('Task\x20ID\x20is\x20required');const _0x23fc56=await fetch(API_BASE+'/tasks/'+_0x1804d1,{'method':'DELETE'});if(!_0x23fc56['ok']){const _0x11866b=await _0x23fc56['json']()['catch'](()=>({}));throw new Error(_0x11866b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23fc56['statusText']);}return await _0x23fc56['json']();},async 'refreshTasksFromDisk'(){const _0x1f02d9=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f02d9['ok']){const _0x11038c=await _0x1f02d9['json']()['catch'](()=>({}));throw new Error(_0x11038c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f02d9['statusText']);}return await _0x1f02d9['json']();},async 'approveTask'(_0x388316,_0x4652b8={}){if(!_0x388316)throw new Error('Task\x20ID\x20is\x20required');const _0x512a4c={'commit_message':_0x4652b8['commit_message']||'','pull':_0x4652b8['pull']??![],'push':_0x4652b8['push']??![]};_0x4652b8['new_branch']&&(_0x512a4c['new_branch']=_0x4652b8['new_branch']);const _0x1411e7=await fetch(API_BASE+'/tasks/'+_0x388316+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512a4c)});if(!_0x1411e7['ok']){const _0x49c7ba=await _0x1411e7['json']()['catch'](()=>({}));let _0xfe6d92=_0x49c7ba['error']||_0x49c7ba['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1411e7['statusText'];if(_0x49c7ba['results']&&Array['isArray'](_0x49c7ba['results'])){const _0x44ea70=_0x49c7ba['results']['filter'](_0x5e6f0f=>!_0x5e6f0f['success']&&_0x5e6f0f['error']);_0x44ea70['length']>0x0&&(_0xfe6d92=_0x44ea70[0x0]['error']);}throw new Error(_0xfe6d92);}return await _0x1411e7['json']();},async 'getPullRequestInfo'(_0x550a89){if(!_0x550a89)throw new Error('Task\x20ID\x20is\x20required');const _0x4fbdae=await fetch(API_BASE+'/tasks/'+_0x550a89+'/pull-request-info');if(!_0x4fbdae['ok']){const _0x42916b=await _0x4fbdae['json']()['catch'](()=>({}));throw new Error(_0x42916b['error']||_0x42916b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4fbdae['statusText']);}return await _0x4fbdae['json']();},async 'createPullRequests'(_0x32ebe2,_0x1a1262){if(!_0x32ebe2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1262||!Array['isArray'](_0x1a1262))throw new Error('repos\x20array\x20is\x20required');const _0x33772e=await fetch(API_BASE+'/tasks/'+_0x32ebe2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1a1262})});if(!_0x33772e['ok']){const _0x1c2cf3=await _0x33772e['json']()['catch'](()=>({}));let _0x397e4f=_0x1c2cf3['error']||_0x1c2cf3['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x33772e['statusText'];if(_0x1c2cf3['results']&&Array['isArray'](_0x1c2cf3['results'])){const _0x5044f3=_0x1c2cf3['results']['filter'](_0x2d9cb7=>!_0x2d9cb7['success']&&_0x2d9cb7['error']);_0x5044f3['length']>0x0&&(_0x397e4f=_0x5044f3[0x0]['error']);}throw new Error(_0x397e4f);}return await _0x33772e['json']();},async 'syncRepos'(_0x5b8e57){if(!_0x5b8e57)throw new Error('Task\x20ID\x20is\x20required');const _0x102493=await fetch(API_BASE+'/tasks/'+_0x5b8e57+'/sync-repos',{'method':'POST'});if(!_0x102493['ok']){const _0x38c2b5=await _0x102493['json']()['catch'](()=>({}));throw new Error(_0x38c2b5['error']||_0x38c2b5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x102493['statusText']);}return await _0x102493['json']();},async 'getIbmiSyncInfo'(_0x4e702d){if(!_0x4e702d)throw new Error('Task\x20ID\x20is\x20required');const _0x328ec3=await fetch(API_BASE+'/tasks/'+_0x4e702d+'/ibmi-sync-info');if(!_0x328ec3['ok']){const _0x3ebb49=await _0x328ec3['json']()['catch'](()=>({}));throw new Error(_0x3ebb49['error']||_0x3ebb49['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x328ec3['json']();},async 'getSyncFiles'(_0x44c55e){if(!_0x44c55e)throw new Error('Task\x20ID\x20is\x20required');const _0x5368f9=await fetch(API_BASE+'/tasks/'+_0x44c55e+'/sync-to-ibmi/files');if(!_0x5368f9['ok']){const _0x533ccc=await _0x5368f9['json']()['catch'](()=>({}));throw new Error(_0x533ccc['error']||_0x533ccc['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5368f9['json']();},async 'syncToIbmi'(_0x14f191,_0x27ee64,_0x53319f=null,_0x252fa2=null,_0x28f3a4=null){if(!_0x14f191)throw new Error('Task\x20ID\x20is\x20required');const _0x106abb={'library':_0x27ee64};if(_0x53319f)_0x106abb['user']=_0x53319f;if(_0x252fa2)_0x106abb['password']=_0x252fa2;if(_0x28f3a4)_0x106abb['files']=_0x28f3a4;const _0x13cb17=await fetch(API_BASE+'/tasks/'+_0x14f191+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x106abb)});if(!_0x13cb17['ok']){const _0x146f83=await _0x13cb17['json']()['catch'](()=>({}));throw new Error(_0x146f83['error']||_0x146f83['message']||'Sync\x20failed');}return await _0x13cb17['json']();},async 'getIbmiSyncLog'(_0x7894f9){if(!_0x7894f9)throw new Error('Task\x20ID\x20is\x20required');const _0x3d813c=await fetch(API_BASE+'/tasks/'+_0x7894f9+'/ibmi-sync-log');if(!_0x3d813c['ok']){const _0xf1373c=await _0x3d813c['json']()['catch'](()=>({}));throw new Error(_0xf1373c['error']||_0xf1373c['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3d813c['json']();},async 'pullChanges'(_0x40265e){if(!_0x40265e)throw new Error('Task\x20ID\x20is\x20required');const _0x3685aa=await fetch(API_BASE+'/tasks/'+_0x40265e+'/pull-changes',{'method':'POST'});if(!_0x3685aa['ok']){const _0x567a1b=await _0x3685aa['json']()['catch'](()=>({}));throw new Error(_0x567a1b['error']||_0x567a1b['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x3685aa['statusText']);}return await _0x3685aa['json']();},async 'readFile'(_0x14152c,_0x41264c){if(!_0x14152c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41264c)throw new Error('File\x20path\x20is\x20required');const _0x31ff5d=await fetch(API_BASE+'/tasks/'+_0x14152c+'/files?path='+encodeURIComponent(_0x41264c));if(!_0x31ff5d['ok']){const _0xe3b6d2=await _0x31ff5d['json']()['catch'](()=>({}));throw new Error(_0xe3b6d2['error']||_0xe3b6d2['message']||'Failed\x20to\x20read\x20file:\x20'+_0x31ff5d['statusText']);}return await _0x31ff5d['json']();},'getTaskFileDownloadUrl'(_0x53c797,_0x3fc7a4){if(!_0x53c797)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3fc7a4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x53c797+'/files/download?path='+encodeURIComponent(_0x3fc7a4);},async 'writeFile'(_0x196fad,_0x5668d9,_0x3dc05c){if(!_0x196fad)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5668d9)throw new Error('File\x20path\x20is\x20required');if(_0x3dc05c===undefined)throw new Error('Content\x20is\x20required');const _0x2ec565=await fetch(API_BASE+'/tasks/'+_0x196fad+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5668d9,'content':_0x3dc05c})});if(!_0x2ec565['ok']){const _0x48f841=await _0x2ec565['json']()['catch'](()=>({}));throw new Error(_0x48f841['error']||_0x48f841['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2ec565['statusText']);}return await _0x2ec565['json']();},async 'uploadTaskFiles'(_0x261279,_0x4292b8,_0x557588){if(!_0x261279)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4292b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x557588||_0x557588['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4fd1a9=new FormData();_0x4fd1a9['append']('targetDir',_0x4292b8);for(const _0x3d9f49 of _0x557588){_0x4fd1a9['append']('files',_0x3d9f49,_0x3d9f49['name']);}const _0x4d9563=await fetch(API_BASE+'/tasks/'+_0x261279+'/files/upload',{'method':'POST','body':_0x4fd1a9});if(!_0x4d9563['ok']){const _0x628efd=await _0x4d9563['json']()['catch'](()=>({}));throw new Error(_0x628efd['error']||_0x628efd['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4d9563['statusText']);}return await _0x4d9563['json']();},async 'deleteFile'(_0x31668f,_0x336777){if(!_0x31668f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x336777)throw new Error('File\x20path\x20is\x20required');const _0x2ed69f=await fetch(API_BASE+'/tasks/'+_0x31668f+'/files?path='+encodeURIComponent(_0x336777),{'method':'DELETE'});if(!_0x2ed69f['ok']){const _0x45efe8=await _0x2ed69f['json']()['catch'](()=>({}));throw new Error(_0x45efe8['error']||_0x45efe8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2ed69f['statusText']);}return await _0x2ed69f['json']();},async 'discardFile'(_0x5a5548,_0x5d871e,_0xf17b6e){if(!_0x5a5548)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d871e)throw new Error('File\x20path\x20is\x20required');if(!_0xf17b6e)throw new Error('Repository\x20path\x20is\x20required');const _0x2fad69=await fetch(API_BASE+'/tasks/'+_0x5a5548+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d871e,'repoPath':_0xf17b6e})});if(!_0x2fad69['ok']){const _0x15c8ce=await _0x2fad69['json']()['catch'](()=>({}));throw new Error(_0x15c8ce['error']||_0x15c8ce['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2fad69['statusText']);}return await _0x2fad69['json']();},async 'followUpTask'(_0xb73778,_0x59d33d={}){if(!_0xb73778)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59d33d['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x50f9ed,_0x448a27={};if(_0x59d33d['files']&&_0x59d33d['files']['length']>0x0){const _0xa2540=new FormData();_0xa2540['append']('instructions',_0x59d33d['instructions']);for(const _0xd99d5 of _0x59d33d['files']){_0xa2540['append']('attachments',_0xd99d5);}_0x50f9ed=_0xa2540;}else _0x448a27['Content-Type']='application/json',_0x50f9ed=JSON['stringify']({'instructions':_0x59d33d['instructions']});const _0xa6a7e7=await fetch(API_BASE+'/tasks/'+_0xb73778+'/follow-up',{'method':'POST','headers':_0x448a27,'body':_0x50f9ed});if(!_0xa6a7e7['ok']){const _0x306711=await _0xa6a7e7['json']()['catch'](()=>({}));throw new Error(_0x306711['error']||_0x306711['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xa6a7e7['statusText']);}return await _0xa6a7e7['json']();},async 'getTaskRewindPoints'(_0x4449cb){if(!_0x4449cb)throw new Error('Task\x20ID\x20is\x20required');const _0x8b7d2d=await fetch(API_BASE+'/tasks/'+_0x4449cb+'/rewind-points');if(!_0x8b7d2d['ok']){const _0x32b5a6=await _0x8b7d2d['json']()['catch'](()=>({}));throw new Error(_0x32b5a6['error']||_0x32b5a6['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x8b7d2d['statusText']);}return await _0x8b7d2d['json']();},async 'rewindTask'(_0x3c582e,_0x3e648d={}){if(!_0x3c582e)throw new Error('Task\x20ID\x20is\x20required');const _0x222d55=Number['isInteger'](_0x3e648d['targetFollowUpCount'])?_0x3e648d['targetFollowUpCount']:0x0,_0x5ecc1e={'targetFollowUpCount':_0x222d55};typeof _0x3e648d['instructions']==='string'&&_0x3e648d['instructions']['trim']()&&(_0x5ecc1e['instructions']=_0x3e648d['instructions']['trim']());typeof _0x3e648d['rewindFiles']==='boolean'&&(_0x5ecc1e['rewindFiles']=_0x3e648d['rewindFiles']);const _0x409255=await fetch(API_BASE+'/tasks/'+_0x3c582e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ecc1e)});if(!_0x409255['ok']){const _0x16c682=await _0x409255['json']()['catch'](()=>({}));throw new Error(_0x16c682['error']||_0x16c682['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x409255['statusText']);}return await _0x409255['json']();},async 'login'(_0x1282aa,_0x12309c){const _0x120204=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1282aa,'password':_0x12309c})});if(!_0x120204['ok']){const _0x353846=await _0x120204['json']();throw new Error(_0x353846['message']||'Login\x20failed');}return await _0x120204['json']();},async 'logout'(){const _0x4b66a2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4b66a2['ok']){const _0x18f285=await _0x4b66a2['json']();throw new Error(_0x18f285['message']||'Logout\x20failed');}return await _0x4b66a2['json']();},async 'getCurrentUser'(){const _0x4687f1=await fetch(API_BASE+'/auth/me');if(!_0x4687f1['ok'])throw new Error('Not\x20authenticated');const _0x362de1=await _0x4687f1['json']();return _0x362de1['user'];},async 'getRolesInfo'(){const _0x42b66f=await fetch(API_BASE+'/users/roles');if(!_0x42b66f['ok']){const _0x132c3b=await _0x42b66f['json']();throw new Error(_0x132c3b['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42b66f['json']();},async 'getUsers'(){const _0x5c87b8=await fetch(API_BASE+'/users');if(!_0x5c87b8['ok']){const _0x5d19cb=await _0x5c87b8['json']();throw new Error(_0x5d19cb['message']||'Failed\x20to\x20get\x20users');}return await _0x5c87b8['json']();},async 'getUser'(_0x51cfd9){const _0x3b4068=await fetch(API_BASE+'/users/'+_0x51cfd9);if(!_0x3b4068['ok']){const _0x1cf0ed=await _0x3b4068['json']();throw new Error(_0x1cf0ed['message']||'Failed\x20to\x20get\x20user');}return await _0x3b4068['json']();},async 'createUser'(_0x37e4f5){const _0x46d3d3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37e4f5)});if(!_0x46d3d3['ok']){const _0x3e8c09=await _0x46d3d3['json']();throw new Error(_0x3e8c09['message']||'Failed\x20to\x20create\x20user');}return await _0x46d3d3['json']();},async 'updateUser'(_0x3524c7,_0x3f2f06){const _0x1ff7ff=await fetch(API_BASE+'/users/'+_0x3524c7,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f2f06)});if(!_0x1ff7ff['ok']){const _0x3f6581=await _0x1ff7ff['json']();throw new Error(_0x3f6581['message']||'Failed\x20to\x20update\x20user');}return await _0x1ff7ff['json']();},async 'deleteUser'(_0x388463){const _0x32c54d=await fetch(API_BASE+'/users/'+_0x388463,{'method':'DELETE'});if(!_0x32c54d['ok']){const _0x491413=await _0x32c54d['json']();throw new Error(_0x491413['message']||'Failed\x20to\x20delete\x20user');}return await _0x32c54d['json']();},async 'stopAllContainers'(){const _0x10ce30=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x344f5c=await _0x10ce30['json']()['catch'](()=>({}));if(!_0x10ce30['ok'])throw new Error(_0x344f5c['message']||_0x344f5c['error']||'Failed\x20to\x20stop\x20containers');return _0x344f5c;},async 'removeStoppedContainers'(){const _0x2e2e45=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x56180d=await _0x2e2e45['json']()['catch'](()=>({}));if(!_0x2e2e45['ok'])throw new Error(_0x56180d['message']||_0x56180d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x56180d;},async 'pruneDockerResources'(){const _0x326b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2f868c=await _0x326b22['json']()['catch'](()=>({}));if(!_0x326b22['ok'])throw new Error(_0x2f868c['message']||_0x2f868c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2f868c;},async 'createPasswordToken'(_0x55af5f,_0x2a6570='setup',_0x199008=![]){const _0x33bb5f=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x55af5f,'type':_0x2a6570,'sendEmail':_0x199008})});if(!_0x33bb5f['ok']){const _0x3b8911=await _0x33bb5f['json']();throw new Error(_0x3b8911['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x33bb5f['json']();},async 'getEmailConfig'(){const _0x265ec1=await fetch(API_BASE+'/password/email-config');if(!_0x265ec1['ok']){const _0x1ba1f2=await _0x265ec1['json']();throw new Error(_0x1ba1f2['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x265ec1['json']();},async 'updateTaskName'(_0x4ed290,_0x4defd9){const _0x5bd402=await fetch(API_BASE+'/tasks/'+_0x4ed290,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4defd9})});if(!_0x5bd402['ok']){const _0x47cfeb=await _0x5bd402['json']();throw new Error(_0x47cfeb['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5bd402['json']();},async 'pinTask'(_0x32901b,_0x34943d,_0x439880=null){if(!_0x32901b)throw new Error('Task\x20ID\x20is\x20required');const _0x2aeb38={'pinned':_0x34943d};_0x439880&&_0x439880['length']>0x0&&(_0x2aeb38['additionalTaskIds']=_0x439880);const _0x1b40b1=await fetch(API_BASE+'/tasks/'+_0x32901b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2aeb38)});if(!_0x1b40b1['ok']){const _0xf80518=await _0x1b40b1['json']();throw new Error(_0xf80518['error']||'Failed\x20to\x20pin\x20task');}return await _0x1b40b1['json']();},async 'setTaskWinner'(_0x599f72,_0x771bde,_0x85571=[]){if(!_0x599f72)throw new Error('Task\x20ID\x20is\x20required');const _0x1a1352=await fetch(API_BASE+'/tasks/'+_0x599f72+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x771bde,'siblings':_0x85571})});if(!_0x1a1352['ok']){const _0x2560e3=await _0x1a1352['json']();throw new Error(_0x2560e3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1a1352['json']();},async 'setTaskLoser'(_0x1237c2,_0x570e49){if(!_0x1237c2)throw new Error('Task\x20ID\x20is\x20required');const _0x2c89c0=await fetch(API_BASE+'/tasks/'+_0x1237c2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x570e49})});if(!_0x2c89c0['ok']){const _0x22c4da=await _0x2c89c0['json']();throw new Error(_0x22c4da['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2c89c0['json']();},async 'createTaskGroup'(_0x4b8468){const _0xe6a20c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b8468)});if(!_0xe6a20c['ok']){const _0x12be75=await _0xe6a20c['json']();throw new Error(_0x12be75['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xe6a20c['json']();},async 'getTaskGroups'(_0x224168={}){const _0x373637=new URLSearchParams();if(_0x224168['userId'])_0x373637['set']('userId',String(_0x224168['userId']));if(_0x224168['status'])_0x373637['set']('status',String(_0x224168['status']));if(_0x224168['limit'])_0x373637['set']('limit',String(_0x224168['limit']));const _0x48e606=API_BASE+'/tasks/groups'+(_0x373637['toString']()?'?'+_0x373637['toString']():''),_0x2a0f05=await fetch(_0x48e606);if(!_0x2a0f05['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2a0f05['json']();},async 'getTaskGroup'(_0x3f6028){const _0x448032=await fetch(API_BASE+'/tasks/groups/'+_0x3f6028);if(!_0x448032['ok']){const _0x1213fc=await _0x448032['json']();throw new Error(_0x1213fc['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x448032['json']();},async 'updateTaskGroup'(_0x4991ea,_0x2f943b,_0x38b937){const _0x2a1ecc=await fetch(API_BASE+'/tasks/'+_0x4991ea+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x2f943b,'groupIndex':_0x38b937})});if(!_0x2a1ecc['ok']){const _0x2344f9=await _0x2a1ecc['json']();throw new Error(_0x2344f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2a1ecc['json']();},async 'removeTaskFromGroup'(_0x1b6eab){return this['updateTaskGroup'](_0x1b6eab,null,null);},async 'deleteTaskGroup'(_0x22de05,_0x1f8f32=![]){const _0x4d18fd=_0x1f8f32?'?deleteTasks=true':'',_0x563c09=await fetch(API_BASE+'/tasks/groups/'+_0x22de05+_0x4d18fd,{'method':'DELETE'});if(!_0x563c09['ok']){const _0x63c96a=await _0x563c09['json']();throw new Error(_0x63c96a['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xb93960,_0x22a8f5){const _0x29bdd2=await fetch(API_BASE+'/tasks/groups/'+_0xb93960+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x22a8f5})});if(!_0x29bdd2['ok']){const _0x128778=await _0x29bdd2['json']();throw new Error(_0x128778['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x29bdd2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a55cf){if(!_0x1a55cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4b1c2f=await fetch(API_BASE+'/tasks/'+_0x1a55cf+'/comments');if(!_0x4b1c2f['ok']){const _0x8bca60=await _0x4b1c2f['json']()['catch'](()=>({}));throw new Error(_0x8bca60['error']||'Failed\x20to\x20get\x20comments');}return await _0x4b1c2f['json']();},async 'addComment'(_0x3bc104,_0x45fa70){if(!_0x3bc104)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45fa70)throw new Error('Comment\x20content\x20is\x20required');const _0x542e4a=await fetch(API_BASE+'/tasks/'+_0x3bc104+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45fa70})});if(!_0x542e4a['ok']){const _0xf4ca22=await _0x542e4a['json']()['catch'](()=>({}));throw new Error(_0xf4ca22['error']||'Failed\x20to\x20add\x20comment');}return await _0x542e4a['json']();},async 'updateComment'(_0x2d2277,_0x429515,_0x25a90a){if(!_0x2d2277)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429515)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x25a90a)throw new Error('Comment\x20content\x20is\x20required');const _0x4940ca=await fetch(API_BASE+'/tasks/'+_0x2d2277+'/comments/'+_0x429515,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25a90a})});if(!_0x4940ca['ok']){const _0x4c04f1=await _0x4940ca['json']()['catch'](()=>({}));throw new Error(_0x4c04f1['error']||'Failed\x20to\x20update\x20comment');}return await _0x4940ca['json']();},async 'deleteComment'(_0x59ec5f,_0x2ababe){if(!_0x59ec5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ababe)throw new Error('Comment\x20ID\x20is\x20required');const _0x371d68=await fetch(API_BASE+'/tasks/'+_0x59ec5f+'/comments/'+_0x2ababe,{'method':'DELETE'});if(!_0x371d68['ok']){const _0x393a29=await _0x371d68['json']()['catch'](()=>({}));throw new Error(_0x393a29['error']||'Failed\x20to\x20delete\x20comment');}return await _0x371d68['json']();},async 'createObjective'(_0x112975){const _0x70ac76={'objective':!![],'name':_0x112975['name']||'','environment':_0x112975['environment']||null,'agents':_0x112975['agents']||[],'branches':_0x112975['branches']||{},'isPinned':_0x112975['isPinned']||![],'parentObjectiveId':_0x112975['parentObjectiveId']||null,'env_vars':_0x112975['envVars']||{},'parameters':{'instructions':_0x112975['instructions']||''},'files':_0x112975['files']||[],'jira':_0x112975['jira']||null};return this['createTask'](_0x70ac76);},async 'updateObjective'(_0x33afe8,_0x25fc71,_0x435aed=[],_0x382922=[]){let _0x216e9c,_0x51979c={};const _0x3c2eb2={..._0x25fc71};_0x382922&&_0x382922['length']>0x0&&(_0x3c2eb2['removeAttachments']=_0x382922);if(_0x435aed&&_0x435aed['length']>0x0){const _0x1da3a2=new FormData();for(const [_0x1517df,_0x2ac6b0]of Object['entries'](_0x3c2eb2)){if(_0x2ac6b0==null)continue;typeof _0x2ac6b0==='object'?_0x1da3a2['append'](_0x1517df,JSON['stringify'](_0x2ac6b0)):_0x1da3a2['append'](_0x1517df,String(_0x2ac6b0));}for(const _0x16e12f of _0x435aed){_0x1da3a2['append']('attachments',_0x16e12f);}_0x216e9c=_0x1da3a2;}else _0x51979c['Content-Type']='application/json',_0x216e9c=JSON['stringify'](_0x3c2eb2);const _0x1a0f15=await fetch(API_BASE+'/tasks/'+_0x33afe8,{'method':'PATCH','headers':_0x51979c,'body':_0x216e9c});if(!_0x1a0f15['ok']){const _0x37785e=await _0x1a0f15['json']();throw new Error(_0x37785e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1a0f15['json']();},async 'deleteObjective'(_0x172d63){return this['deleteTask'](_0x172d63);},async 'launchObjective'(_0x1c54d7,_0x19a519={}){const _0x37053d=await fetch(API_BASE+'/tasks/'+_0x1c54d7+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19a519)});if(!_0x37053d['ok']){const _0x1e9b00=await _0x37053d['json']();throw new Error(_0x1e9b00['error']||'Failed\x20to\x20launch\x20objective');}return await _0x37053d['json']();},async 'getObjectiveAttachments'(_0xecd05a){return this['getTaskAttachments'](_0xecd05a);},async 'createJudgeTask'({environment:_0x15a809,judgeAgent:_0x183d8e,groupId:_0xd86d3a,taskIds:_0x4c97b2,judgeCustomInstructions:_0x556405,isPinned:_0x1144ab}){const _0x159ac0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x15a809,'judgeAgent':_0x183d8e,'groupId':_0xd86d3a,'taskIds':_0x4c97b2,'judgeCustomInstructions':_0x556405,'isPinned':_0x1144ab})});if(!_0x159ac0['ok']){const _0x54a30a=await _0x159ac0['json']();throw new Error(_0x54a30a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x159ac0['json']();},async 'getJudgeTasks'(_0x120bbb){const _0x460e65=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x120bbb));if(!_0x460e65['ok']){const _0xb03103=await _0x460e65['json']();throw new Error(_0xb03103['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x460e65['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x578006,_0x30dbf0,_0x67a9b3=''){const _0x12e187=await fetch(API_BASE+'/tasks/'+_0x578006+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x30dbf0,'customPreamble':_0x67a9b3})});if(!_0x12e187['ok']){const _0x54f8ce=await _0x12e187['json']();throw new Error(_0x54f8ce['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x12e187['json']();},async 'getJiraConfig'(){const _0x7c1243=await fetch(API_BASE+'/jira/config');if(!_0x7c1243['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7c1243['json']();},async 'getJiraIssue'(_0x1decd1){const _0x1fd023=await fetch(API_BASE+'/jira/issues/'+_0x1decd1);if(!_0x1fd023['ok']){const _0x20a8c8=await _0x1fd023['json']()['catch'](()=>({}));throw new Error(_0x20a8c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1fd023['statusText']);}return await _0x1fd023['json']();},async 'searchJiraIssues'(_0x57206c,_0x2aea51=0x14){const _0x46651f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x57206c,'maxResults':_0x2aea51})});if(!_0x46651f['ok']){const _0xe3359e=await _0x46651f['json']()['catch'](()=>({}));throw new Error(_0xe3359e['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x46651f['statusText']);}return await _0x46651f['json']();},async 'postJiraComment'(_0x116920,_0x584dbb){const _0x980f41=await fetch(API_BASE+'/jira/issues/'+_0x116920+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x584dbb})});if(!_0x980f41['ok']){const _0x280041=await _0x980f41['json']()['catch'](()=>({}));throw new Error(_0x280041['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x980f41['statusText']);}return await _0x980f41['json']();},async 'getJiraComments'(_0x922dba){const _0x4e5a7a=await fetch(API_BASE+'/jira/issues/'+_0x922dba+'/comments');if(!_0x4e5a7a['ok']){const _0xc35359=await _0x4e5a7a['json']()['catch'](()=>({}));throw new Error(_0xc35359['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4e5a7a['statusText']);}return await _0x4e5a7a['json']();},async 'promptParameter'({environment:_0xbea5a2,command:_0x172554,parser:parser='json'}){const _0x310551=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xbea5a2,'command':_0x172554,'parser':parser})});if(!_0x310551['ok']){const _0xeb14e2=await _0x310551['json']()['catch'](()=>({}));throw new Error(_0xeb14e2['message']||_0xeb14e2['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x310551['statusText']);}return await _0x310551['json']();},async 'promptParameterStream'(_0x1abee0,_0x5f10a6){const _0x251005=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abee0)});if(!_0x251005['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x251005['statusText']);const _0x242da5=_0x251005['body']['getReader'](),_0x4d3b34=new TextDecoder();let _0x22af1d='';return new Promise((_0x19568c,_0x367abc)=>{const _0x461f58=async()=>{try{const {done:_0x44cdfe,value:_0x4164b3}=await _0x242da5['read']();if(_0x44cdfe)return;_0x22af1d+=_0x4d3b34['decode'](_0x4164b3,{'stream':!![]});const _0x3dfb79=_0x22af1d['split']('\x0a\x0a');_0x22af1d=_0x3dfb79['pop']()||'';for(const _0x36a639 of _0x3dfb79){if(!_0x36a639['trim']())continue;const _0x5daa9f=_0x36a639['split']('\x0a');let _0x156131='message',_0x114808='';for(const _0x1307a2 of _0x5daa9f){if(_0x1307a2['startsWith']('event:'))_0x156131=_0x1307a2['substring'](0x6)['trim']();else _0x1307a2['startsWith']('data:')&&(_0x114808=_0x1307a2['substring'](0x5)['trim']());}if(!_0x114808)continue;try{const _0x2bca7c=JSON['parse'](_0x114808);if(_0x156131==='progress'&&_0x5f10a6)_0x5f10a6(_0x2bca7c['stage'],_0x2bca7c['message']);else{if(_0x156131==='result'){_0x19568c(_0x2bca7c);return;}else{if(_0x156131==='error'){let _0x506802=_0x2bca7c['message']||_0x2bca7c['error']||'Prompt\x20command\x20failed';_0x2bca7c['rawOutput']&&(_0x506802+='\x0a\x0aRaw\x20output:\x0a'+_0x2bca7c['rawOutput']);_0x367abc(new Error(_0x506802));return;}}}}catch(_0x5c7eb3){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5c7eb3),console['error']('Event\x20type:',_0x156131),console['error']('Event\x20data:',_0x114808),console['error']('First\x20200\x20chars:',_0x114808['substring'](0x0,0xc8)),_0x367abc(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5c7eb3['message']+'\x0a\x0aData:\x20'+_0x114808['substring'](0x0,0x1f4)));return;}}_0x461f58();}catch(_0x29235a){_0x367abc(_0x29235a);}};_0x461f58();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x1673ae){const _0x58082f=await fetch(''+API_BASE+_0x1673ae);if(!_0x58082f['ok']){const _0xb1a72e=await _0x58082f['json']()['catch'](()=>({'error':_0x58082f['statusText']})),_0x4f8acf=new Error(_0xb1a72e['error']||_0xb1a72e['message']||_0x58082f['statusText']);if(_0xb1a72e['detail']!==undefined)_0x4f8acf['detail']=_0xb1a72e['detail'];throw _0x4f8acf;}return await _0x58082f['json']();},async 'post'(_0x510ea6,_0x5bb817){const _0x5aabb1=await fetch(''+API_BASE+_0x510ea6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bb817)});if(!_0x5aabb1['ok']){const _0x5a3a85=await _0x5aabb1['json']()['catch'](()=>({'error':_0x5aabb1['statusText']})),_0x37bc97=new Error(_0x5a3a85['error']||_0x5a3a85['message']||_0x5aabb1['statusText']);if(_0x5a3a85['detail']!==undefined)_0x37bc97['detail']=_0x5a3a85['detail'];throw _0x37bc97;}return await _0x5aabb1['json']();},async 'put'(_0x7a594c,_0x413681){const _0x40c66a=await fetch(''+API_BASE+_0x7a594c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x413681)});if(!_0x40c66a['ok']){const _0x5a8ae7=await _0x40c66a['json']()['catch'](()=>({'error':_0x40c66a['statusText']})),_0x516a44=new Error(_0x5a8ae7['error']||_0x5a8ae7['message']||_0x40c66a['statusText']);if(_0x5a8ae7['detail']!==undefined)_0x516a44['detail']=_0x5a8ae7['detail'];throw _0x516a44;}return await _0x40c66a['json']();},async 'delete'(_0x2ec75f,_0x3aee42){const _0x6019d8={'method':'DELETE'};_0x3aee42&&(_0x6019d8['headers']={'Content-Type':'application/json'},_0x6019d8['body']=JSON['stringify'](_0x3aee42));const _0x1df987=await fetch(''+API_BASE+_0x2ec75f,_0x6019d8);if(!_0x1df987['ok']){const _0x1a88bd=await _0x1df987['json']()['catch'](()=>({'error':_0x1df987['statusText']})),_0x216189=new Error(_0x1a88bd['error']||_0x1a88bd['message']||_0x1df987['statusText']);if(_0x1a88bd['detail']!==undefined)_0x216189['detail']=_0x1a88bd['detail'];throw _0x216189;}return await _0x1df987['json']();},async 'getSkills'(){const _0x2b8603=await fetch(API_BASE+'/skills');if(!_0x2b8603['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b8603['statusText']);return await _0x2b8603['json']();},async 'getSkill'(_0x36e7c9){const _0x11faff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36e7c9));if(!_0x11faff['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x11faff['statusText']);return await _0x11faff['json']();},async 'createSkill'(_0x241aac){const _0x511d69=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x241aac)});if(!_0x511d69['ok']){const _0x4ec2e6=await _0x511d69['json']()['catch'](()=>({'error':_0x511d69['statusText']})),_0x2b5b7a=new Error(_0x4ec2e6['error']||_0x4ec2e6['message']||_0x511d69['statusText']);if(_0x4ec2e6['detail']!==undefined)_0x2b5b7a['detail']=_0x4ec2e6['detail'];throw _0x2b5b7a;}return await _0x511d69['json']();},async 'updateSkill'(_0x1b8136,_0x498246){const _0x746197=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b8136),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498246)});if(!_0x746197['ok']){const _0x517806=await _0x746197['json']()['catch'](()=>({'error':_0x746197['statusText']})),_0x6ffc56=new Error(_0x517806['error']||_0x517806['message']||_0x746197['statusText']);if(_0x517806['detail']!==undefined)_0x6ffc56['detail']=_0x517806['detail'];throw _0x6ffc56;}return await _0x746197['json']();},async 'deleteSkill'(_0x5d8ecf){const _0x2859cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5d8ecf),{'method':'DELETE'});if(!_0x2859cc['ok']){const _0x2948cb=await _0x2859cc['json']()['catch'](()=>({'error':_0x2859cc['statusText']})),_0x21f66e=new Error(_0x2948cb['error']||_0x2948cb['message']||_0x2859cc['statusText']);if(_0x2948cb['detail']!==undefined)_0x21f66e['detail']=_0x2948cb['detail'];throw _0x21f66e;}return await _0x2859cc['json']();},async 'getSkillFile'(_0x2c9e0f,_0x4cf69d){const _0x2818f9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2c9e0f)+'/files/'+_0x4cf69d);if(!_0x2818f9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2818f9['statusText']);return await _0x2818f9['json']();},async 'saveSkillFile'(_0xd461c7,_0x485430,_0x54a846){const _0x42aea0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd461c7)+'/files/'+_0x485430,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x54a846})});if(!_0x42aea0['ok']){const _0x1c3837=await _0x42aea0['json']()['catch'](()=>({'error':_0x42aea0['statusText']})),_0x19f50e=new Error(_0x1c3837['error']||_0x1c3837['message']||_0x42aea0['statusText']);if(_0x1c3837['detail']!==undefined)_0x19f50e['detail']=_0x1c3837['detail'];throw _0x19f50e;}return await _0x42aea0['json']();},async 'deleteSkillFile'(_0x3d5712,_0x262c8b){const _0x112a6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3d5712)+'/files/'+_0x262c8b,{'method':'DELETE'});if(!_0x112a6f['ok']){const _0x409863=await _0x112a6f['json']()['catch'](()=>({'error':_0x112a6f['statusText']})),_0x2fa625=new Error(_0x409863['error']||_0x409863['message']||_0x112a6f['statusText']);if(_0x409863['detail']!==undefined)_0x2fa625['detail']=_0x409863['detail'];throw _0x2fa625;}return await _0x112a6f['json']();},async 'pullSkills'(){const _0x5a8e77=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5a8e77['ok']){const _0x2b42fe=await _0x5a8e77['json']()['catch'](()=>({'error':_0x5a8e77['statusText']})),_0x17b8db=new Error(_0x2b42fe['error']||_0x2b42fe['message']||_0x5a8e77['statusText']);if(_0x2b42fe['detail']!==undefined)_0x17b8db['detail']=_0x2b42fe['detail'];throw _0x17b8db;}return await _0x5a8e77['json']();},async 'commitSkills'(_0x1ae3bf,_0x6e2275={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x6e2275,_0x1e210d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1ae3bf,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x1e210d['ok']){const _0x48e66e=await _0x1e210d['json']()['catch'](()=>({'error':_0x1e210d['statusText']})),_0x4b5b64=new Error(_0x48e66e['error']||_0x48e66e['message']||_0x1e210d['statusText']);if(_0x48e66e['detail']!==undefined)_0x4b5b64['detail']=_0x48e66e['detail'];throw _0x4b5b64;}return await _0x1e210d['json']();},async 'discardSkillsChanges'(){const _0x495e50=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x495e50['ok']){const _0x141f96=await _0x495e50['json']()['catch'](()=>({'error':_0x495e50['statusText']})),_0x448eab=new Error(_0x141f96['error']||_0x141f96['message']||_0x495e50['statusText']);if(_0x141f96['detail']!==undefined)_0x448eab['detail']=_0x141f96['detail'];throw _0x448eab;}return await _0x495e50['json']();},async 'getSkillCatalog'(){const _0x1b4f86=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1b4f86['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1b4f86['statusText']);return await _0x1b4f86['json']();},async 'getImportedSkillsRegistry'(){const _0x51b350=await fetch(API_BASE+'/external-skills/registry');if(!_0x51b350['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x51b350['statusText']);return await _0x51b350['json']();},async 'importCatalogSkill'(_0x562ef1){const _0x3ec80d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x562ef1})});if(!_0x3ec80d['ok']){const _0x2493fb=await _0x3ec80d['json']()['catch'](()=>({'error':_0x3ec80d['statusText']})),_0x17a4e8=new Error(_0x2493fb['error']||_0x2493fb['message']||_0x3ec80d['statusText']);if(_0x2493fb['detail']!==undefined)_0x17a4e8['detail']=_0x2493fb['detail'];throw _0x17a4e8;}return await _0x3ec80d['json']();},async 'importSkillFromGit'(_0x26fb8a,_0x254f35,_0x1d04ef='main',_0x5e6671=null){const _0x264d73=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x26fb8a,'skillPath':_0x254f35,'branch':_0x1d04ef,'skillId':_0x5e6671})});if(!_0x264d73['ok']){const _0x5235d1=await _0x264d73['json']()['catch'](()=>({'error':_0x264d73['statusText']})),_0x2a1f76=new Error(_0x5235d1['error']||_0x5235d1['message']||_0x264d73['statusText']);if(_0x5235d1['detail']!==undefined)_0x2a1f76['detail']=_0x5235d1['detail'];throw _0x2a1f76;}return await _0x264d73['json']();},async 'probeMarketplace'(_0x384a9d,_0x36e3c6='main'){const _0x2561bc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x384a9d,'branch':_0x36e3c6})});if(!_0x2561bc['ok']){const _0x3b1bb3=await _0x2561bc['json']()['catch'](()=>({'error':_0x2561bc['statusText']})),_0x5bdf7a=new Error(_0x3b1bb3['error']||_0x3b1bb3['message']||_0x2561bc['statusText']);if(_0x3b1bb3['detail']!==undefined)_0x5bdf7a['detail']=_0x3b1bb3['detail'];throw _0x5bdf7a;}return await _0x2561bc['json']();},async 'importMarketplaceBundle'(_0x4dd592,_0x29234f,_0x4960dd,_0x6cd29c=null){const _0x5069c4=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dd592,'branch':_0x29234f,'bundleId':_0x4960dd,'selectedSkills':_0x6cd29c})});if(!_0x5069c4['ok']){const _0xd93c66=await _0x5069c4['json']()['catch'](()=>({'error':_0x5069c4['statusText']})),_0x1ceabb=new Error(_0xd93c66['error']||_0xd93c66['message']||_0x5069c4['statusText']);if(_0xd93c66['detail']!==undefined)_0x1ceabb['detail']=_0xd93c66['detail'];throw _0x1ceabb;}return await _0x5069c4['json']();},async 'importSkillFromFolder'(_0x44b1a1,_0x58f937=null){const _0x1dd59a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44b1a1,'skillId':_0x58f937})});if(!_0x1dd59a['ok']){const _0x4a65ca=await _0x1dd59a['json']()['catch'](()=>({'error':_0x1dd59a['statusText']})),_0xf5444=new Error(_0x4a65ca['error']||_0x4a65ca['message']||_0x1dd59a['statusText']);if(_0x4a65ca['detail']!==undefined)_0xf5444['detail']=_0x4a65ca['detail'];throw _0xf5444;}return await _0x1dd59a['json']();},async 'importSkillFromNpm'(_0x75588d,_0x2385dd='latest',_0x548244=null,_0x5da076=null){const _0x2fa580=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x75588d,'version':_0x2385dd,'skillId':_0x548244,'registry':_0x5da076})});if(!_0x2fa580['ok']){const _0x1041dc=await _0x2fa580['json']()['catch'](()=>({'error':_0x2fa580['statusText']})),_0x17cb4e=new Error(_0x1041dc['error']||_0x1041dc['message']||_0x2fa580['statusText']);if(_0x1041dc['detail']!==undefined)_0x17cb4e['detail']=_0x1041dc['detail'];throw _0x17cb4e;}return await _0x2fa580['json']();},async 'checkSkillUpdates'(_0xfea491){const _0x347aeb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfea491)+'/check-updates',{'method':'POST'});if(!_0x347aeb['ok']){const _0x29a941=await _0x347aeb['json']()['catch'](()=>({'error':_0x347aeb['statusText']})),_0x274148=new Error(_0x29a941['error']||_0x29a941['message']||_0x347aeb['statusText']);if(_0x29a941['detail']!==undefined)_0x274148['detail']=_0x29a941['detail'];throw _0x274148;}return await _0x347aeb['json']();},async 'updateExternalSkill'(_0x399983){const _0xbf3477=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x399983)+'/update',{'method':'POST'});if(!_0xbf3477['ok']){const _0x1777f1=await _0xbf3477['json']()['catch'](()=>({'error':_0xbf3477['statusText']})),_0x3fddca=new Error(_0x1777f1['error']||_0x1777f1['message']||_0xbf3477['statusText']);if(_0x1777f1['detail']!==undefined)_0x3fddca['detail']=_0x1777f1['detail'];throw _0x3fddca;}return await _0xbf3477['json']();},async 'updateSkillFlags'(_0xf2d9e,_0x34fe8a){const _0x3631fe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xf2d9e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x34fe8a})});if(!_0x3631fe['ok']){const _0x1ea90c=await _0x3631fe['json']()['catch'](()=>({'error':_0x3631fe['statusText']})),_0x4b13ff=new Error(_0x1ea90c['error']||_0x1ea90c['message']||_0x3631fe['statusText']);if(_0x1ea90c['detail']!==undefined)_0x4b13ff['detail']=_0x1ea90c['detail'];throw _0x4b13ff;}return await _0x3631fe['json']();},async 'removeFromImportedRegistry'(_0x22afe1){const _0x349a20=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x22afe1)+'/registry',{'method':'DELETE'});if(!_0x349a20['ok']){const _0x7a509=await _0x349a20['json']()['catch'](()=>({'error':_0x349a20['statusText']})),_0x5c2113=new Error(_0x7a509['error']||_0x7a509['message']||_0x349a20['statusText']);if(_0x7a509['detail']!==undefined)_0x5c2113['detail']=_0x7a509['detail'];throw _0x5c2113;}return await _0x349a20['json']();},async 'getTeams'(){const _0x4532fd=await fetch(API_BASE+'/teams');if(!_0x4532fd['ok']){const _0x58cffe=await _0x4532fd['json']()['catch'](()=>({'message':_0x4532fd['statusText']}));throw new Error(_0x58cffe['message']||'Failed\x20to\x20get\x20teams');}return await _0x4532fd['json']();},async 'getTeam'(_0x101a1c){const _0x25d435=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x101a1c));if(!_0x25d435['ok']){const _0x51966d=await _0x25d435['json']()['catch'](()=>({'message':_0x25d435['statusText']}));throw new Error(_0x51966d['message']||'Failed\x20to\x20get\x20team');}return await _0x25d435['json']();},async 'createTeam'(_0x18ea8d){const _0x2e22bb=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ea8d)});if(!_0x2e22bb['ok']){const _0x3d93d8=await _0x2e22bb['json']()['catch'](()=>({'message':_0x2e22bb['statusText']}));throw new Error(_0x3d93d8['message']||'Failed\x20to\x20create\x20team');}return await _0x2e22bb['json']();},async 'updateTeam'(_0x30006c,_0x452dc2){const _0x64b631=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x30006c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452dc2)});if(!_0x64b631['ok']){const _0x4ccc6c=await _0x64b631['json']()['catch'](()=>({'message':_0x64b631['statusText']}));throw new Error(_0x4ccc6c['message']||'Failed\x20to\x20update\x20team');}return await _0x64b631['json']();},async 'deleteTeam'(_0x5f3ead){const _0x63792b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5f3ead),{'method':'DELETE'});if(!_0x63792b['ok']){const _0x53fe4d=await _0x63792b['json']()['catch'](()=>({'message':_0x63792b['statusText']}));throw new Error(_0x53fe4d['message']||'Failed\x20to\x20delete\x20team');}return await _0x63792b['json']();},async 'addTeamMember'(_0xf47a21,_0x4ef7f8){const _0x2dc554=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xf47a21)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ef7f8})});if(!_0x2dc554['ok']){const _0x49fe8e=await _0x2dc554['json']()['catch'](()=>({'message':_0x2dc554['statusText']}));throw new Error(_0x49fe8e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2dc554['json']();},async 'removeTeamMember'(_0x397080,_0x33efb6){const _0x1c2df5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397080)+'/members/'+encodeURIComponent(_0x33efb6),{'method':'DELETE'});if(!_0x1c2df5['ok']){const _0x1ac12e=await _0x1c2df5['json']()['catch'](()=>({'message':_0x1c2df5['statusText']}));throw new Error(_0x1ac12e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1c2df5['json']();},async 'getBindings'(_0x4e544c={}){const _0x4c328e=new URLSearchParams();if(_0x4e544c['resource_type'])_0x4c328e['set']('resource_type',_0x4e544c['resource_type']);if(_0x4e544c['resource_id'])_0x4c328e['set']('resource_id',_0x4e544c['resource_id']);if(_0x4e544c['subject_type'])_0x4c328e['set']('subject_type',_0x4e544c['subject_type']);if(_0x4e544c['subject_id'])_0x4c328e['set']('subject_id',_0x4e544c['subject_id']);const _0x19dcb9=_0x4c328e['toString'](),_0x72a4b4=await fetch(API_BASE+'/bindings'+(_0x19dcb9?'?'+_0x19dcb9:''));if(!_0x72a4b4['ok']){const _0x217fee=await _0x72a4b4['json']()['catch'](()=>({'message':_0x72a4b4['statusText']}));throw new Error(_0x217fee['message']||'Failed\x20to\x20get\x20bindings');}return await _0x72a4b4['json']();},async 'createBinding'(_0x365128){const _0x563c31=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x365128)});if(!_0x563c31['ok']){const _0x5387a6=await _0x563c31['json']()['catch'](()=>({'message':_0x563c31['statusText']}));throw new Error(_0x5387a6['message']||'Failed\x20to\x20create\x20binding');}return await _0x563c31['json']();},async 'updateBinding'(_0x35530f,_0x118eae){const _0xf1ec49=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x35530f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x118eae)});if(!_0xf1ec49['ok']){const _0xa33993=await _0xf1ec49['json']()['catch'](()=>({'message':_0xf1ec49['statusText']}));throw new Error(_0xa33993['message']||'Failed\x20to\x20update\x20binding');}return await _0xf1ec49['json']();},async 'deleteBinding'(_0x14c553){const _0x4e3998=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x14c553),{'method':'DELETE'});if(!_0x4e3998['ok']){const _0x579f22=await _0x4e3998['json']()['catch'](()=>({'message':_0x4e3998['statusText']}));throw new Error(_0x579f22['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4e3998['json']();},async 'getRoleDefinitions'(){const _0x1ec491=await fetch(API_BASE+'/roles');if(!_0x1ec491['ok']){const _0x1edf4e=await _0x1ec491['json']()['catch'](()=>({'message':_0x1ec491['statusText']}));throw new Error(_0x1edf4e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1ec491['json']();},async 'getRoleDefinition'(_0x178d7b){const _0x1395bd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x178d7b));if(!_0x1395bd['ok']){const _0x39376c=await _0x1395bd['json']()['catch'](()=>({'message':_0x1395bd['statusText']}));throw new Error(_0x39376c['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1395bd['json']();},async 'createRoleDefinition'(_0x5ac8ff){const _0x1e80c3=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac8ff)});if(!_0x1e80c3['ok']){const _0x3d4868=await _0x1e80c3['json']()['catch'](()=>({'message':_0x1e80c3['statusText']}));throw new Error(_0x3d4868['message']||_0x3d4868['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e80c3['json']();},async 'updateRoleDefinition'(_0x2797ba,_0x33b5b5){const _0x343199=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2797ba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33b5b5)});if(!_0x343199['ok']){const _0x1dc135=await _0x343199['json']()['catch'](()=>({'message':_0x343199['statusText']}));throw new Error(_0x1dc135['message']||_0x1dc135['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x343199['json']();},async 'deleteRoleDefinition'(_0x11d47b){const _0x241294=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x11d47b),{'method':'DELETE'});if(!_0x241294['ok']){const _0x2a0995=await _0x241294['json']()['catch'](()=>({'message':_0x241294['statusText']}));throw new Error(_0x2a0995['message']||_0x2a0995['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x241294['json']();},async 'getAvailablePermissions'(){const _0x5b7259=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b7259['ok']){const _0x2618c0=await _0x5b7259['json']()['catch'](()=>({'message':_0x5b7259['statusText']}));throw new Error(_0x2618c0['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b7259['json']();},async 'getGitProviderAllowedTeams'(_0x8acf7a){const _0x13e573=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x8acf7a)+'/allowed-teams');if(!_0x13e573['ok']){const _0x3e0909=await _0x13e573['json']()['catch'](()=>({'message':_0x13e573['statusText']}));throw new Error(_0x3e0909['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x13e573['json']();},async 'setGitProviderAllowedTeams'(_0x130592,_0x783c2e){const _0x3cacf3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x130592)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x783c2e})});if(!_0x3cacf3['ok']){const _0x1f829b=await _0x3cacf3['json']()['catch'](()=>({'message':_0x3cacf3['statusText']}));throw new Error(_0x1f829b['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3cacf3['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 _0x7a1c3b=toastState['baseBottom'];toastState['toasts']['forEach'](_0x555fa5=>{_0x555fa5['el']['style']['bottom']=_0x7a1c3b+'px';const _0x366e53=_0x555fa5['el']['offsetHeight']||toastState['defaultHeight'];_0x7a1c3b+=_0x366e53+toastState['gap'];});});}function removeToastById(_0x5be30f){const _0x4f3ebb=toastState['toasts']['findIndex'](_0x37bcd3=>_0x37bcd3['id']===_0x5be30f);if(_0x4f3ebb===-0x1)return;const _0x3df90f=toastState['toasts'][_0x4f3ebb];if(_0x3df90f['timeoutId'])clearTimeout(_0x3df90f['timeoutId']);_0x3df90f['el']['classList']['remove']('show'),setTimeout(()=>_0x3df90f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f3ebb,0x1),repositionAllToasts();}function registerToast(_0x22a844){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x22a844),repositionAllToasts(),_0x22a844['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(_0x5f2afe){if(_0x5f2afe===null||_0x5f2afe===undefined)return'';return String(_0x5f2afe)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2349c4,_0x235733){if(_0x2349c4&&typeof _0x2349c4==='object'&&!Array['isArray'](_0x2349c4))return{'code':typeof _0x2349c4['text']==='string'?_0x2349c4['text']:'','language':typeof _0x2349c4['lang']==='string'?_0x2349c4['lang']:''};return{'code':typeof _0x2349c4==='string'?_0x2349c4:'','language':typeof _0x235733==='string'?_0x235733:''};}function buildMermaidBlock(_0x13488c){const _0x1c385f=String(_0x13488c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1c385f))+'\x22>'+escapeHtmlValue(_0x1c385f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x36843b=new marked['Renderer'](),_0x471606=_0x36843b['code']['bind'](_0x36843b);return _0x36843b['code']=function(_0x3f8c17,_0x14f3f4,..._0x4972af){const {code:_0x4cd2c8,language:_0x52ba1b}=getMarkdownCodeBlockPayload(_0x3f8c17,_0x14f3f4),_0x4b1da9=String(_0x52ba1b||'')['trim']()['toLowerCase']();if(_0x4b1da9==='mermaid')return buildMermaidBlock(_0x4cd2c8);const _0x24f09a=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x24f09a&&_0x4b1da9)try{const _0x529c0b=_0x24f09a['getLanguage'](_0x4b1da9)?_0x4b1da9:'plaintext',_0x50b472=_0x24f09a['highlight'](_0x4cd2c8,{'language':_0x529c0b})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4b1da9)+'\x22>'+_0x50b472+'</code></pre>';}catch(_0x2f6889){console['error']('Syntax\x20highlighting\x20error:',_0x2f6889);}return _0x471606(_0x3f8c17,_0x14f3f4,..._0x4972af);},sharedMarkedRenderer=_0x36843b,_0x36843b;}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 _0x5a70ed=window['mermaid'];if(!_0x5a70ed||typeof _0x5a70ed['initialize']!=='function')return _0x5a70ed||null;return _0x5a70ed['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5a70ed;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7667,_0x5d540b)=>{const _0x4172b9=()=>_0x4c7667(configureMermaidInstance()),_0xcff783=()=>{mermaidLoadPromise=null,_0x5d540b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x5cde29=document['getElementById'](MERMAID_SCRIPT_ID);!_0x5cde29&&(_0x5cde29=document['createElement']('script'),_0x5cde29['id']=MERMAID_SCRIPT_ID,_0x5cde29['src']=MERMAID_SCRIPT_SRC,_0x5cde29['async']=!![],document['head']['appendChild'](_0x5cde29));if(window['mermaid']){_0x4172b9();return;}_0x5cde29['addEventListener']('load',_0x4172b9,{'once':!![]}),_0x5cde29['addEventListener']('error',_0xcff783,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x57da33){const _0x19825b=_0x57da33['getAttribute']('data-mermaid-source');if(!_0x19825b)return null;let _0x1cd5ca=_0x19825b;try{_0x1cd5ca=decodeURIComponent(_0x19825b);}catch{}return _0x57da33['textContent']=_0x1cd5ca,_0x57da33['removeAttribute']('data-processed'),_0x57da33['removeAttribute']('aria-roledescription'),_0x57da33['removeAttribute']('role'),_0x57da33['removeAttribute']('aria-label'),_0x1cd5ca;}function collectMermaidNodes(_0x2277b7,_0x1dde4d){if(!(_0x2277b7 instanceof Element))return;_0x2277b7['matches']('.mermaid[data-mermaid-source]')&&_0x1dde4d['add'](_0x2277b7),_0x2277b7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x361a8d=>{_0x1dde4d['add'](_0x361a8d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x58855a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2c41f6=>setTimeout(_0x2c41f6,0x0);_0x58855a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5d06c2=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5d06c2);});});}function queueMermaidRender(_0x178706){const _0x4b5044=new Set();_0x178706 instanceof Document||_0x178706 instanceof DocumentFragment?_0x178706['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x26865c=>_0x4b5044['add'](_0x26865c)):collectMermaidNodes(_0x178706,_0x4b5044);if(_0x4b5044['size']===0x0)return;_0x4b5044['forEach'](_0x7a9fb8=>pendingMermaidNodes['add'](_0x7a9fb8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5130f3=Array['from'](pendingMermaidNodes)['filter'](_0x5e9c7a=>_0x5e9c7a['isConnected']);pendingMermaidNodes['clear']();if(_0x5130f3['length']===0x0)return;const _0x11b6f4=await loadMermaid();if(!_0x11b6f4)return;configureMermaidInstance();const _0x5271b7=getMermaidTheme();for(const _0x58c4f8 of _0x5130f3){const _0x1c011d=_0x58c4f8['getAttribute']('data-mermaid-source');if(!_0x1c011d)continue;const _0x5d13a9=_0x58c4f8['getAttribute']('data-processed')==='true';if(_0x5d13a9&&_0x58c4f8['dataset']['mermaidTheme']===_0x5271b7)continue;restoreMermaidSource(_0x58c4f8);try{if(typeof _0x11b6f4['run']==='function')await _0x11b6f4['run']({'nodes':[_0x58c4f8]});else typeof _0x11b6f4['init']==='function'&&_0x11b6f4['init'](undefined,[_0x58c4f8]);_0x58c4f8['dataset']['mermaidTheme']=_0x5271b7,delete _0x58c4f8['dataset']['mermaidError'];}catch(_0xa54d46){console['error']('Mermaid\x20render\x20failed:',_0xa54d46),restoreMermaidSource(_0x58c4f8),_0x58c4f8['dataset']['mermaidError']='true',delete _0x58c4f8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1c3fce=>{_0x1c3fce['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1c3fce);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4d4c6f=>{_0x4d4c6f['forEach'](_0x5ee531=>{_0x5ee531['addedNodes']['forEach'](_0x2e7972=>{_0x2e7972['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e7972);});});}),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'(_0x548f61){const _0x3ebbba=new Date(_0x548f61),_0xf2393d=new Date(),_0x348018=_0xf2393d-_0x3ebbba,_0x3194c1=Math['floor'](_0x348018/0x3e8),_0x4b470a=Math['floor'](_0x3194c1/0x3c),_0x5a3303=Math['floor'](_0x4b470a/0x3c),_0x40b7a6=Math['floor'](_0x5a3303/0x18);if(_0x3194c1<0x3c)return'now';if(_0x4b470a<0x3c)return _0x4b470a+'m\x20ago';if(_0x5a3303<0x18)return _0x5a3303+'h\x20ago';return _0x40b7a6+'d\x20ago';},'getStatusIcon'(_0x18b265){switch(_0x18b265){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x125a19){switch(_0x125a19){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'(_0x3e825d,_0xba4590=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x53ef66={};_0x53ef66['text/plain']=new Blob([_0x3e825d],{'type':'text/plain'});_0xba4590&&(_0x53ef66['text/html']=new Blob([_0xba4590],{'type':'text/html'}));const _0xd2ae8a=new ClipboardItem(_0x53ef66);return await navigator['clipboard']['write']([_0xd2ae8a]),!![];}catch(_0x2d8979){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2d8979);}try{const _0x56fc7d=_0x1aff03=>{_0x1aff03['preventDefault'](),_0x1aff03['clipboardData']['setData']('text/plain',_0x3e825d),_0xba4590&&_0x1aff03['clipboardData']['setData']('text/html',_0xba4590);};document['addEventListener']('copy',_0x56fc7d);const _0x5e24b9=document['execCommand']('copy');document['removeEventListener']('copy',_0x56fc7d);if(_0x5e24b9)return!![];}catch(_0xa4c177){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xa4c177);}try{const _0x3faf32=document['createElement']('textarea');_0x3faf32['value']=_0x3e825d,_0x3faf32['style']['position']='fixed',_0x3faf32['style']['opacity']='0',_0x3faf32['style']['pointerEvents']='none',document['body']['appendChild'](_0x3faf32),_0x3faf32['select']();const _0x15be56=document['execCommand']('copy');return document['body']['removeChild'](_0x3faf32),_0x15be56;}catch(_0x972297){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x972297),![];}},'showToast'(_0x2af2d7,_0x221ce9='info'){const _0x3fe74d=getNextToastId(),_0x255a57=document['createElement']('div');_0x255a57['className']='toast\x20toast-'+_0x221ce9,_0x255a57['textContent']=_0x2af2d7,_0x255a57['dataset']['toastId']=_0x3fe74d,document['body']['appendChild'](_0x255a57);const _0xc884ec=_0x221ce9==='error'?0x2710:0xbb8,_0x50bd68=setTimeout(()=>{removeToastById(_0x3fe74d);},_0xc884ec),_0x42f6ad={'id':_0x3fe74d,'el':_0x255a57,'timeoutId':_0x50bd68};return registerToast(_0x42f6ad),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x255a57['classList']['add']('show');});}),_0x3fe74d;},'showError'(_0x1dec0c){console['error'](_0x1dec0c);const _0x44b3c3=typeof _0x1dec0c==='string'?_0x1dec0c:_0x1dec0c['message']||'An\x20error\x20occurred';this['showToast'](_0x44b3c3,'error');},'showSuccess'(_0x2686b3){this['showToast'](_0x2686b3,'success');},'capitalize'(_0x1850b0){if(!_0x1850b0)return'';return _0x1850b0['charAt'](0x0)['toUpperCase']()+_0x1850b0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4940c2){return escapeHtmlValue(_0x4940c2);},'ansiToHtml'(_0x46ced4){if(_0x46ced4===null||_0x46ced4===undefined)return'';let _0xd6af58=this['escapeHtml'](_0x46ced4);const _0xf7ccb9={'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'},_0x543aa6={'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 _0x57bdc8=0x0;return _0xd6af58=_0xd6af58['replace'](/\x1b\[([0-9;]*)m/g,(_0x388f20,_0x4658b8)=>{if(!_0x4658b8||_0x4658b8==='0'){const _0x346ed1='</span>'['repeat'](_0x57bdc8);return _0x57bdc8=0x0,_0x346ed1;}const _0x316369=_0x4658b8['split'](';'),_0xd6523d=[];for(const _0x3f3633 of _0x316369){if(_0x3f3633==='1')_0xd6523d['push']('font-weight:bold');else{if(_0x3f3633==='2')_0xd6523d['push']('opacity:0.7');else{if(_0x3f3633==='3')_0xd6523d['push']('font-style:italic');else{if(_0x3f3633==='4')_0xd6523d['push']('text-decoration:underline');else{if(_0x3f3633==='9')_0xd6523d['push']('text-decoration:line-through');else{if(_0xf7ccb9[_0x3f3633])_0xd6523d['push']('color:'+_0xf7ccb9[_0x3f3633]);else{if(_0x543aa6[_0x3f3633])_0xd6523d['push']('background-color:'+_0x543aa6[_0x3f3633]);}}}}}}}if(_0xd6523d['length']>0x0)return _0x57bdc8++,'<span\x20style=\x22'+_0xd6523d['join'](';')+'\x22>';return'';}),_0xd6af58+='</span>'['repeat'](_0x57bdc8),_0xd6af58=_0xd6af58['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3403de,_0x53ab58)=>{if(!_0x53ab58||_0x53ab58==='0')return'';const _0x1cae68=_0x53ab58['split'](';'),_0x480f73=[];for(const _0x2c4818 of _0x1cae68){if(_0x2c4818==='1')_0x480f73['push']('font-weight:bold');else{if(_0xf7ccb9[_0x2c4818])_0x480f73['push']('color:'+_0xf7ccb9[_0x2c4818]);else{if(_0x543aa6[_0x2c4818])_0x480f73['push']('background-color:'+_0x543aa6[_0x2c4818]);}}}if(_0x480f73['length']>0x0)return'<span\x20style=\x22'+_0x480f73['join'](';')+'\x22>';return'';}),_0xd6af58;},'showModal'({title:_0x389c33,content:_0x53d1e5,buttons:buttons=[]}){const _0x3427a1='\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'](_0x389c33)+'</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'+_0x53d1e5+'\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']((_0x2ff8ba,_0x5abd55)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2ff8ba['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5abd55+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2ff8ba['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',_0x499532=document['createElement']('div');_0x499532['id']='utils-modal',_0x499532['className']='modal',_0x499532['innerHTML']=_0x3427a1,document['body']['appendChild'](_0x499532);const _0x2db970=document['getElementById']('utils-modal-close');_0x2db970&&_0x2db970['addEventListener']('click',()=>this['hideModal']());const _0x5f1330=_0x499532['querySelectorAll']('[data-btn-index]');_0x5f1330['forEach'](_0xb70f83=>{const _0x3700e7=parseInt(_0xb70f83['dataset']['btnIndex']);buttons[_0x3700e7]?.['onClick']&&_0xb70f83['addEventListener']('click',buttons[_0x3700e7]['onClick']);});const _0x2686cf=document['getElementById']('utils-modal-overlay');_0x2686cf&&_0x2686cf['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x23d67e=document['getElementById']('utils-modal');_0x23d67e&&_0x23d67e['remove']();},'parseKeyValuePairs'(_0x41d021){const _0x13b074={};if(!_0x41d021)return _0x13b074;return _0x41d021['split'](/\r?\n/)['map'](_0x25bc0c=>_0x25bc0c['trim']())['filter'](Boolean)['forEach'](_0x294828=>{const _0x354cdf=_0x294828['indexOf']('=');if(_0x354cdf>0x0){const _0x57c15b=_0x294828['slice'](0x0,_0x354cdf)['trim'](),_0x296b58=_0x294828['slice'](_0x354cdf+0x1)['trim']();if(_0x57c15b)_0x13b074[_0x57c15b]=_0x296b58;}}),_0x13b074;},'debounce'(_0x21638d,_0x35c825=0xfa){let _0x4b290c=null;return(..._0x388e6d)=>{clearTimeout(_0x4b290c),_0x4b290c=setTimeout(()=>_0x21638d['apply'](this,_0x388e6d),_0x35c825);};},'formatTimestamp'(_0x1ad2c8){if(!_0x1ad2c8)return'N/A';const _0x4689f3=new Date(_0x1ad2c8);return _0x4689f3['toLocaleDateString']()+'\x20'+_0x4689f3['toLocaleTimeString']();},'getQueryParams'(){const _0x6ee5=new URLSearchParams(window['location']['search']),_0x44c070={};for(const [_0x33dcde,_0x1de0b3]of _0x6ee5){_0x44c070[_0x33dcde]=_0x1de0b3;}return _0x44c070;},'formatDuration'(_0x14e51b,_0x21d8df){if(!_0x14e51b)return'N/A';const _0x1cfe10=new Date(_0x14e51b),_0x2df19d=_0x21d8df?new Date(_0x21d8df):new Date(),_0x3a7203=_0x2df19d-_0x1cfe10;if(_0x3a7203<0x0)return'0s';const _0x5564ab=Math['floor'](_0x3a7203/0x3e8),_0x4b541d=Math['floor'](_0x5564ab/0x3c),_0x2803ab=Math['floor'](_0x4b541d/0x3c),_0x21f8dd=Math['floor'](_0x2803ab/0x18);if(_0x5564ab<0x3c)return _0x5564ab+'s';if(_0x4b541d<0x3c)return _0x4b541d+'m\x20'+_0x5564ab%0x3c+'s';if(_0x2803ab<0x18)return _0x2803ab+'h\x20'+_0x4b541d%0x3c+'m\x20'+_0x5564ab%0x3c+'s';return _0x21f8dd+'d\x20'+_0x2803ab%0x18+'h\x20'+_0x4b541d%0x3c+'m';},'renderMarkdown'(_0x55aaef,_0x5a715d={}){if(!_0x55aaef)return'';_0x55aaef=this['rewriteAttachmentLinks'](_0x55aaef,_0x5a715d),_0x55aaef=this['rewriteColorSyntax'](_0x55aaef);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x55aaef);}catch(_0x32f21f){return console['error']('Markdown\x20parsing\x20error:',_0x32f21f),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);}},'rewriteAttachmentLinks'(_0x50ee4d,_0x5afe69={}){const _0x930fd9=typeof _0x5afe69['resolveAttachmentUrl']==='function'?_0x5afe69['resolveAttachmentUrl']:_0x5afe69['taskId']?_0x6c93f6=>API_BASE+'/tasks/'+_0x5afe69['taskId']+'/attachments/'+encodeURIComponent(_0x6c93f6):null;if(!_0x930fd9)return _0x50ee4d;return String(_0x50ee4d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3f14b3,_0x2d745f)=>{const _0x8645c8=String(_0x2d745f||'')['trim']();if(!_0x8645c8)return _0x3f14b3;let _0x427c56=_0x8645c8;try{_0x427c56=decodeURIComponent(_0x8645c8);}catch{}const _0x1380d1=_0x930fd9(_0x427c56);if(!_0x1380d1)return _0x3f14b3;return']('+_0x1380d1+')';});},'rewriteColorSyntax'(_0x5511ca){if(!_0x5511ca)return _0x5511ca;return String(_0x5511ca)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x44a01f,_0x1fcf87,_0x5ce656)=>{const _0x18f92f=this['rewriteColorSyntax'](_0x5ce656);return'<span\x20style=\x22color:\x20'+_0x1fcf87+'\x22>'+_0x18f92f+'</span>';});},'renderMarkdownFallback'(_0x1ed004,_0x42fad2={}){if(!_0x1ed004)return'';_0x1ed004=_0x1ed004['replace'](/\r\n/g,'\x0a'),_0x1ed004=_0x1ed004['replace'](/\r/g,'\x0a'),_0x1ed004=this['rewriteAttachmentLinks'](_0x1ed004,_0x42fad2);let _0x58f3bd=this['escapeHtml'](_0x1ed004);return _0x58f3bd=_0x58f3bd['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x58f3bd=_0x58f3bd['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x58f3bd=_0x58f3bd['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x58f3bd=_0x58f3bd['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x58f3bd=_0x58f3bd['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x58f3bd=_0x58f3bd['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x58f3bd=_0x58f3bd['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x58f3bd=_0x58f3bd['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x58f3bd=_0x58f3bd['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x58f3bd=_0x58f3bd['replace'](/\n\n/g,'</p><p>'),_0x58f3bd=_0x58f3bd['replace'](/\n/g,'<br>'),'<p>'+_0x58f3bd+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5b1d94=new Uint8Array(0x10);crypto['getRandomValues'](_0x5b1d94),_0x5b1d94[0x6]=_0x5b1d94[0x6]&0xf|0x40,_0x5b1d94[0x8]=_0x5b1d94[0x8]&0x3f|0x80;const _0x3c86d7=Array['from'](_0x5b1d94,_0x15e178=>_0x15e178['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3c86d7['slice'](0x0,0x8)+'-'+_0x3c86d7['slice'](0x8,0xc)+'-'+_0x3c86d7['slice'](0xc,0x10)+'-'+_0x3c86d7['slice'](0x10,0x14)+'-'+_0x3c86d7['slice'](0x14);}};export class CustomSelect{constructor(_0x1e4e6f,_0x373c81={}){this['nativeSelect']=_0x1e4e6f,this['options']=_0x373c81,this['isOpen']=![],this['selectedValue']=_0x1e4e6f['value']||'',this['searchable']=_0x373c81['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x42474d=document['createElement']('div');_0x42474d['className']='custom-select';const _0x3641ad=document['createElement']('div');_0x3641ad['className']='custom-select-trigger',_0x3641ad['setAttribute']('tabindex','0'),_0x3641ad['setAttribute']('role','button'),_0x3641ad['setAttribute']('aria-haspopup','listbox');const _0x13ff34=document['createElement']('span');_0x13ff34['className']='custom-select-trigger-text';const _0x4494a1=document['createElement']('span');_0x4494a1['className']='custom-select-arrow',_0x4494a1['textContent']='▼',_0x3641ad['appendChild'](_0x13ff34),_0x3641ad['appendChild'](_0x4494a1);const _0x4133c3=document['createElement']('div');_0x4133c3['className']='custom-select-dropdown',_0x4133c3['setAttribute']('role','listbox');if(this['searchable']){const _0x35c108=document['createElement']('div');_0x35c108['className']='custom-select-search';const _0x35dff4=document['createElement']('input');_0x35dff4['type']='text',_0x35dff4['className']='custom-select-search-input',_0x35dff4['placeholder']='Type\x20to\x20search...',_0x35dff4['setAttribute']('aria-label','Search\x20options'),_0x35dff4['addEventListener']('input',_0x234998=>{this['searchQuery']=_0x234998['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x35dff4['addEventListener']('keydown',_0x494899=>{if(_0x494899['key']==='Escape')_0x494899['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x494899['key']==='Enter'){_0x494899['preventDefault'](),_0x494899['stopPropagation']();const _0x511acc=_0x4133c3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x511acc){const _0x3a5abf=_0x511acc['getAttribute']('data-value');this['select'](_0x3a5abf);}}}}),_0x35c108['appendChild'](_0x35dff4),_0x4133c3['appendChild'](_0x35c108),this['searchInput']=_0x35dff4;}const _0x464965=document['createElement']('div');_0x464965['className']='custom-select-options',_0x4133c3['appendChild'](_0x464965),_0x42474d['appendChild'](_0x3641ad),_0x42474d['appendChild'](_0x4133c3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x42474d,this['nativeSelect']),this['wrapper']=_0x42474d,this['trigger']=_0x3641ad,this['triggerText']=_0x13ff34,this['dropdown']=_0x4133c3,this['optionsContainer']=_0x464965,_0x3641ad['addEventListener']('click',()=>this['toggle']()),_0x3641ad['addEventListener']('keydown',_0x40e039=>this['handleKeydown'](_0x40e039)),document['addEventListener']('click',_0xa32bc2=>{!_0x42474d['contains'](_0xa32bc2['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x180dcf=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x180dcf['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4cc9a4=new MutationObserver(()=>{this['updateDisabledState']();});_0x4cc9a4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5be427=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5be427['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x25673d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x25673d),this['trigger']['setAttribute']('aria-disabled',_0x25673d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x25673d?'-1':'0'),_0x25673d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xd9a5be=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x578085=_0xd9a5be['filter'](_0x3b51ef=>!_0x3b51ef['disabled']&&!_0x3b51ef['hidden']);_0xd9a5be['forEach']((_0x1fe3ce,_0x282349)=>{const _0x1ef1b8=document['createElement']('div');_0x1ef1b8['className']='custom-select-option',_0x1ef1b8['textContent']=_0x1fe3ce['textContent'],_0x1ef1b8['setAttribute']('data-value',_0x1fe3ce['value']),_0x1ef1b8['setAttribute']('data-index',_0x282349),_0x1ef1b8['setAttribute']('role','option'),_0x1fe3ce['disabled']?_0x1ef1b8['classList']['add']('disabled'):_0x1ef1b8['addEventListener']('click',()=>this['select'](_0x1fe3ce['value'])),_0x1fe3ce['value']===this['selectedValue']&&_0x1ef1b8['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1ef1b8),this['allOptions']['push']({'element':_0x1ef1b8,'text':_0x1fe3ce['textContent']['toLowerCase'](),'value':_0x1fe3ce['value'],'disabled':_0x1fe3ce['disabled']});});if(this['searchable']&&this['searchInput']){const _0x146f02=this['searchInput']['parentElement'];_0x578085['length']>0x3?_0x146f02['style']['display']='':_0x146f02['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4836ac=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x709f14=>{if(!_0x4836ac||_0x709f14['disabled'])_0x709f14['element']['style']['display']='';else{const _0xa7c42=_0x709f14['text']['includes'](_0x4836ac);_0x709f14['element']['style']['display']=_0xa7c42?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2f201b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2f201b,this['nativeSelect']['value']=_0x2f201b;const _0x2ab19d=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2ab19d),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x45183f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x45183f&&(this['triggerText']['textContent']=_0x45183f['textContent'],_0x45183f['disabled']||_0x45183f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x818e09=>{_0x818e09['getAttribute']('data-value')===this['selectedValue']?_0x818e09['classList']['add']('selected'):_0x818e09['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 _0x136a40=window['getComputedStyle'](this['dropdown']);if(_0x136a40['position']==='fixed'){const _0x3ab68f=this['trigger']['getBoundingClientRect'](),_0x258f2f=parseInt(_0x136a40['maxHeight'])||0xc8,_0x4abde6=window['innerHeight'],_0x4aa5b3=_0x4abde6-_0x3ab68f['bottom'],_0x7606d=_0x3ab68f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14aa70;_0x4aa5b3<_0x258f2f&&_0x7606d>_0x4aa5b3?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4abde6-_0x3ab68f['top']+'px',_0x14aa70=Math['min'](_0x258f2f,_0x7606d-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3ab68f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14aa70=Math['min'](_0x258f2f,_0x4aa5b3-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px');if(this['optionsContainer']){let _0x4d4c69=_0x14aa70;if(this['searchInput']){const _0x5cdd14=this['searchInput']['parentElement'];_0x5cdd14&&(_0x4d4c69-=_0x5cdd14['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4d4c69)+'px';}this['dropdown']['style']['left']=_0x3ab68f['left']+'px',this['dropdown']['style']['width']=_0x3ab68f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x57366c=this['searchInput']['parentElement'];_0x57366c&&_0x57366c['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'](_0x44b2c4){if(this['nativeSelect']['disabled'])return;if(_0x44b2c4['key']==='Enter'||_0x44b2c4['key']==='\x20')_0x44b2c4['preventDefault'](),this['toggle']();else _0x44b2c4['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ba6a8='\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',_0x4ba6a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x53d5c5=document['getElementById']('confirm-dialog-close'),_0x1cae21=document['getElementById']('confirm-dialog-cancel'),_0x3536fe=document['getElementById']('confirm-dialog-confirm'),_0x1f260e=this['_modal']['querySelector']('.modal-overlay');_0x53d5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1cae21['addEventListener']('click',()=>this['_resolve'](![])),_0x3536fe['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f260e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2dd6b9=>{if(_0x2dd6b9['key']==='Escape')_0x2dd6b9['preventDefault'](),this['_resolve'](![]);else _0x2dd6b9['key']==='Enter'&&(_0x2dd6b9['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x573a17,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x103de4=>{this['_resolvePromise']=_0x103de4,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x573a17;const _0x5d6354=document['getElementById']('confirm-dialog-cancel'),_0x399a63=document['getElementById']('confirm-dialog-confirm');_0x5d6354['textContent']=cancelText,_0x399a63['textContent']=confirmText,_0x399a63['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x399a63['focus']();});},'_resolve'(_0x3745c8){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3745c8),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1ddbba,_0x340ee1={}){this['container']=_0x1ddbba,this['options']={'placeholder':_0x340ee1['placeholder']||'Type\x20to\x20search...','maxItems':_0x340ee1['maxItems']||0x64,'loadItems':_0x340ee1['loadItems']||(async()=>[]),'renderItem':_0x340ee1['renderItem']||(_0x18305c=>({'primary':String(_0x18305c),'secondary':''})),'onSelect':_0x340ee1['onSelect']||(()=>{}),'filterItems':_0x340ee1['filterItems']||null,'getItemValue':_0x340ee1['getItemValue']||(_0x50738c=>_0x50738c),'sortItems':_0x340ee1['sortItems']||null,'debounceMs':_0x340ee1['debounceMs']||0xc8,'minCharsForSearch':_0x340ee1['minCharsForSearch']||0x0,'emptyMessage':_0x340ee1['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x340ee1['loadingMessage']||'Loading...','preload':_0x340ee1['preload']!==![],'searchMode':_0x340ee1['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',_0x16c916=>this['onBlur'](_0x16c916)),this['input']['addEventListener']('input',_0x1fd27f=>this['onInput'](_0x1fd27f)),this['input']['addEventListener']('keydown',_0x32a027=>this['onKeydown'](_0x32a027)),this['clearBtn']['addEventListener']('mousedown',_0x3dbcad=>{_0x3dbcad['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x284089=>{_0x284089['preventDefault']();}),document['addEventListener']('click',_0x3bec39=>{!this['wrapper']['contains'](_0x3bec39['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(_0x1bc683){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1bc683);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5d657e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xbf5646){const _0x3c00cd=_0xbf5646['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c00cd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c00cd):this['loadAndShow'](_0x3c00cd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x38d972){switch(_0x38d972['key']){case'ArrowDown':_0x38d972['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x38d972['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x38d972['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x38d972['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37e433){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x339df1=this['selectedIndex']+_0x37e433;if(_0x339df1>=0x0&&_0x339df1<this['filteredItems']['length']){this['selectedIndex']=_0x339df1,this['updateSelectionHighlight']();const _0x4a98a9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a98a9[this['selectedIndex']]&&_0x4a98a9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2fdb33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2fdb33['forEach']((_0x55d357,_0x3e783e)=>{_0x55d357['classList']['toggle']('keyboard-selected',_0x3e783e===this['selectedIndex']);});}async['loadAndShow'](_0x5cae49){this['showLoading']();try{const _0x11683f=await this['options']['loadItems'](_0x5cae49);if(this['options']['searchMode']==='server'){let _0x529812=_0x11683f;this['options']['sortItems']&&(_0x529812=this['options']['sortItems']([..._0x11683f]));this['filteredItems']=_0x529812;const _0x579e6b=this['filteredItems']['length']>=this['options']['maxItems'];_0x579e6b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x579e6b),this['open']();}else this['allItems']=_0x11683f,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5cae49);}catch(_0x2b9288){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2b9288),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x107061){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x107061):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5b863c=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b863c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b863c),this['open']();}['renderItems'](_0x49db64){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']((_0x24d2af,_0x55a7c3)=>{const _0x3c514c=document['createElement']('div');_0x3c514c['className']='autocomplete-select-item',_0x3c514c['setAttribute']('role','option'),_0x3c514c['setAttribute']('data-index',_0x55a7c3);const _0x4b100c=this['options']['renderItem'](_0x24d2af);let _0x48907e='';_0x4b100c['icon']&&(_0x48907e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4b100c['iconClass']||'')+'\x22>'+_0x4b100c['icon']+'</span>'),_0x3c514c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x48907e+'\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'](_0x4b100c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4b100c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4b100c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3c514c['addEventListener']('click',()=>{this['selectItem'](_0x24d2af);}),_0x3c514c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55a7c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3c514c);}),_0x49db64?(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'](_0x5257aa){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5257aa)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4aadaf){this['selectedItem']=_0x4aadaf;const _0x12cd69=this['options']['renderItem'](_0x4aadaf);this['input']['value']=_0x12cd69['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4aadaf);}['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'](_0x37a814){if(_0x37a814){this['selectedItem']=_0x37a814;const _0x3f3fac=this['options']['renderItem'](_0x37a814);this['input']['value']=_0x3f3fac['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5515f0){this['allItems']=_0x5515f0,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'](_0x40bf0c){this['input']['placeholder']=_0x40bf0c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x23e488=null){const _0x156c00=document['getElementById']('admin-menu-container'),_0x2788be=document['getElementById']('admin-menu-btn'),_0x423cbf=document['getElementById']('admin-menu');if(!_0x156c00||!_0x2788be||!_0x423cbf)return;try{!_0x23e488&&(_0x23e488=await API['getCurrentUser']());if(_0x23e488){const _0x4e1260=window['Permissions'],_0x3ff697=_0x4e1260['hasServerPermission'](_0x23e488,'*')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:manage')||_0x4e1260['hasServerPermission'](_0x23e488,'users:create')||_0x4e1260['hasTeamPermission'](_0x23e488,'teams:manage')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:view_details');if(!_0x3ff697)return;_0x156c00['hidden']=![];if(!_0x4e1260['hasServerPermission'](_0x23e488,'*')){const _0x54253a=_0x423cbf['querySelectorAll']('.admin-menu-item');_0x54253a['forEach'](_0xd4c05c=>{const _0x5763c9=_0xd4c05c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5763c9==='Users'&&!_0x4e1260['hasServerPermission'](_0x23e488,'users:create')&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Skills'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Settings'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Health'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Git\x20History'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Roles'&&(_0xd4c05c['hidden']=!![]);});}_0x2788be['addEventListener']('click',_0x23deae=>{_0x23deae['stopPropagation']();const _0x19a98c=document['getElementById']('actions-menu');if(_0x19a98c)_0x19a98c['hidden']=!![];_0x423cbf['hidden']=!_0x423cbf['hidden'];}),document['addEventListener']('click',_0x7e4b9d=>{!_0x423cbf['hidden']&&!_0x2788be['contains'](_0x7e4b9d['target'])&&!_0x423cbf['contains'](_0x7e4b9d['target'])&&(_0x423cbf['hidden']=!![]);}),document['addEventListener']('keydown',_0x58e410=>{_0x58e410['key']==='Escape'&&!_0x423cbf['hidden']&&(_0x423cbf['hidden']=!![]);});const _0x59e427=document['getElementById']('server-health-btn');_0x59e427&&_0x59e427['addEventListener']('click',async()=>{_0x423cbf['hidden']=!![];const {openServerHealthModal:_0x5d58d8}=await import('./server-health.js');_0x5d58d8();});}}catch(_0x5ccaf2){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ccaf2['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|