@profoundlogic/coderflow-server 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -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 _0x2022db=window['location']['pathname'],_0x5db3e9=_0x2022db['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db3e9)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db3e9[0x1]),_0x5db3e9[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x15493f={}){const _0x51e233=new URLSearchParams();_0x15493f['userId']&&_0x51e233['set']('userId',String(_0x15493f['userId']));_0x15493f['automation']&&_0x51e233['set']('automation',String(_0x15493f['automation']));const _0x741c2a=API_BASE+'/tasks/stats'+(_0x51e233['toString']()?'?'+_0x51e233['toString']():''),_0x44fbff=await fetch(_0x741c2a);if(!_0x44fbff['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44fbff['statusText']);return await _0x44fbff['json']();},async 'getTasks'(_0xe2ae97={}){const _0x1397a3=new URLSearchParams();_0xe2ae97['status']&&_0x1397a3['set']('status',String(_0xe2ae97['status']));_0xe2ae97['environment']&&_0x1397a3['set']('environment',String(_0xe2ae97['environment']));_0xe2ae97['automation']&&_0x1397a3['set']('automation',String(_0xe2ae97['automation']));if(_0xe2ae97['include']){const _0x500b2b=Array['isArray'](_0xe2ae97['include'])?_0xe2ae97['include']['join'](','):String(_0xe2ae97['include']);_0x500b2b&&_0x1397a3['set']('include',_0x500b2b);}_0xe2ae97['filter']&&_0x1397a3['set']('filter',String(_0xe2ae97['filter']));_0xe2ae97['page']&&_0x1397a3['set']('page',String(_0xe2ae97['page']));_0xe2ae97['limit']&&_0x1397a3['set']('limit',String(_0xe2ae97['limit']));_0xe2ae97['userId']&&_0x1397a3['set']('userId',String(_0xe2ae97['userId']));_0xe2ae97['search']&&_0x1397a3['set']('search',String(_0xe2ae97['search']));_0xe2ae97['includeChildTasks']&&_0x1397a3['set']('includeChildTasks','true');const _0x44c6b4=API_BASE+'/tasks'+(_0x1397a3['toString']()?'?'+_0x1397a3['toString']():''),_0x1e113a=await fetch(_0x44c6b4);if(!_0x1e113a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x1e113a['statusText']);return await _0x1e113a['json']();},async 'getAutomations'(_0x1b7394={}){const _0x3346b6=new URLSearchParams();_0x1b7394['environment']&&_0x3346b6['set']('environment',String(_0x1b7394['environment']));const _0x2ead9c=await fetch(API_BASE+'/api/automations'+(_0x3346b6['toString']()?'?'+_0x3346b6['toString']():''));if(!_0x2ead9c['ok']){const _0x324d5c=await _0x2ead9c['json']()['catch'](()=>({}));throw new Error(_0x324d5c['message']||_0x324d5c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ead9c['statusText']);}return await _0x2ead9c['json']();},async 'getAutomation'(_0x16ead3){const _0x2e5a5f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16ead3));if(!_0x2e5a5f['ok']){const _0x1abeae=await _0x2e5a5f['json']()['catch'](()=>({}));throw new Error(_0x1abeae['message']||_0x1abeae['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2e5a5f['statusText']);}return await _0x2e5a5f['json']();},async 'createAutomation'(_0x4574aa){const _0x3d7ab0=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4574aa||{})});if(!_0x3d7ab0['ok']){const _0x2d7c5f=await _0x3d7ab0['json']()['catch'](()=>({}));throw new Error(_0x2d7c5f['message']||_0x2d7c5f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3d7ab0['statusText']);}return await _0x3d7ab0['json']();},async 'updateAutomation'(_0x196eae,_0x6a840a){const _0x265c8a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x196eae),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6a840a||{})});if(!_0x265c8a['ok']){const _0x28e61f=await _0x265c8a['json']()['catch'](()=>({}));throw new Error(_0x28e61f['message']||_0x28e61f['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x265c8a['statusText']);}return await _0x265c8a['json']();},async 'deleteAutomation'(_0x20ae26){const _0x179ad7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x20ae26),{'method':'DELETE'});if(!_0x179ad7['ok']){const _0x46c920=await _0x179ad7['json']()['catch'](()=>({}));throw new Error(_0x46c920['message']||_0x46c920['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x179ad7['statusText']);}return await _0x179ad7['json']();},async 'triggerAutomation'(_0x516cb5){const _0x4bbc35=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x516cb5)+'/trigger',{'method':'POST'});if(!_0x4bbc35['ok']){const _0x268fea=await _0x4bbc35['json']()['catch'](()=>({}));throw new Error(_0x268fea['message']||_0x268fea['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4bbc35['statusText']);}return await _0x4bbc35['json']();},async 'setAutomationEnabled'(_0x5a25d1,_0x17cdf5){const _0x25971a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5a25d1)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x17cdf5})});if(!_0x25971a['ok']){const _0x5691d0=await _0x25971a['json']()['catch'](()=>({}));throw new Error(_0x5691d0['message']||_0x5691d0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x25971a['statusText']);}return await _0x25971a['json']();},async 'getAutomationHistory'(_0x26f6e1,_0x269c2b=0x32){const _0x40d3f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x26f6e1)+'/history?limit='+encodeURIComponent(String(_0x269c2b)));if(!_0x40d3f1['ok']){const _0x59a96f=await _0x40d3f1['json']()['catch'](()=>({}));throw new Error(_0x59a96f['message']||_0x59a96f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40d3f1['statusText']);}return await _0x40d3f1['json']();},async 'getTask'(_0x4b8a88,_0x1ca105={}){const _0x6b1a30=new URLSearchParams();if(_0x1ca105['include']){const _0x44719d=Array['isArray'](_0x1ca105['include'])?_0x1ca105['include']['join'](','):String(_0x1ca105['include']);if(_0x44719d)_0x6b1a30['set']('include',_0x44719d);}const _0x4b3e6d=await fetch(API_BASE+'/tasks/'+_0x4b8a88+(_0x6b1a30['toString']()?'?'+_0x6b1a30['toString']():''));if(!_0x4b3e6d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4b3e6d['statusText']);return await _0x4b3e6d['json']();},async 'getTaskResults'(_0x93250){const _0x3eb995=await fetch(API_BASE+'/tasks/'+_0x93250+'/results');if(!_0x3eb995['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x3eb995['statusText']);return await _0x3eb995['json']();},async 'getTaskPatches'(_0x2b0e6f){const _0x55af03=await fetch(API_BASE+'/tasks/'+_0x2b0e6f+'/patches');if(!_0x55af03['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x55af03['statusText']);return await _0x55af03['json']();},async 'getTaskAttachments'(_0x3df4a7){const _0x4e6ddb=await fetch(API_BASE+'/tasks/'+_0x3df4a7+'/attachments');if(!_0x4e6ddb['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4e6ddb['statusText']);return await _0x4e6ddb['json']();},async 'uploadAttachments'(_0x52bb2d,_0x139239){const _0x42f1b2=new FormData();for(const _0x57837a of _0x139239){_0x42f1b2['append']('attachments',_0x57837a);}const _0x226b36=await fetch(API_BASE+'/tasks/'+_0x52bb2d+'/attachments',{'method':'POST','body':_0x42f1b2});if(!_0x226b36['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x226b36['statusText']);return await _0x226b36['json']();},async 'isAINameGenerationAvailable'(){try{const _0x106408=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x106408['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x106408['json']();}catch(_0x57d6ba){return{'available':![],'reason':_0x57d6ba['message']};}},async 'generateTaskName'(_0x2fb0f6){try{const _0x28b645=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fb0f6})});return await _0x28b645['json']();}catch(_0x2a05ec){return{'success':![],'error':_0x2a05ec['message']};}},async 'createTask'(_0x33b8df){let _0x5e3bd5,_0x514ec9={};if(_0x33b8df['files']&&_0x33b8df['files']['length']>0x0){const _0x2a1942=new FormData();for(const [_0x30d59c,_0x3416a3]of Object['entries'](_0x33b8df)){if(_0x30d59c!=='files'){if(_0x3416a3==null)continue;typeof _0x3416a3==='object'?_0x2a1942['append'](_0x30d59c,JSON['stringify'](_0x3416a3)):_0x2a1942['append'](_0x30d59c,String(_0x3416a3));}}for(const _0x7a068d of _0x33b8df['files']){_0x2a1942['append']('attachments',_0x7a068d);}_0x5e3bd5=_0x2a1942;}else _0x514ec9['Content-Type']='application/json',_0x5e3bd5=JSON['stringify'](_0x33b8df);const _0x1d0a86=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x514ec9,'body':_0x5e3bd5});if(!_0x1d0a86['ok']){const _0x4262cf=await _0x1d0a86['json'](),_0x390685=new Error(_0x4262cf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1d0a86['statusText']),{message:_0x6c71fb,..._0x1e6d12}=_0x4262cf;Object['assign'](_0x390685,_0x1e6d12);throw _0x390685;}return await _0x1d0a86['json']();},async 'createTestTask'(_0x127764){const _0x1adc41=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x127764)});if(!_0x1adc41['ok']){const _0x2cae4a=await _0x1adc41['json']();throw new Error(_0x2cae4a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x1adc41['statusText']);}return await _0x1adc41['json']();},async 'createEphemeralTest'(_0x393b96){const _0xdb93b9=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x393b96)});if(!_0xdb93b9['ok']){const _0x1dc3d5=await _0xdb93b9['json']();throw new Error(_0x1dc3d5['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xdb93b9['statusText']);}return await _0xdb93b9['json']();},async 'createDeployTask'(_0x207f7d){const _0x4fc632=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x207f7d)});if(!_0x4fc632['ok']){const _0x4f4bbb=await _0x4fc632['json']();throw new Error(_0x4f4bbb['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4fc632['statusText']);}return await _0x4fc632['json']();},async 'getEnvironments'(){const _0x16f2a4=await fetch(API_BASE+'/environments');if(!_0x16f2a4['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16f2a4['statusText']);return await _0x16f2a4['json']();},async 'getEnvironment'(_0x59eb28){const _0x29e6b3=await fetch(API_BASE+'/environments/'+_0x59eb28);if(!_0x29e6b3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x29e6b3['statusText']);return await _0x29e6b3['json']();},async 'getEnvironmentRepoHistory'(_0x5e02c0,_0x7d8ce0,_0x5dc880={}){if(!_0x5e02c0||!_0x7d8ce0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b138d=new URLSearchParams();if(_0x5dc880['limit'])_0x2b138d['set']('limit',String(_0x5dc880['limit']));if(_0x5dc880['offset'])_0x2b138d['set']('offset',String(_0x5dc880['offset']));if(_0x5dc880['search'])_0x2b138d['set']('search',String(_0x5dc880['search']));if(_0x5dc880['branch'])_0x2b138d['set']('branch',String(_0x5dc880['branch']));const _0x5af68c=API_BASE+'/environments/'+encodeURIComponent(_0x5e02c0)+'/repos/'+encodeURIComponent(_0x7d8ce0)+'/git/history',_0x32d889=await fetch(''+_0x5af68c+(_0x2b138d['toString']()?'?'+_0x2b138d['toString']():''));if(!_0x32d889['ok']){const _0x306749=await _0x32d889['json']()['catch'](()=>({}));throw new Error(_0x306749['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x32d889['statusText']);}return await _0x32d889['json']();},async 'getEnvironmentRepoCommit'(_0x14c5d9,_0x43a691,_0x5e730b){if(!_0x14c5d9||!_0x43a691||!_0x5e730b)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x36ce04=API_BASE+'/environments/'+encodeURIComponent(_0x14c5d9)+'/repos/'+encodeURIComponent(_0x43a691)+'/git/commits/'+encodeURIComponent(_0x5e730b),_0x2f8407=await fetch(_0x36ce04);if(!_0x2f8407['ok']){const _0x587e93=await _0x2f8407['json']()['catch'](()=>({}));throw new Error(_0x587e93['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2f8407['statusText']);}return await _0x2f8407['json']();},async 'getEnvironmentRepoBranches'(_0x2b350a,_0x57c9a8){if(!_0x2b350a||!_0x57c9a8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3db766=API_BASE+'/environments/'+encodeURIComponent(_0x2b350a)+'/repos/'+encodeURIComponent(_0x57c9a8)+'/git/branches',_0x3a197c=await fetch(_0x3db766);if(!_0x3a197c['ok']){const _0x129142=await _0x3a197c['json']()['catch'](()=>({}));throw new Error(_0x129142['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3a197c['statusText']);}return await _0x3a197c['json']();},async 'revertEnvironmentRepoCommit'(_0x21915b,_0x40482f,_0x4841cf,_0x3ec37e={}){if(!_0x21915b||!_0x40482f||!_0x4841cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x951a11=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x21915b)+'/repos/'+encodeURIComponent(_0x40482f)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4841cf,..._0x3ec37e})});if(!_0x951a11['ok']){const _0x53461a=await _0x951a11['json']()['catch'](()=>({}));throw new Error(_0x53461a['message']||_0x53461a['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x951a11['statusText']);}return await _0x951a11['json']();},async 'getTemplates'(_0x2bb59e={}){const _0x46873d=new URLSearchParams();if(_0x2bb59e['include']){const _0x1ad516=Array['isArray'](_0x2bb59e['include'])?_0x2bb59e['include']['join'](','):String(_0x2bb59e['include']);if(_0x1ad516)_0x46873d['set']('include',_0x1ad516);}const _0x2012fc=await fetch(API_BASE+'/templates'+(_0x46873d['toString']()?'?'+_0x46873d['toString']():''));if(!_0x2012fc['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2012fc['statusText']);return await _0x2012fc['json']();},async 'getTemplatesForEnvironment'(_0x3bed55,_0x4527ee={}){if(!_0x3bed55)throw new Error('Environment\x20name\x20is\x20required');const _0x346a54=new URLSearchParams();if(_0x4527ee['include']){const _0x39e9b4=Array['isArray'](_0x4527ee['include'])?_0x4527ee['include']['join'](','):String(_0x4527ee['include']);if(_0x39e9b4)_0x346a54['set']('include',_0x39e9b4);}const _0x4a12e0=await fetch(API_BASE+'/templates/'+_0x3bed55+(_0x346a54['toString']()?'?'+_0x346a54['toString']():''));if(!_0x4a12e0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3bed55+':\x20'+_0x4a12e0['statusText']);return await _0x4a12e0['json']();},async 'getTemplate'(_0x26340d,_0x43111e,_0x4866ff={}){if(!_0x26340d||!_0x43111e)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x3b7d87=new URLSearchParams();if(_0x4866ff['include']){const _0x415de1=Array['isArray'](_0x4866ff['include'])?_0x4866ff['include']['join'](','):String(_0x4866ff['include']);if(_0x415de1)_0x3b7d87['set']('include',_0x415de1);}const _0x258283=await fetch(API_BASE+'/templates/'+_0x26340d+'/'+_0x43111e+(_0x3b7d87['toString']()?'?'+_0x3b7d87['toString']():''));if(!_0x258283['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x258283['statusText']);return await _0x258283['json']();},async 'getTaskLogs'(_0x4b84d9,_0x31944f={}){if(!_0x4b84d9)throw new Error('Task\x20ID\x20is\x20required');const _0x568e95=new URLSearchParams();_0x31944f['tail']&&_0x568e95['set']('tail',String(_0x31944f['tail']));const _0x3ae5fd=await fetch(API_BASE+'/tasks/'+_0x4b84d9+'/logs'+(_0x568e95['toString']()?'?'+_0x568e95['toString']():''));if(!_0x3ae5fd['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3ae5fd['statusText']);return await _0x3ae5fd['text']();},async 'getContainers'(){const _0x1fb940=await fetch(API_BASE+'/containers');if(!_0x1fb940['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1fb940['statusText']);return await _0x1fb940['json']();},async 'getContainer'(_0x5d20f3){const _0x33ab01=await fetch(API_BASE+'/containers/'+_0x5d20f3);if(!_0x33ab01['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33ab01['statusText']);return await _0x33ab01['json']();},async 'startInteractiveContainer'(_0x21b7d8){const _0x55f7c8=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21b7d8)});if(!_0x55f7c8['ok']){const _0x2aec8=await _0x55f7c8['json']()['catch'](()=>({}));throw new Error(_0x2aec8['message']||'Failed\x20to\x20start\x20container:\x20'+_0x55f7c8['statusText']);}return await _0x55f7c8['json']();},async 'stopContainer'(_0x18a5f3){const _0x5ec322=await fetch(API_BASE+'/containers/'+_0x18a5f3,{'method':'DELETE'});if(!_0x5ec322['ok']){const _0xfff1fd=await _0x5ec322['json']()['catch'](()=>({}));throw new Error(_0xfff1fd['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5ec322['statusText']);}return await _0x5ec322['json']();},async 'stopTask'(_0x3bf6f3){if(!_0x3bf6f3)throw new Error('Task\x20ID\x20is\x20required');const _0xa97a91=await fetch(API_BASE+'/tasks/'+_0x3bf6f3+'/stop',{'method':'POST'});if(!_0xa97a91['ok']){const _0x469951=await _0xa97a91['json']()['catch'](()=>({}));throw new Error(_0x469951['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xa97a91['statusText']);}return await _0xa97a91['json']();},async 'interruptTask'(_0x324d39){if(!_0x324d39)throw new Error('Task\x20ID\x20is\x20required');const _0x17587e=await fetch(API_BASE+'/tasks/'+_0x324d39+'/interrupt',{'method':'POST'});if(!_0x17587e['ok']){const _0x100478=await _0x17587e['json']()['catch'](()=>({}));throw new Error(_0x100478['error']||_0x100478['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x17587e['statusText']);}return await _0x17587e['json']();},async 'startTask'(_0x5baa4b){if(!_0x5baa4b)throw new Error('Task\x20ID\x20is\x20required');const _0x397a7e=await fetch(API_BASE+'/tasks/'+_0x5baa4b+'/start',{'method':'POST'});if(!_0x397a7e['ok']){const _0x4b6fa3=await _0x397a7e['json']()['catch'](()=>({}));throw new Error(_0x4b6fa3['error']||'Failed\x20to\x20start\x20task:\x20'+_0x397a7e['statusText']);}return await _0x397a7e['json']();},async 'deleteTask'(_0x117c8d){if(!_0x117c8d)throw new Error('Task\x20ID\x20is\x20required');const _0x23b2dc=await fetch(API_BASE+'/tasks/'+_0x117c8d,{'method':'DELETE'});if(!_0x23b2dc['ok']){const _0x4ebde5=await _0x23b2dc['json']()['catch'](()=>({}));throw new Error(_0x4ebde5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23b2dc['statusText']);}return await _0x23b2dc['json']();},async 'refreshTasksFromDisk'(){const _0xf2fd23=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xf2fd23['ok']){const _0x51ad18=await _0xf2fd23['json']()['catch'](()=>({}));throw new Error(_0x51ad18['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xf2fd23['statusText']);}return await _0xf2fd23['json']();},async 'approveTask'(_0x407aef,_0xc0d64c={}){if(!_0x407aef)throw new Error('Task\x20ID\x20is\x20required');const _0x2367ac={'commit_message':_0xc0d64c['commit_message']||'','pull':_0xc0d64c['pull']??![],'push':_0xc0d64c['push']??![]};_0xc0d64c['new_branch']&&(_0x2367ac['new_branch']=_0xc0d64c['new_branch']);const _0x1539b8=await fetch(API_BASE+'/tasks/'+_0x407aef+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2367ac)});if(!_0x1539b8['ok']){const _0x2b2bfb=await _0x1539b8['json']()['catch'](()=>({}));let _0x1812fa=_0x2b2bfb['error']||_0x2b2bfb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1539b8['statusText'];if(_0x2b2bfb['results']&&Array['isArray'](_0x2b2bfb['results'])){const _0x3d2d01=_0x2b2bfb['results']['filter'](_0x489291=>!_0x489291['success']&&_0x489291['error']);_0x3d2d01['length']>0x0&&(_0x1812fa=_0x3d2d01[0x0]['error']);}throw new Error(_0x1812fa);}return await _0x1539b8['json']();},async 'getPullRequestInfo'(_0xe1e57c){if(!_0xe1e57c)throw new Error('Task\x20ID\x20is\x20required');const _0x8e6aa8=await fetch(API_BASE+'/tasks/'+_0xe1e57c+'/pull-request-info');if(!_0x8e6aa8['ok']){const _0x55e42d=await _0x8e6aa8['json']()['catch'](()=>({}));throw new Error(_0x55e42d['error']||_0x55e42d['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x8e6aa8['statusText']);}return await _0x8e6aa8['json']();},async 'createPullRequests'(_0x7d4388,_0x2d502c){if(!_0x7d4388)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d502c||!Array['isArray'](_0x2d502c))throw new Error('repos\x20array\x20is\x20required');const _0x4297b3=await fetch(API_BASE+'/tasks/'+_0x7d4388+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2d502c})});if(!_0x4297b3['ok']){const _0x734691=await _0x4297b3['json']()['catch'](()=>({}));let _0x137aa9=_0x734691['error']||_0x734691['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4297b3['statusText'];if(_0x734691['results']&&Array['isArray'](_0x734691['results'])){const _0x314658=_0x734691['results']['filter'](_0x445612=>!_0x445612['success']&&_0x445612['error']);_0x314658['length']>0x0&&(_0x137aa9=_0x314658[0x0]['error']);}throw new Error(_0x137aa9);}return await _0x4297b3['json']();},async 'syncRepos'(_0x4c9103){if(!_0x4c9103)throw new Error('Task\x20ID\x20is\x20required');const _0xd1832c=await fetch(API_BASE+'/tasks/'+_0x4c9103+'/sync-repos',{'method':'POST'});if(!_0xd1832c['ok']){const _0x151984=await _0xd1832c['json']()['catch'](()=>({}));throw new Error(_0x151984['error']||_0x151984['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xd1832c['statusText']);}return await _0xd1832c['json']();},async 'getIbmiSyncInfo'(_0x1913e5){if(!_0x1913e5)throw new Error('Task\x20ID\x20is\x20required');const _0x855d7a=await fetch(API_BASE+'/tasks/'+_0x1913e5+'/ibmi-sync-info');if(!_0x855d7a['ok']){const _0xbc6375=await _0x855d7a['json']()['catch'](()=>({}));throw new Error(_0xbc6375['error']||_0xbc6375['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x855d7a['json']();},async 'getSyncFiles'(_0x407aff){if(!_0x407aff)throw new Error('Task\x20ID\x20is\x20required');const _0x88394f=await fetch(API_BASE+'/tasks/'+_0x407aff+'/sync-to-ibmi/files');if(!_0x88394f['ok']){const _0x2e7b1e=await _0x88394f['json']()['catch'](()=>({}));throw new Error(_0x2e7b1e['error']||_0x2e7b1e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x88394f['json']();},async 'syncToIbmi'(_0x2987f5,_0x14dd7a,_0x1e9ffe=null,_0x6587ab=null,_0x38f5a4=null){if(!_0x2987f5)throw new Error('Task\x20ID\x20is\x20required');const _0x5decf5={'library':_0x14dd7a};if(_0x1e9ffe)_0x5decf5['user']=_0x1e9ffe;if(_0x6587ab)_0x5decf5['password']=_0x6587ab;if(_0x38f5a4)_0x5decf5['files']=_0x38f5a4;const _0x58ea32=await fetch(API_BASE+'/tasks/'+_0x2987f5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5decf5)});if(!_0x58ea32['ok']){const _0x57d058=await _0x58ea32['json']()['catch'](()=>({}));throw new Error(_0x57d058['error']||_0x57d058['message']||'Sync\x20failed');}return await _0x58ea32['json']();},async 'getIbmiSyncLog'(_0x2cdbc5){if(!_0x2cdbc5)throw new Error('Task\x20ID\x20is\x20required');const _0x289578=await fetch(API_BASE+'/tasks/'+_0x2cdbc5+'/ibmi-sync-log');if(!_0x289578['ok']){const _0x35e696=await _0x289578['json']()['catch'](()=>({}));throw new Error(_0x35e696['error']||_0x35e696['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x289578['json']();},async 'pullChanges'(_0x24b4fe){if(!_0x24b4fe)throw new Error('Task\x20ID\x20is\x20required');const _0x1cfbc8=await fetch(API_BASE+'/tasks/'+_0x24b4fe+'/pull-changes',{'method':'POST'});if(!_0x1cfbc8['ok']){const _0x5c9e1a=await _0x1cfbc8['json']()['catch'](()=>({}));throw new Error(_0x5c9e1a['error']||_0x5c9e1a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1cfbc8['statusText']);}return await _0x1cfbc8['json']();},async 'readFile'(_0x3c4e3d,_0x380552){if(!_0x3c4e3d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x380552)throw new Error('File\x20path\x20is\x20required');const _0x23dea3=await fetch(API_BASE+'/tasks/'+_0x3c4e3d+'/files?path='+encodeURIComponent(_0x380552));if(!_0x23dea3['ok']){const _0x35b0ae=await _0x23dea3['json']()['catch'](()=>({}));throw new Error(_0x35b0ae['error']||_0x35b0ae['message']||'Failed\x20to\x20read\x20file:\x20'+_0x23dea3['statusText']);}return await _0x23dea3['json']();},'getTaskFileDownloadUrl'(_0x41d56b,_0x39f85a){if(!_0x41d56b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x39f85a)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x41d56b+'/files/download?path='+encodeURIComponent(_0x39f85a);},async 'writeFile'(_0x3e495b,_0x20f8ad,_0x208684){if(!_0x3e495b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20f8ad)throw new Error('File\x20path\x20is\x20required');if(_0x208684===undefined)throw new Error('Content\x20is\x20required');const _0x4c3c77=await fetch(API_BASE+'/tasks/'+_0x3e495b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x20f8ad,'content':_0x208684})});if(!_0x4c3c77['ok']){const _0x2e51fb=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0x2e51fb['error']||_0x2e51fb['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'uploadTaskFiles'(_0x296efd,_0x575cf8,_0x3a165d){if(!_0x296efd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x575cf8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a165d||_0x3a165d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30c7fc=new FormData();_0x30c7fc['append']('targetDir',_0x575cf8);for(const _0x3983f8 of _0x3a165d){_0x30c7fc['append']('files',_0x3983f8,_0x3983f8['name']);}const _0x4bdbe5=await fetch(API_BASE+'/tasks/'+_0x296efd+'/files/upload',{'method':'POST','body':_0x30c7fc});if(!_0x4bdbe5['ok']){const _0x156b81=await _0x4bdbe5['json']()['catch'](()=>({}));throw new Error(_0x156b81['error']||_0x156b81['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4bdbe5['statusText']);}return await _0x4bdbe5['json']();},async 'createDirectory'(_0x96e07c,_0x1d4aad){if(!_0x96e07c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d4aad)throw new Error('Directory\x20path\x20is\x20required');const _0x5887ab=await fetch(API_BASE+'/tasks/'+_0x96e07c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1d4aad})});if(!_0x5887ab['ok']){const _0x485e71=await _0x5887ab['json']()['catch'](()=>({}));throw new Error(_0x485e71['error']||_0x485e71['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x5887ab['statusText']);}return await _0x5887ab['json']();},async 'renamePath'(_0x4ccb58,_0x2cfbea,_0x44e47c){if(!_0x4ccb58)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2cfbea)throw new Error('Source\x20path\x20is\x20required');if(!_0x44e47c)throw new Error('Destination\x20path\x20is\x20required');const _0x2cee47=await fetch(API_BASE+'/tasks/'+_0x4ccb58+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2cfbea,'newPath':_0x44e47c})});if(!_0x2cee47['ok']){const _0x5bf031=await _0x2cee47['json']()['catch'](()=>({}));throw new Error(_0x5bf031['error']||_0x5bf031['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2cee47['statusText']);}return await _0x2cee47['json']();},async 'deleteFile'(_0x222951,_0x2c3956){if(!_0x222951)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c3956)throw new Error('File\x20path\x20is\x20required');const _0x554cd2=await fetch(API_BASE+'/tasks/'+_0x222951+'/files?path='+encodeURIComponent(_0x2c3956),{'method':'DELETE'});if(!_0x554cd2['ok']){const _0x644e7d=await _0x554cd2['json']()['catch'](()=>({}));throw new Error(_0x644e7d['error']||_0x644e7d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x554cd2['statusText']);}return await _0x554cd2['json']();},async 'deleteDirectory'(_0xe6a67d,_0x433037){if(!_0xe6a67d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x433037)throw new Error('Directory\x20path\x20is\x20required');const _0x4075d2=await fetch(API_BASE+'/tasks/'+_0xe6a67d+'/files/directory?path='+encodeURIComponent(_0x433037),{'method':'DELETE'});if(!_0x4075d2['ok']){const _0x2e22ce=await _0x4075d2['json']()['catch'](()=>({}));throw new Error(_0x2e22ce['error']||_0x2e22ce['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4075d2['statusText']);}return await _0x4075d2['json']();},async 'discardFile'(_0x84ceb0,_0x547857,_0x58d94d){if(!_0x84ceb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x547857)throw new Error('File\x20path\x20is\x20required');if(!_0x58d94d)throw new Error('Repository\x20path\x20is\x20required');const _0x3ed396=await fetch(API_BASE+'/tasks/'+_0x84ceb0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x547857,'repoPath':_0x58d94d})});if(!_0x3ed396['ok']){const _0x3fe2ef=await _0x3ed396['json']()['catch'](()=>({}));throw new Error(_0x3fe2ef['error']||_0x3fe2ef['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3ed396['statusText']);}return await _0x3ed396['json']();},async 'followUpTask'(_0x1136d7,_0x22958e={}){if(!_0x1136d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22958e['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x24b461,_0x501da6={};if(_0x22958e['files']&&_0x22958e['files']['length']>0x0){const _0x334d26=new FormData();_0x334d26['append']('instructions',_0x22958e['instructions']);for(const _0x5c5911 of _0x22958e['files']){_0x334d26['append']('attachments',_0x5c5911);}_0x24b461=_0x334d26;}else _0x501da6['Content-Type']='application/json',_0x24b461=JSON['stringify']({'instructions':_0x22958e['instructions']});const _0x5d3a2b=await fetch(API_BASE+'/tasks/'+_0x1136d7+'/follow-up',{'method':'POST','headers':_0x501da6,'body':_0x24b461});if(!_0x5d3a2b['ok']){const _0x3b6c78=await _0x5d3a2b['json']()['catch'](()=>({}));throw new Error(_0x3b6c78['error']||_0x3b6c78['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5d3a2b['statusText']);}return await _0x5d3a2b['json']();},async 'getTaskRewindPoints'(_0x4f1a0a){if(!_0x4f1a0a)throw new Error('Task\x20ID\x20is\x20required');const _0x1f9a4b=await fetch(API_BASE+'/tasks/'+_0x4f1a0a+'/rewind-points');if(!_0x1f9a4b['ok']){const _0x30bdc3=await _0x1f9a4b['json']()['catch'](()=>({}));throw new Error(_0x30bdc3['error']||_0x30bdc3['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1f9a4b['statusText']);}return await _0x1f9a4b['json']();},async 'rewindTask'(_0x1b8cb9,_0x1e200f={}){if(!_0x1b8cb9)throw new Error('Task\x20ID\x20is\x20required');const _0x192883=Number['isInteger'](_0x1e200f['targetFollowUpCount'])?_0x1e200f['targetFollowUpCount']:0x0,_0xf3dc1d={'targetFollowUpCount':_0x192883};typeof _0x1e200f['instructions']==='string'&&_0x1e200f['instructions']['trim']()&&(_0xf3dc1d['instructions']=_0x1e200f['instructions']['trim']());typeof _0x1e200f['rewindFiles']==='boolean'&&(_0xf3dc1d['rewindFiles']=_0x1e200f['rewindFiles']);const _0x9d6e42=await fetch(API_BASE+'/tasks/'+_0x1b8cb9+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf3dc1d)});if(!_0x9d6e42['ok']){const _0x597b45=await _0x9d6e42['json']()['catch'](()=>({}));throw new Error(_0x597b45['error']||_0x597b45['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x9d6e42['statusText']);}return await _0x9d6e42['json']();},async 'login'(_0x3edc29,_0x565fc9){const _0x3cefc6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3edc29,'password':_0x565fc9})});if(!_0x3cefc6['ok']){const _0x2e9bd3=await _0x3cefc6['json']();throw new Error(_0x2e9bd3['message']||'Login\x20failed');}return await _0x3cefc6['json']();},async 'logout'(){const _0x4f7978=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4f7978['ok']){const _0x4f6e9b=await _0x4f7978['json']();throw new Error(_0x4f6e9b['message']||'Logout\x20failed');}return await _0x4f7978['json']();},async 'getCurrentUser'(){const _0x5df60b=await fetch(API_BASE+'/auth/me');if(!_0x5df60b['ok'])throw new Error('Not\x20authenticated');const _0x340eae=await _0x5df60b['json']();return _0x340eae['user'];},async 'getRolesInfo'(){const _0x1f9631=await fetch(API_BASE+'/users/roles');if(!_0x1f9631['ok']){const _0x218b4d=await _0x1f9631['json']();throw new Error(_0x218b4d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1f9631['json']();},async 'getUsers'(){const _0xf7497d=await fetch(API_BASE+'/users');if(!_0xf7497d['ok']){const _0x43464c=await _0xf7497d['json']();throw new Error(_0x43464c['message']||'Failed\x20to\x20get\x20users');}return await _0xf7497d['json']();},async 'getUser'(_0x5add01){const _0x49ef04=await fetch(API_BASE+'/users/'+_0x5add01);if(!_0x49ef04['ok']){const _0x9fba0d=await _0x49ef04['json']();throw new Error(_0x9fba0d['message']||'Failed\x20to\x20get\x20user');}return await _0x49ef04['json']();},async 'createUser'(_0x4e3b5a){const _0x223b43=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3b5a)});if(!_0x223b43['ok']){const _0x4233be=await _0x223b43['json']();throw new Error(_0x4233be['message']||'Failed\x20to\x20create\x20user');}return await _0x223b43['json']();},async 'updateUser'(_0x42be33,_0x23d1d0){const _0x39942d=await fetch(API_BASE+'/users/'+_0x42be33,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23d1d0)});if(!_0x39942d['ok']){const _0x331be5=await _0x39942d['json']();throw new Error(_0x331be5['message']||'Failed\x20to\x20update\x20user');}return await _0x39942d['json']();},async 'deleteUser'(_0x9e6019){const _0x448400=await fetch(API_BASE+'/users/'+_0x9e6019,{'method':'DELETE'});if(!_0x448400['ok']){const _0x584266=await _0x448400['json']();throw new Error(_0x584266['message']||'Failed\x20to\x20delete\x20user');}return await _0x448400['json']();},async 'stopAllContainers'(){const _0x8b6e3f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xa6f530=await _0x8b6e3f['json']()['catch'](()=>({}));if(!_0x8b6e3f['ok'])throw new Error(_0xa6f530['message']||_0xa6f530['error']||'Failed\x20to\x20stop\x20containers');return _0xa6f530;},async 'removeStoppedContainers'(){const _0x5e4891=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x3ba002=await _0x5e4891['json']()['catch'](()=>({}));if(!_0x5e4891['ok'])throw new Error(_0x3ba002['message']||_0x3ba002['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x3ba002;},async 'pruneDockerResources'(){const _0x38265a=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x59ccf7=await _0x38265a['json']()['catch'](()=>({}));if(!_0x38265a['ok'])throw new Error(_0x59ccf7['message']||_0x59ccf7['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x59ccf7;},async 'createPasswordToken'(_0x52b428,_0x23ea30='setup',_0x16c789=![]){const _0x2a69b4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x52b428,'type':_0x23ea30,'sendEmail':_0x16c789})});if(!_0x2a69b4['ok']){const _0x2eafd9=await _0x2a69b4['json']();throw new Error(_0x2eafd9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2a69b4['json']();},async 'getEmailConfig'(){const _0x65dceb=await fetch(API_BASE+'/password/email-config');if(!_0x65dceb['ok']){const _0x4c0621=await _0x65dceb['json']();throw new Error(_0x4c0621['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x65dceb['json']();},async 'updateTaskName'(_0x3bb867,_0x5a9492){const _0x1e6e20=await fetch(API_BASE+'/tasks/'+_0x3bb867,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5a9492})});if(!_0x1e6e20['ok']){const _0x32bb44=await _0x1e6e20['json']();throw new Error(_0x32bb44['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1e6e20['json']();},async 'pinTask'(_0x5d7df7,_0x3fee0e,_0x2d1316=null){if(!_0x5d7df7)throw new Error('Task\x20ID\x20is\x20required');const _0x2ca8fd={'pinned':_0x3fee0e};_0x2d1316&&_0x2d1316['length']>0x0&&(_0x2ca8fd['additionalTaskIds']=_0x2d1316);const _0x1c73b1=await fetch(API_BASE+'/tasks/'+_0x5d7df7+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ca8fd)});if(!_0x1c73b1['ok']){const _0x43b1e5=await _0x1c73b1['json']();throw new Error(_0x43b1e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c73b1['json']();},async 'setTaskWinner'(_0x1a21c5,_0x4aba08,_0x44a9da=[]){if(!_0x1a21c5)throw new Error('Task\x20ID\x20is\x20required');const _0x49d21a=await fetch(API_BASE+'/tasks/'+_0x1a21c5+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4aba08,'siblings':_0x44a9da})});if(!_0x49d21a['ok']){const _0x9cf7b8=await _0x49d21a['json']();throw new Error(_0x9cf7b8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x49d21a['json']();},async 'setTaskLoser'(_0x498bc2,_0x51fdbb){if(!_0x498bc2)throw new Error('Task\x20ID\x20is\x20required');const _0x542cd3=await fetch(API_BASE+'/tasks/'+_0x498bc2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x51fdbb})});if(!_0x542cd3['ok']){const _0x31a7ea=await _0x542cd3['json']();throw new Error(_0x31a7ea['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x542cd3['json']();},async 'createTaskGroup'(_0x162a3c){const _0x2b3910=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162a3c)});if(!_0x2b3910['ok']){const _0x1266bc=await _0x2b3910['json']();throw new Error(_0x1266bc['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x2b3910['json']();},async 'getTaskGroups'(_0x3dc670={}){const _0x4fe512=new URLSearchParams();if(_0x3dc670['userId'])_0x4fe512['set']('userId',String(_0x3dc670['userId']));if(_0x3dc670['status'])_0x4fe512['set']('status',String(_0x3dc670['status']));if(_0x3dc670['limit'])_0x4fe512['set']('limit',String(_0x3dc670['limit']));const _0x70204f=API_BASE+'/tasks/groups'+(_0x4fe512['toString']()?'?'+_0x4fe512['toString']():''),_0x45ca6c=await fetch(_0x70204f);if(!_0x45ca6c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x45ca6c['json']();},async 'getTaskGroup'(_0x429f59){const _0x4d5507=await fetch(API_BASE+'/tasks/groups/'+_0x429f59);if(!_0x4d5507['ok']){const _0x5abe9b=await _0x4d5507['json']();throw new Error(_0x5abe9b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4d5507['json']();},async 'updateTaskGroup'(_0x56cce8,_0x47b7f5,_0x25eea5){const _0x2498c2=await fetch(API_BASE+'/tasks/'+_0x56cce8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x47b7f5,'groupIndex':_0x25eea5})});if(!_0x2498c2['ok']){const _0x836d38=await _0x2498c2['json']();throw new Error(_0x836d38['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2498c2['json']();},async 'removeTaskFromGroup'(_0x13ae3f){return this['updateTaskGroup'](_0x13ae3f,null,null);},async 'deleteTaskGroup'(_0x301653,_0x495b4a=![]){const _0x399c28=_0x495b4a?'?deleteTasks=true':'',_0x282e19=await fetch(API_BASE+'/tasks/groups/'+_0x301653+_0x399c28,{'method':'DELETE'});if(!_0x282e19['ok']){const _0xcfbc99=await _0x282e19['json']();throw new Error(_0xcfbc99['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x57d592,_0x2fc9a2){const _0x1bd14b=await fetch(API_BASE+'/tasks/groups/'+_0x57d592+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2fc9a2})});if(!_0x1bd14b['ok']){const _0x276064=await _0x1bd14b['json']();throw new Error(_0x276064['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1bd14b['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x35f2d7){if(!_0x35f2d7)throw new Error('Task\x20ID\x20is\x20required');const _0x40b9bc=await fetch(API_BASE+'/tasks/'+_0x35f2d7+'/comments');if(!_0x40b9bc['ok']){const _0x2b8905=await _0x40b9bc['json']()['catch'](()=>({}));throw new Error(_0x2b8905['error']||'Failed\x20to\x20get\x20comments');}return await _0x40b9bc['json']();},async 'addComment'(_0x4e2c1d,_0xb67962){if(!_0x4e2c1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb67962)throw new Error('Comment\x20content\x20is\x20required');const _0x29fb0d=await fetch(API_BASE+'/tasks/'+_0x4e2c1d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xb67962})});if(!_0x29fb0d['ok']){const _0x5afb47=await _0x29fb0d['json']()['catch'](()=>({}));throw new Error(_0x5afb47['error']||'Failed\x20to\x20add\x20comment');}return await _0x29fb0d['json']();},async 'updateComment'(_0x98deba,_0x441d67,_0x2273ae){if(!_0x98deba)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441d67)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x2273ae)throw new Error('Comment\x20content\x20is\x20required');const _0x1d892e=await fetch(API_BASE+'/tasks/'+_0x98deba+'/comments/'+_0x441d67,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2273ae})});if(!_0x1d892e['ok']){const _0x4cd2a9=await _0x1d892e['json']()['catch'](()=>({}));throw new Error(_0x4cd2a9['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d892e['json']();},async 'deleteComment'(_0x3a1c42,_0x5ecde4){if(!_0x3a1c42)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ecde4)throw new Error('Comment\x20ID\x20is\x20required');const _0x3a4277=await fetch(API_BASE+'/tasks/'+_0x3a1c42+'/comments/'+_0x5ecde4,{'method':'DELETE'});if(!_0x3a4277['ok']){const _0x2cc968=await _0x3a4277['json']()['catch'](()=>({}));throw new Error(_0x2cc968['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3a4277['json']();},async 'createObjective'(_0x27cff4){const _0x5bf398={'objective':!![],'name':_0x27cff4['name']||'','environment':_0x27cff4['environment']||null,'agents':_0x27cff4['agents']||[],'branches':_0x27cff4['branches']||{},'isPinned':_0x27cff4['isPinned']||![],'parentObjectiveId':_0x27cff4['parentObjectiveId']||null,'env_vars':_0x27cff4['envVars']||{},'parameters':{'instructions':_0x27cff4['instructions']||''},'files':_0x27cff4['files']||[],'jira':_0x27cff4['jira']||null};return this['createTask'](_0x5bf398);},async 'updateObjective'(_0x36a690,_0x4c6ab1,_0x2a2713=[],_0x23b1a2=[]){let _0x59579b,_0x2683bc={};const _0x2187a4={..._0x4c6ab1};_0x23b1a2&&_0x23b1a2['length']>0x0&&(_0x2187a4['removeAttachments']=_0x23b1a2);if(_0x2a2713&&_0x2a2713['length']>0x0){const _0x3fac32=new FormData();for(const [_0x2d0391,_0x14f2ba]of Object['entries'](_0x2187a4)){if(_0x14f2ba==null)continue;typeof _0x14f2ba==='object'?_0x3fac32['append'](_0x2d0391,JSON['stringify'](_0x14f2ba)):_0x3fac32['append'](_0x2d0391,String(_0x14f2ba));}for(const _0x5f568a of _0x2a2713){_0x3fac32['append']('attachments',_0x5f568a);}_0x59579b=_0x3fac32;}else _0x2683bc['Content-Type']='application/json',_0x59579b=JSON['stringify'](_0x2187a4);const _0x4d474d=await fetch(API_BASE+'/tasks/'+_0x36a690,{'method':'PATCH','headers':_0x2683bc,'body':_0x59579b});if(!_0x4d474d['ok']){const _0x858bba=await _0x4d474d['json']();throw new Error(_0x858bba['error']||'Failed\x20to\x20update\x20objective');}return await _0x4d474d['json']();},async 'deleteObjective'(_0x5b05bd){return this['deleteTask'](_0x5b05bd);},async 'launchObjective'(_0x4faae2,_0x213139={}){const _0x1d7040=await fetch(API_BASE+'/tasks/'+_0x4faae2+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x213139)});if(!_0x1d7040['ok']){const _0xb3aa89=await _0x1d7040['json']();throw new Error(_0xb3aa89['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d7040['json']();},async 'getObjectiveAttachments'(_0x19359b){return this['getTaskAttachments'](_0x19359b);},async 'createJudgeTask'({environment:_0x302472,judgeAgent:_0x10e343,groupId:_0x418b1c,taskIds:_0x142b67,judgeCustomInstructions:_0x5b63ef,isPinned:_0x47aa5b}){const _0x4c58c1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x302472,'judgeAgent':_0x10e343,'groupId':_0x418b1c,'taskIds':_0x142b67,'judgeCustomInstructions':_0x5b63ef,'isPinned':_0x47aa5b})});if(!_0x4c58c1['ok']){const _0x7c09e1=await _0x4c58c1['json']();throw new Error(_0x7c09e1['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4c58c1['json']();},async 'getJudgeTasks'(_0x3f0f35){const _0x4774ff=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f0f35));if(!_0x4774ff['ok']){const _0x4c05de=await _0x4774ff['json']();throw new Error(_0x4c05de['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4774ff['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2841cb,_0x2e06bb,_0x183ca6=''){const _0x254bb6=await fetch(API_BASE+'/tasks/'+_0x2841cb+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2e06bb,'customPreamble':_0x183ca6})});if(!_0x254bb6['ok']){const _0x3f7117=await _0x254bb6['json']();throw new Error(_0x3f7117['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x254bb6['json']();},async 'getJiraConfig'(){const _0x531aef=await fetch(API_BASE+'/jira/config');if(!_0x531aef['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x531aef['json']();},async 'getJiraIssue'(_0x4d07ce){const _0x1c5ed3=await fetch(API_BASE+'/jira/issues/'+_0x4d07ce);if(!_0x1c5ed3['ok']){const _0x498643=await _0x1c5ed3['json']()['catch'](()=>({}));throw new Error(_0x498643['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1c5ed3['statusText']);}return await _0x1c5ed3['json']();},async 'searchJiraIssues'(_0x48b873,_0x5234ad=0x14){const _0x4acc1e=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x48b873,'maxResults':_0x5234ad})});if(!_0x4acc1e['ok']){const _0x5ac6af=await _0x4acc1e['json']()['catch'](()=>({}));throw new Error(_0x5ac6af['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x4acc1e['statusText']);}return await _0x4acc1e['json']();},async 'postJiraComment'(_0x311a47,_0x30f330){const _0x371365=await fetch(API_BASE+'/jira/issues/'+_0x311a47+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x30f330})});if(!_0x371365['ok']){const _0x4d69d8=await _0x371365['json']()['catch'](()=>({}));throw new Error(_0x4d69d8['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x371365['statusText']);}return await _0x371365['json']();},async 'getJiraComments'(_0x295bce){const _0x2415db=await fetch(API_BASE+'/jira/issues/'+_0x295bce+'/comments');if(!_0x2415db['ok']){const _0x5ea678=await _0x2415db['json']()['catch'](()=>({}));throw new Error(_0x5ea678['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2415db['statusText']);}return await _0x2415db['json']();},async 'promptParameter'({environment:_0x228656,command:_0x512fbb,parser:parser='json'}){const _0x681078=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x228656,'command':_0x512fbb,'parser':parser})});if(!_0x681078['ok']){const _0x3e9d5e=await _0x681078['json']()['catch'](()=>({}));throw new Error(_0x3e9d5e['message']||_0x3e9d5e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x681078['statusText']);}return await _0x681078['json']();},async 'promptParameterStream'(_0x13eb2d,_0x4cb0ec){const _0x59301a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13eb2d)});if(!_0x59301a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x59301a['statusText']);const _0x281ae2=_0x59301a['body']['getReader'](),_0x24c8fa=new TextDecoder();let _0x448425='';return new Promise((_0x18e116,_0x2813d6)=>{const _0x23243f=async()=>{try{const {done:_0x181b37,value:_0x5747bf}=await _0x281ae2['read']();if(_0x181b37)return;_0x448425+=_0x24c8fa['decode'](_0x5747bf,{'stream':!![]});const _0x1d5746=_0x448425['split']('\x0a\x0a');_0x448425=_0x1d5746['pop']()||'';for(const _0x4562ad of _0x1d5746){if(!_0x4562ad['trim']())continue;const _0x2391c1=_0x4562ad['split']('\x0a');let _0xd99147='message',_0xd18977='';for(const _0x30b990 of _0x2391c1){if(_0x30b990['startsWith']('event:'))_0xd99147=_0x30b990['substring'](0x6)['trim']();else _0x30b990['startsWith']('data:')&&(_0xd18977=_0x30b990['substring'](0x5)['trim']());}if(!_0xd18977)continue;try{const _0xc90548=JSON['parse'](_0xd18977);if(_0xd99147==='progress'&&_0x4cb0ec)_0x4cb0ec(_0xc90548['stage'],_0xc90548['message']);else{if(_0xd99147==='result'){_0x18e116(_0xc90548);return;}else{if(_0xd99147==='error'){let _0x172aa0=_0xc90548['message']||_0xc90548['error']||'Prompt\x20command\x20failed';_0xc90548['rawOutput']&&(_0x172aa0+='\x0a\x0aRaw\x20output:\x0a'+_0xc90548['rawOutput']);_0x2813d6(new Error(_0x172aa0));return;}}}}catch(_0x582232){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x582232),console['error']('Event\x20type:',_0xd99147),console['error']('Event\x20data:',_0xd18977),console['error']('First\x20200\x20chars:',_0xd18977['substring'](0x0,0xc8)),_0x2813d6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x582232['message']+'\x0a\x0aData:\x20'+_0xd18977['substring'](0x0,0x1f4)));return;}}_0x23243f();}catch(_0x1bf04f){_0x2813d6(_0x1bf04f);}};_0x23243f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x33e7a7){const _0x67832=await fetch(''+API_BASE+_0x33e7a7);if(!_0x67832['ok']){const _0x55ddee=await _0x67832['json']()['catch'](()=>({'error':_0x67832['statusText']})),_0xd59556=new Error(_0x55ddee['error']||_0x55ddee['message']||_0x67832['statusText']);if(_0x55ddee['detail']!==undefined)_0xd59556['detail']=_0x55ddee['detail'];throw _0xd59556;}return await _0x67832['json']();},async 'post'(_0x3afda6,_0xbc1797){const _0x473ba7=await fetch(''+API_BASE+_0x3afda6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbc1797)});if(!_0x473ba7['ok']){const _0x4d33aa=await _0x473ba7['json']()['catch'](()=>({'error':_0x473ba7['statusText']})),_0x563148=new Error(_0x4d33aa['error']||_0x4d33aa['message']||_0x473ba7['statusText']);if(_0x4d33aa['detail']!==undefined)_0x563148['detail']=_0x4d33aa['detail'];throw _0x563148;}return await _0x473ba7['json']();},async 'put'(_0x4b07b1,_0x740cb5){const _0x260e00=await fetch(''+API_BASE+_0x4b07b1,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x740cb5)});if(!_0x260e00['ok']){const _0x548708=await _0x260e00['json']()['catch'](()=>({'error':_0x260e00['statusText']})),_0x14b075=new Error(_0x548708['error']||_0x548708['message']||_0x260e00['statusText']);if(_0x548708['detail']!==undefined)_0x14b075['detail']=_0x548708['detail'];throw _0x14b075;}return await _0x260e00['json']();},async 'delete'(_0x5f075e,_0x5aae92){const _0x5eb781={'method':'DELETE'};_0x5aae92&&(_0x5eb781['headers']={'Content-Type':'application/json'},_0x5eb781['body']=JSON['stringify'](_0x5aae92));const _0xa9bf49=await fetch(''+API_BASE+_0x5f075e,_0x5eb781);if(!_0xa9bf49['ok']){const _0xd1e509=await _0xa9bf49['json']()['catch'](()=>({'error':_0xa9bf49['statusText']})),_0x3e745c=new Error(_0xd1e509['error']||_0xd1e509['message']||_0xa9bf49['statusText']);if(_0xd1e509['detail']!==undefined)_0x3e745c['detail']=_0xd1e509['detail'];throw _0x3e745c;}return await _0xa9bf49['json']();},async 'getSkills'(){const _0x938983=await fetch(API_BASE+'/skills');if(!_0x938983['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x938983['statusText']);return await _0x938983['json']();},async 'getSkill'(_0x1b232d){const _0x2dae9b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b232d));if(!_0x2dae9b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2dae9b['statusText']);return await _0x2dae9b['json']();},async 'createSkill'(_0x276c1d){const _0x1a189b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x276c1d)});if(!_0x1a189b['ok']){const _0x5b4792=await _0x1a189b['json']()['catch'](()=>({'error':_0x1a189b['statusText']})),_0x4e5e33=new Error(_0x5b4792['error']||_0x5b4792['message']||_0x1a189b['statusText']);if(_0x5b4792['detail']!==undefined)_0x4e5e33['detail']=_0x5b4792['detail'];throw _0x4e5e33;}return await _0x1a189b['json']();},async 'updateSkill'(_0x57ddec,_0x246a1a){const _0x4a3630=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x57ddec),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x246a1a)});if(!_0x4a3630['ok']){const _0xfb87ba=await _0x4a3630['json']()['catch'](()=>({'error':_0x4a3630['statusText']})),_0x4ffe04=new Error(_0xfb87ba['error']||_0xfb87ba['message']||_0x4a3630['statusText']);if(_0xfb87ba['detail']!==undefined)_0x4ffe04['detail']=_0xfb87ba['detail'];throw _0x4ffe04;}return await _0x4a3630['json']();},async 'deleteSkill'(_0xbfa485){const _0x30300d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xbfa485),{'method':'DELETE'});if(!_0x30300d['ok']){const _0x259a20=await _0x30300d['json']()['catch'](()=>({'error':_0x30300d['statusText']})),_0xce8951=new Error(_0x259a20['error']||_0x259a20['message']||_0x30300d['statusText']);if(_0x259a20['detail']!==undefined)_0xce8951['detail']=_0x259a20['detail'];throw _0xce8951;}return await _0x30300d['json']();},async 'getSkillFile'(_0x4f5857,_0x582897){const _0x381b81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4f5857)+'/files/'+_0x582897);if(!_0x381b81['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x381b81['statusText']);return await _0x381b81['json']();},async 'saveSkillFile'(_0x1f736f,_0x5d8281,_0x434630){const _0x2dbf72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1f736f)+'/files/'+_0x5d8281,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x434630})});if(!_0x2dbf72['ok']){const _0x4db9ed=await _0x2dbf72['json']()['catch'](()=>({'error':_0x2dbf72['statusText']})),_0x170dd1=new Error(_0x4db9ed['error']||_0x4db9ed['message']||_0x2dbf72['statusText']);if(_0x4db9ed['detail']!==undefined)_0x170dd1['detail']=_0x4db9ed['detail'];throw _0x170dd1;}return await _0x2dbf72['json']();},async 'deleteSkillFile'(_0x5f2acb,_0x2ebbd7){const _0x1f5201=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f2acb)+'/files/'+_0x2ebbd7,{'method':'DELETE'});if(!_0x1f5201['ok']){const _0xc03948=await _0x1f5201['json']()['catch'](()=>({'error':_0x1f5201['statusText']})),_0x46c6ec=new Error(_0xc03948['error']||_0xc03948['message']||_0x1f5201['statusText']);if(_0xc03948['detail']!==undefined)_0x46c6ec['detail']=_0xc03948['detail'];throw _0x46c6ec;}return await _0x1f5201['json']();},async 'pullSkills'(){const _0x4aecd0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4aecd0['ok']){const _0x4298bf=await _0x4aecd0['json']()['catch'](()=>({'error':_0x4aecd0['statusText']})),_0x598b70=new Error(_0x4298bf['error']||_0x4298bf['message']||_0x4aecd0['statusText']);if(_0x4298bf['detail']!==undefined)_0x598b70['detail']=_0x4298bf['detail'];throw _0x598b70;}return await _0x4aecd0['json']();},async 'commitSkills'(_0x17ac62,_0x105aa7={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x105aa7,_0x2f1dc4=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x17ac62,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2f1dc4['ok']){const _0x41a62d=await _0x2f1dc4['json']()['catch'](()=>({'error':_0x2f1dc4['statusText']})),_0x525059=new Error(_0x41a62d['error']||_0x41a62d['message']||_0x2f1dc4['statusText']);if(_0x41a62d['detail']!==undefined)_0x525059['detail']=_0x41a62d['detail'];throw _0x525059;}return await _0x2f1dc4['json']();},async 'discardSkillsChanges'(){const _0x107552=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x107552['ok']){const _0x1ca7c9=await _0x107552['json']()['catch'](()=>({'error':_0x107552['statusText']})),_0x4c8756=new Error(_0x1ca7c9['error']||_0x1ca7c9['message']||_0x107552['statusText']);if(_0x1ca7c9['detail']!==undefined)_0x4c8756['detail']=_0x1ca7c9['detail'];throw _0x4c8756;}return await _0x107552['json']();},async 'getSkillCatalog'(){const _0x243248=await fetch(API_BASE+'/external-skills/catalog');if(!_0x243248['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x243248['statusText']);return await _0x243248['json']();},async 'getImportedSkillsRegistry'(){const _0x36087d=await fetch(API_BASE+'/external-skills/registry');if(!_0x36087d['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x36087d['statusText']);return await _0x36087d['json']();},async 'importCatalogSkill'(_0x2a743a){const _0x1d7251=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2a743a})});if(!_0x1d7251['ok']){const _0x577bda=await _0x1d7251['json']()['catch'](()=>({'error':_0x1d7251['statusText']})),_0x4f2785=new Error(_0x577bda['error']||_0x577bda['message']||_0x1d7251['statusText']);if(_0x577bda['detail']!==undefined)_0x4f2785['detail']=_0x577bda['detail'];throw _0x4f2785;}return await _0x1d7251['json']();},async 'importSkillFromGit'(_0x4c3389,_0x9fdfae,_0x3399b6='main',_0x1b7416=null){const _0x1f7b59=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4c3389,'skillPath':_0x9fdfae,'branch':_0x3399b6,'skillId':_0x1b7416})});if(!_0x1f7b59['ok']){const _0x17a00f=await _0x1f7b59['json']()['catch'](()=>({'error':_0x1f7b59['statusText']})),_0x1fe6cd=new Error(_0x17a00f['error']||_0x17a00f['message']||_0x1f7b59['statusText']);if(_0x17a00f['detail']!==undefined)_0x1fe6cd['detail']=_0x17a00f['detail'];throw _0x1fe6cd;}return await _0x1f7b59['json']();},async 'probeMarketplace'(_0x5a89c8,_0x45726c='main'){const _0x192f56=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5a89c8,'branch':_0x45726c})});if(!_0x192f56['ok']){const _0x4fcfbe=await _0x192f56['json']()['catch'](()=>({'error':_0x192f56['statusText']})),_0x5028d0=new Error(_0x4fcfbe['error']||_0x4fcfbe['message']||_0x192f56['statusText']);if(_0x4fcfbe['detail']!==undefined)_0x5028d0['detail']=_0x4fcfbe['detail'];throw _0x5028d0;}return await _0x192f56['json']();},async 'importMarketplaceBundle'(_0x14f744,_0x2feb4d,_0x3d3068,_0x24e9b9=null){const _0x57e06c=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14f744,'branch':_0x2feb4d,'bundleId':_0x3d3068,'selectedSkills':_0x24e9b9})});if(!_0x57e06c['ok']){const _0x502b02=await _0x57e06c['json']()['catch'](()=>({'error':_0x57e06c['statusText']})),_0x1cb7b1=new Error(_0x502b02['error']||_0x502b02['message']||_0x57e06c['statusText']);if(_0x502b02['detail']!==undefined)_0x1cb7b1['detail']=_0x502b02['detail'];throw _0x1cb7b1;}return await _0x57e06c['json']();},async 'importSkillFromFolder'(_0xda63a2,_0x3300d6=null){const _0x5639f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xda63a2,'skillId':_0x3300d6})});if(!_0x5639f7['ok']){const _0x7dc0dd=await _0x5639f7['json']()['catch'](()=>({'error':_0x5639f7['statusText']})),_0x4f7d46=new Error(_0x7dc0dd['error']||_0x7dc0dd['message']||_0x5639f7['statusText']);if(_0x7dc0dd['detail']!==undefined)_0x4f7d46['detail']=_0x7dc0dd['detail'];throw _0x4f7d46;}return await _0x5639f7['json']();},async 'importSkillFromNpm'(_0x3d963d,_0xcc98ba='latest',_0x58e403=null,_0x35af46=null){const _0x3e2d24=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3d963d,'version':_0xcc98ba,'skillId':_0x58e403,'registry':_0x35af46})});if(!_0x3e2d24['ok']){const _0x55c88e=await _0x3e2d24['json']()['catch'](()=>({'error':_0x3e2d24['statusText']})),_0x40b0a8=new Error(_0x55c88e['error']||_0x55c88e['message']||_0x3e2d24['statusText']);if(_0x55c88e['detail']!==undefined)_0x40b0a8['detail']=_0x55c88e['detail'];throw _0x40b0a8;}return await _0x3e2d24['json']();},async 'checkSkillUpdates'(_0x3a32dd){const _0x52f482=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3a32dd)+'/check-updates',{'method':'POST'});if(!_0x52f482['ok']){const _0x2cf308=await _0x52f482['json']()['catch'](()=>({'error':_0x52f482['statusText']})),_0x2d3d36=new Error(_0x2cf308['error']||_0x2cf308['message']||_0x52f482['statusText']);if(_0x2cf308['detail']!==undefined)_0x2d3d36['detail']=_0x2cf308['detail'];throw _0x2d3d36;}return await _0x52f482['json']();},async 'updateExternalSkill'(_0xafc721){const _0x44209d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xafc721)+'/update',{'method':'POST'});if(!_0x44209d['ok']){const _0x2a3a0d=await _0x44209d['json']()['catch'](()=>({'error':_0x44209d['statusText']})),_0x5243a9=new Error(_0x2a3a0d['error']||_0x2a3a0d['message']||_0x44209d['statusText']);if(_0x2a3a0d['detail']!==undefined)_0x5243a9['detail']=_0x2a3a0d['detail'];throw _0x5243a9;}return await _0x44209d['json']();},async 'updateSkillFlags'(_0x6c5183,_0x4b9199){const _0x19a72f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6c5183)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4b9199})});if(!_0x19a72f['ok']){const _0x3f2937=await _0x19a72f['json']()['catch'](()=>({'error':_0x19a72f['statusText']})),_0x1ddf5e=new Error(_0x3f2937['error']||_0x3f2937['message']||_0x19a72f['statusText']);if(_0x3f2937['detail']!==undefined)_0x1ddf5e['detail']=_0x3f2937['detail'];throw _0x1ddf5e;}return await _0x19a72f['json']();},async 'removeFromImportedRegistry'(_0x17f781){const _0x2eb0e3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x17f781)+'/registry',{'method':'DELETE'});if(!_0x2eb0e3['ok']){const _0x1f953f=await _0x2eb0e3['json']()['catch'](()=>({'error':_0x2eb0e3['statusText']})),_0x47f809=new Error(_0x1f953f['error']||_0x1f953f['message']||_0x2eb0e3['statusText']);if(_0x1f953f['detail']!==undefined)_0x47f809['detail']=_0x1f953f['detail'];throw _0x47f809;}return await _0x2eb0e3['json']();},async 'getTeams'(){const _0x22cd45=await fetch(API_BASE+'/teams');if(!_0x22cd45['ok']){const _0x4545ab=await _0x22cd45['json']()['catch'](()=>({'message':_0x22cd45['statusText']}));throw new Error(_0x4545ab['message']||'Failed\x20to\x20get\x20teams');}return await _0x22cd45['json']();},async 'getTeam'(_0x2c3ce3){const _0x167c78=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2c3ce3));if(!_0x167c78['ok']){const _0x3fc8c5=await _0x167c78['json']()['catch'](()=>({'message':_0x167c78['statusText']}));throw new Error(_0x3fc8c5['message']||'Failed\x20to\x20get\x20team');}return await _0x167c78['json']();},async 'createTeam'(_0x24ed46){const _0x489c79=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24ed46)});if(!_0x489c79['ok']){const _0x5d09f3=await _0x489c79['json']()['catch'](()=>({'message':_0x489c79['statusText']}));throw new Error(_0x5d09f3['message']||'Failed\x20to\x20create\x20team');}return await _0x489c79['json']();},async 'updateTeam'(_0x36c4f3,_0x163fa9){const _0x38ade7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x36c4f3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163fa9)});if(!_0x38ade7['ok']){const _0x168902=await _0x38ade7['json']()['catch'](()=>({'message':_0x38ade7['statusText']}));throw new Error(_0x168902['message']||'Failed\x20to\x20update\x20team');}return await _0x38ade7['json']();},async 'deleteTeam'(_0x5bf272){const _0xdbe280=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5bf272),{'method':'DELETE'});if(!_0xdbe280['ok']){const _0x56f7cf=await _0xdbe280['json']()['catch'](()=>({'message':_0xdbe280['statusText']}));throw new Error(_0x56f7cf['message']||'Failed\x20to\x20delete\x20team');}return await _0xdbe280['json']();},async 'addTeamMember'(_0x26db57,_0x3f7c80){const _0x42a88e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x26db57)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f7c80})});if(!_0x42a88e['ok']){const _0x487db4=await _0x42a88e['json']()['catch'](()=>({'message':_0x42a88e['statusText']}));throw new Error(_0x487db4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x42a88e['json']();},async 'removeTeamMember'(_0x226747,_0x85fec1){const _0x2c854f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x226747)+'/members/'+encodeURIComponent(_0x85fec1),{'method':'DELETE'});if(!_0x2c854f['ok']){const _0x36d4d2=await _0x2c854f['json']()['catch'](()=>({'message':_0x2c854f['statusText']}));throw new Error(_0x36d4d2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2c854f['json']();},async 'getBindings'(_0x483a01={}){const _0x50e384=new URLSearchParams();if(_0x483a01['resource_type'])_0x50e384['set']('resource_type',_0x483a01['resource_type']);if(_0x483a01['resource_id'])_0x50e384['set']('resource_id',_0x483a01['resource_id']);if(_0x483a01['subject_type'])_0x50e384['set']('subject_type',_0x483a01['subject_type']);if(_0x483a01['subject_id'])_0x50e384['set']('subject_id',_0x483a01['subject_id']);const _0xb48a16=_0x50e384['toString'](),_0x8fa2f8=await fetch(API_BASE+'/bindings'+(_0xb48a16?'?'+_0xb48a16:''));if(!_0x8fa2f8['ok']){const _0x55f404=await _0x8fa2f8['json']()['catch'](()=>({'message':_0x8fa2f8['statusText']}));throw new Error(_0x55f404['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8fa2f8['json']();},async 'createBinding'(_0x4a625b){const _0x50304b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a625b)});if(!_0x50304b['ok']){const _0x58b335=await _0x50304b['json']()['catch'](()=>({'message':_0x50304b['statusText']}));throw new Error(_0x58b335['message']||'Failed\x20to\x20create\x20binding');}return await _0x50304b['json']();},async 'updateBinding'(_0x33305b,_0x59a9e4){const _0x3cf0cd=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x33305b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59a9e4)});if(!_0x3cf0cd['ok']){const _0x2d8426=await _0x3cf0cd['json']()['catch'](()=>({'message':_0x3cf0cd['statusText']}));throw new Error(_0x2d8426['message']||'Failed\x20to\x20update\x20binding');}return await _0x3cf0cd['json']();},async 'deleteBinding'(_0x465ee2){const _0x3086ac=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x465ee2),{'method':'DELETE'});if(!_0x3086ac['ok']){const _0x1da9c1=await _0x3086ac['json']()['catch'](()=>({'message':_0x3086ac['statusText']}));throw new Error(_0x1da9c1['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3086ac['json']();},async 'getRoleDefinitions'(){const _0x1254d6=await fetch(API_BASE+'/roles');if(!_0x1254d6['ok']){const _0x37311a=await _0x1254d6['json']()['catch'](()=>({'message':_0x1254d6['statusText']}));throw new Error(_0x37311a['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1254d6['json']();},async 'getRoleDefinition'(_0x15cb64){const _0x3e1962=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x15cb64));if(!_0x3e1962['ok']){const _0x4499f8=await _0x3e1962['json']()['catch'](()=>({'message':_0x3e1962['statusText']}));throw new Error(_0x4499f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3e1962['json']();},async 'createRoleDefinition'(_0xd1bfce){const _0x3754ce=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd1bfce)});if(!_0x3754ce['ok']){const _0x527db2=await _0x3754ce['json']()['catch'](()=>({'message':_0x3754ce['statusText']}));throw new Error(_0x527db2['message']||_0x527db2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3754ce['json']();},async 'updateRoleDefinition'(_0x10e5ca,_0x177dd5){const _0x355242=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10e5ca),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177dd5)});if(!_0x355242['ok']){const _0x511225=await _0x355242['json']()['catch'](()=>({'message':_0x355242['statusText']}));throw new Error(_0x511225['message']||_0x511225['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x355242['json']();},async 'deleteRoleDefinition'(_0x63e646){const _0x533281=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x63e646),{'method':'DELETE'});if(!_0x533281['ok']){const _0x5bdc9f=await _0x533281['json']()['catch'](()=>({'message':_0x533281['statusText']}));throw new Error(_0x5bdc9f['message']||_0x5bdc9f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x533281['json']();},async 'getAvailablePermissions'(){const _0x2e0841=await fetch(API_BASE+'/roles/available-permissions');if(!_0x2e0841['ok']){const _0x35854b=await _0x2e0841['json']()['catch'](()=>({'message':_0x2e0841['statusText']}));throw new Error(_0x35854b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x2e0841['json']();},async 'getGitProviderAllowedTeams'(_0x264db8){const _0x27d8f0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x264db8)+'/allowed-teams');if(!_0x27d8f0['ok']){const _0x1bf7c8=await _0x27d8f0['json']()['catch'](()=>({'message':_0x27d8f0['statusText']}));throw new Error(_0x1bf7c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x27d8f0['json']();},async 'setGitProviderAllowedTeams'(_0x4998f3,_0x52bae5){const _0x244732=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4998f3)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x52bae5})});if(!_0x244732['ok']){const _0x57da88=await _0x244732['json']()['catch'](()=>({'message':_0x244732['statusText']}));throw new Error(_0x57da88['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x244732['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 _0x4c2902=toastState['baseBottom'];toastState['toasts']['forEach'](_0xe35c97=>{_0xe35c97['el']['style']['bottom']=_0x4c2902+'px';const _0x4c0110=_0xe35c97['el']['offsetHeight']||toastState['defaultHeight'];_0x4c2902+=_0x4c0110+toastState['gap'];});});}function removeToastById(_0x365ae5){const _0xb4b21b=toastState['toasts']['findIndex'](_0x54515d=>_0x54515d['id']===_0x365ae5);if(_0xb4b21b===-0x1)return;const _0xa9b087=toastState['toasts'][_0xb4b21b];if(_0xa9b087['timeoutId'])clearTimeout(_0xa9b087['timeoutId']);_0xa9b087['el']['classList']['remove']('show'),setTimeout(()=>_0xa9b087['el']['remove'](),0x12c),toastState['toasts']['splice'](_0xb4b21b,0x1),repositionAllToasts();}function registerToast(_0x1cd0b4){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1cd0b4),repositionAllToasts(),_0x1cd0b4['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(_0x1b824e){if(_0x1b824e===null||_0x1b824e===undefined)return'';return String(_0x1b824e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2985b2,_0x1d7728){if(_0x2985b2&&typeof _0x2985b2==='object'&&!Array['isArray'](_0x2985b2))return{'code':typeof _0x2985b2['text']==='string'?_0x2985b2['text']:'','language':typeof _0x2985b2['lang']==='string'?_0x2985b2['lang']:''};return{'code':typeof _0x2985b2==='string'?_0x2985b2:'','language':typeof _0x1d7728==='string'?_0x1d7728:''};}function buildMermaidBlock(_0x1ceffc){const _0x31e826=String(_0x1ceffc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x31e826))+'\x22>'+escapeHtmlValue(_0x31e826)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x46c478=new marked['Renderer'](),_0x1e6556=_0x46c478['code']['bind'](_0x46c478);return _0x46c478['code']=function(_0x351a50,_0x3328a3,..._0x3034ee){const {code:_0x5ecec5,language:_0x449464}=getMarkdownCodeBlockPayload(_0x351a50,_0x3328a3),_0x16508c=String(_0x449464||'')['trim']()['toLowerCase']();if(_0x16508c==='mermaid')return buildMermaidBlock(_0x5ecec5);const _0x3c08db=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x3c08db&&_0x16508c)try{const _0x1fc544=_0x3c08db['getLanguage'](_0x16508c)?_0x16508c:'plaintext',_0x3dc6b2=_0x3c08db['highlight'](_0x5ecec5,{'language':_0x1fc544})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x16508c)+'\x22>'+_0x3dc6b2+'</code></pre>';}catch(_0x1dc94a){console['error']('Syntax\x20highlighting\x20error:',_0x1dc94a);}return _0x1e6556(_0x351a50,_0x3328a3,..._0x3034ee);},sharedMarkedRenderer=_0x46c478,_0x46c478;}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 _0x4a6c92=window['mermaid'];if(!_0x4a6c92||typeof _0x4a6c92['initialize']!=='function')return _0x4a6c92||null;return _0x4a6c92['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4a6c92;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x119e12,_0x39469f)=>{const _0x3ce292=()=>_0x119e12(configureMermaidInstance()),_0x3f6524=()=>{mermaidLoadPromise=null,_0x39469f(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1b92cd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1b92cd&&(_0x1b92cd=document['createElement']('script'),_0x1b92cd['id']=MERMAID_SCRIPT_ID,_0x1b92cd['src']=MERMAID_SCRIPT_SRC,_0x1b92cd['async']=!![],document['head']['appendChild'](_0x1b92cd));if(window['mermaid']){_0x3ce292();return;}_0x1b92cd['addEventListener']('load',_0x3ce292,{'once':!![]}),_0x1b92cd['addEventListener']('error',_0x3f6524,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x11df7a){const _0x4ed22f=_0x11df7a['getAttribute']('data-mermaid-source');if(!_0x4ed22f)return null;let _0xad0cd3=_0x4ed22f;try{_0xad0cd3=decodeURIComponent(_0x4ed22f);}catch{}return _0x11df7a['textContent']=_0xad0cd3,_0x11df7a['removeAttribute']('data-processed'),_0x11df7a['removeAttribute']('aria-roledescription'),_0x11df7a['removeAttribute']('role'),_0x11df7a['removeAttribute']('aria-label'),_0xad0cd3;}function collectMermaidNodes(_0x404ce5,_0x45460a){if(!(_0x404ce5 instanceof Element))return;_0x404ce5['matches']('.mermaid[data-mermaid-source]')&&_0x45460a['add'](_0x404ce5),_0x404ce5['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x272954=>{_0x45460a['add'](_0x272954);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x54bb95=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x170cfe=>setTimeout(_0x170cfe,0x0);_0x54bb95(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xd07517=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xd07517);});});}function queueMermaidRender(_0x14dfad){const _0x9c4461=new Set();_0x14dfad instanceof Document||_0x14dfad instanceof DocumentFragment?_0x14dfad['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x207cae=>_0x9c4461['add'](_0x207cae)):collectMermaidNodes(_0x14dfad,_0x9c4461);if(_0x9c4461['size']===0x0)return;_0x9c4461['forEach'](_0x47085d=>pendingMermaidNodes['add'](_0x47085d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5290a9=Array['from'](pendingMermaidNodes)['filter'](_0x3653a0=>_0x3653a0['isConnected']);pendingMermaidNodes['clear']();if(_0x5290a9['length']===0x0)return;const _0x4c83ba=await loadMermaid();if(!_0x4c83ba)return;configureMermaidInstance();const _0x18124f=getMermaidTheme();for(const _0x1075ac of _0x5290a9){const _0x386d42=_0x1075ac['getAttribute']('data-mermaid-source');if(!_0x386d42)continue;const _0x3b9a7d=_0x1075ac['getAttribute']('data-processed')==='true';if(_0x3b9a7d&&_0x1075ac['dataset']['mermaidTheme']===_0x18124f)continue;restoreMermaidSource(_0x1075ac);try{if(typeof _0x4c83ba['run']==='function')await _0x4c83ba['run']({'nodes':[_0x1075ac]});else typeof _0x4c83ba['init']==='function'&&_0x4c83ba['init'](undefined,[_0x1075ac]);_0x1075ac['dataset']['mermaidTheme']=_0x18124f,delete _0x1075ac['dataset']['mermaidError'];}catch(_0x3e8334){console['error']('Mermaid\x20render\x20failed:',_0x3e8334),restoreMermaidSource(_0x1075ac),_0x1075ac['dataset']['mermaidError']='true',delete _0x1075ac['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13f2a3=>{_0x13f2a3['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x13f2a3);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x51676f=>{_0x51676f['forEach'](_0x255a9d=>{_0x255a9d['addedNodes']['forEach'](_0x43be1e=>{_0x43be1e['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x43be1e);});});}),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'(_0x16336a){const _0x28c4e6=new Date(_0x16336a),_0x41d454=new Date(),_0x6a2b68=_0x41d454-_0x28c4e6,_0x4d2cd2=Math['floor'](_0x6a2b68/0x3e8),_0x3f2c63=Math['floor'](_0x4d2cd2/0x3c),_0x3da884=Math['floor'](_0x3f2c63/0x3c),_0xa2990f=Math['floor'](_0x3da884/0x18);if(_0x4d2cd2<0x3c)return'now';if(_0x3f2c63<0x3c)return _0x3f2c63+'m\x20ago';if(_0x3da884<0x18)return _0x3da884+'h\x20ago';return _0xa2990f+'d\x20ago';},'getStatusIcon'(_0x163a84){switch(_0x163a84){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x14e172){switch(_0x14e172){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'(_0x5becba,_0x1ebce1=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x59353b={};_0x59353b['text/plain']=new Blob([_0x5becba],{'type':'text/plain'});_0x1ebce1&&(_0x59353b['text/html']=new Blob([_0x1ebce1],{'type':'text/html'}));const _0x4b4806=new ClipboardItem(_0x59353b);return await navigator['clipboard']['write']([_0x4b4806]),!![];}catch(_0x1ecb97){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ecb97);}try{const _0x35fc34=_0x3e6de0=>{_0x3e6de0['preventDefault'](),_0x3e6de0['clipboardData']['setData']('text/plain',_0x5becba),_0x1ebce1&&_0x3e6de0['clipboardData']['setData']('text/html',_0x1ebce1);};document['addEventListener']('copy',_0x35fc34);const _0x228e81=document['execCommand']('copy');document['removeEventListener']('copy',_0x35fc34);if(_0x228e81)return!![];}catch(_0x493166){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x493166);}try{const _0x55578b=document['createElement']('textarea');_0x55578b['value']=_0x5becba,_0x55578b['style']['position']='fixed',_0x55578b['style']['opacity']='0',_0x55578b['style']['pointerEvents']='none',document['body']['appendChild'](_0x55578b),_0x55578b['select']();const _0x1ee14e=document['execCommand']('copy');return document['body']['removeChild'](_0x55578b),_0x1ee14e;}catch(_0x426342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x426342),![];}},'showToast'(_0xce16fb,_0x47b95c='info'){const _0x5a27e5=getNextToastId(),_0x5688df=document['createElement']('div');_0x5688df['className']='toast\x20toast-'+_0x47b95c,_0x5688df['textContent']=_0xce16fb,_0x5688df['dataset']['toastId']=_0x5a27e5,document['body']['appendChild'](_0x5688df);const _0x41ff8b=_0x47b95c==='error'?0x2710:0xbb8,_0x126bb3=setTimeout(()=>{removeToastById(_0x5a27e5);},_0x41ff8b),_0x337ce0={'id':_0x5a27e5,'el':_0x5688df,'timeoutId':_0x126bb3};return registerToast(_0x337ce0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5688df['classList']['add']('show');});}),_0x5a27e5;},'showError'(_0x38fb8c){console['error'](_0x38fb8c);const _0x49cfa7=typeof _0x38fb8c==='string'?_0x38fb8c:_0x38fb8c['message']||'An\x20error\x20occurred';this['showToast'](_0x49cfa7,'error');},'showSuccess'(_0x45287d){this['showToast'](_0x45287d,'success');},'capitalize'(_0x4a9345){if(!_0x4a9345)return'';return _0x4a9345['charAt'](0x0)['toUpperCase']()+_0x4a9345['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x9ebc86){return escapeHtmlValue(_0x9ebc86);},'ansiToHtml'(_0x39f09b){if(_0x39f09b===null||_0x39f09b===undefined)return'';let _0x1a9063=this['escapeHtml'](_0x39f09b);const _0x35a5fe={'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'},_0x465707={'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 _0x349b19=0x0;return _0x1a9063=_0x1a9063['replace'](/\x1b\[([0-9;]*)m/g,(_0x16bd4f,_0x5c0c24)=>{if(!_0x5c0c24||_0x5c0c24==='0'){const _0x489f53='</span>'['repeat'](_0x349b19);return _0x349b19=0x0,_0x489f53;}const _0x5a2900=_0x5c0c24['split'](';'),_0x425f48=[];for(const _0x2c4b53 of _0x5a2900){if(_0x2c4b53==='1')_0x425f48['push']('font-weight:bold');else{if(_0x2c4b53==='2')_0x425f48['push']('opacity:0.7');else{if(_0x2c4b53==='3')_0x425f48['push']('font-style:italic');else{if(_0x2c4b53==='4')_0x425f48['push']('text-decoration:underline');else{if(_0x2c4b53==='9')_0x425f48['push']('text-decoration:line-through');else{if(_0x35a5fe[_0x2c4b53])_0x425f48['push']('color:'+_0x35a5fe[_0x2c4b53]);else{if(_0x465707[_0x2c4b53])_0x425f48['push']('background-color:'+_0x465707[_0x2c4b53]);}}}}}}}if(_0x425f48['length']>0x0)return _0x349b19++,'<span\x20style=\x22'+_0x425f48['join'](';')+'\x22>';return'';}),_0x1a9063+='</span>'['repeat'](_0x349b19),_0x1a9063=_0x1a9063['replace'](/\\u001b\[([0-9;]*)m/g,(_0x29d009,_0x1321a1)=>{if(!_0x1321a1||_0x1321a1==='0')return'';const _0x517131=_0x1321a1['split'](';'),_0x4c752c=[];for(const _0x481e49 of _0x517131){if(_0x481e49==='1')_0x4c752c['push']('font-weight:bold');else{if(_0x35a5fe[_0x481e49])_0x4c752c['push']('color:'+_0x35a5fe[_0x481e49]);else{if(_0x465707[_0x481e49])_0x4c752c['push']('background-color:'+_0x465707[_0x481e49]);}}}if(_0x4c752c['length']>0x0)return'<span\x20style=\x22'+_0x4c752c['join'](';')+'\x22>';return'';}),_0x1a9063;},'showModal'({title:_0x4199ad,content:_0x15f00e,buttons:buttons=[]}){const _0x3738f9='\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'](_0x4199ad)+'</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'+_0x15f00e+'\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']((_0x19ce4d,_0xd02056)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x19ce4d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xd02056+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x19ce4d['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',_0x6fc013=document['createElement']('div');_0x6fc013['id']='utils-modal',_0x6fc013['className']='modal',_0x6fc013['innerHTML']=_0x3738f9,document['body']['appendChild'](_0x6fc013);const _0x353689=document['getElementById']('utils-modal-close');_0x353689&&_0x353689['addEventListener']('click',()=>this['hideModal']());const _0x35dd73=_0x6fc013['querySelectorAll']('[data-btn-index]');_0x35dd73['forEach'](_0x5a80f3=>{const _0x4be12b=parseInt(_0x5a80f3['dataset']['btnIndex']);buttons[_0x4be12b]?.['onClick']&&_0x5a80f3['addEventListener']('click',buttons[_0x4be12b]['onClick']);});const _0x445e26=document['getElementById']('utils-modal-overlay');_0x445e26&&_0x445e26['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x333619=document['getElementById']('utils-modal');_0x333619&&_0x333619['remove']();},'parseKeyValuePairs'(_0x1b1de3){const _0x17454d={};if(!_0x1b1de3)return _0x17454d;return _0x1b1de3['split'](/\r?\n/)['map'](_0x54316b=>_0x54316b['trim']())['filter'](Boolean)['forEach'](_0x3d2731=>{const _0x4f31dc=_0x3d2731['indexOf']('=');if(_0x4f31dc>0x0){const _0x3082c1=_0x3d2731['slice'](0x0,_0x4f31dc)['trim'](),_0x37d149=_0x3d2731['slice'](_0x4f31dc+0x1)['trim']();if(_0x3082c1)_0x17454d[_0x3082c1]=_0x37d149;}}),_0x17454d;},'debounce'(_0x3cf860,_0x25fe1a=0xfa){let _0x531729=null;return(..._0x2605d0)=>{clearTimeout(_0x531729),_0x531729=setTimeout(()=>_0x3cf860['apply'](this,_0x2605d0),_0x25fe1a);};},'formatTimestamp'(_0x2f13ea){if(!_0x2f13ea)return'N/A';const _0x28c8c1=new Date(_0x2f13ea);return _0x28c8c1['toLocaleDateString']()+'\x20'+_0x28c8c1['toLocaleTimeString']();},'getQueryParams'(){const _0x191862=new URLSearchParams(window['location']['search']),_0x40f05c={};for(const [_0x510b13,_0x24e2d0]of _0x191862){_0x40f05c[_0x510b13]=_0x24e2d0;}return _0x40f05c;},'formatDuration'(_0x5a08aa,_0x1d7be8){if(!_0x5a08aa)return'N/A';const _0x31d62f=new Date(_0x5a08aa),_0x50aabe=_0x1d7be8?new Date(_0x1d7be8):new Date(),_0x216bea=_0x50aabe-_0x31d62f;if(_0x216bea<0x0)return'0s';const _0x560328=Math['floor'](_0x216bea/0x3e8),_0x5553ab=Math['floor'](_0x560328/0x3c),_0x5572ac=Math['floor'](_0x5553ab/0x3c),_0x581fa4=Math['floor'](_0x5572ac/0x18);if(_0x560328<0x3c)return _0x560328+'s';if(_0x5553ab<0x3c)return _0x5553ab+'m\x20'+_0x560328%0x3c+'s';if(_0x5572ac<0x18)return _0x5572ac+'h\x20'+_0x5553ab%0x3c+'m\x20'+_0x560328%0x3c+'s';return _0x581fa4+'d\x20'+_0x5572ac%0x18+'h\x20'+_0x5553ab%0x3c+'m';},'renderMarkdown'(_0x5a0d07,_0x236ad7={}){if(!_0x5a0d07)return'';_0x5a0d07=this['rewriteAttachmentLinks'](_0x5a0d07,_0x236ad7),_0x5a0d07=this['rewriteColorSyntax'](_0x5a0d07);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5a0d07);}catch(_0x153d30){return console['error']('Markdown\x20parsing\x20error:',_0x153d30),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);}},'rewriteAttachmentLinks'(_0x450913,_0x3f9f99={}){const _0x9159e2=typeof _0x3f9f99['resolveAttachmentUrl']==='function'?_0x3f9f99['resolveAttachmentUrl']:_0x3f9f99['taskId']?_0x31fde8=>API_BASE+'/tasks/'+_0x3f9f99['taskId']+'/attachments/'+encodeURIComponent(_0x31fde8):null;if(!_0x9159e2)return _0x450913;return String(_0x450913)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1c2d94,_0x2e06a9)=>{const _0x11dedf=String(_0x2e06a9||'')['trim']();if(!_0x11dedf)return _0x1c2d94;let _0x1c6b7f=_0x11dedf;try{_0x1c6b7f=decodeURIComponent(_0x11dedf);}catch{}const _0x10cb90=_0x9159e2(_0x1c6b7f);if(!_0x10cb90)return _0x1c2d94;return']('+_0x10cb90+')';});},'rewriteColorSyntax'(_0x42e86a){if(!_0x42e86a)return _0x42e86a;return String(_0x42e86a)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x166b6a,_0x353b06,_0x566358)=>{const _0x424434=this['rewriteColorSyntax'](_0x566358);return'<span\x20style=\x22color:\x20'+_0x353b06+'\x22>'+_0x424434+'</span>';});},'renderMarkdownFallback'(_0x3b1c15,_0x53e05c={}){if(!_0x3b1c15)return'';_0x3b1c15=_0x3b1c15['replace'](/\r\n/g,'\x0a'),_0x3b1c15=_0x3b1c15['replace'](/\r/g,'\x0a'),_0x3b1c15=this['rewriteAttachmentLinks'](_0x3b1c15,_0x53e05c);let _0x4075ff=this['escapeHtml'](_0x3b1c15);return _0x4075ff=_0x4075ff['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4075ff=_0x4075ff['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4075ff=_0x4075ff['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4075ff=_0x4075ff['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4075ff=_0x4075ff['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4075ff=_0x4075ff['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4075ff=_0x4075ff['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4075ff=_0x4075ff['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4075ff=_0x4075ff['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4075ff=_0x4075ff['replace'](/\n\n/g,'</p><p>'),_0x4075ff=_0x4075ff['replace'](/\n/g,'<br>'),'<p>'+_0x4075ff+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x305bbc=new Uint8Array(0x10);crypto['getRandomValues'](_0x305bbc),_0x305bbc[0x6]=_0x305bbc[0x6]&0xf|0x40,_0x305bbc[0x8]=_0x305bbc[0x8]&0x3f|0x80;const _0x210ab6=Array['from'](_0x305bbc,_0x4ed157=>_0x4ed157['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x210ab6['slice'](0x0,0x8)+'-'+_0x210ab6['slice'](0x8,0xc)+'-'+_0x210ab6['slice'](0xc,0x10)+'-'+_0x210ab6['slice'](0x10,0x14)+'-'+_0x210ab6['slice'](0x14);}};export class CustomSelect{constructor(_0x59d31d,_0x4f81f3={}){this['nativeSelect']=_0x59d31d,this['options']=_0x4f81f3,this['isOpen']=![],this['selectedValue']=_0x59d31d['value']||'',this['searchable']=_0x4f81f3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4604f9=document['createElement']('div');_0x4604f9['className']='custom-select';const _0x5198fd=document['createElement']('div');_0x5198fd['className']='custom-select-trigger',_0x5198fd['setAttribute']('tabindex','0'),_0x5198fd['setAttribute']('role','button'),_0x5198fd['setAttribute']('aria-haspopup','listbox');const _0x1805e1=document['createElement']('span');_0x1805e1['className']='custom-select-trigger-text';const _0x74180c=document['createElement']('span');_0x74180c['className']='custom-select-arrow',_0x74180c['textContent']='▼',_0x5198fd['appendChild'](_0x1805e1),_0x5198fd['appendChild'](_0x74180c);const _0x1b8c53=document['createElement']('div');_0x1b8c53['className']='custom-select-dropdown',_0x1b8c53['setAttribute']('role','listbox');if(this['searchable']){const _0x129bf2=document['createElement']('div');_0x129bf2['className']='custom-select-search';const _0x2ef2f0=document['createElement']('input');_0x2ef2f0['type']='text',_0x2ef2f0['className']='custom-select-search-input',_0x2ef2f0['placeholder']='Type\x20to\x20search...',_0x2ef2f0['setAttribute']('aria-label','Search\x20options'),_0x2ef2f0['addEventListener']('input',_0x328b7b=>{this['searchQuery']=_0x328b7b['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2ef2f0['addEventListener']('keydown',_0x18150a=>{if(_0x18150a['key']==='Escape')_0x18150a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x18150a['key']==='Enter'){_0x18150a['preventDefault'](),_0x18150a['stopPropagation']();const _0x2d9640=_0x1b8c53['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2d9640){const _0x2ae8c7=_0x2d9640['getAttribute']('data-value');this['select'](_0x2ae8c7);}}}}),_0x129bf2['appendChild'](_0x2ef2f0),_0x1b8c53['appendChild'](_0x129bf2),this['searchInput']=_0x2ef2f0;}const _0x1ef40b=document['createElement']('div');_0x1ef40b['className']='custom-select-options',_0x1b8c53['appendChild'](_0x1ef40b),_0x4604f9['appendChild'](_0x5198fd),_0x4604f9['appendChild'](_0x1b8c53),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4604f9,this['nativeSelect']),this['wrapper']=_0x4604f9,this['trigger']=_0x5198fd,this['triggerText']=_0x1805e1,this['dropdown']=_0x1b8c53,this['optionsContainer']=_0x1ef40b,_0x5198fd['addEventListener']('click',()=>this['toggle']()),_0x5198fd['addEventListener']('keydown',_0x259e87=>this['handleKeydown'](_0x259e87)),document['addEventListener']('click',_0x72a8d8=>{!_0x4604f9['contains'](_0x72a8d8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x27a59e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x27a59e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b9eea=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b9eea['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3d6805=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3d6805['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x395704=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x395704),this['trigger']['setAttribute']('aria-disabled',_0x395704?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x395704?'-1':'0'),_0x395704&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4b1c6a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bc821=_0x4b1c6a['filter'](_0x42bae6=>!_0x42bae6['disabled']&&!_0x42bae6['hidden']);_0x4b1c6a['forEach']((_0x334362,_0x8cb48)=>{const _0x599e04=document['createElement']('div');_0x599e04['className']='custom-select-option',_0x599e04['textContent']=_0x334362['textContent'],_0x599e04['setAttribute']('data-value',_0x334362['value']),_0x599e04['setAttribute']('data-index',_0x8cb48),_0x599e04['setAttribute']('role','option'),_0x334362['disabled']?_0x599e04['classList']['add']('disabled'):_0x599e04['addEventListener']('click',()=>this['select'](_0x334362['value'])),_0x334362['value']===this['selectedValue']&&_0x599e04['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x599e04),this['allOptions']['push']({'element':_0x599e04,'text':_0x334362['textContent']['toLowerCase'](),'value':_0x334362['value'],'disabled':_0x334362['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3a04bb=this['searchInput']['parentElement'];_0x5bc821['length']>0x3?_0x3a04bb['style']['display']='':_0x3a04bb['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b78c6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x193f4d=>{if(!_0x2b78c6||_0x193f4d['disabled'])_0x193f4d['element']['style']['display']='';else{const _0x264d74=_0x193f4d['text']['includes'](_0x2b78c6);_0x193f4d['element']['style']['display']=_0x264d74?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2ea686){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2ea686,this['nativeSelect']['value']=_0x2ea686;const _0x1ee825=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ee825),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3e4dbb=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3e4dbb&&(this['triggerText']['textContent']=_0x3e4dbb['textContent'],_0x3e4dbb['disabled']||_0x3e4dbb['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x355746=>{_0x355746['getAttribute']('data-value')===this['selectedValue']?_0x355746['classList']['add']('selected'):_0x355746['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 _0x433eb7=window['getComputedStyle'](this['dropdown']);if(_0x433eb7['position']==='fixed'){const _0x17ff82=this['trigger']['getBoundingClientRect'](),_0x17d78e=parseInt(_0x433eb7['maxHeight'])||0xc8,_0xecd5b8=window['innerHeight'],_0x52ad33=_0xecd5b8-_0x17ff82['bottom'],_0xb40a2a=_0x17ff82['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x373d41;_0x52ad33<_0x17d78e&&_0xb40a2a>_0x52ad33?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xecd5b8-_0x17ff82['top']+'px',_0x373d41=Math['min'](_0x17d78e,_0xb40a2a-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x17ff82['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x373d41=Math['min'](_0x17d78e,_0x52ad33-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px');if(this['optionsContainer']){let _0x1b685d=_0x373d41;if(this['searchInput']){const _0x5a56cc=this['searchInput']['parentElement'];_0x5a56cc&&(_0x1b685d-=_0x5a56cc['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1b685d)+'px';}this['dropdown']['style']['left']=_0x17ff82['left']+'px',this['dropdown']['style']['width']=_0x17ff82['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc11c6a=this['searchInput']['parentElement'];_0xc11c6a&&_0xc11c6a['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'](_0x3e7033){if(this['nativeSelect']['disabled'])return;if(_0x3e7033['key']==='Enter'||_0x3e7033['key']==='\x20')_0x3e7033['preventDefault'](),this['toggle']();else _0x3e7033['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x105cff='\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',_0x105cff),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xbab33c=document['getElementById']('confirm-dialog-close'),_0x100286=document['getElementById']('confirm-dialog-cancel'),_0x2df082=document['getElementById']('confirm-dialog-confirm'),_0x3d7b1a=this['_modal']['querySelector']('.modal-overlay');_0xbab33c['addEventListener']('click',()=>this['_resolve'](![])),_0x100286['addEventListener']('click',()=>this['_resolve'](![])),_0x2df082['addEventListener']('click',()=>this['_resolve'](!![])),_0x3d7b1a['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4efbdc=>{if(_0x4efbdc['key']==='Escape')_0x4efbdc['preventDefault'](),this['_resolve'](![]);else _0x4efbdc['key']==='Enter'&&(_0x4efbdc['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4f7642,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2cc41f=>{this['_resolvePromise']=_0x2cc41f,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4f7642;const _0x35f81f=document['getElementById']('confirm-dialog-cancel'),_0x39216f=document['getElementById']('confirm-dialog-confirm');_0x35f81f['textContent']=cancelText,_0x39216f['textContent']=confirmText,_0x39216f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39216f['focus']();});},'_resolve'(_0x60ddd1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x60ddd1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2e6abc,_0x59efdb={}){this['container']=_0x2e6abc,this['options']={'placeholder':_0x59efdb['placeholder']||'Type\x20to\x20search...','maxItems':_0x59efdb['maxItems']||0x64,'loadItems':_0x59efdb['loadItems']||(async()=>[]),'renderItem':_0x59efdb['renderItem']||(_0xaaa199=>({'primary':String(_0xaaa199),'secondary':''})),'onSelect':_0x59efdb['onSelect']||(()=>{}),'filterItems':_0x59efdb['filterItems']||null,'getItemValue':_0x59efdb['getItemValue']||(_0x5d4076=>_0x5d4076),'sortItems':_0x59efdb['sortItems']||null,'debounceMs':_0x59efdb['debounceMs']||0xc8,'minCharsForSearch':_0x59efdb['minCharsForSearch']||0x0,'emptyMessage':_0x59efdb['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x59efdb['loadingMessage']||'Loading...','preload':_0x59efdb['preload']!==![],'searchMode':_0x59efdb['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',_0x3db129=>this['onBlur'](_0x3db129)),this['input']['addEventListener']('input',_0x277092=>this['onInput'](_0x277092)),this['input']['addEventListener']('keydown',_0x35f4c9=>this['onKeydown'](_0x35f4c9)),this['clearBtn']['addEventListener']('mousedown',_0x26d703=>{_0x26d703['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x2cbbbd=>{_0x2cbbbd['preventDefault']();}),document['addEventListener']('click',_0x3b26bb=>{!this['wrapper']['contains'](_0x3b26bb['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(_0x36a937){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x36a937);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x36fef0){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x513189){const _0x1f8034=_0x513189['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1f8034);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1f8034):this['loadAndShow'](_0x1f8034);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1baeed){switch(_0x1baeed['key']){case'ArrowDown':_0x1baeed['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1baeed['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1baeed['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1baeed['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x399d26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1cab46=this['selectedIndex']+_0x399d26;if(_0x1cab46>=0x0&&_0x1cab46<this['filteredItems']['length']){this['selectedIndex']=_0x1cab46,this['updateSelectionHighlight']();const _0x5bebbe=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5bebbe[this['selectedIndex']]&&_0x5bebbe[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5a2350=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5a2350['forEach']((_0x2972c8,_0x2e71bd)=>{_0x2972c8['classList']['toggle']('keyboard-selected',_0x2e71bd===this['selectedIndex']);});}async['loadAndShow'](_0x158f37){this['showLoading']();try{const _0x1151fc=await this['options']['loadItems'](_0x158f37);if(this['options']['searchMode']==='server'){let _0x5f3ce6=_0x1151fc;this['options']['sortItems']&&(_0x5f3ce6=this['options']['sortItems']([..._0x1151fc]));this['filteredItems']=_0x5f3ce6;const _0x2dc858=this['filteredItems']['length']>=this['options']['maxItems'];_0x2dc858&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2dc858),this['open']();}else this['allItems']=_0x1151fc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x158f37);}catch(_0x4c9210){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4c9210),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x57807e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x57807e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x283afd=this['filteredItems']['length']>=this['options']['maxItems'];_0x283afd&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x283afd),this['open']();}['renderItems'](_0x2cf239){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']((_0x2e3af5,_0x5cf34e)=>{const _0x104ff1=document['createElement']('div');_0x104ff1['className']='autocomplete-select-item',_0x104ff1['setAttribute']('role','option'),_0x104ff1['setAttribute']('data-index',_0x5cf34e);const _0x20afd5=this['options']['renderItem'](_0x2e3af5);let _0x1f3144='';_0x20afd5['icon']&&(_0x1f3144='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x20afd5['iconClass']||'')+'\x22>'+_0x20afd5['icon']+'</span>'),_0x104ff1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1f3144+'\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'](_0x20afd5['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x20afd5['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x20afd5['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x104ff1['addEventListener']('click',()=>{this['selectItem'](_0x2e3af5);}),_0x104ff1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x5cf34e,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x104ff1);}),_0x2cf239?(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'](_0x5cee98){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5cee98)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1484f4){this['selectedItem']=_0x1484f4;const _0x1c1a56=this['options']['renderItem'](_0x1484f4);this['input']['value']=_0x1c1a56['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1484f4);}['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'](_0x519307){if(_0x519307){this['selectedItem']=_0x519307;const _0x40795f=this['options']['renderItem'](_0x519307);this['input']['value']=_0x40795f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1cff3c){this['allItems']=_0x1cff3c,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'](_0x31f8c2){this['input']['placeholder']=_0x31f8c2;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3a1d08=null){const _0x236bf1=document['getElementById']('admin-menu-container'),_0x593927=document['getElementById']('admin-menu-btn'),_0x44812e=document['getElementById']('admin-menu');if(!_0x236bf1||!_0x593927||!_0x44812e)return;try{!_0x3a1d08&&(_0x3a1d08=await API['getCurrentUser']());if(_0x3a1d08){const _0x15566a=window['Permissions'],_0x1188fb=_0x15566a['hasServerPermission'](_0x3a1d08,'*')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:manage')||_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')||_0x15566a['hasTeamPermission'](_0x3a1d08,'teams:manage')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:view_details');if(!_0x1188fb)return;_0x236bf1['hidden']=![];if(!_0x15566a['hasServerPermission'](_0x3a1d08,'*')){const _0x4c97a2=_0x44812e['querySelectorAll']('.admin-menu-item');_0x4c97a2['forEach'](_0x7215ae=>{const _0x22a248=_0x7215ae['querySelector']('.option-text')?.['textContent']?.['trim']();_0x22a248==='Users'&&!_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')&&(_0x7215ae['hidden']=!![]),_0x22a248==='Skills'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Settings'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Health'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Git\x20History'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Roles'&&(_0x7215ae['hidden']=!![]);});}_0x593927['addEventListener']('click',_0x3a943a=>{_0x3a943a['stopPropagation']();const _0x595990=document['getElementById']('actions-menu');if(_0x595990)_0x595990['hidden']=!![];_0x44812e['hidden']=!_0x44812e['hidden'];}),document['addEventListener']('click',_0x5ba54c=>{!_0x44812e['hidden']&&!_0x593927['contains'](_0x5ba54c['target'])&&!_0x44812e['contains'](_0x5ba54c['target'])&&(_0x44812e['hidden']=!![]);}),document['addEventListener']('keydown',_0x458c93=>{_0x458c93['key']==='Escape'&&!_0x44812e['hidden']&&(_0x44812e['hidden']=!![]);});const _0xbed42b=document['getElementById']('server-health-btn');_0xbed42b&&_0xbed42b['addEventListener']('click',async()=>{_0x44812e['hidden']=!![];const {openServerHealthModal:_0x5427d3}=await import('./server-health.js');_0x5427d3();});}}catch(_0x52fcf3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52fcf3['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|