@profoundlogic/coderflow-server 0.7.0 → 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/base-image/standard-instructions/ibmi-exploratory-verification.md +2 -0
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/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 _0x2ef9b2=window['location']['pathname'],_0x4ce050=_0x2ef9b2['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x4ce050)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x4ce050[0x1]),_0x4ce050[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x46bdcf={}){const _0x5c4c8b=new URLSearchParams();_0x46bdcf['userId']&&_0x5c4c8b['set']('userId',String(_0x46bdcf['userId']));_0x46bdcf['automation']&&_0x5c4c8b['set']('automation',String(_0x46bdcf['automation']));const _0x254a1e=API_BASE+'/tasks/stats'+(_0x5c4c8b['toString']()?'?'+_0x5c4c8b['toString']():''),_0x3179be=await fetch(_0x254a1e);if(!_0x3179be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3179be['statusText']);return await _0x3179be['json']();},async 'getTasks'(_0x20bf1f={}){const _0x22618e=new URLSearchParams();_0x20bf1f['status']&&_0x22618e['set']('status',String(_0x20bf1f['status']));_0x20bf1f['environment']&&_0x22618e['set']('environment',String(_0x20bf1f['environment']));_0x20bf1f['automation']&&_0x22618e['set']('automation',String(_0x20bf1f['automation']));if(_0x20bf1f['include']){const _0x5cbdd9=Array['isArray'](_0x20bf1f['include'])?_0x20bf1f['include']['join'](','):String(_0x20bf1f['include']);_0x5cbdd9&&_0x22618e['set']('include',_0x5cbdd9);}_0x20bf1f['filter']&&_0x22618e['set']('filter',String(_0x20bf1f['filter']));_0x20bf1f['page']&&_0x22618e['set']('page',String(_0x20bf1f['page']));_0x20bf1f['limit']&&_0x22618e['set']('limit',String(_0x20bf1f['limit']));_0x20bf1f['userId']&&_0x22618e['set']('userId',String(_0x20bf1f['userId']));_0x20bf1f['search']&&_0x22618e['set']('search',String(_0x20bf1f['search']));_0x20bf1f['includeChildTasks']&&_0x22618e['set']('includeChildTasks','true');const _0x137c02=API_BASE+'/tasks'+(_0x22618e['toString']()?'?'+_0x22618e['toString']():''),_0x26c3b8=await fetch(_0x137c02);if(!_0x26c3b8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x26c3b8['statusText']);return await _0x26c3b8['json']();},async 'getAutomations'(_0x1bc77c={}){const _0x150a35=new URLSearchParams();_0x1bc77c['environment']&&_0x150a35['set']('environment',String(_0x1bc77c['environment']));const _0x4c9ea2=await fetch(API_BASE+'/api/automations'+(_0x150a35['toString']()?'?'+_0x150a35['toString']():''));if(!_0x4c9ea2['ok']){const _0x15c602=await _0x4c9ea2['json']()['catch'](()=>({}));throw new Error(_0x15c602['message']||_0x15c602['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c9ea2['statusText']);}return await _0x4c9ea2['json']();},async 'getAutomation'(_0x4ae6b3){const _0x3f52f7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4ae6b3));if(!_0x3f52f7['ok']){const _0x2b8a9a=await _0x3f52f7['json']()['catch'](()=>({}));throw new Error(_0x2b8a9a['message']||_0x2b8a9a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3f52f7['statusText']);}return await _0x3f52f7['json']();},async 'createAutomation'(_0x2e7ee9){const _0x56c569=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e7ee9||{})});if(!_0x56c569['ok']){const _0x48e6d5=await _0x56c569['json']()['catch'](()=>({}));throw new Error(_0x48e6d5['message']||_0x48e6d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x56c569['statusText']);}return await _0x56c569['json']();},async 'updateAutomation'(_0x564cb4,_0x25159e){const _0xf7fc92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x564cb4),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25159e||{})});if(!_0xf7fc92['ok']){const _0x58de9d=await _0xf7fc92['json']()['catch'](()=>({}));throw new Error(_0x58de9d['message']||_0x58de9d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xf7fc92['statusText']);}return await _0xf7fc92['json']();},async 'deleteAutomation'(_0x30ccac){const _0x5758b0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30ccac),{'method':'DELETE'});if(!_0x5758b0['ok']){const _0x495aaa=await _0x5758b0['json']()['catch'](()=>({}));throw new Error(_0x495aaa['message']||_0x495aaa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5758b0['statusText']);}return await _0x5758b0['json']();},async 'triggerAutomation'(_0x351a2e){const _0x2a38d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x351a2e)+'/trigger',{'method':'POST'});if(!_0x2a38d8['ok']){const _0x38ff17=await _0x2a38d8['json']()['catch'](()=>({}));throw new Error(_0x38ff17['message']||_0x38ff17['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x2a38d8['statusText']);}return await _0x2a38d8['json']();},async 'setAutomationEnabled'(_0xe6b035,_0x690c59){const _0x33d057=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xe6b035)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x690c59})});if(!_0x33d057['ok']){const _0x1372b9=await _0x33d057['json']()['catch'](()=>({}));throw new Error(_0x1372b9['message']||_0x1372b9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x33d057['statusText']);}return await _0x33d057['json']();},async 'getAutomationHistory'(_0x31bb2a,_0x300441=0x32){const _0x8fc551=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31bb2a)+'/history?limit='+encodeURIComponent(String(_0x300441)));if(!_0x8fc551['ok']){const _0x2f233d=await _0x8fc551['json']()['catch'](()=>({}));throw new Error(_0x2f233d['message']||_0x2f233d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x8fc551['statusText']);}return await _0x8fc551['json']();},async 'getTask'(_0x1b2310,_0x5b2e0f={}){const _0x2deda8=new URLSearchParams();if(_0x5b2e0f['include']){const _0x1d5b9f=Array['isArray'](_0x5b2e0f['include'])?_0x5b2e0f['include']['join'](','):String(_0x5b2e0f['include']);if(_0x1d5b9f)_0x2deda8['set']('include',_0x1d5b9f);}const _0x4f8e32=await fetch(API_BASE+'/tasks/'+_0x1b2310+(_0x2deda8['toString']()?'?'+_0x2deda8['toString']():''));if(!_0x4f8e32['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4f8e32['statusText']);return await _0x4f8e32['json']();},async 'getTaskResults'(_0x1d836b){const _0x18c7bb=await fetch(API_BASE+'/tasks/'+_0x1d836b+'/results');if(!_0x18c7bb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x18c7bb['statusText']);return await _0x18c7bb['json']();},async 'getTaskPatches'(_0x21b1cd){const _0x2df16f=await fetch(API_BASE+'/tasks/'+_0x21b1cd+'/patches');if(!_0x2df16f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2df16f['statusText']);return await _0x2df16f['json']();},async 'getTaskAttachments'(_0x48cfab){const _0x424d49=await fetch(API_BASE+'/tasks/'+_0x48cfab+'/attachments');if(!_0x424d49['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x424d49['statusText']);return await _0x424d49['json']();},async 'uploadAttachments'(_0x3afbbf,_0x4118e1){const _0x36daf3=new FormData();for(const _0x6ca029 of _0x4118e1){_0x36daf3['append']('attachments',_0x6ca029);}const _0x997fea=await fetch(API_BASE+'/tasks/'+_0x3afbbf+'/attachments',{'method':'POST','body':_0x36daf3});if(!_0x997fea['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x997fea['statusText']);return await _0x997fea['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1eb182=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1eb182['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1eb182['json']();}catch(_0x5239a8){return{'available':![],'reason':_0x5239a8['message']};}},async 'generateTaskName'(_0x129a23){try{const _0x495b5d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x129a23})});return await _0x495b5d['json']();}catch(_0x51abd6){return{'success':![],'error':_0x51abd6['message']};}},async 'createTask'(_0x26ea82){let _0x2415b5,_0x5c6f96={};if(_0x26ea82['files']&&_0x26ea82['files']['length']>0x0){const _0x1711fd=new FormData();for(const [_0x1f08fc,_0x602d1a]of Object['entries'](_0x26ea82)){if(_0x1f08fc!=='files'){if(_0x602d1a==null)continue;typeof _0x602d1a==='object'?_0x1711fd['append'](_0x1f08fc,JSON['stringify'](_0x602d1a)):_0x1711fd['append'](_0x1f08fc,String(_0x602d1a));}}for(const _0x25b31b of _0x26ea82['files']){_0x1711fd['append']('attachments',_0x25b31b);}_0x2415b5=_0x1711fd;}else _0x5c6f96['Content-Type']='application/json',_0x2415b5=JSON['stringify'](_0x26ea82);const _0x33a0ee=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5c6f96,'body':_0x2415b5});if(!_0x33a0ee['ok']){const _0x147e41=await _0x33a0ee['json'](),_0x5d8e53=new Error(_0x147e41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x33a0ee['statusText']),{message:_0x412fcf,..._0x987a0e}=_0x147e41;Object['assign'](_0x5d8e53,_0x987a0e);throw _0x5d8e53;}return await _0x33a0ee['json']();},async 'createTestTask'(_0x4dd912){const _0x496fc1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dd912)});if(!_0x496fc1['ok']){const _0x9f5e88=await _0x496fc1['json']();throw new Error(_0x9f5e88['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x496fc1['statusText']);}return await _0x496fc1['json']();},async 'createEphemeralTest'(_0x52992d){const _0x35229c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52992d)});if(!_0x35229c['ok']){const _0x366796=await _0x35229c['json']();throw new Error(_0x366796['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35229c['statusText']);}return await _0x35229c['json']();},async 'createDeployTask'(_0xf60dcb){const _0x3f89d9=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf60dcb)});if(!_0x3f89d9['ok']){const _0x300f95=await _0x3f89d9['json']();throw new Error(_0x300f95['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3f89d9['statusText']);}return await _0x3f89d9['json']();},async 'getEnvironments'(){const _0xd0fe3f=await fetch(API_BASE+'/environments');if(!_0xd0fe3f['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd0fe3f['statusText']);return await _0xd0fe3f['json']();},async 'getEnvironment'(_0x239c3a){const _0x41a29f=await fetch(API_BASE+'/environments/'+_0x239c3a);if(!_0x41a29f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x41a29f['statusText']);return await _0x41a29f['json']();},async 'getEnvironmentRepoHistory'(_0x572590,_0x155342,_0x2683f0={}){if(!_0x572590||!_0x155342)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x30f955=new URLSearchParams();if(_0x2683f0['limit'])_0x30f955['set']('limit',String(_0x2683f0['limit']));if(_0x2683f0['offset'])_0x30f955['set']('offset',String(_0x2683f0['offset']));if(_0x2683f0['search'])_0x30f955['set']('search',String(_0x2683f0['search']));if(_0x2683f0['branch'])_0x30f955['set']('branch',String(_0x2683f0['branch']));const _0xeb6c43=API_BASE+'/environments/'+encodeURIComponent(_0x572590)+'/repos/'+encodeURIComponent(_0x155342)+'/git/history',_0x33cb43=await fetch(''+_0xeb6c43+(_0x30f955['toString']()?'?'+_0x30f955['toString']():''));if(!_0x33cb43['ok']){const _0x1a161d=await _0x33cb43['json']()['catch'](()=>({}));throw new Error(_0x1a161d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x33cb43['statusText']);}return await _0x33cb43['json']();},async 'getEnvironmentRepoCommit'(_0x48fd41,_0x5ddefa,_0x17c7fc){if(!_0x48fd41||!_0x5ddefa||!_0x17c7fc)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22c594=API_BASE+'/environments/'+encodeURIComponent(_0x48fd41)+'/repos/'+encodeURIComponent(_0x5ddefa)+'/git/commits/'+encodeURIComponent(_0x17c7fc),_0x5ddfae=await fetch(_0x22c594);if(!_0x5ddfae['ok']){const _0x276417=await _0x5ddfae['json']()['catch'](()=>({}));throw new Error(_0x276417['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ddfae['statusText']);}return await _0x5ddfae['json']();},async 'getEnvironmentRepoBranches'(_0x3af94f,_0x4c0c10){if(!_0x3af94f||!_0x4c0c10)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x104641=API_BASE+'/environments/'+encodeURIComponent(_0x3af94f)+'/repos/'+encodeURIComponent(_0x4c0c10)+'/git/branches',_0x106e14=await fetch(_0x104641);if(!_0x106e14['ok']){const _0x1acc7e=await _0x106e14['json']()['catch'](()=>({}));throw new Error(_0x1acc7e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x106e14['statusText']);}return await _0x106e14['json']();},async 'revertEnvironmentRepoCommit'(_0x23ac6e,_0x2a752c,_0x2999f6,_0x284b75={}){if(!_0x23ac6e||!_0x2a752c||!_0x2999f6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4f6543=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x23ac6e)+'/repos/'+encodeURIComponent(_0x2a752c)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2999f6,..._0x284b75})});if(!_0x4f6543['ok']){const _0x1a0043=await _0x4f6543['json']()['catch'](()=>({}));throw new Error(_0x1a0043['message']||_0x1a0043['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4f6543['statusText']);}return await _0x4f6543['json']();},async 'getTemplates'(_0x5bd1dd={}){const _0x3af1e0=new URLSearchParams();if(_0x5bd1dd['include']){const _0x4a4ed9=Array['isArray'](_0x5bd1dd['include'])?_0x5bd1dd['include']['join'](','):String(_0x5bd1dd['include']);if(_0x4a4ed9)_0x3af1e0['set']('include',_0x4a4ed9);}const _0x296c5d=await fetch(API_BASE+'/templates'+(_0x3af1e0['toString']()?'?'+_0x3af1e0['toString']():''));if(!_0x296c5d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x296c5d['statusText']);return await _0x296c5d['json']();},async 'getTemplatesForEnvironment'(_0x45d78d,_0x3f3170={}){if(!_0x45d78d)throw new Error('Environment\x20name\x20is\x20required');const _0x3b923e=new URLSearchParams();if(_0x3f3170['include']){const _0x18bfa1=Array['isArray'](_0x3f3170['include'])?_0x3f3170['include']['join'](','):String(_0x3f3170['include']);if(_0x18bfa1)_0x3b923e['set']('include',_0x18bfa1);}const _0x22d542=await fetch(API_BASE+'/templates/'+_0x45d78d+(_0x3b923e['toString']()?'?'+_0x3b923e['toString']():''));if(!_0x22d542['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45d78d+':\x20'+_0x22d542['statusText']);return await _0x22d542['json']();},async 'getTemplate'(_0x27876e,_0x4374e5,_0xc82f9={}){if(!_0x27876e||!_0x4374e5)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1b462a=new URLSearchParams();if(_0xc82f9['include']){const _0x522470=Array['isArray'](_0xc82f9['include'])?_0xc82f9['include']['join'](','):String(_0xc82f9['include']);if(_0x522470)_0x1b462a['set']('include',_0x522470);}const _0x19a08f=await fetch(API_BASE+'/templates/'+_0x27876e+'/'+_0x4374e5+(_0x1b462a['toString']()?'?'+_0x1b462a['toString']():''));if(!_0x19a08f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x19a08f['statusText']);return await _0x19a08f['json']();},async 'getTaskLogs'(_0x57c129,_0x2dc770={}){if(!_0x57c129)throw new Error('Task\x20ID\x20is\x20required');const _0x2d6bbb=new URLSearchParams();_0x2dc770['tail']&&_0x2d6bbb['set']('tail',String(_0x2dc770['tail']));const _0x2a1258=await fetch(API_BASE+'/tasks/'+_0x57c129+'/logs'+(_0x2d6bbb['toString']()?'?'+_0x2d6bbb['toString']():''));if(!_0x2a1258['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1258['statusText']);return await _0x2a1258['text']();},async 'getContainers'(){const _0x2ccd42=await fetch(API_BASE+'/containers');if(!_0x2ccd42['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ccd42['statusText']);return await _0x2ccd42['json']();},async 'getContainer'(_0x2f2754){const _0x1053f0=await fetch(API_BASE+'/containers/'+_0x2f2754);if(!_0x1053f0['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1053f0['statusText']);return await _0x1053f0['json']();},async 'startInteractiveContainer'(_0x39f7bc){const _0x56d396=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39f7bc)});if(!_0x56d396['ok']){const _0x2ad9b5=await _0x56d396['json']()['catch'](()=>({}));throw new Error(_0x2ad9b5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x56d396['statusText']);}return await _0x56d396['json']();},async 'stopContainer'(_0x12bb3a){const _0x2582ff=await fetch(API_BASE+'/containers/'+_0x12bb3a,{'method':'DELETE'});if(!_0x2582ff['ok']){const _0x500ea0=await _0x2582ff['json']()['catch'](()=>({}));throw new Error(_0x500ea0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2582ff['statusText']);}return await _0x2582ff['json']();},async 'stopTask'(_0x1fea49){if(!_0x1fea49)throw new Error('Task\x20ID\x20is\x20required');const _0x4b905c=await fetch(API_BASE+'/tasks/'+_0x1fea49+'/stop',{'method':'POST'});if(!_0x4b905c['ok']){const _0x23b35b=await _0x4b905c['json']()['catch'](()=>({}));throw new Error(_0x23b35b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4b905c['statusText']);}return await _0x4b905c['json']();},async 'interruptTask'(_0xbdc141){if(!_0xbdc141)throw new Error('Task\x20ID\x20is\x20required');const _0x50a040=await fetch(API_BASE+'/tasks/'+_0xbdc141+'/interrupt',{'method':'POST'});if(!_0x50a040['ok']){const _0x52db41=await _0x50a040['json']()['catch'](()=>({}));throw new Error(_0x52db41['error']||_0x52db41['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x50a040['statusText']);}return await _0x50a040['json']();},async 'startTask'(_0x5e0c2d){if(!_0x5e0c2d)throw new Error('Task\x20ID\x20is\x20required');const _0x43fa7c=await fetch(API_BASE+'/tasks/'+_0x5e0c2d+'/start',{'method':'POST'});if(!_0x43fa7c['ok']){const _0x91b938=await _0x43fa7c['json']()['catch'](()=>({}));throw new Error(_0x91b938['error']||'Failed\x20to\x20start\x20task:\x20'+_0x43fa7c['statusText']);}return await _0x43fa7c['json']();},async 'deleteTask'(_0x4bc60b){if(!_0x4bc60b)throw new Error('Task\x20ID\x20is\x20required');const _0xb78bd9=await fetch(API_BASE+'/tasks/'+_0x4bc60b,{'method':'DELETE'});if(!_0xb78bd9['ok']){const _0x571849=await _0xb78bd9['json']()['catch'](()=>({}));throw new Error(_0x571849['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xb78bd9['statusText']);}return await _0xb78bd9['json']();},async 'refreshTasksFromDisk'(){const _0x242317=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x242317['ok']){const _0x4c3359=await _0x242317['json']()['catch'](()=>({}));throw new Error(_0x4c3359['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x242317['statusText']);}return await _0x242317['json']();},async 'approveTask'(_0x7c435e,_0x16b58e={}){if(!_0x7c435e)throw new Error('Task\x20ID\x20is\x20required');const _0x104ef1={'commit_message':_0x16b58e['commit_message']||'','pull':_0x16b58e['pull']??![],'push':_0x16b58e['push']??![]};_0x16b58e['new_branch']&&(_0x104ef1['new_branch']=_0x16b58e['new_branch']);const _0x3ec977=await fetch(API_BASE+'/tasks/'+_0x7c435e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x104ef1)});if(!_0x3ec977['ok']){const _0x9215cb=await _0x3ec977['json']()['catch'](()=>({}));let _0xf8c66c=_0x9215cb['error']||_0x9215cb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3ec977['statusText'];if(_0x9215cb['results']&&Array['isArray'](_0x9215cb['results'])){const _0x2f2fab=_0x9215cb['results']['filter'](_0x339bfa=>!_0x339bfa['success']&&_0x339bfa['error']);_0x2f2fab['length']>0x0&&(_0xf8c66c=_0x2f2fab[0x0]['error']);}throw new Error(_0xf8c66c);}return await _0x3ec977['json']();},async 'getPullRequestInfo'(_0x109ccb){if(!_0x109ccb)throw new Error('Task\x20ID\x20is\x20required');const _0x422f0a=await fetch(API_BASE+'/tasks/'+_0x109ccb+'/pull-request-info');if(!_0x422f0a['ok']){const _0x20b47f=await _0x422f0a['json']()['catch'](()=>({}));throw new Error(_0x20b47f['error']||_0x20b47f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x422f0a['statusText']);}return await _0x422f0a['json']();},async 'createPullRequests'(_0x46876,_0x16a1da){if(!_0x46876)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16a1da||!Array['isArray'](_0x16a1da))throw new Error('repos\x20array\x20is\x20required');const _0x480fa7=await fetch(API_BASE+'/tasks/'+_0x46876+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x16a1da})});if(!_0x480fa7['ok']){const _0x4d8bbb=await _0x480fa7['json']()['catch'](()=>({}));let _0x545f05=_0x4d8bbb['error']||_0x4d8bbb['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x480fa7['statusText'];if(_0x4d8bbb['results']&&Array['isArray'](_0x4d8bbb['results'])){const _0x3525ac=_0x4d8bbb['results']['filter'](_0x3ce31e=>!_0x3ce31e['success']&&_0x3ce31e['error']);_0x3525ac['length']>0x0&&(_0x545f05=_0x3525ac[0x0]['error']);}throw new Error(_0x545f05);}return await _0x480fa7['json']();},async 'syncRepos'(_0x52cfe3){if(!_0x52cfe3)throw new Error('Task\x20ID\x20is\x20required');const _0x48621c=await fetch(API_BASE+'/tasks/'+_0x52cfe3+'/sync-repos',{'method':'POST'});if(!_0x48621c['ok']){const _0x1511ef=await _0x48621c['json']()['catch'](()=>({}));throw new Error(_0x1511ef['error']||_0x1511ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x48621c['statusText']);}return await _0x48621c['json']();},async 'getIbmiSyncInfo'(_0x145012){if(!_0x145012)throw new Error('Task\x20ID\x20is\x20required');const _0x165200=await fetch(API_BASE+'/tasks/'+_0x145012+'/ibmi-sync-info');if(!_0x165200['ok']){const _0x5ea393=await _0x165200['json']()['catch'](()=>({}));throw new Error(_0x5ea393['error']||_0x5ea393['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x165200['json']();},async 'getSyncFiles'(_0x552085){if(!_0x552085)throw new Error('Task\x20ID\x20is\x20required');const _0x651228=await fetch(API_BASE+'/tasks/'+_0x552085+'/sync-to-ibmi/files');if(!_0x651228['ok']){const _0x36fb7c=await _0x651228['json']()['catch'](()=>({}));throw new Error(_0x36fb7c['error']||_0x36fb7c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x651228['json']();},async 'syncToIbmi'(_0x475201,_0x5184c6,_0x1eb706=null,_0x21e532=null,_0x54058b=null){if(!_0x475201)throw new Error('Task\x20ID\x20is\x20required');const _0x17479a={'library':_0x5184c6};if(_0x1eb706)_0x17479a['user']=_0x1eb706;if(_0x21e532)_0x17479a['password']=_0x21e532;if(_0x54058b)_0x17479a['files']=_0x54058b;const _0x24891b=await fetch(API_BASE+'/tasks/'+_0x475201+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17479a)});if(!_0x24891b['ok']){const _0x3f71ed=await _0x24891b['json']()['catch'](()=>({}));throw new Error(_0x3f71ed['error']||_0x3f71ed['message']||'Sync\x20failed');}return await _0x24891b['json']();},async 'getIbmiSyncLog'(_0x2759c9){if(!_0x2759c9)throw new Error('Task\x20ID\x20is\x20required');const _0x36114b=await fetch(API_BASE+'/tasks/'+_0x2759c9+'/ibmi-sync-log');if(!_0x36114b['ok']){const _0x572fcf=await _0x36114b['json']()['catch'](()=>({}));throw new Error(_0x572fcf['error']||_0x572fcf['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x36114b['json']();},async 'pullChanges'(_0x590538){if(!_0x590538)throw new Error('Task\x20ID\x20is\x20required');const _0x5031db=await fetch(API_BASE+'/tasks/'+_0x590538+'/pull-changes',{'method':'POST'});if(!_0x5031db['ok']){const _0x4335f8=await _0x5031db['json']()['catch'](()=>({}));throw new Error(_0x4335f8['error']||_0x4335f8['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5031db['statusText']);}return await _0x5031db['json']();},async 'readFile'(_0x36485a,_0x441fd1){if(!_0x36485a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441fd1)throw new Error('File\x20path\x20is\x20required');const _0x395d2f=await fetch(API_BASE+'/tasks/'+_0x36485a+'/files?path='+encodeURIComponent(_0x441fd1));if(!_0x395d2f['ok']){const _0x5b6227=await _0x395d2f['json']()['catch'](()=>({}));throw new Error(_0x5b6227['error']||_0x5b6227['message']||'Failed\x20to\x20read\x20file:\x20'+_0x395d2f['statusText']);}return await _0x395d2f['json']();},'getTaskFileDownloadUrl'(_0x43bca6,_0x43faa1){if(!_0x43bca6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x43faa1)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x43bca6+'/files/download?path='+encodeURIComponent(_0x43faa1);},async 'writeFile'(_0x4d0311,_0x35bd2c,_0x499d0a){if(!_0x4d0311)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35bd2c)throw new Error('File\x20path\x20is\x20required');if(_0x499d0a===undefined)throw new Error('Content\x20is\x20required');const _0x3cf895=await fetch(API_BASE+'/tasks/'+_0x4d0311+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x35bd2c,'content':_0x499d0a})});if(!_0x3cf895['ok']){const _0x38de19=await _0x3cf895['json']()['catch'](()=>({}));throw new Error(_0x38de19['error']||_0x38de19['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3cf895['statusText']);}return await _0x3cf895['json']();},async 'uploadTaskFiles'(_0x24bfd0,_0x2c54fc,_0x311638){if(!_0x24bfd0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c54fc)throw new Error('Target\x20directory\x20is\x20required');if(!_0x311638||_0x311638['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31c965=new FormData();_0x31c965['append']('targetDir',_0x2c54fc);for(const _0x287ba2 of _0x311638){_0x31c965['append']('files',_0x287ba2,_0x287ba2['name']);}const _0x1a40c6=await fetch(API_BASE+'/tasks/'+_0x24bfd0+'/files/upload',{'method':'POST','body':_0x31c965});if(!_0x1a40c6['ok']){const _0x53cb4e=await _0x1a40c6['json']()['catch'](()=>({}));throw new Error(_0x53cb4e['error']||_0x53cb4e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1a40c6['statusText']);}return await _0x1a40c6['json']();},async 'createDirectory'(_0x154ac7,_0x58643e){if(!_0x154ac7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58643e)throw new Error('Directory\x20path\x20is\x20required');const _0xed9012=await fetch(API_BASE+'/tasks/'+_0x154ac7+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x58643e})});if(!_0xed9012['ok']){const _0x29d1b9=await _0xed9012['json']()['catch'](()=>({}));throw new Error(_0x29d1b9['error']||_0x29d1b9['message']||'Failed\x20to\x20create\x20directory:\x20'+_0xed9012['statusText']);}return await _0xed9012['json']();},async 'renamePath'(_0x3f61f8,_0x45bd56,_0x4db2e7){if(!_0x3f61f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45bd56)throw new Error('Source\x20path\x20is\x20required');if(!_0x4db2e7)throw new Error('Destination\x20path\x20is\x20required');const _0x5f2ec8=await fetch(API_BASE+'/tasks/'+_0x3f61f8+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45bd56,'newPath':_0x4db2e7})});if(!_0x5f2ec8['ok']){const _0x389211=await _0x5f2ec8['json']()['catch'](()=>({}));throw new Error(_0x389211['error']||_0x389211['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x5f2ec8['statusText']);}return await _0x5f2ec8['json']();},async 'deleteFile'(_0x25f405,_0x5740da){if(!_0x25f405)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5740da)throw new Error('File\x20path\x20is\x20required');const _0x4e16f1=await fetch(API_BASE+'/tasks/'+_0x25f405+'/files?path='+encodeURIComponent(_0x5740da),{'method':'DELETE'});if(!_0x4e16f1['ok']){const _0x495042=await _0x4e16f1['json']()['catch'](()=>({}));throw new Error(_0x495042['error']||_0x495042['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4e16f1['statusText']);}return await _0x4e16f1['json']();},async 'deleteDirectory'(_0x4b527a,_0x37f378){if(!_0x4b527a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37f378)throw new Error('Directory\x20path\x20is\x20required');const _0x25f0fb=await fetch(API_BASE+'/tasks/'+_0x4b527a+'/files/directory?path='+encodeURIComponent(_0x37f378),{'method':'DELETE'});if(!_0x25f0fb['ok']){const _0x2682c6=await _0x25f0fb['json']()['catch'](()=>({}));throw new Error(_0x2682c6['error']||_0x2682c6['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x25f0fb['statusText']);}return await _0x25f0fb['json']();},async 'discardFile'(_0x2b68f6,_0x1c125f,_0x3e82c2){if(!_0x2b68f6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c125f)throw new Error('File\x20path\x20is\x20required');if(!_0x3e82c2)throw new Error('Repository\x20path\x20is\x20required');const _0xa803a3=await fetch(API_BASE+'/tasks/'+_0x2b68f6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1c125f,'repoPath':_0x3e82c2})});if(!_0xa803a3['ok']){const _0x171860=await _0xa803a3['json']()['catch'](()=>({}));throw new Error(_0x171860['error']||_0x171860['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xa803a3['statusText']);}return await _0xa803a3['json']();},async 'followUpTask'(_0x5243fd,_0x175a41={}){if(!_0x5243fd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x175a41['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2a3b52,_0x1210b0={};if(_0x175a41['files']&&_0x175a41['files']['length']>0x0){const _0x50b178=new FormData();_0x50b178['append']('instructions',_0x175a41['instructions']);for(const _0x32d64d of _0x175a41['files']){_0x50b178['append']('attachments',_0x32d64d);}_0x2a3b52=_0x50b178;}else _0x1210b0['Content-Type']='application/json',_0x2a3b52=JSON['stringify']({'instructions':_0x175a41['instructions']});const _0x335c96=await fetch(API_BASE+'/tasks/'+_0x5243fd+'/follow-up',{'method':'POST','headers':_0x1210b0,'body':_0x2a3b52});if(!_0x335c96['ok']){const _0x1858f2=await _0x335c96['json']()['catch'](()=>({}));throw new Error(_0x1858f2['error']||_0x1858f2['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x335c96['statusText']);}return await _0x335c96['json']();},async 'getTaskRewindPoints'(_0x586453){if(!_0x586453)throw new Error('Task\x20ID\x20is\x20required');const _0x4517e3=await fetch(API_BASE+'/tasks/'+_0x586453+'/rewind-points');if(!_0x4517e3['ok']){const _0x57c4b9=await _0x4517e3['json']()['catch'](()=>({}));throw new Error(_0x57c4b9['error']||_0x57c4b9['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4517e3['statusText']);}return await _0x4517e3['json']();},async 'rewindTask'(_0x57fc03,_0x2377c9={}){if(!_0x57fc03)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad26a=Number['isInteger'](_0x2377c9['targetFollowUpCount'])?_0x2377c9['targetFollowUpCount']:0x0,_0x4e3c62={'targetFollowUpCount':_0x2ad26a};typeof _0x2377c9['instructions']==='string'&&_0x2377c9['instructions']['trim']()&&(_0x4e3c62['instructions']=_0x2377c9['instructions']['trim']());typeof _0x2377c9['rewindFiles']==='boolean'&&(_0x4e3c62['rewindFiles']=_0x2377c9['rewindFiles']);const _0x5174c1=await fetch(API_BASE+'/tasks/'+_0x57fc03+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3c62)});if(!_0x5174c1['ok']){const _0x222776=await _0x5174c1['json']()['catch'](()=>({}));throw new Error(_0x222776['error']||_0x222776['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5174c1['statusText']);}return await _0x5174c1['json']();},async 'login'(_0x185b71,_0x5935b6){const _0x376bd1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x185b71,'password':_0x5935b6})});if(!_0x376bd1['ok']){const _0x4acf12=await _0x376bd1['json']();throw new Error(_0x4acf12['message']||'Login\x20failed');}return await _0x376bd1['json']();},async 'logout'(){const _0x5de931=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5de931['ok']){const _0x5b4434=await _0x5de931['json']();throw new Error(_0x5b4434['message']||'Logout\x20failed');}return await _0x5de931['json']();},async 'getCurrentUser'(){const _0x59b4a2=await fetch(API_BASE+'/auth/me');if(!_0x59b4a2['ok'])throw new Error('Not\x20authenticated');const _0x3c7741=await _0x59b4a2['json']();return _0x3c7741['user'];},async 'getRolesInfo'(){const _0x256e7d=await fetch(API_BASE+'/users/roles');if(!_0x256e7d['ok']){const _0x4e6bf0=await _0x256e7d['json']();throw new Error(_0x4e6bf0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x256e7d['json']();},async 'getUsers'(){const _0x349705=await fetch(API_BASE+'/users');if(!_0x349705['ok']){const _0x5c8f3f=await _0x349705['json']();throw new Error(_0x5c8f3f['message']||'Failed\x20to\x20get\x20users');}return await _0x349705['json']();},async 'getUser'(_0x37515e){const _0x5811ef=await fetch(API_BASE+'/users/'+_0x37515e);if(!_0x5811ef['ok']){const _0x237f02=await _0x5811ef['json']();throw new Error(_0x237f02['message']||'Failed\x20to\x20get\x20user');}return await _0x5811ef['json']();},async 'createUser'(_0x3c2dca){const _0x317bdc=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c2dca)});if(!_0x317bdc['ok']){const _0x15c7ff=await _0x317bdc['json']();throw new Error(_0x15c7ff['message']||'Failed\x20to\x20create\x20user');}return await _0x317bdc['json']();},async 'updateUser'(_0x7120f2,_0x3e877d){const _0x1f667f=await fetch(API_BASE+'/users/'+_0x7120f2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e877d)});if(!_0x1f667f['ok']){const _0x234e93=await _0x1f667f['json']();throw new Error(_0x234e93['message']||'Failed\x20to\x20update\x20user');}return await _0x1f667f['json']();},async 'deleteUser'(_0x125946){const _0x3f175d=await fetch(API_BASE+'/users/'+_0x125946,{'method':'DELETE'});if(!_0x3f175d['ok']){const _0x430637=await _0x3f175d['json']();throw new Error(_0x430637['message']||'Failed\x20to\x20delete\x20user');}return await _0x3f175d['json']();},async 'stopAllContainers'(){const _0x432161=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3fc8e3=await _0x432161['json']()['catch'](()=>({}));if(!_0x432161['ok'])throw new Error(_0x3fc8e3['message']||_0x3fc8e3['error']||'Failed\x20to\x20stop\x20containers');return _0x3fc8e3;},async 'removeStoppedContainers'(){const _0x4fd733=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5433c9=await _0x4fd733['json']()['catch'](()=>({}));if(!_0x4fd733['ok'])throw new Error(_0x5433c9['message']||_0x5433c9['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5433c9;},async 'pruneDockerResources'(){const _0x217773=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x16ef9e=await _0x217773['json']()['catch'](()=>({}));if(!_0x217773['ok'])throw new Error(_0x16ef9e['message']||_0x16ef9e['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x16ef9e;},async 'createPasswordToken'(_0x133be9,_0x381b89='setup',_0x3482c1=![]){const _0x58e867=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x133be9,'type':_0x381b89,'sendEmail':_0x3482c1})});if(!_0x58e867['ok']){const _0x34faf0=await _0x58e867['json']();throw new Error(_0x34faf0['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x58e867['json']();},async 'getEmailConfig'(){const _0x14c337=await fetch(API_BASE+'/password/email-config');if(!_0x14c337['ok']){const _0x4693d3=await _0x14c337['json']();throw new Error(_0x4693d3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14c337['json']();},async 'updateTaskName'(_0x403c61,_0x8fddb8){const _0x4177c8=await fetch(API_BASE+'/tasks/'+_0x403c61,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x8fddb8})});if(!_0x4177c8['ok']){const _0x14b96c=await _0x4177c8['json']();throw new Error(_0x14b96c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4177c8['json']();},async 'pinTask'(_0x12ee96,_0x5701a9,_0x5251ac=null){if(!_0x12ee96)throw new Error('Task\x20ID\x20is\x20required');const _0x32c579={'pinned':_0x5701a9};_0x5251ac&&_0x5251ac['length']>0x0&&(_0x32c579['additionalTaskIds']=_0x5251ac);const _0xf0bb1b=await fetch(API_BASE+'/tasks/'+_0x12ee96+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32c579)});if(!_0xf0bb1b['ok']){const _0x12fb1a=await _0xf0bb1b['json']();throw new Error(_0x12fb1a['error']||'Failed\x20to\x20pin\x20task');}return await _0xf0bb1b['json']();},async 'setTaskWinner'(_0x94ff2f,_0x3638bb,_0x44df9f=[]){if(!_0x94ff2f)throw new Error('Task\x20ID\x20is\x20required');const _0x29c568=await fetch(API_BASE+'/tasks/'+_0x94ff2f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3638bb,'siblings':_0x44df9f})});if(!_0x29c568['ok']){const _0x551eda=await _0x29c568['json']();throw new Error(_0x551eda['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x29c568['json']();},async 'setTaskLoser'(_0x202204,_0x12a345){if(!_0x202204)throw new Error('Task\x20ID\x20is\x20required');const _0x3870fe=await fetch(API_BASE+'/tasks/'+_0x202204+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x12a345})});if(!_0x3870fe['ok']){const _0x210ac8=await _0x3870fe['json']();throw new Error(_0x210ac8['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3870fe['json']();},async 'createTaskGroup'(_0x2477dd){const _0x4d9c88=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2477dd)});if(!_0x4d9c88['ok']){const _0x21abcd=await _0x4d9c88['json']();throw new Error(_0x21abcd['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4d9c88['json']();},async 'getTaskGroups'(_0x5dd721={}){const _0x2c8aca=new URLSearchParams();if(_0x5dd721['userId'])_0x2c8aca['set']('userId',String(_0x5dd721['userId']));if(_0x5dd721['status'])_0x2c8aca['set']('status',String(_0x5dd721['status']));if(_0x5dd721['limit'])_0x2c8aca['set']('limit',String(_0x5dd721['limit']));const _0x523c1d=API_BASE+'/tasks/groups'+(_0x2c8aca['toString']()?'?'+_0x2c8aca['toString']():''),_0x103edb=await fetch(_0x523c1d);if(!_0x103edb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x103edb['json']();},async 'getTaskGroup'(_0x28ba63){const _0x4f0842=await fetch(API_BASE+'/tasks/groups/'+_0x28ba63);if(!_0x4f0842['ok']){const _0x2b637e=await _0x4f0842['json']();throw new Error(_0x2b637e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f0842['json']();},async 'updateTaskGroup'(_0x55f458,_0x58e07e,_0x1272a5){const _0x59d102=await fetch(API_BASE+'/tasks/'+_0x55f458+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x58e07e,'groupIndex':_0x1272a5})});if(!_0x59d102['ok']){const _0x37ff62=await _0x59d102['json']();throw new Error(_0x37ff62['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x59d102['json']();},async 'removeTaskFromGroup'(_0x222487){return this['updateTaskGroup'](_0x222487,null,null);},async 'deleteTaskGroup'(_0x398409,_0x233def=![]){const _0xca69ce=_0x233def?'?deleteTasks=true':'',_0x426100=await fetch(API_BASE+'/tasks/groups/'+_0x398409+_0xca69ce,{'method':'DELETE'});if(!_0x426100['ok']){const _0x10ddde=await _0x426100['json']();throw new Error(_0x10ddde['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x338280,_0x2dcd9d){const _0x195213=await fetch(API_BASE+'/tasks/groups/'+_0x338280+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2dcd9d})});if(!_0x195213['ok']){const _0x3525cb=await _0x195213['json']();throw new Error(_0x3525cb['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x195213['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52783f){if(!_0x52783f)throw new Error('Task\x20ID\x20is\x20required');const _0x4978a0=await fetch(API_BASE+'/tasks/'+_0x52783f+'/comments');if(!_0x4978a0['ok']){const _0x11f09a=await _0x4978a0['json']()['catch'](()=>({}));throw new Error(_0x11f09a['error']||'Failed\x20to\x20get\x20comments');}return await _0x4978a0['json']();},async 'addComment'(_0x5a33a8,_0x4df46f){if(!_0x5a33a8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df46f)throw new Error('Comment\x20content\x20is\x20required');const _0x4ea416=await fetch(API_BASE+'/tasks/'+_0x5a33a8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4df46f})});if(!_0x4ea416['ok']){const _0x2cae17=await _0x4ea416['json']()['catch'](()=>({}));throw new Error(_0x2cae17['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ea416['json']();},async 'updateComment'(_0x60c4d5,_0xc09342,_0x4e3764){if(!_0x60c4d5)throw new Error('Task\x20ID\x20is\x20required');if(!_0xc09342)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4e3764)throw new Error('Comment\x20content\x20is\x20required');const _0xdc4640=await fetch(API_BASE+'/tasks/'+_0x60c4d5+'/comments/'+_0xc09342,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4e3764})});if(!_0xdc4640['ok']){const _0x28d311=await _0xdc4640['json']()['catch'](()=>({}));throw new Error(_0x28d311['error']||'Failed\x20to\x20update\x20comment');}return await _0xdc4640['json']();},async 'deleteComment'(_0x375da8,_0x258597){if(!_0x375da8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x258597)throw new Error('Comment\x20ID\x20is\x20required');const _0x4090d1=await fetch(API_BASE+'/tasks/'+_0x375da8+'/comments/'+_0x258597,{'method':'DELETE'});if(!_0x4090d1['ok']){const _0x33fd48=await _0x4090d1['json']()['catch'](()=>({}));throw new Error(_0x33fd48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4090d1['json']();},async 'createObjective'(_0x5680a8){const _0x32926b={'objective':!![],'name':_0x5680a8['name']||'','environment':_0x5680a8['environment']||null,'agents':_0x5680a8['agents']||[],'branches':_0x5680a8['branches']||{},'isPinned':_0x5680a8['isPinned']||![],'parentObjectiveId':_0x5680a8['parentObjectiveId']||null,'env_vars':_0x5680a8['envVars']||{},'parameters':{'instructions':_0x5680a8['instructions']||''},'files':_0x5680a8['files']||[],'jira':_0x5680a8['jira']||null};return this['createTask'](_0x32926b);},async 'updateObjective'(_0x21e3b7,_0xd38636,_0x58a366=[],_0x1756d6=[]){let _0x2a8a99,_0x30d942={};const _0x245788={..._0xd38636};_0x1756d6&&_0x1756d6['length']>0x0&&(_0x245788['removeAttachments']=_0x1756d6);if(_0x58a366&&_0x58a366['length']>0x0){const _0x49d544=new FormData();for(const [_0x2adb8e,_0x374633]of Object['entries'](_0x245788)){if(_0x374633==null)continue;typeof _0x374633==='object'?_0x49d544['append'](_0x2adb8e,JSON['stringify'](_0x374633)):_0x49d544['append'](_0x2adb8e,String(_0x374633));}for(const _0x375890 of _0x58a366){_0x49d544['append']('attachments',_0x375890);}_0x2a8a99=_0x49d544;}else _0x30d942['Content-Type']='application/json',_0x2a8a99=JSON['stringify'](_0x245788);const _0x2fc9bc=await fetch(API_BASE+'/tasks/'+_0x21e3b7,{'method':'PATCH','headers':_0x30d942,'body':_0x2a8a99});if(!_0x2fc9bc['ok']){const _0x1c790b=await _0x2fc9bc['json']();throw new Error(_0x1c790b['error']||'Failed\x20to\x20update\x20objective');}return await _0x2fc9bc['json']();},async 'deleteObjective'(_0x447703){return this['deleteTask'](_0x447703);},async 'launchObjective'(_0x407918,_0x4b69b9={}){const _0x2b9ef2=await fetch(API_BASE+'/tasks/'+_0x407918+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b69b9)});if(!_0x2b9ef2['ok']){const _0x5c5b2e=await _0x2b9ef2['json']();throw new Error(_0x5c5b2e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2b9ef2['json']();},async 'getObjectiveAttachments'(_0x197e34){return this['getTaskAttachments'](_0x197e34);},async 'createJudgeTask'({environment:_0x5567e5,judgeAgent:_0x559201,groupId:_0x358acb,taskIds:_0x1c9b0f,judgeCustomInstructions:_0x25453b,isPinned:_0x17a0d1}){const _0x5bf675=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5567e5,'judgeAgent':_0x559201,'groupId':_0x358acb,'taskIds':_0x1c9b0f,'judgeCustomInstructions':_0x25453b,'isPinned':_0x17a0d1})});if(!_0x5bf675['ok']){const _0x28b407=await _0x5bf675['json']();throw new Error(_0x28b407['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x5bf675['json']();},async 'getJudgeTasks'(_0x3bcda7){const _0x33f8a3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3bcda7));if(!_0x33f8a3['ok']){const _0x5a5042=await _0x33f8a3['json']();throw new Error(_0x5a5042['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x33f8a3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x16f4e2,_0x55fa09,_0x51708d=''){const _0x940920=await fetch(API_BASE+'/tasks/'+_0x16f4e2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x55fa09,'customPreamble':_0x51708d})});if(!_0x940920['ok']){const _0x44ee8e=await _0x940920['json']();throw new Error(_0x44ee8e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x940920['json']();},async 'getJiraConfig'(){const _0x858daf=await fetch(API_BASE+'/jira/config');if(!_0x858daf['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x858daf['json']();},async 'getJiraIssue'(_0x220059){const _0x10d772=await fetch(API_BASE+'/jira/issues/'+_0x220059);if(!_0x10d772['ok']){const _0x3b59aa=await _0x10d772['json']()['catch'](()=>({}));throw new Error(_0x3b59aa['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x10d772['statusText']);}return await _0x10d772['json']();},async 'searchJiraIssues'(_0x5257d2,_0x2b1402=0x14){const _0x194395=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5257d2,'maxResults':_0x2b1402})});if(!_0x194395['ok']){const _0x122987=await _0x194395['json']()['catch'](()=>({}));throw new Error(_0x122987['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x194395['statusText']);}return await _0x194395['json']();},async 'postJiraComment'(_0x1cbb1f,_0x353b28){const _0x5abc46=await fetch(API_BASE+'/jira/issues/'+_0x1cbb1f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x353b28})});if(!_0x5abc46['ok']){const _0x199c51=await _0x5abc46['json']()['catch'](()=>({}));throw new Error(_0x199c51['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5abc46['statusText']);}return await _0x5abc46['json']();},async 'getJiraComments'(_0x3572d7){const _0x26b156=await fetch(API_BASE+'/jira/issues/'+_0x3572d7+'/comments');if(!_0x26b156['ok']){const _0x1a5b77=await _0x26b156['json']()['catch'](()=>({}));throw new Error(_0x1a5b77['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x26b156['statusText']);}return await _0x26b156['json']();},async 'promptParameter'({environment:_0x9deaa1,command:_0x329e3,parser:parser='json'}){const _0x4485bd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x9deaa1,'command':_0x329e3,'parser':parser})});if(!_0x4485bd['ok']){const _0x45771e=await _0x4485bd['json']()['catch'](()=>({}));throw new Error(_0x45771e['message']||_0x45771e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4485bd['statusText']);}return await _0x4485bd['json']();},async 'promptParameterStream'(_0x29f1b3,_0x6c6215){const _0x4b75ae=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f1b3)});if(!_0x4b75ae['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b75ae['statusText']);const _0x2fcb40=_0x4b75ae['body']['getReader'](),_0x3f6be9=new TextDecoder();let _0x142944='';return new Promise((_0x38c3db,_0x4431f8)=>{const _0xf5757=async()=>{try{const {done:_0x126e7b,value:_0x54329a}=await _0x2fcb40['read']();if(_0x126e7b)return;_0x142944+=_0x3f6be9['decode'](_0x54329a,{'stream':!![]});const _0x20a472=_0x142944['split']('\x0a\x0a');_0x142944=_0x20a472['pop']()||'';for(const _0x18426e of _0x20a472){if(!_0x18426e['trim']())continue;const _0x2f5e09=_0x18426e['split']('\x0a');let _0x48a552='message',_0x4a283a='';for(const _0x1f4514 of _0x2f5e09){if(_0x1f4514['startsWith']('event:'))_0x48a552=_0x1f4514['substring'](0x6)['trim']();else _0x1f4514['startsWith']('data:')&&(_0x4a283a=_0x1f4514['substring'](0x5)['trim']());}if(!_0x4a283a)continue;try{const _0x587083=JSON['parse'](_0x4a283a);if(_0x48a552==='progress'&&_0x6c6215)_0x6c6215(_0x587083['stage'],_0x587083['message']);else{if(_0x48a552==='result'){_0x38c3db(_0x587083);return;}else{if(_0x48a552==='error'){let _0x125aeb=_0x587083['message']||_0x587083['error']||'Prompt\x20command\x20failed';_0x587083['rawOutput']&&(_0x125aeb+='\x0a\x0aRaw\x20output:\x0a'+_0x587083['rawOutput']);_0x4431f8(new Error(_0x125aeb));return;}}}}catch(_0x5a4ab2){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5a4ab2),console['error']('Event\x20type:',_0x48a552),console['error']('Event\x20data:',_0x4a283a),console['error']('First\x20200\x20chars:',_0x4a283a['substring'](0x0,0xc8)),_0x4431f8(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5a4ab2['message']+'\x0a\x0aData:\x20'+_0x4a283a['substring'](0x0,0x1f4)));return;}}_0xf5757();}catch(_0x2f7d6f){_0x4431f8(_0x2f7d6f);}};_0xf5757();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5b4e76){const _0x47f068=await fetch(''+API_BASE+_0x5b4e76);if(!_0x47f068['ok']){const _0x236649=await _0x47f068['json']()['catch'](()=>({'error':_0x47f068['statusText']})),_0x23ec02=new Error(_0x236649['error']||_0x236649['message']||_0x47f068['statusText']);if(_0x236649['detail']!==undefined)_0x23ec02['detail']=_0x236649['detail'];throw _0x23ec02;}return await _0x47f068['json']();},async 'post'(_0x35ca4f,_0x2629d1){const _0x82c3d5=await fetch(''+API_BASE+_0x35ca4f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2629d1)});if(!_0x82c3d5['ok']){const _0x27968f=await _0x82c3d5['json']()['catch'](()=>({'error':_0x82c3d5['statusText']})),_0x1bbb26=new Error(_0x27968f['error']||_0x27968f['message']||_0x82c3d5['statusText']);if(_0x27968f['detail']!==undefined)_0x1bbb26['detail']=_0x27968f['detail'];throw _0x1bbb26;}return await _0x82c3d5['json']();},async 'put'(_0xe02806,_0x3a22e3){const _0xff478c=await fetch(''+API_BASE+_0xe02806,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a22e3)});if(!_0xff478c['ok']){const _0x3b5994=await _0xff478c['json']()['catch'](()=>({'error':_0xff478c['statusText']})),_0x2fd09c=new Error(_0x3b5994['error']||_0x3b5994['message']||_0xff478c['statusText']);if(_0x3b5994['detail']!==undefined)_0x2fd09c['detail']=_0x3b5994['detail'];throw _0x2fd09c;}return await _0xff478c['json']();},async 'delete'(_0x5ea88a,_0x1499d8){const _0x160941={'method':'DELETE'};_0x1499d8&&(_0x160941['headers']={'Content-Type':'application/json'},_0x160941['body']=JSON['stringify'](_0x1499d8));const _0x152f3b=await fetch(''+API_BASE+_0x5ea88a,_0x160941);if(!_0x152f3b['ok']){const _0x413d17=await _0x152f3b['json']()['catch'](()=>({'error':_0x152f3b['statusText']})),_0x5cd997=new Error(_0x413d17['error']||_0x413d17['message']||_0x152f3b['statusText']);if(_0x413d17['detail']!==undefined)_0x5cd997['detail']=_0x413d17['detail'];throw _0x5cd997;}return await _0x152f3b['json']();},async 'getSkills'(){const _0x34f6bf=await fetch(API_BASE+'/skills');if(!_0x34f6bf['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x34f6bf['statusText']);return await _0x34f6bf['json']();},async 'getSkill'(_0x2cba41){const _0x1c1802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2cba41));if(!_0x1c1802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c1802['statusText']);return await _0x1c1802['json']();},async 'createSkill'(_0x656398){const _0x2421eb=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x656398)});if(!_0x2421eb['ok']){const _0x1d692b=await _0x2421eb['json']()['catch'](()=>({'error':_0x2421eb['statusText']})),_0x3b7782=new Error(_0x1d692b['error']||_0x1d692b['message']||_0x2421eb['statusText']);if(_0x1d692b['detail']!==undefined)_0x3b7782['detail']=_0x1d692b['detail'];throw _0x3b7782;}return await _0x2421eb['json']();},async 'updateSkill'(_0x34b656,_0x1b1cb8){const _0x2bf06b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x34b656),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b1cb8)});if(!_0x2bf06b['ok']){const _0x53396c=await _0x2bf06b['json']()['catch'](()=>({'error':_0x2bf06b['statusText']})),_0x5ab719=new Error(_0x53396c['error']||_0x53396c['message']||_0x2bf06b['statusText']);if(_0x53396c['detail']!==undefined)_0x5ab719['detail']=_0x53396c['detail'];throw _0x5ab719;}return await _0x2bf06b['json']();},async 'deleteSkill'(_0x5799e5){const _0x2f6cba=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5799e5),{'method':'DELETE'});if(!_0x2f6cba['ok']){const _0x4be2b7=await _0x2f6cba['json']()['catch'](()=>({'error':_0x2f6cba['statusText']})),_0x1aba13=new Error(_0x4be2b7['error']||_0x4be2b7['message']||_0x2f6cba['statusText']);if(_0x4be2b7['detail']!==undefined)_0x1aba13['detail']=_0x4be2b7['detail'];throw _0x1aba13;}return await _0x2f6cba['json']();},async 'getSkillFile'(_0x494c91,_0x3275c9){const _0x221119=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x494c91)+'/files/'+_0x3275c9);if(!_0x221119['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x221119['statusText']);return await _0x221119['json']();},async 'saveSkillFile'(_0x5a2138,_0x19d4a1,_0x33c4ed){const _0x3fd56d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5a2138)+'/files/'+_0x19d4a1,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x33c4ed})});if(!_0x3fd56d['ok']){const _0x373b40=await _0x3fd56d['json']()['catch'](()=>({'error':_0x3fd56d['statusText']})),_0x23acbc=new Error(_0x373b40['error']||_0x373b40['message']||_0x3fd56d['statusText']);if(_0x373b40['detail']!==undefined)_0x23acbc['detail']=_0x373b40['detail'];throw _0x23acbc;}return await _0x3fd56d['json']();},async 'deleteSkillFile'(_0x4a1f93,_0x1eb139){const _0x394075=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4a1f93)+'/files/'+_0x1eb139,{'method':'DELETE'});if(!_0x394075['ok']){const _0x3c9e6f=await _0x394075['json']()['catch'](()=>({'error':_0x394075['statusText']})),_0x5e1f58=new Error(_0x3c9e6f['error']||_0x3c9e6f['message']||_0x394075['statusText']);if(_0x3c9e6f['detail']!==undefined)_0x5e1f58['detail']=_0x3c9e6f['detail'];throw _0x5e1f58;}return await _0x394075['json']();},async 'pullSkills'(){const _0x2b220f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x2b220f['ok']){const _0x17473e=await _0x2b220f['json']()['catch'](()=>({'error':_0x2b220f['statusText']})),_0x2a3c47=new Error(_0x17473e['error']||_0x17473e['message']||_0x2b220f['statusText']);if(_0x17473e['detail']!==undefined)_0x2a3c47['detail']=_0x17473e['detail'];throw _0x2a3c47;}return await _0x2b220f['json']();},async 'commitSkills'(_0x5abd37,_0x38efd3={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x38efd3,_0x35b2d6=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5abd37,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b2d6['ok']){const _0x4a9798=await _0x35b2d6['json']()['catch'](()=>({'error':_0x35b2d6['statusText']})),_0x2940b6=new Error(_0x4a9798['error']||_0x4a9798['message']||_0x35b2d6['statusText']);if(_0x4a9798['detail']!==undefined)_0x2940b6['detail']=_0x4a9798['detail'];throw _0x2940b6;}return await _0x35b2d6['json']();},async 'discardSkillsChanges'(){const _0x4b05b4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b05b4['ok']){const _0x2da5cc=await _0x4b05b4['json']()['catch'](()=>({'error':_0x4b05b4['statusText']})),_0x5f10fd=new Error(_0x2da5cc['error']||_0x2da5cc['message']||_0x4b05b4['statusText']);if(_0x2da5cc['detail']!==undefined)_0x5f10fd['detail']=_0x2da5cc['detail'];throw _0x5f10fd;}return await _0x4b05b4['json']();},async 'getSkillCatalog'(){const _0x37f636=await fetch(API_BASE+'/external-skills/catalog');if(!_0x37f636['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x37f636['statusText']);return await _0x37f636['json']();},async 'getImportedSkillsRegistry'(){const _0x22124e=await fetch(API_BASE+'/external-skills/registry');if(!_0x22124e['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x22124e['statusText']);return await _0x22124e['json']();},async 'importCatalogSkill'(_0x530ba6){const _0x56f1e8=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x530ba6})});if(!_0x56f1e8['ok']){const _0x1d4444=await _0x56f1e8['json']()['catch'](()=>({'error':_0x56f1e8['statusText']})),_0x3b841d=new Error(_0x1d4444['error']||_0x1d4444['message']||_0x56f1e8['statusText']);if(_0x1d4444['detail']!==undefined)_0x3b841d['detail']=_0x1d4444['detail'];throw _0x3b841d;}return await _0x56f1e8['json']();},async 'importSkillFromGit'(_0x330839,_0x3803da,_0xdc7f4b='main',_0x21c6a8=null){const _0x1437c7=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x330839,'skillPath':_0x3803da,'branch':_0xdc7f4b,'skillId':_0x21c6a8})});if(!_0x1437c7['ok']){const _0x8c5d99=await _0x1437c7['json']()['catch'](()=>({'error':_0x1437c7['statusText']})),_0x595eba=new Error(_0x8c5d99['error']||_0x8c5d99['message']||_0x1437c7['statusText']);if(_0x8c5d99['detail']!==undefined)_0x595eba['detail']=_0x8c5d99['detail'];throw _0x595eba;}return await _0x1437c7['json']();},async 'probeMarketplace'(_0x5c8b60,_0x3b2ab4='main'){const _0x218158=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5c8b60,'branch':_0x3b2ab4})});if(!_0x218158['ok']){const _0x5b8358=await _0x218158['json']()['catch'](()=>({'error':_0x218158['statusText']})),_0x112837=new Error(_0x5b8358['error']||_0x5b8358['message']||_0x218158['statusText']);if(_0x5b8358['detail']!==undefined)_0x112837['detail']=_0x5b8358['detail'];throw _0x112837;}return await _0x218158['json']();},async 'importMarketplaceBundle'(_0x46ac5a,_0xa7146c,_0x596b3c,_0x35c496=null){const _0x332e36=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x46ac5a,'branch':_0xa7146c,'bundleId':_0x596b3c,'selectedSkills':_0x35c496})});if(!_0x332e36['ok']){const _0xf12348=await _0x332e36['json']()['catch'](()=>({'error':_0x332e36['statusText']})),_0x23e988=new Error(_0xf12348['error']||_0xf12348['message']||_0x332e36['statusText']);if(_0xf12348['detail']!==undefined)_0x23e988['detail']=_0xf12348['detail'];throw _0x23e988;}return await _0x332e36['json']();},async 'importSkillFromFolder'(_0xb69624,_0x382761=null){const _0x599cae=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xb69624,'skillId':_0x382761})});if(!_0x599cae['ok']){const _0x5b2880=await _0x599cae['json']()['catch'](()=>({'error':_0x599cae['statusText']})),_0x3ede8c=new Error(_0x5b2880['error']||_0x5b2880['message']||_0x599cae['statusText']);if(_0x5b2880['detail']!==undefined)_0x3ede8c['detail']=_0x5b2880['detail'];throw _0x3ede8c;}return await _0x599cae['json']();},async 'importSkillFromNpm'(_0xa6e2c2,_0x4dec14='latest',_0xdc064d=null,_0x51214b=null){const _0x55b5a8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0xa6e2c2,'version':_0x4dec14,'skillId':_0xdc064d,'registry':_0x51214b})});if(!_0x55b5a8['ok']){const _0x514e1c=await _0x55b5a8['json']()['catch'](()=>({'error':_0x55b5a8['statusText']})),_0x2e9a5a=new Error(_0x514e1c['error']||_0x514e1c['message']||_0x55b5a8['statusText']);if(_0x514e1c['detail']!==undefined)_0x2e9a5a['detail']=_0x514e1c['detail'];throw _0x2e9a5a;}return await _0x55b5a8['json']();},async 'checkSkillUpdates'(_0x5d362a){const _0xfccade=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5d362a)+'/check-updates',{'method':'POST'});if(!_0xfccade['ok']){const _0x4ea8d2=await _0xfccade['json']()['catch'](()=>({'error':_0xfccade['statusText']})),_0x1c1351=new Error(_0x4ea8d2['error']||_0x4ea8d2['message']||_0xfccade['statusText']);if(_0x4ea8d2['detail']!==undefined)_0x1c1351['detail']=_0x4ea8d2['detail'];throw _0x1c1351;}return await _0xfccade['json']();},async 'updateExternalSkill'(_0x19947b){const _0x56da39=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x19947b)+'/update',{'method':'POST'});if(!_0x56da39['ok']){const _0x30fbaf=await _0x56da39['json']()['catch'](()=>({'error':_0x56da39['statusText']})),_0xf1f1ad=new Error(_0x30fbaf['error']||_0x30fbaf['message']||_0x56da39['statusText']);if(_0x30fbaf['detail']!==undefined)_0xf1f1ad['detail']=_0x30fbaf['detail'];throw _0xf1f1ad;}return await _0x56da39['json']();},async 'updateSkillFlags'(_0x5575e2,_0x4a76da){const _0x29c44f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5575e2)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4a76da})});if(!_0x29c44f['ok']){const _0x41a84a=await _0x29c44f['json']()['catch'](()=>({'error':_0x29c44f['statusText']})),_0x274ed7=new Error(_0x41a84a['error']||_0x41a84a['message']||_0x29c44f['statusText']);if(_0x41a84a['detail']!==undefined)_0x274ed7['detail']=_0x41a84a['detail'];throw _0x274ed7;}return await _0x29c44f['json']();},async 'removeFromImportedRegistry'(_0x26cf83){const _0x1b06c9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26cf83)+'/registry',{'method':'DELETE'});if(!_0x1b06c9['ok']){const _0x104a3f=await _0x1b06c9['json']()['catch'](()=>({'error':_0x1b06c9['statusText']})),_0xbd7098=new Error(_0x104a3f['error']||_0x104a3f['message']||_0x1b06c9['statusText']);if(_0x104a3f['detail']!==undefined)_0xbd7098['detail']=_0x104a3f['detail'];throw _0xbd7098;}return await _0x1b06c9['json']();},async 'getTeams'(){const _0x59f4ea=await fetch(API_BASE+'/teams');if(!_0x59f4ea['ok']){const _0x51e382=await _0x59f4ea['json']()['catch'](()=>({'message':_0x59f4ea['statusText']}));throw new Error(_0x51e382['message']||'Failed\x20to\x20get\x20teams');}return await _0x59f4ea['json']();},async 'getTeam'(_0x4280e6){const _0x1bc958=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4280e6));if(!_0x1bc958['ok']){const _0x4dc908=await _0x1bc958['json']()['catch'](()=>({'message':_0x1bc958['statusText']}));throw new Error(_0x4dc908['message']||'Failed\x20to\x20get\x20team');}return await _0x1bc958['json']();},async 'createTeam'(_0x5b82b3){const _0x51ab4b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b82b3)});if(!_0x51ab4b['ok']){const _0x7c31d5=await _0x51ab4b['json']()['catch'](()=>({'message':_0x51ab4b['statusText']}));throw new Error(_0x7c31d5['message']||'Failed\x20to\x20create\x20team');}return await _0x51ab4b['json']();},async 'updateTeam'(_0x44db12,_0x4cd24a){const _0x4b92e4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44db12),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cd24a)});if(!_0x4b92e4['ok']){const _0x298684=await _0x4b92e4['json']()['catch'](()=>({'message':_0x4b92e4['statusText']}));throw new Error(_0x298684['message']||'Failed\x20to\x20update\x20team');}return await _0x4b92e4['json']();},async 'deleteTeam'(_0x342ef1){const _0x40bc01=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x342ef1),{'method':'DELETE'});if(!_0x40bc01['ok']){const _0x303d63=await _0x40bc01['json']()['catch'](()=>({'message':_0x40bc01['statusText']}));throw new Error(_0x303d63['message']||'Failed\x20to\x20delete\x20team');}return await _0x40bc01['json']();},async 'addTeamMember'(_0x3d28b8,_0x253812){const _0xead8f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3d28b8)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x253812})});if(!_0xead8f1['ok']){const _0x251306=await _0xead8f1['json']()['catch'](()=>({'message':_0xead8f1['statusText']}));throw new Error(_0x251306['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xead8f1['json']();},async 'removeTeamMember'(_0x10ad3a,_0x6b08f7){const _0xa1adfb=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10ad3a)+'/members/'+encodeURIComponent(_0x6b08f7),{'method':'DELETE'});if(!_0xa1adfb['ok']){const _0x1c8826=await _0xa1adfb['json']()['catch'](()=>({'message':_0xa1adfb['statusText']}));throw new Error(_0x1c8826['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xa1adfb['json']();},async 'getBindings'(_0x35a3f8={}){const _0x224817=new URLSearchParams();if(_0x35a3f8['resource_type'])_0x224817['set']('resource_type',_0x35a3f8['resource_type']);if(_0x35a3f8['resource_id'])_0x224817['set']('resource_id',_0x35a3f8['resource_id']);if(_0x35a3f8['subject_type'])_0x224817['set']('subject_type',_0x35a3f8['subject_type']);if(_0x35a3f8['subject_id'])_0x224817['set']('subject_id',_0x35a3f8['subject_id']);const _0xf65b02=_0x224817['toString'](),_0x1753e7=await fetch(API_BASE+'/bindings'+(_0xf65b02?'?'+_0xf65b02:''));if(!_0x1753e7['ok']){const _0x2fc9e2=await _0x1753e7['json']()['catch'](()=>({'message':_0x1753e7['statusText']}));throw new Error(_0x2fc9e2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1753e7['json']();},async 'createBinding'(_0xff974f){const _0x27bdbc=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xff974f)});if(!_0x27bdbc['ok']){const _0x169f8b=await _0x27bdbc['json']()['catch'](()=>({'message':_0x27bdbc['statusText']}));throw new Error(_0x169f8b['message']||'Failed\x20to\x20create\x20binding');}return await _0x27bdbc['json']();},async 'updateBinding'(_0x54c34b,_0xd71131){const _0x236fa6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x54c34b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd71131)});if(!_0x236fa6['ok']){const _0xb1cb4c=await _0x236fa6['json']()['catch'](()=>({'message':_0x236fa6['statusText']}));throw new Error(_0xb1cb4c['message']||'Failed\x20to\x20update\x20binding');}return await _0x236fa6['json']();},async 'deleteBinding'(_0x12a72e){const _0x573f7c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x12a72e),{'method':'DELETE'});if(!_0x573f7c['ok']){const _0x5c2ee3=await _0x573f7c['json']()['catch'](()=>({'message':_0x573f7c['statusText']}));throw new Error(_0x5c2ee3['message']||'Failed\x20to\x20delete\x20binding');}return await _0x573f7c['json']();},async 'getRoleDefinitions'(){const _0x14479d=await fetch(API_BASE+'/roles');if(!_0x14479d['ok']){const _0x4759ec=await _0x14479d['json']()['catch'](()=>({'message':_0x14479d['statusText']}));throw new Error(_0x4759ec['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x14479d['json']();},async 'getRoleDefinition'(_0x358dc0){const _0x1c222b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358dc0));if(!_0x1c222b['ok']){const _0x262c21=await _0x1c222b['json']()['catch'](()=>({'message':_0x1c222b['statusText']}));throw new Error(_0x262c21['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1c222b['json']();},async 'createRoleDefinition'(_0x1129ac){const _0x44f27d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1129ac)});if(!_0x44f27d['ok']){const _0x54cbe3=await _0x44f27d['json']()['catch'](()=>({'message':_0x44f27d['statusText']}));throw new Error(_0x54cbe3['message']||_0x54cbe3['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x44f27d['json']();},async 'updateRoleDefinition'(_0x58bc73,_0x403629){const _0x2b7f40=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x58bc73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x403629)});if(!_0x2b7f40['ok']){const _0xf5ed81=await _0x2b7f40['json']()['catch'](()=>({'message':_0x2b7f40['statusText']}));throw new Error(_0xf5ed81['message']||_0xf5ed81['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x2b7f40['json']();},async 'deleteRoleDefinition'(_0x462cb2){const _0x37316e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x462cb2),{'method':'DELETE'});if(!_0x37316e['ok']){const _0x49fc96=await _0x37316e['json']()['catch'](()=>({'message':_0x37316e['statusText']}));throw new Error(_0x49fc96['message']||_0x49fc96['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x37316e['json']();},async 'getAvailablePermissions'(){const _0x28860a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x28860a['ok']){const _0x3c8abf=await _0x28860a['json']()['catch'](()=>({'message':_0x28860a['statusText']}));throw new Error(_0x3c8abf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x28860a['json']();},async 'getGitProviderAllowedTeams'(_0x3f888e){const _0x14e08f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3f888e)+'/allowed-teams');if(!_0x14e08f['ok']){const _0x45dddf=await _0x14e08f['json']()['catch'](()=>({'message':_0x14e08f['statusText']}));throw new Error(_0x45dddf['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x14e08f['json']();},async 'setGitProviderAllowedTeams'(_0x192e4b,_0x83a789){const _0x3e437f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192e4b)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x83a789})});if(!_0x3e437f['ok']){const _0x43a8ca=await _0x3e437f['json']()['catch'](()=>({'message':_0x3e437f['statusText']}));throw new Error(_0x43a8ca['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3e437f['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 _0xbe7368=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c20c5=>{_0x5c20c5['el']['style']['bottom']=_0xbe7368+'px';const _0x3d40a2=_0x5c20c5['el']['offsetHeight']||toastState['defaultHeight'];_0xbe7368+=_0x3d40a2+toastState['gap'];});});}function removeToastById(_0x5ae3a7){const _0x159a0b=toastState['toasts']['findIndex'](_0x41f143=>_0x41f143['id']===_0x5ae3a7);if(_0x159a0b===-0x1)return;const _0x33ed80=toastState['toasts'][_0x159a0b];if(_0x33ed80['timeoutId'])clearTimeout(_0x33ed80['timeoutId']);_0x33ed80['el']['classList']['remove']('show'),setTimeout(()=>_0x33ed80['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x159a0b,0x1),repositionAllToasts();}function registerToast(_0x9e0f4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x9e0f4e),repositionAllToasts(),_0x9e0f4e['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(_0x15672c){if(_0x15672c===null||_0x15672c===undefined)return'';return String(_0x15672c)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x49fd78,_0x5d6a74){if(_0x49fd78&&typeof _0x49fd78==='object'&&!Array['isArray'](_0x49fd78))return{'code':typeof _0x49fd78['text']==='string'?_0x49fd78['text']:'','language':typeof _0x49fd78['lang']==='string'?_0x49fd78['lang']:''};return{'code':typeof _0x49fd78==='string'?_0x49fd78:'','language':typeof _0x5d6a74==='string'?_0x5d6a74:''};}function buildMermaidBlock(_0x2001cc){const _0x1a0ded=String(_0x2001cc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1a0ded))+'\x22>'+escapeHtmlValue(_0x1a0ded)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x53188f=new marked['Renderer'](),_0xa45361=_0x53188f['code']['bind'](_0x53188f);return _0x53188f['code']=function(_0x391d04,_0x1e56df,..._0x4e2046){const {code:_0x25bfae,language:_0x337ed8}=getMarkdownCodeBlockPayload(_0x391d04,_0x1e56df),_0x1c4978=String(_0x337ed8||'')['trim']()['toLowerCase']();if(_0x1c4978==='mermaid')return buildMermaidBlock(_0x25bfae);const _0x203013=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x203013&&_0x1c4978)try{const _0x2ffdb1=_0x203013['getLanguage'](_0x1c4978)?_0x1c4978:'plaintext',_0x1e3c87=_0x203013['highlight'](_0x25bfae,{'language':_0x2ffdb1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1c4978)+'\x22>'+_0x1e3c87+'</code></pre>';}catch(_0x342583){console['error']('Syntax\x20highlighting\x20error:',_0x342583);}return _0xa45361(_0x391d04,_0x1e56df,..._0x4e2046);},sharedMarkedRenderer=_0x53188f,_0x53188f;}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 _0xd326e1=window['mermaid'];if(!_0xd326e1||typeof _0xd326e1['initialize']!=='function')return _0xd326e1||null;return _0xd326e1['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0xd326e1;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7dca,_0x530d3a)=>{const _0x19112e=()=>_0x4c7dca(configureMermaidInstance()),_0x39966d=()=>{mermaidLoadPromise=null,_0x530d3a(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x2c4260=document['getElementById'](MERMAID_SCRIPT_ID);!_0x2c4260&&(_0x2c4260=document['createElement']('script'),_0x2c4260['id']=MERMAID_SCRIPT_ID,_0x2c4260['src']=MERMAID_SCRIPT_SRC,_0x2c4260['async']=!![],document['head']['appendChild'](_0x2c4260));if(window['mermaid']){_0x19112e();return;}_0x2c4260['addEventListener']('load',_0x19112e,{'once':!![]}),_0x2c4260['addEventListener']('error',_0x39966d,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x161696){const _0x47e054=_0x161696['getAttribute']('data-mermaid-source');if(!_0x47e054)return null;let _0x362d87=_0x47e054;try{_0x362d87=decodeURIComponent(_0x47e054);}catch{}return _0x161696['textContent']=_0x362d87,_0x161696['removeAttribute']('data-processed'),_0x161696['removeAttribute']('aria-roledescription'),_0x161696['removeAttribute']('role'),_0x161696['removeAttribute']('aria-label'),_0x362d87;}function collectMermaidNodes(_0x6ad670,_0x1e41ce){if(!(_0x6ad670 instanceof Element))return;_0x6ad670['matches']('.mermaid[data-mermaid-source]')&&_0x1e41ce['add'](_0x6ad670),_0x6ad670['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x338d3f=>{_0x1e41ce['add'](_0x338d3f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11e5a8=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x28b005=>setTimeout(_0x28b005,0x0);_0x11e5a8(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a383d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a383d);});});}function queueMermaidRender(_0xcbb8e3){const _0x25827c=new Set();_0xcbb8e3 instanceof Document||_0xcbb8e3 instanceof DocumentFragment?_0xcbb8e3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3eaaea=>_0x25827c['add'](_0x3eaaea)):collectMermaidNodes(_0xcbb8e3,_0x25827c);if(_0x25827c['size']===0x0)return;_0x25827c['forEach'](_0x297f7c=>pendingMermaidNodes['add'](_0x297f7c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x312913=Array['from'](pendingMermaidNodes)['filter'](_0x4f6b7f=>_0x4f6b7f['isConnected']);pendingMermaidNodes['clear']();if(_0x312913['length']===0x0)return;const _0x4876fe=await loadMermaid();if(!_0x4876fe)return;configureMermaidInstance();const _0x564f5d=getMermaidTheme();for(const _0x3a7337 of _0x312913){const _0x2cd3dd=_0x3a7337['getAttribute']('data-mermaid-source');if(!_0x2cd3dd)continue;const _0x28818a=_0x3a7337['getAttribute']('data-processed')==='true';if(_0x28818a&&_0x3a7337['dataset']['mermaidTheme']===_0x564f5d)continue;restoreMermaidSource(_0x3a7337);try{if(typeof _0x4876fe['run']==='function')await _0x4876fe['run']({'nodes':[_0x3a7337]});else typeof _0x4876fe['init']==='function'&&_0x4876fe['init'](undefined,[_0x3a7337]);_0x3a7337['dataset']['mermaidTheme']=_0x564f5d,delete _0x3a7337['dataset']['mermaidError'];}catch(_0x3571bf){console['error']('Mermaid\x20render\x20failed:',_0x3571bf),restoreMermaidSource(_0x3a7337),_0x3a7337['dataset']['mermaidError']='true',delete _0x3a7337['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x46ea8e=>{_0x46ea8e['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x46ea8e);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1b4666=>{_0x1b4666['forEach'](_0x2ee9a4=>{_0x2ee9a4['addedNodes']['forEach'](_0x4befe1=>{_0x4befe1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x4befe1);});});}),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'(_0x149b85){const _0x58e3dd=new Date(_0x149b85),_0x357e60=new Date(),_0x4203ab=_0x357e60-_0x58e3dd,_0x220514=Math['floor'](_0x4203ab/0x3e8),_0x3416ba=Math['floor'](_0x220514/0x3c),_0x448a43=Math['floor'](_0x3416ba/0x3c),_0x5d5caf=Math['floor'](_0x448a43/0x18);if(_0x220514<0x3c)return'now';if(_0x3416ba<0x3c)return _0x3416ba+'m\x20ago';if(_0x448a43<0x18)return _0x448a43+'h\x20ago';return _0x5d5caf+'d\x20ago';},'getStatusIcon'(_0x16bd7b){switch(_0x16bd7b){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4e0c54){switch(_0x4e0c54){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'(_0x56a574,_0xb0cb2=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x4c7ac0={};_0x4c7ac0['text/plain']=new Blob([_0x56a574],{'type':'text/plain'});_0xb0cb2&&(_0x4c7ac0['text/html']=new Blob([_0xb0cb2],{'type':'text/html'}));const _0xc57019=new ClipboardItem(_0x4c7ac0);return await navigator['clipboard']['write']([_0xc57019]),!![];}catch(_0x4ac4b2){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4ac4b2);}try{const _0x1b370b=_0x4fafdf=>{_0x4fafdf['preventDefault'](),_0x4fafdf['clipboardData']['setData']('text/plain',_0x56a574),_0xb0cb2&&_0x4fafdf['clipboardData']['setData']('text/html',_0xb0cb2);};document['addEventListener']('copy',_0x1b370b);const _0x4f811f=document['execCommand']('copy');document['removeEventListener']('copy',_0x1b370b);if(_0x4f811f)return!![];}catch(_0x490f0c){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x490f0c);}try{const _0x3a5472=document['createElement']('textarea');_0x3a5472['value']=_0x56a574,_0x3a5472['style']['position']='fixed',_0x3a5472['style']['opacity']='0',_0x3a5472['style']['pointerEvents']='none',document['body']['appendChild'](_0x3a5472),_0x3a5472['select']();const _0x2f9aa4=document['execCommand']('copy');return document['body']['removeChild'](_0x3a5472),_0x2f9aa4;}catch(_0x52b891){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x52b891),![];}},'showToast'(_0x119f9d,_0x16a794='info'){const _0x2468a3=getNextToastId(),_0x1a581b=document['createElement']('div');_0x1a581b['className']='toast\x20toast-'+_0x16a794,_0x1a581b['textContent']=_0x119f9d,_0x1a581b['dataset']['toastId']=_0x2468a3,document['body']['appendChild'](_0x1a581b);const _0x1d5dbd=_0x16a794==='error'?0x2710:0xbb8,_0xd1f47c=setTimeout(()=>{removeToastById(_0x2468a3);},_0x1d5dbd),_0x46ec2d={'id':_0x2468a3,'el':_0x1a581b,'timeoutId':_0xd1f47c};return registerToast(_0x46ec2d),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x1a581b['classList']['add']('show');});}),_0x2468a3;},'showError'(_0xa4308f){console['error'](_0xa4308f);const _0x373b82=typeof _0xa4308f==='string'?_0xa4308f:_0xa4308f['message']||'An\x20error\x20occurred';this['showToast'](_0x373b82,'error');},'showSuccess'(_0x3439c5){this['showToast'](_0x3439c5,'success');},'capitalize'(_0x224956){if(!_0x224956)return'';return _0x224956['charAt'](0x0)['toUpperCase']()+_0x224956['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5d6b62){return escapeHtmlValue(_0x5d6b62);},'ansiToHtml'(_0x2df0fe){if(_0x2df0fe===null||_0x2df0fe===undefined)return'';let _0x49aae6=this['escapeHtml'](_0x2df0fe);const _0x2e8897={'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'},_0x4b3d29={'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 _0x312bbb=0x0;return _0x49aae6=_0x49aae6['replace'](/\x1b\[([0-9;]*)m/g,(_0x42e5c6,_0x1f3eb9)=>{if(!_0x1f3eb9||_0x1f3eb9==='0'){const _0x167f9a='</span>'['repeat'](_0x312bbb);return _0x312bbb=0x0,_0x167f9a;}const _0x19bf71=_0x1f3eb9['split'](';'),_0x599622=[];for(const _0x5e8327 of _0x19bf71){if(_0x5e8327==='1')_0x599622['push']('font-weight:bold');else{if(_0x5e8327==='2')_0x599622['push']('opacity:0.7');else{if(_0x5e8327==='3')_0x599622['push']('font-style:italic');else{if(_0x5e8327==='4')_0x599622['push']('text-decoration:underline');else{if(_0x5e8327==='9')_0x599622['push']('text-decoration:line-through');else{if(_0x2e8897[_0x5e8327])_0x599622['push']('color:'+_0x2e8897[_0x5e8327]);else{if(_0x4b3d29[_0x5e8327])_0x599622['push']('background-color:'+_0x4b3d29[_0x5e8327]);}}}}}}}if(_0x599622['length']>0x0)return _0x312bbb++,'<span\x20style=\x22'+_0x599622['join'](';')+'\x22>';return'';}),_0x49aae6+='</span>'['repeat'](_0x312bbb),_0x49aae6=_0x49aae6['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4daaf4,_0x462e45)=>{if(!_0x462e45||_0x462e45==='0')return'';const _0x1fcc86=_0x462e45['split'](';'),_0x296217=[];for(const _0x1a8f16 of _0x1fcc86){if(_0x1a8f16==='1')_0x296217['push']('font-weight:bold');else{if(_0x2e8897[_0x1a8f16])_0x296217['push']('color:'+_0x2e8897[_0x1a8f16]);else{if(_0x4b3d29[_0x1a8f16])_0x296217['push']('background-color:'+_0x4b3d29[_0x1a8f16]);}}}if(_0x296217['length']>0x0)return'<span\x20style=\x22'+_0x296217['join'](';')+'\x22>';return'';}),_0x49aae6;},'showModal'({title:_0x368a9,content:_0x545576,buttons:buttons=[]}){const _0x575630='\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'](_0x368a9)+'</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'+_0x545576+'\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']((_0x13a3e0,_0x14bbc2)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13a3e0['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x14bbc2+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13a3e0['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',_0x2c9132=document['createElement']('div');_0x2c9132['id']='utils-modal',_0x2c9132['className']='modal',_0x2c9132['innerHTML']=_0x575630,document['body']['appendChild'](_0x2c9132);const _0x2dcccc=document['getElementById']('utils-modal-close');_0x2dcccc&&_0x2dcccc['addEventListener']('click',()=>this['hideModal']());const _0xde6f5d=_0x2c9132['querySelectorAll']('[data-btn-index]');_0xde6f5d['forEach'](_0x2d1d5c=>{const _0x172185=parseInt(_0x2d1d5c['dataset']['btnIndex']);buttons[_0x172185]?.['onClick']&&_0x2d1d5c['addEventListener']('click',buttons[_0x172185]['onClick']);});const _0x2ba979=document['getElementById']('utils-modal-overlay');_0x2ba979&&_0x2ba979['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x16ac66=document['getElementById']('utils-modal');_0x16ac66&&_0x16ac66['remove']();},'parseKeyValuePairs'(_0xbe9370){const _0x127fb2={};if(!_0xbe9370)return _0x127fb2;return _0xbe9370['split'](/\r?\n/)['map'](_0x5b81de=>_0x5b81de['trim']())['filter'](Boolean)['forEach'](_0x1428b1=>{const _0x4cc6ce=_0x1428b1['indexOf']('=');if(_0x4cc6ce>0x0){const _0x417bb3=_0x1428b1['slice'](0x0,_0x4cc6ce)['trim'](),_0x3a95a0=_0x1428b1['slice'](_0x4cc6ce+0x1)['trim']();if(_0x417bb3)_0x127fb2[_0x417bb3]=_0x3a95a0;}}),_0x127fb2;},'debounce'(_0x3ebad5,_0x2b1f64=0xfa){let _0x1e3eed=null;return(..._0x883a08)=>{clearTimeout(_0x1e3eed),_0x1e3eed=setTimeout(()=>_0x3ebad5['apply'](this,_0x883a08),_0x2b1f64);};},'formatTimestamp'(_0x22835e){if(!_0x22835e)return'N/A';const _0x4295d5=new Date(_0x22835e);return _0x4295d5['toLocaleDateString']()+'\x20'+_0x4295d5['toLocaleTimeString']();},'getQueryParams'(){const _0x1c54ff=new URLSearchParams(window['location']['search']),_0x5c8767={};for(const [_0x1cf61c,_0x66c0b1]of _0x1c54ff){_0x5c8767[_0x1cf61c]=_0x66c0b1;}return _0x5c8767;},'formatDuration'(_0x3633d7,_0x474aeb){if(!_0x3633d7)return'N/A';const _0x3e7688=new Date(_0x3633d7),_0x15a242=_0x474aeb?new Date(_0x474aeb):new Date(),_0x3fcf9d=_0x15a242-_0x3e7688;if(_0x3fcf9d<0x0)return'0s';const _0x5ee2e0=Math['floor'](_0x3fcf9d/0x3e8),_0x238237=Math['floor'](_0x5ee2e0/0x3c),_0x5d9ce8=Math['floor'](_0x238237/0x3c),_0x4cd574=Math['floor'](_0x5d9ce8/0x18);if(_0x5ee2e0<0x3c)return _0x5ee2e0+'s';if(_0x238237<0x3c)return _0x238237+'m\x20'+_0x5ee2e0%0x3c+'s';if(_0x5d9ce8<0x18)return _0x5d9ce8+'h\x20'+_0x238237%0x3c+'m\x20'+_0x5ee2e0%0x3c+'s';return _0x4cd574+'d\x20'+_0x5d9ce8%0x18+'h\x20'+_0x238237%0x3c+'m';},'renderMarkdown'(_0x35c3e2,_0x5693e8={}){if(!_0x35c3e2)return'';_0x35c3e2=this['rewriteAttachmentLinks'](_0x35c3e2,_0x5693e8),_0x35c3e2=this['rewriteColorSyntax'](_0x35c3e2);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x35c3e2);}catch(_0x13caae){return console['error']('Markdown\x20parsing\x20error:',_0x13caae),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);}},'rewriteAttachmentLinks'(_0x359c5d,_0x478007={}){const _0x371a88=typeof _0x478007['resolveAttachmentUrl']==='function'?_0x478007['resolveAttachmentUrl']:_0x478007['taskId']?_0xfda62f=>API_BASE+'/tasks/'+_0x478007['taskId']+'/attachments/'+encodeURIComponent(_0xfda62f):null;if(!_0x371a88)return _0x359c5d;return String(_0x359c5d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x58e661,_0x2b3a7c)=>{const _0xd5c11=String(_0x2b3a7c||'')['trim']();if(!_0xd5c11)return _0x58e661;let _0x14eecf=_0xd5c11;try{_0x14eecf=decodeURIComponent(_0xd5c11);}catch{}const _0x100b1c=_0x371a88(_0x14eecf);if(!_0x100b1c)return _0x58e661;return']('+_0x100b1c+')';});},'rewriteColorSyntax'(_0x1c1e98){if(!_0x1c1e98)return _0x1c1e98;return String(_0x1c1e98)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x52f966,_0x147c3e,_0x45a1f7)=>{const _0xf1e650=this['rewriteColorSyntax'](_0x45a1f7);return'<span\x20style=\x22color:\x20'+_0x147c3e+'\x22>'+_0xf1e650+'</span>';});},'renderMarkdownFallback'(_0x47df1f,_0x2599d5={}){if(!_0x47df1f)return'';_0x47df1f=_0x47df1f['replace'](/\r\n/g,'\x0a'),_0x47df1f=_0x47df1f['replace'](/\r/g,'\x0a'),_0x47df1f=this['rewriteAttachmentLinks'](_0x47df1f,_0x2599d5);let _0x22039d=this['escapeHtml'](_0x47df1f);return _0x22039d=_0x22039d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22039d=_0x22039d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22039d=_0x22039d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22039d=_0x22039d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22039d=_0x22039d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22039d=_0x22039d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22039d=_0x22039d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22039d=_0x22039d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22039d=_0x22039d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22039d=_0x22039d['replace'](/\n\n/g,'</p><p>'),_0x22039d=_0x22039d['replace'](/\n/g,'<br>'),'<p>'+_0x22039d+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x51ff77=new Uint8Array(0x10);crypto['getRandomValues'](_0x51ff77),_0x51ff77[0x6]=_0x51ff77[0x6]&0xf|0x40,_0x51ff77[0x8]=_0x51ff77[0x8]&0x3f|0x80;const _0x1ae7a3=Array['from'](_0x51ff77,_0x384d8e=>_0x384d8e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x1ae7a3['slice'](0x0,0x8)+'-'+_0x1ae7a3['slice'](0x8,0xc)+'-'+_0x1ae7a3['slice'](0xc,0x10)+'-'+_0x1ae7a3['slice'](0x10,0x14)+'-'+_0x1ae7a3['slice'](0x14);}};export class CustomSelect{constructor(_0x567263,_0x2f6079={}){this['nativeSelect']=_0x567263,this['options']=_0x2f6079,this['isOpen']=![],this['selectedValue']=_0x567263['value']||'',this['searchable']=_0x2f6079['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x41d808=document['createElement']('div');_0x41d808['className']='custom-select';const _0xc1e7d0=document['createElement']('div');_0xc1e7d0['className']='custom-select-trigger',_0xc1e7d0['setAttribute']('tabindex','0'),_0xc1e7d0['setAttribute']('role','button'),_0xc1e7d0['setAttribute']('aria-haspopup','listbox');const _0x5174f6=document['createElement']('span');_0x5174f6['className']='custom-select-trigger-text';const _0x5a117f=document['createElement']('span');_0x5a117f['className']='custom-select-arrow',_0x5a117f['textContent']='▼',_0xc1e7d0['appendChild'](_0x5174f6),_0xc1e7d0['appendChild'](_0x5a117f);const _0x1df1e8=document['createElement']('div');_0x1df1e8['className']='custom-select-dropdown',_0x1df1e8['setAttribute']('role','listbox');if(this['searchable']){const _0x122aa9=document['createElement']('div');_0x122aa9['className']='custom-select-search';const _0x40ff17=document['createElement']('input');_0x40ff17['type']='text',_0x40ff17['className']='custom-select-search-input',_0x40ff17['placeholder']='Type\x20to\x20search...',_0x40ff17['setAttribute']('aria-label','Search\x20options'),_0x40ff17['addEventListener']('input',_0x16e4c5=>{this['searchQuery']=_0x16e4c5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x40ff17['addEventListener']('keydown',_0x5a126=>{if(_0x5a126['key']==='Escape')_0x5a126['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x5a126['key']==='Enter'){_0x5a126['preventDefault'](),_0x5a126['stopPropagation']();const _0x1682ed=_0x1df1e8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1682ed){const _0x4d020c=_0x1682ed['getAttribute']('data-value');this['select'](_0x4d020c);}}}}),_0x122aa9['appendChild'](_0x40ff17),_0x1df1e8['appendChild'](_0x122aa9),this['searchInput']=_0x40ff17;}const _0x338ef=document['createElement']('div');_0x338ef['className']='custom-select-options',_0x1df1e8['appendChild'](_0x338ef),_0x41d808['appendChild'](_0xc1e7d0),_0x41d808['appendChild'](_0x1df1e8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x41d808,this['nativeSelect']),this['wrapper']=_0x41d808,this['trigger']=_0xc1e7d0,this['triggerText']=_0x5174f6,this['dropdown']=_0x1df1e8,this['optionsContainer']=_0x338ef,_0xc1e7d0['addEventListener']('click',()=>this['toggle']()),_0xc1e7d0['addEventListener']('keydown',_0x5de506=>this['handleKeydown'](_0x5de506)),document['addEventListener']('click',_0x22c4d5=>{!_0x41d808['contains'](_0x22c4d5['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2a7fd9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2a7fd9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1b1f6d=new MutationObserver(()=>{this['updateDisabledState']();});_0x1b1f6d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x13dc71=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x13dc71['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5b3321=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5b3321),this['trigger']['setAttribute']('aria-disabled',_0x5b3321?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5b3321?'-1':'0'),_0x5b3321&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2655f6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x129ce8=_0x2655f6['filter'](_0x31978e=>!_0x31978e['disabled']&&!_0x31978e['hidden']);_0x2655f6['forEach']((_0x432cb2,_0x23a392)=>{const _0x2ce75=document['createElement']('div');_0x2ce75['className']='custom-select-option',_0x2ce75['textContent']=_0x432cb2['textContent'],_0x2ce75['setAttribute']('data-value',_0x432cb2['value']),_0x2ce75['setAttribute']('data-index',_0x23a392),_0x2ce75['setAttribute']('role','option'),_0x432cb2['disabled']?_0x2ce75['classList']['add']('disabled'):_0x2ce75['addEventListener']('click',()=>this['select'](_0x432cb2['value'])),_0x432cb2['value']===this['selectedValue']&&_0x2ce75['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ce75),this['allOptions']['push']({'element':_0x2ce75,'text':_0x432cb2['textContent']['toLowerCase'](),'value':_0x432cb2['value'],'disabled':_0x432cb2['disabled']});});if(this['searchable']&&this['searchInput']){const _0x29d506=this['searchInput']['parentElement'];_0x129ce8['length']>0x3?_0x29d506['style']['display']='':_0x29d506['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x17a147=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4f25a3=>{if(!_0x17a147||_0x4f25a3['disabled'])_0x4f25a3['element']['style']['display']='';else{const _0x45ec49=_0x4f25a3['text']['includes'](_0x17a147);_0x4f25a3['element']['style']['display']=_0x45ec49?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x35418b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x35418b,this['nativeSelect']['value']=_0x35418b;const _0x287abb=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x287abb),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xab781c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xab781c&&(this['triggerText']['textContent']=_0xab781c['textContent'],_0xab781c['disabled']||_0xab781c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3ab874=>{_0x3ab874['getAttribute']('data-value')===this['selectedValue']?_0x3ab874['classList']['add']('selected'):_0x3ab874['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 _0x5bbba0=window['getComputedStyle'](this['dropdown']);if(_0x5bbba0['position']==='fixed'){const _0x514ab2=this['trigger']['getBoundingClientRect'](),_0x5a2426=parseInt(_0x5bbba0['maxHeight'])||0xc8,_0x32e8cb=window['innerHeight'],_0x1bb3bc=_0x32e8cb-_0x514ab2['bottom'],_0x5af3b7=_0x514ab2['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3c1a62;_0x1bb3bc<_0x5a2426&&_0x5af3b7>_0x1bb3bc?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x32e8cb-_0x514ab2['top']+'px',_0x3c1a62=Math['min'](_0x5a2426,_0x5af3b7-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x514ab2['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3c1a62=Math['min'](_0x5a2426,_0x1bb3bc-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px');if(this['optionsContainer']){let _0x4daf98=_0x3c1a62;if(this['searchInput']){const _0x1ede44=this['searchInput']['parentElement'];_0x1ede44&&(_0x4daf98-=_0x1ede44['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4daf98)+'px';}this['dropdown']['style']['left']=_0x514ab2['left']+'px',this['dropdown']['style']['width']=_0x514ab2['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4b3009=this['searchInput']['parentElement'];_0x4b3009&&_0x4b3009['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'](_0x41fd18){if(this['nativeSelect']['disabled'])return;if(_0x41fd18['key']==='Enter'||_0x41fd18['key']==='\x20')_0x41fd18['preventDefault'](),this['toggle']();else _0x41fd18['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x20fb00='\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',_0x20fb00),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x453571=document['getElementById']('confirm-dialog-close'),_0x4857a3=document['getElementById']('confirm-dialog-cancel'),_0x37cb30=document['getElementById']('confirm-dialog-confirm'),_0x41cc6b=this['_modal']['querySelector']('.modal-overlay');_0x453571['addEventListener']('click',()=>this['_resolve'](![])),_0x4857a3['addEventListener']('click',()=>this['_resolve'](![])),_0x37cb30['addEventListener']('click',()=>this['_resolve'](!![])),_0x41cc6b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x260821=>{if(_0x260821['key']==='Escape')_0x260821['preventDefault'](),this['_resolve'](![]);else _0x260821['key']==='Enter'&&(_0x260821['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xaf269e,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xff39d=>{this['_resolvePromise']=_0xff39d,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xaf269e;const _0x5bb63a=document['getElementById']('confirm-dialog-cancel'),_0xadc58=document['getElementById']('confirm-dialog-confirm');_0x5bb63a['textContent']=cancelText,_0xadc58['textContent']=confirmText,_0xadc58['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xadc58['focus']();});},'_resolve'(_0x3d2375){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3d2375),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e3b17,_0x25c371={}){this['container']=_0x3e3b17,this['options']={'placeholder':_0x25c371['placeholder']||'Type\x20to\x20search...','maxItems':_0x25c371['maxItems']||0x64,'loadItems':_0x25c371['loadItems']||(async()=>[]),'renderItem':_0x25c371['renderItem']||(_0x459929=>({'primary':String(_0x459929),'secondary':''})),'onSelect':_0x25c371['onSelect']||(()=>{}),'filterItems':_0x25c371['filterItems']||null,'getItemValue':_0x25c371['getItemValue']||(_0xbca5b9=>_0xbca5b9),'sortItems':_0x25c371['sortItems']||null,'debounceMs':_0x25c371['debounceMs']||0xc8,'minCharsForSearch':_0x25c371['minCharsForSearch']||0x0,'emptyMessage':_0x25c371['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x25c371['loadingMessage']||'Loading...','preload':_0x25c371['preload']!==![],'searchMode':_0x25c371['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',_0x43001c=>this['onBlur'](_0x43001c)),this['input']['addEventListener']('input',_0x536f04=>this['onInput'](_0x536f04)),this['input']['addEventListener']('keydown',_0x38f5a0=>this['onKeydown'](_0x38f5a0)),this['clearBtn']['addEventListener']('mousedown',_0x78fe83=>{_0x78fe83['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x21e3c5=>{_0x21e3c5['preventDefault']();}),document['addEventListener']('click',_0x565e7f=>{!this['wrapper']['contains'](_0x565e7f['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(_0xc28494){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xc28494);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x274d68){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4a907e){const _0x3a05f7=_0x4a907e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3a05f7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3a05f7):this['loadAndShow'](_0x3a05f7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48daba){switch(_0x48daba['key']){case'ArrowDown':_0x48daba['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48daba['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48daba['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48daba['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5de43e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x183d7c=this['selectedIndex']+_0x5de43e;if(_0x183d7c>=0x0&&_0x183d7c<this['filteredItems']['length']){this['selectedIndex']=_0x183d7c,this['updateSelectionHighlight']();const _0x5d1bb9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5d1bb9[this['selectedIndex']]&&_0x5d1bb9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x16f963=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x16f963['forEach']((_0x142f2f,_0x27bc54)=>{_0x142f2f['classList']['toggle']('keyboard-selected',_0x27bc54===this['selectedIndex']);});}async['loadAndShow'](_0x247c43){this['showLoading']();try{const _0x20fdbd=await this['options']['loadItems'](_0x247c43);if(this['options']['searchMode']==='server'){let _0x7b2552=_0x20fdbd;this['options']['sortItems']&&(_0x7b2552=this['options']['sortItems']([..._0x20fdbd]));this['filteredItems']=_0x7b2552;const _0x23394a=this['filteredItems']['length']>=this['options']['maxItems'];_0x23394a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23394a),this['open']();}else this['allItems']=_0x20fdbd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x247c43);}catch(_0x31a145){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x31a145),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419e8e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419e8e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x464105=this['filteredItems']['length']>=this['options']['maxItems'];_0x464105&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x464105),this['open']();}['renderItems'](_0x57524b){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']((_0x454d35,_0x4d5f68)=>{const _0x433a79=document['createElement']('div');_0x433a79['className']='autocomplete-select-item',_0x433a79['setAttribute']('role','option'),_0x433a79['setAttribute']('data-index',_0x4d5f68);const _0x5bdc67=this['options']['renderItem'](_0x454d35);let _0x22b2ef='';_0x5bdc67['icon']&&(_0x22b2ef='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5bdc67['iconClass']||'')+'\x22>'+_0x5bdc67['icon']+'</span>'),_0x433a79['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x22b2ef+'\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'](_0x5bdc67['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5bdc67['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5bdc67['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x433a79['addEventListener']('click',()=>{this['selectItem'](_0x454d35);}),_0x433a79['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4d5f68,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x433a79);}),_0x57524b?(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'](_0x304a7c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x304a7c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xd91139){this['selectedItem']=_0xd91139;const _0x16a22d=this['options']['renderItem'](_0xd91139);this['input']['value']=_0x16a22d['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xd91139);}['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'](_0x24395f){if(_0x24395f){this['selectedItem']=_0x24395f;const _0x5e05f9=this['options']['renderItem'](_0x24395f);this['input']['value']=_0x5e05f9['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5bedca){this['allItems']=_0x5bedca,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'](_0x341b6c){this['input']['placeholder']=_0x341b6c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x48c6db=null){const _0x1de539=document['getElementById']('admin-menu-container'),_0x5372cb=document['getElementById']('admin-menu-btn'),_0x4345d6=document['getElementById']('admin-menu');if(!_0x1de539||!_0x5372cb||!_0x4345d6)return;try{!_0x48c6db&&(_0x48c6db=await API['getCurrentUser']());if(_0x48c6db){const _0x45ec78=window['Permissions'],_0x463836=_0x45ec78['hasServerPermission'](_0x48c6db,'*')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:manage')||_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')||_0x45ec78['hasTeamPermission'](_0x48c6db,'teams:manage')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:view_details');if(!_0x463836)return;_0x1de539['hidden']=![];if(!_0x45ec78['hasServerPermission'](_0x48c6db,'*')){const _0x39f8f5=_0x4345d6['querySelectorAll']('.admin-menu-item');_0x39f8f5['forEach'](_0x2376ea=>{const _0x1e566d=_0x2376ea['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1e566d==='Users'&&!_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Skills'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Settings'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Health'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Git\x20History'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Roles'&&(_0x2376ea['hidden']=!![]);});}_0x5372cb['addEventListener']('click',_0x1c8cca=>{_0x1c8cca['stopPropagation']();const _0xb1192f=document['getElementById']('actions-menu');if(_0xb1192f)_0xb1192f['hidden']=!![];_0x4345d6['hidden']=!_0x4345d6['hidden'];}),document['addEventListener']('click',_0x172a7d=>{!_0x4345d6['hidden']&&!_0x5372cb['contains'](_0x172a7d['target'])&&!_0x4345d6['contains'](_0x172a7d['target'])&&(_0x4345d6['hidden']=!![]);}),document['addEventListener']('keydown',_0x155a9f=>{_0x155a9f['key']==='Escape'&&!_0x4345d6['hidden']&&(_0x4345d6['hidden']=!![]);});const _0x48e4fe=document['getElementById']('server-health-btn');_0x48e4fe&&_0x48e4fe['addEventListener']('click',async()=>{_0x4345d6['hidden']=!![];const {openServerHealthModal:_0x11be30}=await import('./server-health.js');_0x11be30();});}}catch(_0x5ee3c1){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ee3c1['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};
|