@profoundlogic/coderflow-server 0.7.1 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/entrypoint.sh +7 -0
- package/dist/base-image/standard-instructions/memory-instructions.md +7 -0
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -0
- 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/shipped-skills/memory-management/SKILL.md +103 -0
- 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.css +61 -0
- package/dist/web-ui/public/environments.html +114 -0
- 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 +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x75a9ac=window['location']['pathname'],_0x542a01=_0x75a9ac['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x542a01)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x542a01[0x1]),_0x542a01[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4c8d1f={}){const _0x13bdad=new URLSearchParams();_0x4c8d1f['userId']&&_0x13bdad['set']('userId',String(_0x4c8d1f['userId']));_0x4c8d1f['automation']&&_0x13bdad['set']('automation',String(_0x4c8d1f['automation']));const _0x1e8a52=API_BASE+'/tasks/stats'+(_0x13bdad['toString']()?'?'+_0x13bdad['toString']():''),_0x4a3ae9=await fetch(_0x1e8a52);if(!_0x4a3ae9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a3ae9['statusText']);return await _0x4a3ae9['json']();},async 'getTasks'(_0x170024={}){const _0xa71c07=new URLSearchParams();_0x170024['status']&&_0xa71c07['set']('status',String(_0x170024['status']));_0x170024['environment']&&_0xa71c07['set']('environment',String(_0x170024['environment']));_0x170024['automation']&&_0xa71c07['set']('automation',String(_0x170024['automation']));if(_0x170024['include']){const _0xfd5765=Array['isArray'](_0x170024['include'])?_0x170024['include']['join'](','):String(_0x170024['include']);_0xfd5765&&_0xa71c07['set']('include',_0xfd5765);}_0x170024['filter']&&_0xa71c07['set']('filter',String(_0x170024['filter']));_0x170024['page']&&_0xa71c07['set']('page',String(_0x170024['page']));_0x170024['limit']&&_0xa71c07['set']('limit',String(_0x170024['limit']));_0x170024['userId']&&_0xa71c07['set']('userId',String(_0x170024['userId']));_0x170024['search']&&_0xa71c07['set']('search',String(_0x170024['search']));_0x170024['includeChildTasks']&&_0xa71c07['set']('includeChildTasks','true');const _0x30f377=API_BASE+'/tasks'+(_0xa71c07['toString']()?'?'+_0xa71c07['toString']():''),_0x4aba9c=await fetch(_0x30f377);if(!_0x4aba9c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4aba9c['statusText']);return await _0x4aba9c['json']();},async 'getAutomations'(_0x6c443a={}){const _0x33bd58=new URLSearchParams();_0x6c443a['environment']&&_0x33bd58['set']('environment',String(_0x6c443a['environment']));const _0x2aedc4=await fetch(API_BASE+'/api/automations'+(_0x33bd58['toString']()?'?'+_0x33bd58['toString']():''));if(!_0x2aedc4['ok']){const _0x41b5ae=await _0x2aedc4['json']()['catch'](()=>({}));throw new Error(_0x41b5ae['message']||_0x41b5ae['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2aedc4['statusText']);}return await _0x2aedc4['json']();},async 'getAutomation'(_0x1c3336){const _0x30a3ef=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c3336));if(!_0x30a3ef['ok']){const _0x208196=await _0x30a3ef['json']()['catch'](()=>({}));throw new Error(_0x208196['message']||_0x208196['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x30a3ef['statusText']);}return await _0x30a3ef['json']();},async 'createAutomation'(_0x55ba33){const _0x28cf59=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55ba33||{})});if(!_0x28cf59['ok']){const _0x5bed34=await _0x28cf59['json']()['catch'](()=>({}));throw new Error(_0x5bed34['message']||_0x5bed34['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x28cf59['statusText']);}return await _0x28cf59['json']();},async 'updateAutomation'(_0x40f813,_0x110445){const _0x1be80f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x40f813),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x110445||{})});if(!_0x1be80f['ok']){const _0x2180e4=await _0x1be80f['json']()['catch'](()=>({}));throw new Error(_0x2180e4['message']||_0x2180e4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1be80f['statusText']);}return await _0x1be80f['json']();},async 'deleteAutomation'(_0x2f9332){const _0x5a8182=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f9332),{'method':'DELETE'});if(!_0x5a8182['ok']){const _0x27333b=await _0x5a8182['json']()['catch'](()=>({}));throw new Error(_0x27333b['message']||_0x27333b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5a8182['statusText']);}return await _0x5a8182['json']();},async 'triggerAutomation'(_0x5c45a5){const _0x4693dc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c45a5)+'/trigger',{'method':'POST'});if(!_0x4693dc['ok']){const _0x4e4de3=await _0x4693dc['json']()['catch'](()=>({}));throw new Error(_0x4e4de3['message']||_0x4e4de3['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4693dc['statusText']);}return await _0x4693dc['json']();},async 'setAutomationEnabled'(_0x394b87,_0x479b31){const _0x128205=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x394b87)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x479b31})});if(!_0x128205['ok']){const _0x214c87=await _0x128205['json']()['catch'](()=>({}));throw new Error(_0x214c87['message']||_0x214c87['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x128205['statusText']);}return await _0x128205['json']();},async 'getAutomationHistory'(_0x55a8ce,_0x3993a9=0x32){const _0x130482=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55a8ce)+'/history?limit='+encodeURIComponent(String(_0x3993a9)));if(!_0x130482['ok']){const _0x45f50b=await _0x130482['json']()['catch'](()=>({}));throw new Error(_0x45f50b['message']||_0x45f50b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x130482['statusText']);}return await _0x130482['json']();},async 'getTask'(_0x24aab2,_0x1cd294={}){const _0xed54e8=new URLSearchParams();if(_0x1cd294['include']){const _0xeab505=Array['isArray'](_0x1cd294['include'])?_0x1cd294['include']['join'](','):String(_0x1cd294['include']);if(_0xeab505)_0xed54e8['set']('include',_0xeab505);}const _0xbfacbb=await fetch(API_BASE+'/tasks/'+_0x24aab2+(_0xed54e8['toString']()?'?'+_0xed54e8['toString']():''));if(!_0xbfacbb['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbfacbb['statusText']);return await _0xbfacbb['json']();},async 'getTaskResults'(_0x44a326){const _0x4a2470=await fetch(API_BASE+'/tasks/'+_0x44a326+'/results');if(!_0x4a2470['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4a2470['statusText']);return await _0x4a2470['json']();},async 'getTaskPatches'(_0x4acf4a){const _0xa529de=await fetch(API_BASE+'/tasks/'+_0x4acf4a+'/patches');if(!_0xa529de['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xa529de['statusText']);return await _0xa529de['json']();},async 'getTaskAttachments'(_0x3e4785){const _0x1ffb64=await fetch(API_BASE+'/tasks/'+_0x3e4785+'/attachments');if(!_0x1ffb64['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1ffb64['statusText']);return await _0x1ffb64['json']();},async 'uploadAttachments'(_0x4df27e,_0x39685b){const _0x5e1e37=new FormData();for(const _0x4722be of _0x39685b){_0x5e1e37['append']('attachments',_0x4722be);}const _0x2b6377=await fetch(API_BASE+'/tasks/'+_0x4df27e+'/attachments',{'method':'POST','body':_0x5e1e37});if(!_0x2b6377['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2b6377['statusText']);return await _0x2b6377['json']();},async 'isAINameGenerationAvailable'(){try{const _0x53c8d3=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x53c8d3['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x53c8d3['json']();}catch(_0x7b662a){return{'available':![],'reason':_0x7b662a['message']};}},async 'generateTaskName'(_0x46319f){try{const _0x27cc1b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x46319f})});return await _0x27cc1b['json']();}catch(_0x2bcf64){return{'success':![],'error':_0x2bcf64['message']};}},async 'createTask'(_0x27521a){let _0x2926be,_0x4e0223={};if(_0x27521a['files']&&_0x27521a['files']['length']>0x0){const _0x4ab1b6=new FormData();for(const [_0x42bdb5,_0x50a17d]of Object['entries'](_0x27521a)){if(_0x42bdb5!=='files'){if(_0x50a17d==null)continue;typeof _0x50a17d==='object'?_0x4ab1b6['append'](_0x42bdb5,JSON['stringify'](_0x50a17d)):_0x4ab1b6['append'](_0x42bdb5,String(_0x50a17d));}}for(const _0x349ec6 of _0x27521a['files']){_0x4ab1b6['append']('attachments',_0x349ec6);}_0x2926be=_0x4ab1b6;}else _0x4e0223['Content-Type']='application/json',_0x2926be=JSON['stringify'](_0x27521a);const _0x5dc775=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4e0223,'body':_0x2926be});if(!_0x5dc775['ok']){const _0x5b54c2=await _0x5dc775['json'](),_0x445126=new Error(_0x5b54c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc775['statusText']),{message:_0x465c2f,..._0x4b4465}=_0x5b54c2;Object['assign'](_0x445126,_0x4b4465);throw _0x445126;}return await _0x5dc775['json']();},async 'createTestTask'(_0x5d2c6c){const _0x3c47f4=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d2c6c)});if(!_0x3c47f4['ok']){const _0x38da5b=await _0x3c47f4['json']();throw new Error(_0x38da5b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c47f4['statusText']);}return await _0x3c47f4['json']();},async 'createEphemeralTest'(_0x29952e){const _0x41a78d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29952e)});if(!_0x41a78d['ok']){const _0x1619bd=await _0x41a78d['json']();throw new Error(_0x1619bd['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x41a78d['statusText']);}return await _0x41a78d['json']();},async 'createDeployTask'(_0xd0ae2){const _0x442d2e=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0ae2)});if(!_0x442d2e['ok']){const _0x4b651e=await _0x442d2e['json']();throw new Error(_0x4b651e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x442d2e['statusText']);}return await _0x442d2e['json']();},async 'getEnvironments'(){const _0x2a3faa=await fetch(API_BASE+'/environments');if(!_0x2a3faa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2a3faa['statusText']);return await _0x2a3faa['json']();},async 'getEnvironment'(_0x1d8654){const _0x13998e=await fetch(API_BASE+'/environments/'+_0x1d8654);if(!_0x13998e['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x13998e['statusText']);return await _0x13998e['json']();},async 'getEnvironmentRepoHistory'(_0x280327,_0x494d68,_0x8c8fb4={}){if(!_0x280327||!_0x494d68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd3aa41=new URLSearchParams();if(_0x8c8fb4['limit'])_0xd3aa41['set']('limit',String(_0x8c8fb4['limit']));if(_0x8c8fb4['offset'])_0xd3aa41['set']('offset',String(_0x8c8fb4['offset']));if(_0x8c8fb4['search'])_0xd3aa41['set']('search',String(_0x8c8fb4['search']));if(_0x8c8fb4['branch'])_0xd3aa41['set']('branch',String(_0x8c8fb4['branch']));const _0x94a480=API_BASE+'/environments/'+encodeURIComponent(_0x280327)+'/repos/'+encodeURIComponent(_0x494d68)+'/git/history',_0x4c3f40=await fetch(''+_0x94a480+(_0xd3aa41['toString']()?'?'+_0xd3aa41['toString']():''));if(!_0x4c3f40['ok']){const _0x41255a=await _0x4c3f40['json']()['catch'](()=>({}));throw new Error(_0x41255a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4c3f40['statusText']);}return await _0x4c3f40['json']();},async 'getEnvironmentRepoCommit'(_0x1bb2af,_0x1edcb3,_0x953ff5){if(!_0x1bb2af||!_0x1edcb3||!_0x953ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x164b3e=API_BASE+'/environments/'+encodeURIComponent(_0x1bb2af)+'/repos/'+encodeURIComponent(_0x1edcb3)+'/git/commits/'+encodeURIComponent(_0x953ff5),_0x5ee53d=await fetch(_0x164b3e);if(!_0x5ee53d['ok']){const _0x49a6d3=await _0x5ee53d['json']()['catch'](()=>({}));throw new Error(_0x49a6d3['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ee53d['statusText']);}return await _0x5ee53d['json']();},async 'getEnvironmentRepoBranches'(_0x2331c3,_0x45599f){if(!_0x2331c3||!_0x45599f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5e1604=API_BASE+'/environments/'+encodeURIComponent(_0x2331c3)+'/repos/'+encodeURIComponent(_0x45599f)+'/git/branches',_0x465c0e=await fetch(_0x5e1604);if(!_0x465c0e['ok']){const _0x621e13=await _0x465c0e['json']()['catch'](()=>({}));throw new Error(_0x621e13['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x465c0e['statusText']);}return await _0x465c0e['json']();},async 'revertEnvironmentRepoCommit'(_0x5270a1,_0x5336ed,_0x4b7ff5,_0x361e04={}){if(!_0x5270a1||!_0x5336ed||!_0x4b7ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1e4fb7=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x5270a1)+'/repos/'+encodeURIComponent(_0x5336ed)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4b7ff5,..._0x361e04})});if(!_0x1e4fb7['ok']){const _0x43a9e8=await _0x1e4fb7['json']()['catch'](()=>({}));throw new Error(_0x43a9e8['message']||_0x43a9e8['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1e4fb7['statusText']);}return await _0x1e4fb7['json']();},async 'getTemplates'(_0x1b08c7={}){const _0x211761=new URLSearchParams();if(_0x1b08c7['include']){const _0x1af3a7=Array['isArray'](_0x1b08c7['include'])?_0x1b08c7['include']['join'](','):String(_0x1b08c7['include']);if(_0x1af3a7)_0x211761['set']('include',_0x1af3a7);}const _0x1664f4=await fetch(API_BASE+'/templates'+(_0x211761['toString']()?'?'+_0x211761['toString']():''));if(!_0x1664f4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x1664f4['statusText']);return await _0x1664f4['json']();},async 'getTemplatesForEnvironment'(_0x534a8e,_0x25b369={}){if(!_0x534a8e)throw new Error('Environment\x20name\x20is\x20required');const _0x34343b=new URLSearchParams();if(_0x25b369['include']){const _0x4e2167=Array['isArray'](_0x25b369['include'])?_0x25b369['include']['join'](','):String(_0x25b369['include']);if(_0x4e2167)_0x34343b['set']('include',_0x4e2167);}const _0xbdd070=await fetch(API_BASE+'/templates/'+_0x534a8e+(_0x34343b['toString']()?'?'+_0x34343b['toString']():''));if(!_0xbdd070['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x534a8e+':\x20'+_0xbdd070['statusText']);return await _0xbdd070['json']();},async 'getTemplate'(_0x1f567c,_0x5236ac,_0x35b4fa={}){if(!_0x1f567c||!_0x5236ac)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x367873=new URLSearchParams();if(_0x35b4fa['include']){const _0x1c4ae6=Array['isArray'](_0x35b4fa['include'])?_0x35b4fa['include']['join'](','):String(_0x35b4fa['include']);if(_0x1c4ae6)_0x367873['set']('include',_0x1c4ae6);}const _0x18c6ac=await fetch(API_BASE+'/templates/'+_0x1f567c+'/'+_0x5236ac+(_0x367873['toString']()?'?'+_0x367873['toString']():''));if(!_0x18c6ac['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x18c6ac['statusText']);return await _0x18c6ac['json']();},async 'getTaskLogs'(_0x1ec222,_0x2ca410={}){if(!_0x1ec222)throw new Error('Task\x20ID\x20is\x20required');const _0x191fb9=new URLSearchParams();_0x2ca410['tail']&&_0x191fb9['set']('tail',String(_0x2ca410['tail']));const _0x360ff4=await fetch(API_BASE+'/tasks/'+_0x1ec222+'/logs'+(_0x191fb9['toString']()?'?'+_0x191fb9['toString']():''));if(!_0x360ff4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x360ff4['statusText']);return await _0x360ff4['text']();},async 'getContainers'(){const _0x32ab37=await fetch(API_BASE+'/containers');if(!_0x32ab37['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x32ab37['statusText']);return await _0x32ab37['json']();},async 'getContainer'(_0x4c5539){const _0x33f05d=await fetch(API_BASE+'/containers/'+_0x4c5539);if(!_0x33f05d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33f05d['statusText']);return await _0x33f05d['json']();},async 'startInteractiveContainer'(_0x48bc58){const _0x14a87a=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48bc58)});if(!_0x14a87a['ok']){const _0x2f7409=await _0x14a87a['json']()['catch'](()=>({}));throw new Error(_0x2f7409['message']||'Failed\x20to\x20start\x20container:\x20'+_0x14a87a['statusText']);}return await _0x14a87a['json']();},async 'stopContainer'(_0x369e7e){const _0x33f278=await fetch(API_BASE+'/containers/'+_0x369e7e,{'method':'DELETE'});if(!_0x33f278['ok']){const _0x1291a5=await _0x33f278['json']()['catch'](()=>({}));throw new Error(_0x1291a5['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x33f278['statusText']);}return await _0x33f278['json']();},async 'stopTask'(_0x4b75d4){if(!_0x4b75d4)throw new Error('Task\x20ID\x20is\x20required');const _0x28dad5=await fetch(API_BASE+'/tasks/'+_0x4b75d4+'/stop',{'method':'POST'});if(!_0x28dad5['ok']){const _0x5478f7=await _0x28dad5['json']()['catch'](()=>({}));throw new Error(_0x5478f7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x28dad5['statusText']);}return await _0x28dad5['json']();},async 'interruptTask'(_0x4e2400){if(!_0x4e2400)throw new Error('Task\x20ID\x20is\x20required');const _0x46841f=await fetch(API_BASE+'/tasks/'+_0x4e2400+'/interrupt',{'method':'POST'});if(!_0x46841f['ok']){const _0xfc1dbf=await _0x46841f['json']()['catch'](()=>({}));throw new Error(_0xfc1dbf['error']||_0xfc1dbf['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x46841f['statusText']);}return await _0x46841f['json']();},async 'startTask'(_0xa6638e){if(!_0xa6638e)throw new Error('Task\x20ID\x20is\x20required');const _0x47ec0d=await fetch(API_BASE+'/tasks/'+_0xa6638e+'/start',{'method':'POST'});if(!_0x47ec0d['ok']){const _0x2306bd=await _0x47ec0d['json']()['catch'](()=>({}));throw new Error(_0x2306bd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x47ec0d['statusText']);}return await _0x47ec0d['json']();},async 'deleteTask'(_0x1e1c90){if(!_0x1e1c90)throw new Error('Task\x20ID\x20is\x20required');const _0x198cd3=await fetch(API_BASE+'/tasks/'+_0x1e1c90,{'method':'DELETE'});if(!_0x198cd3['ok']){const _0x303914=await _0x198cd3['json']()['catch'](()=>({}));throw new Error(_0x303914['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x198cd3['statusText']);}return await _0x198cd3['json']();},async 'refreshTasksFromDisk'(){const _0x4beef1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4beef1['ok']){const _0x326f2e=await _0x4beef1['json']()['catch'](()=>({}));throw new Error(_0x326f2e['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4beef1['statusText']);}return await _0x4beef1['json']();},async 'approveTask'(_0x31a261,_0x467b0b={}){if(!_0x31a261)throw new Error('Task\x20ID\x20is\x20required');const _0x401877={'commit_message':_0x467b0b['commit_message']||'','pull':_0x467b0b['pull']??![],'push':_0x467b0b['push']??![]};_0x467b0b['new_branch']&&(_0x401877['new_branch']=_0x467b0b['new_branch']);const _0xaf8fb1=await fetch(API_BASE+'/tasks/'+_0x31a261+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x401877)});if(!_0xaf8fb1['ok']){const _0x36aec2=await _0xaf8fb1['json']()['catch'](()=>({}));let _0x1951c1=_0x36aec2['error']||_0x36aec2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xaf8fb1['statusText'];if(_0x36aec2['results']&&Array['isArray'](_0x36aec2['results'])){const _0x3274b3=_0x36aec2['results']['filter'](_0x2509f3=>!_0x2509f3['success']&&_0x2509f3['error']);_0x3274b3['length']>0x0&&(_0x1951c1=_0x3274b3[0x0]['error']);}throw new Error(_0x1951c1);}return await _0xaf8fb1['json']();},async 'getPullRequestInfo'(_0x4405fe){if(!_0x4405fe)throw new Error('Task\x20ID\x20is\x20required');const _0x471518=await fetch(API_BASE+'/tasks/'+_0x4405fe+'/pull-request-info');if(!_0x471518['ok']){const _0x462944=await _0x471518['json']()['catch'](()=>({}));throw new Error(_0x462944['error']||_0x462944['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x471518['statusText']);}return await _0x471518['json']();},async 'createPullRequests'(_0x35f221,_0x378d0c){if(!_0x35f221)throw new Error('Task\x20ID\x20is\x20required');if(!_0x378d0c||!Array['isArray'](_0x378d0c))throw new Error('repos\x20array\x20is\x20required');const _0x4b90c5=await fetch(API_BASE+'/tasks/'+_0x35f221+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x378d0c})});if(!_0x4b90c5['ok']){const _0x8cc989=await _0x4b90c5['json']()['catch'](()=>({}));let _0x108817=_0x8cc989['error']||_0x8cc989['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4b90c5['statusText'];if(_0x8cc989['results']&&Array['isArray'](_0x8cc989['results'])){const _0x3ae796=_0x8cc989['results']['filter'](_0x71bd0a=>!_0x71bd0a['success']&&_0x71bd0a['error']);_0x3ae796['length']>0x0&&(_0x108817=_0x3ae796[0x0]['error']);}throw new Error(_0x108817);}return await _0x4b90c5['json']();},async 'syncRepos'(_0x623e5e){if(!_0x623e5e)throw new Error('Task\x20ID\x20is\x20required');const _0x43b93c=await fetch(API_BASE+'/tasks/'+_0x623e5e+'/sync-repos',{'method':'POST'});if(!_0x43b93c['ok']){const _0x1ed348=await _0x43b93c['json']()['catch'](()=>({}));throw new Error(_0x1ed348['error']||_0x1ed348['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x43b93c['statusText']);}return await _0x43b93c['json']();},async 'getIbmiSyncInfo'(_0xb0c116){if(!_0xb0c116)throw new Error('Task\x20ID\x20is\x20required');const _0x35aa4b=await fetch(API_BASE+'/tasks/'+_0xb0c116+'/ibmi-sync-info');if(!_0x35aa4b['ok']){const _0x259cf5=await _0x35aa4b['json']()['catch'](()=>({}));throw new Error(_0x259cf5['error']||_0x259cf5['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x35aa4b['json']();},async 'getSyncFiles'(_0x4c9d7d){if(!_0x4c9d7d)throw new Error('Task\x20ID\x20is\x20required');const _0x1a656d=await fetch(API_BASE+'/tasks/'+_0x4c9d7d+'/sync-to-ibmi/files');if(!_0x1a656d['ok']){const _0x32c988=await _0x1a656d['json']()['catch'](()=>({}));throw new Error(_0x32c988['error']||_0x32c988['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1a656d['json']();},async 'syncToIbmi'(_0x10bd27,_0x2596b0,_0x34ff47=null,_0x2b0f1f=null,_0x2d9d83=null){if(!_0x10bd27)throw new Error('Task\x20ID\x20is\x20required');const _0x1938af={'library':_0x2596b0};if(_0x34ff47)_0x1938af['user']=_0x34ff47;if(_0x2b0f1f)_0x1938af['password']=_0x2b0f1f;if(_0x2d9d83)_0x1938af['files']=_0x2d9d83;const _0x2be24d=await fetch(API_BASE+'/tasks/'+_0x10bd27+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1938af)});if(!_0x2be24d['ok']){const _0x1f023=await _0x2be24d['json']()['catch'](()=>({}));throw new Error(_0x1f023['error']||_0x1f023['message']||'Sync\x20failed');}return await _0x2be24d['json']();},async 'getIbmiSyncLog'(_0x45cbac){if(!_0x45cbac)throw new Error('Task\x20ID\x20is\x20required');const _0x144584=await fetch(API_BASE+'/tasks/'+_0x45cbac+'/ibmi-sync-log');if(!_0x144584['ok']){const _0x51351d=await _0x144584['json']()['catch'](()=>({}));throw new Error(_0x51351d['error']||_0x51351d['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x144584['json']();},async 'pullChanges'(_0x4f60e1){if(!_0x4f60e1)throw new Error('Task\x20ID\x20is\x20required');const _0x5c82f3=await fetch(API_BASE+'/tasks/'+_0x4f60e1+'/pull-changes',{'method':'POST'});if(!_0x5c82f3['ok']){const _0x595819=await _0x5c82f3['json']()['catch'](()=>({}));throw new Error(_0x595819['error']||_0x595819['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5c82f3['statusText']);}return await _0x5c82f3['json']();},async 'readFile'(_0x3dd682,_0x5a6fdb){if(!_0x3dd682)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a6fdb)throw new Error('File\x20path\x20is\x20required');const _0x1eebe7=await fetch(API_BASE+'/tasks/'+_0x3dd682+'/files?path='+encodeURIComponent(_0x5a6fdb));if(!_0x1eebe7['ok']){const _0x5ad797=await _0x1eebe7['json']()['catch'](()=>({}));throw new Error(_0x5ad797['error']||_0x5ad797['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1eebe7['statusText']);}return await _0x1eebe7['json']();},'getTaskFileDownloadUrl'(_0x221ecb,_0x2f50df){if(!_0x221ecb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f50df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x221ecb+'/files/download?path='+encodeURIComponent(_0x2f50df);},async 'writeFile'(_0x58e5a2,_0x5b5000,_0x548fd8){if(!_0x58e5a2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b5000)throw new Error('File\x20path\x20is\x20required');if(_0x548fd8===undefined)throw new Error('Content\x20is\x20required');const _0x1a09db=await fetch(API_BASE+'/tasks/'+_0x58e5a2+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5b5000,'content':_0x548fd8})});if(!_0x1a09db['ok']){const _0xff63ec=await _0x1a09db['json']()['catch'](()=>({}));throw new Error(_0xff63ec['error']||_0xff63ec['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1a09db['statusText']);}return await _0x1a09db['json']();},async 'uploadTaskFiles'(_0x3434f1,_0x66330e,_0x1a5d1c){if(!_0x3434f1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x66330e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x1a5d1c||_0x1a5d1c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30866e=new FormData();_0x30866e['append']('targetDir',_0x66330e);for(const _0xd74b51 of _0x1a5d1c){_0x30866e['append']('files',_0xd74b51,_0xd74b51['name']);}const _0x2a5788=await fetch(API_BASE+'/tasks/'+_0x3434f1+'/files/upload',{'method':'POST','body':_0x30866e});if(!_0x2a5788['ok']){const _0x1b5f8d=await _0x2a5788['json']()['catch'](()=>({}));throw new Error(_0x1b5f8d['error']||_0x1b5f8d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2a5788['statusText']);}return await _0x2a5788['json']();},async 'createDirectory'(_0x6d9df8,_0x349cef){if(!_0x6d9df8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x349cef)throw new Error('Directory\x20path\x20is\x20required');const _0x26ef11=await fetch(API_BASE+'/tasks/'+_0x6d9df8+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x349cef})});if(!_0x26ef11['ok']){const _0x20ea25=await _0x26ef11['json']()['catch'](()=>({}));throw new Error(_0x20ea25['error']||_0x20ea25['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x26ef11['statusText']);}return await _0x26ef11['json']();},async 'renamePath'(_0x59b016,_0x4cc7bf,_0x1cd64b){if(!_0x59b016)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4cc7bf)throw new Error('Source\x20path\x20is\x20required');if(!_0x1cd64b)throw new Error('Destination\x20path\x20is\x20required');const _0x16cc02=await fetch(API_BASE+'/tasks/'+_0x59b016+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x4cc7bf,'newPath':_0x1cd64b})});if(!_0x16cc02['ok']){const _0x4f4c1d=await _0x16cc02['json']()['catch'](()=>({}));throw new Error(_0x4f4c1d['error']||_0x4f4c1d['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x16cc02['statusText']);}return await _0x16cc02['json']();},async 'deleteFile'(_0x543f7e,_0x24b2b2){if(!_0x543f7e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24b2b2)throw new Error('File\x20path\x20is\x20required');const _0x25f8aa=await fetch(API_BASE+'/tasks/'+_0x543f7e+'/files?path='+encodeURIComponent(_0x24b2b2),{'method':'DELETE'});if(!_0x25f8aa['ok']){const _0x134a9d=await _0x25f8aa['json']()['catch'](()=>({}));throw new Error(_0x134a9d['error']||_0x134a9d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x25f8aa['statusText']);}return await _0x25f8aa['json']();},async 'deleteDirectory'(_0x56b83e,_0x323471){if(!_0x56b83e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x323471)throw new Error('Directory\x20path\x20is\x20required');const _0x41982a=await fetch(API_BASE+'/tasks/'+_0x56b83e+'/files/directory?path='+encodeURIComponent(_0x323471),{'method':'DELETE'});if(!_0x41982a['ok']){const _0x3118a3=await _0x41982a['json']()['catch'](()=>({}));throw new Error(_0x3118a3['error']||_0x3118a3['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x41982a['statusText']);}return await _0x41982a['json']();},async 'discardFile'(_0x14fb7d,_0xbcf1f2,_0x2fc7c7){if(!_0x14fb7d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbcf1f2)throw new Error('File\x20path\x20is\x20required');if(!_0x2fc7c7)throw new Error('Repository\x20path\x20is\x20required');const _0x26f167=await fetch(API_BASE+'/tasks/'+_0x14fb7d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xbcf1f2,'repoPath':_0x2fc7c7})});if(!_0x26f167['ok']){const _0x4c2af6=await _0x26f167['json']()['catch'](()=>({}));throw new Error(_0x4c2af6['error']||_0x4c2af6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x26f167['statusText']);}return await _0x26f167['json']();},async 'followUpTask'(_0x4cb9fe,_0x4f1efe={}){if(!_0x4cb9fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f1efe['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3e8d43,_0x332566={};if(_0x4f1efe['files']&&_0x4f1efe['files']['length']>0x0){const _0x356a6b=new FormData();_0x356a6b['append']('instructions',_0x4f1efe['instructions']);for(const _0x2fd190 of _0x4f1efe['files']){_0x356a6b['append']('attachments',_0x2fd190);}_0x3e8d43=_0x356a6b;}else _0x332566['Content-Type']='application/json',_0x3e8d43=JSON['stringify']({'instructions':_0x4f1efe['instructions']});const _0x43dd52=await fetch(API_BASE+'/tasks/'+_0x4cb9fe+'/follow-up',{'method':'POST','headers':_0x332566,'body':_0x3e8d43});if(!_0x43dd52['ok']){const _0x3884b6=await _0x43dd52['json']()['catch'](()=>({}));throw new Error(_0x3884b6['error']||_0x3884b6['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x43dd52['statusText']);}return await _0x43dd52['json']();},async 'getTaskRewindPoints'(_0x3898ac){if(!_0x3898ac)throw new Error('Task\x20ID\x20is\x20required');const _0x13e618=await fetch(API_BASE+'/tasks/'+_0x3898ac+'/rewind-points');if(!_0x13e618['ok']){const _0x5ba2ce=await _0x13e618['json']()['catch'](()=>({}));throw new Error(_0x5ba2ce['error']||_0x5ba2ce['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13e618['statusText']);}return await _0x13e618['json']();},async 'rewindTask'(_0x389b04,_0x2ca272={}){if(!_0x389b04)throw new Error('Task\x20ID\x20is\x20required');const _0x1a4562=Number['isInteger'](_0x2ca272['targetFollowUpCount'])?_0x2ca272['targetFollowUpCount']:0x0,_0x46b5f5={'targetFollowUpCount':_0x1a4562};typeof _0x2ca272['instructions']==='string'&&_0x2ca272['instructions']['trim']()&&(_0x46b5f5['instructions']=_0x2ca272['instructions']['trim']());typeof _0x2ca272['rewindFiles']==='boolean'&&(_0x46b5f5['rewindFiles']=_0x2ca272['rewindFiles']);const _0x2de7c0=await fetch(API_BASE+'/tasks/'+_0x389b04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46b5f5)});if(!_0x2de7c0['ok']){const _0x56aaa0=await _0x2de7c0['json']()['catch'](()=>({}));throw new Error(_0x56aaa0['error']||_0x56aaa0['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2de7c0['statusText']);}return await _0x2de7c0['json']();},async 'login'(_0x196461,_0x604d71){const _0x4d1ad5=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x196461,'password':_0x604d71})});if(!_0x4d1ad5['ok']){const _0x165067=await _0x4d1ad5['json']();throw new Error(_0x165067['message']||'Login\x20failed');}return await _0x4d1ad5['json']();},async 'logout'(){const _0x1a019e=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1a019e['ok']){const _0x1812a5=await _0x1a019e['json']();throw new Error(_0x1812a5['message']||'Logout\x20failed');}return await _0x1a019e['json']();},async 'getCurrentUser'(){const _0x2fc47e=await fetch(API_BASE+'/auth/me');if(!_0x2fc47e['ok'])throw new Error('Not\x20authenticated');const _0x5f1240=await _0x2fc47e['json']();return _0x5f1240['user'];},async 'getRolesInfo'(){const _0x412b05=await fetch(API_BASE+'/users/roles');if(!_0x412b05['ok']){const _0x3a3c79=await _0x412b05['json']();throw new Error(_0x3a3c79['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x412b05['json']();},async 'getUsers'(){const _0x3b736b=await fetch(API_BASE+'/users');if(!_0x3b736b['ok']){const _0x374fd1=await _0x3b736b['json']();throw new Error(_0x374fd1['message']||'Failed\x20to\x20get\x20users');}return await _0x3b736b['json']();},async 'getUser'(_0x14f272){const _0x1f7721=await fetch(API_BASE+'/users/'+_0x14f272);if(!_0x1f7721['ok']){const _0x12fe93=await _0x1f7721['json']();throw new Error(_0x12fe93['message']||'Failed\x20to\x20get\x20user');}return await _0x1f7721['json']();},async 'createUser'(_0x2449b2){const _0x5486c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2449b2)});if(!_0x5486c0['ok']){const _0x1ddf56=await _0x5486c0['json']();throw new Error(_0x1ddf56['message']||'Failed\x20to\x20create\x20user');}return await _0x5486c0['json']();},async 'updateUser'(_0x9d7266,_0x40c62a){const _0x47d740=await fetch(API_BASE+'/users/'+_0x9d7266,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40c62a)});if(!_0x47d740['ok']){const _0x15763b=await _0x47d740['json']();throw new Error(_0x15763b['message']||'Failed\x20to\x20update\x20user');}return await _0x47d740['json']();},async 'deleteUser'(_0x454222){const _0x3eb509=await fetch(API_BASE+'/users/'+_0x454222,{'method':'DELETE'});if(!_0x3eb509['ok']){const _0x3d0aba=await _0x3eb509['json']();throw new Error(_0x3d0aba['message']||'Failed\x20to\x20delete\x20user');}return await _0x3eb509['json']();},async 'stopAllContainers'(){const _0x235468=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1f8b68=await _0x235468['json']()['catch'](()=>({}));if(!_0x235468['ok'])throw new Error(_0x1f8b68['message']||_0x1f8b68['error']||'Failed\x20to\x20stop\x20containers');return _0x1f8b68;},async 'removeStoppedContainers'(){const _0x156b03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x23e323=await _0x156b03['json']()['catch'](()=>({}));if(!_0x156b03['ok'])throw new Error(_0x23e323['message']||_0x23e323['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x23e323;},async 'pruneDockerResources'(){const _0x18f60f=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xcd24f5=await _0x18f60f['json']()['catch'](()=>({}));if(!_0x18f60f['ok'])throw new Error(_0xcd24f5['message']||_0xcd24f5['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xcd24f5;},async 'createPasswordToken'(_0x5e7784,_0x2c41b4='setup',_0x4d9a28=![]){const _0x1d5bab=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5e7784,'type':_0x2c41b4,'sendEmail':_0x4d9a28})});if(!_0x1d5bab['ok']){const _0x364451=await _0x1d5bab['json']();throw new Error(_0x364451['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1d5bab['json']();},async 'getEmailConfig'(){const _0x5abfe2=await fetch(API_BASE+'/password/email-config');if(!_0x5abfe2['ok']){const _0x42a4fd=await _0x5abfe2['json']();throw new Error(_0x42a4fd['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5abfe2['json']();},async 'updateTaskName'(_0x17bd35,_0x92e3c){const _0x625230=await fetch(API_BASE+'/tasks/'+_0x17bd35,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x92e3c})});if(!_0x625230['ok']){const _0xe43d2d=await _0x625230['json']();throw new Error(_0xe43d2d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x625230['json']();},async 'pinTask'(_0x25197a,_0x337beb,_0x5cbf4c=null){if(!_0x25197a)throw new Error('Task\x20ID\x20is\x20required');const _0x348175={'pinned':_0x337beb};_0x5cbf4c&&_0x5cbf4c['length']>0x0&&(_0x348175['additionalTaskIds']=_0x5cbf4c);const _0x540895=await fetch(API_BASE+'/tasks/'+_0x25197a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x348175)});if(!_0x540895['ok']){const _0x202c6d=await _0x540895['json']();throw new Error(_0x202c6d['error']||'Failed\x20to\x20pin\x20task');}return await _0x540895['json']();},async 'setTaskWinner'(_0x21dc64,_0x3e3268,_0xcbc369=[]){if(!_0x21dc64)throw new Error('Task\x20ID\x20is\x20required');const _0x19de09=await fetch(API_BASE+'/tasks/'+_0x21dc64+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3e3268,'siblings':_0xcbc369})});if(!_0x19de09['ok']){const _0x2513c5=await _0x19de09['json']();throw new Error(_0x2513c5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x19de09['json']();},async 'setTaskLoser'(_0x236160,_0x3d4f07){if(!_0x236160)throw new Error('Task\x20ID\x20is\x20required');const _0x5c506e=await fetch(API_BASE+'/tasks/'+_0x236160+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d4f07})});if(!_0x5c506e['ok']){const _0x35504c=await _0x5c506e['json']();throw new Error(_0x35504c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c506e['json']();},async 'createTaskGroup'(_0x2bb72f){const _0x45c4ab=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bb72f)});if(!_0x45c4ab['ok']){const _0x7c392d=await _0x45c4ab['json']();throw new Error(_0x7c392d['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x45c4ab['json']();},async 'getTaskGroups'(_0x1f5255={}){const _0xe8c65e=new URLSearchParams();if(_0x1f5255['userId'])_0xe8c65e['set']('userId',String(_0x1f5255['userId']));if(_0x1f5255['status'])_0xe8c65e['set']('status',String(_0x1f5255['status']));if(_0x1f5255['limit'])_0xe8c65e['set']('limit',String(_0x1f5255['limit']));const _0x47578a=API_BASE+'/tasks/groups'+(_0xe8c65e['toString']()?'?'+_0xe8c65e['toString']():''),_0x95cfed=await fetch(_0x47578a);if(!_0x95cfed['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x95cfed['json']();},async 'getTaskGroup'(_0x3c1bca){const _0x18f4f7=await fetch(API_BASE+'/tasks/groups/'+_0x3c1bca);if(!_0x18f4f7['ok']){const _0x57a6c6=await _0x18f4f7['json']();throw new Error(_0x57a6c6['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x18f4f7['json']();},async 'updateTaskGroup'(_0x4c2185,_0x50a378,_0x1acffc){const _0x39f036=await fetch(API_BASE+'/tasks/'+_0x4c2185+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50a378,'groupIndex':_0x1acffc})});if(!_0x39f036['ok']){const _0x67ea95=await _0x39f036['json']();throw new Error(_0x67ea95['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x39f036['json']();},async 'removeTaskFromGroup'(_0x56b515){return this['updateTaskGroup'](_0x56b515,null,null);},async 'deleteTaskGroup'(_0x4d0b39,_0x254c1c=![]){const _0x488f29=_0x254c1c?'?deleteTasks=true':'',_0x1a1e50=await fetch(API_BASE+'/tasks/groups/'+_0x4d0b39+_0x488f29,{'method':'DELETE'});if(!_0x1a1e50['ok']){const _0x38d4eb=await _0x1a1e50['json']();throw new Error(_0x38d4eb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5e3235,_0x5e2f34){const _0x57d277=await fetch(API_BASE+'/tasks/groups/'+_0x5e3235+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5e2f34})});if(!_0x57d277['ok']){const _0x347737=await _0x57d277['json']();throw new Error(_0x347737['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x57d277['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3d3263){if(!_0x3d3263)throw new Error('Task\x20ID\x20is\x20required');const _0x1f35f7=await fetch(API_BASE+'/tasks/'+_0x3d3263+'/comments');if(!_0x1f35f7['ok']){const _0x3c9796=await _0x1f35f7['json']()['catch'](()=>({}));throw new Error(_0x3c9796['error']||'Failed\x20to\x20get\x20comments');}return await _0x1f35f7['json']();},async 'addComment'(_0x7fa547,_0x570378){if(!_0x7fa547)throw new Error('Task\x20ID\x20is\x20required');if(!_0x570378)throw new Error('Comment\x20content\x20is\x20required');const _0x594b30=await fetch(API_BASE+'/tasks/'+_0x7fa547+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x570378})});if(!_0x594b30['ok']){const _0x3f4974=await _0x594b30['json']()['catch'](()=>({}));throw new Error(_0x3f4974['error']||'Failed\x20to\x20add\x20comment');}return await _0x594b30['json']();},async 'updateComment'(_0x3ddc1c,_0x178fc6,_0x47ffa5){if(!_0x3ddc1c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x178fc6)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x47ffa5)throw new Error('Comment\x20content\x20is\x20required');const _0x283635=await fetch(API_BASE+'/tasks/'+_0x3ddc1c+'/comments/'+_0x178fc6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x47ffa5})});if(!_0x283635['ok']){const _0x2ebde8=await _0x283635['json']()['catch'](()=>({}));throw new Error(_0x2ebde8['error']||'Failed\x20to\x20update\x20comment');}return await _0x283635['json']();},async 'deleteComment'(_0xf2d106,_0x135a04){if(!_0xf2d106)throw new Error('Task\x20ID\x20is\x20required');if(!_0x135a04)throw new Error('Comment\x20ID\x20is\x20required');const _0x32cd03=await fetch(API_BASE+'/tasks/'+_0xf2d106+'/comments/'+_0x135a04,{'method':'DELETE'});if(!_0x32cd03['ok']){const _0x16d3da=await _0x32cd03['json']()['catch'](()=>({}));throw new Error(_0x16d3da['error']||'Failed\x20to\x20delete\x20comment');}return await _0x32cd03['json']();},async 'createObjective'(_0x1ab760){const _0x404b1e={'objective':!![],'name':_0x1ab760['name']||'','environment':_0x1ab760['environment']||null,'agents':_0x1ab760['agents']||[],'branches':_0x1ab760['branches']||{},'isPinned':_0x1ab760['isPinned']||![],'parentObjectiveId':_0x1ab760['parentObjectiveId']||null,'env_vars':_0x1ab760['envVars']||{},'parameters':{'instructions':_0x1ab760['instructions']||''},'files':_0x1ab760['files']||[],'jira':_0x1ab760['jira']||null};return this['createTask'](_0x404b1e);},async 'updateObjective'(_0x2061f0,_0x22c55e,_0x4ba400=[],_0x597f8a=[]){let _0x22a049,_0x10c417={};const _0x18b215={..._0x22c55e};_0x597f8a&&_0x597f8a['length']>0x0&&(_0x18b215['removeAttachments']=_0x597f8a);if(_0x4ba400&&_0x4ba400['length']>0x0){const _0x5e1d8a=new FormData();for(const [_0x328111,_0x2a99c1]of Object['entries'](_0x18b215)){if(_0x2a99c1==null)continue;typeof _0x2a99c1==='object'?_0x5e1d8a['append'](_0x328111,JSON['stringify'](_0x2a99c1)):_0x5e1d8a['append'](_0x328111,String(_0x2a99c1));}for(const _0x4b7f0b of _0x4ba400){_0x5e1d8a['append']('attachments',_0x4b7f0b);}_0x22a049=_0x5e1d8a;}else _0x10c417['Content-Type']='application/json',_0x22a049=JSON['stringify'](_0x18b215);const _0x200c0f=await fetch(API_BASE+'/tasks/'+_0x2061f0,{'method':'PATCH','headers':_0x10c417,'body':_0x22a049});if(!_0x200c0f['ok']){const _0x2be894=await _0x200c0f['json']();throw new Error(_0x2be894['error']||'Failed\x20to\x20update\x20objective');}return await _0x200c0f['json']();},async 'deleteObjective'(_0x57ea4e){return this['deleteTask'](_0x57ea4e);},async 'launchObjective'(_0x4fdd5e,_0x284747={}){const _0x2047a4=await fetch(API_BASE+'/tasks/'+_0x4fdd5e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x284747)});if(!_0x2047a4['ok']){const _0x3de7cd=await _0x2047a4['json']();throw new Error(_0x3de7cd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2047a4['json']();},async 'getObjectiveAttachments'(_0x446963){return this['getTaskAttachments'](_0x446963);},async 'createJudgeTask'({environment:_0x184d1c,judgeAgent:_0x3e566f,groupId:_0x33bf99,taskIds:_0x3a7c2a,judgeCustomInstructions:_0x54939b,isPinned:_0x532648}){const _0x14f7ce=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x184d1c,'judgeAgent':_0x3e566f,'groupId':_0x33bf99,'taskIds':_0x3a7c2a,'judgeCustomInstructions':_0x54939b,'isPinned':_0x532648})});if(!_0x14f7ce['ok']){const _0xd94b8c=await _0x14f7ce['json']();throw new Error(_0xd94b8c['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x14f7ce['json']();},async 'getJudgeTasks'(_0x55146a){const _0x49516f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x55146a));if(!_0x49516f['ok']){const _0x4c7c23=await _0x49516f['json']();throw new Error(_0x4c7c23['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x49516f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x398472,_0xf66ca,_0x4157da=''){const _0x4dc2e4=await fetch(API_BASE+'/tasks/'+_0x398472+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0xf66ca,'customPreamble':_0x4157da})});if(!_0x4dc2e4['ok']){const _0x4995b9=await _0x4dc2e4['json']();throw new Error(_0x4995b9['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4dc2e4['json']();},async 'getJiraConfig'(){const _0x570cca=await fetch(API_BASE+'/jira/config');if(!_0x570cca['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x570cca['json']();},async 'getJiraIssue'(_0x231c17){const _0x20984a=await fetch(API_BASE+'/jira/issues/'+_0x231c17);if(!_0x20984a['ok']){const _0xbc40e8=await _0x20984a['json']()['catch'](()=>({}));throw new Error(_0xbc40e8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20984a['statusText']);}return await _0x20984a['json']();},async 'searchJiraIssues'(_0x3162fd,_0x125723=0x14){const _0x144401=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3162fd,'maxResults':_0x125723})});if(!_0x144401['ok']){const _0x19c993=await _0x144401['json']()['catch'](()=>({}));throw new Error(_0x19c993['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x144401['statusText']);}return await _0x144401['json']();},async 'postJiraComment'(_0x575e8f,_0x1f9d49){const _0x1c6b6c=await fetch(API_BASE+'/jira/issues/'+_0x575e8f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x1f9d49})});if(!_0x1c6b6c['ok']){const _0x5b5e39=await _0x1c6b6c['json']()['catch'](()=>({}));throw new Error(_0x5b5e39['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1c6b6c['statusText']);}return await _0x1c6b6c['json']();},async 'getJiraComments'(_0x221dd0){const _0x33cd43=await fetch(API_BASE+'/jira/issues/'+_0x221dd0+'/comments');if(!_0x33cd43['ok']){const _0x2a53f4=await _0x33cd43['json']()['catch'](()=>({}));throw new Error(_0x2a53f4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x33cd43['statusText']);}return await _0x33cd43['json']();},async 'promptParameter'({environment:_0x1a1099,command:_0x3255f7,parser:parser='json'}){const _0xff2304=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1a1099,'command':_0x3255f7,'parser':parser})});if(!_0xff2304['ok']){const _0x21e5e4=await _0xff2304['json']()['catch'](()=>({}));throw new Error(_0x21e5e4['message']||_0x21e5e4['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xff2304['statusText']);}return await _0xff2304['json']();},async 'promptParameterStream'(_0x76459b,_0xcf3380){const _0x46ca72=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x76459b)});if(!_0x46ca72['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x46ca72['statusText']);const _0x27b2cf=_0x46ca72['body']['getReader'](),_0x4756d3=new TextDecoder();let _0x1d3ba0='';return new Promise((_0x36fa19,_0x152e4d)=>{const _0x1ef25d=async()=>{try{const {done:_0x3db195,value:_0x1d6930}=await _0x27b2cf['read']();if(_0x3db195)return;_0x1d3ba0+=_0x4756d3['decode'](_0x1d6930,{'stream':!![]});const _0x367867=_0x1d3ba0['split']('\x0a\x0a');_0x1d3ba0=_0x367867['pop']()||'';for(const _0x433e5e of _0x367867){if(!_0x433e5e['trim']())continue;const _0x2da9d4=_0x433e5e['split']('\x0a');let _0x4f92c4='message',_0x2cd969='';for(const _0x428acc of _0x2da9d4){if(_0x428acc['startsWith']('event:'))_0x4f92c4=_0x428acc['substring'](0x6)['trim']();else _0x428acc['startsWith']('data:')&&(_0x2cd969=_0x428acc['substring'](0x5)['trim']());}if(!_0x2cd969)continue;try{const _0x619f5f=JSON['parse'](_0x2cd969);if(_0x4f92c4==='progress'&&_0xcf3380)_0xcf3380(_0x619f5f['stage'],_0x619f5f['message']);else{if(_0x4f92c4==='result'){_0x36fa19(_0x619f5f);return;}else{if(_0x4f92c4==='error'){let _0x420fde=_0x619f5f['message']||_0x619f5f['error']||'Prompt\x20command\x20failed';_0x619f5f['rawOutput']&&(_0x420fde+='\x0a\x0aRaw\x20output:\x0a'+_0x619f5f['rawOutput']);_0x152e4d(new Error(_0x420fde));return;}}}}catch(_0x47736d){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x47736d),console['error']('Event\x20type:',_0x4f92c4),console['error']('Event\x20data:',_0x2cd969),console['error']('First\x20200\x20chars:',_0x2cd969['substring'](0x0,0xc8)),_0x152e4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x47736d['message']+'\x0a\x0aData:\x20'+_0x2cd969['substring'](0x0,0x1f4)));return;}}_0x1ef25d();}catch(_0x155b7b){_0x152e4d(_0x155b7b);}};_0x1ef25d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5ef796){const _0x3ed61a=await fetch(''+API_BASE+_0x5ef796);if(!_0x3ed61a['ok']){const _0x376212=await _0x3ed61a['json']()['catch'](()=>({'error':_0x3ed61a['statusText']})),_0xb4b22e=new Error(_0x376212['error']||_0x376212['message']||_0x3ed61a['statusText']);if(_0x376212['detail']!==undefined)_0xb4b22e['detail']=_0x376212['detail'];throw _0xb4b22e;}return await _0x3ed61a['json']();},async 'post'(_0x348f44,_0x3afbe0){const _0x2a8f4c=await fetch(''+API_BASE+_0x348f44,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afbe0)});if(!_0x2a8f4c['ok']){const _0x17e921=await _0x2a8f4c['json']()['catch'](()=>({'error':_0x2a8f4c['statusText']})),_0x34055e=new Error(_0x17e921['error']||_0x17e921['message']||_0x2a8f4c['statusText']);if(_0x17e921['detail']!==undefined)_0x34055e['detail']=_0x17e921['detail'];throw _0x34055e;}return await _0x2a8f4c['json']();},async 'put'(_0x262c8d,_0x41fd0a){const _0x56441c=await fetch(''+API_BASE+_0x262c8d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fd0a)});if(!_0x56441c['ok']){const _0x3b6dc6=await _0x56441c['json']()['catch'](()=>({'error':_0x56441c['statusText']})),_0xb04368=new Error(_0x3b6dc6['error']||_0x3b6dc6['message']||_0x56441c['statusText']);if(_0x3b6dc6['detail']!==undefined)_0xb04368['detail']=_0x3b6dc6['detail'];throw _0xb04368;}return await _0x56441c['json']();},async 'delete'(_0x35774b,_0x23d840){const _0x1c24f4={'method':'DELETE'};_0x23d840&&(_0x1c24f4['headers']={'Content-Type':'application/json'},_0x1c24f4['body']=JSON['stringify'](_0x23d840));const _0x35b4be=await fetch(''+API_BASE+_0x35774b,_0x1c24f4);if(!_0x35b4be['ok']){const _0x543679=await _0x35b4be['json']()['catch'](()=>({'error':_0x35b4be['statusText']})),_0x374a96=new Error(_0x543679['error']||_0x543679['message']||_0x35b4be['statusText']);if(_0x543679['detail']!==undefined)_0x374a96['detail']=_0x543679['detail'];throw _0x374a96;}return await _0x35b4be['json']();},async 'getSkills'(){const _0x26770d=await fetch(API_BASE+'/skills');if(!_0x26770d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x26770d['statusText']);return await _0x26770d['json']();},async 'getSkill'(_0x269682){const _0x4ff9c9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269682));if(!_0x4ff9c9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4ff9c9['statusText']);return await _0x4ff9c9['json']();},async 'createSkill'(_0xb2e573){const _0x5ad6ba=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb2e573)});if(!_0x5ad6ba['ok']){const _0x5a5a1d=await _0x5ad6ba['json']()['catch'](()=>({'error':_0x5ad6ba['statusText']})),_0x5ef032=new Error(_0x5a5a1d['error']||_0x5a5a1d['message']||_0x5ad6ba['statusText']);if(_0x5a5a1d['detail']!==undefined)_0x5ef032['detail']=_0x5a5a1d['detail'];throw _0x5ef032;}return await _0x5ad6ba['json']();},async 'updateSkill'(_0x2a2a2b,_0x3e99bb){const _0x1df413=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2a2a2b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e99bb)});if(!_0x1df413['ok']){const _0x1fb145=await _0x1df413['json']()['catch'](()=>({'error':_0x1df413['statusText']})),_0x2cc43f=new Error(_0x1fb145['error']||_0x1fb145['message']||_0x1df413['statusText']);if(_0x1fb145['detail']!==undefined)_0x2cc43f['detail']=_0x1fb145['detail'];throw _0x2cc43f;}return await _0x1df413['json']();},async 'deleteSkill'(_0x4c2bee){const _0x47cd04=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2bee),{'method':'DELETE'});if(!_0x47cd04['ok']){const _0x5528d0=await _0x47cd04['json']()['catch'](()=>({'error':_0x47cd04['statusText']})),_0x4161c8=new Error(_0x5528d0['error']||_0x5528d0['message']||_0x47cd04['statusText']);if(_0x5528d0['detail']!==undefined)_0x4161c8['detail']=_0x5528d0['detail'];throw _0x4161c8;}return await _0x47cd04['json']();},async 'getSkillFile'(_0x4d5644,_0x58c60b){const _0x3e2bf3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d5644)+'/files/'+_0x58c60b);if(!_0x3e2bf3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3e2bf3['statusText']);return await _0x3e2bf3['json']();},async 'saveSkillFile'(_0x35f49f,_0x53e66e,_0x4b96c9){const _0x4b7f2d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35f49f)+'/files/'+_0x53e66e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b96c9})});if(!_0x4b7f2d['ok']){const _0x250a86=await _0x4b7f2d['json']()['catch'](()=>({'error':_0x4b7f2d['statusText']})),_0x403467=new Error(_0x250a86['error']||_0x250a86['message']||_0x4b7f2d['statusText']);if(_0x250a86['detail']!==undefined)_0x403467['detail']=_0x250a86['detail'];throw _0x403467;}return await _0x4b7f2d['json']();},async 'deleteSkillFile'(_0x4b59a6,_0x22c58e){const _0x2bd757=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b59a6)+'/files/'+_0x22c58e,{'method':'DELETE'});if(!_0x2bd757['ok']){const _0x294da7=await _0x2bd757['json']()['catch'](()=>({'error':_0x2bd757['statusText']})),_0x1d5870=new Error(_0x294da7['error']||_0x294da7['message']||_0x2bd757['statusText']);if(_0x294da7['detail']!==undefined)_0x1d5870['detail']=_0x294da7['detail'];throw _0x1d5870;}return await _0x2bd757['json']();},async 'pullSkills'(){const _0x18faf9=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x18faf9['ok']){const _0x199c18=await _0x18faf9['json']()['catch'](()=>({'error':_0x18faf9['statusText']})),_0x26d988=new Error(_0x199c18['error']||_0x199c18['message']||_0x18faf9['statusText']);if(_0x199c18['detail']!==undefined)_0x26d988['detail']=_0x199c18['detail'];throw _0x26d988;}return await _0x18faf9['json']();},async 'commitSkills'(_0x3d16b5,_0x311f12={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x311f12,_0x453a5d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x3d16b5,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x453a5d['ok']){const _0x162e70=await _0x453a5d['json']()['catch'](()=>({'error':_0x453a5d['statusText']})),_0x54c71e=new Error(_0x162e70['error']||_0x162e70['message']||_0x453a5d['statusText']);if(_0x162e70['detail']!==undefined)_0x54c71e['detail']=_0x162e70['detail'];throw _0x54c71e;}return await _0x453a5d['json']();},async 'discardSkillsChanges'(){const _0x516f05=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x516f05['ok']){const _0xfefe58=await _0x516f05['json']()['catch'](()=>({'error':_0x516f05['statusText']})),_0x52c9e4=new Error(_0xfefe58['error']||_0xfefe58['message']||_0x516f05['statusText']);if(_0xfefe58['detail']!==undefined)_0x52c9e4['detail']=_0xfefe58['detail'];throw _0x52c9e4;}return await _0x516f05['json']();},async 'getSkillCatalog'(){const _0x8bf773=await fetch(API_BASE+'/external-skills/catalog');if(!_0x8bf773['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x8bf773['statusText']);return await _0x8bf773['json']();},async 'getImportedSkillsRegistry'(){const _0x471dc6=await fetch(API_BASE+'/external-skills/registry');if(!_0x471dc6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x471dc6['statusText']);return await _0x471dc6['json']();},async 'importCatalogSkill'(_0x2787c3){const _0x507dcc=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2787c3})});if(!_0x507dcc['ok']){const _0x26227b=await _0x507dcc['json']()['catch'](()=>({'error':_0x507dcc['statusText']})),_0x3be82e=new Error(_0x26227b['error']||_0x26227b['message']||_0x507dcc['statusText']);if(_0x26227b['detail']!==undefined)_0x3be82e['detail']=_0x26227b['detail'];throw _0x3be82e;}return await _0x507dcc['json']();},async 'importSkillFromGit'(_0x338ace,_0x53a3cb,_0x2830bd='main',_0x1d9443=null){const _0x23bf66=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x338ace,'skillPath':_0x53a3cb,'branch':_0x2830bd,'skillId':_0x1d9443})});if(!_0x23bf66['ok']){const _0x433c75=await _0x23bf66['json']()['catch'](()=>({'error':_0x23bf66['statusText']})),_0x531fd5=new Error(_0x433c75['error']||_0x433c75['message']||_0x23bf66['statusText']);if(_0x433c75['detail']!==undefined)_0x531fd5['detail']=_0x433c75['detail'];throw _0x531fd5;}return await _0x23bf66['json']();},async 'probeMarketplace'(_0x111359,_0x40e3e9='main'){const _0x44004c=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x111359,'branch':_0x40e3e9})});if(!_0x44004c['ok']){const _0x471a7f=await _0x44004c['json']()['catch'](()=>({'error':_0x44004c['statusText']})),_0x372b91=new Error(_0x471a7f['error']||_0x471a7f['message']||_0x44004c['statusText']);if(_0x471a7f['detail']!==undefined)_0x372b91['detail']=_0x471a7f['detail'];throw _0x372b91;}return await _0x44004c['json']();},async 'importMarketplaceBundle'(_0x41a8da,_0x5bb546,_0xac229c,_0x5c6f36=null){const _0x7773fe=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x41a8da,'branch':_0x5bb546,'bundleId':_0xac229c,'selectedSkills':_0x5c6f36})});if(!_0x7773fe['ok']){const _0x48808d=await _0x7773fe['json']()['catch'](()=>({'error':_0x7773fe['statusText']})),_0x18eb33=new Error(_0x48808d['error']||_0x48808d['message']||_0x7773fe['statusText']);if(_0x48808d['detail']!==undefined)_0x18eb33['detail']=_0x48808d['detail'];throw _0x18eb33;}return await _0x7773fe['json']();},async 'importSkillFromFolder'(_0x3d375a,_0x3e0ce4=null){const _0x3c7086=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3d375a,'skillId':_0x3e0ce4})});if(!_0x3c7086['ok']){const _0x1d87a5=await _0x3c7086['json']()['catch'](()=>({'error':_0x3c7086['statusText']})),_0x1df48b=new Error(_0x1d87a5['error']||_0x1d87a5['message']||_0x3c7086['statusText']);if(_0x1d87a5['detail']!==undefined)_0x1df48b['detail']=_0x1d87a5['detail'];throw _0x1df48b;}return await _0x3c7086['json']();},async 'importSkillFromNpm'(_0x5d4456,_0x41557f='latest',_0x55d058=null,_0x183466=null){const _0x3b7c8a=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x5d4456,'version':_0x41557f,'skillId':_0x55d058,'registry':_0x183466})});if(!_0x3b7c8a['ok']){const _0x402d29=await _0x3b7c8a['json']()['catch'](()=>({'error':_0x3b7c8a['statusText']})),_0x2fa036=new Error(_0x402d29['error']||_0x402d29['message']||_0x3b7c8a['statusText']);if(_0x402d29['detail']!==undefined)_0x2fa036['detail']=_0x402d29['detail'];throw _0x2fa036;}return await _0x3b7c8a['json']();},async 'checkSkillUpdates'(_0x3cb062){const _0x3be8ed=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cb062)+'/check-updates',{'method':'POST'});if(!_0x3be8ed['ok']){const _0x59f09a=await _0x3be8ed['json']()['catch'](()=>({'error':_0x3be8ed['statusText']})),_0x215d7d=new Error(_0x59f09a['error']||_0x59f09a['message']||_0x3be8ed['statusText']);if(_0x59f09a['detail']!==undefined)_0x215d7d['detail']=_0x59f09a['detail'];throw _0x215d7d;}return await _0x3be8ed['json']();},async 'updateExternalSkill'(_0x352d0a){const _0x2deefc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x352d0a)+'/update',{'method':'POST'});if(!_0x2deefc['ok']){const _0x3956cf=await _0x2deefc['json']()['catch'](()=>({'error':_0x2deefc['statusText']})),_0x42fd54=new Error(_0x3956cf['error']||_0x3956cf['message']||_0x2deefc['statusText']);if(_0x3956cf['detail']!==undefined)_0x42fd54['detail']=_0x3956cf['detail'];throw _0x42fd54;}return await _0x2deefc['json']();},async 'updateSkillFlags'(_0x58a7ca,_0xdd6969){const _0x2a87a6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x58a7ca)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0xdd6969})});if(!_0x2a87a6['ok']){const _0x544d9a=await _0x2a87a6['json']()['catch'](()=>({'error':_0x2a87a6['statusText']})),_0xec24a2=new Error(_0x544d9a['error']||_0x544d9a['message']||_0x2a87a6['statusText']);if(_0x544d9a['detail']!==undefined)_0xec24a2['detail']=_0x544d9a['detail'];throw _0xec24a2;}return await _0x2a87a6['json']();},async 'removeFromImportedRegistry'(_0x4a346a){const _0x325440=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a346a)+'/registry',{'method':'DELETE'});if(!_0x325440['ok']){const _0xf91bef=await _0x325440['json']()['catch'](()=>({'error':_0x325440['statusText']})),_0x248ead=new Error(_0xf91bef['error']||_0xf91bef['message']||_0x325440['statusText']);if(_0xf91bef['detail']!==undefined)_0x248ead['detail']=_0xf91bef['detail'];throw _0x248ead;}return await _0x325440['json']();},async 'getTeams'(){const _0x4e4d49=await fetch(API_BASE+'/teams');if(!_0x4e4d49['ok']){const _0x20e1c9=await _0x4e4d49['json']()['catch'](()=>({'message':_0x4e4d49['statusText']}));throw new Error(_0x20e1c9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4e4d49['json']();},async 'getTeam'(_0x4352f6){const _0x1d70f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4352f6));if(!_0x1d70f1['ok']){const _0x4ba0ff=await _0x1d70f1['json']()['catch'](()=>({'message':_0x1d70f1['statusText']}));throw new Error(_0x4ba0ff['message']||'Failed\x20to\x20get\x20team');}return await _0x1d70f1['json']();},async 'createTeam'(_0x521490){const _0x4b30d9=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x521490)});if(!_0x4b30d9['ok']){const _0x571d87=await _0x4b30d9['json']()['catch'](()=>({'message':_0x4b30d9['statusText']}));throw new Error(_0x571d87['message']||'Failed\x20to\x20create\x20team');}return await _0x4b30d9['json']();},async 'updateTeam'(_0x45a2e6,_0x3a8628){const _0x309cf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x45a2e6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a8628)});if(!_0x309cf7['ok']){const _0x4674f9=await _0x309cf7['json']()['catch'](()=>({'message':_0x309cf7['statusText']}));throw new Error(_0x4674f9['message']||'Failed\x20to\x20update\x20team');}return await _0x309cf7['json']();},async 'deleteTeam'(_0x399512){const _0x3657bf=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x399512),{'method':'DELETE'});if(!_0x3657bf['ok']){const _0x54625a=await _0x3657bf['json']()['catch'](()=>({'message':_0x3657bf['statusText']}));throw new Error(_0x54625a['message']||'Failed\x20to\x20delete\x20team');}return await _0x3657bf['json']();},async 'addTeamMember'(_0x2d8f14,_0x2837f6){const _0x58b283=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d8f14)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2837f6})});if(!_0x58b283['ok']){const _0xee9220=await _0x58b283['json']()['catch'](()=>({'message':_0x58b283['statusText']}));throw new Error(_0xee9220['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x58b283['json']();},async 'removeTeamMember'(_0x4c298b,_0x3342fc){const _0x34b154=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4c298b)+'/members/'+encodeURIComponent(_0x3342fc),{'method':'DELETE'});if(!_0x34b154['ok']){const _0x34505e=await _0x34b154['json']()['catch'](()=>({'message':_0x34b154['statusText']}));throw new Error(_0x34505e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x34b154['json']();},async 'getBindings'(_0x4c81da={}){const _0x3a4c83=new URLSearchParams();if(_0x4c81da['resource_type'])_0x3a4c83['set']('resource_type',_0x4c81da['resource_type']);if(_0x4c81da['resource_id'])_0x3a4c83['set']('resource_id',_0x4c81da['resource_id']);if(_0x4c81da['subject_type'])_0x3a4c83['set']('subject_type',_0x4c81da['subject_type']);if(_0x4c81da['subject_id'])_0x3a4c83['set']('subject_id',_0x4c81da['subject_id']);const _0x27a2d0=_0x3a4c83['toString'](),_0x25fe49=await fetch(API_BASE+'/bindings'+(_0x27a2d0?'?'+_0x27a2d0:''));if(!_0x25fe49['ok']){const _0x197bc6=await _0x25fe49['json']()['catch'](()=>({'message':_0x25fe49['statusText']}));throw new Error(_0x197bc6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x25fe49['json']();},async 'createBinding'(_0x2d5a48){const _0x5ad55b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d5a48)});if(!_0x5ad55b['ok']){const _0x393ecc=await _0x5ad55b['json']()['catch'](()=>({'message':_0x5ad55b['statusText']}));throw new Error(_0x393ecc['message']||'Failed\x20to\x20create\x20binding');}return await _0x5ad55b['json']();},async 'updateBinding'(_0xf3dfc0,_0x162521){const _0x1d405f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xf3dfc0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162521)});if(!_0x1d405f['ok']){const _0x56db67=await _0x1d405f['json']()['catch'](()=>({'message':_0x1d405f['statusText']}));throw new Error(_0x56db67['message']||'Failed\x20to\x20update\x20binding');}return await _0x1d405f['json']();},async 'deleteBinding'(_0xb25b6d){const _0x188d57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xb25b6d),{'method':'DELETE'});if(!_0x188d57['ok']){const _0x472e1c=await _0x188d57['json']()['catch'](()=>({'message':_0x188d57['statusText']}));throw new Error(_0x472e1c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x188d57['json']();},async 'getRoleDefinitions'(){const _0x54f551=await fetch(API_BASE+'/roles');if(!_0x54f551['ok']){const _0x403822=await _0x54f551['json']()['catch'](()=>({'message':_0x54f551['statusText']}));throw new Error(_0x403822['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x54f551['json']();},async 'getRoleDefinition'(_0x2e5f90){const _0x4ab75e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e5f90));if(!_0x4ab75e['ok']){const _0x58cadc=await _0x4ab75e['json']()['catch'](()=>({'message':_0x4ab75e['statusText']}));throw new Error(_0x58cadc['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4ab75e['json']();},async 'createRoleDefinition'(_0x3a677a){const _0x33641d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a677a)});if(!_0x33641d['ok']){const _0x5b8c98=await _0x33641d['json']()['catch'](()=>({'message':_0x33641d['statusText']}));throw new Error(_0x5b8c98['message']||_0x5b8c98['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x33641d['json']();},async 'updateRoleDefinition'(_0x4fcce2,_0x1f71f1){const _0x49e968=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4fcce2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f71f1)});if(!_0x49e968['ok']){const _0x5ee456=await _0x49e968['json']()['catch'](()=>({'message':_0x49e968['statusText']}));throw new Error(_0x5ee456['message']||_0x5ee456['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x49e968['json']();},async 'deleteRoleDefinition'(_0x20afee){const _0x2ab735=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x20afee),{'method':'DELETE'});if(!_0x2ab735['ok']){const _0x444e15=await _0x2ab735['json']()['catch'](()=>({'message':_0x2ab735['statusText']}));throw new Error(_0x444e15['message']||_0x444e15['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2ab735['json']();},async 'getAvailablePermissions'(){const _0x575d12=await fetch(API_BASE+'/roles/available-permissions');if(!_0x575d12['ok']){const _0x52f3d2=await _0x575d12['json']()['catch'](()=>({'message':_0x575d12['statusText']}));throw new Error(_0x52f3d2['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x575d12['json']();},async 'getGitProviderAllowedTeams'(_0xae52fe){const _0x5072a6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xae52fe)+'/allowed-teams');if(!_0x5072a6['ok']){const _0x52711a=await _0x5072a6['json']()['catch'](()=>({'message':_0x5072a6['statusText']}));throw new Error(_0x52711a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5072a6['json']();},async 'setGitProviderAllowedTeams'(_0xf37664,_0x7e8b8f){const _0x3b5171=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xf37664)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x7e8b8f})});if(!_0x3b5171['ok']){const _0x35d2ae=await _0x3b5171['json']()['catch'](()=>({'message':_0x3b5171['statusText']}));throw new Error(_0x35d2ae['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3b5171['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 _0x3db679=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2c4985=>{_0x2c4985['el']['style']['bottom']=_0x3db679+'px';const _0x4b0b20=_0x2c4985['el']['offsetHeight']||toastState['defaultHeight'];_0x3db679+=_0x4b0b20+toastState['gap'];});});}function removeToastById(_0x2a1b4f){const _0x2d8d3b=toastState['toasts']['findIndex'](_0x4b634d=>_0x4b634d['id']===_0x2a1b4f);if(_0x2d8d3b===-0x1)return;const _0xcde4b7=toastState['toasts'][_0x2d8d3b];if(_0xcde4b7['timeoutId'])clearTimeout(_0xcde4b7['timeoutId']);_0xcde4b7['el']['classList']['remove']('show'),setTimeout(()=>_0xcde4b7['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2d8d3b,0x1),repositionAllToasts();}function registerToast(_0xaf70c0){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0xaf70c0),repositionAllToasts(),_0xaf70c0['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(_0x1bc448){if(_0x1bc448===null||_0x1bc448===undefined)return'';return String(_0x1bc448)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xc74e2e,_0x49bb76){if(_0xc74e2e&&typeof _0xc74e2e==='object'&&!Array['isArray'](_0xc74e2e))return{'code':typeof _0xc74e2e['text']==='string'?_0xc74e2e['text']:'','language':typeof _0xc74e2e['lang']==='string'?_0xc74e2e['lang']:''};return{'code':typeof _0xc74e2e==='string'?_0xc74e2e:'','language':typeof _0x49bb76==='string'?_0x49bb76:''};}function buildMermaidBlock(_0x1fb626){const _0x1ee222=String(_0x1fb626||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1ee222))+'\x22>'+escapeHtmlValue(_0x1ee222)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x4721b5=new marked['Renderer'](),_0x3f4631=_0x4721b5['code']['bind'](_0x4721b5);return _0x4721b5['code']=function(_0x1ef890,_0x27306e,..._0x1d8813){const {code:_0x130f1a,language:_0x401682}=getMarkdownCodeBlockPayload(_0x1ef890,_0x27306e),_0x2fda44=String(_0x401682||'')['trim']()['toLowerCase']();if(_0x2fda44==='mermaid')return buildMermaidBlock(_0x130f1a);const _0x52bf76=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x52bf76&&_0x2fda44)try{const _0x2a7846=_0x52bf76['getLanguage'](_0x2fda44)?_0x2fda44:'plaintext',_0x4331a6=_0x52bf76['highlight'](_0x130f1a,{'language':_0x2a7846})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2fda44)+'\x22>'+_0x4331a6+'</code></pre>';}catch(_0x1b403a){console['error']('Syntax\x20highlighting\x20error:',_0x1b403a);}return _0x3f4631(_0x1ef890,_0x27306e,..._0x1d8813);},sharedMarkedRenderer=_0x4721b5,_0x4721b5;}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 _0x4ea727=window['mermaid'];if(!_0x4ea727||typeof _0x4ea727['initialize']!=='function')return _0x4ea727||null;return _0x4ea727['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4ea727;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x53627b,_0x28f2c1)=>{const _0x16109c=()=>_0x53627b(configureMermaidInstance()),_0x437fec=()=>{mermaidLoadPromise=null,_0x28f2c1(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7f945b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7f945b&&(_0x7f945b=document['createElement']('script'),_0x7f945b['id']=MERMAID_SCRIPT_ID,_0x7f945b['src']=MERMAID_SCRIPT_SRC,_0x7f945b['async']=!![],document['head']['appendChild'](_0x7f945b));if(window['mermaid']){_0x16109c();return;}_0x7f945b['addEventListener']('load',_0x16109c,{'once':!![]}),_0x7f945b['addEventListener']('error',_0x437fec,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x58e966){const _0x3fb82c=_0x58e966['getAttribute']('data-mermaid-source');if(!_0x3fb82c)return null;let _0x109df2=_0x3fb82c;try{_0x109df2=decodeURIComponent(_0x3fb82c);}catch{}return _0x58e966['textContent']=_0x109df2,_0x58e966['removeAttribute']('data-processed'),_0x58e966['removeAttribute']('aria-roledescription'),_0x58e966['removeAttribute']('role'),_0x58e966['removeAttribute']('aria-label'),_0x109df2;}function collectMermaidNodes(_0x2ae4e9,_0xa864d6){if(!(_0x2ae4e9 instanceof Element))return;_0x2ae4e9['matches']('.mermaid[data-mermaid-source]')&&_0xa864d6['add'](_0x2ae4e9),_0x2ae4e9['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27560f=>{_0xa864d6['add'](_0x27560f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x501b97=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x27972a=>setTimeout(_0x27972a,0x0);_0x501b97(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xb26c66=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xb26c66);});});}function queueMermaidRender(_0x29ccb8){const _0x17762b=new Set();_0x29ccb8 instanceof Document||_0x29ccb8 instanceof DocumentFragment?_0x29ccb8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1cd59f=>_0x17762b['add'](_0x1cd59f)):collectMermaidNodes(_0x29ccb8,_0x17762b);if(_0x17762b['size']===0x0)return;_0x17762b['forEach'](_0x48aa55=>pendingMermaidNodes['add'](_0x48aa55)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4c5ae5=Array['from'](pendingMermaidNodes)['filter'](_0xcdbd2=>_0xcdbd2['isConnected']);pendingMermaidNodes['clear']();if(_0x4c5ae5['length']===0x0)return;const _0x1943a4=await loadMermaid();if(!_0x1943a4)return;configureMermaidInstance();const _0x6a38a6=getMermaidTheme();for(const _0x59d61d of _0x4c5ae5){const _0xcbef0a=_0x59d61d['getAttribute']('data-mermaid-source');if(!_0xcbef0a)continue;const _0x113c14=_0x59d61d['getAttribute']('data-processed')==='true';if(_0x113c14&&_0x59d61d['dataset']['mermaidTheme']===_0x6a38a6)continue;restoreMermaidSource(_0x59d61d);try{if(typeof _0x1943a4['run']==='function')await _0x1943a4['run']({'nodes':[_0x59d61d]});else typeof _0x1943a4['init']==='function'&&_0x1943a4['init'](undefined,[_0x59d61d]);_0x59d61d['dataset']['mermaidTheme']=_0x6a38a6,delete _0x59d61d['dataset']['mermaidError'];}catch(_0x51ff2c){console['error']('Mermaid\x20render\x20failed:',_0x51ff2c),restoreMermaidSource(_0x59d61d),_0x59d61d['dataset']['mermaidError']='true',delete _0x59d61d['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x584bff=>{_0x584bff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x584bff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1fea35=>{_0x1fea35['forEach'](_0x5e8fc2=>{_0x5e8fc2['addedNodes']['forEach'](_0x422c9d=>{_0x422c9d['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x422c9d);});});}),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'(_0x486ae7){const _0x2587c9=new Date(_0x486ae7),_0x22807e=new Date(),_0x434560=_0x22807e-_0x2587c9,_0x1ca9e8=Math['floor'](_0x434560/0x3e8),_0x49a100=Math['floor'](_0x1ca9e8/0x3c),_0x1ca177=Math['floor'](_0x49a100/0x3c),_0x431b3c=Math['floor'](_0x1ca177/0x18);if(_0x1ca9e8<0x3c)return'now';if(_0x49a100<0x3c)return _0x49a100+'m\x20ago';if(_0x1ca177<0x18)return _0x1ca177+'h\x20ago';return _0x431b3c+'d\x20ago';},'getStatusIcon'(_0x56ad3d){switch(_0x56ad3d){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3bde86){switch(_0x3bde86){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'(_0x1c5cd5,_0x2b8202=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3b83c2={};_0x3b83c2['text/plain']=new Blob([_0x1c5cd5],{'type':'text/plain'});_0x2b8202&&(_0x3b83c2['text/html']=new Blob([_0x2b8202],{'type':'text/html'}));const _0x49a108=new ClipboardItem(_0x3b83c2);return await navigator['clipboard']['write']([_0x49a108]),!![];}catch(_0x6b4518){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x6b4518);}try{const _0x25ad0f=_0x5066bc=>{_0x5066bc['preventDefault'](),_0x5066bc['clipboardData']['setData']('text/plain',_0x1c5cd5),_0x2b8202&&_0x5066bc['clipboardData']['setData']('text/html',_0x2b8202);};document['addEventListener']('copy',_0x25ad0f);const _0xdddb85=document['execCommand']('copy');document['removeEventListener']('copy',_0x25ad0f);if(_0xdddb85)return!![];}catch(_0x1a7150){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1a7150);}try{const _0x2e0ded=document['createElement']('textarea');_0x2e0ded['value']=_0x1c5cd5,_0x2e0ded['style']['position']='fixed',_0x2e0ded['style']['opacity']='0',_0x2e0ded['style']['pointerEvents']='none',document['body']['appendChild'](_0x2e0ded),_0x2e0ded['select']();const _0x154107=document['execCommand']('copy');return document['body']['removeChild'](_0x2e0ded),_0x154107;}catch(_0x4590de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4590de),![];}},'showToast'(_0x1f8876,_0x476083='info'){const _0x5fcd66=getNextToastId(),_0x59f400=document['createElement']('div');_0x59f400['className']='toast\x20toast-'+_0x476083,_0x59f400['textContent']=_0x1f8876,_0x59f400['dataset']['toastId']=_0x5fcd66,document['body']['appendChild'](_0x59f400);const _0x2d7e90=_0x476083==='error'?0x2710:0xbb8,_0x1ede5=setTimeout(()=>{removeToastById(_0x5fcd66);},_0x2d7e90),_0x10ac3b={'id':_0x5fcd66,'el':_0x59f400,'timeoutId':_0x1ede5};return registerToast(_0x10ac3b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x59f400['classList']['add']('show');});}),_0x5fcd66;},'showError'(_0x27318b){console['error'](_0x27318b);const _0x597b81=typeof _0x27318b==='string'?_0x27318b:_0x27318b['message']||'An\x20error\x20occurred';this['showToast'](_0x597b81,'error');},'showSuccess'(_0x453dcc){this['showToast'](_0x453dcc,'success');},'capitalize'(_0x17dac1){if(!_0x17dac1)return'';return _0x17dac1['charAt'](0x0)['toUpperCase']()+_0x17dac1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0xfa8745){return escapeHtmlValue(_0xfa8745);},'ansiToHtml'(_0x30823d){if(_0x30823d===null||_0x30823d===undefined)return'';let _0x48bd65=this['escapeHtml'](_0x30823d);const _0x11d979={'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'},_0xbb5144={'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 _0x6e6c07=0x0;return _0x48bd65=_0x48bd65['replace'](/\x1b\[([0-9;]*)m/g,(_0x77ac3,_0x5dc68f)=>{if(!_0x5dc68f||_0x5dc68f==='0'){const _0xa61cd7='</span>'['repeat'](_0x6e6c07);return _0x6e6c07=0x0,_0xa61cd7;}const _0x507852=_0x5dc68f['split'](';'),_0x28b068=[];for(const _0x4d7274 of _0x507852){if(_0x4d7274==='1')_0x28b068['push']('font-weight:bold');else{if(_0x4d7274==='2')_0x28b068['push']('opacity:0.7');else{if(_0x4d7274==='3')_0x28b068['push']('font-style:italic');else{if(_0x4d7274==='4')_0x28b068['push']('text-decoration:underline');else{if(_0x4d7274==='9')_0x28b068['push']('text-decoration:line-through');else{if(_0x11d979[_0x4d7274])_0x28b068['push']('color:'+_0x11d979[_0x4d7274]);else{if(_0xbb5144[_0x4d7274])_0x28b068['push']('background-color:'+_0xbb5144[_0x4d7274]);}}}}}}}if(_0x28b068['length']>0x0)return _0x6e6c07++,'<span\x20style=\x22'+_0x28b068['join'](';')+'\x22>';return'';}),_0x48bd65+='</span>'['repeat'](_0x6e6c07),_0x48bd65=_0x48bd65['replace'](/\\u001b\[([0-9;]*)m/g,(_0x359644,_0x5ca348)=>{if(!_0x5ca348||_0x5ca348==='0')return'';const _0x446e7a=_0x5ca348['split'](';'),_0x5b9176=[];for(const _0x1dc714 of _0x446e7a){if(_0x1dc714==='1')_0x5b9176['push']('font-weight:bold');else{if(_0x11d979[_0x1dc714])_0x5b9176['push']('color:'+_0x11d979[_0x1dc714]);else{if(_0xbb5144[_0x1dc714])_0x5b9176['push']('background-color:'+_0xbb5144[_0x1dc714]);}}}if(_0x5b9176['length']>0x0)return'<span\x20style=\x22'+_0x5b9176['join'](';')+'\x22>';return'';}),_0x48bd65;},'showModal'({title:_0x4a1531,content:_0x1adcdd,buttons:buttons=[]}){const _0x40c953='\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'](_0x4a1531)+'</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'+_0x1adcdd+'\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']((_0x4a5d35,_0x5a55c9)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4a5d35['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5a55c9+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4a5d35['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',_0x19cb72=document['createElement']('div');_0x19cb72['id']='utils-modal',_0x19cb72['className']='modal',_0x19cb72['innerHTML']=_0x40c953,document['body']['appendChild'](_0x19cb72);const _0x406cb3=document['getElementById']('utils-modal-close');_0x406cb3&&_0x406cb3['addEventListener']('click',()=>this['hideModal']());const _0xfeb2=_0x19cb72['querySelectorAll']('[data-btn-index]');_0xfeb2['forEach'](_0x142380=>{const _0x309b02=parseInt(_0x142380['dataset']['btnIndex']);buttons[_0x309b02]?.['onClick']&&_0x142380['addEventListener']('click',buttons[_0x309b02]['onClick']);});const _0x33450a=document['getElementById']('utils-modal-overlay');_0x33450a&&_0x33450a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4d67da=document['getElementById']('utils-modal');_0x4d67da&&_0x4d67da['remove']();},'parseKeyValuePairs'(_0x3734e4){const _0x80f27f={};if(!_0x3734e4)return _0x80f27f;return _0x3734e4['split'](/\r?\n/)['map'](_0x131541=>_0x131541['trim']())['filter'](Boolean)['forEach'](_0x2d118e=>{const _0x481f17=_0x2d118e['indexOf']('=');if(_0x481f17>0x0){const _0x2a11e1=_0x2d118e['slice'](0x0,_0x481f17)['trim'](),_0x2a68ae=_0x2d118e['slice'](_0x481f17+0x1)['trim']();if(_0x2a11e1)_0x80f27f[_0x2a11e1]=_0x2a68ae;}}),_0x80f27f;},'debounce'(_0x44041d,_0x700f0b=0xfa){let _0x194cdb=null;return(..._0x15afa7)=>{clearTimeout(_0x194cdb),_0x194cdb=setTimeout(()=>_0x44041d['apply'](this,_0x15afa7),_0x700f0b);};},'formatTimestamp'(_0x475a77){if(!_0x475a77)return'N/A';const _0x137872=new Date(_0x475a77);return _0x137872['toLocaleDateString']()+'\x20'+_0x137872['toLocaleTimeString']();},'getQueryParams'(){const _0x127ac4=new URLSearchParams(window['location']['search']),_0x11f484={};for(const [_0xbfc225,_0x2ba587]of _0x127ac4){_0x11f484[_0xbfc225]=_0x2ba587;}return _0x11f484;},'formatDuration'(_0xc9cd2d,_0x1cc6eb){if(!_0xc9cd2d)return'N/A';const _0x4b7248=new Date(_0xc9cd2d),_0x2ecbbd=_0x1cc6eb?new Date(_0x1cc6eb):new Date(),_0x452147=_0x2ecbbd-_0x4b7248;if(_0x452147<0x0)return'0s';const _0x11a9a9=Math['floor'](_0x452147/0x3e8),_0x2acb28=Math['floor'](_0x11a9a9/0x3c),_0x529846=Math['floor'](_0x2acb28/0x3c),_0x422d0a=Math['floor'](_0x529846/0x18);if(_0x11a9a9<0x3c)return _0x11a9a9+'s';if(_0x2acb28<0x3c)return _0x2acb28+'m\x20'+_0x11a9a9%0x3c+'s';if(_0x529846<0x18)return _0x529846+'h\x20'+_0x2acb28%0x3c+'m\x20'+_0x11a9a9%0x3c+'s';return _0x422d0a+'d\x20'+_0x529846%0x18+'h\x20'+_0x2acb28%0x3c+'m';},'renderMarkdown'(_0x137374,_0x849220={}){if(!_0x137374)return'';_0x137374=this['rewriteAttachmentLinks'](_0x137374,_0x849220),_0x137374=this['rewriteColorSyntax'](_0x137374);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x137374,_0x849220);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x137374);}catch(_0x3e8108){return console['error']('Markdown\x20parsing\x20error:',_0x3e8108),this['renderMarkdownFallback'](_0x137374,_0x849220);}},'rewriteAttachmentLinks'(_0x328576,_0x541ebd={}){const _0x56b8f6=typeof _0x541ebd['resolveAttachmentUrl']==='function'?_0x541ebd['resolveAttachmentUrl']:_0x541ebd['taskId']?_0x312106=>API_BASE+'/tasks/'+_0x541ebd['taskId']+'/attachments/'+encodeURIComponent(_0x312106):null;if(!_0x56b8f6)return _0x328576;return String(_0x328576)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x2eccd9,_0x1f6630)=>{const _0x24550b=String(_0x1f6630||'')['trim']();if(!_0x24550b)return _0x2eccd9;let _0x38ceee=_0x24550b;try{_0x38ceee=decodeURIComponent(_0x24550b);}catch{}const _0x1addb0=_0x56b8f6(_0x38ceee);if(!_0x1addb0)return _0x2eccd9;return']('+_0x1addb0+')';});},'rewriteColorSyntax'(_0x1dbcfa){if(!_0x1dbcfa)return _0x1dbcfa;return String(_0x1dbcfa)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x2d81ca,_0x5aea43,_0x8c245e)=>{const _0x58d586=this['rewriteColorSyntax'](_0x8c245e);return'<span\x20style=\x22color:\x20'+_0x5aea43+'\x22>'+_0x58d586+'</span>';});},'renderMarkdownFallback'(_0x313fe1,_0x47b43a={}){if(!_0x313fe1)return'';_0x313fe1=_0x313fe1['replace'](/\r\n/g,'\x0a'),_0x313fe1=_0x313fe1['replace'](/\r/g,'\x0a'),_0x313fe1=this['rewriteAttachmentLinks'](_0x313fe1,_0x47b43a);let _0x1004c2=this['escapeHtml'](_0x313fe1);return _0x1004c2=_0x1004c2['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x1004c2=_0x1004c2['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x1004c2=_0x1004c2['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x1004c2=_0x1004c2['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x1004c2=_0x1004c2['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x1004c2=_0x1004c2['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x1004c2=_0x1004c2['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x1004c2=_0x1004c2['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x1004c2=_0x1004c2['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x1004c2=_0x1004c2['replace'](/\n\n/g,'</p><p>'),_0x1004c2=_0x1004c2['replace'](/\n/g,'<br>'),'<p>'+_0x1004c2+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1e401b=new Uint8Array(0x10);crypto['getRandomValues'](_0x1e401b),_0x1e401b[0x6]=_0x1e401b[0x6]&0xf|0x40,_0x1e401b[0x8]=_0x1e401b[0x8]&0x3f|0x80;const _0x261ccf=Array['from'](_0x1e401b,_0x4bd3b1=>_0x4bd3b1['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x261ccf['slice'](0x0,0x8)+'-'+_0x261ccf['slice'](0x8,0xc)+'-'+_0x261ccf['slice'](0xc,0x10)+'-'+_0x261ccf['slice'](0x10,0x14)+'-'+_0x261ccf['slice'](0x14);}};export class CustomSelect{constructor(_0x24a97e,_0x33ca37={}){this['nativeSelect']=_0x24a97e,this['options']=_0x33ca37,this['isOpen']=![],this['selectedValue']=_0x24a97e['value']||'',this['searchable']=_0x33ca37['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2ba448=document['createElement']('div');_0x2ba448['className']='custom-select';const _0x5120a2=document['createElement']('div');_0x5120a2['className']='custom-select-trigger',_0x5120a2['setAttribute']('tabindex','0'),_0x5120a2['setAttribute']('role','button'),_0x5120a2['setAttribute']('aria-haspopup','listbox');const _0x5bf7c0=document['createElement']('span');_0x5bf7c0['className']='custom-select-trigger-text';const _0x29c4f8=document['createElement']('span');_0x29c4f8['className']='custom-select-arrow',_0x29c4f8['textContent']='▼',_0x5120a2['appendChild'](_0x5bf7c0),_0x5120a2['appendChild'](_0x29c4f8);const _0x12a1ef=document['createElement']('div');_0x12a1ef['className']='custom-select-dropdown',_0x12a1ef['setAttribute']('role','listbox');if(this['searchable']){const _0x4c12b7=document['createElement']('div');_0x4c12b7['className']='custom-select-search';const _0x8a0b9f=document['createElement']('input');_0x8a0b9f['type']='text',_0x8a0b9f['className']='custom-select-search-input',_0x8a0b9f['placeholder']='Type\x20to\x20search...',_0x8a0b9f['setAttribute']('aria-label','Search\x20options'),_0x8a0b9f['addEventListener']('input',_0x234812=>{this['searchQuery']=_0x234812['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x8a0b9f['addEventListener']('keydown',_0x245d30=>{if(_0x245d30['key']==='Escape')_0x245d30['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x245d30['key']==='Enter'){_0x245d30['preventDefault'](),_0x245d30['stopPropagation']();const _0x2650e9=_0x12a1ef['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2650e9){const _0x98d189=_0x2650e9['getAttribute']('data-value');this['select'](_0x98d189);}}}}),_0x4c12b7['appendChild'](_0x8a0b9f),_0x12a1ef['appendChild'](_0x4c12b7),this['searchInput']=_0x8a0b9f;}const _0x2eae8b=document['createElement']('div');_0x2eae8b['className']='custom-select-options',_0x12a1ef['appendChild'](_0x2eae8b),_0x2ba448['appendChild'](_0x5120a2),_0x2ba448['appendChild'](_0x12a1ef),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2ba448,this['nativeSelect']),this['wrapper']=_0x2ba448,this['trigger']=_0x5120a2,this['triggerText']=_0x5bf7c0,this['dropdown']=_0x12a1ef,this['optionsContainer']=_0x2eae8b,_0x5120a2['addEventListener']('click',()=>this['toggle']()),_0x5120a2['addEventListener']('keydown',_0x31f325=>this['handleKeydown'](_0x31f325)),document['addEventListener']('click',_0x20ef1f=>{!_0x2ba448['contains'](_0x20ef1f['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x460b5e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x460b5e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x133b6f=new MutationObserver(()=>{this['updateDisabledState']();});_0x133b6f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x586be0=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x586be0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x451913=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x451913),this['trigger']['setAttribute']('aria-disabled',_0x451913?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x451913?'-1':'0'),_0x451913&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4d7959=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x728e7a=_0x4d7959['filter'](_0x4e3cc3=>!_0x4e3cc3['disabled']&&!_0x4e3cc3['hidden']);_0x4d7959['forEach']((_0x136c78,_0x27c843)=>{const _0xe55b9a=document['createElement']('div');_0xe55b9a['className']='custom-select-option',_0xe55b9a['textContent']=_0x136c78['textContent'],_0xe55b9a['setAttribute']('data-value',_0x136c78['value']),_0xe55b9a['setAttribute']('data-index',_0x27c843),_0xe55b9a['setAttribute']('role','option'),_0x136c78['disabled']?_0xe55b9a['classList']['add']('disabled'):_0xe55b9a['addEventListener']('click',()=>this['select'](_0x136c78['value'])),_0x136c78['value']===this['selectedValue']&&_0xe55b9a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0xe55b9a),this['allOptions']['push']({'element':_0xe55b9a,'text':_0x136c78['textContent']['toLowerCase'](),'value':_0x136c78['value'],'disabled':_0x136c78['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4c6f23=this['searchInput']['parentElement'];_0x728e7a['length']>0x3?_0x4c6f23['style']['display']='':_0x4c6f23['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xa033da=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x36c4e7=>{if(!_0xa033da||_0x36c4e7['disabled'])_0x36c4e7['element']['style']['display']='';else{const _0x1ba597=_0x36c4e7['text']['includes'](_0xa033da);_0x36c4e7['element']['style']['display']=_0x1ba597?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3e3c74){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3e3c74,this['nativeSelect']['value']=_0x3e3c74;const _0x1c5fc5=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1c5fc5),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x5b51b2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x5b51b2&&(this['triggerText']['textContent']=_0x5b51b2['textContent'],_0x5b51b2['disabled']||_0x5b51b2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ac149=>{_0x1ac149['getAttribute']('data-value')===this['selectedValue']?_0x1ac149['classList']['add']('selected'):_0x1ac149['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 _0x5330bf=window['getComputedStyle'](this['dropdown']);if(_0x5330bf['position']==='fixed'){const _0x25e049=this['trigger']['getBoundingClientRect'](),_0x56ab9a=parseInt(_0x5330bf['maxHeight'])||0xc8,_0x4c49d0=window['innerHeight'],_0x1d12cd=_0x4c49d0-_0x25e049['bottom'],_0x2619c1=_0x25e049['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x20e596;_0x1d12cd<_0x56ab9a&&_0x2619c1>_0x1d12cd?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4c49d0-_0x25e049['top']+'px',_0x20e596=Math['min'](_0x56ab9a,_0x2619c1-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x25e049['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x20e596=Math['min'](_0x56ab9a,_0x1d12cd-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px');if(this['optionsContainer']){let _0x51eeb8=_0x20e596;if(this['searchInput']){const _0x3bd832=this['searchInput']['parentElement'];_0x3bd832&&(_0x51eeb8-=_0x3bd832['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x51eeb8)+'px';}this['dropdown']['style']['left']=_0x25e049['left']+'px',this['dropdown']['style']['width']=_0x25e049['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xe89ef=this['searchInput']['parentElement'];_0xe89ef&&_0xe89ef['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'](_0x1aac63){if(this['nativeSelect']['disabled'])return;if(_0x1aac63['key']==='Enter'||_0x1aac63['key']==='\x20')_0x1aac63['preventDefault'](),this['toggle']();else _0x1aac63['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5efad7='\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',_0x5efad7),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5def83=document['getElementById']('confirm-dialog-close'),_0x59a542=document['getElementById']('confirm-dialog-cancel'),_0x4a9bb0=document['getElementById']('confirm-dialog-confirm'),_0x11fa52=this['_modal']['querySelector']('.modal-overlay');_0x5def83['addEventListener']('click',()=>this['_resolve'](![])),_0x59a542['addEventListener']('click',()=>this['_resolve'](![])),_0x4a9bb0['addEventListener']('click',()=>this['_resolve'](!![])),_0x11fa52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x36740d=>{if(_0x36740d['key']==='Escape')_0x36740d['preventDefault'](),this['_resolve'](![]);else _0x36740d['key']==='Enter'&&(_0x36740d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x777247,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5a204a=>{this['_resolvePromise']=_0x5a204a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x777247;const _0x26285c=document['getElementById']('confirm-dialog-cancel'),_0x5637cc=document['getElementById']('confirm-dialog-confirm');_0x26285c['textContent']=cancelText,_0x5637cc['textContent']=confirmText,_0x5637cc['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5637cc['focus']();});},'_resolve'(_0x10233a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x10233a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4cc381,_0x5b88e2={}){this['container']=_0x4cc381,this['options']={'placeholder':_0x5b88e2['placeholder']||'Type\x20to\x20search...','maxItems':_0x5b88e2['maxItems']||0x64,'loadItems':_0x5b88e2['loadItems']||(async()=>[]),'renderItem':_0x5b88e2['renderItem']||(_0x470cf3=>({'primary':String(_0x470cf3),'secondary':''})),'onSelect':_0x5b88e2['onSelect']||(()=>{}),'filterItems':_0x5b88e2['filterItems']||null,'getItemValue':_0x5b88e2['getItemValue']||(_0x539acd=>_0x539acd),'sortItems':_0x5b88e2['sortItems']||null,'debounceMs':_0x5b88e2['debounceMs']||0xc8,'minCharsForSearch':_0x5b88e2['minCharsForSearch']||0x0,'emptyMessage':_0x5b88e2['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5b88e2['loadingMessage']||'Loading...','preload':_0x5b88e2['preload']!==![],'searchMode':_0x5b88e2['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',_0x34abfb=>this['onBlur'](_0x34abfb)),this['input']['addEventListener']('input',_0x326b97=>this['onInput'](_0x326b97)),this['input']['addEventListener']('keydown',_0x3ba759=>this['onKeydown'](_0x3ba759)),this['clearBtn']['addEventListener']('mousedown',_0x13724a=>{_0x13724a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x460a2a=>{_0x460a2a['preventDefault']();}),document['addEventListener']('click',_0x1e8c96=>{!this['wrapper']['contains'](_0x1e8c96['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(_0xb1d9ac){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xb1d9ac);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2e370b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x29c295){const _0x3c1cfa=_0x29c295['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c1cfa);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c1cfa):this['loadAndShow'](_0x3c1cfa);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x42b029){switch(_0x42b029['key']){case'ArrowDown':_0x42b029['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x42b029['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x42b029['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x42b029['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2292e4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x12234f=this['selectedIndex']+_0x2292e4;if(_0x12234f>=0x0&&_0x12234f<this['filteredItems']['length']){this['selectedIndex']=_0x12234f,this['updateSelectionHighlight']();const _0x486e44=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x486e44[this['selectedIndex']]&&_0x486e44[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x180ef9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x180ef9['forEach']((_0x1d6ed0,_0x1a9d0c)=>{_0x1d6ed0['classList']['toggle']('keyboard-selected',_0x1a9d0c===this['selectedIndex']);});}async['loadAndShow'](_0x20ae0f){this['showLoading']();try{const _0x403234=await this['options']['loadItems'](_0x20ae0f);if(this['options']['searchMode']==='server'){let _0x37df1e=_0x403234;this['options']['sortItems']&&(_0x37df1e=this['options']['sortItems']([..._0x403234]));this['filteredItems']=_0x37df1e;const _0x442503=this['filteredItems']['length']>=this['options']['maxItems'];_0x442503&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x442503),this['open']();}else this['allItems']=_0x403234,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x20ae0f);}catch(_0x519f94){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x519f94),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3cb7bf){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3cb7bf):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x387e14=this['filteredItems']['length']>=this['options']['maxItems'];_0x387e14&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x387e14),this['open']();}['renderItems'](_0x985869){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']((_0x1c47d2,_0x50666d)=>{const _0x591944=document['createElement']('div');_0x591944['className']='autocomplete-select-item',_0x591944['setAttribute']('role','option'),_0x591944['setAttribute']('data-index',_0x50666d);const _0x9645e2=this['options']['renderItem'](_0x1c47d2);let _0x5d7d69='';_0x9645e2['icon']&&(_0x5d7d69='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x9645e2['iconClass']||'')+'\x22>'+_0x9645e2['icon']+'</span>'),_0x591944['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5d7d69+'\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'](_0x9645e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x9645e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x9645e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591944['addEventListener']('click',()=>{this['selectItem'](_0x1c47d2);}),_0x591944['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x50666d,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591944);}),_0x985869?(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'](_0x500a62){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x500a62)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1948fc){this['selectedItem']=_0x1948fc;const _0xed817e=this['options']['renderItem'](_0x1948fc);this['input']['value']=_0xed817e['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1948fc);}['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'](_0x38c9c4){if(_0x38c9c4){this['selectedItem']=_0x38c9c4;const _0x2ca3e8=this['options']['renderItem'](_0x38c9c4);this['input']['value']=_0x2ca3e8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0xfa62ae){this['allItems']=_0xfa62ae,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'](_0x5942b1){this['input']['placeholder']=_0x5942b1;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x438c0d=null){const _0xbef0d9=document['getElementById']('admin-menu-container'),_0x465250=document['getElementById']('admin-menu-btn'),_0x87b868=document['getElementById']('admin-menu');if(!_0xbef0d9||!_0x465250||!_0x87b868)return;try{!_0x438c0d&&(_0x438c0d=await API['getCurrentUser']());if(_0x438c0d){const _0x193f3a=window['Permissions'],_0x57ddc9=_0x193f3a['hasServerPermission'](_0x438c0d,'*')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:manage')||_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')||_0x193f3a['hasTeamPermission'](_0x438c0d,'teams:manage')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:view_details');if(!_0x57ddc9)return;_0xbef0d9['hidden']=![];if(!_0x193f3a['hasServerPermission'](_0x438c0d,'*')){const _0x3e2092=_0x87b868['querySelectorAll']('.admin-menu-item');_0x3e2092['forEach'](_0xea906f=>{const _0x369ac9=_0xea906f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x369ac9==='Users'&&!_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')&&(_0xea906f['hidden']=!![]),_0x369ac9==='Skills'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Settings'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Health'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Git\x20History'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Roles'&&(_0xea906f['hidden']=!![]);});}_0x465250['addEventListener']('click',_0x10ae23=>{_0x10ae23['stopPropagation']();const _0x28731b=document['getElementById']('actions-menu');if(_0x28731b)_0x28731b['hidden']=!![];_0x87b868['hidden']=!_0x87b868['hidden'];}),document['addEventListener']('click',_0x52cc79=>{!_0x87b868['hidden']&&!_0x465250['contains'](_0x52cc79['target'])&&!_0x87b868['contains'](_0x52cc79['target'])&&(_0x87b868['hidden']=!![]);}),document['addEventListener']('keydown',_0x85dbb=>{_0x85dbb['key']==='Escape'&&!_0x87b868['hidden']&&(_0x87b868['hidden']=!![]);});const _0x1b7873=document['getElementById']('server-health-btn');_0x1b7873&&_0x1b7873['addEventListener']('click',async()=>{_0x87b868['hidden']=!![];const {openServerHealthModal:_0xa85064}=await import('./server-health.js');_0xa85064();});}}catch(_0x52af5a){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52af5a['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 _0xe75446=window['location']['pathname'],_0x242d87=_0xe75446['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x242d87)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x242d87[0x1]),_0x242d87[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x160712={}){const _0x504545=new URLSearchParams();_0x160712['userId']&&_0x504545['set']('userId',String(_0x160712['userId']));_0x160712['automation']&&_0x504545['set']('automation',String(_0x160712['automation']));const _0x3e2874=API_BASE+'/tasks/stats'+(_0x504545['toString']()?'?'+_0x504545['toString']():''),_0x26fdb8=await fetch(_0x3e2874);if(!_0x26fdb8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x26fdb8['statusText']);return await _0x26fdb8['json']();},async 'getTasks'(_0x2bdb84={}){const _0x3c361e=new URLSearchParams();_0x2bdb84['status']&&_0x3c361e['set']('status',String(_0x2bdb84['status']));_0x2bdb84['environment']&&_0x3c361e['set']('environment',String(_0x2bdb84['environment']));_0x2bdb84['automation']&&_0x3c361e['set']('automation',String(_0x2bdb84['automation']));if(_0x2bdb84['include']){const _0x2c051f=Array['isArray'](_0x2bdb84['include'])?_0x2bdb84['include']['join'](','):String(_0x2bdb84['include']);_0x2c051f&&_0x3c361e['set']('include',_0x2c051f);}_0x2bdb84['filter']&&_0x3c361e['set']('filter',String(_0x2bdb84['filter']));_0x2bdb84['page']&&_0x3c361e['set']('page',String(_0x2bdb84['page']));_0x2bdb84['limit']&&_0x3c361e['set']('limit',String(_0x2bdb84['limit']));_0x2bdb84['userId']&&_0x3c361e['set']('userId',String(_0x2bdb84['userId']));_0x2bdb84['search']&&_0x3c361e['set']('search',String(_0x2bdb84['search']));_0x2bdb84['includeChildTasks']&&_0x3c361e['set']('includeChildTasks','true');const _0xe2699c=API_BASE+'/tasks'+(_0x3c361e['toString']()?'?'+_0x3c361e['toString']():''),_0xfc479b=await fetch(_0xe2699c);if(!_0xfc479b['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xfc479b['statusText']);return await _0xfc479b['json']();},async 'getAutomations'(_0x1e8b63={}){const _0x49f636=new URLSearchParams();_0x1e8b63['environment']&&_0x49f636['set']('environment',String(_0x1e8b63['environment']));const _0x4d480e=await fetch(API_BASE+'/api/automations'+(_0x49f636['toString']()?'?'+_0x49f636['toString']():''));if(!_0x4d480e['ok']){const _0x1174e3=await _0x4d480e['json']()['catch'](()=>({}));throw new Error(_0x1174e3['message']||_0x1174e3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4d480e['statusText']);}return await _0x4d480e['json']();},async 'getAutomation'(_0x47be6e){const _0x3fabeb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x47be6e));if(!_0x3fabeb['ok']){const _0x1c01f6=await _0x3fabeb['json']()['catch'](()=>({}));throw new Error(_0x1c01f6['message']||_0x1c01f6['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3fabeb['statusText']);}return await _0x3fabeb['json']();},async 'createAutomation'(_0x536834){const _0x21d6fe=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x536834||{})});if(!_0x21d6fe['ok']){const _0x278026=await _0x21d6fe['json']()['catch'](()=>({}));throw new Error(_0x278026['message']||_0x278026['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x21d6fe['statusText']);}return await _0x21d6fe['json']();},async 'updateAutomation'(_0x45b3f0,_0x42e21){const _0x38c6b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x45b3f0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42e21||{})});if(!_0x38c6b7['ok']){const _0x32be5e=await _0x38c6b7['json']()['catch'](()=>({}));throw new Error(_0x32be5e['message']||_0x32be5e['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x38c6b7['statusText']);}return await _0x38c6b7['json']();},async 'deleteAutomation'(_0x46b157){const _0x298c87=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x46b157),{'method':'DELETE'});if(!_0x298c87['ok']){const _0x2e506a=await _0x298c87['json']()['catch'](()=>({}));throw new Error(_0x2e506a['message']||_0x2e506a['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x298c87['statusText']);}return await _0x298c87['json']();},async 'triggerAutomation'(_0x4e2a42){const _0x350c4c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e2a42)+'/trigger',{'method':'POST'});if(!_0x350c4c['ok']){const _0x27a7e1=await _0x350c4c['json']()['catch'](()=>({}));throw new Error(_0x27a7e1['message']||_0x27a7e1['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x350c4c['statusText']);}return await _0x350c4c['json']();},async 'setAutomationEnabled'(_0x698066,_0x559ef0){const _0x36ace3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x698066)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x559ef0})});if(!_0x36ace3['ok']){const _0x350f6e=await _0x36ace3['json']()['catch'](()=>({}));throw new Error(_0x350f6e['message']||_0x350f6e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x36ace3['statusText']);}return await _0x36ace3['json']();},async 'getAutomationHistory'(_0x48024b,_0x204777=0x32){const _0x153cd4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48024b)+'/history?limit='+encodeURIComponent(String(_0x204777)));if(!_0x153cd4['ok']){const _0x1388d2=await _0x153cd4['json']()['catch'](()=>({}));throw new Error(_0x1388d2['message']||_0x1388d2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x153cd4['statusText']);}return await _0x153cd4['json']();},async 'getTask'(_0x35a820,_0x5a8818={}){const _0x38f146=new URLSearchParams();if(_0x5a8818['include']){const _0x45747=Array['isArray'](_0x5a8818['include'])?_0x5a8818['include']['join'](','):String(_0x5a8818['include']);if(_0x45747)_0x38f146['set']('include',_0x45747);}const _0x1d12d5=await fetch(API_BASE+'/tasks/'+_0x35a820+(_0x38f146['toString']()?'?'+_0x38f146['toString']():''));if(!_0x1d12d5['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d12d5['statusText']);return await _0x1d12d5['json']();},async 'getTaskResults'(_0x5a6b1b){const _0xeaae28=await fetch(API_BASE+'/tasks/'+_0x5a6b1b+'/results');if(!_0xeaae28['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xeaae28['statusText']);return await _0xeaae28['json']();},async 'getTaskPatches'(_0x3dd7f5){const _0x28d359=await fetch(API_BASE+'/tasks/'+_0x3dd7f5+'/patches');if(!_0x28d359['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x28d359['statusText']);return await _0x28d359['json']();},async 'getTaskAttachments'(_0x5da68f){const _0x58bcd1=await fetch(API_BASE+'/tasks/'+_0x5da68f+'/attachments');if(!_0x58bcd1['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x58bcd1['statusText']);return await _0x58bcd1['json']();},async 'uploadAttachments'(_0x12fd2a,_0x5b05af){const _0x52a749=new FormData();for(const _0x85787d of _0x5b05af){_0x52a749['append']('attachments',_0x85787d);}const _0x3a0100=await fetch(API_BASE+'/tasks/'+_0x12fd2a+'/attachments',{'method':'POST','body':_0x52a749});if(!_0x3a0100['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3a0100['statusText']);return await _0x3a0100['json']();},async 'isAINameGenerationAvailable'(){try{const _0x40dcd9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x40dcd9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x40dcd9['json']();}catch(_0xa3333a){return{'available':![],'reason':_0xa3333a['message']};}},async 'generateTaskName'(_0x19ce25){try{const _0x57f323=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x19ce25})});return await _0x57f323['json']();}catch(_0xc482f4){return{'success':![],'error':_0xc482f4['message']};}},async 'createTask'(_0x4e3fdc){let _0x10263f,_0x255f4b={};if(_0x4e3fdc['files']&&_0x4e3fdc['files']['length']>0x0){const _0x3f1684=new FormData();for(const [_0x3673a6,_0xb8086e]of Object['entries'](_0x4e3fdc)){if(_0x3673a6!=='files'){if(_0xb8086e==null)continue;typeof _0xb8086e==='object'?_0x3f1684['append'](_0x3673a6,JSON['stringify'](_0xb8086e)):_0x3f1684['append'](_0x3673a6,String(_0xb8086e));}}for(const _0x51296f of _0x4e3fdc['files']){_0x3f1684['append']('attachments',_0x51296f);}_0x10263f=_0x3f1684;}else _0x255f4b['Content-Type']='application/json',_0x10263f=JSON['stringify'](_0x4e3fdc);const _0x3c912e=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x255f4b,'body':_0x10263f});if(!_0x3c912e['ok']){const _0xa87c=await _0x3c912e['json'](),_0x501eaf=new Error(_0xa87c['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3c912e['statusText']),{message:_0x231644,..._0x5854cd}=_0xa87c;Object['assign'](_0x501eaf,_0x5854cd);throw _0x501eaf;}return await _0x3c912e['json']();},async 'createTestTask'(_0x572a13){const _0x5390a1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572a13)});if(!_0x5390a1['ok']){const _0x1918cf=await _0x5390a1['json']();throw new Error(_0x1918cf['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5390a1['statusText']);}return await _0x5390a1['json']();},async 'createEphemeralTest'(_0x544742){const _0x6ddbce=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x544742)});if(!_0x6ddbce['ok']){const _0x5be8bb=await _0x6ddbce['json']();throw new Error(_0x5be8bb['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x6ddbce['statusText']);}return await _0x6ddbce['json']();},async 'createDeployTask'(_0x54c2a7){const _0xccbf4d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54c2a7)});if(!_0xccbf4d['ok']){const _0x5de944=await _0xccbf4d['json']();throw new Error(_0x5de944['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xccbf4d['statusText']);}return await _0xccbf4d['json']();},async 'getEnvironments'(){const _0x3642e9=await fetch(API_BASE+'/environments');if(!_0x3642e9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3642e9['statusText']);return await _0x3642e9['json']();},async 'getEnvironment'(_0x13d3a4){const _0x51823b=await fetch(API_BASE+'/environments/'+_0x13d3a4);if(!_0x51823b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x51823b['statusText']);return await _0x51823b['json']();},async 'getEnvironmentRepoHistory'(_0x56a836,_0x598fd3,_0x4d9816={}){if(!_0x56a836||!_0x598fd3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b6844=new URLSearchParams();if(_0x4d9816['limit'])_0x1b6844['set']('limit',String(_0x4d9816['limit']));if(_0x4d9816['offset'])_0x1b6844['set']('offset',String(_0x4d9816['offset']));if(_0x4d9816['search'])_0x1b6844['set']('search',String(_0x4d9816['search']));if(_0x4d9816['branch'])_0x1b6844['set']('branch',String(_0x4d9816['branch']));const _0x35a43d=API_BASE+'/environments/'+encodeURIComponent(_0x56a836)+'/repos/'+encodeURIComponent(_0x598fd3)+'/git/history',_0x26b58e=await fetch(''+_0x35a43d+(_0x1b6844['toString']()?'?'+_0x1b6844['toString']():''));if(!_0x26b58e['ok']){const _0x233f2a=await _0x26b58e['json']()['catch'](()=>({}));throw new Error(_0x233f2a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x26b58e['statusText']);}return await _0x26b58e['json']();},async 'getEnvironmentRepoCommit'(_0x183eed,_0x5c9455,_0x444b8c){if(!_0x183eed||!_0x5c9455||!_0x444b8c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35002f=API_BASE+'/environments/'+encodeURIComponent(_0x183eed)+'/repos/'+encodeURIComponent(_0x5c9455)+'/git/commits/'+encodeURIComponent(_0x444b8c),_0x609e14=await fetch(_0x35002f);if(!_0x609e14['ok']){const _0x31ba54=await _0x609e14['json']()['catch'](()=>({}));throw new Error(_0x31ba54['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x609e14['statusText']);}return await _0x609e14['json']();},async 'getEnvironmentRepoBranches'(_0x523550,_0x3f4d6c){if(!_0x523550||!_0x3f4d6c)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3e533f=API_BASE+'/environments/'+encodeURIComponent(_0x523550)+'/repos/'+encodeURIComponent(_0x3f4d6c)+'/git/branches',_0x17979f=await fetch(_0x3e533f);if(!_0x17979f['ok']){const _0x1d433a=await _0x17979f['json']()['catch'](()=>({}));throw new Error(_0x1d433a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x17979f['statusText']);}return await _0x17979f['json']();},async 'revertEnvironmentRepoCommit'(_0x557006,_0x5304fb,_0x45d406,_0x4be97={}){if(!_0x557006||!_0x5304fb||!_0x45d406)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5eb4a6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x557006)+'/repos/'+encodeURIComponent(_0x5304fb)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x45d406,..._0x4be97})});if(!_0x5eb4a6['ok']){const _0x723ce9=await _0x5eb4a6['json']()['catch'](()=>({}));throw new Error(_0x723ce9['message']||_0x723ce9['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5eb4a6['statusText']);}return await _0x5eb4a6['json']();},async 'getTemplates'(_0x2a9017={}){const _0x41baaf=new URLSearchParams();if(_0x2a9017['include']){const _0x159d29=Array['isArray'](_0x2a9017['include'])?_0x2a9017['include']['join'](','):String(_0x2a9017['include']);if(_0x159d29)_0x41baaf['set']('include',_0x159d29);}const _0x372a89=await fetch(API_BASE+'/templates'+(_0x41baaf['toString']()?'?'+_0x41baaf['toString']():''));if(!_0x372a89['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x372a89['statusText']);return await _0x372a89['json']();},async 'getTemplatesForEnvironment'(_0x27e41e,_0x4da9a6={}){if(!_0x27e41e)throw new Error('Environment\x20name\x20is\x20required');const _0x2612cd=new URLSearchParams();if(_0x4da9a6['include']){const _0x182b09=Array['isArray'](_0x4da9a6['include'])?_0x4da9a6['include']['join'](','):String(_0x4da9a6['include']);if(_0x182b09)_0x2612cd['set']('include',_0x182b09);}const _0x1f2b66=await fetch(API_BASE+'/templates/'+_0x27e41e+(_0x2612cd['toString']()?'?'+_0x2612cd['toString']():''));if(!_0x1f2b66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x27e41e+':\x20'+_0x1f2b66['statusText']);return await _0x1f2b66['json']();},async 'getTemplate'(_0x4ff035,_0x19eb96,_0x20caa0={}){if(!_0x4ff035||!_0x19eb96)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x443131=new URLSearchParams();if(_0x20caa0['include']){const _0x468e3b=Array['isArray'](_0x20caa0['include'])?_0x20caa0['include']['join'](','):String(_0x20caa0['include']);if(_0x468e3b)_0x443131['set']('include',_0x468e3b);}const _0x3c1f39=await fetch(API_BASE+'/templates/'+_0x4ff035+'/'+_0x19eb96+(_0x443131['toString']()?'?'+_0x443131['toString']():''));if(!_0x3c1f39['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x3c1f39['statusText']);return await _0x3c1f39['json']();},async 'getTaskLogs'(_0x3f11ee,_0x5a9e6c={}){if(!_0x3f11ee)throw new Error('Task\x20ID\x20is\x20required');const _0x38cac3=new URLSearchParams();_0x5a9e6c['tail']&&_0x38cac3['set']('tail',String(_0x5a9e6c['tail']));const _0x23be6b=await fetch(API_BASE+'/tasks/'+_0x3f11ee+'/logs'+(_0x38cac3['toString']()?'?'+_0x38cac3['toString']():''));if(!_0x23be6b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x23be6b['statusText']);return await _0x23be6b['text']();},async 'getContainers'(){const _0xa50f22=await fetch(API_BASE+'/containers');if(!_0xa50f22['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa50f22['statusText']);return await _0xa50f22['json']();},async 'getContainer'(_0x4d7ac5){const _0x20f975=await fetch(API_BASE+'/containers/'+_0x4d7ac5);if(!_0x20f975['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x20f975['statusText']);return await _0x20f975['json']();},async 'startInteractiveContainer'(_0x2783b1){const _0x1826ab=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2783b1)});if(!_0x1826ab['ok']){const _0x1704b7=await _0x1826ab['json']()['catch'](()=>({}));throw new Error(_0x1704b7['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1826ab['statusText']);}return await _0x1826ab['json']();},async 'stopContainer'(_0x4252ae){const _0x315caa=await fetch(API_BASE+'/containers/'+_0x4252ae,{'method':'DELETE'});if(!_0x315caa['ok']){const _0x3d6cb1=await _0x315caa['json']()['catch'](()=>({}));throw new Error(_0x3d6cb1['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x315caa['statusText']);}return await _0x315caa['json']();},async 'stopTask'(_0x1504ea){if(!_0x1504ea)throw new Error('Task\x20ID\x20is\x20required');const _0x10b51c=await fetch(API_BASE+'/tasks/'+_0x1504ea+'/stop',{'method':'POST'});if(!_0x10b51c['ok']){const _0x255a3d=await _0x10b51c['json']()['catch'](()=>({}));throw new Error(_0x255a3d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x10b51c['statusText']);}return await _0x10b51c['json']();},async 'interruptTask'(_0x3d1a96){if(!_0x3d1a96)throw new Error('Task\x20ID\x20is\x20required');const _0x711d88=await fetch(API_BASE+'/tasks/'+_0x3d1a96+'/interrupt',{'method':'POST'});if(!_0x711d88['ok']){const _0x11e92f=await _0x711d88['json']()['catch'](()=>({}));throw new Error(_0x11e92f['error']||_0x11e92f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x711d88['statusText']);}return await _0x711d88['json']();},async 'startTask'(_0x476f73){if(!_0x476f73)throw new Error('Task\x20ID\x20is\x20required');const _0x468e65=await fetch(API_BASE+'/tasks/'+_0x476f73+'/start',{'method':'POST'});if(!_0x468e65['ok']){const _0x1c98ba=await _0x468e65['json']()['catch'](()=>({}));throw new Error(_0x1c98ba['error']||'Failed\x20to\x20start\x20task:\x20'+_0x468e65['statusText']);}return await _0x468e65['json']();},async 'deleteTask'(_0xbf10f8){if(!_0xbf10f8)throw new Error('Task\x20ID\x20is\x20required');const _0x33e721=await fetch(API_BASE+'/tasks/'+_0xbf10f8,{'method':'DELETE'});if(!_0x33e721['ok']){const _0x4a9a93=await _0x33e721['json']()['catch'](()=>({}));throw new Error(_0x4a9a93['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33e721['statusText']);}return await _0x33e721['json']();},async 'refreshTasksFromDisk'(){const _0x1b24e1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b24e1['ok']){const _0x57b47a=await _0x1b24e1['json']()['catch'](()=>({}));throw new Error(_0x57b47a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b24e1['statusText']);}return await _0x1b24e1['json']();},async 'approveTask'(_0x3fdea7,_0x4c95e1={}){if(!_0x3fdea7)throw new Error('Task\x20ID\x20is\x20required');const _0x1a6dab={'commit_message':_0x4c95e1['commit_message']||'','pull':_0x4c95e1['pull']??![],'push':_0x4c95e1['push']??![]};_0x4c95e1['new_branch']&&(_0x1a6dab['new_branch']=_0x4c95e1['new_branch']);const _0xf74ab5=await fetch(API_BASE+'/tasks/'+_0x3fdea7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a6dab)});if(!_0xf74ab5['ok']){const _0x5da999=await _0xf74ab5['json']()['catch'](()=>({}));let _0x49e69d=_0x5da999['error']||_0x5da999['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xf74ab5['statusText'];if(_0x5da999['results']&&Array['isArray'](_0x5da999['results'])){const _0x41f2da=_0x5da999['results']['filter'](_0x3e14b2=>!_0x3e14b2['success']&&_0x3e14b2['error']);_0x41f2da['length']>0x0&&(_0x49e69d=_0x41f2da[0x0]['error']);}throw new Error(_0x49e69d);}return await _0xf74ab5['json']();},async 'getPullRequestInfo'(_0x297202){if(!_0x297202)throw new Error('Task\x20ID\x20is\x20required');const _0x25b29e=await fetch(API_BASE+'/tasks/'+_0x297202+'/pull-request-info');if(!_0x25b29e['ok']){const _0x533846=await _0x25b29e['json']()['catch'](()=>({}));throw new Error(_0x533846['error']||_0x533846['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x25b29e['statusText']);}return await _0x25b29e['json']();},async 'createPullRequests'(_0x4e8ea2,_0x331814){if(!_0x4e8ea2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x331814||!Array['isArray'](_0x331814))throw new Error('repos\x20array\x20is\x20required');const _0x5ad418=await fetch(API_BASE+'/tasks/'+_0x4e8ea2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x331814})});if(!_0x5ad418['ok']){const _0x5910fd=await _0x5ad418['json']()['catch'](()=>({}));let _0x235cf9=_0x5910fd['error']||_0x5910fd['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5ad418['statusText'];if(_0x5910fd['results']&&Array['isArray'](_0x5910fd['results'])){const _0x2a99ff=_0x5910fd['results']['filter'](_0x45dbdb=>!_0x45dbdb['success']&&_0x45dbdb['error']);_0x2a99ff['length']>0x0&&(_0x235cf9=_0x2a99ff[0x0]['error']);}throw new Error(_0x235cf9);}return await _0x5ad418['json']();},async 'syncRepos'(_0x30956d){if(!_0x30956d)throw new Error('Task\x20ID\x20is\x20required');const _0x525597=await fetch(API_BASE+'/tasks/'+_0x30956d+'/sync-repos',{'method':'POST'});if(!_0x525597['ok']){const _0x2adc2a=await _0x525597['json']()['catch'](()=>({}));throw new Error(_0x2adc2a['error']||_0x2adc2a['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x525597['statusText']);}return await _0x525597['json']();},async 'getIbmiSyncInfo'(_0x5c9fdb){if(!_0x5c9fdb)throw new Error('Task\x20ID\x20is\x20required');const _0x5a0d70=await fetch(API_BASE+'/tasks/'+_0x5c9fdb+'/ibmi-sync-info');if(!_0x5a0d70['ok']){const _0xa48dec=await _0x5a0d70['json']()['catch'](()=>({}));throw new Error(_0xa48dec['error']||_0xa48dec['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5a0d70['json']();},async 'getSyncFiles'(_0x2d295f){if(!_0x2d295f)throw new Error('Task\x20ID\x20is\x20required');const _0x1b5225=await fetch(API_BASE+'/tasks/'+_0x2d295f+'/sync-to-ibmi/files');if(!_0x1b5225['ok']){const _0x33e7ca=await _0x1b5225['json']()['catch'](()=>({}));throw new Error(_0x33e7ca['error']||_0x33e7ca['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1b5225['json']();},async 'syncToIbmi'(_0x1f636c,_0x2d8847,_0xb72997=null,_0xb6b3c9=null,_0x152308=null){if(!_0x1f636c)throw new Error('Task\x20ID\x20is\x20required');const _0x21ab79={'library':_0x2d8847};if(_0xb72997)_0x21ab79['user']=_0xb72997;if(_0xb6b3c9)_0x21ab79['password']=_0xb6b3c9;if(_0x152308)_0x21ab79['files']=_0x152308;const _0x19e207=await fetch(API_BASE+'/tasks/'+_0x1f636c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ab79)});if(!_0x19e207['ok']){const _0x540104=await _0x19e207['json']()['catch'](()=>({}));throw new Error(_0x540104['error']||_0x540104['message']||'Sync\x20failed');}return await _0x19e207['json']();},async 'getIbmiSyncLog'(_0x54cc5a){if(!_0x54cc5a)throw new Error('Task\x20ID\x20is\x20required');const _0x224a1c=await fetch(API_BASE+'/tasks/'+_0x54cc5a+'/ibmi-sync-log');if(!_0x224a1c['ok']){const _0x4d86c0=await _0x224a1c['json']()['catch'](()=>({}));throw new Error(_0x4d86c0['error']||_0x4d86c0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x224a1c['json']();},async 'pullChanges'(_0x51d8fa){if(!_0x51d8fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5517d7=await fetch(API_BASE+'/tasks/'+_0x51d8fa+'/pull-changes',{'method':'POST'});if(!_0x5517d7['ok']){const _0x531bb5=await _0x5517d7['json']()['catch'](()=>({}));throw new Error(_0x531bb5['error']||_0x531bb5['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5517d7['statusText']);}return await _0x5517d7['json']();},async 'readFile'(_0x21a92c,_0x4ac747){if(!_0x21a92c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ac747)throw new Error('File\x20path\x20is\x20required');const _0x3007a1=await fetch(API_BASE+'/tasks/'+_0x21a92c+'/files?path='+encodeURIComponent(_0x4ac747));if(!_0x3007a1['ok']){const _0x2e9a26=await _0x3007a1['json']()['catch'](()=>({}));throw new Error(_0x2e9a26['error']||_0x2e9a26['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3007a1['statusText']);}return await _0x3007a1['json']();},'getTaskFileDownloadUrl'(_0x485211,_0x4a53a5){if(!_0x485211)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4a53a5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x485211+'/files/download?path='+encodeURIComponent(_0x4a53a5);},async 'writeFile'(_0x1ab033,_0x106a99,_0xaa35b6){if(!_0x1ab033)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106a99)throw new Error('File\x20path\x20is\x20required');if(_0xaa35b6===undefined)throw new Error('Content\x20is\x20required');const _0x48cde3=await fetch(API_BASE+'/tasks/'+_0x1ab033+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x106a99,'content':_0xaa35b6})});if(!_0x48cde3['ok']){const _0x5815b7=await _0x48cde3['json']()['catch'](()=>({}));throw new Error(_0x5815b7['error']||_0x5815b7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x48cde3['statusText']);}return await _0x48cde3['json']();},async 'uploadTaskFiles'(_0x2bb558,_0x6d0079,_0x52c9a8){if(!_0x2bb558)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d0079)throw new Error('Target\x20directory\x20is\x20required');if(!_0x52c9a8||_0x52c9a8['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52eb48=new FormData();_0x52eb48['append']('targetDir',_0x6d0079);for(const _0x5a2986 of _0x52c9a8){_0x52eb48['append']('files',_0x5a2986,_0x5a2986['name']);}const _0x2027c1=await fetch(API_BASE+'/tasks/'+_0x2bb558+'/files/upload',{'method':'POST','body':_0x52eb48});if(!_0x2027c1['ok']){const _0x54939c=await _0x2027c1['json']()['catch'](()=>({}));throw new Error(_0x54939c['error']||_0x54939c['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2027c1['statusText']);}return await _0x2027c1['json']();},async 'createDirectory'(_0x37b51e,_0x4104e6){if(!_0x37b51e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4104e6)throw new Error('Directory\x20path\x20is\x20required');const _0x23a7c4=await fetch(API_BASE+'/tasks/'+_0x37b51e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4104e6})});if(!_0x23a7c4['ok']){const _0x3602d6=await _0x23a7c4['json']()['catch'](()=>({}));throw new Error(_0x3602d6['error']||_0x3602d6['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x23a7c4['statusText']);}return await _0x23a7c4['json']();},async 'renamePath'(_0xcc5aa4,_0x2f03b6,_0x5edded){if(!_0xcc5aa4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f03b6)throw new Error('Source\x20path\x20is\x20required');if(!_0x5edded)throw new Error('Destination\x20path\x20is\x20required');const _0x4c50b8=await fetch(API_BASE+'/tasks/'+_0xcc5aa4+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2f03b6,'newPath':_0x5edded})});if(!_0x4c50b8['ok']){const _0x10984f=await _0x4c50b8['json']()['catch'](()=>({}));throw new Error(_0x10984f['error']||_0x10984f['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x4c50b8['statusText']);}return await _0x4c50b8['json']();},async 'deleteFile'(_0x48fa9f,_0x106b13){if(!_0x48fa9f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106b13)throw new Error('File\x20path\x20is\x20required');const _0x1a8ab1=await fetch(API_BASE+'/tasks/'+_0x48fa9f+'/files?path='+encodeURIComponent(_0x106b13),{'method':'DELETE'});if(!_0x1a8ab1['ok']){const _0x28c8be=await _0x1a8ab1['json']()['catch'](()=>({}));throw new Error(_0x28c8be['error']||_0x28c8be['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1a8ab1['statusText']);}return await _0x1a8ab1['json']();},async 'deleteDirectory'(_0x5e7f29,_0x44f19e){if(!_0x5e7f29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44f19e)throw new Error('Directory\x20path\x20is\x20required');const _0x258719=await fetch(API_BASE+'/tasks/'+_0x5e7f29+'/files/directory?path='+encodeURIComponent(_0x44f19e),{'method':'DELETE'});if(!_0x258719['ok']){const _0x3787c4=await _0x258719['json']()['catch'](()=>({}));throw new Error(_0x3787c4['error']||_0x3787c4['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x258719['statusText']);}return await _0x258719['json']();},async 'discardFile'(_0x3704a3,_0x3176f3,_0x225b6a){if(!_0x3704a3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3176f3)throw new Error('File\x20path\x20is\x20required');if(!_0x225b6a)throw new Error('Repository\x20path\x20is\x20required');const _0x4db01d=await fetch(API_BASE+'/tasks/'+_0x3704a3+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3176f3,'repoPath':_0x225b6a})});if(!_0x4db01d['ok']){const _0x13c1e9=await _0x4db01d['json']()['catch'](()=>({}));throw new Error(_0x13c1e9['error']||_0x13c1e9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4db01d['statusText']);}return await _0x4db01d['json']();},async 'followUpTask'(_0x3c3e06,_0x5335f5={}){if(!_0x3c3e06)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5335f5['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x4aed42,_0x4dde62={};if(_0x5335f5['files']&&_0x5335f5['files']['length']>0x0){const _0x3d5818=new FormData();_0x3d5818['append']('instructions',_0x5335f5['instructions']);for(const _0x1c8b83 of _0x5335f5['files']){_0x3d5818['append']('attachments',_0x1c8b83);}_0x4aed42=_0x3d5818;}else _0x4dde62['Content-Type']='application/json',_0x4aed42=JSON['stringify']({'instructions':_0x5335f5['instructions']});const _0x16fc2e=await fetch(API_BASE+'/tasks/'+_0x3c3e06+'/follow-up',{'method':'POST','headers':_0x4dde62,'body':_0x4aed42});if(!_0x16fc2e['ok']){const _0x20918c=await _0x16fc2e['json']()['catch'](()=>({}));throw new Error(_0x20918c['error']||_0x20918c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x16fc2e['statusText']);}return await _0x16fc2e['json']();},async 'getTaskRewindPoints'(_0x4ce594){if(!_0x4ce594)throw new Error('Task\x20ID\x20is\x20required');const _0x4c1b43=await fetch(API_BASE+'/tasks/'+_0x4ce594+'/rewind-points');if(!_0x4c1b43['ok']){const _0x1a9ffe=await _0x4c1b43['json']()['catch'](()=>({}));throw new Error(_0x1a9ffe['error']||_0x1a9ffe['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4c1b43['statusText']);}return await _0x4c1b43['json']();},async 'rewindTask'(_0x26eebf,_0x3dd7cc={}){if(!_0x26eebf)throw new Error('Task\x20ID\x20is\x20required');const _0x2ef09d=Number['isInteger'](_0x3dd7cc['targetFollowUpCount'])?_0x3dd7cc['targetFollowUpCount']:0x0,_0xccca9d={'targetFollowUpCount':_0x2ef09d};typeof _0x3dd7cc['instructions']==='string'&&_0x3dd7cc['instructions']['trim']()&&(_0xccca9d['instructions']=_0x3dd7cc['instructions']['trim']());typeof _0x3dd7cc['rewindFiles']==='boolean'&&(_0xccca9d['rewindFiles']=_0x3dd7cc['rewindFiles']);const _0x10c00c=await fetch(API_BASE+'/tasks/'+_0x26eebf+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xccca9d)});if(!_0x10c00c['ok']){const _0x47f1cc=await _0x10c00c['json']()['catch'](()=>({}));throw new Error(_0x47f1cc['error']||_0x47f1cc['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x10c00c['statusText']);}return await _0x10c00c['json']();},async 'login'(_0x1fa377,_0x4c2265){const _0x5d25f6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1fa377,'password':_0x4c2265})});if(!_0x5d25f6['ok']){const _0x3c5463=await _0x5d25f6['json']();throw new Error(_0x3c5463['message']||'Login\x20failed');}return await _0x5d25f6['json']();},async 'logout'(){const _0x5afba8=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5afba8['ok']){const _0x82d051=await _0x5afba8['json']();throw new Error(_0x82d051['message']||'Logout\x20failed');}return await _0x5afba8['json']();},async 'getCurrentUser'(){const _0x36c891=await fetch(API_BASE+'/auth/me');if(!_0x36c891['ok'])throw new Error('Not\x20authenticated');const _0x1d391c=await _0x36c891['json']();return _0x1d391c['user'];},async 'getRolesInfo'(){const _0x2b63d7=await fetch(API_BASE+'/users/roles');if(!_0x2b63d7['ok']){const _0x2d4d17=await _0x2b63d7['json']();throw new Error(_0x2d4d17['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2b63d7['json']();},async 'getUsers'(){const _0x45a610=await fetch(API_BASE+'/users');if(!_0x45a610['ok']){const _0x7a2890=await _0x45a610['json']();throw new Error(_0x7a2890['message']||'Failed\x20to\x20get\x20users');}return await _0x45a610['json']();},async 'getUser'(_0x3b4021){const _0x55436f=await fetch(API_BASE+'/users/'+_0x3b4021);if(!_0x55436f['ok']){const _0x3756c8=await _0x55436f['json']();throw new Error(_0x3756c8['message']||'Failed\x20to\x20get\x20user');}return await _0x55436f['json']();},async 'createUser'(_0x22a654){const _0x321c19=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22a654)});if(!_0x321c19['ok']){const _0x3fa49c=await _0x321c19['json']();throw new Error(_0x3fa49c['message']||'Failed\x20to\x20create\x20user');}return await _0x321c19['json']();},async 'updateUser'(_0x5b8b7a,_0x3794a3){const _0x5ca934=await fetch(API_BASE+'/users/'+_0x5b8b7a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3794a3)});if(!_0x5ca934['ok']){const _0x1dbd2b=await _0x5ca934['json']();throw new Error(_0x1dbd2b['message']||'Failed\x20to\x20update\x20user');}return await _0x5ca934['json']();},async 'deleteUser'(_0x47ee0e){const _0x56a991=await fetch(API_BASE+'/users/'+_0x47ee0e,{'method':'DELETE'});if(!_0x56a991['ok']){const _0x11b7ef=await _0x56a991['json']();throw new Error(_0x11b7ef['message']||'Failed\x20to\x20delete\x20user');}return await _0x56a991['json']();},async 'stopAllContainers'(){const _0x3cd357=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x361e27=await _0x3cd357['json']()['catch'](()=>({}));if(!_0x3cd357['ok'])throw new Error(_0x361e27['message']||_0x361e27['error']||'Failed\x20to\x20stop\x20containers');return _0x361e27;},async 'removeStoppedContainers'(){const _0x3140d6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5ecdde=await _0x3140d6['json']()['catch'](()=>({}));if(!_0x3140d6['ok'])throw new Error(_0x5ecdde['message']||_0x5ecdde['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5ecdde;},async 'pruneDockerResources'(){const _0x1354ef=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x594a58=await _0x1354ef['json']()['catch'](()=>({}));if(!_0x1354ef['ok'])throw new Error(_0x594a58['message']||_0x594a58['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x594a58;},async 'createPasswordToken'(_0x4ce690,_0x139e2f='setup',_0x44cb48=![]){const _0x2ec2d3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ce690,'type':_0x139e2f,'sendEmail':_0x44cb48})});if(!_0x2ec2d3['ok']){const _0x24c170=await _0x2ec2d3['json']();throw new Error(_0x24c170['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2ec2d3['json']();},async 'getEmailConfig'(){const _0x50176e=await fetch(API_BASE+'/password/email-config');if(!_0x50176e['ok']){const _0x216da3=await _0x50176e['json']();throw new Error(_0x216da3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x50176e['json']();},async 'updateTaskName'(_0x438ab6,_0x9269f8){const _0x5a9829=await fetch(API_BASE+'/tasks/'+_0x438ab6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x9269f8})});if(!_0x5a9829['ok']){const _0x45ffcf=await _0x5a9829['json']();throw new Error(_0x45ffcf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a9829['json']();},async 'pinTask'(_0x583770,_0x371272,_0xdfe2d3=null){if(!_0x583770)throw new Error('Task\x20ID\x20is\x20required');const _0x389f84={'pinned':_0x371272};_0xdfe2d3&&_0xdfe2d3['length']>0x0&&(_0x389f84['additionalTaskIds']=_0xdfe2d3);const _0x2a5425=await fetch(API_BASE+'/tasks/'+_0x583770+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x389f84)});if(!_0x2a5425['ok']){const _0x5c958f=await _0x2a5425['json']();throw new Error(_0x5c958f['error']||'Failed\x20to\x20pin\x20task');}return await _0x2a5425['json']();},async 'setTaskWinner'(_0x18e9ab,_0x357acc,_0x5b7ae5=[]){if(!_0x18e9ab)throw new Error('Task\x20ID\x20is\x20required');const _0x44f8fe=await fetch(API_BASE+'/tasks/'+_0x18e9ab+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x357acc,'siblings':_0x5b7ae5})});if(!_0x44f8fe['ok']){const _0x41ade8=await _0x44f8fe['json']();throw new Error(_0x41ade8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x44f8fe['json']();},async 'setTaskLoser'(_0x18a498,_0x3ddfb3){if(!_0x18a498)throw new Error('Task\x20ID\x20is\x20required');const _0xac9085=await fetch(API_BASE+'/tasks/'+_0x18a498+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3ddfb3})});if(!_0xac9085['ok']){const _0x5c20c3=await _0xac9085['json']();throw new Error(_0x5c20c3['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0xac9085['json']();},async 'createTaskGroup'(_0x3c14b5){const _0x4975d0=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c14b5)});if(!_0x4975d0['ok']){const _0x437e1c=await _0x4975d0['json']();throw new Error(_0x437e1c['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4975d0['json']();},async 'getTaskGroups'(_0x4aeee5={}){const _0x53618f=new URLSearchParams();if(_0x4aeee5['userId'])_0x53618f['set']('userId',String(_0x4aeee5['userId']));if(_0x4aeee5['status'])_0x53618f['set']('status',String(_0x4aeee5['status']));if(_0x4aeee5['limit'])_0x53618f['set']('limit',String(_0x4aeee5['limit']));const _0x394ae2=API_BASE+'/tasks/groups'+(_0x53618f['toString']()?'?'+_0x53618f['toString']():''),_0x13633e=await fetch(_0x394ae2);if(!_0x13633e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x13633e['json']();},async 'getTaskGroup'(_0x55782b){const _0x4ec24c=await fetch(API_BASE+'/tasks/groups/'+_0x55782b);if(!_0x4ec24c['ok']){const _0x2dd67b=await _0x4ec24c['json']();throw new Error(_0x2dd67b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4ec24c['json']();},async 'updateTaskGroup'(_0x3a4828,_0xe5be75,_0x487e49){const _0x3cc652=await fetch(API_BASE+'/tasks/'+_0x3a4828+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe5be75,'groupIndex':_0x487e49})});if(!_0x3cc652['ok']){const _0x446939=await _0x3cc652['json']();throw new Error(_0x446939['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3cc652['json']();},async 'removeTaskFromGroup'(_0x127c03){return this['updateTaskGroup'](_0x127c03,null,null);},async 'deleteTaskGroup'(_0x5a5e61,_0x503b47=![]){const _0x52eba5=_0x503b47?'?deleteTasks=true':'',_0x550fb4=await fetch(API_BASE+'/tasks/groups/'+_0x5a5e61+_0x52eba5,{'method':'DELETE'});if(!_0x550fb4['ok']){const _0x198d66=await _0x550fb4['json']();throw new Error(_0x198d66['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x128a76,_0x331e52){const _0x3ae109=await fetch(API_BASE+'/tasks/groups/'+_0x128a76+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x331e52})});if(!_0x3ae109['ok']){const _0x47e322=await _0x3ae109['json']();throw new Error(_0x47e322['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ae109['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a49f9){if(!_0x5a49f9)throw new Error('Task\x20ID\x20is\x20required');const _0x905a0=await fetch(API_BASE+'/tasks/'+_0x5a49f9+'/comments');if(!_0x905a0['ok']){const _0x55a3ab=await _0x905a0['json']()['catch'](()=>({}));throw new Error(_0x55a3ab['error']||'Failed\x20to\x20get\x20comments');}return await _0x905a0['json']();},async 'addComment'(_0x4ca22f,_0x3656b5){if(!_0x4ca22f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3656b5)throw new Error('Comment\x20content\x20is\x20required');const _0x3205c1=await fetch(API_BASE+'/tasks/'+_0x4ca22f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3656b5})});if(!_0x3205c1['ok']){const _0x5425c9=await _0x3205c1['json']()['catch'](()=>({}));throw new Error(_0x5425c9['error']||'Failed\x20to\x20add\x20comment');}return await _0x3205c1['json']();},async 'updateComment'(_0x2b7300,_0x26e732,_0x1f1fd5){if(!_0x2b7300)throw new Error('Task\x20ID\x20is\x20required');if(!_0x26e732)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1fd5)throw new Error('Comment\x20content\x20is\x20required');const _0x38687a=await fetch(API_BASE+'/tasks/'+_0x2b7300+'/comments/'+_0x26e732,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1fd5})});if(!_0x38687a['ok']){const _0xf270c2=await _0x38687a['json']()['catch'](()=>({}));throw new Error(_0xf270c2['error']||'Failed\x20to\x20update\x20comment');}return await _0x38687a['json']();},async 'deleteComment'(_0x2695bd,_0x6e36f){if(!_0x2695bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6e36f)throw new Error('Comment\x20ID\x20is\x20required');const _0x2929a=await fetch(API_BASE+'/tasks/'+_0x2695bd+'/comments/'+_0x6e36f,{'method':'DELETE'});if(!_0x2929a['ok']){const _0x5c3235=await _0x2929a['json']()['catch'](()=>({}));throw new Error(_0x5c3235['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2929a['json']();},async 'createObjective'(_0x3eb3d3){const _0x4ceb25={'objective':!![],'name':_0x3eb3d3['name']||'','environment':_0x3eb3d3['environment']||null,'agents':_0x3eb3d3['agents']||[],'branches':_0x3eb3d3['branches']||{},'isPinned':_0x3eb3d3['isPinned']||![],'parentObjectiveId':_0x3eb3d3['parentObjectiveId']||null,'env_vars':_0x3eb3d3['envVars']||{},'parameters':{'instructions':_0x3eb3d3['instructions']||''},'files':_0x3eb3d3['files']||[],'jira':_0x3eb3d3['jira']||null};return this['createTask'](_0x4ceb25);},async 'updateObjective'(_0x48a2af,_0x181c86,_0x2ddbd1=[],_0x1fd84c=[]){let _0x10b776,_0x1442d7={};const _0x171cfa={..._0x181c86};_0x1fd84c&&_0x1fd84c['length']>0x0&&(_0x171cfa['removeAttachments']=_0x1fd84c);if(_0x2ddbd1&&_0x2ddbd1['length']>0x0){const _0x1e6e49=new FormData();for(const [_0x410035,_0x22ca64]of Object['entries'](_0x171cfa)){if(_0x22ca64==null)continue;typeof _0x22ca64==='object'?_0x1e6e49['append'](_0x410035,JSON['stringify'](_0x22ca64)):_0x1e6e49['append'](_0x410035,String(_0x22ca64));}for(const _0x1ffee3 of _0x2ddbd1){_0x1e6e49['append']('attachments',_0x1ffee3);}_0x10b776=_0x1e6e49;}else _0x1442d7['Content-Type']='application/json',_0x10b776=JSON['stringify'](_0x171cfa);const _0x1f37b3=await fetch(API_BASE+'/tasks/'+_0x48a2af,{'method':'PATCH','headers':_0x1442d7,'body':_0x10b776});if(!_0x1f37b3['ok']){const _0x430a23=await _0x1f37b3['json']();throw new Error(_0x430a23['error']||'Failed\x20to\x20update\x20objective');}return await _0x1f37b3['json']();},async 'deleteObjective'(_0x4f0e36){return this['deleteTask'](_0x4f0e36);},async 'launchObjective'(_0x478978,_0x2dc8e4={}){const _0x922a6a=await fetch(API_BASE+'/tasks/'+_0x478978+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc8e4)});if(!_0x922a6a['ok']){const _0x248587=await _0x922a6a['json']();throw new Error(_0x248587['error']||'Failed\x20to\x20launch\x20objective');}return await _0x922a6a['json']();},async 'getObjectiveAttachments'(_0x644d58){return this['getTaskAttachments'](_0x644d58);},async 'createJudgeTask'({environment:_0x1cbc46,judgeAgent:_0x393e5b,groupId:_0x12588e,taskIds:_0x2d99ab,judgeCustomInstructions:_0x1bfee7,isPinned:_0x2d279c}){const _0x58270f=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1cbc46,'judgeAgent':_0x393e5b,'groupId':_0x12588e,'taskIds':_0x2d99ab,'judgeCustomInstructions':_0x1bfee7,'isPinned':_0x2d279c})});if(!_0x58270f['ok']){const _0x45a0ba=await _0x58270f['json']();throw new Error(_0x45a0ba['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x58270f['json']();},async 'getJudgeTasks'(_0x187b27){const _0x4ca6d5=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x187b27));if(!_0x4ca6d5['ok']){const _0x197ab6=await _0x4ca6d5['json']();throw new Error(_0x197ab6['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4ca6d5['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x15a39e,_0x2a1fcf,_0x3a7fb7=''){const _0x239e4e=await fetch(API_BASE+'/tasks/'+_0x15a39e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2a1fcf,'customPreamble':_0x3a7fb7})});if(!_0x239e4e['ok']){const _0x2aa29a=await _0x239e4e['json']();throw new Error(_0x2aa29a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x239e4e['json']();},async 'getJiraConfig'(){const _0x5137c1=await fetch(API_BASE+'/jira/config');if(!_0x5137c1['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5137c1['json']();},async 'getJiraIssue'(_0x3e0454){const _0x4d9533=await fetch(API_BASE+'/jira/issues/'+_0x3e0454);if(!_0x4d9533['ok']){const _0x436580=await _0x4d9533['json']()['catch'](()=>({}));throw new Error(_0x436580['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4d9533['statusText']);}return await _0x4d9533['json']();},async 'searchJiraIssues'(_0x13f125,_0x512b95=0x14){const _0x11ae82=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x13f125,'maxResults':_0x512b95})});if(!_0x11ae82['ok']){const _0x5e56ad=await _0x11ae82['json']()['catch'](()=>({}));throw new Error(_0x5e56ad['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x11ae82['statusText']);}return await _0x11ae82['json']();},async 'postJiraComment'(_0x51ae79,_0x4fc474){const _0x4a10ba=await fetch(API_BASE+'/jira/issues/'+_0x51ae79+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4fc474})});if(!_0x4a10ba['ok']){const _0x380b8b=await _0x4a10ba['json']()['catch'](()=>({}));throw new Error(_0x380b8b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4a10ba['statusText']);}return await _0x4a10ba['json']();},async 'getJiraComments'(_0x154dbe){const _0x5b757c=await fetch(API_BASE+'/jira/issues/'+_0x154dbe+'/comments');if(!_0x5b757c['ok']){const _0x1b5624=await _0x5b757c['json']()['catch'](()=>({}));throw new Error(_0x1b5624['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5b757c['statusText']);}return await _0x5b757c['json']();},async 'promptParameter'({environment:_0x11da74,command:_0x277c5f,parser:parser='json'}){const _0x4e8569=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x11da74,'command':_0x277c5f,'parser':parser})});if(!_0x4e8569['ok']){const _0x184969=await _0x4e8569['json']()['catch'](()=>({}));throw new Error(_0x184969['message']||_0x184969['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4e8569['statusText']);}return await _0x4e8569['json']();},async 'promptParameterStream'(_0xa48139,_0x2d615f){const _0x42fbb8=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa48139)});if(!_0x42fbb8['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x42fbb8['statusText']);const _0x2f0d6e=_0x42fbb8['body']['getReader'](),_0x46ec9b=new TextDecoder();let _0xb35547='';return new Promise((_0x29762a,_0x2abae0)=>{const _0x5a0670=async()=>{try{const {done:_0x2f38e3,value:_0x2988a8}=await _0x2f0d6e['read']();if(_0x2f38e3)return;_0xb35547+=_0x46ec9b['decode'](_0x2988a8,{'stream':!![]});const _0x2eca4c=_0xb35547['split']('\x0a\x0a');_0xb35547=_0x2eca4c['pop']()||'';for(const _0xe70b97 of _0x2eca4c){if(!_0xe70b97['trim']())continue;const _0x2eb6ff=_0xe70b97['split']('\x0a');let _0x559d27='message',_0x2138c2='';for(const _0x1fe3b3 of _0x2eb6ff){if(_0x1fe3b3['startsWith']('event:'))_0x559d27=_0x1fe3b3['substring'](0x6)['trim']();else _0x1fe3b3['startsWith']('data:')&&(_0x2138c2=_0x1fe3b3['substring'](0x5)['trim']());}if(!_0x2138c2)continue;try{const _0x5182ea=JSON['parse'](_0x2138c2);if(_0x559d27==='progress'&&_0x2d615f)_0x2d615f(_0x5182ea['stage'],_0x5182ea['message']);else{if(_0x559d27==='result'){_0x29762a(_0x5182ea);return;}else{if(_0x559d27==='error'){let _0x46bf8f=_0x5182ea['message']||_0x5182ea['error']||'Prompt\x20command\x20failed';_0x5182ea['rawOutput']&&(_0x46bf8f+='\x0a\x0aRaw\x20output:\x0a'+_0x5182ea['rawOutput']);_0x2abae0(new Error(_0x46bf8f));return;}}}}catch(_0xb74d99){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0xb74d99),console['error']('Event\x20type:',_0x559d27),console['error']('Event\x20data:',_0x2138c2),console['error']('First\x20200\x20chars:',_0x2138c2['substring'](0x0,0xc8)),_0x2abae0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0xb74d99['message']+'\x0a\x0aData:\x20'+_0x2138c2['substring'](0x0,0x1f4)));return;}}_0x5a0670();}catch(_0x36faae){_0x2abae0(_0x36faae);}};_0x5a0670();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2b8e3c){const _0x2bbd76=await fetch(''+API_BASE+_0x2b8e3c);if(!_0x2bbd76['ok']){const _0x579a78=await _0x2bbd76['json']()['catch'](()=>({'error':_0x2bbd76['statusText']})),_0x10e405=new Error(_0x579a78['error']||_0x579a78['message']||_0x2bbd76['statusText']);if(_0x579a78['detail']!==undefined)_0x10e405['detail']=_0x579a78['detail'];throw _0x10e405;}return await _0x2bbd76['json']();},async 'post'(_0x30100c,_0x792112){const _0x82cb0f=await fetch(''+API_BASE+_0x30100c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x792112)});if(!_0x82cb0f['ok']){const _0xf7d260=await _0x82cb0f['json']()['catch'](()=>({'error':_0x82cb0f['statusText']})),_0x106d30=new Error(_0xf7d260['error']||_0xf7d260['message']||_0x82cb0f['statusText']);if(_0xf7d260['detail']!==undefined)_0x106d30['detail']=_0xf7d260['detail'];throw _0x106d30;}return await _0x82cb0f['json']();},async 'put'(_0x503fbf,_0x368b12){const _0x18a1b5=await fetch(''+API_BASE+_0x503fbf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x368b12)});if(!_0x18a1b5['ok']){const _0x3e7aea=await _0x18a1b5['json']()['catch'](()=>({'error':_0x18a1b5['statusText']})),_0x26a42d=new Error(_0x3e7aea['error']||_0x3e7aea['message']||_0x18a1b5['statusText']);if(_0x3e7aea['detail']!==undefined)_0x26a42d['detail']=_0x3e7aea['detail'];throw _0x26a42d;}return await _0x18a1b5['json']();},async 'delete'(_0x28a398,_0x59d4d7){const _0x15d34b={'method':'DELETE'};_0x59d4d7&&(_0x15d34b['headers']={'Content-Type':'application/json'},_0x15d34b['body']=JSON['stringify'](_0x59d4d7));const _0x2f402e=await fetch(''+API_BASE+_0x28a398,_0x15d34b);if(!_0x2f402e['ok']){const _0x29a690=await _0x2f402e['json']()['catch'](()=>({'error':_0x2f402e['statusText']})),_0x294920=new Error(_0x29a690['error']||_0x29a690['message']||_0x2f402e['statusText']);if(_0x29a690['detail']!==undefined)_0x294920['detail']=_0x29a690['detail'];throw _0x294920;}return await _0x2f402e['json']();},async 'getSkills'(){const _0x46c298=await fetch(API_BASE+'/skills');if(!_0x46c298['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x46c298['statusText']);return await _0x46c298['json']();},async 'getSkill'(_0x3bbd54){const _0x55569b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3bbd54));if(!_0x55569b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x55569b['statusText']);return await _0x55569b['json']();},async 'createSkill'(_0x4cdadc){const _0x149328=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdadc)});if(!_0x149328['ok']){const _0x11541d=await _0x149328['json']()['catch'](()=>({'error':_0x149328['statusText']})),_0x12e6f9=new Error(_0x11541d['error']||_0x11541d['message']||_0x149328['statusText']);if(_0x11541d['detail']!==undefined)_0x12e6f9['detail']=_0x11541d['detail'];throw _0x12e6f9;}return await _0x149328['json']();},async 'updateSkill'(_0x4b072,_0x179b7e){const _0x280390=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b072),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x179b7e)});if(!_0x280390['ok']){const _0x1c350b=await _0x280390['json']()['catch'](()=>({'error':_0x280390['statusText']})),_0x35ef78=new Error(_0x1c350b['error']||_0x1c350b['message']||_0x280390['statusText']);if(_0x1c350b['detail']!==undefined)_0x35ef78['detail']=_0x1c350b['detail'];throw _0x35ef78;}return await _0x280390['json']();},async 'deleteSkill'(_0x510ab1){const _0x33004e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x510ab1),{'method':'DELETE'});if(!_0x33004e['ok']){const _0x5ea4ce=await _0x33004e['json']()['catch'](()=>({'error':_0x33004e['statusText']})),_0x5a2496=new Error(_0x5ea4ce['error']||_0x5ea4ce['message']||_0x33004e['statusText']);if(_0x5ea4ce['detail']!==undefined)_0x5a2496['detail']=_0x5ea4ce['detail'];throw _0x5a2496;}return await _0x33004e['json']();},async 'getSkillFile'(_0x27ddb3,_0x1f8cad){const _0x45faa7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27ddb3)+'/files/'+_0x1f8cad);if(!_0x45faa7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x45faa7['statusText']);return await _0x45faa7['json']();},async 'saveSkillFile'(_0x1598a2,_0x131620,_0x125721){const _0x3458f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1598a2)+'/files/'+_0x131620,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x125721})});if(!_0x3458f0['ok']){const _0x10ae1c=await _0x3458f0['json']()['catch'](()=>({'error':_0x3458f0['statusText']})),_0x53699a=new Error(_0x10ae1c['error']||_0x10ae1c['message']||_0x3458f0['statusText']);if(_0x10ae1c['detail']!==undefined)_0x53699a['detail']=_0x10ae1c['detail'];throw _0x53699a;}return await _0x3458f0['json']();},async 'deleteSkillFile'(_0x14744d,_0x4b049d){const _0x189cd5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x14744d)+'/files/'+_0x4b049d,{'method':'DELETE'});if(!_0x189cd5['ok']){const _0x2c7b96=await _0x189cd5['json']()['catch'](()=>({'error':_0x189cd5['statusText']})),_0xeb634d=new Error(_0x2c7b96['error']||_0x2c7b96['message']||_0x189cd5['statusText']);if(_0x2c7b96['detail']!==undefined)_0xeb634d['detail']=_0x2c7b96['detail'];throw _0xeb634d;}return await _0x189cd5['json']();},async 'pullSkills'(){const _0x58bd9f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x58bd9f['ok']){const _0xf0a93f=await _0x58bd9f['json']()['catch'](()=>({'error':_0x58bd9f['statusText']})),_0x55cd4e=new Error(_0xf0a93f['error']||_0xf0a93f['message']||_0x58bd9f['statusText']);if(_0xf0a93f['detail']!==undefined)_0x55cd4e['detail']=_0xf0a93f['detail'];throw _0x55cd4e;}return await _0x58bd9f['json']();},async 'commitSkills'(_0x25fc8c,_0x34433a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x34433a,_0x5895d5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x25fc8c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5895d5['ok']){const _0x557f01=await _0x5895d5['json']()['catch'](()=>({'error':_0x5895d5['statusText']})),_0x562aab=new Error(_0x557f01['error']||_0x557f01['message']||_0x5895d5['statusText']);if(_0x557f01['detail']!==undefined)_0x562aab['detail']=_0x557f01['detail'];throw _0x562aab;}return await _0x5895d5['json']();},async 'discardSkillsChanges'(){const _0x1691db=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1691db['ok']){const _0x1c0c24=await _0x1691db['json']()['catch'](()=>({'error':_0x1691db['statusText']})),_0x56b2d3=new Error(_0x1c0c24['error']||_0x1c0c24['message']||_0x1691db['statusText']);if(_0x1c0c24['detail']!==undefined)_0x56b2d3['detail']=_0x1c0c24['detail'];throw _0x56b2d3;}return await _0x1691db['json']();},async 'getSkillCatalog'(){const _0x2ed70f=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ed70f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ed70f['statusText']);return await _0x2ed70f['json']();},async 'getImportedSkillsRegistry'(){const _0x5a56f6=await fetch(API_BASE+'/external-skills/registry');if(!_0x5a56f6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5a56f6['statusText']);return await _0x5a56f6['json']();},async 'importCatalogSkill'(_0x36aeaa){const _0x1ff798=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x36aeaa})});if(!_0x1ff798['ok']){const _0x2d7544=await _0x1ff798['json']()['catch'](()=>({'error':_0x1ff798['statusText']})),_0x421ada=new Error(_0x2d7544['error']||_0x2d7544['message']||_0x1ff798['statusText']);if(_0x2d7544['detail']!==undefined)_0x421ada['detail']=_0x2d7544['detail'];throw _0x421ada;}return await _0x1ff798['json']();},async 'importSkillFromGit'(_0x38ca08,_0x8842ad,_0xc9c89='main',_0x8069d0=null){const _0xa8887f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x38ca08,'skillPath':_0x8842ad,'branch':_0xc9c89,'skillId':_0x8069d0})});if(!_0xa8887f['ok']){const _0x5a0a30=await _0xa8887f['json']()['catch'](()=>({'error':_0xa8887f['statusText']})),_0x59945e=new Error(_0x5a0a30['error']||_0x5a0a30['message']||_0xa8887f['statusText']);if(_0x5a0a30['detail']!==undefined)_0x59945e['detail']=_0x5a0a30['detail'];throw _0x59945e;}return await _0xa8887f['json']();},async 'probeMarketplace'(_0x13d938,_0x9f349b='main'){const _0x31078d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13d938,'branch':_0x9f349b})});if(!_0x31078d['ok']){const _0x34352c=await _0x31078d['json']()['catch'](()=>({'error':_0x31078d['statusText']})),_0x362dbb=new Error(_0x34352c['error']||_0x34352c['message']||_0x31078d['statusText']);if(_0x34352c['detail']!==undefined)_0x362dbb['detail']=_0x34352c['detail'];throw _0x362dbb;}return await _0x31078d['json']();},async 'importMarketplaceBundle'(_0x5d9cd4,_0x3ca55d,_0x21e541,_0x9e6440=null){const _0x260f52=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5d9cd4,'branch':_0x3ca55d,'bundleId':_0x21e541,'selectedSkills':_0x9e6440})});if(!_0x260f52['ok']){const _0x2f316a=await _0x260f52['json']()['catch'](()=>({'error':_0x260f52['statusText']})),_0x5059a4=new Error(_0x2f316a['error']||_0x2f316a['message']||_0x260f52['statusText']);if(_0x2f316a['detail']!==undefined)_0x5059a4['detail']=_0x2f316a['detail'];throw _0x5059a4;}return await _0x260f52['json']();},async 'importSkillFromFolder'(_0x305d51,_0x100a09=null){const _0x521b91=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x305d51,'skillId':_0x100a09})});if(!_0x521b91['ok']){const _0x3beb4d=await _0x521b91['json']()['catch'](()=>({'error':_0x521b91['statusText']})),_0x216bf2=new Error(_0x3beb4d['error']||_0x3beb4d['message']||_0x521b91['statusText']);if(_0x3beb4d['detail']!==undefined)_0x216bf2['detail']=_0x3beb4d['detail'];throw _0x216bf2;}return await _0x521b91['json']();},async 'importSkillFromNpm'(_0x49352a,_0x43937f='latest',_0x50af09=null,_0x19be08=null){const _0x13fb6e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x49352a,'version':_0x43937f,'skillId':_0x50af09,'registry':_0x19be08})});if(!_0x13fb6e['ok']){const _0x2638c1=await _0x13fb6e['json']()['catch'](()=>({'error':_0x13fb6e['statusText']})),_0x2b32bf=new Error(_0x2638c1['error']||_0x2638c1['message']||_0x13fb6e['statusText']);if(_0x2638c1['detail']!==undefined)_0x2b32bf['detail']=_0x2638c1['detail'];throw _0x2b32bf;}return await _0x13fb6e['json']();},async 'checkSkillUpdates'(_0x2eb4d0){const _0x4c8b38=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2eb4d0)+'/check-updates',{'method':'POST'});if(!_0x4c8b38['ok']){const _0x12882e=await _0x4c8b38['json']()['catch'](()=>({'error':_0x4c8b38['statusText']})),_0x2c2fd7=new Error(_0x12882e['error']||_0x12882e['message']||_0x4c8b38['statusText']);if(_0x12882e['detail']!==undefined)_0x2c2fd7['detail']=_0x12882e['detail'];throw _0x2c2fd7;}return await _0x4c8b38['json']();},async 'updateExternalSkill'(_0x790739){const _0x3ad7aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x790739)+'/update',{'method':'POST'});if(!_0x3ad7aa['ok']){const _0x1d8624=await _0x3ad7aa['json']()['catch'](()=>({'error':_0x3ad7aa['statusText']})),_0x33ff7a=new Error(_0x1d8624['error']||_0x1d8624['message']||_0x3ad7aa['statusText']);if(_0x1d8624['detail']!==undefined)_0x33ff7a['detail']=_0x1d8624['detail'];throw _0x33ff7a;}return await _0x3ad7aa['json']();},async 'updateSkillFlags'(_0x4edc0d,_0x208cd1){const _0x2603eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4edc0d)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x208cd1})});if(!_0x2603eb['ok']){const _0x3cae26=await _0x2603eb['json']()['catch'](()=>({'error':_0x2603eb['statusText']})),_0x244211=new Error(_0x3cae26['error']||_0x3cae26['message']||_0x2603eb['statusText']);if(_0x3cae26['detail']!==undefined)_0x244211['detail']=_0x3cae26['detail'];throw _0x244211;}return await _0x2603eb['json']();},async 'removeFromImportedRegistry'(_0x54d98a){const _0x3c0bac=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x54d98a)+'/registry',{'method':'DELETE'});if(!_0x3c0bac['ok']){const _0x53c538=await _0x3c0bac['json']()['catch'](()=>({'error':_0x3c0bac['statusText']})),_0x2d29ea=new Error(_0x53c538['error']||_0x53c538['message']||_0x3c0bac['statusText']);if(_0x53c538['detail']!==undefined)_0x2d29ea['detail']=_0x53c538['detail'];throw _0x2d29ea;}return await _0x3c0bac['json']();},async 'getTeams'(){const _0x59182e=await fetch(API_BASE+'/teams');if(!_0x59182e['ok']){const _0x3a177a=await _0x59182e['json']()['catch'](()=>({'message':_0x59182e['statusText']}));throw new Error(_0x3a177a['message']||'Failed\x20to\x20get\x20teams');}return await _0x59182e['json']();},async 'getTeam'(_0x176b2b){const _0x531eb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x176b2b));if(!_0x531eb3['ok']){const _0x19f615=await _0x531eb3['json']()['catch'](()=>({'message':_0x531eb3['statusText']}));throw new Error(_0x19f615['message']||'Failed\x20to\x20get\x20team');}return await _0x531eb3['json']();},async 'createTeam'(_0x1bdbe2){const _0x55e996=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bdbe2)});if(!_0x55e996['ok']){const _0x2f984d=await _0x55e996['json']()['catch'](()=>({'message':_0x55e996['statusText']}));throw new Error(_0x2f984d['message']||'Failed\x20to\x20create\x20team');}return await _0x55e996['json']();},async 'updateTeam'(_0x476cdb,_0x18d847){const _0x4f8444=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x476cdb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18d847)});if(!_0x4f8444['ok']){const _0x447fc8=await _0x4f8444['json']()['catch'](()=>({'message':_0x4f8444['statusText']}));throw new Error(_0x447fc8['message']||'Failed\x20to\x20update\x20team');}return await _0x4f8444['json']();},async 'deleteTeam'(_0x511b96){const _0x193c7b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x511b96),{'method':'DELETE'});if(!_0x193c7b['ok']){const _0x21ea1a=await _0x193c7b['json']()['catch'](()=>({'message':_0x193c7b['statusText']}));throw new Error(_0x21ea1a['message']||'Failed\x20to\x20delete\x20team');}return await _0x193c7b['json']();},async 'addTeamMember'(_0xd7bf23,_0x3c289d){const _0x1d0657=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd7bf23)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3c289d})});if(!_0x1d0657['ok']){const _0x56a433=await _0x1d0657['json']()['catch'](()=>({'message':_0x1d0657['statusText']}));throw new Error(_0x56a433['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1d0657['json']();},async 'removeTeamMember'(_0xab8754,_0x274a7a){const _0x3bc003=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xab8754)+'/members/'+encodeURIComponent(_0x274a7a),{'method':'DELETE'});if(!_0x3bc003['ok']){const _0x29b2a0=await _0x3bc003['json']()['catch'](()=>({'message':_0x3bc003['statusText']}));throw new Error(_0x29b2a0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x3bc003['json']();},async 'getBindings'(_0x33676d={}){const _0x1f1507=new URLSearchParams();if(_0x33676d['resource_type'])_0x1f1507['set']('resource_type',_0x33676d['resource_type']);if(_0x33676d['resource_id'])_0x1f1507['set']('resource_id',_0x33676d['resource_id']);if(_0x33676d['subject_type'])_0x1f1507['set']('subject_type',_0x33676d['subject_type']);if(_0x33676d['subject_id'])_0x1f1507['set']('subject_id',_0x33676d['subject_id']);const _0x4a9917=_0x1f1507['toString'](),_0xf1b4b4=await fetch(API_BASE+'/bindings'+(_0x4a9917?'?'+_0x4a9917:''));if(!_0xf1b4b4['ok']){const _0x5afe56=await _0xf1b4b4['json']()['catch'](()=>({'message':_0xf1b4b4['statusText']}));throw new Error(_0x5afe56['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf1b4b4['json']();},async 'createBinding'(_0x228622){const _0x111235=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x228622)});if(!_0x111235['ok']){const _0x5968a0=await _0x111235['json']()['catch'](()=>({'message':_0x111235['statusText']}));throw new Error(_0x5968a0['message']||'Failed\x20to\x20create\x20binding');}return await _0x111235['json']();},async 'updateBinding'(_0x37d4a9,_0x45c954){const _0x201d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37d4a9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45c954)});if(!_0x201d7e['ok']){const _0x54539a=await _0x201d7e['json']()['catch'](()=>({'message':_0x201d7e['statusText']}));throw new Error(_0x54539a['message']||'Failed\x20to\x20update\x20binding');}return await _0x201d7e['json']();},async 'deleteBinding'(_0x389bf1){const _0x386295=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x389bf1),{'method':'DELETE'});if(!_0x386295['ok']){const _0x11fb23=await _0x386295['json']()['catch'](()=>({'message':_0x386295['statusText']}));throw new Error(_0x11fb23['message']||'Failed\x20to\x20delete\x20binding');}return await _0x386295['json']();},async 'getRoleDefinitions'(){const _0x1e8e95=await fetch(API_BASE+'/roles');if(!_0x1e8e95['ok']){const _0x4710f6=await _0x1e8e95['json']()['catch'](()=>({'message':_0x1e8e95['statusText']}));throw new Error(_0x4710f6['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e8e95['json']();},async 'getRoleDefinition'(_0x520d0c){const _0x565b54=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x520d0c));if(!_0x565b54['ok']){const _0x117946=await _0x565b54['json']()['catch'](()=>({'message':_0x565b54['statusText']}));throw new Error(_0x117946['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x565b54['json']();},async 'createRoleDefinition'(_0x16368f){const _0x1e2de1=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16368f)});if(!_0x1e2de1['ok']){const _0x23d5ba=await _0x1e2de1['json']()['catch'](()=>({'message':_0x1e2de1['statusText']}));throw new Error(_0x23d5ba['message']||_0x23d5ba['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e2de1['json']();},async 'updateRoleDefinition'(_0x21c822,_0x3aecf0){const _0x53337c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x21c822),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3aecf0)});if(!_0x53337c['ok']){const _0x2fde25=await _0x53337c['json']()['catch'](()=>({'message':_0x53337c['statusText']}));throw new Error(_0x2fde25['message']||_0x2fde25['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53337c['json']();},async 'deleteRoleDefinition'(_0x428996){const _0x2d9d69=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x428996),{'method':'DELETE'});if(!_0x2d9d69['ok']){const _0x12a32e=await _0x2d9d69['json']()['catch'](()=>({'message':_0x2d9d69['statusText']}));throw new Error(_0x12a32e['message']||_0x12a32e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2d9d69['json']();},async 'getAvailablePermissions'(){const _0x23585f=await fetch(API_BASE+'/roles/available-permissions');if(!_0x23585f['ok']){const _0x381b1a=await _0x23585f['json']()['catch'](()=>({'message':_0x23585f['statusText']}));throw new Error(_0x381b1a['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x23585f['json']();},async 'getGitProviderAllowedTeams'(_0x33d47b){const _0x32b274=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x33d47b)+'/allowed-teams');if(!_0x32b274['ok']){const _0x6f52dd=await _0x32b274['json']()['catch'](()=>({'message':_0x32b274['statusText']}));throw new Error(_0x6f52dd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x32b274['json']();},async 'setGitProviderAllowedTeams'(_0x5ed604,_0x2c195b){const _0x1fc2ca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5ed604)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2c195b})});if(!_0x1fc2ca['ok']){const _0x42f53e=await _0x1fc2ca['json']()['catch'](()=>({'message':_0x1fc2ca['statusText']}));throw new Error(_0x42f53e['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1fc2ca['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x597482=toastState['baseBottom'];toastState['toasts']['forEach'](_0x46d2b6=>{_0x46d2b6['el']['style']['bottom']=_0x597482+'px';const _0x5769b9=_0x46d2b6['el']['offsetHeight']||toastState['defaultHeight'];_0x597482+=_0x5769b9+toastState['gap'];});});}function removeToastById(_0x7b6319){const _0x3180e1=toastState['toasts']['findIndex'](_0x1f0920=>_0x1f0920['id']===_0x7b6319);if(_0x3180e1===-0x1)return;const _0x40f90d=toastState['toasts'][_0x3180e1];if(_0x40f90d['timeoutId'])clearTimeout(_0x40f90d['timeoutId']);_0x40f90d['el']['classList']['remove']('show'),setTimeout(()=>_0x40f90d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3180e1,0x1),repositionAllToasts();}function registerToast(_0x2d77af){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d77af),repositionAllToasts(),_0x2d77af['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x30e887){if(_0x30e887===null||_0x30e887===undefined)return'';return String(_0x30e887)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x48f4c9,_0x2c347e){if(_0x48f4c9&&typeof _0x48f4c9==='object'&&!Array['isArray'](_0x48f4c9))return{'code':typeof _0x48f4c9['text']==='string'?_0x48f4c9['text']:'','language':typeof _0x48f4c9['lang']==='string'?_0x48f4c9['lang']:''};return{'code':typeof _0x48f4c9==='string'?_0x48f4c9:'','language':typeof _0x2c347e==='string'?_0x2c347e:''};}function buildMermaidBlock(_0xcc6691){const _0x4c8e3c=String(_0xcc6691||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c8e3c))+'\x22>'+escapeHtmlValue(_0x4c8e3c)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x34bee4=new marked['Renderer'](),_0x5c7bdb=_0x34bee4['code']['bind'](_0x34bee4);return _0x34bee4['code']=function(_0x7443a5,_0x5c4efb,..._0x434658){const {code:_0x3ab0af,language:_0x16b930}=getMarkdownCodeBlockPayload(_0x7443a5,_0x5c4efb),_0x72fc08=String(_0x16b930||'')['trim']()['toLowerCase']();if(_0x72fc08==='mermaid')return buildMermaidBlock(_0x3ab0af);const _0x1196e9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1196e9&&_0x72fc08)try{const _0x4fdab1=_0x1196e9['getLanguage'](_0x72fc08)?_0x72fc08:'plaintext',_0x5080f9=_0x1196e9['highlight'](_0x3ab0af,{'language':_0x4fdab1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x72fc08)+'\x22>'+_0x5080f9+'</code></pre>';}catch(_0x5bbc3b){console['error']('Syntax\x20highlighting\x20error:',_0x5bbc3b);}return _0x5c7bdb(_0x7443a5,_0x5c4efb,..._0x434658);},sharedMarkedRenderer=_0x34bee4,_0x34bee4;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x386839=window['mermaid'];if(!_0x386839||typeof _0x386839['initialize']!=='function')return _0x386839||null;return _0x386839['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x386839;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1318bf,_0x295a3b)=>{const _0x1a1097=()=>_0x1318bf(configureMermaidInstance()),_0x10d44c=()=>{mermaidLoadPromise=null,_0x295a3b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x429a37=document['getElementById'](MERMAID_SCRIPT_ID);!_0x429a37&&(_0x429a37=document['createElement']('script'),_0x429a37['id']=MERMAID_SCRIPT_ID,_0x429a37['src']=MERMAID_SCRIPT_SRC,_0x429a37['async']=!![],document['head']['appendChild'](_0x429a37));if(window['mermaid']){_0x1a1097();return;}_0x429a37['addEventListener']('load',_0x1a1097,{'once':!![]}),_0x429a37['addEventListener']('error',_0x10d44c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e095f){const _0x1329fc=_0x3e095f['getAttribute']('data-mermaid-source');if(!_0x1329fc)return null;let _0x598e27=_0x1329fc;try{_0x598e27=decodeURIComponent(_0x1329fc);}catch{}return _0x3e095f['textContent']=_0x598e27,_0x3e095f['removeAttribute']('data-processed'),_0x3e095f['removeAttribute']('aria-roledescription'),_0x3e095f['removeAttribute']('role'),_0x3e095f['removeAttribute']('aria-label'),_0x598e27;}function collectMermaidNodes(_0x3d3d8e,_0x103640){if(!(_0x3d3d8e instanceof Element))return;_0x3d3d8e['matches']('.mermaid[data-mermaid-source]')&&_0x103640['add'](_0x3d3d8e),_0x3d3d8e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3c3198=>{_0x103640['add'](_0x3c3198);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x4e277c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x294ff4=>setTimeout(_0x294ff4,0x0);_0x4e277c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x4d3a17=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x4d3a17);});});}function queueMermaidRender(_0x53031b){const _0x327805=new Set();_0x53031b instanceof Document||_0x53031b instanceof DocumentFragment?_0x53031b['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xd0d846=>_0x327805['add'](_0xd0d846)):collectMermaidNodes(_0x53031b,_0x327805);if(_0x327805['size']===0x0)return;_0x327805['forEach'](_0x5a3d0f=>pendingMermaidNodes['add'](_0x5a3d0f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4d4a97=Array['from'](pendingMermaidNodes)['filter'](_0x1de7e5=>_0x1de7e5['isConnected']);pendingMermaidNodes['clear']();if(_0x4d4a97['length']===0x0)return;const _0x474d48=await loadMermaid();if(!_0x474d48)return;configureMermaidInstance();const _0x55e50f=getMermaidTheme();for(const _0x508813 of _0x4d4a97){const _0x1c998c=_0x508813['getAttribute']('data-mermaid-source');if(!_0x1c998c)continue;const _0x5e78f8=_0x508813['getAttribute']('data-processed')==='true';if(_0x5e78f8&&_0x508813['dataset']['mermaidTheme']===_0x55e50f)continue;restoreMermaidSource(_0x508813);try{if(typeof _0x474d48['run']==='function')await _0x474d48['run']({'nodes':[_0x508813]});else typeof _0x474d48['init']==='function'&&_0x474d48['init'](undefined,[_0x508813]);_0x508813['dataset']['mermaidTheme']=_0x55e50f,delete _0x508813['dataset']['mermaidError'];}catch(_0x3b7010){console['error']('Mermaid\x20render\x20failed:',_0x3b7010),restoreMermaidSource(_0x508813),_0x508813['dataset']['mermaidError']='true',delete _0x508813['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1fc439=>{_0x1fc439['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1fc439);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x42a7be=>{_0x42a7be['forEach'](_0x2a376d=>{_0x2a376d['addedNodes']['forEach'](_0x13b3f2=>{_0x13b3f2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x13b3f2);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x16a201){const _0x375e01=new Date(_0x16a201),_0x592e2a=new Date(),_0x45c316=_0x592e2a-_0x375e01,_0x40ba47=Math['floor'](_0x45c316/0x3e8),_0x45bfb7=Math['floor'](_0x40ba47/0x3c),_0x38c6bf=Math['floor'](_0x45bfb7/0x3c),_0x165d09=Math['floor'](_0x38c6bf/0x18);if(_0x40ba47<0x3c)return'now';if(_0x45bfb7<0x3c)return _0x45bfb7+'m\x20ago';if(_0x38c6bf<0x18)return _0x38c6bf+'h\x20ago';return _0x165d09+'d\x20ago';},'getStatusIcon'(_0x5aa154){switch(_0x5aa154){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x21bb62){switch(_0x21bb62){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x3cf3a1,_0x5a214c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dea56={};_0x3dea56['text/plain']=new Blob([_0x3cf3a1],{'type':'text/plain'});_0x5a214c&&(_0x3dea56['text/html']=new Blob([_0x5a214c],{'type':'text/html'}));const _0x569920=new ClipboardItem(_0x3dea56);return await navigator['clipboard']['write']([_0x569920]),!![];}catch(_0x3533f7){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3533f7);}try{const _0x12971c=_0x4ed2c1=>{_0x4ed2c1['preventDefault'](),_0x4ed2c1['clipboardData']['setData']('text/plain',_0x3cf3a1),_0x5a214c&&_0x4ed2c1['clipboardData']['setData']('text/html',_0x5a214c);};document['addEventListener']('copy',_0x12971c);const _0x32d071=document['execCommand']('copy');document['removeEventListener']('copy',_0x12971c);if(_0x32d071)return!![];}catch(_0x4380a7){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4380a7);}try{const _0x55804c=document['createElement']('textarea');_0x55804c['value']=_0x3cf3a1,_0x55804c['style']['position']='fixed',_0x55804c['style']['opacity']='0',_0x55804c['style']['pointerEvents']='none',document['body']['appendChild'](_0x55804c),_0x55804c['select']();const _0x2a7d40=document['execCommand']('copy');return document['body']['removeChild'](_0x55804c),_0x2a7d40;}catch(_0xa0544f){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xa0544f),![];}},'showToast'(_0x356f12,_0x3eed47='info'){const _0x4ac450=getNextToastId(),_0x229211=document['createElement']('div');_0x229211['className']='toast\x20toast-'+_0x3eed47,_0x229211['textContent']=_0x356f12,_0x229211['dataset']['toastId']=_0x4ac450,document['body']['appendChild'](_0x229211);const _0x204c56=_0x3eed47==='error'?0x2710:0xbb8,_0x5c524f=setTimeout(()=>{removeToastById(_0x4ac450);},_0x204c56),_0x35f5f9={'id':_0x4ac450,'el':_0x229211,'timeoutId':_0x5c524f};return registerToast(_0x35f5f9),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x229211['classList']['add']('show');});}),_0x4ac450;},'showError'(_0x31adb3){console['error'](_0x31adb3);const _0x1023a6=typeof _0x31adb3==='string'?_0x31adb3:_0x31adb3['message']||'An\x20error\x20occurred';this['showToast'](_0x1023a6,'error');},'showSuccess'(_0x2566e1){this['showToast'](_0x2566e1,'success');},'capitalize'(_0x1d907b){if(!_0x1d907b)return'';return _0x1d907b['charAt'](0x0)['toUpperCase']()+_0x1d907b['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5b3fad){return escapeHtmlValue(_0x5b3fad);},'ansiToHtml'(_0x5a744b){if(_0x5a744b===null||_0x5a744b===undefined)return'';let _0x531979=this['escapeHtml'](_0x5a744b);const _0x73c867={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x307c98={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x16aa48=0x0;return _0x531979=_0x531979['replace'](/\x1b\[([0-9;]*)m/g,(_0x12b1d6,_0x453d62)=>{if(!_0x453d62||_0x453d62==='0'){const _0x51c4ca='</span>'['repeat'](_0x16aa48);return _0x16aa48=0x0,_0x51c4ca;}const _0x46fe78=_0x453d62['split'](';'),_0x5c917e=[];for(const _0x303869 of _0x46fe78){if(_0x303869==='1')_0x5c917e['push']('font-weight:bold');else{if(_0x303869==='2')_0x5c917e['push']('opacity:0.7');else{if(_0x303869==='3')_0x5c917e['push']('font-style:italic');else{if(_0x303869==='4')_0x5c917e['push']('text-decoration:underline');else{if(_0x303869==='9')_0x5c917e['push']('text-decoration:line-through');else{if(_0x73c867[_0x303869])_0x5c917e['push']('color:'+_0x73c867[_0x303869]);else{if(_0x307c98[_0x303869])_0x5c917e['push']('background-color:'+_0x307c98[_0x303869]);}}}}}}}if(_0x5c917e['length']>0x0)return _0x16aa48++,'<span\x20style=\x22'+_0x5c917e['join'](';')+'\x22>';return'';}),_0x531979+='</span>'['repeat'](_0x16aa48),_0x531979=_0x531979['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2e3033,_0x56be35)=>{if(!_0x56be35||_0x56be35==='0')return'';const _0x28969e=_0x56be35['split'](';'),_0x295e0e=[];for(const _0x81825 of _0x28969e){if(_0x81825==='1')_0x295e0e['push']('font-weight:bold');else{if(_0x73c867[_0x81825])_0x295e0e['push']('color:'+_0x73c867[_0x81825]);else{if(_0x307c98[_0x81825])_0x295e0e['push']('background-color:'+_0x307c98[_0x81825]);}}}if(_0x295e0e['length']>0x0)return'<span\x20style=\x22'+_0x295e0e['join'](';')+'\x22>';return'';}),_0x531979;},'showModal'({title:_0x155b2b,content:_0x34e6db,buttons:buttons=[]}){const _0x1be983='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x155b2b)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x34e6db+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x59a2e8,_0x19a6cc)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59a2e8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x19a6cc+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59a2e8['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x24cace=document['createElement']('div');_0x24cace['id']='utils-modal',_0x24cace['className']='modal',_0x24cace['innerHTML']=_0x1be983,document['body']['appendChild'](_0x24cace);const _0x52a509=document['getElementById']('utils-modal-close');_0x52a509&&_0x52a509['addEventListener']('click',()=>this['hideModal']());const _0x3cd490=_0x24cace['querySelectorAll']('[data-btn-index]');_0x3cd490['forEach'](_0x51982b=>{const _0x512fda=parseInt(_0x51982b['dataset']['btnIndex']);buttons[_0x512fda]?.['onClick']&&_0x51982b['addEventListener']('click',buttons[_0x512fda]['onClick']);});const _0xeccd6a=document['getElementById']('utils-modal-overlay');_0xeccd6a&&_0xeccd6a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x147dd6=document['getElementById']('utils-modal');_0x147dd6&&_0x147dd6['remove']();},'parseKeyValuePairs'(_0x2ccb52){const _0x1d8f26={};if(!_0x2ccb52)return _0x1d8f26;return _0x2ccb52['split'](/\r?\n/)['map'](_0x27169f=>_0x27169f['trim']())['filter'](Boolean)['forEach'](_0x40eb86=>{const _0x946f18=_0x40eb86['indexOf']('=');if(_0x946f18>0x0){const _0x3dd032=_0x40eb86['slice'](0x0,_0x946f18)['trim'](),_0x536b5d=_0x40eb86['slice'](_0x946f18+0x1)['trim']();if(_0x3dd032)_0x1d8f26[_0x3dd032]=_0x536b5d;}}),_0x1d8f26;},'debounce'(_0x276755,_0x53efb9=0xfa){let _0x58c18f=null;return(..._0x4a1974)=>{clearTimeout(_0x58c18f),_0x58c18f=setTimeout(()=>_0x276755['apply'](this,_0x4a1974),_0x53efb9);};},'formatTimestamp'(_0x2eb6be){if(!_0x2eb6be)return'N/A';const _0x41d44e=new Date(_0x2eb6be);return _0x41d44e['toLocaleDateString']()+'\x20'+_0x41d44e['toLocaleTimeString']();},'getQueryParams'(){const _0x5294c4=new URLSearchParams(window['location']['search']),_0x1195b0={};for(const [_0x1f7276,_0x566708]of _0x5294c4){_0x1195b0[_0x1f7276]=_0x566708;}return _0x1195b0;},'formatDuration'(_0x25a114,_0x5b6185){if(!_0x25a114)return'N/A';const _0x26a242=new Date(_0x25a114),_0x1142f1=_0x5b6185?new Date(_0x5b6185):new Date(),_0x1c9cbb=_0x1142f1-_0x26a242;if(_0x1c9cbb<0x0)return'0s';const _0x1e352c=Math['floor'](_0x1c9cbb/0x3e8),_0x809cd4=Math['floor'](_0x1e352c/0x3c),_0x12b841=Math['floor'](_0x809cd4/0x3c),_0x451be6=Math['floor'](_0x12b841/0x18);if(_0x1e352c<0x3c)return _0x1e352c+'s';if(_0x809cd4<0x3c)return _0x809cd4+'m\x20'+_0x1e352c%0x3c+'s';if(_0x12b841<0x18)return _0x12b841+'h\x20'+_0x809cd4%0x3c+'m\x20'+_0x1e352c%0x3c+'s';return _0x451be6+'d\x20'+_0x12b841%0x18+'h\x20'+_0x809cd4%0x3c+'m';},'renderMarkdown'(_0x5e50e8,_0x2882f1={}){if(!_0x5e50e8)return'';_0x5e50e8=this['rewriteAttachmentLinks'](_0x5e50e8,_0x2882f1),_0x5e50e8=this['rewriteColorSyntax'](_0x5e50e8);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5e50e8);}catch(_0x4654b6){return console['error']('Markdown\x20parsing\x20error:',_0x4654b6),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);}},'rewriteAttachmentLinks'(_0x2be6a3,_0x1beaf2={}){const _0x49faec=typeof _0x1beaf2['resolveAttachmentUrl']==='function'?_0x1beaf2['resolveAttachmentUrl']:_0x1beaf2['taskId']?_0x5cda00=>API_BASE+'/tasks/'+_0x1beaf2['taskId']+'/attachments/'+encodeURIComponent(_0x5cda00):null;if(!_0x49faec)return _0x2be6a3;return String(_0x2be6a3)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x535251,_0x38ccf0)=>{const _0x5bd055=String(_0x38ccf0||'')['trim']();if(!_0x5bd055)return _0x535251;let _0x40973b=_0x5bd055;try{_0x40973b=decodeURIComponent(_0x5bd055);}catch{}const _0x543637=_0x49faec(_0x40973b);if(!_0x543637)return _0x535251;return']('+_0x543637+')';});},'rewriteColorSyntax'(_0x24de39){if(!_0x24de39)return _0x24de39;return String(_0x24de39)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4094e4,_0x217377,_0x7615fe)=>{const _0x526bc0=this['rewriteColorSyntax'](_0x7615fe);return'<span\x20style=\x22color:\x20'+_0x217377+'\x22>'+_0x526bc0+'</span>';});},'renderMarkdownFallback'(_0x581d11,_0x348987={}){if(!_0x581d11)return'';_0x581d11=_0x581d11['replace'](/\r\n/g,'\x0a'),_0x581d11=_0x581d11['replace'](/\r/g,'\x0a'),_0x581d11=this['rewriteAttachmentLinks'](_0x581d11,_0x348987);let _0x5e0063=this['escapeHtml'](_0x581d11);return _0x5e0063=_0x5e0063['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5e0063=_0x5e0063['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5e0063=_0x5e0063['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5e0063=_0x5e0063['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5e0063=_0x5e0063['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5e0063=_0x5e0063['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5e0063=_0x5e0063['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5e0063=_0x5e0063['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5e0063=_0x5e0063['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5e0063=_0x5e0063['replace'](/\n\n/g,'</p><p>'),_0x5e0063=_0x5e0063['replace'](/\n/g,'<br>'),'<p>'+_0x5e0063+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5cf9ee=new Uint8Array(0x10);crypto['getRandomValues'](_0x5cf9ee),_0x5cf9ee[0x6]=_0x5cf9ee[0x6]&0xf|0x40,_0x5cf9ee[0x8]=_0x5cf9ee[0x8]&0x3f|0x80;const _0x2a651c=Array['from'](_0x5cf9ee,_0x371916=>_0x371916['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2a651c['slice'](0x0,0x8)+'-'+_0x2a651c['slice'](0x8,0xc)+'-'+_0x2a651c['slice'](0xc,0x10)+'-'+_0x2a651c['slice'](0x10,0x14)+'-'+_0x2a651c['slice'](0x14);}};export class CustomSelect{constructor(_0x3d21eb,_0x5d7aa4={}){this['nativeSelect']=_0x3d21eb,this['options']=_0x5d7aa4,this['isOpen']=![],this['selectedValue']=_0x3d21eb['value']||'',this['searchable']=_0x5d7aa4['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x38ca61=document['createElement']('div');_0x38ca61['className']='custom-select';const _0x169d8a=document['createElement']('div');_0x169d8a['className']='custom-select-trigger',_0x169d8a['setAttribute']('tabindex','0'),_0x169d8a['setAttribute']('role','button'),_0x169d8a['setAttribute']('aria-haspopup','listbox');const _0x73f3aa=document['createElement']('span');_0x73f3aa['className']='custom-select-trigger-text';const _0x1287c7=document['createElement']('span');_0x1287c7['className']='custom-select-arrow',_0x1287c7['textContent']='▼',_0x169d8a['appendChild'](_0x73f3aa),_0x169d8a['appendChild'](_0x1287c7);const _0x423055=document['createElement']('div');_0x423055['className']='custom-select-dropdown',_0x423055['setAttribute']('role','listbox');if(this['searchable']){const _0x39224a=document['createElement']('div');_0x39224a['className']='custom-select-search';const _0x43f5ff=document['createElement']('input');_0x43f5ff['type']='text',_0x43f5ff['className']='custom-select-search-input',_0x43f5ff['placeholder']='Type\x20to\x20search...',_0x43f5ff['setAttribute']('aria-label','Search\x20options'),_0x43f5ff['addEventListener']('input',_0x9df05=>{this['searchQuery']=_0x9df05['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x43f5ff['addEventListener']('keydown',_0x3817b0=>{if(_0x3817b0['key']==='Escape')_0x3817b0['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3817b0['key']==='Enter'){_0x3817b0['preventDefault'](),_0x3817b0['stopPropagation']();const _0x287346=_0x423055['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x287346){const _0x1acc1e=_0x287346['getAttribute']('data-value');this['select'](_0x1acc1e);}}}}),_0x39224a['appendChild'](_0x43f5ff),_0x423055['appendChild'](_0x39224a),this['searchInput']=_0x43f5ff;}const _0x1742de=document['createElement']('div');_0x1742de['className']='custom-select-options',_0x423055['appendChild'](_0x1742de),_0x38ca61['appendChild'](_0x169d8a),_0x38ca61['appendChild'](_0x423055),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x38ca61,this['nativeSelect']),this['wrapper']=_0x38ca61,this['trigger']=_0x169d8a,this['triggerText']=_0x73f3aa,this['dropdown']=_0x423055,this['optionsContainer']=_0x1742de,_0x169d8a['addEventListener']('click',()=>this['toggle']()),_0x169d8a['addEventListener']('keydown',_0x4d5916=>this['handleKeydown'](_0x4d5916)),document['addEventListener']('click',_0x386067=>{!_0x38ca61['contains'](_0x386067['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x44a844=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x44a844['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de64c=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de64c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4406ab=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4406ab['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x52ec88=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x52ec88),this['trigger']['setAttribute']('aria-disabled',_0x52ec88?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x52ec88?'-1':'0'),_0x52ec88&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x351aef=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x39651f=_0x351aef['filter'](_0x261e24=>!_0x261e24['disabled']&&!_0x261e24['hidden']);_0x351aef['forEach']((_0xb2f934,_0x3cf0ce)=>{const _0x188870=document['createElement']('div');_0x188870['className']='custom-select-option',_0x188870['textContent']=_0xb2f934['textContent'],_0x188870['setAttribute']('data-value',_0xb2f934['value']),_0x188870['setAttribute']('data-index',_0x3cf0ce),_0x188870['setAttribute']('role','option'),_0xb2f934['disabled']?_0x188870['classList']['add']('disabled'):_0x188870['addEventListener']('click',()=>this['select'](_0xb2f934['value'])),_0xb2f934['value']===this['selectedValue']&&_0x188870['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x188870),this['allOptions']['push']({'element':_0x188870,'text':_0xb2f934['textContent']['toLowerCase'](),'value':_0xb2f934['value'],'disabled':_0xb2f934['disabled']});});if(this['searchable']&&this['searchInput']){const _0x495e3a=this['searchInput']['parentElement'];_0x39651f['length']>0x3?_0x495e3a['style']['display']='':_0x495e3a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x25addc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x12dac8=>{if(!_0x25addc||_0x12dac8['disabled'])_0x12dac8['element']['style']['display']='';else{const _0x403633=_0x12dac8['text']['includes'](_0x25addc);_0x12dac8['element']['style']['display']=_0x403633?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3824dd){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3824dd,this['nativeSelect']['value']=_0x3824dd;const _0x2edf20=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2edf20),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x578214=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x578214&&(this['triggerText']['textContent']=_0x578214['textContent'],_0x578214['disabled']||_0x578214['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4c62e0=>{_0x4c62e0['getAttribute']('data-value')===this['selectedValue']?_0x4c62e0['classList']['add']('selected'):_0x4c62e0['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0xd928c2=window['getComputedStyle'](this['dropdown']);if(_0xd928c2['position']==='fixed'){const _0x3605c3=this['trigger']['getBoundingClientRect'](),_0xdef1c7=parseInt(_0xd928c2['maxHeight'])||0xc8,_0x12459e=window['innerHeight'],_0xcb444d=_0x12459e-_0x3605c3['bottom'],_0x46f274=_0x3605c3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4d8f82;_0xcb444d<_0xdef1c7&&_0x46f274>_0xcb444d?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x12459e-_0x3605c3['top']+'px',_0x4d8f82=Math['min'](_0xdef1c7,_0x46f274-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3605c3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4d8f82=Math['min'](_0xdef1c7,_0xcb444d-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px');if(this['optionsContainer']){let _0x314f15=_0x4d8f82;if(this['searchInput']){const _0x5f43cf=this['searchInput']['parentElement'];_0x5f43cf&&(_0x314f15-=_0x5f43cf['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x314f15)+'px';}this['dropdown']['style']['left']=_0x3605c3['left']+'px',this['dropdown']['style']['width']=_0x3605c3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5b9953=this['searchInput']['parentElement'];_0x5b9953&&_0x5b9953['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x581759){if(this['nativeSelect']['disabled'])return;if(_0x581759['key']==='Enter'||_0x581759['key']==='\x20')_0x581759['preventDefault'](),this['toggle']();else _0x581759['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x13d5a8='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x13d5a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x43f587=document['getElementById']('confirm-dialog-close'),_0x357bd3=document['getElementById']('confirm-dialog-cancel'),_0x449fb8=document['getElementById']('confirm-dialog-confirm'),_0x1f9517=this['_modal']['querySelector']('.modal-overlay');_0x43f587['addEventListener']('click',()=>this['_resolve'](![])),_0x357bd3['addEventListener']('click',()=>this['_resolve'](![])),_0x449fb8['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f9517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x247888=>{if(_0x247888['key']==='Escape')_0x247888['preventDefault'](),this['_resolve'](![]);else _0x247888['key']==='Enter'&&(_0x247888['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x29a998,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2d1d33=>{this['_resolvePromise']=_0x2d1d33,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x29a998;const _0x45af30=document['getElementById']('confirm-dialog-cancel'),_0x34f2c1=document['getElementById']('confirm-dialog-confirm');_0x45af30['textContent']=cancelText,_0x34f2c1['textContent']=confirmText,_0x34f2c1['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x34f2c1['focus']();});},'_resolve'(_0x1b2a0a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b2a0a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x561d37,_0x1416d4={}){this['container']=_0x561d37,this['options']={'placeholder':_0x1416d4['placeholder']||'Type\x20to\x20search...','maxItems':_0x1416d4['maxItems']||0x64,'loadItems':_0x1416d4['loadItems']||(async()=>[]),'renderItem':_0x1416d4['renderItem']||(_0x22e2f2=>({'primary':String(_0x22e2f2),'secondary':''})),'onSelect':_0x1416d4['onSelect']||(()=>{}),'filterItems':_0x1416d4['filterItems']||null,'getItemValue':_0x1416d4['getItemValue']||(_0x289192=>_0x289192),'sortItems':_0x1416d4['sortItems']||null,'debounceMs':_0x1416d4['debounceMs']||0xc8,'minCharsForSearch':_0x1416d4['minCharsForSearch']||0x0,'emptyMessage':_0x1416d4['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1416d4['loadingMessage']||'Loading...','preload':_0x1416d4['preload']!==![],'searchMode':_0x1416d4['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3506f7=>this['onBlur'](_0x3506f7)),this['input']['addEventListener']('input',_0x100616=>this['onInput'](_0x100616)),this['input']['addEventListener']('keydown',_0x4b7728=>this['onKeydown'](_0x4b7728)),this['clearBtn']['addEventListener']('mousedown',_0x132e6a=>{_0x132e6a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x7e646e=>{_0x7e646e['preventDefault']();}),document['addEventListener']('click',_0x1725fa=>{!this['wrapper']['contains'](_0x1725fa['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x432b4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x432b4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x9196a6){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x26301d){const _0x2b5ff1=_0x26301d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b5ff1);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b5ff1):this['loadAndShow'](_0x2b5ff1);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x47d06f){switch(_0x47d06f['key']){case'ArrowDown':_0x47d06f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x47d06f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x47d06f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x47d06f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2e7ef3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x432356=this['selectedIndex']+_0x2e7ef3;if(_0x432356>=0x0&&_0x432356<this['filteredItems']['length']){this['selectedIndex']=_0x432356,this['updateSelectionHighlight']();const _0x27662a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x27662a[this['selectedIndex']]&&_0x27662a[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1a2976=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1a2976['forEach']((_0x2751c3,_0x26ad97)=>{_0x2751c3['classList']['toggle']('keyboard-selected',_0x26ad97===this['selectedIndex']);});}async['loadAndShow'](_0x2bd452){this['showLoading']();try{const _0x192faf=await this['options']['loadItems'](_0x2bd452);if(this['options']['searchMode']==='server'){let _0x4d96a9=_0x192faf;this['options']['sortItems']&&(_0x4d96a9=this['options']['sortItems']([..._0x192faf]));this['filteredItems']=_0x4d96a9;const _0x449f4e=this['filteredItems']['length']>=this['options']['maxItems'];_0x449f4e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x449f4e),this['open']();}else this['allItems']=_0x192faf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2bd452);}catch(_0x5c601e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5c601e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5283c4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5283c4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xb3dee3=this['filteredItems']['length']>=this['options']['maxItems'];_0xb3dee3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xb3dee3),this['open']();}['renderItems'](_0x24e15c){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x509372,_0x18fd67)=>{const _0x3903b2=document['createElement']('div');_0x3903b2['className']='autocomplete-select-item',_0x3903b2['setAttribute']('role','option'),_0x3903b2['setAttribute']('data-index',_0x18fd67);const _0x464e8b=this['options']['renderItem'](_0x509372);let _0x208bd6='';_0x464e8b['icon']&&(_0x208bd6='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x464e8b['iconClass']||'')+'\x22>'+_0x464e8b['icon']+'</span>'),_0x3903b2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x208bd6+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x464e8b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x464e8b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x464e8b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3903b2['addEventListener']('click',()=>{this['selectItem'](_0x509372);}),_0x3903b2['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x18fd67,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3903b2);}),_0x24e15c?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x1d3e8e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1d3e8e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xda1433){this['selectedItem']=_0xda1433;const _0x3d044a=this['options']['renderItem'](_0xda1433);this['input']['value']=_0x3d044a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xda1433);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x203c10){if(_0x203c10){this['selectedItem']=_0x203c10;const _0x1bc184=this['options']['renderItem'](_0x203c10);this['input']['value']=_0x1bc184['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1ee9cf){this['allItems']=_0x1ee9cf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x55da25){this['input']['placeholder']=_0x55da25;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x15ad7c=null){const _0x396990=document['getElementById']('admin-menu-container'),_0x51ef87=document['getElementById']('admin-menu-btn'),_0x2eaefa=document['getElementById']('admin-menu');if(!_0x396990||!_0x51ef87||!_0x2eaefa)return;try{!_0x15ad7c&&(_0x15ad7c=await API['getCurrentUser']());if(_0x15ad7c){const _0x5b8273=window['Permissions'],_0x31d865=_0x5b8273['hasServerPermission'](_0x15ad7c,'*')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:manage')||_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')||_0x5b8273['hasTeamPermission'](_0x15ad7c,'teams:manage')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:view_details');if(!_0x31d865)return;_0x396990['hidden']=![];if(!_0x5b8273['hasServerPermission'](_0x15ad7c,'*')){const _0x1891fc=_0x2eaefa['querySelectorAll']('.admin-menu-item');_0x1891fc['forEach'](_0x20a2bb=>{const _0xf6c8fc=_0x20a2bb['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c8fc==='Users'&&!_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Skills'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Settings'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Health'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Git\x20History'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Roles'&&(_0x20a2bb['hidden']=!![]);});}_0x51ef87['addEventListener']('click',_0x4ae0fe=>{_0x4ae0fe['stopPropagation']();const _0x55a903=document['getElementById']('actions-menu');if(_0x55a903)_0x55a903['hidden']=!![];_0x2eaefa['hidden']=!_0x2eaefa['hidden'];}),document['addEventListener']('click',_0x40e09b=>{!_0x2eaefa['hidden']&&!_0x51ef87['contains'](_0x40e09b['target'])&&!_0x2eaefa['contains'](_0x40e09b['target'])&&(_0x2eaefa['hidden']=!![]);}),document['addEventListener']('keydown',_0x19dd24=>{_0x19dd24['key']==='Escape'&&!_0x2eaefa['hidden']&&(_0x2eaefa['hidden']=!![]);});const _0x4d6b9f=document['getElementById']('server-health-btn');_0x4d6b9f&&_0x4d6b9f['addEventListener']('click',async()=>{_0x2eaefa['hidden']=!![];const {openServerHealthModal:_0x3ec906}=await import('./server-health.js');_0x3ec906();});}}catch(_0x5cf1b0){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5cf1b0['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|