@profoundlogic/coderflow-server 0.7.7 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/compression-filter.js +1 -0
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -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/logs.js +1 -0
- 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/stats.js +1 -0
- 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/admin.css +575 -0
- package/dist/web-ui/public/admin.html +636 -0
- package/dist/web-ui/public/admin.js +1 -0
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.html +2 -2
- 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.html +2 -2
- 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.html +2 -170
- 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.html +2 -2
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.html +66 -4
- 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.html +2 -2
- 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/styles.css +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.html +2 -2
- 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.html +2 -2
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/web-ui/public/server-health.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x1e6a3c=window['location']['pathname'],_0x5db90e=_0x1e6a3c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db90e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db90e[0x1]),_0x5db90e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x430f73={}){const _0x3f1e82=new URLSearchParams();_0x430f73['userId']&&_0x3f1e82['set']('userId',String(_0x430f73['userId']));_0x430f73['automation']&&_0x3f1e82['set']('automation',String(_0x430f73['automation']));const _0x914179=API_BASE+'/tasks/stats'+(_0x3f1e82['toString']()?'?'+_0x3f1e82['toString']():''),_0xd11ad2=await fetch(_0x914179);if(!_0xd11ad2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0xd11ad2['statusText']);return await _0xd11ad2['json']();},async 'getTasks'(_0x44bc65={}){const _0x31903b=new URLSearchParams();_0x44bc65['status']&&_0x31903b['set']('status',String(_0x44bc65['status']));_0x44bc65['environment']&&_0x31903b['set']('environment',String(_0x44bc65['environment']));_0x44bc65['automation']&&_0x31903b['set']('automation',String(_0x44bc65['automation']));if(_0x44bc65['include']){const _0x2b8bf6=Array['isArray'](_0x44bc65['include'])?_0x44bc65['include']['join'](','):String(_0x44bc65['include']);_0x2b8bf6&&_0x31903b['set']('include',_0x2b8bf6);}_0x44bc65['filter']&&_0x31903b['set']('filter',String(_0x44bc65['filter']));_0x44bc65['page']&&_0x31903b['set']('page',String(_0x44bc65['page']));_0x44bc65['limit']&&_0x31903b['set']('limit',String(_0x44bc65['limit']));_0x44bc65['userId']&&_0x31903b['set']('userId',String(_0x44bc65['userId']));_0x44bc65['search']&&_0x31903b['set']('search',String(_0x44bc65['search']));_0x44bc65['includeChildTasks']&&_0x31903b['set']('includeChildTasks','true');const _0x44fc61=API_BASE+'/tasks'+(_0x31903b['toString']()?'?'+_0x31903b['toString']():''),_0x277454=await fetch(_0x44fc61);if(!_0x277454['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x277454['statusText']);return await _0x277454['json']();},async 'getAutomations'(_0x46f0dd={}){const _0x452f9e=new URLSearchParams();_0x46f0dd['environment']&&_0x452f9e['set']('environment',String(_0x46f0dd['environment']));const _0x1f929a=await fetch(API_BASE+'/api/automations'+(_0x452f9e['toString']()?'?'+_0x452f9e['toString']():''));if(!_0x1f929a['ok']){const _0x3e41da=await _0x1f929a['json']()['catch'](()=>({}));throw new Error(_0x3e41da['message']||_0x3e41da['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1f929a['statusText']);}return await _0x1f929a['json']();},async 'getAutomation'(_0x318948){const _0x4ff062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x318948));if(!_0x4ff062['ok']){const _0x11f55f=await _0x4ff062['json']()['catch'](()=>({}));throw new Error(_0x11f55f['message']||_0x11f55f['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4ff062['statusText']);}return await _0x4ff062['json']();},async 'createAutomation'(_0x54cc2b){const _0x168115=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54cc2b||{})});if(!_0x168115['ok']){const _0x57c20f=await _0x168115['json']()['catch'](()=>({}));throw new Error(_0x57c20f['message']||_0x57c20f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x168115['statusText']);}return await _0x168115['json']();},async 'updateAutomation'(_0x92645c,_0x18bef0){const _0x404712=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x92645c),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18bef0||{})});if(!_0x404712['ok']){const _0xe96de4=await _0x404712['json']()['catch'](()=>({}));throw new Error(_0xe96de4['message']||_0xe96de4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x404712['statusText']);}return await _0x404712['json']();},async 'deleteAutomation'(_0x41ad48){const _0x352edb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x41ad48),{'method':'DELETE'});if(!_0x352edb['ok']){const _0x41a849=await _0x352edb['json']()['catch'](()=>({}));throw new Error(_0x41a849['message']||_0x41a849['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x352edb['statusText']);}return await _0x352edb['json']();},async 'triggerAutomation'(_0x1c365e){const _0x5692=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c365e)+'/trigger',{'method':'POST'});if(!_0x5692['ok']){const _0x197d40=await _0x5692['json']()['catch'](()=>({}));throw new Error(_0x197d40['message']||_0x197d40['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5692['statusText']);}return await _0x5692['json']();},async 'setAutomationEnabled'(_0x2036c4,_0x435fcf){const _0xe6e202=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2036c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x435fcf})});if(!_0xe6e202['ok']){const _0x573266=await _0xe6e202['json']()['catch'](()=>({}));throw new Error(_0x573266['message']||_0x573266['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0xe6e202['statusText']);}return await _0xe6e202['json']();},async 'getAutomationHistory'(_0x4f3c70,_0x2ec000=0x32){const _0x575e08=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f3c70)+'/history?limit='+encodeURIComponent(String(_0x2ec000)));if(!_0x575e08['ok']){const _0x511465=await _0x575e08['json']()['catch'](()=>({}));throw new Error(_0x511465['message']||_0x511465['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x575e08['statusText']);}return await _0x575e08['json']();},async 'getTask'(_0x982e53,_0x520697={}){const _0x20d6d2=new URLSearchParams();if(_0x520697['include']){const _0x387938=Array['isArray'](_0x520697['include'])?_0x520697['include']['join'](','):String(_0x520697['include']);if(_0x387938)_0x20d6d2['set']('include',_0x387938);}const _0xc2644f=await fetch(API_BASE+'/tasks/'+_0x982e53+(_0x20d6d2['toString']()?'?'+_0x20d6d2['toString']():''));if(!_0xc2644f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xc2644f['statusText']);return await _0xc2644f['json']();},async 'getTaskResults'(_0x42542f){const _0x9f87bc=await fetch(API_BASE+'/tasks/'+_0x42542f+'/results');if(!_0x9f87bc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x9f87bc['statusText']);return await _0x9f87bc['json']();},async 'getTaskPatches'(_0x1f93fc){const _0x4b5457=await fetch(API_BASE+'/tasks/'+_0x1f93fc+'/patches');if(!_0x4b5457['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x4b5457['statusText']);return await _0x4b5457['json']();},async 'getTaskAttachments'(_0x2b808b){const _0x4bbf21=await fetch(API_BASE+'/tasks/'+_0x2b808b+'/attachments');if(!_0x4bbf21['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4bbf21['statusText']);return await _0x4bbf21['json']();},async 'uploadAttachments'(_0x3f2dc2,_0x1a3ce9){const _0xc322b5=new FormData();for(const _0x258973 of _0x1a3ce9){_0xc322b5['append']('attachments',_0x258973);}const _0x493a22=await fetch(API_BASE+'/tasks/'+_0x3f2dc2+'/attachments',{'method':'POST','body':_0xc322b5});if(!_0x493a22['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x493a22['statusText']);return await _0x493a22['json']();},async 'isAINameGenerationAvailable'(){try{const _0x381225=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x381225['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x381225['json']();}catch(_0x4df15b){return{'available':![],'reason':_0x4df15b['message']};}},async 'generateTaskName'(_0x167fc9){try{const _0x4865c9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x167fc9})});return await _0x4865c9['json']();}catch(_0x1b5c7c){return{'success':![],'error':_0x1b5c7c['message']};}},async 'createTask'(_0x18f614){let _0x520c87,_0x19c4ee={};if(_0x18f614['files']&&_0x18f614['files']['length']>0x0){const _0x59e40a=new FormData();for(const [_0xd52e81,_0x5d967d]of Object['entries'](_0x18f614)){if(_0xd52e81!=='files'){if(_0x5d967d==null)continue;typeof _0x5d967d==='object'?_0x59e40a['append'](_0xd52e81,JSON['stringify'](_0x5d967d)):_0x59e40a['append'](_0xd52e81,String(_0x5d967d));}}for(const _0x3d6f2d of _0x18f614['files']){_0x59e40a['append']('attachments',_0x3d6f2d);}_0x520c87=_0x59e40a;}else _0x19c4ee['Content-Type']='application/json',_0x520c87=JSON['stringify'](_0x18f614);const _0x534bb4=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x19c4ee,'body':_0x520c87});if(!_0x534bb4['ok']){const _0x56d6a0=await _0x534bb4['json'](),_0x1cbaae=new Error(_0x56d6a0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x534bb4['statusText']),{message:_0x38770d,..._0x272558}=_0x56d6a0;Object['assign'](_0x1cbaae,_0x272558);throw _0x1cbaae;}return await _0x534bb4['json']();},async 'createTestTask'(_0x3b6713){const _0x484500=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b6713)});if(!_0x484500['ok']){const _0xff60f2=await _0x484500['json']();throw new Error(_0xff60f2['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x484500['statusText']);}return await _0x484500['json']();},async 'createEphemeralTest'(_0x18cfd0){const _0x35e077=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18cfd0)});if(!_0x35e077['ok']){const _0x37b9ad=await _0x35e077['json']();throw new Error(_0x37b9ad['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35e077['statusText']);}return await _0x35e077['json']();},async 'createDeployTask'(_0x634cc9){const _0x509703=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x634cc9)});if(!_0x509703['ok']){const _0x267354=await _0x509703['json']();throw new Error(_0x267354['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x509703['statusText']);}return await _0x509703['json']();},async 'getEnvironments'(){const _0x441c1e=await fetch(API_BASE+'/environments');if(!_0x441c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x441c1e['statusText']);return await _0x441c1e['json']();},async 'getEnvironment'(_0x319809){const _0x126a94=await fetch(API_BASE+'/environments/'+_0x319809);if(!_0x126a94['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x126a94['statusText']);return await _0x126a94['json']();},async 'getEnvironmentRepoHistory'(_0x331d40,_0x58c336,_0x160d41={}){if(!_0x331d40||!_0x58c336)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9f3fba=new URLSearchParams();if(_0x160d41['limit'])_0x9f3fba['set']('limit',String(_0x160d41['limit']));if(_0x160d41['offset'])_0x9f3fba['set']('offset',String(_0x160d41['offset']));if(_0x160d41['search'])_0x9f3fba['set']('search',String(_0x160d41['search']));if(_0x160d41['branch'])_0x9f3fba['set']('branch',String(_0x160d41['branch']));const _0xe027fa=API_BASE+'/environments/'+encodeURIComponent(_0x331d40)+'/repos/'+encodeURIComponent(_0x58c336)+'/git/history',_0x7e19ff=await fetch(''+_0xe027fa+(_0x9f3fba['toString']()?'?'+_0x9f3fba['toString']():''));if(!_0x7e19ff['ok']){const _0x173c54=await _0x7e19ff['json']()['catch'](()=>({}));throw new Error(_0x173c54['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x7e19ff['statusText']);}return await _0x7e19ff['json']();},async 'getEnvironmentRepoCommit'(_0x5240f5,_0x9ed95d,_0x47379d){if(!_0x5240f5||!_0x9ed95d||!_0x47379d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x11455a=API_BASE+'/environments/'+encodeURIComponent(_0x5240f5)+'/repos/'+encodeURIComponent(_0x9ed95d)+'/git/commits/'+encodeURIComponent(_0x47379d),_0x333aeb=await fetch(_0x11455a);if(!_0x333aeb['ok']){const _0x4c4372=await _0x333aeb['json']()['catch'](()=>({}));throw new Error(_0x4c4372['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x333aeb['statusText']);}return await _0x333aeb['json']();},async 'getEnvironmentRepoBranches'(_0x2aa913,_0x4940c9){if(!_0x2aa913||!_0x4940c9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x433169=API_BASE+'/environments/'+encodeURIComponent(_0x2aa913)+'/repos/'+encodeURIComponent(_0x4940c9)+'/git/branches',_0x4fa38b=await fetch(_0x433169);if(!_0x4fa38b['ok']){const _0x1e3d57=await _0x4fa38b['json']()['catch'](()=>({}));throw new Error(_0x1e3d57['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4fa38b['statusText']);}return await _0x4fa38b['json']();},async 'revertEnvironmentRepoCommit'(_0x262ff8,_0x1211bd,_0x1ec5ce,_0x13c2a4={}){if(!_0x262ff8||!_0x1211bd||!_0x1ec5ce)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x38b19f=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x262ff8)+'/repos/'+encodeURIComponent(_0x1211bd)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1ec5ce,..._0x13c2a4})});if(!_0x38b19f['ok']){const _0x5a1966=await _0x38b19f['json']()['catch'](()=>({}));throw new Error(_0x5a1966['message']||_0x5a1966['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x38b19f['statusText']);}return await _0x38b19f['json']();},async 'getTemplates'(_0x11e597={}){const _0x5a342d=new URLSearchParams();if(_0x11e597['include']){const _0x1497ea=Array['isArray'](_0x11e597['include'])?_0x11e597['include']['join'](','):String(_0x11e597['include']);if(_0x1497ea)_0x5a342d['set']('include',_0x1497ea);}const _0x4c3c37=await fetch(API_BASE+'/templates'+(_0x5a342d['toString']()?'?'+_0x5a342d['toString']():''));if(!_0x4c3c37['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4c3c37['statusText']);return await _0x4c3c37['json']();},async 'getTemplatesForEnvironment'(_0x281c55,_0x1e8102={}){if(!_0x281c55)throw new Error('Environment\x20name\x20is\x20required');const _0x5c353d=new URLSearchParams();if(_0x1e8102['include']){const _0x1205b5=Array['isArray'](_0x1e8102['include'])?_0x1e8102['include']['join'](','):String(_0x1e8102['include']);if(_0x1205b5)_0x5c353d['set']('include',_0x1205b5);}const _0x31973d=await fetch(API_BASE+'/templates/'+_0x281c55+(_0x5c353d['toString']()?'?'+_0x5c353d['toString']():''));if(!_0x31973d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x281c55+':\x20'+_0x31973d['statusText']);return await _0x31973d['json']();},async 'getTemplate'(_0x2eaf7e,_0x5ceec8,_0x17cfc3={}){if(!_0x2eaf7e||!_0x5ceec8)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x312961=new URLSearchParams();if(_0x17cfc3['include']){const _0x4987f9=Array['isArray'](_0x17cfc3['include'])?_0x17cfc3['include']['join'](','):String(_0x17cfc3['include']);if(_0x4987f9)_0x312961['set']('include',_0x4987f9);}const _0x215bb0=await fetch(API_BASE+'/templates/'+_0x2eaf7e+'/'+_0x5ceec8+(_0x312961['toString']()?'?'+_0x312961['toString']():''));if(!_0x215bb0['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x215bb0['statusText']);return await _0x215bb0['json']();},async 'getTaskLogs'(_0xf48b7b,_0xe2a088={}){if(!_0xf48b7b)throw new Error('Task\x20ID\x20is\x20required');const _0x36c855=new URLSearchParams();_0xe2a088['tail']&&_0x36c855['set']('tail',String(_0xe2a088['tail']));const _0x105b3e=await fetch(API_BASE+'/tasks/'+_0xf48b7b+'/logs'+(_0x36c855['toString']()?'?'+_0x36c855['toString']():''));if(!_0x105b3e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x105b3e['statusText']);return await _0x105b3e['text']();},async 'getContainers'(){const _0x5d0a4f=await fetch(API_BASE+'/containers');if(!_0x5d0a4f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5d0a4f['statusText']);return await _0x5d0a4f['json']();},async 'getContainer'(_0x4b9a80){const _0x14e10d=await fetch(API_BASE+'/containers/'+_0x4b9a80);if(!_0x14e10d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x14e10d['statusText']);return await _0x14e10d['json']();},async 'startInteractiveContainer'(_0x5b6e11){const _0xcca4c4=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b6e11)});if(!_0xcca4c4['ok']){const _0x3d5860=await _0xcca4c4['json']()['catch'](()=>({}));throw new Error(_0x3d5860['message']||'Failed\x20to\x20start\x20container:\x20'+_0xcca4c4['statusText']);}return await _0xcca4c4['json']();},async 'startContainerCodeServer'(_0x148086,_0x3d3320={}){if(!_0x148086)throw new Error('Container\x20ID\x20is\x20required');const _0x127986=new URLSearchParams();_0x3d3320['theme']&&_0x127986['set']('theme',_0x3d3320['theme']);const _0x4a6d53=await fetch(API_BASE+'/containers/'+_0x148086+'/code-server'+(_0x127986['toString']()?'?'+_0x127986['toString']():'')),_0x277d9e=await _0x4a6d53['json']()['catch'](()=>({}));if(!_0x4a6d53['ok'])throw new Error(_0x277d9e['message']||_0x277d9e['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4a6d53['statusText']);return _0x277d9e;},async 'stopContainer'(_0x208835){const _0x154633=await fetch(API_BASE+'/containers/'+_0x208835,{'method':'DELETE'});if(!_0x154633['ok']){const _0x39294d=await _0x154633['json']()['catch'](()=>({}));throw new Error(_0x39294d['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x154633['statusText']);}return await _0x154633['json']();},async 'stopTask'(_0x1a1347){if(!_0x1a1347)throw new Error('Task\x20ID\x20is\x20required');const _0x5305a7=await fetch(API_BASE+'/tasks/'+_0x1a1347+'/stop',{'method':'POST'});if(!_0x5305a7['ok']){const _0x12e819=await _0x5305a7['json']()['catch'](()=>({}));throw new Error(_0x12e819['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x5305a7['statusText']);}return await _0x5305a7['json']();},async 'interruptTask'(_0xdd167){if(!_0xdd167)throw new Error('Task\x20ID\x20is\x20required');const _0x3ea45c=await fetch(API_BASE+'/tasks/'+_0xdd167+'/interrupt',{'method':'POST'});if(!_0x3ea45c['ok']){const _0x1d7722=await _0x3ea45c['json']()['catch'](()=>({}));throw new Error(_0x1d7722['error']||_0x1d7722['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ea45c['statusText']);}return await _0x3ea45c['json']();},async 'startTask'(_0x1c6151){if(!_0x1c6151)throw new Error('Task\x20ID\x20is\x20required');const _0x5b6381=await fetch(API_BASE+'/tasks/'+_0x1c6151+'/start',{'method':'POST'});if(!_0x5b6381['ok']){const _0x2fb715=await _0x5b6381['json']()['catch'](()=>({}));throw new Error(_0x2fb715['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b6381['statusText']);}return await _0x5b6381['json']();},async 'deleteTask'(_0x40883c){if(!_0x40883c)throw new Error('Task\x20ID\x20is\x20required');const _0x580bdb=await fetch(API_BASE+'/tasks/'+_0x40883c,{'method':'DELETE'});if(!_0x580bdb['ok']){const _0x29a164=await _0x580bdb['json']()['catch'](()=>({}));throw new Error(_0x29a164['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x580bdb['statusText']);}return await _0x580bdb['json']();},async 'refreshTasksFromDisk'(){const _0x3c89ec=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3c89ec['ok']){const _0x414648=await _0x3c89ec['json']()['catch'](()=>({}));throw new Error(_0x414648['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3c89ec['statusText']);}return await _0x3c89ec['json']();},async 'approveTask'(_0x3d6343,_0x323866={}){if(!_0x3d6343)throw new Error('Task\x20ID\x20is\x20required');const _0x231ed3={'commit_message':_0x323866['commit_message']||'','pull':_0x323866['pull']??![],'push':_0x323866['push']??![]};_0x323866['new_branch']&&(_0x231ed3['new_branch']=_0x323866['new_branch']);const _0x18d5fd=await fetch(API_BASE+'/tasks/'+_0x3d6343+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x231ed3)});if(!_0x18d5fd['ok']){const _0x2b60fb=await _0x18d5fd['json']()['catch'](()=>({}));let _0xbf364=_0x2b60fb['error']||_0x2b60fb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x18d5fd['statusText'];if(_0x2b60fb['results']&&Array['isArray'](_0x2b60fb['results'])){const _0x507946=_0x2b60fb['results']['filter'](_0x31561f=>!_0x31561f['success']&&_0x31561f['error']);_0x507946['length']>0x0&&(_0xbf364=_0x507946[0x0]['error']);}throw new Error(_0xbf364);}return await _0x18d5fd['json']();},async 'getPullRequestInfo'(_0x31443d){if(!_0x31443d)throw new Error('Task\x20ID\x20is\x20required');const _0x632b23=await fetch(API_BASE+'/tasks/'+_0x31443d+'/pull-request-info');if(!_0x632b23['ok']){const _0x1829eb=await _0x632b23['json']()['catch'](()=>({}));throw new Error(_0x1829eb['error']||_0x1829eb['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x632b23['statusText']);}return await _0x632b23['json']();},async 'createPullRequests'(_0x50a8fe,_0x419a81){if(!_0x50a8fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x419a81||!Array['isArray'](_0x419a81))throw new Error('repos\x20array\x20is\x20required');const _0x409eff=await fetch(API_BASE+'/tasks/'+_0x50a8fe+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x419a81})});if(!_0x409eff['ok']){const _0x4b3108=await _0x409eff['json']()['catch'](()=>({}));let _0x312954=_0x4b3108['error']||_0x4b3108['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x409eff['statusText'];if(_0x4b3108['results']&&Array['isArray'](_0x4b3108['results'])){const _0x34745e=_0x4b3108['results']['filter'](_0x54a77b=>!_0x54a77b['success']&&_0x54a77b['error']);_0x34745e['length']>0x0&&(_0x312954=_0x34745e[0x0]['error']);}throw new Error(_0x312954);}return await _0x409eff['json']();},async 'syncRepos'(_0x485d62){if(!_0x485d62)throw new Error('Task\x20ID\x20is\x20required');const _0xdf726a=await fetch(API_BASE+'/tasks/'+_0x485d62+'/sync-repos',{'method':'POST'});if(!_0xdf726a['ok']){const _0x3b106f=await _0xdf726a['json']()['catch'](()=>({}));throw new Error(_0x3b106f['error']||_0x3b106f['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xdf726a['statusText']);}return await _0xdf726a['json']();},async 'getIbmiSyncInfo'(_0x3543e3){if(!_0x3543e3)throw new Error('Task\x20ID\x20is\x20required');const _0x25d179=await fetch(API_BASE+'/tasks/'+_0x3543e3+'/ibmi-sync-info');if(!_0x25d179['ok']){const _0x18f64d=await _0x25d179['json']()['catch'](()=>({}));throw new Error(_0x18f64d['error']||_0x18f64d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25d179['json']();},async 'getSyncFiles'(_0x3d85e1){if(!_0x3d85e1)throw new Error('Task\x20ID\x20is\x20required');const _0x45906e=await fetch(API_BASE+'/tasks/'+_0x3d85e1+'/sync-to-ibmi/files');if(!_0x45906e['ok']){const _0x3a2524=await _0x45906e['json']()['catch'](()=>({}));throw new Error(_0x3a2524['error']||_0x3a2524['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x45906e['json']();},async 'syncToIbmi'(_0x105fa8,_0x41e58e,_0x8d6ae8=null,_0x2899a5=null,_0x491580=null){if(!_0x105fa8)throw new Error('Task\x20ID\x20is\x20required');const _0x50a2b7={'library':_0x41e58e};if(_0x8d6ae8)_0x50a2b7['user']=_0x8d6ae8;if(_0x2899a5)_0x50a2b7['password']=_0x2899a5;if(_0x491580)_0x50a2b7['files']=_0x491580;const _0x3b9b04=await fetch(API_BASE+'/tasks/'+_0x105fa8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50a2b7)});if(!_0x3b9b04['ok']){const _0x81417f=await _0x3b9b04['json']()['catch'](()=>({}));throw new Error(_0x81417f['error']||_0x81417f['message']||'Sync\x20failed');}return await _0x3b9b04['json']();},async 'getIbmiSyncLog'(_0x3f44af){if(!_0x3f44af)throw new Error('Task\x20ID\x20is\x20required');const _0x2647a1=await fetch(API_BASE+'/tasks/'+_0x3f44af+'/ibmi-sync-log');if(!_0x2647a1['ok']){const _0x499ffa=await _0x2647a1['json']()['catch'](()=>({}));throw new Error(_0x499ffa['error']||_0x499ffa['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2647a1['json']();},async 'pullChanges'(_0x1e7346){if(!_0x1e7346)throw new Error('Task\x20ID\x20is\x20required');const _0x5acc04=await fetch(API_BASE+'/tasks/'+_0x1e7346+'/pull-changes',{'method':'POST'});if(!_0x5acc04['ok']){const _0x26a586=await _0x5acc04['json']()['catch'](()=>({}));throw new Error(_0x26a586['error']||_0x26a586['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5acc04['statusText']);}return await _0x5acc04['json']();},async 'readFile'(_0x2e0eea,_0x3940b4){if(!_0x2e0eea)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3940b4)throw new Error('File\x20path\x20is\x20required');const _0x19c9b7=await fetch(API_BASE+'/tasks/'+_0x2e0eea+'/files?path='+encodeURIComponent(_0x3940b4));if(!_0x19c9b7['ok']){const _0x5a21f6=await _0x19c9b7['json']()['catch'](()=>({}));throw new Error(_0x5a21f6['error']||_0x5a21f6['message']||'Failed\x20to\x20read\x20file:\x20'+_0x19c9b7['statusText']);}return await _0x19c9b7['json']();},'getTaskFileDownloadUrl'(_0x296a7c,_0x1a5844){if(!_0x296a7c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5844)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x296a7c+'/files/download?path='+encodeURIComponent(_0x1a5844);},async 'writeFile'(_0x52daf0,_0x50a940,_0x2d26b0){if(!_0x52daf0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50a940)throw new Error('File\x20path\x20is\x20required');if(_0x2d26b0===undefined)throw new Error('Content\x20is\x20required');const _0x185777=await fetch(API_BASE+'/tasks/'+_0x52daf0+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x50a940,'content':_0x2d26b0})});if(!_0x185777['ok']){const _0x53a33b=await _0x185777['json']()['catch'](()=>({}));throw new Error(_0x53a33b['error']||_0x53a33b['message']||'Failed\x20to\x20write\x20file:\x20'+_0x185777['statusText']);}return await _0x185777['json']();},async 'uploadTaskFiles'(_0x572842,_0x245446,_0x3539c2){if(!_0x572842)throw new Error('Task\x20ID\x20is\x20required');if(!_0x245446)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3539c2||_0x3539c2['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32b10f=new FormData();_0x32b10f['append']('targetDir',_0x245446);for(const _0xa7cc8 of _0x3539c2){_0x32b10f['append']('files',_0xa7cc8,_0xa7cc8['name']);}const _0x516fa5=await fetch(API_BASE+'/tasks/'+_0x572842+'/files/upload',{'method':'POST','body':_0x32b10f});if(!_0x516fa5['ok']){const _0x2962e7=await _0x516fa5['json']()['catch'](()=>({}));throw new Error(_0x2962e7['error']||_0x2962e7['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x516fa5['statusText']);}return await _0x516fa5['json']();},async 'createDirectory'(_0x1c1ff3,_0x731597){if(!_0x1c1ff3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x731597)throw new Error('Directory\x20path\x20is\x20required');const _0x16ddc3=await fetch(API_BASE+'/tasks/'+_0x1c1ff3+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x731597})});if(!_0x16ddc3['ok']){const _0x2aea00=await _0x16ddc3['json']()['catch'](()=>({}));throw new Error(_0x2aea00['error']||_0x2aea00['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x16ddc3['statusText']);}return await _0x16ddc3['json']();},async 'renamePath'(_0x597b21,_0x59ed0e,_0x5f02e2){if(!_0x597b21)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59ed0e)throw new Error('Source\x20path\x20is\x20required');if(!_0x5f02e2)throw new Error('Destination\x20path\x20is\x20required');const _0x2b60a1=await fetch(API_BASE+'/tasks/'+_0x597b21+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x59ed0e,'newPath':_0x5f02e2})});if(!_0x2b60a1['ok']){const _0x7cb617=await _0x2b60a1['json']()['catch'](()=>({}));throw new Error(_0x7cb617['error']||_0x7cb617['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2b60a1['statusText']);}return await _0x2b60a1['json']();},async 'deleteFile'(_0x511a65,_0x2c7708){if(!_0x511a65)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c7708)throw new Error('File\x20path\x20is\x20required');const _0x283d23=await fetch(API_BASE+'/tasks/'+_0x511a65+'/files?path='+encodeURIComponent(_0x2c7708),{'method':'DELETE'});if(!_0x283d23['ok']){const _0x3c0aed=await _0x283d23['json']()['catch'](()=>({}));throw new Error(_0x3c0aed['error']||_0x3c0aed['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x283d23['statusText']);}return await _0x283d23['json']();},async 'deleteDirectory'(_0x1f2af3,_0x5326d3){if(!_0x1f2af3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5326d3)throw new Error('Directory\x20path\x20is\x20required');const _0x9cafd0=await fetch(API_BASE+'/tasks/'+_0x1f2af3+'/files/directory?path='+encodeURIComponent(_0x5326d3),{'method':'DELETE'});if(!_0x9cafd0['ok']){const _0x4daa2e=await _0x9cafd0['json']()['catch'](()=>({}));throw new Error(_0x4daa2e['error']||_0x4daa2e['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x9cafd0['statusText']);}return await _0x9cafd0['json']();},async 'discardFile'(_0x5e821f,_0xccc511,_0x537898){if(!_0x5e821f)throw new Error('Task\x20ID\x20is\x20required');if(!_0xccc511)throw new Error('File\x20path\x20is\x20required');if(!_0x537898)throw new Error('Repository\x20path\x20is\x20required');const _0x4fd24d=await fetch(API_BASE+'/tasks/'+_0x5e821f+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xccc511,'repoPath':_0x537898})});if(!_0x4fd24d['ok']){const _0x80fc30=await _0x4fd24d['json']()['catch'](()=>({}));throw new Error(_0x80fc30['error']||_0x80fc30['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4fd24d['statusText']);}return await _0x4fd24d['json']();},async 'followUpTask'(_0xdd7193,_0x3d5341={}){if(!_0xdd7193)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d5341['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x47e3ec,_0x3686b4={};if(_0x3d5341['files']&&_0x3d5341['files']['length']>0x0){const _0x347144=new FormData();_0x347144['append']('instructions',_0x3d5341['instructions']);for(const _0x45a874 of _0x3d5341['files']){_0x347144['append']('attachments',_0x45a874);}_0x47e3ec=_0x347144;}else _0x3686b4['Content-Type']='application/json',_0x47e3ec=JSON['stringify']({'instructions':_0x3d5341['instructions']});const _0x243dd4=await fetch(API_BASE+'/tasks/'+_0xdd7193+'/follow-up',{'method':'POST','headers':_0x3686b4,'body':_0x47e3ec});if(!_0x243dd4['ok']){const _0x2b5b93=await _0x243dd4['json']()['catch'](()=>({}));throw new Error(_0x2b5b93['error']||_0x2b5b93['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x243dd4['statusText']);}return await _0x243dd4['json']();},async 'getTaskRewindPoints'(_0x1c86d5){if(!_0x1c86d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8556=await fetch(API_BASE+'/tasks/'+_0x1c86d5+'/rewind-points');if(!_0x4f8556['ok']){const _0x57af8b=await _0x4f8556['json']()['catch'](()=>({}));throw new Error(_0x57af8b['error']||_0x57af8b['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4f8556['statusText']);}return await _0x4f8556['json']();},async 'rewindTask'(_0x33b593,_0x1da609={}){if(!_0x33b593)throw new Error('Task\x20ID\x20is\x20required');const _0x18450e=Number['isInteger'](_0x1da609['targetFollowUpCount'])?_0x1da609['targetFollowUpCount']:0x0,_0x1d33b3={'targetFollowUpCount':_0x18450e};typeof _0x1da609['instructions']==='string'&&_0x1da609['instructions']['trim']()&&(_0x1d33b3['instructions']=_0x1da609['instructions']['trim']());typeof _0x1da609['rewindFiles']==='boolean'&&(_0x1d33b3['rewindFiles']=_0x1da609['rewindFiles']);const _0x518b2c=await fetch(API_BASE+'/tasks/'+_0x33b593+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d33b3)});if(!_0x518b2c['ok']){const _0x30010d=await _0x518b2c['json']()['catch'](()=>({}));throw new Error(_0x30010d['error']||_0x30010d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x518b2c['statusText']);}return await _0x518b2c['json']();},async 'login'(_0x3616f6,_0x57fbcf){const _0x542a14=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3616f6,'password':_0x57fbcf})});if(!_0x542a14['ok']){const _0x419a24=await _0x542a14['json']();throw new Error(_0x419a24['message']||'Login\x20failed');}return await _0x542a14['json']();},async 'logout'(){const _0x25a662=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x25a662['ok']){const _0x2db4d2=await _0x25a662['json']();throw new Error(_0x2db4d2['message']||'Logout\x20failed');}return await _0x25a662['json']();},async 'getCurrentUser'(){const _0x136c34=await fetch(API_BASE+'/auth/me');if(!_0x136c34['ok'])throw new Error('Not\x20authenticated');const _0x2a1a2a=await _0x136c34['json']();return _0x2a1a2a['user'];},async 'getRolesInfo'(){const _0x30e3cd=await fetch(API_BASE+'/users/roles');if(!_0x30e3cd['ok']){const _0x168a22=await _0x30e3cd['json']();throw new Error(_0x168a22['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x30e3cd['json']();},async 'getUsers'(){const _0x2fd2e2=await fetch(API_BASE+'/users');if(!_0x2fd2e2['ok']){const _0x447921=await _0x2fd2e2['json']();throw new Error(_0x447921['message']||'Failed\x20to\x20get\x20users');}return await _0x2fd2e2['json']();},async 'getUser'(_0xd084d3){const _0x14bb9f=await fetch(API_BASE+'/users/'+_0xd084d3);if(!_0x14bb9f['ok']){const _0x346011=await _0x14bb9f['json']();throw new Error(_0x346011['message']||'Failed\x20to\x20get\x20user');}return await _0x14bb9f['json']();},async 'createUser'(_0x60a3c6){const _0x5bd8b=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x60a3c6)});if(!_0x5bd8b['ok']){const _0x42cd71=await _0x5bd8b['json']();throw new Error(_0x42cd71['message']||'Failed\x20to\x20create\x20user');}return await _0x5bd8b['json']();},async 'updateUser'(_0x13e40c,_0x2d0e95){const _0x48e4a4=await fetch(API_BASE+'/users/'+_0x13e40c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d0e95)});if(!_0x48e4a4['ok']){const _0x32e11d=await _0x48e4a4['json']();throw new Error(_0x32e11d['message']||'Failed\x20to\x20update\x20user');}return await _0x48e4a4['json']();},async 'deleteUser'(_0x4245f7){const _0x4b41b5=await fetch(API_BASE+'/users/'+_0x4245f7,{'method':'DELETE'});if(!_0x4b41b5['ok']){const _0x38e594=await _0x4b41b5['json']();throw new Error(_0x38e594['message']||'Failed\x20to\x20delete\x20user');}return await _0x4b41b5['json']();},async 'stopAllContainers'(){const _0x526a40=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4599ff=await _0x526a40['json']()['catch'](()=>({}));if(!_0x526a40['ok'])throw new Error(_0x4599ff['message']||_0x4599ff['error']||'Failed\x20to\x20stop\x20containers');return _0x4599ff;},async 'removeStoppedContainers'(){const _0x35f4b6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2e7d3c=await _0x35f4b6['json']()['catch'](()=>({}));if(!_0x35f4b6['ok'])throw new Error(_0x2e7d3c['message']||_0x2e7d3c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2e7d3c;},async 'pruneDockerResources'(){const _0x4f13f2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5137a1=await _0x4f13f2['json']()['catch'](()=>({}));if(!_0x4f13f2['ok'])throw new Error(_0x5137a1['message']||_0x5137a1['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5137a1;},async 'createPasswordToken'(_0x41900f,_0x68e631='setup',_0x8b308=![]){const _0xe139e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41900f,'type':_0x68e631,'sendEmail':_0x8b308})});if(!_0xe139e['ok']){const _0x34d9b9=await _0xe139e['json']();throw new Error(_0x34d9b9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0xe139e['json']();},async 'getEmailConfig'(){const _0x5ac18d=await fetch(API_BASE+'/password/email-config');if(!_0x5ac18d['ok']){const _0x5eb349=await _0x5ac18d['json']();throw new Error(_0x5eb349['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5ac18d['json']();},async 'updateTaskName'(_0x1d1c37,_0x4f13c3){const _0xa47a3a=await fetch(API_BASE+'/tasks/'+_0x1d1c37,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4f13c3})});if(!_0xa47a3a['ok']){const _0x3a12cf=await _0xa47a3a['json']();throw new Error(_0x3a12cf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xa47a3a['json']();},async 'pinTask'(_0x1e7f56,_0x32c572,_0x5cf71a=null){if(!_0x1e7f56)throw new Error('Task\x20ID\x20is\x20required');const _0x336dfb={'pinned':_0x32c572};_0x5cf71a&&_0x5cf71a['length']>0x0&&(_0x336dfb['additionalTaskIds']=_0x5cf71a);const _0x38525c=await fetch(API_BASE+'/tasks/'+_0x1e7f56+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336dfb)});if(!_0x38525c['ok']){const _0x25c458=await _0x38525c['json']();throw new Error(_0x25c458['error']||'Failed\x20to\x20pin\x20task');}return await _0x38525c['json']();},async 'setTaskWinner'(_0x361d1,_0x30f783,_0x1fa7fb=[]){if(!_0x361d1)throw new Error('Task\x20ID\x20is\x20required');const _0x599d03=await fetch(API_BASE+'/tasks/'+_0x361d1+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x30f783,'siblings':_0x1fa7fb})});if(!_0x599d03['ok']){const _0x41a56c=await _0x599d03['json']();throw new Error(_0x41a56c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x599d03['json']();},async 'setTaskLoser'(_0x433e91,_0x5a1ce9){if(!_0x433e91)throw new Error('Task\x20ID\x20is\x20required');const _0x56dab9=await fetch(API_BASE+'/tasks/'+_0x433e91+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a1ce9})});if(!_0x56dab9['ok']){const _0x4fe12a=await _0x56dab9['json']();throw new Error(_0x4fe12a['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x56dab9['json']();},async 'createTaskGroup'(_0x200c2e){const _0x38b8cc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x200c2e)});if(!_0x38b8cc['ok']){const _0x37d6ec=await _0x38b8cc['json']();throw new Error(_0x37d6ec['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x38b8cc['json']();},async 'getTaskGroups'(_0x31856f={}){const _0x318a88=new URLSearchParams();if(_0x31856f['userId'])_0x318a88['set']('userId',String(_0x31856f['userId']));if(_0x31856f['status'])_0x318a88['set']('status',String(_0x31856f['status']));if(_0x31856f['limit'])_0x318a88['set']('limit',String(_0x31856f['limit']));const _0x15c498=API_BASE+'/tasks/groups'+(_0x318a88['toString']()?'?'+_0x318a88['toString']():''),_0x5cd2dc=await fetch(_0x15c498);if(!_0x5cd2dc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5cd2dc['json']();},async 'getTaskGroup'(_0x30a7c2){const _0x35f342=await fetch(API_BASE+'/tasks/groups/'+_0x30a7c2);if(!_0x35f342['ok']){const _0x5ceb39=await _0x35f342['json']();throw new Error(_0x5ceb39['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x35f342['json']();},async 'updateTaskGroup'(_0x1856e1,_0xe93bc2,_0x49ed08){const _0x36c0ac=await fetch(API_BASE+'/tasks/'+_0x1856e1+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe93bc2,'groupIndex':_0x49ed08})});if(!_0x36c0ac['ok']){const _0x5adbd3=await _0x36c0ac['json']();throw new Error(_0x5adbd3['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x36c0ac['json']();},async 'removeTaskFromGroup'(_0x66381c){return this['updateTaskGroup'](_0x66381c,null,null);},async 'deleteTaskGroup'(_0x1392f4,_0x20ec5c=![]){const _0x287523=_0x20ec5c?'?deleteTasks=true':'',_0x31b4a0=await fetch(API_BASE+'/tasks/groups/'+_0x1392f4+_0x287523,{'method':'DELETE'});if(!_0x31b4a0['ok']){const _0x3fabf7=await _0x31b4a0['json']();throw new Error(_0x3fabf7['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x321775,_0x3f935a){const _0x1a39ff=await fetch(API_BASE+'/tasks/groups/'+_0x321775+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f935a})});if(!_0x1a39ff['ok']){const _0x382dd6=await _0x1a39ff['json']();throw new Error(_0x382dd6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a39ff['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a628e){if(!_0x5a628e)throw new Error('Task\x20ID\x20is\x20required');const _0x162eff=await fetch(API_BASE+'/tasks/'+_0x5a628e+'/comments');if(!_0x162eff['ok']){const _0x5ef375=await _0x162eff['json']()['catch'](()=>({}));throw new Error(_0x5ef375['error']||'Failed\x20to\x20get\x20comments');}return await _0x162eff['json']();},async 'addComment'(_0x4a3be8,_0x11e2bb){if(!_0x4a3be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x11e2bb)throw new Error('Comment\x20content\x20is\x20required');const _0x5f7ffb=await fetch(API_BASE+'/tasks/'+_0x4a3be8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x11e2bb})});if(!_0x5f7ffb['ok']){const _0x575c7d=await _0x5f7ffb['json']()['catch'](()=>({}));throw new Error(_0x575c7d['error']||'Failed\x20to\x20add\x20comment');}return await _0x5f7ffb['json']();},async 'updateComment'(_0x5922e7,_0x34a3bc,_0xdd4235){if(!_0x5922e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34a3bc)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xdd4235)throw new Error('Comment\x20content\x20is\x20required');const _0x55b6af=await fetch(API_BASE+'/tasks/'+_0x5922e7+'/comments/'+_0x34a3bc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xdd4235})});if(!_0x55b6af['ok']){const _0x585d29=await _0x55b6af['json']()['catch'](()=>({}));throw new Error(_0x585d29['error']||'Failed\x20to\x20update\x20comment');}return await _0x55b6af['json']();},async 'deleteComment'(_0x270bc9,_0x20ff2b){if(!_0x270bc9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20ff2b)throw new Error('Comment\x20ID\x20is\x20required');const _0xd03eb0=await fetch(API_BASE+'/tasks/'+_0x270bc9+'/comments/'+_0x20ff2b,{'method':'DELETE'});if(!_0xd03eb0['ok']){const _0x30b1f9=await _0xd03eb0['json']()['catch'](()=>({}));throw new Error(_0x30b1f9['error']||'Failed\x20to\x20delete\x20comment');}return await _0xd03eb0['json']();},async 'createObjective'(_0x56285c){const _0xb1d630={'objective':!![],'name':_0x56285c['name']||'','environment':_0x56285c['environment']||null,'agents':_0x56285c['agents']||[],'branches':_0x56285c['branches']||{},'isPinned':_0x56285c['isPinned']||![],'parentObjectiveId':_0x56285c['parentObjectiveId']||null,'env_vars':_0x56285c['envVars']||{},'parameters':{'instructions':_0x56285c['instructions']||''},'files':_0x56285c['files']||[],'jira':_0x56285c['jira']||null};return this['createTask'](_0xb1d630);},async 'updateObjective'(_0x32e9eb,_0x1f61d8,_0x2d51e1=[],_0x185981=[]){let _0x3f5a36,_0x230f74={};const _0x2be22d={..._0x1f61d8};_0x185981&&_0x185981['length']>0x0&&(_0x2be22d['removeAttachments']=_0x185981);if(_0x2d51e1&&_0x2d51e1['length']>0x0){const _0x38d1f8=new FormData();for(const [_0x12b710,_0x554682]of Object['entries'](_0x2be22d)){if(_0x554682==null)continue;typeof _0x554682==='object'?_0x38d1f8['append'](_0x12b710,JSON['stringify'](_0x554682)):_0x38d1f8['append'](_0x12b710,String(_0x554682));}for(const _0x6b3f10 of _0x2d51e1){_0x38d1f8['append']('attachments',_0x6b3f10);}_0x3f5a36=_0x38d1f8;}else _0x230f74['Content-Type']='application/json',_0x3f5a36=JSON['stringify'](_0x2be22d);const _0xf7dcff=await fetch(API_BASE+'/tasks/'+_0x32e9eb,{'method':'PATCH','headers':_0x230f74,'body':_0x3f5a36});if(!_0xf7dcff['ok']){const _0x359689=await _0xf7dcff['json']();throw new Error(_0x359689['error']||'Failed\x20to\x20update\x20objective');}return await _0xf7dcff['json']();},async 'deleteObjective'(_0xb971bc){return this['deleteTask'](_0xb971bc);},async 'launchObjective'(_0x4c34e1,_0x3daf03={}){const _0x2ab453=await fetch(API_BASE+'/tasks/'+_0x4c34e1+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3daf03)});if(!_0x2ab453['ok']){const _0x20f3f6=await _0x2ab453['json']();throw new Error(_0x20f3f6['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2ab453['json']();},async 'getObjectiveAttachments'(_0x3402ae){return this['getTaskAttachments'](_0x3402ae);},async 'createJudgeTask'({environment:_0x337f4f,judgeAgent:_0x94d580,groupId:_0x73276f,taskIds:_0x43c90f,judgeCustomInstructions:_0x13aff3,isPinned:_0x4790af}){const _0x46e271=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x337f4f,'judgeAgent':_0x94d580,'groupId':_0x73276f,'taskIds':_0x43c90f,'judgeCustomInstructions':_0x13aff3,'isPinned':_0x4790af})});if(!_0x46e271['ok']){const _0x189786=await _0x46e271['json']();throw new Error(_0x189786['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x46e271['json']();},async 'getJudgeTasks'(_0x1b0504){const _0xa14825=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b0504));if(!_0xa14825['ok']){const _0x57f21d=await _0xa14825['json']();throw new Error(_0x57f21d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xa14825['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x499256,_0x555fdf,_0x17efc0=''){const _0x320d6b=await fetch(API_BASE+'/tasks/'+_0x499256+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x555fdf,'customPreamble':_0x17efc0})});if(!_0x320d6b['ok']){const _0x4feca6=await _0x320d6b['json']();throw new Error(_0x4feca6['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x320d6b['json']();},async 'getJiraConfig'(){const _0x335794=await fetch(API_BASE+'/jira/config');if(!_0x335794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x335794['json']();},async 'getJiraIssue'(_0x539f0b){const _0x35f045=await fetch(API_BASE+'/jira/issues/'+_0x539f0b);if(!_0x35f045['ok']){const _0x2639e7=await _0x35f045['json']()['catch'](()=>({}));throw new Error(_0x2639e7['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x35f045['statusText']);}return await _0x35f045['json']();},async 'searchJiraIssues'(_0x2f9897,_0x579381=0x14){const _0x3c2199=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2f9897,'maxResults':_0x579381})});if(!_0x3c2199['ok']){const _0x630d9b=await _0x3c2199['json']()['catch'](()=>({}));throw new Error(_0x630d9b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x3c2199['statusText']);}return await _0x3c2199['json']();},async 'postJiraComment'(_0x5df791,_0x5c7c88){const _0x33b82b=await fetch(API_BASE+'/jira/issues/'+_0x5df791+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5c7c88})});if(!_0x33b82b['ok']){const _0x41edf2=await _0x33b82b['json']()['catch'](()=>({}));throw new Error(_0x41edf2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x33b82b['statusText']);}return await _0x33b82b['json']();},async 'getJiraComments'(_0x17b571){const _0x1f7489=await fetch(API_BASE+'/jira/issues/'+_0x17b571+'/comments');if(!_0x1f7489['ok']){const _0x2a92a0=await _0x1f7489['json']()['catch'](()=>({}));throw new Error(_0x2a92a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f7489['statusText']);}return await _0x1f7489['json']();},async 'promptParameter'({environment:_0x57053e,command:_0x5c4d3a,parser:parser='json'}){const _0x2ca69b=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x57053e,'command':_0x5c4d3a,'parser':parser})});if(!_0x2ca69b['ok']){const _0x2c7fa7=await _0x2ca69b['json']()['catch'](()=>({}));throw new Error(_0x2c7fa7['message']||_0x2c7fa7['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2ca69b['statusText']);}return await _0x2ca69b['json']();},async 'promptParameterStream'(_0x2b8818,_0x28b695){const _0x2ee1eb=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b8818)});if(!_0x2ee1eb['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ee1eb['statusText']);const _0x17952a=_0x2ee1eb['body']['getReader'](),_0x5c35ef=new TextDecoder();let _0x3910e9='';return new Promise((_0x3e5d11,_0x26f050)=>{const _0x234c4f=async()=>{try{const {done:_0x1d4bdb,value:_0x35584e}=await _0x17952a['read']();if(_0x1d4bdb)return;_0x3910e9+=_0x5c35ef['decode'](_0x35584e,{'stream':!![]});const _0x3686f8=_0x3910e9['split']('\x0a\x0a');_0x3910e9=_0x3686f8['pop']()||'';for(const _0x3f4894 of _0x3686f8){if(!_0x3f4894['trim']())continue;const _0x453f6d=_0x3f4894['split']('\x0a');let _0x5069e0='message',_0x5379a5='';for(const _0x11a549 of _0x453f6d){if(_0x11a549['startsWith']('event:'))_0x5069e0=_0x11a549['substring'](0x6)['trim']();else _0x11a549['startsWith']('data:')&&(_0x5379a5=_0x11a549['substring'](0x5)['trim']());}if(!_0x5379a5)continue;try{const _0x1971c6=JSON['parse'](_0x5379a5);if(_0x5069e0==='progress'&&_0x28b695)_0x28b695(_0x1971c6['stage'],_0x1971c6['message']);else{if(_0x5069e0==='result'){_0x3e5d11(_0x1971c6);return;}else{if(_0x5069e0==='error'){let _0x23ad08=_0x1971c6['message']||_0x1971c6['error']||'Prompt\x20command\x20failed';_0x1971c6['rawOutput']&&(_0x23ad08+='\x0a\x0aRaw\x20output:\x0a'+_0x1971c6['rawOutput']);_0x26f050(new Error(_0x23ad08));return;}}}}catch(_0x635457){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x635457),console['error']('Event\x20type:',_0x5069e0),console['error']('Event\x20data:',_0x5379a5),console['error']('First\x20200\x20chars:',_0x5379a5['substring'](0x0,0xc8)),_0x26f050(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x635457['message']+'\x0a\x0aData:\x20'+_0x5379a5['substring'](0x0,0x1f4)));return;}}_0x234c4f();}catch(_0x29c25c){_0x26f050(_0x29c25c);}};_0x234c4f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4a0f47){const _0x4d97e7=await fetch(''+API_BASE+_0x4a0f47);if(!_0x4d97e7['ok']){const _0x8d1ce7=await _0x4d97e7['json']()['catch'](()=>({'error':_0x4d97e7['statusText']})),_0x722cd1=new Error(_0x8d1ce7['error']||_0x8d1ce7['message']||_0x4d97e7['statusText']);if(_0x8d1ce7['detail']!==undefined)_0x722cd1['detail']=_0x8d1ce7['detail'];throw _0x722cd1;}return await _0x4d97e7['json']();},async 'post'(_0xd5996b,_0x1057ff){const _0x5d313b=await fetch(''+API_BASE+_0xd5996b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1057ff)});if(!_0x5d313b['ok']){const _0x214e2c=await _0x5d313b['json']()['catch'](()=>({'error':_0x5d313b['statusText']})),_0x1de51c=new Error(_0x214e2c['error']||_0x214e2c['message']||_0x5d313b['statusText']);if(_0x214e2c['detail']!==undefined)_0x1de51c['detail']=_0x214e2c['detail'];throw _0x1de51c;}return await _0x5d313b['json']();},async 'put'(_0x1fdf69,_0x4c15d9){const _0xd9c45c=await fetch(''+API_BASE+_0x1fdf69,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c15d9)});if(!_0xd9c45c['ok']){const _0x56a523=await _0xd9c45c['json']()['catch'](()=>({'error':_0xd9c45c['statusText']})),_0x14dafa=new Error(_0x56a523['error']||_0x56a523['message']||_0xd9c45c['statusText']);if(_0x56a523['detail']!==undefined)_0x14dafa['detail']=_0x56a523['detail'];throw _0x14dafa;}return await _0xd9c45c['json']();},async 'delete'(_0x44b2c0,_0x46708a){const _0x4002e4={'method':'DELETE'};_0x46708a&&(_0x4002e4['headers']={'Content-Type':'application/json'},_0x4002e4['body']=JSON['stringify'](_0x46708a));const _0x553380=await fetch(''+API_BASE+_0x44b2c0,_0x4002e4);if(!_0x553380['ok']){const _0x3b18b8=await _0x553380['json']()['catch'](()=>({'error':_0x553380['statusText']})),_0x2a6ace=new Error(_0x3b18b8['error']||_0x3b18b8['message']||_0x553380['statusText']);if(_0x3b18b8['detail']!==undefined)_0x2a6ace['detail']=_0x3b18b8['detail'];throw _0x2a6ace;}return await _0x553380['json']();},async 'getSkills'(){const _0x36680a=await fetch(API_BASE+'/skills');if(!_0x36680a['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36680a['statusText']);return await _0x36680a['json']();},async 'getSkill'(_0x472c69){const _0x5039ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x472c69));if(!_0x5039ca['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5039ca['statusText']);return await _0x5039ca['json']();},async 'createSkill'(_0x3007a5){const _0x2a4d44=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3007a5)});if(!_0x2a4d44['ok']){const _0x3a36cc=await _0x2a4d44['json']()['catch'](()=>({'error':_0x2a4d44['statusText']})),_0xac267a=new Error(_0x3a36cc['error']||_0x3a36cc['message']||_0x2a4d44['statusText']);if(_0x3a36cc['detail']!==undefined)_0xac267a['detail']=_0x3a36cc['detail'];throw _0xac267a;}return await _0x2a4d44['json']();},async 'updateSkill'(_0x3f0d11,_0x1a138b){const _0x15201b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f0d11),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a138b)});if(!_0x15201b['ok']){const _0x2aaa00=await _0x15201b['json']()['catch'](()=>({'error':_0x15201b['statusText']})),_0x111b4f=new Error(_0x2aaa00['error']||_0x2aaa00['message']||_0x15201b['statusText']);if(_0x2aaa00['detail']!==undefined)_0x111b4f['detail']=_0x2aaa00['detail'];throw _0x111b4f;}return await _0x15201b['json']();},async 'deleteSkill'(_0x4bfae8){const _0x5a9d72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bfae8),{'method':'DELETE'});if(!_0x5a9d72['ok']){const _0x1bb453=await _0x5a9d72['json']()['catch'](()=>({'error':_0x5a9d72['statusText']})),_0x3237a7=new Error(_0x1bb453['error']||_0x1bb453['message']||_0x5a9d72['statusText']);if(_0x1bb453['detail']!==undefined)_0x3237a7['detail']=_0x1bb453['detail'];throw _0x3237a7;}return await _0x5a9d72['json']();},async 'getSkillFile'(_0x3f5f5b,_0x2d03e8){const _0x3820e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5f5b)+'/files/'+_0x2d03e8);if(!_0x3820e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3820e9['statusText']);return await _0x3820e9['json']();},async 'saveSkillFile'(_0x5386ce,_0x1b5bc0,_0x3db41b){const _0x19c63f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5386ce)+'/files/'+_0x1b5bc0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3db41b})});if(!_0x19c63f['ok']){const _0x44f43c=await _0x19c63f['json']()['catch'](()=>({'error':_0x19c63f['statusText']})),_0x3737da=new Error(_0x44f43c['error']||_0x44f43c['message']||_0x19c63f['statusText']);if(_0x44f43c['detail']!==undefined)_0x3737da['detail']=_0x44f43c['detail'];throw _0x3737da;}return await _0x19c63f['json']();},async 'deleteSkillFile'(_0x52e558,_0x356cbd){const _0x437a54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52e558)+'/files/'+_0x356cbd,{'method':'DELETE'});if(!_0x437a54['ok']){const _0x2879eb=await _0x437a54['json']()['catch'](()=>({'error':_0x437a54['statusText']})),_0x4ab9d7=new Error(_0x2879eb['error']||_0x2879eb['message']||_0x437a54['statusText']);if(_0x2879eb['detail']!==undefined)_0x4ab9d7['detail']=_0x2879eb['detail'];throw _0x4ab9d7;}return await _0x437a54['json']();},async 'pullSkills'(){const _0x5487df=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5487df['ok']){const _0x1c62d3=await _0x5487df['json']()['catch'](()=>({'error':_0x5487df['statusText']})),_0x5006c0=new Error(_0x1c62d3['error']||_0x1c62d3['message']||_0x5487df['statusText']);if(_0x1c62d3['detail']!==undefined)_0x5006c0['detail']=_0x1c62d3['detail'];throw _0x5006c0;}return await _0x5487df['json']();},async 'commitSkills'(_0x52fea4,_0x30d27e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x30d27e,_0x343b22=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x52fea4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x343b22['ok']){const _0xf8e2b=await _0x343b22['json']()['catch'](()=>({'error':_0x343b22['statusText']})),_0x23f0bc=new Error(_0xf8e2b['error']||_0xf8e2b['message']||_0x343b22['statusText']);if(_0xf8e2b['detail']!==undefined)_0x23f0bc['detail']=_0xf8e2b['detail'];throw _0x23f0bc;}return await _0x343b22['json']();},async 'discardSkillsChanges'(){const _0x33f2f9=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x33f2f9['ok']){const _0x21b221=await _0x33f2f9['json']()['catch'](()=>({'error':_0x33f2f9['statusText']})),_0x5ef455=new Error(_0x21b221['error']||_0x21b221['message']||_0x33f2f9['statusText']);if(_0x21b221['detail']!==undefined)_0x5ef455['detail']=_0x21b221['detail'];throw _0x5ef455;}return await _0x33f2f9['json']();},async 'getSkillCatalog'(){const _0x46e959=await fetch(API_BASE+'/external-skills/catalog');if(!_0x46e959['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x46e959['statusText']);return await _0x46e959['json']();},async 'getImportedSkillsRegistry'(){const _0x356015=await fetch(API_BASE+'/external-skills/registry');if(!_0x356015['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x356015['statusText']);return await _0x356015['json']();},async 'importCatalogSkill'(_0x228f50){const _0x5cd30a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x228f50})});if(!_0x5cd30a['ok']){const _0x30b5e6=await _0x5cd30a['json']()['catch'](()=>({'error':_0x5cd30a['statusText']})),_0x4d39a8=new Error(_0x30b5e6['error']||_0x30b5e6['message']||_0x5cd30a['statusText']);if(_0x30b5e6['detail']!==undefined)_0x4d39a8['detail']=_0x30b5e6['detail'];throw _0x4d39a8;}return await _0x5cd30a['json']();},async 'importSkillFromGit'(_0xf3f95f,_0x76872f,_0x236ce2='main',_0x219e15=null){const _0x341989=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf3f95f,'skillPath':_0x76872f,'branch':_0x236ce2,'skillId':_0x219e15})});if(!_0x341989['ok']){const _0x405764=await _0x341989['json']()['catch'](()=>({'error':_0x341989['statusText']})),_0x22f3b8=new Error(_0x405764['error']||_0x405764['message']||_0x341989['statusText']);if(_0x405764['detail']!==undefined)_0x22f3b8['detail']=_0x405764['detail'];throw _0x22f3b8;}return await _0x341989['json']();},async 'probeMarketplace'(_0xbcf83e,_0x4064dd='main'){const _0x38c107=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbcf83e,'branch':_0x4064dd})});if(!_0x38c107['ok']){const _0x349074=await _0x38c107['json']()['catch'](()=>({'error':_0x38c107['statusText']})),_0x4e6225=new Error(_0x349074['error']||_0x349074['message']||_0x38c107['statusText']);if(_0x349074['detail']!==undefined)_0x4e6225['detail']=_0x349074['detail'];throw _0x4e6225;}return await _0x38c107['json']();},async 'importMarketplaceBundle'(_0x1b0466,_0x1ae16a,_0x37f3e7,_0x55d6dd=null){const _0x54b4c0=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b0466,'branch':_0x1ae16a,'bundleId':_0x37f3e7,'selectedSkills':_0x55d6dd})});if(!_0x54b4c0['ok']){const _0x818199=await _0x54b4c0['json']()['catch'](()=>({'error':_0x54b4c0['statusText']})),_0x45953c=new Error(_0x818199['error']||_0x818199['message']||_0x54b4c0['statusText']);if(_0x818199['detail']!==undefined)_0x45953c['detail']=_0x818199['detail'];throw _0x45953c;}return await _0x54b4c0['json']();},async 'importSkillFromFolder'(_0x157c86,_0x29fbf9=null){const _0xf4365a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x157c86,'skillId':_0x29fbf9})});if(!_0xf4365a['ok']){const _0x5c13df=await _0xf4365a['json']()['catch'](()=>({'error':_0xf4365a['statusText']})),_0x510281=new Error(_0x5c13df['error']||_0x5c13df['message']||_0xf4365a['statusText']);if(_0x5c13df['detail']!==undefined)_0x510281['detail']=_0x5c13df['detail'];throw _0x510281;}return await _0xf4365a['json']();},async 'importSkillFromNpm'(_0x3ed15f,_0x3f6dfd='latest',_0x9477a5=null,_0x4e452c=null){const _0x408f12=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3ed15f,'version':_0x3f6dfd,'skillId':_0x9477a5,'registry':_0x4e452c})});if(!_0x408f12['ok']){const _0x42d8a3=await _0x408f12['json']()['catch'](()=>({'error':_0x408f12['statusText']})),_0x178b96=new Error(_0x42d8a3['error']||_0x42d8a3['message']||_0x408f12['statusText']);if(_0x42d8a3['detail']!==undefined)_0x178b96['detail']=_0x42d8a3['detail'];throw _0x178b96;}return await _0x408f12['json']();},async 'checkSkillUpdates'(_0x7b36aa){const _0x59e06f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x7b36aa)+'/check-updates',{'method':'POST'});if(!_0x59e06f['ok']){const _0x114e08=await _0x59e06f['json']()['catch'](()=>({'error':_0x59e06f['statusText']})),_0x29a844=new Error(_0x114e08['error']||_0x114e08['message']||_0x59e06f['statusText']);if(_0x114e08['detail']!==undefined)_0x29a844['detail']=_0x114e08['detail'];throw _0x29a844;}return await _0x59e06f['json']();},async 'updateExternalSkill'(_0x57a7aa){const _0x4aeb76=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57a7aa)+'/update',{'method':'POST'});if(!_0x4aeb76['ok']){const _0x53d311=await _0x4aeb76['json']()['catch'](()=>({'error':_0x4aeb76['statusText']})),_0x3f9e08=new Error(_0x53d311['error']||_0x53d311['message']||_0x4aeb76['statusText']);if(_0x53d311['detail']!==undefined)_0x3f9e08['detail']=_0x53d311['detail'];throw _0x3f9e08;}return await _0x4aeb76['json']();},async 'updateSkillFlags'(_0x237e64,_0x5595a7){const _0x51ad94=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x237e64)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x5595a7})});if(!_0x51ad94['ok']){const _0x4f80fb=await _0x51ad94['json']()['catch'](()=>({'error':_0x51ad94['statusText']})),_0x45704a=new Error(_0x4f80fb['error']||_0x4f80fb['message']||_0x51ad94['statusText']);if(_0x4f80fb['detail']!==undefined)_0x45704a['detail']=_0x4f80fb['detail'];throw _0x45704a;}return await _0x51ad94['json']();},async 'removeFromImportedRegistry'(_0x1b6d28){const _0x3fda05=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1b6d28)+'/registry',{'method':'DELETE'});if(!_0x3fda05['ok']){const _0x458188=await _0x3fda05['json']()['catch'](()=>({'error':_0x3fda05['statusText']})),_0x3c024e=new Error(_0x458188['error']||_0x458188['message']||_0x3fda05['statusText']);if(_0x458188['detail']!==undefined)_0x3c024e['detail']=_0x458188['detail'];throw _0x3c024e;}return await _0x3fda05['json']();},async 'getTeams'(){const _0xaf34b1=await fetch(API_BASE+'/teams');if(!_0xaf34b1['ok']){const _0x1e1311=await _0xaf34b1['json']()['catch'](()=>({'message':_0xaf34b1['statusText']}));throw new Error(_0x1e1311['message']||'Failed\x20to\x20get\x20teams');}return await _0xaf34b1['json']();},async 'getTeam'(_0x1c5f23){const _0x1d4b85=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c5f23));if(!_0x1d4b85['ok']){const _0x232d2e=await _0x1d4b85['json']()['catch'](()=>({'message':_0x1d4b85['statusText']}));throw new Error(_0x232d2e['message']||'Failed\x20to\x20get\x20team');}return await _0x1d4b85['json']();},async 'createTeam'(_0xe79924){const _0x3494c=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe79924)});if(!_0x3494c['ok']){const _0x2fdfba=await _0x3494c['json']()['catch'](()=>({'message':_0x3494c['statusText']}));throw new Error(_0x2fdfba['message']||'Failed\x20to\x20create\x20team');}return await _0x3494c['json']();},async 'updateTeam'(_0x29f38b,_0xc37a32){const _0x4c5099=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29f38b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc37a32)});if(!_0x4c5099['ok']){const _0x3d4798=await _0x4c5099['json']()['catch'](()=>({'message':_0x4c5099['statusText']}));throw new Error(_0x3d4798['message']||'Failed\x20to\x20update\x20team');}return await _0x4c5099['json']();},async 'deleteTeam'(_0x4a0558){const _0x47e191=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4a0558),{'method':'DELETE'});if(!_0x47e191['ok']){const _0x39f517=await _0x47e191['json']()['catch'](()=>({'message':_0x47e191['statusText']}));throw new Error(_0x39f517['message']||'Failed\x20to\x20delete\x20team');}return await _0x47e191['json']();},async 'addTeamMember'(_0x528f3e,_0x41c604){const _0x4de119=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x528f3e)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41c604})});if(!_0x4de119['ok']){const _0x111f36=await _0x4de119['json']()['catch'](()=>({'message':_0x4de119['statusText']}));throw new Error(_0x111f36['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4de119['json']();},async 'removeTeamMember'(_0x2156e7,_0x420d30){const _0x110f2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2156e7)+'/members/'+encodeURIComponent(_0x420d30),{'method':'DELETE'});if(!_0x110f2e['ok']){const _0x394372=await _0x110f2e['json']()['catch'](()=>({'message':_0x110f2e['statusText']}));throw new Error(_0x394372['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x110f2e['json']();},async 'getBindings'(_0x1eba9e={}){const _0x19e40e=new URLSearchParams();if(_0x1eba9e['resource_type'])_0x19e40e['set']('resource_type',_0x1eba9e['resource_type']);if(_0x1eba9e['resource_id'])_0x19e40e['set']('resource_id',_0x1eba9e['resource_id']);if(_0x1eba9e['subject_type'])_0x19e40e['set']('subject_type',_0x1eba9e['subject_type']);if(_0x1eba9e['subject_id'])_0x19e40e['set']('subject_id',_0x1eba9e['subject_id']);const _0x49d126=_0x19e40e['toString'](),_0x5edfa2=await fetch(API_BASE+'/bindings'+(_0x49d126?'?'+_0x49d126:''));if(!_0x5edfa2['ok']){const _0x168c38=await _0x5edfa2['json']()['catch'](()=>({'message':_0x5edfa2['statusText']}));throw new Error(_0x168c38['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5edfa2['json']();},async 'createBinding'(_0x1aa2ce){const _0x324dcd=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa2ce)});if(!_0x324dcd['ok']){const _0x23d7f6=await _0x324dcd['json']()['catch'](()=>({'message':_0x324dcd['statusText']}));throw new Error(_0x23d7f6['message']||'Failed\x20to\x20create\x20binding');}return await _0x324dcd['json']();},async 'updateBinding'(_0x475cf3,_0xe7fd3a){const _0x5996b0=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x475cf3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe7fd3a)});if(!_0x5996b0['ok']){const _0x4bbf23=await _0x5996b0['json']()['catch'](()=>({'message':_0x5996b0['statusText']}));throw new Error(_0x4bbf23['message']||'Failed\x20to\x20update\x20binding');}return await _0x5996b0['json']();},async 'deleteBinding'(_0x2dca62){const _0x5134d8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2dca62),{'method':'DELETE'});if(!_0x5134d8['ok']){const _0x4305af=await _0x5134d8['json']()['catch'](()=>({'message':_0x5134d8['statusText']}));throw new Error(_0x4305af['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5134d8['json']();},async 'getRoleDefinitions'(){const _0xafae0d=await fetch(API_BASE+'/roles');if(!_0xafae0d['ok']){const _0x2f039e=await _0xafae0d['json']()['catch'](()=>({'message':_0xafae0d['statusText']}));throw new Error(_0x2f039e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xafae0d['json']();},async 'getRoleDefinition'(_0x420a50){const _0x50efa4=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x420a50));if(!_0x50efa4['ok']){const _0x201208=await _0x50efa4['json']()['catch'](()=>({'message':_0x50efa4['statusText']}));throw new Error(_0x201208['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x50efa4['json']();},async 'createRoleDefinition'(_0xd6df1e){const _0x5a0732=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd6df1e)});if(!_0x5a0732['ok']){const _0x24a475=await _0x5a0732['json']()['catch'](()=>({'message':_0x5a0732['statusText']}));throw new Error(_0x24a475['message']||_0x24a475['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x5a0732['json']();},async 'updateRoleDefinition'(_0x52b281,_0x576b15){const _0xa24955=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x52b281),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x576b15)});if(!_0xa24955['ok']){const _0x4274af=await _0xa24955['json']()['catch'](()=>({'message':_0xa24955['statusText']}));throw new Error(_0x4274af['message']||_0x4274af['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xa24955['json']();},async 'deleteRoleDefinition'(_0xb45d0d){const _0x55cc04=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb45d0d),{'method':'DELETE'});if(!_0x55cc04['ok']){const _0x5535c5=await _0x55cc04['json']()['catch'](()=>({'message':_0x55cc04['statusText']}));throw new Error(_0x5535c5['message']||_0x5535c5['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x55cc04['json']();},async 'getAvailablePermissions'(){const _0x133e5a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x133e5a['ok']){const _0x4eb424=await _0x133e5a['json']()['catch'](()=>({'message':_0x133e5a['statusText']}));throw new Error(_0x4eb424['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x133e5a['json']();},async 'getGitProviderAllowedTeams'(_0x1ab1c8){const _0x3271eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x1ab1c8)+'/allowed-teams');if(!_0x3271eb['ok']){const _0x3a29e7=await _0x3271eb['json']()['catch'](()=>({'message':_0x3271eb['statusText']}));throw new Error(_0x3a29e7['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3271eb['json']();},async 'setGitProviderAllowedTeams'(_0x31bacf,_0x28df32){const _0x4af8ae=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31bacf)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x28df32})});if(!_0x4af8ae['ok']){const _0x3a4697=await _0x4af8ae['json']()['catch'](()=>({'message':_0x4af8ae['statusText']}));throw new Error(_0x3a4697['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x4af8ae['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 _0x366de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x56ae12=>{_0x56ae12['el']['style']['bottom']=_0x366de+'px';const _0x215be0=_0x56ae12['el']['offsetHeight']||toastState['defaultHeight'];_0x366de+=_0x215be0+toastState['gap'];});});}function removeToastById(_0x9af826){const _0x108450=toastState['toasts']['findIndex'](_0x13aec6=>_0x13aec6['id']===_0x9af826);if(_0x108450===-0x1)return;const _0x53c886=toastState['toasts'][_0x108450];if(_0x53c886['timeoutId'])clearTimeout(_0x53c886['timeoutId']);_0x53c886['el']['classList']['remove']('show'),setTimeout(()=>_0x53c886['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x108450,0x1),repositionAllToasts();}function registerToast(_0x469f58){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x469f58),repositionAllToasts(),_0x469f58['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(_0x2c74d0){if(_0x2c74d0===null||_0x2c74d0===undefined)return'';return String(_0x2c74d0)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x3b98e4,_0x2de194){if(_0x3b98e4&&typeof _0x3b98e4==='object'&&!Array['isArray'](_0x3b98e4))return{'code':typeof _0x3b98e4['text']==='string'?_0x3b98e4['text']:'','language':typeof _0x3b98e4['lang']==='string'?_0x3b98e4['lang']:''};return{'code':typeof _0x3b98e4==='string'?_0x3b98e4:'','language':typeof _0x2de194==='string'?_0x2de194:''};}function buildMermaidBlock(_0x18d657){const _0x45a44b=String(_0x18d657||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x45a44b))+'\x22>'+escapeHtmlValue(_0x45a44b)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3d9c1a=new marked['Renderer'](),_0x195199=_0x3d9c1a['code']['bind'](_0x3d9c1a);return _0x3d9c1a['code']=function(_0x20f370,_0x40a0f7,..._0x502e8a){const {code:_0x223801,language:_0xd7b632}=getMarkdownCodeBlockPayload(_0x20f370,_0x40a0f7),_0x4e3468=String(_0xd7b632||'')['trim']()['toLowerCase']();if(_0x4e3468==='mermaid')return buildMermaidBlock(_0x223801);const _0x51f221=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x51f221&&_0x4e3468)try{const _0x4b2450=_0x51f221['getLanguage'](_0x4e3468)?_0x4e3468:'plaintext',_0x2662cc=_0x51f221['highlight'](_0x223801,{'language':_0x4b2450})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4e3468)+'\x22>'+_0x2662cc+'</code></pre>';}catch(_0x516f8e){console['error']('Syntax\x20highlighting\x20error:',_0x516f8e);}return _0x195199(_0x20f370,_0x40a0f7,..._0x502e8a);},sharedMarkedRenderer=_0x3d9c1a,_0x3d9c1a;}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 _0x366d6f=window['mermaid'];if(!_0x366d6f||typeof _0x366d6f['initialize']!=='function')return _0x366d6f||null;return _0x366d6f['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x366d6f;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44d719,_0x399197)=>{const _0x411dcc=()=>_0x44d719(configureMermaidInstance()),_0x55a977=()=>{mermaidLoadPromise=null,_0x399197(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x393b07=document['getElementById'](MERMAID_SCRIPT_ID);!_0x393b07&&(_0x393b07=document['createElement']('script'),_0x393b07['id']=MERMAID_SCRIPT_ID,_0x393b07['src']=MERMAID_SCRIPT_SRC,_0x393b07['async']=!![],document['head']['appendChild'](_0x393b07));if(window['mermaid']){_0x411dcc();return;}_0x393b07['addEventListener']('load',_0x411dcc,{'once':!![]}),_0x393b07['addEventListener']('error',_0x55a977,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x54e44c){const _0x7c7d45=_0x54e44c['getAttribute']('data-mermaid-source');if(!_0x7c7d45)return null;let _0x140948=_0x7c7d45;try{_0x140948=decodeURIComponent(_0x7c7d45);}catch{}return _0x54e44c['textContent']=_0x140948,_0x54e44c['removeAttribute']('data-processed'),_0x54e44c['removeAttribute']('aria-roledescription'),_0x54e44c['removeAttribute']('role'),_0x54e44c['removeAttribute']('aria-label'),_0x140948;}function collectMermaidNodes(_0x364c3a,_0x52e0cf){if(!(_0x364c3a instanceof Element))return;_0x364c3a['matches']('.mermaid[data-mermaid-source]')&&_0x52e0cf['add'](_0x364c3a),_0x364c3a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x58e187=>{_0x52e0cf['add'](_0x58e187);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x288f45=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x3ce0ed=>setTimeout(_0x3ce0ed,0x0);_0x288f45(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x209420=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x209420);});});}function queueMermaidRender(_0x46f47c){const _0x7c4f8a=new Set();_0x46f47c instanceof Document||_0x46f47c instanceof DocumentFragment?_0x46f47c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1598df=>_0x7c4f8a['add'](_0x1598df)):collectMermaidNodes(_0x46f47c,_0x7c4f8a);if(_0x7c4f8a['size']===0x0)return;_0x7c4f8a['forEach'](_0x3bf17c=>pendingMermaidNodes['add'](_0x3bf17c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x2de556=Array['from'](pendingMermaidNodes)['filter'](_0x4fd188=>_0x4fd188['isConnected']);pendingMermaidNodes['clear']();if(_0x2de556['length']===0x0)return;const _0x5727eb=await loadMermaid();if(!_0x5727eb)return;configureMermaidInstance();const _0x2ec0ce=getMermaidTheme();for(const _0x171276 of _0x2de556){const _0x5493ae=_0x171276['getAttribute']('data-mermaid-source');if(!_0x5493ae)continue;const _0xb70166=_0x171276['getAttribute']('data-processed')==='true';if(_0xb70166&&_0x171276['dataset']['mermaidTheme']===_0x2ec0ce)continue;restoreMermaidSource(_0x171276);try{if(typeof _0x5727eb['run']==='function')await _0x5727eb['run']({'nodes':[_0x171276]});else typeof _0x5727eb['init']==='function'&&_0x5727eb['init'](undefined,[_0x171276]);_0x171276['dataset']['mermaidTheme']=_0x2ec0ce,delete _0x171276['dataset']['mermaidError'];}catch(_0x2349db){console['error']('Mermaid\x20render\x20failed:',_0x2349db),restoreMermaidSource(_0x171276),_0x171276['dataset']['mermaidError']='true',delete _0x171276['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3efbca=>{_0x3efbca['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3efbca);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x180505=>{_0x180505['forEach'](_0x160b79=>{_0x160b79['addedNodes']['forEach'](_0x49c0b2=>{_0x49c0b2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x49c0b2);});});}),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'(_0x926315){const _0x14ba4b=new Date(_0x926315),_0x449e7e=new Date(),_0x5b7ce2=_0x449e7e-_0x14ba4b,_0x2545b5=Math['floor'](_0x5b7ce2/0x3e8),_0x51181a=Math['floor'](_0x2545b5/0x3c),_0x3eac43=Math['floor'](_0x51181a/0x3c),_0x3f438a=Math['floor'](_0x3eac43/0x18);if(_0x2545b5<0x3c)return'now';if(_0x51181a<0x3c)return _0x51181a+'m\x20ago';if(_0x3eac43<0x18)return _0x3eac43+'h\x20ago';return _0x3f438a+'d\x20ago';},'getStatusIcon'(_0x19ddb6){switch(_0x19ddb6){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x535b82){switch(_0x535b82){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'(_0x557b5f,_0x303e98=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2d8f41={};_0x2d8f41['text/plain']=new Blob([_0x557b5f],{'type':'text/plain'});_0x303e98&&(_0x2d8f41['text/html']=new Blob([_0x303e98],{'type':'text/html'}));const _0x53d62b=new ClipboardItem(_0x2d8f41);return await navigator['clipboard']['write']([_0x53d62b]),!![];}catch(_0x35d51f){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35d51f);}try{const _0x101c88=_0x374c89=>{_0x374c89['preventDefault'](),_0x374c89['clipboardData']['setData']('text/plain',_0x557b5f),_0x303e98&&_0x374c89['clipboardData']['setData']('text/html',_0x303e98);};document['addEventListener']('copy',_0x101c88);const _0x59d023=document['execCommand']('copy');document['removeEventListener']('copy',_0x101c88);if(_0x59d023)return!![];}catch(_0xcae0c5){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xcae0c5);}try{const _0x59d132=document['createElement']('textarea');_0x59d132['value']=_0x557b5f,_0x59d132['style']['position']='fixed',_0x59d132['style']['opacity']='0',_0x59d132['style']['pointerEvents']='none',document['body']['appendChild'](_0x59d132),_0x59d132['select']();const _0x576592=document['execCommand']('copy');return document['body']['removeChild'](_0x59d132),_0x576592;}catch(_0x296190){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x296190),![];}},'showToast'(_0x267a47,_0x438b4a='info'){const _0x3427d7=getNextToastId(),_0x513494=document['createElement']('div');_0x513494['className']='toast\x20toast-'+_0x438b4a,_0x513494['textContent']=_0x267a47,_0x513494['dataset']['toastId']=_0x3427d7,document['body']['appendChild'](_0x513494);const _0x4ac15f=_0x438b4a==='error'?0x2710:0xbb8,_0x27bb30=setTimeout(()=>{removeToastById(_0x3427d7);},_0x4ac15f),_0x258065={'id':_0x3427d7,'el':_0x513494,'timeoutId':_0x27bb30};return registerToast(_0x258065),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x513494['classList']['add']('show');});}),_0x3427d7;},'showError'(_0x40a1f5){console['error'](_0x40a1f5);const _0x5ab662=typeof _0x40a1f5==='string'?_0x40a1f5:_0x40a1f5['message']||'An\x20error\x20occurred';this['showToast'](_0x5ab662,'error');},'showSuccess'(_0x4a349c){this['showToast'](_0x4a349c,'success');},'capitalize'(_0x22c11a){if(!_0x22c11a)return'';return _0x22c11a['charAt'](0x0)['toUpperCase']()+_0x22c11a['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x814cdb){return escapeHtmlValue(_0x814cdb);},'ansiToHtml'(_0x2783e7){if(_0x2783e7===null||_0x2783e7===undefined)return'';let _0x57895c=this['escapeHtml'](_0x2783e7);const _0x3be8fb={'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'},_0x4394db={'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 _0x47560a=0x0;return _0x57895c=_0x57895c['replace'](/\x1b\[([0-9;]*)m/g,(_0x3ee0b5,_0x6688eb)=>{if(!_0x6688eb||_0x6688eb==='0'){const _0x408a64='</span>'['repeat'](_0x47560a);return _0x47560a=0x0,_0x408a64;}const _0x540ce3=_0x6688eb['split'](';'),_0x2ef24d=[];for(const _0x3d36c1 of _0x540ce3){if(_0x3d36c1==='1')_0x2ef24d['push']('font-weight:bold');else{if(_0x3d36c1==='2')_0x2ef24d['push']('opacity:0.7');else{if(_0x3d36c1==='3')_0x2ef24d['push']('font-style:italic');else{if(_0x3d36c1==='4')_0x2ef24d['push']('text-decoration:underline');else{if(_0x3d36c1==='9')_0x2ef24d['push']('text-decoration:line-through');else{if(_0x3be8fb[_0x3d36c1])_0x2ef24d['push']('color:'+_0x3be8fb[_0x3d36c1]);else{if(_0x4394db[_0x3d36c1])_0x2ef24d['push']('background-color:'+_0x4394db[_0x3d36c1]);}}}}}}}if(_0x2ef24d['length']>0x0)return _0x47560a++,'<span\x20style=\x22'+_0x2ef24d['join'](';')+'\x22>';return'';}),_0x57895c+='</span>'['repeat'](_0x47560a),_0x57895c=_0x57895c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5c57c9,_0x22004a)=>{if(!_0x22004a||_0x22004a==='0')return'';const _0x124498=_0x22004a['split'](';'),_0x170c7e=[];for(const _0x5f099e of _0x124498){if(_0x5f099e==='1')_0x170c7e['push']('font-weight:bold');else{if(_0x3be8fb[_0x5f099e])_0x170c7e['push']('color:'+_0x3be8fb[_0x5f099e]);else{if(_0x4394db[_0x5f099e])_0x170c7e['push']('background-color:'+_0x4394db[_0x5f099e]);}}}if(_0x170c7e['length']>0x0)return'<span\x20style=\x22'+_0x170c7e['join'](';')+'\x22>';return'';}),_0x57895c;},'showModal'({title:_0x219334,content:_0x1cca3f,buttons:buttons=[]}){const _0x426786='\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'](_0x219334)+'</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'+_0x1cca3f+'\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']((_0x644974,_0x4e61eb)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x644974['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4e61eb+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x644974['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',_0x3bda3d=document['createElement']('div');_0x3bda3d['id']='utils-modal',_0x3bda3d['className']='modal',_0x3bda3d['innerHTML']=_0x426786,document['body']['appendChild'](_0x3bda3d);const _0x43bc41=document['getElementById']('utils-modal-close');_0x43bc41&&_0x43bc41['addEventListener']('click',()=>this['hideModal']());const _0x5896f9=_0x3bda3d['querySelectorAll']('[data-btn-index]');_0x5896f9['forEach'](_0x5ec379=>{const _0x53bb8f=parseInt(_0x5ec379['dataset']['btnIndex']);buttons[_0x53bb8f]?.['onClick']&&_0x5ec379['addEventListener']('click',buttons[_0x53bb8f]['onClick']);});const _0x15185f=document['getElementById']('utils-modal-overlay');_0x15185f&&_0x15185f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x217ef3=document['getElementById']('utils-modal');_0x217ef3&&_0x217ef3['remove']();},'parseKeyValuePairs'(_0x40c1cb){const _0x392409={};if(!_0x40c1cb)return _0x392409;return _0x40c1cb['split'](/\r?\n/)['map'](_0x981111=>_0x981111['trim']())['filter'](Boolean)['forEach'](_0x394456=>{const _0x5bb2d9=_0x394456['indexOf']('=');if(_0x5bb2d9>0x0){const _0x4affb1=_0x394456['slice'](0x0,_0x5bb2d9)['trim'](),_0x196754=_0x394456['slice'](_0x5bb2d9+0x1)['trim']();if(_0x4affb1)_0x392409[_0x4affb1]=_0x196754;}}),_0x392409;},'debounce'(_0x1b0a7c,_0x20bee6=0xfa){let _0x5d32fb=null;return(..._0x890240)=>{clearTimeout(_0x5d32fb),_0x5d32fb=setTimeout(()=>_0x1b0a7c['apply'](this,_0x890240),_0x20bee6);};},'formatTimestamp'(_0x216c69){if(!_0x216c69)return'N/A';const _0x299691=new Date(_0x216c69);return _0x299691['toLocaleDateString']()+'\x20'+_0x299691['toLocaleTimeString']();},'getQueryParams'(){const _0x26e1d9=new URLSearchParams(window['location']['search']),_0x5747c3={};for(const [_0x4a69aa,_0x31e7f6]of _0x26e1d9){_0x5747c3[_0x4a69aa]=_0x31e7f6;}return _0x5747c3;},'formatDuration'(_0x5e1188,_0x27ebd0){if(!_0x5e1188)return'N/A';const _0x1480b1=new Date(_0x5e1188),_0x435c44=_0x27ebd0?new Date(_0x27ebd0):new Date(),_0x91dd6=_0x435c44-_0x1480b1;if(_0x91dd6<0x0)return'0s';const _0x5e304c=Math['floor'](_0x91dd6/0x3e8),_0x5b705f=Math['floor'](_0x5e304c/0x3c),_0x35c58c=Math['floor'](_0x5b705f/0x3c),_0x131810=Math['floor'](_0x35c58c/0x18);if(_0x5e304c<0x3c)return _0x5e304c+'s';if(_0x5b705f<0x3c)return _0x5b705f+'m\x20'+_0x5e304c%0x3c+'s';if(_0x35c58c<0x18)return _0x35c58c+'h\x20'+_0x5b705f%0x3c+'m\x20'+_0x5e304c%0x3c+'s';return _0x131810+'d\x20'+_0x35c58c%0x18+'h\x20'+_0x5b705f%0x3c+'m';},'renderMarkdown'(_0x27a9d3,_0x56fd0b={}){if(!_0x27a9d3)return'';_0x27a9d3=this['rewriteAttachmentLinks'](_0x27a9d3,_0x56fd0b),_0x27a9d3=this['rewriteColorSyntax'](_0x27a9d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x27a9d3);}catch(_0x4e871e){return console['error']('Markdown\x20parsing\x20error:',_0x4e871e),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);}},'rewriteAttachmentLinks'(_0x96086e,_0x288f3c={}){const _0x3b8552=typeof _0x288f3c['resolveAttachmentUrl']==='function'?_0x288f3c['resolveAttachmentUrl']:_0x288f3c['taskId']?_0x3015e4=>API_BASE+'/tasks/'+_0x288f3c['taskId']+'/attachments/'+encodeURIComponent(_0x3015e4):null;if(!_0x3b8552)return _0x96086e;return String(_0x96086e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5a111c,_0xe55239)=>{const _0x15f570=String(_0xe55239||'')['trim']();if(!_0x15f570)return _0x5a111c;let _0x108118=_0x15f570;try{_0x108118=decodeURIComponent(_0x15f570);}catch{}const _0x16d77d=_0x3b8552(_0x108118);if(!_0x16d77d)return _0x5a111c;return']('+_0x16d77d+')';});},'rewriteColorSyntax'(_0x1c4660){if(!_0x1c4660)return _0x1c4660;return String(_0x1c4660)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x144a45,_0x1b0d60,_0x262316)=>{const _0x1eba8c=this['rewriteColorSyntax'](_0x262316);return'<span\x20style=\x22color:\x20'+_0x1b0d60+'\x22>'+_0x1eba8c+'</span>';});},'renderMarkdownFallback'(_0xb2afdb,_0x5df316={}){if(!_0xb2afdb)return'';_0xb2afdb=_0xb2afdb['replace'](/\r\n/g,'\x0a'),_0xb2afdb=_0xb2afdb['replace'](/\r/g,'\x0a'),_0xb2afdb=this['rewriteAttachmentLinks'](_0xb2afdb,_0x5df316);let _0x3ac967=this['escapeHtml'](_0xb2afdb);return _0x3ac967=_0x3ac967['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3ac967=_0x3ac967['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3ac967=_0x3ac967['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3ac967=_0x3ac967['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3ac967=_0x3ac967['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3ac967=_0x3ac967['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3ac967=_0x3ac967['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3ac967=_0x3ac967['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3ac967=_0x3ac967['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3ac967=_0x3ac967['replace'](/\n\n/g,'</p><p>'),_0x3ac967=_0x3ac967['replace'](/\n/g,'<br>'),'<p>'+_0x3ac967+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1af418=new Uint8Array(0x10);crypto['getRandomValues'](_0x1af418),_0x1af418[0x6]=_0x1af418[0x6]&0xf|0x40,_0x1af418[0x8]=_0x1af418[0x8]&0x3f|0x80;const _0x4967ab=Array['from'](_0x1af418,_0x3d1a59=>_0x3d1a59['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4967ab['slice'](0x0,0x8)+'-'+_0x4967ab['slice'](0x8,0xc)+'-'+_0x4967ab['slice'](0xc,0x10)+'-'+_0x4967ab['slice'](0x10,0x14)+'-'+_0x4967ab['slice'](0x14);}};export class CustomSelect{constructor(_0x2e912e,_0x55dfed={}){this['nativeSelect']=_0x2e912e,this['options']=_0x55dfed,this['isOpen']=![],this['selectedValue']=_0x2e912e['value']||'',this['searchable']=_0x55dfed['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4a3f89=document['createElement']('div');_0x4a3f89['className']='custom-select';const _0x4bf089=document['createElement']('div');_0x4bf089['className']='custom-select-trigger',_0x4bf089['setAttribute']('tabindex','0'),_0x4bf089['setAttribute']('role','button'),_0x4bf089['setAttribute']('aria-haspopup','listbox');const _0xca6ed2=document['createElement']('span');_0xca6ed2['className']='custom-select-trigger-text';const _0x7ef89e=document['createElement']('span');_0x7ef89e['className']='custom-select-arrow',_0x7ef89e['textContent']='▼',_0x4bf089['appendChild'](_0xca6ed2),_0x4bf089['appendChild'](_0x7ef89e);const _0x57a994=document['createElement']('div');_0x57a994['className']='custom-select-dropdown',_0x57a994['setAttribute']('role','listbox');if(this['searchable']){const _0x570b47=document['createElement']('div');_0x570b47['className']='custom-select-search';const _0x354c16=document['createElement']('input');_0x354c16['type']='text',_0x354c16['className']='custom-select-search-input',_0x354c16['placeholder']='Type\x20to\x20search...',_0x354c16['setAttribute']('aria-label','Search\x20options'),_0x354c16['addEventListener']('input',_0x9b14ab=>{this['searchQuery']=_0x9b14ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x354c16['addEventListener']('keydown',_0x2e9513=>{if(_0x2e9513['key']==='Escape')_0x2e9513['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e9513['key']==='Enter'){_0x2e9513['preventDefault'](),_0x2e9513['stopPropagation']();const _0x3208b9=_0x57a994['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x3208b9){const _0x2b8cd5=_0x3208b9['getAttribute']('data-value');this['select'](_0x2b8cd5);}}}}),_0x570b47['appendChild'](_0x354c16),_0x57a994['appendChild'](_0x570b47),this['searchInput']=_0x354c16;}const _0x4fb228=document['createElement']('div');_0x4fb228['className']='custom-select-options',_0x57a994['appendChild'](_0x4fb228),_0x4a3f89['appendChild'](_0x4bf089),_0x4a3f89['appendChild'](_0x57a994),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4a3f89,this['nativeSelect']),this['wrapper']=_0x4a3f89,this['trigger']=_0x4bf089,this['triggerText']=_0xca6ed2,this['dropdown']=_0x57a994,this['optionsContainer']=_0x4fb228,_0x4bf089['addEventListener']('click',()=>this['toggle']()),_0x4bf089['addEventListener']('keydown',_0x36fb0e=>this['handleKeydown'](_0x36fb0e)),document['addEventListener']('click',_0x2e1685=>{!_0x4a3f89['contains'](_0x2e1685['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3379c0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3379c0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b3e02=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b3e02['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x31b90d=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x31b90d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x384125=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x384125),this['trigger']['setAttribute']('aria-disabled',_0x384125?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x384125?'-1':'0'),_0x384125&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5e4d91=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4f90fc=_0x5e4d91['filter'](_0x540161=>!_0x540161['disabled']&&!_0x540161['hidden']);_0x5e4d91['forEach']((_0x3902f4,_0x91ba40)=>{const _0x1f36a3=document['createElement']('div');_0x1f36a3['className']='custom-select-option',_0x1f36a3['textContent']=_0x3902f4['textContent'],_0x1f36a3['setAttribute']('data-value',_0x3902f4['value']),_0x1f36a3['setAttribute']('data-index',_0x91ba40),_0x1f36a3['setAttribute']('role','option'),_0x3902f4['disabled']?_0x1f36a3['classList']['add']('disabled'):_0x1f36a3['addEventListener']('click',()=>this['select'](_0x3902f4['value'])),_0x3902f4['value']===this['selectedValue']&&_0x1f36a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f36a3),this['allOptions']['push']({'element':_0x1f36a3,'text':_0x3902f4['textContent']['toLowerCase'](),'value':_0x3902f4['value'],'disabled':_0x3902f4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5c9641=this['searchInput']['parentElement'];_0x4f90fc['length']>0x3?_0x5c9641['style']['display']='':_0x5c9641['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2a8366=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x9297e8=>{if(!_0x2a8366||_0x9297e8['disabled'])_0x9297e8['element']['style']['display']='';else{const _0x3866e2=_0x9297e8['text']['includes'](_0x2a8366);_0x9297e8['element']['style']['display']=_0x3866e2?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x51a4ed){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x51a4ed,this['nativeSelect']['value']=_0x51a4ed;const _0x39bc52=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x39bc52),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x478bef=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x478bef&&(this['triggerText']['textContent']=_0x478bef['textContent'],_0x478bef['disabled']||_0x478bef['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1fcc04=>{_0x1fcc04['getAttribute']('data-value')===this['selectedValue']?_0x1fcc04['classList']['add']('selected'):_0x1fcc04['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 _0x213a6a=window['getComputedStyle'](this['dropdown']);if(_0x213a6a['position']==='fixed'){const _0x5a896c=this['trigger']['getBoundingClientRect'](),_0xafe616=parseInt(_0x213a6a['maxHeight'])||0xc8,_0x3e10cc=window['innerHeight'],_0x223e19=_0x3e10cc-_0x5a896c['bottom'],_0x64c1e6=_0x5a896c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x44a9c3;_0x223e19<_0xafe616&&_0x64c1e6>_0x223e19?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3e10cc-_0x5a896c['top']+'px',_0x44a9c3=Math['min'](_0xafe616,_0x64c1e6-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5a896c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x44a9c3=Math['min'](_0xafe616,_0x223e19-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px');if(this['optionsContainer']){let _0x35dbaa=_0x44a9c3;if(this['searchInput']){const _0x23cde9=this['searchInput']['parentElement'];_0x23cde9&&(_0x35dbaa-=_0x23cde9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x35dbaa)+'px';}this['dropdown']['style']['left']=_0x5a896c['left']+'px',this['dropdown']['style']['width']=_0x5a896c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5d16fa=this['searchInput']['parentElement'];_0x5d16fa&&_0x5d16fa['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'](_0x4d2406){if(this['nativeSelect']['disabled'])return;if(_0x4d2406['key']==='Enter'||_0x4d2406['key']==='\x20')_0x4d2406['preventDefault'](),this['toggle']();else _0x4d2406['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3b584f='\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',_0x3b584f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xb54913=document['getElementById']('confirm-dialog-close'),_0x474da2=document['getElementById']('confirm-dialog-cancel'),_0x3745a2=document['getElementById']('confirm-dialog-confirm'),_0x3b6694=this['_modal']['querySelector']('.modal-overlay');_0xb54913['addEventListener']('click',()=>this['_resolve'](![])),_0x474da2['addEventListener']('click',()=>this['_resolve'](![])),_0x3745a2['addEventListener']('click',()=>this['_resolve'](!![])),_0x3b6694['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x344c2a=>{if(_0x344c2a['key']==='Escape')_0x344c2a['preventDefault'](),this['_resolve'](![]);else _0x344c2a['key']==='Enter'&&(_0x344c2a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2cb8d3,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x45a0c2=>{this['_resolvePromise']=_0x45a0c2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2cb8d3;const _0x1ebaeb=document['getElementById']('confirm-dialog-cancel'),_0x3a488f=document['getElementById']('confirm-dialog-confirm');_0x1ebaeb['textContent']=cancelText,_0x3a488f['textContent']=confirmText,_0x3a488f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x3a488f['focus']();});},'_resolve'(_0x59be6d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x59be6d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x210ac6,_0x2a8063={}){this['container']=_0x210ac6,this['options']={'placeholder':_0x2a8063['placeholder']||'Type\x20to\x20search...','maxItems':_0x2a8063['maxItems']||0x64,'loadItems':_0x2a8063['loadItems']||(async()=>[]),'renderItem':_0x2a8063['renderItem']||(_0x38ce37=>({'primary':String(_0x38ce37),'secondary':''})),'onSelect':_0x2a8063['onSelect']||(()=>{}),'filterItems':_0x2a8063['filterItems']||null,'getItemValue':_0x2a8063['getItemValue']||(_0x3aa59a=>_0x3aa59a),'sortItems':_0x2a8063['sortItems']||null,'debounceMs':_0x2a8063['debounceMs']||0xc8,'minCharsForSearch':_0x2a8063['minCharsForSearch']||0x0,'emptyMessage':_0x2a8063['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x2a8063['loadingMessage']||'Loading...','preload':_0x2a8063['preload']!==![],'searchMode':_0x2a8063['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',_0x5716d9=>this['onBlur'](_0x5716d9)),this['input']['addEventListener']('input',_0xa57a47=>this['onInput'](_0xa57a47)),this['input']['addEventListener']('keydown',_0x4b13d8=>this['onKeydown'](_0x4b13d8)),this['clearBtn']['addEventListener']('mousedown',_0x3a7fcf=>{_0x3a7fcf['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x14ae91=>{_0x14ae91['preventDefault']();}),document['addEventListener']('click',_0x424dd1=>{!this['wrapper']['contains'](_0x424dd1['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(_0x37c6a4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x37c6a4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2ff0bf){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4891ac){const _0x4787f6=_0x4891ac['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4787f6);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4787f6):this['loadAndShow'](_0x4787f6);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50f691){switch(_0x50f691['key']){case'ArrowDown':_0x50f691['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50f691['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50f691['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50f691['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x436bdf){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1f1a79=this['selectedIndex']+_0x436bdf;if(_0x1f1a79>=0x0&&_0x1f1a79<this['filteredItems']['length']){this['selectedIndex']=_0x1f1a79,this['updateSelectionHighlight']();const _0x5e69ba=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5e69ba[this['selectedIndex']]&&_0x5e69ba[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2222b5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2222b5['forEach']((_0x4ce9b1,_0x2b63ef)=>{_0x4ce9b1['classList']['toggle']('keyboard-selected',_0x2b63ef===this['selectedIndex']);});}async['loadAndShow'](_0x43bfc3){this['showLoading']();try{const _0x3763cd=await this['options']['loadItems'](_0x43bfc3);if(this['options']['searchMode']==='server'){let _0x26f1a4=_0x3763cd;this['options']['sortItems']&&(_0x26f1a4=this['options']['sortItems']([..._0x3763cd]));this['filteredItems']=_0x26f1a4;const _0x4ac324=this['filteredItems']['length']>=this['options']['maxItems'];_0x4ac324&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4ac324),this['open']();}else this['allItems']=_0x3763cd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x43bfc3);}catch(_0x347d9c){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x347d9c),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1db7d6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1db7d6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x85530c=this['filteredItems']['length']>=this['options']['maxItems'];_0x85530c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x85530c),this['open']();}['renderItems'](_0x30f721){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']((_0x8a9108,_0x19c414)=>{const _0x5dea22=document['createElement']('div');_0x5dea22['className']='autocomplete-select-item',_0x5dea22['setAttribute']('role','option'),_0x5dea22['setAttribute']('data-index',_0x19c414);const _0x921088=this['options']['renderItem'](_0x8a9108);let _0x51c7db='';_0x921088['icon']&&(_0x51c7db='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x921088['iconClass']||'')+'\x22>'+_0x921088['icon']+'</span>'),_0x5dea22['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x51c7db+'\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'](_0x921088['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x921088['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x921088['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5dea22['addEventListener']('click',()=>{this['selectItem'](_0x8a9108);}),_0x5dea22['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x19c414,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5dea22);}),_0x30f721?(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'](_0x56ac4e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x56ac4e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x962139){this['selectedItem']=_0x962139;const _0x55e7f6=this['options']['renderItem'](_0x962139);this['input']['value']=_0x55e7f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x962139);}['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'](_0x944fb5){if(_0x944fb5){this['selectedItem']=_0x944fb5;const _0x249eed=this['options']['renderItem'](_0x944fb5);this['input']['value']=_0x249eed['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4a9811){this['allItems']=_0x4a9811,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'](_0xce9cc9){this['input']['placeholder']=_0xce9cc9;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x4fe137=null){const _0x1f4a44=document['getElementById']('admin-menu-container'),_0x28d363=document['getElementById']('admin-menu-btn'),_0x507c9c=document['getElementById']('admin-menu');if(!_0x1f4a44||!_0x28d363||!_0x507c9c)return;try{!_0x4fe137&&(_0x4fe137=await API['getCurrentUser']());if(_0x4fe137){const _0x1e4e7a=window['Permissions'],_0x4fff8e=_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:manage')||_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')||_0x1e4e7a['hasTeamPermission'](_0x4fe137,'teams:manage')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:view_details');if(!_0x4fff8e)return;_0x1f4a44['hidden']=![];if(!_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')){const _0x41e648=_0x507c9c['querySelectorAll']('.admin-menu-item');_0x41e648['forEach'](_0x4ad9f1=>{const _0x2bde1f=_0x4ad9f1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x2bde1f==='Users'&&!_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Skills'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Settings'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Health'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Git\x20History'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Roles'&&(_0x4ad9f1['hidden']=!![]);});}_0x28d363['addEventListener']('click',_0x302cfe=>{_0x302cfe['stopPropagation']();const _0x2af135=document['getElementById']('actions-menu');if(_0x2af135)_0x2af135['hidden']=!![];_0x507c9c['hidden']=!_0x507c9c['hidden'];}),document['addEventListener']('click',_0xfbe65d=>{!_0x507c9c['hidden']&&!_0x28d363['contains'](_0xfbe65d['target'])&&!_0x507c9c['contains'](_0xfbe65d['target'])&&(_0x507c9c['hidden']=!![]);}),document['addEventListener']('keydown',_0x26b9a3=>{_0x26b9a3['key']==='Escape'&&!_0x507c9c['hidden']&&(_0x507c9c['hidden']=!![]);});const _0x5ecb7e=document['getElementById']('server-health-btn');_0x5ecb7e&&_0x5ecb7e['addEventListener']('click',async()=>{_0x507c9c['hidden']=!![];const {openServerHealthModal:_0x3120ca}=await import('./server-health.js');_0x3120ca();});}}catch(_0x301d05){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x301d05['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 _0x233e76=window['location']['pathname'],_0x42606e=_0x233e76['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x42606e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x42606e[0x1]),_0x42606e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51326d={}){const _0x286f2c=new URLSearchParams();_0x51326d['userId']&&_0x286f2c['set']('userId',String(_0x51326d['userId']));_0x51326d['automation']&&_0x286f2c['set']('automation',String(_0x51326d['automation']));const _0x4753fe=API_BASE+'/tasks/stats'+(_0x286f2c['toString']()?'?'+_0x286f2c['toString']():''),_0x40243d=await fetch(_0x4753fe);if(!_0x40243d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x40243d['statusText']);return await _0x40243d['json']();},async 'getTasks'(_0xcf7701={}){const _0x20bac0=new URLSearchParams();_0xcf7701['status']&&_0x20bac0['set']('status',String(_0xcf7701['status']));_0xcf7701['environment']&&_0x20bac0['set']('environment',String(_0xcf7701['environment']));_0xcf7701['automation']&&_0x20bac0['set']('automation',String(_0xcf7701['automation']));if(_0xcf7701['include']){const _0x25ff1b=Array['isArray'](_0xcf7701['include'])?_0xcf7701['include']['join'](','):String(_0xcf7701['include']);_0x25ff1b&&_0x20bac0['set']('include',_0x25ff1b);}_0xcf7701['filter']&&_0x20bac0['set']('filter',String(_0xcf7701['filter']));_0xcf7701['page']&&_0x20bac0['set']('page',String(_0xcf7701['page']));_0xcf7701['limit']&&_0x20bac0['set']('limit',String(_0xcf7701['limit']));_0xcf7701['userId']&&_0x20bac0['set']('userId',String(_0xcf7701['userId']));_0xcf7701['search']&&_0x20bac0['set']('search',String(_0xcf7701['search']));_0xcf7701['includeChildTasks']&&_0x20bac0['set']('includeChildTasks','true');const _0x2fe253=API_BASE+'/tasks'+(_0x20bac0['toString']()?'?'+_0x20bac0['toString']():''),_0x3559e8=await fetch(_0x2fe253);if(!_0x3559e8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3559e8['statusText']);return await _0x3559e8['json']();},async 'getAutomations'(_0x57513d={}){const _0x5b03ef=new URLSearchParams();_0x57513d['environment']&&_0x5b03ef['set']('environment',String(_0x57513d['environment']));const _0xc2c37f=await fetch(API_BASE+'/api/automations'+(_0x5b03ef['toString']()?'?'+_0x5b03ef['toString']():''));if(!_0xc2c37f['ok']){const _0x2fc5c1=await _0xc2c37f['json']()['catch'](()=>({}));throw new Error(_0x2fc5c1['message']||_0x2fc5c1['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc2c37f['statusText']);}return await _0xc2c37f['json']();},async 'getAutomation'(_0x3d1457){const _0x287925=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3d1457));if(!_0x287925['ok']){const _0x2050d8=await _0x287925['json']()['catch'](()=>({}));throw new Error(_0x2050d8['message']||_0x2050d8['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x287925['statusText']);}return await _0x287925['json']();},async 'createAutomation'(_0xbb7a54){const _0x3334aa=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbb7a54||{})});if(!_0x3334aa['ok']){const _0x53f690=await _0x3334aa['json']()['catch'](()=>({}));throw new Error(_0x53f690['message']||_0x53f690['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3334aa['statusText']);}return await _0x3334aa['json']();},async 'updateAutomation'(_0x21deb8,_0x25a9c7){const _0x1c34d7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x21deb8),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a9c7||{})});if(!_0x1c34d7['ok']){const _0x532df9=await _0x1c34d7['json']()['catch'](()=>({}));throw new Error(_0x532df9['message']||_0x532df9['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1c34d7['statusText']);}return await _0x1c34d7['json']();},async 'deleteAutomation'(_0x449e86){const _0xe0f73f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x449e86),{'method':'DELETE'});if(!_0xe0f73f['ok']){const _0x5e9e81=await _0xe0f73f['json']()['catch'](()=>({}));throw new Error(_0x5e9e81['message']||_0x5e9e81['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xe0f73f['statusText']);}return await _0xe0f73f['json']();},async 'triggerAutomation'(_0x57a1e0){const _0x53d422=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57a1e0)+'/trigger',{'method':'POST'});if(!_0x53d422['ok']){const _0x22be42=await _0x53d422['json']()['catch'](()=>({}));throw new Error(_0x22be42['message']||_0x22be42['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x53d422['statusText']);}return await _0x53d422['json']();},async 'setAutomationEnabled'(_0x2c7e53,_0x3779fc){const _0x1de884=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c7e53)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x3779fc})});if(!_0x1de884['ok']){const _0x1823e1=await _0x1de884['json']()['catch'](()=>({}));throw new Error(_0x1823e1['message']||_0x1823e1['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1de884['statusText']);}return await _0x1de884['json']();},async 'getAutomationHistory'(_0x1f6557,_0x2e7794=0x32){const _0x44544e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f6557)+'/history?limit='+encodeURIComponent(String(_0x2e7794)));if(!_0x44544e['ok']){const _0x3909f0=await _0x44544e['json']()['catch'](()=>({}));throw new Error(_0x3909f0['message']||_0x3909f0['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x44544e['statusText']);}return await _0x44544e['json']();},async 'getTask'(_0x3a95cc,_0x370eb6={}){const _0xd98613=new URLSearchParams();if(_0x370eb6['include']){const _0x1c1921=Array['isArray'](_0x370eb6['include'])?_0x370eb6['include']['join'](','):String(_0x370eb6['include']);if(_0x1c1921)_0xd98613['set']('include',_0x1c1921);}const _0x2dbec9=await fetch(API_BASE+'/tasks/'+_0x3a95cc+(_0xd98613['toString']()?'?'+_0xd98613['toString']():''));if(!_0x2dbec9['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2dbec9['statusText']);return await _0x2dbec9['json']();},async 'getTaskResults'(_0x16d0d6){const _0x33107a=await fetch(API_BASE+'/tasks/'+_0x16d0d6+'/results');if(!_0x33107a['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x33107a['statusText']);return await _0x33107a['json']();},async 'getTaskPatches'(_0x5844d2){const _0x3754b2=await fetch(API_BASE+'/tasks/'+_0x5844d2+'/patches');if(!_0x3754b2['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x3754b2['statusText']);return await _0x3754b2['json']();},async 'getTaskAttachments'(_0x1d5d56){const _0x386fbe=await fetch(API_BASE+'/tasks/'+_0x1d5d56+'/attachments');if(!_0x386fbe['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x386fbe['statusText']);return await _0x386fbe['json']();},async 'uploadAttachments'(_0xab1186,_0x448dd3){const _0x18c024=new FormData();for(const _0x129ffe of _0x448dd3){_0x18c024['append']('attachments',_0x129ffe);}const _0x5edfbe=await fetch(API_BASE+'/tasks/'+_0xab1186+'/attachments',{'method':'POST','body':_0x18c024});if(!_0x5edfbe['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5edfbe['statusText']);return await _0x5edfbe['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3f02f9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3f02f9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3f02f9['json']();}catch(_0x24e1b1){return{'available':![],'reason':_0x24e1b1['message']};}},async 'generateTaskName'(_0x1e9346){try{const _0x3bccdd=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x1e9346})});return await _0x3bccdd['json']();}catch(_0x1d19dc){return{'success':![],'error':_0x1d19dc['message']};}},async 'createTask'(_0x5864a8){let _0x13d7a1,_0x4ec753={};if(_0x5864a8['files']&&_0x5864a8['files']['length']>0x0){const _0x45b4eb=new FormData();for(const [_0x319c78,_0x4f9e88]of Object['entries'](_0x5864a8)){if(_0x319c78!=='files'){if(_0x4f9e88==null)continue;typeof _0x4f9e88==='object'?_0x45b4eb['append'](_0x319c78,JSON['stringify'](_0x4f9e88)):_0x45b4eb['append'](_0x319c78,String(_0x4f9e88));}}for(const _0x58f640 of _0x5864a8['files']){_0x45b4eb['append']('attachments',_0x58f640);}_0x13d7a1=_0x45b4eb;}else _0x4ec753['Content-Type']='application/json',_0x13d7a1=JSON['stringify'](_0x5864a8);const _0x300fc5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4ec753,'body':_0x13d7a1});if(!_0x300fc5['ok']){const _0x171555=await _0x300fc5['json'](),_0x479552=new Error(_0x171555['error']||'Failed\x20to\x20create\x20task:\x20'+_0x300fc5['statusText']),{message:_0x12f62a,..._0x3731b1}=_0x171555;Object['assign'](_0x479552,_0x3731b1);throw _0x479552;}return await _0x300fc5['json']();},async 'createTestTask'(_0x39c482){const _0x6d1269=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39c482)});if(!_0x6d1269['ok']){const _0x28537b=await _0x6d1269['json']();throw new Error(_0x28537b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x6d1269['statusText']);}return await _0x6d1269['json']();},async 'createEphemeralTest'(_0x16d9ce){const _0x35b6b0=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16d9ce)});if(!_0x35b6b0['ok']){const _0x16e855=await _0x35b6b0['json']();throw new Error(_0x16e855['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35b6b0['statusText']);}return await _0x35b6b0['json']();},async 'createDeployTask'(_0x39782d){const _0x41c85a=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39782d)});if(!_0x41c85a['ok']){const _0x4dc5a2=await _0x41c85a['json']();throw new Error(_0x4dc5a2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41c85a['statusText']);}return await _0x41c85a['json']();},async 'getEnvironments'(){const _0x3dad25=await fetch(API_BASE+'/environments');if(!_0x3dad25['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3dad25['statusText']);return await _0x3dad25['json']();},async 'getEnvironment'(_0x2e975d){const _0x5d82a3=await fetch(API_BASE+'/environments/'+_0x2e975d);if(!_0x5d82a3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5d82a3['statusText']);return await _0x5d82a3['json']();},async 'getEnvironmentRepoHistory'(_0x13764c,_0x1f97e8,_0x5b8869={}){if(!_0x13764c||!_0x1f97e8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4d95b9=new URLSearchParams();if(_0x5b8869['limit'])_0x4d95b9['set']('limit',String(_0x5b8869['limit']));if(_0x5b8869['offset'])_0x4d95b9['set']('offset',String(_0x5b8869['offset']));if(_0x5b8869['search'])_0x4d95b9['set']('search',String(_0x5b8869['search']));if(_0x5b8869['branch'])_0x4d95b9['set']('branch',String(_0x5b8869['branch']));const _0x27fa13=API_BASE+'/environments/'+encodeURIComponent(_0x13764c)+'/repos/'+encodeURIComponent(_0x1f97e8)+'/git/history',_0x4e686f=await fetch(''+_0x27fa13+(_0x4d95b9['toString']()?'?'+_0x4d95b9['toString']():''));if(!_0x4e686f['ok']){const _0x51af5e=await _0x4e686f['json']()['catch'](()=>({}));throw new Error(_0x51af5e['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4e686f['statusText']);}return await _0x4e686f['json']();},async 'getEnvironmentRepoCommit'(_0x240753,_0x40b235,_0x5ed338){if(!_0x240753||!_0x40b235||!_0x5ed338)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xdd87bb=API_BASE+'/environments/'+encodeURIComponent(_0x240753)+'/repos/'+encodeURIComponent(_0x40b235)+'/git/commits/'+encodeURIComponent(_0x5ed338),_0x2907e4=await fetch(_0xdd87bb);if(!_0x2907e4['ok']){const _0x4715df=await _0x2907e4['json']()['catch'](()=>({}));throw new Error(_0x4715df['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2907e4['statusText']);}return await _0x2907e4['json']();},async 'getEnvironmentRepoBranches'(_0x3bca45,_0x58a792){if(!_0x3bca45||!_0x58a792)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x359fdd=API_BASE+'/environments/'+encodeURIComponent(_0x3bca45)+'/repos/'+encodeURIComponent(_0x58a792)+'/git/branches',_0x1b6374=await fetch(_0x359fdd);if(!_0x1b6374['ok']){const _0x3d67a6=await _0x1b6374['json']()['catch'](()=>({}));throw new Error(_0x3d67a6['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b6374['statusText']);}return await _0x1b6374['json']();},async 'revertEnvironmentRepoCommit'(_0x1c5518,_0x1adb33,_0x12a37d,_0x558789={}){if(!_0x1c5518||!_0x1adb33||!_0x12a37d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3aacdc=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c5518)+'/repos/'+encodeURIComponent(_0x1adb33)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x12a37d,..._0x558789})});if(!_0x3aacdc['ok']){const _0x5efba7=await _0x3aacdc['json']()['catch'](()=>({}));throw new Error(_0x5efba7['message']||_0x5efba7['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3aacdc['statusText']);}return await _0x3aacdc['json']();},async 'getTemplates'(_0x2f948f={}){const _0x49ab1a=new URLSearchParams();if(_0x2f948f['include']){const _0x39127f=Array['isArray'](_0x2f948f['include'])?_0x2f948f['include']['join'](','):String(_0x2f948f['include']);if(_0x39127f)_0x49ab1a['set']('include',_0x39127f);}const _0x47a483=await fetch(API_BASE+'/templates'+(_0x49ab1a['toString']()?'?'+_0x49ab1a['toString']():''));if(!_0x47a483['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x47a483['statusText']);return await _0x47a483['json']();},async 'getTemplatesForEnvironment'(_0x321859,_0x3afc16={}){if(!_0x321859)throw new Error('Environment\x20name\x20is\x20required');const _0x421eed=new URLSearchParams();if(_0x3afc16['include']){const _0x8d462b=Array['isArray'](_0x3afc16['include'])?_0x3afc16['include']['join'](','):String(_0x3afc16['include']);if(_0x8d462b)_0x421eed['set']('include',_0x8d462b);}const _0x4c60fa=await fetch(API_BASE+'/templates/'+_0x321859+(_0x421eed['toString']()?'?'+_0x421eed['toString']():''));if(!_0x4c60fa['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x321859+':\x20'+_0x4c60fa['statusText']);return await _0x4c60fa['json']();},async 'getTemplate'(_0xd6cb03,_0x4e2863,_0x5e64bd={}){if(!_0xd6cb03||!_0x4e2863)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x59453d=new URLSearchParams();if(_0x5e64bd['include']){const _0x38c5d1=Array['isArray'](_0x5e64bd['include'])?_0x5e64bd['include']['join'](','):String(_0x5e64bd['include']);if(_0x38c5d1)_0x59453d['set']('include',_0x38c5d1);}const _0xefadee=await fetch(API_BASE+'/templates/'+_0xd6cb03+'/'+_0x4e2863+(_0x59453d['toString']()?'?'+_0x59453d['toString']():''));if(!_0xefadee['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0xefadee['statusText']);return await _0xefadee['json']();},async 'getTaskLogs'(_0x1641e0,_0x4edb76={}){if(!_0x1641e0)throw new Error('Task\x20ID\x20is\x20required');const _0xf1d8f2=new URLSearchParams();_0x4edb76['tail']&&_0xf1d8f2['set']('tail',String(_0x4edb76['tail']));const _0x1ffbcc=await fetch(API_BASE+'/tasks/'+_0x1641e0+'/logs'+(_0xf1d8f2['toString']()?'?'+_0xf1d8f2['toString']():''));if(!_0x1ffbcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1ffbcc['statusText']);return await _0x1ffbcc['text']();},async 'getContainers'(){const _0x2c00cc=await fetch(API_BASE+'/containers');if(!_0x2c00cc['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2c00cc['statusText']);return await _0x2c00cc['json']();},async 'getContainer'(_0x52da2d){const _0x1cf3a7=await fetch(API_BASE+'/containers/'+_0x52da2d);if(!_0x1cf3a7['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1cf3a7['statusText']);return await _0x1cf3a7['json']();},async 'startInteractiveContainer'(_0x151c7c){const _0x15a0f2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x151c7c)});if(!_0x15a0f2['ok']){const _0x4cac7b=await _0x15a0f2['json']()['catch'](()=>({}));throw new Error(_0x4cac7b['message']||'Failed\x20to\x20start\x20container:\x20'+_0x15a0f2['statusText']);}return await _0x15a0f2['json']();},async 'startContainerCodeServer'(_0x37c55c,_0x3934ce={}){if(!_0x37c55c)throw new Error('Container\x20ID\x20is\x20required');const _0x549dc3=new URLSearchParams();_0x3934ce['theme']&&_0x549dc3['set']('theme',_0x3934ce['theme']);const _0x4132c9=await fetch(API_BASE+'/containers/'+_0x37c55c+'/code-server'+(_0x549dc3['toString']()?'?'+_0x549dc3['toString']():'')),_0xde09f5=await _0x4132c9['json']()['catch'](()=>({}));if(!_0x4132c9['ok'])throw new Error(_0xde09f5['message']||_0xde09f5['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4132c9['statusText']);return _0xde09f5;},async 'stopContainer'(_0x36f147){const _0x24687a=await fetch(API_BASE+'/containers/'+_0x36f147,{'method':'DELETE'});if(!_0x24687a['ok']){const _0x12e39e=await _0x24687a['json']()['catch'](()=>({}));throw new Error(_0x12e39e['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x24687a['statusText']);}return await _0x24687a['json']();},async 'stopTask'(_0x4e72e2){if(!_0x4e72e2)throw new Error('Task\x20ID\x20is\x20required');const _0x94cb8=await fetch(API_BASE+'/tasks/'+_0x4e72e2+'/stop',{'method':'POST'});if(!_0x94cb8['ok']){const _0x3008fa=await _0x94cb8['json']()['catch'](()=>({}));throw new Error(_0x3008fa['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x94cb8['statusText']);}return await _0x94cb8['json']();},async 'interruptTask'(_0x442fd5){if(!_0x442fd5)throw new Error('Task\x20ID\x20is\x20required');const _0x249195=await fetch(API_BASE+'/tasks/'+_0x442fd5+'/interrupt',{'method':'POST'});if(!_0x249195['ok']){const _0x56313a=await _0x249195['json']()['catch'](()=>({}));throw new Error(_0x56313a['error']||_0x56313a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x249195['statusText']);}return await _0x249195['json']();},async 'startTask'(_0x2b3d49){if(!_0x2b3d49)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc511=await fetch(API_BASE+'/tasks/'+_0x2b3d49+'/start',{'method':'POST'});if(!_0x5dc511['ok']){const _0x1edb7c=await _0x5dc511['json']()['catch'](()=>({}));throw new Error(_0x1edb7c['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5dc511['statusText']);}return await _0x5dc511['json']();},async 'deleteTask'(_0x487e5c){if(!_0x487e5c)throw new Error('Task\x20ID\x20is\x20required');const _0x370fa3=await fetch(API_BASE+'/tasks/'+_0x487e5c,{'method':'DELETE'});if(!_0x370fa3['ok']){const _0x3ea64d=await _0x370fa3['json']()['catch'](()=>({}));throw new Error(_0x3ea64d['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x370fa3['statusText']);}return await _0x370fa3['json']();},async 'refreshTasksFromDisk'(){const _0x24922f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x24922f['ok']){const _0x316317=await _0x24922f['json']()['catch'](()=>({}));throw new Error(_0x316317['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x24922f['statusText']);}return await _0x24922f['json']();},async 'approveTask'(_0x24b161,_0x47a71f={}){if(!_0x24b161)throw new Error('Task\x20ID\x20is\x20required');const _0x19d528={'commit_message':_0x47a71f['commit_message']||'','pull':_0x47a71f['pull']??![],'push':_0x47a71f['push']??![]};_0x47a71f['new_branch']&&(_0x19d528['new_branch']=_0x47a71f['new_branch']);const _0x1e1413=await fetch(API_BASE+'/tasks/'+_0x24b161+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d528)});if(!_0x1e1413['ok']){const _0x354d8e=await _0x1e1413['json']()['catch'](()=>({}));let _0x4ba1a4=_0x354d8e['error']||_0x354d8e['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1e1413['statusText'];if(_0x354d8e['results']&&Array['isArray'](_0x354d8e['results'])){const _0x49ff04=_0x354d8e['results']['filter'](_0x1ab344=>!_0x1ab344['success']&&_0x1ab344['error']);_0x49ff04['length']>0x0&&(_0x4ba1a4=_0x49ff04[0x0]['error']);}throw new Error(_0x4ba1a4);}return await _0x1e1413['json']();},async 'getPullRequestInfo'(_0x58e444){if(!_0x58e444)throw new Error('Task\x20ID\x20is\x20required');const _0x10b24d=await fetch(API_BASE+'/tasks/'+_0x58e444+'/pull-request-info');if(!_0x10b24d['ok']){const _0x27bf18=await _0x10b24d['json']()['catch'](()=>({}));throw new Error(_0x27bf18['error']||_0x27bf18['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x10b24d['statusText']);}return await _0x10b24d['json']();},async 'createPullRequests'(_0x2815c9,_0x3e5a54){if(!_0x2815c9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e5a54||!Array['isArray'](_0x3e5a54))throw new Error('repos\x20array\x20is\x20required');const _0x58c0f2=await fetch(API_BASE+'/tasks/'+_0x2815c9+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3e5a54})});if(!_0x58c0f2['ok']){const _0x3fea8c=await _0x58c0f2['json']()['catch'](()=>({}));let _0x4c933e=_0x3fea8c['error']||_0x3fea8c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c0f2['statusText'];if(_0x3fea8c['results']&&Array['isArray'](_0x3fea8c['results'])){const _0x17fb02=_0x3fea8c['results']['filter'](_0x5d58f3=>!_0x5d58f3['success']&&_0x5d58f3['error']);_0x17fb02['length']>0x0&&(_0x4c933e=_0x17fb02[0x0]['error']);}throw new Error(_0x4c933e);}return await _0x58c0f2['json']();},async 'syncRepos'(_0xf094d){if(!_0xf094d)throw new Error('Task\x20ID\x20is\x20required');const _0x3515d5=await fetch(API_BASE+'/tasks/'+_0xf094d+'/sync-repos',{'method':'POST'});if(!_0x3515d5['ok']){const _0x3e7884=await _0x3515d5['json']()['catch'](()=>({}));throw new Error(_0x3e7884['error']||_0x3e7884['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3515d5['statusText']);}return await _0x3515d5['json']();},async 'getIbmiSyncInfo'(_0x341e0f){if(!_0x341e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x389324=await fetch(API_BASE+'/tasks/'+_0x341e0f+'/ibmi-sync-info');if(!_0x389324['ok']){const _0x4addca=await _0x389324['json']()['catch'](()=>({}));throw new Error(_0x4addca['error']||_0x4addca['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x389324['json']();},async 'getSyncFiles'(_0x1d1d69){if(!_0x1d1d69)throw new Error('Task\x20ID\x20is\x20required');const _0x6ee51a=await fetch(API_BASE+'/tasks/'+_0x1d1d69+'/sync-to-ibmi/files');if(!_0x6ee51a['ok']){const _0x360d36=await _0x6ee51a['json']()['catch'](()=>({}));throw new Error(_0x360d36['error']||_0x360d36['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x6ee51a['json']();},async 'syncToIbmi'(_0x8440d7,_0x19a302,_0x4fd5b2=null,_0x2bd054=null,_0x26f393=null){if(!_0x8440d7)throw new Error('Task\x20ID\x20is\x20required');const _0x5e561c={'library':_0x19a302};if(_0x4fd5b2)_0x5e561c['user']=_0x4fd5b2;if(_0x2bd054)_0x5e561c['password']=_0x2bd054;if(_0x26f393)_0x5e561c['files']=_0x26f393;const _0x569095=await fetch(API_BASE+'/tasks/'+_0x8440d7+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e561c)});if(!_0x569095['ok']){const _0x5ac8eb=await _0x569095['json']()['catch'](()=>({}));throw new Error(_0x5ac8eb['error']||_0x5ac8eb['message']||'Sync\x20failed');}return await _0x569095['json']();},async 'getIbmiSyncLog'(_0x9eff87){if(!_0x9eff87)throw new Error('Task\x20ID\x20is\x20required');const _0x20daf6=await fetch(API_BASE+'/tasks/'+_0x9eff87+'/ibmi-sync-log');if(!_0x20daf6['ok']){const _0x26e11b=await _0x20daf6['json']()['catch'](()=>({}));throw new Error(_0x26e11b['error']||_0x26e11b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20daf6['json']();},async 'pullChanges'(_0x48596c){if(!_0x48596c)throw new Error('Task\x20ID\x20is\x20required');const _0x953177=await fetch(API_BASE+'/tasks/'+_0x48596c+'/pull-changes',{'method':'POST'});if(!_0x953177['ok']){const _0x30d760=await _0x953177['json']()['catch'](()=>({}));throw new Error(_0x30d760['error']||_0x30d760['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x953177['statusText']);}return await _0x953177['json']();},async 'readFile'(_0xe71118,_0x791054){if(!_0xe71118)throw new Error('Task\x20ID\x20is\x20required');if(!_0x791054)throw new Error('File\x20path\x20is\x20required');const _0x2f6906=await fetch(API_BASE+'/tasks/'+_0xe71118+'/files?path='+encodeURIComponent(_0x791054));if(!_0x2f6906['ok']){const _0x2316e0=await _0x2f6906['json']()['catch'](()=>({}));throw new Error(_0x2316e0['error']||_0x2316e0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2f6906['statusText']);}return await _0x2f6906['json']();},'getTaskFileDownloadUrl'(_0x2d0f82,_0xee3c5){if(!_0x2d0f82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xee3c5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2d0f82+'/files/download?path='+encodeURIComponent(_0xee3c5);},async 'writeFile'(_0x496ed1,_0x5d6866,_0x2eb14c){if(!_0x496ed1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d6866)throw new Error('File\x20path\x20is\x20required');if(_0x2eb14c===undefined)throw new Error('Content\x20is\x20required');const _0x728ba=await fetch(API_BASE+'/tasks/'+_0x496ed1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d6866,'content':_0x2eb14c})});if(!_0x728ba['ok']){const _0x5f51e4=await _0x728ba['json']()['catch'](()=>({}));throw new Error(_0x5f51e4['error']||_0x5f51e4['message']||'Failed\x20to\x20write\x20file:\x20'+_0x728ba['statusText']);}return await _0x728ba['json']();},async 'uploadTaskFiles'(_0x4051cc,_0x35333d,_0x3a82c5){if(!_0x4051cc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35333d)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a82c5||_0x3a82c5['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0xe489f4=new FormData();_0xe489f4['append']('targetDir',_0x35333d);for(const _0x999a0 of _0x3a82c5){_0xe489f4['append']('files',_0x999a0,_0x999a0['name']);}const _0x2fbfa6=await fetch(API_BASE+'/tasks/'+_0x4051cc+'/files/upload',{'method':'POST','body':_0xe489f4});if(!_0x2fbfa6['ok']){const _0x255b88=await _0x2fbfa6['json']()['catch'](()=>({}));throw new Error(_0x255b88['error']||_0x255b88['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2fbfa6['statusText']);}return await _0x2fbfa6['json']();},async 'createDirectory'(_0x2f2e1e,_0x3095a4){if(!_0x2f2e1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3095a4)throw new Error('Directory\x20path\x20is\x20required');const _0x2121f4=await fetch(API_BASE+'/tasks/'+_0x2f2e1e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3095a4})});if(!_0x2121f4['ok']){const _0x16a913=await _0x2121f4['json']()['catch'](()=>({}));throw new Error(_0x16a913['error']||_0x16a913['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x2121f4['statusText']);}return await _0x2121f4['json']();},async 'renamePath'(_0x22de85,_0x45b0a8,_0x4fa939){if(!_0x22de85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45b0a8)throw new Error('Source\x20path\x20is\x20required');if(!_0x4fa939)throw new Error('Destination\x20path\x20is\x20required');const _0x3d394d=await fetch(API_BASE+'/tasks/'+_0x22de85+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45b0a8,'newPath':_0x4fa939})});if(!_0x3d394d['ok']){const _0x1029ce=await _0x3d394d['json']()['catch'](()=>({}));throw new Error(_0x1029ce['error']||_0x1029ce['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x3d394d['statusText']);}return await _0x3d394d['json']();},async 'deleteFile'(_0x1e291a,_0x4787d8){if(!_0x1e291a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4787d8)throw new Error('File\x20path\x20is\x20required');const _0x4f20d1=await fetch(API_BASE+'/tasks/'+_0x1e291a+'/files?path='+encodeURIComponent(_0x4787d8),{'method':'DELETE'});if(!_0x4f20d1['ok']){const _0x19e06d=await _0x4f20d1['json']()['catch'](()=>({}));throw new Error(_0x19e06d['error']||_0x19e06d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f20d1['statusText']);}return await _0x4f20d1['json']();},async 'deleteDirectory'(_0x326155,_0x20b120){if(!_0x326155)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20b120)throw new Error('Directory\x20path\x20is\x20required');const _0x334751=await fetch(API_BASE+'/tasks/'+_0x326155+'/files/directory?path='+encodeURIComponent(_0x20b120),{'method':'DELETE'});if(!_0x334751['ok']){const _0x115c48=await _0x334751['json']()['catch'](()=>({}));throw new Error(_0x115c48['error']||_0x115c48['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x334751['statusText']);}return await _0x334751['json']();},async 'discardFile'(_0x3361de,_0x4c9221,_0x196ae6){if(!_0x3361de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4c9221)throw new Error('File\x20path\x20is\x20required');if(!_0x196ae6)throw new Error('Repository\x20path\x20is\x20required');const _0x44f686=await fetch(API_BASE+'/tasks/'+_0x3361de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4c9221,'repoPath':_0x196ae6})});if(!_0x44f686['ok']){const _0x347196=await _0x44f686['json']()['catch'](()=>({}));throw new Error(_0x347196['error']||_0x347196['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x44f686['statusText']);}return await _0x44f686['json']();},async 'followUpTask'(_0x12de5a,_0x3f5458={}){if(!_0x12de5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f5458['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1befb9,_0x29c66f={};if(_0x3f5458['files']&&_0x3f5458['files']['length']>0x0){const _0x112214=new FormData();_0x112214['append']('instructions',_0x3f5458['instructions']);for(const _0xc81535 of _0x3f5458['files']){_0x112214['append']('attachments',_0xc81535);}_0x1befb9=_0x112214;}else _0x29c66f['Content-Type']='application/json',_0x1befb9=JSON['stringify']({'instructions':_0x3f5458['instructions']});const _0x1b6f4a=await fetch(API_BASE+'/tasks/'+_0x12de5a+'/follow-up',{'method':'POST','headers':_0x29c66f,'body':_0x1befb9});if(!_0x1b6f4a['ok']){const _0x36dd98=await _0x1b6f4a['json']()['catch'](()=>({}));throw new Error(_0x36dd98['error']||_0x36dd98['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1b6f4a['statusText']);}return await _0x1b6f4a['json']();},async 'getTaskRewindPoints'(_0x47f57a){if(!_0x47f57a)throw new Error('Task\x20ID\x20is\x20required');const _0x2746eb=await fetch(API_BASE+'/tasks/'+_0x47f57a+'/rewind-points');if(!_0x2746eb['ok']){const _0x1374fc=await _0x2746eb['json']()['catch'](()=>({}));throw new Error(_0x1374fc['error']||_0x1374fc['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2746eb['statusText']);}return await _0x2746eb['json']();},async 'rewindTask'(_0x376c69,_0x339888={}){if(!_0x376c69)throw new Error('Task\x20ID\x20is\x20required');const _0x6257c6=Number['isInteger'](_0x339888['targetFollowUpCount'])?_0x339888['targetFollowUpCount']:0x0,_0x486e3f={'targetFollowUpCount':_0x6257c6};typeof _0x339888['instructions']==='string'&&_0x339888['instructions']['trim']()&&(_0x486e3f['instructions']=_0x339888['instructions']['trim']());typeof _0x339888['rewindFiles']==='boolean'&&(_0x486e3f['rewindFiles']=_0x339888['rewindFiles']);const _0x3d71ba=await fetch(API_BASE+'/tasks/'+_0x376c69+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486e3f)});if(!_0x3d71ba['ok']){const _0x2dc3f7=await _0x3d71ba['json']()['catch'](()=>({}));throw new Error(_0x2dc3f7['error']||_0x2dc3f7['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d71ba['statusText']);}return await _0x3d71ba['json']();},async 'login'(_0x4d2314,_0x108efd){const _0x5ccc2e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4d2314,'password':_0x108efd})});if(!_0x5ccc2e['ok']){const _0x5d231c=await _0x5ccc2e['json']();throw new Error(_0x5d231c['message']||'Login\x20failed');}return await _0x5ccc2e['json']();},async 'logout'(){const _0x529c56=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x529c56['ok']){const _0x458bf3=await _0x529c56['json']();throw new Error(_0x458bf3['message']||'Logout\x20failed');}return await _0x529c56['json']();},async 'getCurrentUser'(){const _0x40a1cb=await fetch(API_BASE+'/auth/me');if(!_0x40a1cb['ok'])throw new Error('Not\x20authenticated');const _0x426a76=await _0x40a1cb['json']();return _0x426a76['user'];},async 'getRolesInfo'(){const _0x40fd7c=await fetch(API_BASE+'/users/roles');if(!_0x40fd7c['ok']){const _0x490a59=await _0x40fd7c['json']();throw new Error(_0x490a59['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x40fd7c['json']();},async 'getUsers'(){const _0x11f86a=await fetch(API_BASE+'/users');if(!_0x11f86a['ok']){const _0x1ef210=await _0x11f86a['json']();throw new Error(_0x1ef210['message']||'Failed\x20to\x20get\x20users');}return await _0x11f86a['json']();},async 'getUser'(_0x1e0075){const _0x199c03=await fetch(API_BASE+'/users/'+_0x1e0075);if(!_0x199c03['ok']){const _0x15bd2b=await _0x199c03['json']();throw new Error(_0x15bd2b['message']||'Failed\x20to\x20get\x20user');}return await _0x199c03['json']();},async 'createUser'(_0x5da985){const _0x4d7315=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da985)});if(!_0x4d7315['ok']){const _0x2b4b1e=await _0x4d7315['json']();throw new Error(_0x2b4b1e['message']||'Failed\x20to\x20create\x20user');}return await _0x4d7315['json']();},async 'updateUser'(_0x24b74d,_0x37ebb5){const _0x6c6ced=await fetch(API_BASE+'/users/'+_0x24b74d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37ebb5)});if(!_0x6c6ced['ok']){const _0x280292=await _0x6c6ced['json']();throw new Error(_0x280292['message']||'Failed\x20to\x20update\x20user');}return await _0x6c6ced['json']();},async 'deleteUser'(_0x11a713){const _0x140950=await fetch(API_BASE+'/users/'+_0x11a713,{'method':'DELETE'});if(!_0x140950['ok']){const _0x441443=await _0x140950['json']();throw new Error(_0x441443['message']||'Failed\x20to\x20delete\x20user');}return await _0x140950['json']();},async 'stopAllContainers'(){const _0x43b6d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x302dbc=await _0x43b6d1['json']()['catch'](()=>({}));if(!_0x43b6d1['ok'])throw new Error(_0x302dbc['message']||_0x302dbc['error']||'Failed\x20to\x20stop\x20containers');return _0x302dbc;},async 'removeStoppedContainers'(){const _0x5cf77b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c3693=await _0x5cf77b['json']()['catch'](()=>({}));if(!_0x5cf77b['ok'])throw new Error(_0x5c3693['message']||_0x5c3693['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c3693;},async 'pruneDockerResources'(){const _0x3eb461=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x33b2af=await _0x3eb461['json']()['catch'](()=>({}));if(!_0x3eb461['ok'])throw new Error(_0x33b2af['message']||_0x33b2af['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x33b2af;},async 'getUpdateSettings'(){const _0x19df42=await fetch(API_BASE+'/health/update-settings'),_0x219899=await _0x19df42['json']()['catch'](()=>({}));if(!_0x19df42['ok'])throw new Error(_0x219899['message']||_0x219899['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x219899;},async 'applyServerUpdate'(_0x2ba00b){const _0x110c0b=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2ba00b})}),_0x169130=await _0x110c0b['json']()['catch'](()=>({}));if(!_0x110c0b['ok']){const _0x4a614c=new Error(_0x169130['message']||_0x169130['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x169130['output']!==undefined)_0x4a614c['output']=_0x169130['output'];if(_0x169130['error']!==undefined)_0x4a614c['commandError']=_0x169130['error'];throw _0x4a614c;}return _0x169130;},async 'restartServer'(){const _0x439e6d=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2a0587=await _0x439e6d['json']()['catch'](()=>({}));if(!_0x439e6d['ok'])throw new Error(_0x2a0587['message']||_0x2a0587['error']||'Failed\x20to\x20restart\x20server');return _0x2a0587;},async 'createPasswordToken'(_0x2ab5f6,_0x4f986e='setup',_0x5cfe11=![]){const _0x1823f4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab5f6,'type':_0x4f986e,'sendEmail':_0x5cfe11})});if(!_0x1823f4['ok']){const _0x2311d9=await _0x1823f4['json']();throw new Error(_0x2311d9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1823f4['json']();},async 'getEmailConfig'(){const _0x4030e5=await fetch(API_BASE+'/password/email-config');if(!_0x4030e5['ok']){const _0x402f96=await _0x4030e5['json']();throw new Error(_0x402f96['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x4030e5['json']();},async 'updateTaskName'(_0x136cf9,_0x395772){const _0x4ed0c9=await fetch(API_BASE+'/tasks/'+_0x136cf9,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x395772})});if(!_0x4ed0c9['ok']){const _0x3a7bda=await _0x4ed0c9['json']();throw new Error(_0x3a7bda['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4ed0c9['json']();},async 'pinTask'(_0x1097a6,_0x3b5bc6,_0x2c4c19=null){if(!_0x1097a6)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7b98={'pinned':_0x3b5bc6};_0x2c4c19&&_0x2c4c19['length']>0x0&&(_0x3f7b98['additionalTaskIds']=_0x2c4c19);const _0x7768b4=await fetch(API_BASE+'/tasks/'+_0x1097a6+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f7b98)});if(!_0x7768b4['ok']){const _0x3988e5=await _0x7768b4['json']();throw new Error(_0x3988e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x7768b4['json']();},async 'setTaskWinner'(_0x311f7b,_0x964870,_0x340cc6=[]){if(!_0x311f7b)throw new Error('Task\x20ID\x20is\x20required');const _0x2f7bde=await fetch(API_BASE+'/tasks/'+_0x311f7b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x964870,'siblings':_0x340cc6})});if(!_0x2f7bde['ok']){const _0x5344d2=await _0x2f7bde['json']();throw new Error(_0x5344d2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2f7bde['json']();},async 'setTaskLoser'(_0x30aaac,_0xfc3182){if(!_0x30aaac)throw new Error('Task\x20ID\x20is\x20required');const _0x268b8d=await fetch(API_BASE+'/tasks/'+_0x30aaac+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xfc3182})});if(!_0x268b8d['ok']){const _0x3af909=await _0x268b8d['json']();throw new Error(_0x3af909['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x268b8d['json']();},async 'createTaskGroup'(_0x36234b){const _0x200909=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36234b)});if(!_0x200909['ok']){const _0x56caa3=await _0x200909['json']();throw new Error(_0x56caa3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x200909['json']();},async 'getTaskGroups'(_0x1f20fb={}){const _0x5aa66e=new URLSearchParams();if(_0x1f20fb['userId'])_0x5aa66e['set']('userId',String(_0x1f20fb['userId']));if(_0x1f20fb['status'])_0x5aa66e['set']('status',String(_0x1f20fb['status']));if(_0x1f20fb['limit'])_0x5aa66e['set']('limit',String(_0x1f20fb['limit']));const _0x1acfb7=API_BASE+'/tasks/groups'+(_0x5aa66e['toString']()?'?'+_0x5aa66e['toString']():''),_0x3bdb2e=await fetch(_0x1acfb7);if(!_0x3bdb2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3bdb2e['json']();},async 'getTaskGroup'(_0x351831){const _0x231d38=await fetch(API_BASE+'/tasks/groups/'+_0x351831);if(!_0x231d38['ok']){const _0x2a0efe=await _0x231d38['json']();throw new Error(_0x2a0efe['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x231d38['json']();},async 'updateTaskGroup'(_0x1c689d,_0x4c7fb2,_0xec00){const _0x29850d=await fetch(API_BASE+'/tasks/'+_0x1c689d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4c7fb2,'groupIndex':_0xec00})});if(!_0x29850d['ok']){const _0xa5c500=await _0x29850d['json']();throw new Error(_0xa5c500['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x29850d['json']();},async 'removeTaskFromGroup'(_0x3f8d18){return this['updateTaskGroup'](_0x3f8d18,null,null);},async 'deleteTaskGroup'(_0x8bc16f,_0x12c72d=![]){const _0x47329f=_0x12c72d?'?deleteTasks=true':'',_0x249f7d=await fetch(API_BASE+'/tasks/groups/'+_0x8bc16f+_0x47329f,{'method':'DELETE'});if(!_0x249f7d['ok']){const _0x4471f8=await _0x249f7d['json']();throw new Error(_0x4471f8['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xdfa827,_0x4de897){const _0x51f2b1=await fetch(API_BASE+'/tasks/groups/'+_0xdfa827+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4de897})});if(!_0x51f2b1['ok']){const _0x359156=await _0x51f2b1['json']();throw new Error(_0x359156['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x51f2b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4c0b3c){if(!_0x4c0b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x3a8287=await fetch(API_BASE+'/tasks/'+_0x4c0b3c+'/comments');if(!_0x3a8287['ok']){const _0x1c26d5=await _0x3a8287['json']()['catch'](()=>({}));throw new Error(_0x1c26d5['error']||'Failed\x20to\x20get\x20comments');}return await _0x3a8287['json']();},async 'addComment'(_0x445f18,_0x477e8a){if(!_0x445f18)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477e8a)throw new Error('Comment\x20content\x20is\x20required');const _0x1c7da1=await fetch(API_BASE+'/tasks/'+_0x445f18+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477e8a})});if(!_0x1c7da1['ok']){const _0x52a895=await _0x1c7da1['json']()['catch'](()=>({}));throw new Error(_0x52a895['error']||'Failed\x20to\x20add\x20comment');}return await _0x1c7da1['json']();},async 'updateComment'(_0x45161c,_0x42c89d,_0x1d7b23){if(!_0x45161c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x42c89d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d7b23)throw new Error('Comment\x20content\x20is\x20required');const _0x627f43=await fetch(API_BASE+'/tasks/'+_0x45161c+'/comments/'+_0x42c89d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d7b23})});if(!_0x627f43['ok']){const _0x3485f8=await _0x627f43['json']()['catch'](()=>({}));throw new Error(_0x3485f8['error']||'Failed\x20to\x20update\x20comment');}return await _0x627f43['json']();},async 'deleteComment'(_0x21e767,_0x1e821b){if(!_0x21e767)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e821b)throw new Error('Comment\x20ID\x20is\x20required');const _0x5c42a7=await fetch(API_BASE+'/tasks/'+_0x21e767+'/comments/'+_0x1e821b,{'method':'DELETE'});if(!_0x5c42a7['ok']){const _0x416663=await _0x5c42a7['json']()['catch'](()=>({}));throw new Error(_0x416663['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5c42a7['json']();},async 'createObjective'(_0x48ab24){const _0x39196d={'objective':!![],'name':_0x48ab24['name']||'','environment':_0x48ab24['environment']||null,'agents':_0x48ab24['agents']||[],'branches':_0x48ab24['branches']||{},'isPinned':_0x48ab24['isPinned']||![],'parentObjectiveId':_0x48ab24['parentObjectiveId']||null,'env_vars':_0x48ab24['envVars']||{},'parameters':{'instructions':_0x48ab24['instructions']||''},'files':_0x48ab24['files']||[],'jira':_0x48ab24['jira']||null};return this['createTask'](_0x39196d);},async 'updateObjective'(_0xf19063,_0x1a5ae8,_0x1d4b24=[],_0x29342e=[]){let _0x24e186,_0x454555={};const _0x432e8b={..._0x1a5ae8};_0x29342e&&_0x29342e['length']>0x0&&(_0x432e8b['removeAttachments']=_0x29342e);if(_0x1d4b24&&_0x1d4b24['length']>0x0){const _0x3ceae8=new FormData();for(const [_0x4fe500,_0x3b5c3c]of Object['entries'](_0x432e8b)){if(_0x3b5c3c==null)continue;typeof _0x3b5c3c==='object'?_0x3ceae8['append'](_0x4fe500,JSON['stringify'](_0x3b5c3c)):_0x3ceae8['append'](_0x4fe500,String(_0x3b5c3c));}for(const _0x3da565 of _0x1d4b24){_0x3ceae8['append']('attachments',_0x3da565);}_0x24e186=_0x3ceae8;}else _0x454555['Content-Type']='application/json',_0x24e186=JSON['stringify'](_0x432e8b);const _0x50ca71=await fetch(API_BASE+'/tasks/'+_0xf19063,{'method':'PATCH','headers':_0x454555,'body':_0x24e186});if(!_0x50ca71['ok']){const _0x3a7292=await _0x50ca71['json']();throw new Error(_0x3a7292['error']||'Failed\x20to\x20update\x20objective');}return await _0x50ca71['json']();},async 'deleteObjective'(_0x4cc428){return this['deleteTask'](_0x4cc428);},async 'launchObjective'(_0x58bd96,_0x25a5d7={}){const _0x65db77=await fetch(API_BASE+'/tasks/'+_0x58bd96+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a5d7)});if(!_0x65db77['ok']){const _0x4578e7=await _0x65db77['json']();throw new Error(_0x4578e7['error']||'Failed\x20to\x20launch\x20objective');}return await _0x65db77['json']();},async 'getObjectiveAttachments'(_0x1600a1){return this['getTaskAttachments'](_0x1600a1);},async 'createJudgeTask'({environment:_0x236238,judgeAgent:_0x58395c,groupId:_0x56f280,taskIds:_0x1537e3,judgeCustomInstructions:_0x53991c,isPinned:_0x1f7b8c}){const _0x592753=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x236238,'judgeAgent':_0x58395c,'groupId':_0x56f280,'taskIds':_0x1537e3,'judgeCustomInstructions':_0x53991c,'isPinned':_0x1f7b8c})});if(!_0x592753['ok']){const _0x5ab901=await _0x592753['json']();throw new Error(_0x5ab901['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x592753['json']();},async 'getJudgeTasks'(_0x29fa06){const _0x359bbf=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x29fa06));if(!_0x359bbf['ok']){const _0x2a8f9d=await _0x359bbf['json']();throw new Error(_0x2a8f9d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x359bbf['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ae539,_0x4e53e4,_0x74e5f=''){const _0x1924ae=await fetch(API_BASE+'/tasks/'+_0x4ae539+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4e53e4,'customPreamble':_0x74e5f})});if(!_0x1924ae['ok']){const _0x49f9c7=await _0x1924ae['json']();throw new Error(_0x49f9c7['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1924ae['json']();},async 'getJiraConfig'(){const _0x5f4794=await fetch(API_BASE+'/jira/config');if(!_0x5f4794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5f4794['json']();},async 'getJiraIssue'(_0x3e0a74){const _0x222b6b=await fetch(API_BASE+'/jira/issues/'+_0x3e0a74);if(!_0x222b6b['ok']){const _0x4499ac=await _0x222b6b['json']()['catch'](()=>({}));throw new Error(_0x4499ac['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x222b6b['statusText']);}return await _0x222b6b['json']();},async 'searchJiraIssues'(_0x5738d9,_0x360243=0x14){const _0x7ed25d=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5738d9,'maxResults':_0x360243})});if(!_0x7ed25d['ok']){const _0x5d7b15=await _0x7ed25d['json']()['catch'](()=>({}));throw new Error(_0x5d7b15['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x7ed25d['statusText']);}return await _0x7ed25d['json']();},async 'postJiraComment'(_0x3d72ed,_0x3fb28a){const _0x1ced74=await fetch(API_BASE+'/jira/issues/'+_0x3d72ed+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fb28a})});if(!_0x1ced74['ok']){const _0x220e1e=await _0x1ced74['json']()['catch'](()=>({}));throw new Error(_0x220e1e['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1ced74['statusText']);}return await _0x1ced74['json']();},async 'getJiraComments'(_0x151940){const _0x44d6fc=await fetch(API_BASE+'/jira/issues/'+_0x151940+'/comments');if(!_0x44d6fc['ok']){const _0x1795a0=await _0x44d6fc['json']()['catch'](()=>({}));throw new Error(_0x1795a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x44d6fc['statusText']);}return await _0x44d6fc['json']();},async 'promptParameter'({environment:_0x8509c6,command:_0x17ea5c,parser:parser='json'}){const _0x475c28=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x8509c6,'command':_0x17ea5c,'parser':parser})});if(!_0x475c28['ok']){const _0x5e6826=await _0x475c28['json']()['catch'](()=>({}));throw new Error(_0x5e6826['message']||_0x5e6826['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x475c28['statusText']);}return await _0x475c28['json']();},async 'promptParameterStream'(_0x4228df,_0x5c9d04){const _0x31868b=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4228df)});if(!_0x31868b['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x31868b['statusText']);const _0x7d6fd5=_0x31868b['body']['getReader'](),_0x57a86a=new TextDecoder();let _0x3e72df='';return new Promise((_0x394a8e,_0x27032b)=>{const _0x17ffc3=async()=>{try{const {done:_0x392ab4,value:_0x592e02}=await _0x7d6fd5['read']();if(_0x392ab4)return;_0x3e72df+=_0x57a86a['decode'](_0x592e02,{'stream':!![]});const _0x13cea3=_0x3e72df['split']('\x0a\x0a');_0x3e72df=_0x13cea3['pop']()||'';for(const _0x4b5dde of _0x13cea3){if(!_0x4b5dde['trim']())continue;const _0x31e5d5=_0x4b5dde['split']('\x0a');let _0xa22f95='message',_0x478855='';for(const _0x3e90b5 of _0x31e5d5){if(_0x3e90b5['startsWith']('event:'))_0xa22f95=_0x3e90b5['substring'](0x6)['trim']();else _0x3e90b5['startsWith']('data:')&&(_0x478855=_0x3e90b5['substring'](0x5)['trim']());}if(!_0x478855)continue;try{const _0x3e6190=JSON['parse'](_0x478855);if(_0xa22f95==='progress'&&_0x5c9d04)_0x5c9d04(_0x3e6190['stage'],_0x3e6190['message']);else{if(_0xa22f95==='result'){_0x394a8e(_0x3e6190);return;}else{if(_0xa22f95==='error'){let _0x1ae605=_0x3e6190['message']||_0x3e6190['error']||'Prompt\x20command\x20failed';_0x3e6190['rawOutput']&&(_0x1ae605+='\x0a\x0aRaw\x20output:\x0a'+_0x3e6190['rawOutput']);_0x27032b(new Error(_0x1ae605));return;}}}}catch(_0x92375e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x92375e),console['error']('Event\x20type:',_0xa22f95),console['error']('Event\x20data:',_0x478855),console['error']('First\x20200\x20chars:',_0x478855['substring'](0x0,0xc8)),_0x27032b(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x92375e['message']+'\x0a\x0aData:\x20'+_0x478855['substring'](0x0,0x1f4)));return;}}_0x17ffc3();}catch(_0x4ffbc8){_0x27032b(_0x4ffbc8);}};_0x17ffc3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x44bfa7){const _0x3736d6=await fetch(''+API_BASE+_0x44bfa7);if(!_0x3736d6['ok']){const _0x47b177=await _0x3736d6['json']()['catch'](()=>({'error':_0x3736d6['statusText']})),_0x44756e=new Error(_0x47b177['error']||_0x47b177['message']||_0x3736d6['statusText']);if(_0x47b177['detail']!==undefined)_0x44756e['detail']=_0x47b177['detail'];throw _0x44756e;}return await _0x3736d6['json']();},async 'post'(_0x1b01cd,_0x54543c){const _0xae01f2=await fetch(''+API_BASE+_0x1b01cd,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54543c)});if(!_0xae01f2['ok']){const _0x2df876=await _0xae01f2['json']()['catch'](()=>({'error':_0xae01f2['statusText']})),_0x8fae97=new Error(_0x2df876['error']||_0x2df876['message']||_0xae01f2['statusText']);if(_0x2df876['detail']!==undefined)_0x8fae97['detail']=_0x2df876['detail'];throw _0x8fae97;}return await _0xae01f2['json']();},async 'put'(_0xcb210a,_0x444029){const _0x552765=await fetch(''+API_BASE+_0xcb210a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x444029)});if(!_0x552765['ok']){const _0x39e666=await _0x552765['json']()['catch'](()=>({'error':_0x552765['statusText']})),_0x251fdc=new Error(_0x39e666['error']||_0x39e666['message']||_0x552765['statusText']);if(_0x39e666['detail']!==undefined)_0x251fdc['detail']=_0x39e666['detail'];throw _0x251fdc;}return await _0x552765['json']();},async 'delete'(_0x247240,_0x4842fe){const _0x39c273={'method':'DELETE'};_0x4842fe&&(_0x39c273['headers']={'Content-Type':'application/json'},_0x39c273['body']=JSON['stringify'](_0x4842fe));const _0x6a0543=await fetch(''+API_BASE+_0x247240,_0x39c273);if(!_0x6a0543['ok']){const _0x1b9951=await _0x6a0543['json']()['catch'](()=>({'error':_0x6a0543['statusText']})),_0x320aba=new Error(_0x1b9951['error']||_0x1b9951['message']||_0x6a0543['statusText']);if(_0x1b9951['detail']!==undefined)_0x320aba['detail']=_0x1b9951['detail'];throw _0x320aba;}return await _0x6a0543['json']();},async 'getSkills'(){const _0x40eaf4=await fetch(API_BASE+'/skills');if(!_0x40eaf4['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x40eaf4['statusText']);return await _0x40eaf4['json']();},async 'getSkill'(_0x478fb4){const _0x1c3f65=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x478fb4));if(!_0x1c3f65['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c3f65['statusText']);return await _0x1c3f65['json']();},async 'createSkill'(_0x17727f){const _0xf36826=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17727f)});if(!_0xf36826['ok']){const _0xeb44d1=await _0xf36826['json']()['catch'](()=>({'error':_0xf36826['statusText']})),_0x1f918b=new Error(_0xeb44d1['error']||_0xeb44d1['message']||_0xf36826['statusText']);if(_0xeb44d1['detail']!==undefined)_0x1f918b['detail']=_0xeb44d1['detail'];throw _0x1f918b;}return await _0xf36826['json']();},async 'updateSkill'(_0x17d44c,_0x13701d){const _0x37771c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17d44c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13701d)});if(!_0x37771c['ok']){const _0x2551ca=await _0x37771c['json']()['catch'](()=>({'error':_0x37771c['statusText']})),_0x23d3d=new Error(_0x2551ca['error']||_0x2551ca['message']||_0x37771c['statusText']);if(_0x2551ca['detail']!==undefined)_0x23d3d['detail']=_0x2551ca['detail'];throw _0x23d3d;}return await _0x37771c['json']();},async 'deleteSkill'(_0x5f20fb){const _0x49118b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f20fb),{'method':'DELETE'});if(!_0x49118b['ok']){const _0x1b2471=await _0x49118b['json']()['catch'](()=>({'error':_0x49118b['statusText']})),_0xa4aa33=new Error(_0x1b2471['error']||_0x1b2471['message']||_0x49118b['statusText']);if(_0x1b2471['detail']!==undefined)_0xa4aa33['detail']=_0x1b2471['detail'];throw _0xa4aa33;}return await _0x49118b['json']();},async 'getSkillFile'(_0x5b14c1,_0x57f767){const _0x2e81ac=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b14c1)+'/files/'+_0x57f767);if(!_0x2e81ac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2e81ac['statusText']);return await _0x2e81ac['json']();},async 'saveSkillFile'(_0x274bfd,_0x2d3b6a,_0x37372f){const _0x5edd5a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x274bfd)+'/files/'+_0x2d3b6a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37372f})});if(!_0x5edd5a['ok']){const _0x459e8b=await _0x5edd5a['json']()['catch'](()=>({'error':_0x5edd5a['statusText']})),_0x3a4547=new Error(_0x459e8b['error']||_0x459e8b['message']||_0x5edd5a['statusText']);if(_0x459e8b['detail']!==undefined)_0x3a4547['detail']=_0x459e8b['detail'];throw _0x3a4547;}return await _0x5edd5a['json']();},async 'deleteSkillFile'(_0x321a8d,_0x5df29d){const _0x6bb2ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x321a8d)+'/files/'+_0x5df29d,{'method':'DELETE'});if(!_0x6bb2ca['ok']){const _0x279ff0=await _0x6bb2ca['json']()['catch'](()=>({'error':_0x6bb2ca['statusText']})),_0x3d1705=new Error(_0x279ff0['error']||_0x279ff0['message']||_0x6bb2ca['statusText']);if(_0x279ff0['detail']!==undefined)_0x3d1705['detail']=_0x279ff0['detail'];throw _0x3d1705;}return await _0x6bb2ca['json']();},async 'pullSkills'(){const _0x5cd26a=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5cd26a['ok']){const _0x32c52a=await _0x5cd26a['json']()['catch'](()=>({'error':_0x5cd26a['statusText']})),_0x1a8e49=new Error(_0x32c52a['error']||_0x32c52a['message']||_0x5cd26a['statusText']);if(_0x32c52a['detail']!==undefined)_0x1a8e49['detail']=_0x32c52a['detail'];throw _0x1a8e49;}return await _0x5cd26a['json']();},async 'commitSkills'(_0x39b8d6,_0xd87e21={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xd87e21,_0x3ed0d7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39b8d6,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ed0d7['ok']){const _0x2c67c1=await _0x3ed0d7['json']()['catch'](()=>({'error':_0x3ed0d7['statusText']})),_0x28db48=new Error(_0x2c67c1['error']||_0x2c67c1['message']||_0x3ed0d7['statusText']);if(_0x2c67c1['detail']!==undefined)_0x28db48['detail']=_0x2c67c1['detail'];throw _0x28db48;}return await _0x3ed0d7['json']();},async 'discardSkillsChanges'(){const _0x573ca3=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x573ca3['ok']){const _0x5cc126=await _0x573ca3['json']()['catch'](()=>({'error':_0x573ca3['statusText']})),_0xabe7e9=new Error(_0x5cc126['error']||_0x5cc126['message']||_0x573ca3['statusText']);if(_0x5cc126['detail']!==undefined)_0xabe7e9['detail']=_0x5cc126['detail'];throw _0xabe7e9;}return await _0x573ca3['json']();},async 'getSkillCatalog'(){const _0x5c35f6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5c35f6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5c35f6['statusText']);return await _0x5c35f6['json']();},async 'getImportedSkillsRegistry'(){const _0x4a58c0=await fetch(API_BASE+'/external-skills/registry');if(!_0x4a58c0['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4a58c0['statusText']);return await _0x4a58c0['json']();},async 'importCatalogSkill'(_0x5813cf){const _0x49fd66=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5813cf})});if(!_0x49fd66['ok']){const _0x4f89d2=await _0x49fd66['json']()['catch'](()=>({'error':_0x49fd66['statusText']})),_0x59f2ef=new Error(_0x4f89d2['error']||_0x4f89d2['message']||_0x49fd66['statusText']);if(_0x4f89d2['detail']!==undefined)_0x59f2ef['detail']=_0x4f89d2['detail'];throw _0x59f2ef;}return await _0x49fd66['json']();},async 'importSkillFromGit'(_0x562261,_0x21fc0d,_0x3b5ca8='main',_0x56577c=null){const _0x1c514f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x562261,'skillPath':_0x21fc0d,'branch':_0x3b5ca8,'skillId':_0x56577c})});if(!_0x1c514f['ok']){const _0x7e1f06=await _0x1c514f['json']()['catch'](()=>({'error':_0x1c514f['statusText']})),_0x4a1daa=new Error(_0x7e1f06['error']||_0x7e1f06['message']||_0x1c514f['statusText']);if(_0x7e1f06['detail']!==undefined)_0x4a1daa['detail']=_0x7e1f06['detail'];throw _0x4a1daa;}return await _0x1c514f['json']();},async 'probeMarketplace'(_0x3c477c,_0x5d3d14='main'){const _0x14a4b5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3c477c,'branch':_0x5d3d14})});if(!_0x14a4b5['ok']){const _0x39a0a2=await _0x14a4b5['json']()['catch'](()=>({'error':_0x14a4b5['statusText']})),_0x451e3a=new Error(_0x39a0a2['error']||_0x39a0a2['message']||_0x14a4b5['statusText']);if(_0x39a0a2['detail']!==undefined)_0x451e3a['detail']=_0x39a0a2['detail'];throw _0x451e3a;}return await _0x14a4b5['json']();},async 'importMarketplaceBundle'(_0x2b404c,_0x578b46,_0x3dd329,_0x173984=null){const _0x57f76d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2b404c,'branch':_0x578b46,'bundleId':_0x3dd329,'selectedSkills':_0x173984})});if(!_0x57f76d['ok']){const _0x276f33=await _0x57f76d['json']()['catch'](()=>({'error':_0x57f76d['statusText']})),_0x13da96=new Error(_0x276f33['error']||_0x276f33['message']||_0x57f76d['statusText']);if(_0x276f33['detail']!==undefined)_0x13da96['detail']=_0x276f33['detail'];throw _0x13da96;}return await _0x57f76d['json']();},async 'importSkillFromFolder'(_0x3644c1,_0x5a9c4d=null){const _0x3927bd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3644c1,'skillId':_0x5a9c4d})});if(!_0x3927bd['ok']){const _0x23691a=await _0x3927bd['json']()['catch'](()=>({'error':_0x3927bd['statusText']})),_0x2d491e=new Error(_0x23691a['error']||_0x23691a['message']||_0x3927bd['statusText']);if(_0x23691a['detail']!==undefined)_0x2d491e['detail']=_0x23691a['detail'];throw _0x2d491e;}return await _0x3927bd['json']();},async 'importSkillFromNpm'(_0x7adaf2,_0x2b3054='latest',_0x3d65d4=null,_0x5d3bad=null){const _0x2786fe=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x7adaf2,'version':_0x2b3054,'skillId':_0x3d65d4,'registry':_0x5d3bad})});if(!_0x2786fe['ok']){const _0x3ee74c=await _0x2786fe['json']()['catch'](()=>({'error':_0x2786fe['statusText']})),_0x3a0dc3=new Error(_0x3ee74c['error']||_0x3ee74c['message']||_0x2786fe['statusText']);if(_0x3ee74c['detail']!==undefined)_0x3a0dc3['detail']=_0x3ee74c['detail'];throw _0x3a0dc3;}return await _0x2786fe['json']();},async 'checkSkillUpdates'(_0x260ab4){const _0x1e169e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x260ab4)+'/check-updates',{'method':'POST'});if(!_0x1e169e['ok']){const _0x30adfd=await _0x1e169e['json']()['catch'](()=>({'error':_0x1e169e['statusText']})),_0x158c51=new Error(_0x30adfd['error']||_0x30adfd['message']||_0x1e169e['statusText']);if(_0x30adfd['detail']!==undefined)_0x158c51['detail']=_0x30adfd['detail'];throw _0x158c51;}return await _0x1e169e['json']();},async 'updateExternalSkill'(_0x290f12){const _0x15adde=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x290f12)+'/update',{'method':'POST'});if(!_0x15adde['ok']){const _0x3f0f96=await _0x15adde['json']()['catch'](()=>({'error':_0x15adde['statusText']})),_0x350d0=new Error(_0x3f0f96['error']||_0x3f0f96['message']||_0x15adde['statusText']);if(_0x3f0f96['detail']!==undefined)_0x350d0['detail']=_0x3f0f96['detail'];throw _0x350d0;}return await _0x15adde['json']();},async 'updateSkillFlags'(_0x196d7c,_0x3c741f){const _0x34f322=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x196d7c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x3c741f})});if(!_0x34f322['ok']){const _0x46accf=await _0x34f322['json']()['catch'](()=>({'error':_0x34f322['statusText']})),_0x3791ab=new Error(_0x46accf['error']||_0x46accf['message']||_0x34f322['statusText']);if(_0x46accf['detail']!==undefined)_0x3791ab['detail']=_0x46accf['detail'];throw _0x3791ab;}return await _0x34f322['json']();},async 'removeFromImportedRegistry'(_0x3cc825){const _0x5bd941=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cc825)+'/registry',{'method':'DELETE'});if(!_0x5bd941['ok']){const _0x57907a=await _0x5bd941['json']()['catch'](()=>({'error':_0x5bd941['statusText']})),_0x23edde=new Error(_0x57907a['error']||_0x57907a['message']||_0x5bd941['statusText']);if(_0x57907a['detail']!==undefined)_0x23edde['detail']=_0x57907a['detail'];throw _0x23edde;}return await _0x5bd941['json']();},async 'getTeams'(){const _0x23f724=await fetch(API_BASE+'/teams');if(!_0x23f724['ok']){const _0x4dc15e=await _0x23f724['json']()['catch'](()=>({'message':_0x23f724['statusText']}));throw new Error(_0x4dc15e['message']||'Failed\x20to\x20get\x20teams');}return await _0x23f724['json']();},async 'getTeam'(_0x9a67a6){const _0x19e22f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x9a67a6));if(!_0x19e22f['ok']){const _0x2cadfb=await _0x19e22f['json']()['catch'](()=>({'message':_0x19e22f['statusText']}));throw new Error(_0x2cadfb['message']||'Failed\x20to\x20get\x20team');}return await _0x19e22f['json']();},async 'createTeam'(_0xef7fe9){const _0x5c26d2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xef7fe9)});if(!_0x5c26d2['ok']){const _0x145628=await _0x5c26d2['json']()['catch'](()=>({'message':_0x5c26d2['statusText']}));throw new Error(_0x145628['message']||'Failed\x20to\x20create\x20team');}return await _0x5c26d2['json']();},async 'updateTeam'(_0x2a2beb,_0x190400){const _0x4db1a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2a2beb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x190400)});if(!_0x4db1a2['ok']){const _0x4c46c7=await _0x4db1a2['json']()['catch'](()=>({'message':_0x4db1a2['statusText']}));throw new Error(_0x4c46c7['message']||'Failed\x20to\x20update\x20team');}return await _0x4db1a2['json']();},async 'deleteTeam'(_0x31bd68){const _0x19da0f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31bd68),{'method':'DELETE'});if(!_0x19da0f['ok']){const _0x35db8e=await _0x19da0f['json']()['catch'](()=>({'message':_0x19da0f['statusText']}));throw new Error(_0x35db8e['message']||'Failed\x20to\x20delete\x20team');}return await _0x19da0f['json']();},async 'addTeamMember'(_0x68d7d9,_0x4ad51c){const _0x5936a4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x68d7d9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ad51c})});if(!_0x5936a4['ok']){const _0x124659=await _0x5936a4['json']()['catch'](()=>({'message':_0x5936a4['statusText']}));throw new Error(_0x124659['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5936a4['json']();},async 'removeTeamMember'(_0x4cc020,_0x50a989){const _0xcf6c25=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cc020)+'/members/'+encodeURIComponent(_0x50a989),{'method':'DELETE'});if(!_0xcf6c25['ok']){const _0x4d1966=await _0xcf6c25['json']()['catch'](()=>({'message':_0xcf6c25['statusText']}));throw new Error(_0x4d1966['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xcf6c25['json']();},async 'getBindings'(_0x814fde={}){const _0x51adff=new URLSearchParams();if(_0x814fde['resource_type'])_0x51adff['set']('resource_type',_0x814fde['resource_type']);if(_0x814fde['resource_id'])_0x51adff['set']('resource_id',_0x814fde['resource_id']);if(_0x814fde['subject_type'])_0x51adff['set']('subject_type',_0x814fde['subject_type']);if(_0x814fde['subject_id'])_0x51adff['set']('subject_id',_0x814fde['subject_id']);const _0x50af96=_0x51adff['toString'](),_0xb98aa1=await fetch(API_BASE+'/bindings'+(_0x50af96?'?'+_0x50af96:''));if(!_0xb98aa1['ok']){const _0x32b073=await _0xb98aa1['json']()['catch'](()=>({'message':_0xb98aa1['statusText']}));throw new Error(_0x32b073['message']||'Failed\x20to\x20get\x20bindings');}return await _0xb98aa1['json']();},async 'createBinding'(_0x2f833d){const _0x16c6b7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f833d)});if(!_0x16c6b7['ok']){const _0x3279c0=await _0x16c6b7['json']()['catch'](()=>({'message':_0x16c6b7['statusText']}));throw new Error(_0x3279c0['message']||'Failed\x20to\x20create\x20binding');}return await _0x16c6b7['json']();},async 'updateBinding'(_0x4f212d,_0x5ab9d5){const _0x42f537=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4f212d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ab9d5)});if(!_0x42f537['ok']){const _0x539b94=await _0x42f537['json']()['catch'](()=>({'message':_0x42f537['statusText']}));throw new Error(_0x539b94['message']||'Failed\x20to\x20update\x20binding');}return await _0x42f537['json']();},async 'deleteBinding'(_0x128ce6){const _0xf1be6e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x128ce6),{'method':'DELETE'});if(!_0xf1be6e['ok']){const _0x1630e1=await _0xf1be6e['json']()['catch'](()=>({'message':_0xf1be6e['statusText']}));throw new Error(_0x1630e1['message']||'Failed\x20to\x20delete\x20binding');}return await _0xf1be6e['json']();},async 'getRoleDefinitions'(){const _0x539b5f=await fetch(API_BASE+'/roles');if(!_0x539b5f['ok']){const _0x170bb5=await _0x539b5f['json']()['catch'](()=>({'message':_0x539b5f['statusText']}));throw new Error(_0x170bb5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x539b5f['json']();},async 'getRoleDefinition'(_0x165787){const _0x4b62ca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x165787));if(!_0x4b62ca['ok']){const _0x3ccee1=await _0x4b62ca['json']()['catch'](()=>({'message':_0x4b62ca['statusText']}));throw new Error(_0x3ccee1['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b62ca['json']();},async 'createRoleDefinition'(_0x367654){const _0x15f5cb=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x367654)});if(!_0x15f5cb['ok']){const _0x5018c1=await _0x15f5cb['json']()['catch'](()=>({'message':_0x15f5cb['statusText']}));throw new Error(_0x5018c1['message']||_0x5018c1['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x15f5cb['json']();},async 'updateRoleDefinition'(_0x3bc267,_0x44775a){const _0xca4965=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3bc267),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44775a)});if(!_0xca4965['ok']){const _0x9fe032=await _0xca4965['json']()['catch'](()=>({'message':_0xca4965['statusText']}));throw new Error(_0x9fe032['message']||_0x9fe032['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xca4965['json']();},async 'deleteRoleDefinition'(_0x542fb9){const _0x23d669=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x542fb9),{'method':'DELETE'});if(!_0x23d669['ok']){const _0x37153b=await _0x23d669['json']()['catch'](()=>({'message':_0x23d669['statusText']}));throw new Error(_0x37153b['message']||_0x37153b['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x23d669['json']();},async 'getAvailablePermissions'(){const _0x264288=await fetch(API_BASE+'/roles/available-permissions');if(!_0x264288['ok']){const _0x328547=await _0x264288['json']()['catch'](()=>({'message':_0x264288['statusText']}));throw new Error(_0x328547['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x264288['json']();},async 'getGitProviderAllowedTeams'(_0xd60c38){const _0x1f70b0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xd60c38)+'/allowed-teams');if(!_0x1f70b0['ok']){const _0x174298=await _0x1f70b0['json']()['catch'](()=>({'message':_0x1f70b0['statusText']}));throw new Error(_0x174298['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1f70b0['json']();},async 'setGitProviderAllowedTeams'(_0x57f2a7,_0x3b4055){const _0x3ee051=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x57f2a7)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3b4055})});if(!_0x3ee051['ok']){const _0x4f90e2=await _0x3ee051['json']()['catch'](()=>({'message':_0x3ee051['statusText']}));throw new Error(_0x4f90e2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3ee051['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 _0x60455e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x24d9b0=>{_0x24d9b0['el']['style']['bottom']=_0x60455e+'px';const _0x4e734e=_0x24d9b0['el']['offsetHeight']||toastState['defaultHeight'];_0x60455e+=_0x4e734e+toastState['gap'];});});}function removeToastById(_0x3598b6){const _0x343079=toastState['toasts']['findIndex'](_0x43ef48=>_0x43ef48['id']===_0x3598b6);if(_0x343079===-0x1)return;const _0x1dd206=toastState['toasts'][_0x343079];if(_0x1dd206['timeoutId'])clearTimeout(_0x1dd206['timeoutId']);_0x1dd206['el']['classList']['remove']('show'),setTimeout(()=>_0x1dd206['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x343079,0x1),repositionAllToasts();}function registerToast(_0x23e3a2){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23e3a2),repositionAllToasts(),_0x23e3a2['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(_0x5c7da1){if(_0x5c7da1===null||_0x5c7da1===undefined)return'';return String(_0x5c7da1)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x591b5f,_0x44f3b2){if(_0x591b5f&&typeof _0x591b5f==='object'&&!Array['isArray'](_0x591b5f))return{'code':typeof _0x591b5f['text']==='string'?_0x591b5f['text']:'','language':typeof _0x591b5f['lang']==='string'?_0x591b5f['lang']:''};return{'code':typeof _0x591b5f==='string'?_0x591b5f:'','language':typeof _0x44f3b2==='string'?_0x44f3b2:''};}function buildMermaidBlock(_0x249c92){const _0x369737=String(_0x249c92||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x369737))+'\x22>'+escapeHtmlValue(_0x369737)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x33488b=new marked['Renderer'](),_0x3dcb32=_0x33488b['code']['bind'](_0x33488b);return _0x33488b['code']=function(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d){const {code:_0x905ce4,language:_0x4095a8}=getMarkdownCodeBlockPayload(_0x1ad7fd,_0x5c3c8e),_0x21743c=String(_0x4095a8||'')['trim']()['toLowerCase']();if(_0x21743c==='mermaid')return buildMermaidBlock(_0x905ce4);const _0x5aa106=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5aa106&&_0x21743c)try{const _0xc9fddf=_0x5aa106['getLanguage'](_0x21743c)?_0x21743c:'plaintext',_0x37ecb1=_0x5aa106['highlight'](_0x905ce4,{'language':_0xc9fddf})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x21743c)+'\x22>'+_0x37ecb1+'</code></pre>';}catch(_0x306f98){console['error']('Syntax\x20highlighting\x20error:',_0x306f98);}return _0x3dcb32(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d);},sharedMarkedRenderer=_0x33488b,_0x33488b;}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 _0x3efc43=window['mermaid'];if(!_0x3efc43||typeof _0x3efc43['initialize']!=='function')return _0x3efc43||null;return _0x3efc43['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3efc43;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x19bb72,_0x2ed899)=>{const _0x267f54=()=>_0x19bb72(configureMermaidInstance()),_0x5df3c7=()=>{mermaidLoadPromise=null,_0x2ed899(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x118b3f=document['getElementById'](MERMAID_SCRIPT_ID);!_0x118b3f&&(_0x118b3f=document['createElement']('script'),_0x118b3f['id']=MERMAID_SCRIPT_ID,_0x118b3f['src']=MERMAID_SCRIPT_SRC,_0x118b3f['async']=!![],document['head']['appendChild'](_0x118b3f));if(window['mermaid']){_0x267f54();return;}_0x118b3f['addEventListener']('load',_0x267f54,{'once':!![]}),_0x118b3f['addEventListener']('error',_0x5df3c7,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x135afd){const _0x119632=_0x135afd['getAttribute']('data-mermaid-source');if(!_0x119632)return null;let _0x250c00=_0x119632;try{_0x250c00=decodeURIComponent(_0x119632);}catch{}return _0x135afd['textContent']=_0x250c00,_0x135afd['removeAttribute']('data-processed'),_0x135afd['removeAttribute']('aria-roledescription'),_0x135afd['removeAttribute']('role'),_0x135afd['removeAttribute']('aria-label'),_0x250c00;}function collectMermaidNodes(_0x15ede8,_0x60259c){if(!(_0x15ede8 instanceof Element))return;_0x15ede8['matches']('.mermaid[data-mermaid-source]')&&_0x60259c['add'](_0x15ede8),_0x15ede8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a6895=>{_0x60259c['add'](_0x5a6895);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x97a52f=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x131cd9=>setTimeout(_0x131cd9,0x0);_0x97a52f(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x96ec71=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x96ec71);});});}function queueMermaidRender(_0x529f6c){const _0x4e28b9=new Set();_0x529f6c instanceof Document||_0x529f6c instanceof DocumentFragment?_0x529f6c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x51d48b=>_0x4e28b9['add'](_0x51d48b)):collectMermaidNodes(_0x529f6c,_0x4e28b9);if(_0x4e28b9['size']===0x0)return;_0x4e28b9['forEach'](_0xdb9593=>pendingMermaidNodes['add'](_0xdb9593)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x42e500=Array['from'](pendingMermaidNodes)['filter'](_0x4e4b15=>_0x4e4b15['isConnected']);pendingMermaidNodes['clear']();if(_0x42e500['length']===0x0)return;const _0x11de54=await loadMermaid();if(!_0x11de54)return;configureMermaidInstance();const _0xa11c94=getMermaidTheme();for(const _0x4691fe of _0x42e500){const _0xd8bc1b=_0x4691fe['getAttribute']('data-mermaid-source');if(!_0xd8bc1b)continue;const _0x527f33=_0x4691fe['getAttribute']('data-processed')==='true';if(_0x527f33&&_0x4691fe['dataset']['mermaidTheme']===_0xa11c94)continue;restoreMermaidSource(_0x4691fe);try{if(typeof _0x11de54['run']==='function')await _0x11de54['run']({'nodes':[_0x4691fe]});else typeof _0x11de54['init']==='function'&&_0x11de54['init'](undefined,[_0x4691fe]);_0x4691fe['dataset']['mermaidTheme']=_0xa11c94,delete _0x4691fe['dataset']['mermaidError'];}catch(_0x20af6d){console['error']('Mermaid\x20render\x20failed:',_0x20af6d),restoreMermaidSource(_0x4691fe),_0x4691fe['dataset']['mermaidError']='true',delete _0x4691fe['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1dc16b=>{_0x1dc16b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1dc16b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b533f=>{_0x5b533f['forEach'](_0x3ca313=>{_0x3ca313['addedNodes']['forEach'](_0x14f6bd=>{_0x14f6bd['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x14f6bd);});});}),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'(_0x112985){const _0x466913=new Date(_0x112985),_0x485c16=new Date(),_0x206e75=_0x485c16-_0x466913,_0x3c0b8c=Math['floor'](_0x206e75/0x3e8),_0x12b79c=Math['floor'](_0x3c0b8c/0x3c),_0xf0a61d=Math['floor'](_0x12b79c/0x3c),_0x5d7dc5=Math['floor'](_0xf0a61d/0x18);if(_0x3c0b8c<0x3c)return'now';if(_0x12b79c<0x3c)return _0x12b79c+'m\x20ago';if(_0xf0a61d<0x18)return _0xf0a61d+'h\x20ago';return _0x5d7dc5+'d\x20ago';},'getStatusIcon'(_0x7dcdc){switch(_0x7dcdc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x5a7f29){switch(_0x5a7f29){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'(_0x2a625f,_0x554b24=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2a2336={};_0x2a2336['text/plain']=new Blob([_0x2a625f],{'type':'text/plain'});_0x554b24&&(_0x2a2336['text/html']=new Blob([_0x554b24],{'type':'text/html'}));const _0xa586e5=new ClipboardItem(_0x2a2336);return await navigator['clipboard']['write']([_0xa586e5]),!![];}catch(_0x2baa93){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2baa93);}try{const _0x3e8da9=_0x3177e4=>{_0x3177e4['preventDefault'](),_0x3177e4['clipboardData']['setData']('text/plain',_0x2a625f),_0x554b24&&_0x3177e4['clipboardData']['setData']('text/html',_0x554b24);};document['addEventListener']('copy',_0x3e8da9);const _0x3eada7=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e8da9);if(_0x3eada7)return!![];}catch(_0x398cec){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398cec);}try{const _0x1c18bf=document['createElement']('textarea');_0x1c18bf['value']=_0x2a625f,_0x1c18bf['style']['position']='fixed',_0x1c18bf['style']['opacity']='0',_0x1c18bf['style']['pointerEvents']='none',document['body']['appendChild'](_0x1c18bf),_0x1c18bf['select']();const _0x2c8650=document['execCommand']('copy');return document['body']['removeChild'](_0x1c18bf),_0x2c8650;}catch(_0x4c325b){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c325b),![];}},'showToast'(_0x37b8b0,_0x16f275='info'){const _0x437d97=getNextToastId(),_0x5d46f7=document['createElement']('div');_0x5d46f7['className']='toast\x20toast-'+_0x16f275,_0x5d46f7['textContent']=_0x37b8b0,_0x5d46f7['dataset']['toastId']=_0x437d97,document['body']['appendChild'](_0x5d46f7);const _0x19f059=_0x16f275==='error'?0x2710:0xbb8,_0x30a536=setTimeout(()=>{removeToastById(_0x437d97);},_0x19f059),_0x2d9fbc={'id':_0x437d97,'el':_0x5d46f7,'timeoutId':_0x30a536};return registerToast(_0x2d9fbc),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d46f7['classList']['add']('show');});}),_0x437d97;},'showError'(_0x1e44a5){console['error'](_0x1e44a5);const _0x571233=typeof _0x1e44a5==='string'?_0x1e44a5:_0x1e44a5['message']||'An\x20error\x20occurred';this['showToast'](_0x571233,'error');},'showSuccess'(_0x15007b){this['showToast'](_0x15007b,'success');},'capitalize'(_0xf131c1){if(!_0xf131c1)return'';return _0xf131c1['charAt'](0x0)['toUpperCase']()+_0xf131c1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x37d115){return escapeHtmlValue(_0x37d115);},'ansiToHtml'(_0x5afa20){if(_0x5afa20===null||_0x5afa20===undefined)return'';let _0x567e5b=this['escapeHtml'](_0x5afa20);const _0x34c157={'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'},_0x3d60f4={'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 _0x277094=0x0;return _0x567e5b=_0x567e5b['replace'](/\x1b\[([0-9;]*)m/g,(_0x946b3b,_0x42578b)=>{if(!_0x42578b||_0x42578b==='0'){const _0x179bc6='</span>'['repeat'](_0x277094);return _0x277094=0x0,_0x179bc6;}const _0x4d08ee=_0x42578b['split'](';'),_0x43a9a0=[];for(const _0x30c912 of _0x4d08ee){if(_0x30c912==='1')_0x43a9a0['push']('font-weight:bold');else{if(_0x30c912==='2')_0x43a9a0['push']('opacity:0.7');else{if(_0x30c912==='3')_0x43a9a0['push']('font-style:italic');else{if(_0x30c912==='4')_0x43a9a0['push']('text-decoration:underline');else{if(_0x30c912==='9')_0x43a9a0['push']('text-decoration:line-through');else{if(_0x34c157[_0x30c912])_0x43a9a0['push']('color:'+_0x34c157[_0x30c912]);else{if(_0x3d60f4[_0x30c912])_0x43a9a0['push']('background-color:'+_0x3d60f4[_0x30c912]);}}}}}}}if(_0x43a9a0['length']>0x0)return _0x277094++,'<span\x20style=\x22'+_0x43a9a0['join'](';')+'\x22>';return'';}),_0x567e5b+='</span>'['repeat'](_0x277094),_0x567e5b=_0x567e5b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x345384,_0x3f6890)=>{if(!_0x3f6890||_0x3f6890==='0')return'';const _0x584ab3=_0x3f6890['split'](';'),_0x50b2b7=[];for(const _0x1dd7f4 of _0x584ab3){if(_0x1dd7f4==='1')_0x50b2b7['push']('font-weight:bold');else{if(_0x34c157[_0x1dd7f4])_0x50b2b7['push']('color:'+_0x34c157[_0x1dd7f4]);else{if(_0x3d60f4[_0x1dd7f4])_0x50b2b7['push']('background-color:'+_0x3d60f4[_0x1dd7f4]);}}}if(_0x50b2b7['length']>0x0)return'<span\x20style=\x22'+_0x50b2b7['join'](';')+'\x22>';return'';}),_0x567e5b;},'showModal'({title:_0x416e2f,content:_0x2f5ac5,buttons:buttons=[]}){const _0x8173ab='\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'](_0x416e2f)+'</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'+_0x2f5ac5+'\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']((_0x98896e,_0x52bfa0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x98896e['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x52bfa0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x98896e['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',_0x3c1c05=document['createElement']('div');_0x3c1c05['id']='utils-modal',_0x3c1c05['className']='modal',_0x3c1c05['innerHTML']=_0x8173ab,document['body']['appendChild'](_0x3c1c05);const _0x73ad6c=document['getElementById']('utils-modal-close');_0x73ad6c&&_0x73ad6c['addEventListener']('click',()=>this['hideModal']());const _0x23182e=_0x3c1c05['querySelectorAll']('[data-btn-index]');_0x23182e['forEach'](_0x5ab40f=>{const _0x26bb2a=parseInt(_0x5ab40f['dataset']['btnIndex']);buttons[_0x26bb2a]?.['onClick']&&_0x5ab40f['addEventListener']('click',buttons[_0x26bb2a]['onClick']);});const _0x1d7568=document['getElementById']('utils-modal-overlay');_0x1d7568&&_0x1d7568['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x57bd6e=document['getElementById']('utils-modal');_0x57bd6e&&_0x57bd6e['remove']();},'parseKeyValuePairs'(_0x4269b5){const _0x2ed03e={};if(!_0x4269b5)return _0x2ed03e;return _0x4269b5['split'](/\r?\n/)['map'](_0x6e0d94=>_0x6e0d94['trim']())['filter'](Boolean)['forEach'](_0x1138ff=>{const _0x5108ea=_0x1138ff['indexOf']('=');if(_0x5108ea>0x0){const _0x1dc5a7=_0x1138ff['slice'](0x0,_0x5108ea)['trim'](),_0x299b52=_0x1138ff['slice'](_0x5108ea+0x1)['trim']();if(_0x1dc5a7)_0x2ed03e[_0x1dc5a7]=_0x299b52;}}),_0x2ed03e;},'debounce'(_0x45e559,_0x99e7db=0xfa){let _0x4b21bb=null;return(..._0xa865fe)=>{clearTimeout(_0x4b21bb),_0x4b21bb=setTimeout(()=>_0x45e559['apply'](this,_0xa865fe),_0x99e7db);};},'formatTimestamp'(_0x16da4e){if(!_0x16da4e)return'N/A';const _0x4a8415=new Date(_0x16da4e);return _0x4a8415['toLocaleDateString']()+'\x20'+_0x4a8415['toLocaleTimeString']();},'getQueryParams'(){const _0x259eb2=new URLSearchParams(window['location']['search']),_0x2b8dcf={};for(const [_0x862d5e,_0xe84f81]of _0x259eb2){_0x2b8dcf[_0x862d5e]=_0xe84f81;}return _0x2b8dcf;},'formatDuration'(_0x401564,_0x483e29){if(!_0x401564)return'N/A';const _0x3443e0=new Date(_0x401564),_0x4aad0e=_0x483e29?new Date(_0x483e29):new Date(),_0x5b5d29=_0x4aad0e-_0x3443e0;if(_0x5b5d29<0x0)return'0s';const _0x41fa56=Math['floor'](_0x5b5d29/0x3e8),_0x42da4f=Math['floor'](_0x41fa56/0x3c),_0x57fe1d=Math['floor'](_0x42da4f/0x3c),_0x113490=Math['floor'](_0x57fe1d/0x18);if(_0x41fa56<0x3c)return _0x41fa56+'s';if(_0x42da4f<0x3c)return _0x42da4f+'m\x20'+_0x41fa56%0x3c+'s';if(_0x57fe1d<0x18)return _0x57fe1d+'h\x20'+_0x42da4f%0x3c+'m\x20'+_0x41fa56%0x3c+'s';return _0x113490+'d\x20'+_0x57fe1d%0x18+'h\x20'+_0x42da4f%0x3c+'m';},'renderMarkdown'(_0x45622a,_0x2c60ae={}){if(!_0x45622a)return'';_0x45622a=this['rewriteAttachmentLinks'](_0x45622a,_0x2c60ae),_0x45622a=this['rewriteColorSyntax'](_0x45622a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x45622a);}catch(_0x1224b9){return console['error']('Markdown\x20parsing\x20error:',_0x1224b9),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);}},'rewriteAttachmentLinks'(_0x1b3386,_0x332c17={}){const _0x3aaeba=typeof _0x332c17['resolveAttachmentUrl']==='function'?_0x332c17['resolveAttachmentUrl']:_0x332c17['taskId']?_0x244e2e=>API_BASE+'/tasks/'+_0x332c17['taskId']+'/attachments/'+encodeURIComponent(_0x244e2e):null;if(!_0x3aaeba)return _0x1b3386;return String(_0x1b3386)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x309920,_0x1387f9)=>{const _0x256617=String(_0x1387f9||'')['trim']();if(!_0x256617)return _0x309920;let _0x264df0=_0x256617;try{_0x264df0=decodeURIComponent(_0x256617);}catch{}const _0x4f528e=_0x3aaeba(_0x264df0);if(!_0x4f528e)return _0x309920;return']('+_0x4f528e+')';});},'rewriteColorSyntax'(_0x5c7cdb){if(!_0x5c7cdb)return _0x5c7cdb;return String(_0x5c7cdb)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e7fcf,_0x563dc0,_0x2b0d69)=>{const _0x8655c8=this['rewriteColorSyntax'](_0x2b0d69);return'<span\x20style=\x22color:\x20'+_0x563dc0+'\x22>'+_0x8655c8+'</span>';});},'renderMarkdownFallback'(_0x41246d,_0x24a360={}){if(!_0x41246d)return'';_0x41246d=_0x41246d['replace'](/\r\n/g,'\x0a'),_0x41246d=_0x41246d['replace'](/\r/g,'\x0a'),_0x41246d=this['rewriteAttachmentLinks'](_0x41246d,_0x24a360);let _0x44af68=this['escapeHtml'](_0x41246d);return _0x44af68=_0x44af68['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x44af68=_0x44af68['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x44af68=_0x44af68['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x44af68=_0x44af68['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x44af68=_0x44af68['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x44af68=_0x44af68['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x44af68=_0x44af68['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x44af68=_0x44af68['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x44af68=_0x44af68['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x44af68=_0x44af68['replace'](/\n\n/g,'</p><p>'),_0x44af68=_0x44af68['replace'](/\n/g,'<br>'),'<p>'+_0x44af68+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3284f6=new Uint8Array(0x10);crypto['getRandomValues'](_0x3284f6),_0x3284f6[0x6]=_0x3284f6[0x6]&0xf|0x40,_0x3284f6[0x8]=_0x3284f6[0x8]&0x3f|0x80;const _0x41fbe5=Array['from'](_0x3284f6,_0x187002=>_0x187002['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x41fbe5['slice'](0x0,0x8)+'-'+_0x41fbe5['slice'](0x8,0xc)+'-'+_0x41fbe5['slice'](0xc,0x10)+'-'+_0x41fbe5['slice'](0x10,0x14)+'-'+_0x41fbe5['slice'](0x14);}};export class CustomSelect{constructor(_0x30b5e2,_0x59e62b={}){this['nativeSelect']=_0x30b5e2,this['options']=_0x59e62b,this['isOpen']=![],this['selectedValue']=_0x30b5e2['value']||'',this['searchable']=_0x59e62b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1de5a2=document['createElement']('div');_0x1de5a2['className']='custom-select';const _0x5d5768=document['createElement']('div');_0x5d5768['className']='custom-select-trigger',_0x5d5768['setAttribute']('tabindex','0'),_0x5d5768['setAttribute']('role','button'),_0x5d5768['setAttribute']('aria-haspopup','listbox');const _0x51c77f=document['createElement']('span');_0x51c77f['className']='custom-select-trigger-text';const _0x13b50e=document['createElement']('span');_0x13b50e['className']='custom-select-arrow',_0x13b50e['textContent']='▼',_0x5d5768['appendChild'](_0x51c77f),_0x5d5768['appendChild'](_0x13b50e);const _0x24edea=document['createElement']('div');_0x24edea['className']='custom-select-dropdown',_0x24edea['setAttribute']('role','listbox');if(this['searchable']){const _0x520941=document['createElement']('div');_0x520941['className']='custom-select-search';const _0x45a016=document['createElement']('input');_0x45a016['type']='text',_0x45a016['className']='custom-select-search-input',_0x45a016['placeholder']='Type\x20to\x20search...',_0x45a016['setAttribute']('aria-label','Search\x20options'),_0x45a016['addEventListener']('input',_0x1594b5=>{this['searchQuery']=_0x1594b5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x45a016['addEventListener']('keydown',_0xd82833=>{if(_0xd82833['key']==='Escape')_0xd82833['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xd82833['key']==='Enter'){_0xd82833['preventDefault'](),_0xd82833['stopPropagation']();const _0x1355ba=_0x24edea['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1355ba){const _0x5d0875=_0x1355ba['getAttribute']('data-value');this['select'](_0x5d0875);}}}}),_0x520941['appendChild'](_0x45a016),_0x24edea['appendChild'](_0x520941),this['searchInput']=_0x45a016;}const _0x567f85=document['createElement']('div');_0x567f85['className']='custom-select-options',_0x24edea['appendChild'](_0x567f85),_0x1de5a2['appendChild'](_0x5d5768),_0x1de5a2['appendChild'](_0x24edea),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1de5a2,this['nativeSelect']),this['wrapper']=_0x1de5a2,this['trigger']=_0x5d5768,this['triggerText']=_0x51c77f,this['dropdown']=_0x24edea,this['optionsContainer']=_0x567f85,_0x5d5768['addEventListener']('click',()=>this['toggle']()),_0x5d5768['addEventListener']('keydown',_0x3f31eb=>this['handleKeydown'](_0x3f31eb)),document['addEventListener']('click',_0x38cd60=>{!_0x1de5a2['contains'](_0x38cd60['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5223fc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5223fc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x5c71b4=new MutationObserver(()=>{this['updateDisabledState']();});_0x5c71b4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x19ded8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x19ded8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x55205f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x55205f),this['trigger']['setAttribute']('aria-disabled',_0x55205f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x55205f?'-1':'0'),_0x55205f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2942ff=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1dd185=_0x2942ff['filter'](_0x5a37ca=>!_0x5a37ca['disabled']&&!_0x5a37ca['hidden']);_0x2942ff['forEach']((_0x2f020e,_0x1c839b)=>{const _0x18c7da=document['createElement']('div');_0x18c7da['className']='custom-select-option',_0x18c7da['textContent']=_0x2f020e['textContent'],_0x18c7da['setAttribute']('data-value',_0x2f020e['value']),_0x18c7da['setAttribute']('data-index',_0x1c839b),_0x18c7da['setAttribute']('role','option'),_0x2f020e['disabled']?_0x18c7da['classList']['add']('disabled'):_0x18c7da['addEventListener']('click',()=>this['select'](_0x2f020e['value'])),_0x2f020e['value']===this['selectedValue']&&_0x18c7da['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x18c7da),this['allOptions']['push']({'element':_0x18c7da,'text':_0x2f020e['textContent']['toLowerCase'](),'value':_0x2f020e['value'],'disabled':_0x2f020e['disabled']});});if(this['searchable']&&this['searchInput']){const _0x30dcd4=this['searchInput']['parentElement'];_0x1dd185['length']>0x3?_0x30dcd4['style']['display']='':_0x30dcd4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2cb20f=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x24922b=>{if(!_0x2cb20f||_0x24922b['disabled'])_0x24922b['element']['style']['display']='';else{const _0x467345=_0x24922b['text']['includes'](_0x2cb20f);_0x24922b['element']['style']['display']=_0x467345?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x55ac77){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x55ac77,this['nativeSelect']['value']=_0x55ac77;const _0x124fcd=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x124fcd),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3217e2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3217e2&&(this['triggerText']['textContent']=_0x3217e2['textContent'],_0x3217e2['disabled']||_0x3217e2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3956a6=>{_0x3956a6['getAttribute']('data-value')===this['selectedValue']?_0x3956a6['classList']['add']('selected'):_0x3956a6['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 _0x238f99=window['getComputedStyle'](this['dropdown']);if(_0x238f99['position']==='fixed'){const _0x2cd673=this['trigger']['getBoundingClientRect'](),_0x444062=parseInt(_0x238f99['maxHeight'])||0xc8,_0x2ee5e4=window['innerHeight'],_0x19a90c=_0x2ee5e4-_0x2cd673['bottom'],_0x1f08f9=_0x2cd673['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1e7f82;_0x19a90c<_0x444062&&_0x1f08f9>_0x19a90c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2ee5e4-_0x2cd673['top']+'px',_0x1e7f82=Math['min'](_0x444062,_0x1f08f9-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2cd673['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1e7f82=Math['min'](_0x444062,_0x19a90c-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px');if(this['optionsContainer']){let _0x392df3=_0x1e7f82;if(this['searchInput']){const _0x551d4f=this['searchInput']['parentElement'];_0x551d4f&&(_0x392df3-=_0x551d4f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x392df3)+'px';}this['dropdown']['style']['left']=_0x2cd673['left']+'px',this['dropdown']['style']['width']=_0x2cd673['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc89154=this['searchInput']['parentElement'];_0xc89154&&_0xc89154['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'](_0x198b26){if(this['nativeSelect']['disabled'])return;if(_0x198b26['key']==='Enter'||_0x198b26['key']==='\x20')_0x198b26['preventDefault'](),this['toggle']();else _0x198b26['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1d6183='\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',_0x1d6183),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4d30aa=document['getElementById']('confirm-dialog-close'),_0x363e66=document['getElementById']('confirm-dialog-cancel'),_0x10b668=document['getElementById']('confirm-dialog-confirm'),_0x16c3bb=this['_modal']['querySelector']('.modal-overlay');_0x4d30aa['addEventListener']('click',()=>this['_resolve'](![])),_0x363e66['addEventListener']('click',()=>this['_resolve'](![])),_0x10b668['addEventListener']('click',()=>this['_resolve'](!![])),_0x16c3bb['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4065b1=>{if(_0x4065b1['key']==='Escape')_0x4065b1['preventDefault'](),this['_resolve'](![]);else _0x4065b1['key']==='Enter'&&(_0x4065b1['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x538117,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2704be=>{this['_resolvePromise']=_0x2704be,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x538117;const _0x4b82c5=document['getElementById']('confirm-dialog-cancel'),_0x1460c2=document['getElementById']('confirm-dialog-confirm');_0x4b82c5['textContent']=cancelText,_0x1460c2['textContent']=confirmText,_0x1460c2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1460c2['focus']();});},'_resolve'(_0x151f7f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x151f7f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d777a,_0x484a09={}){this['container']=_0x3d777a,this['options']={'placeholder':_0x484a09['placeholder']||'Type\x20to\x20search...','maxItems':_0x484a09['maxItems']||0x64,'loadItems':_0x484a09['loadItems']||(async()=>[]),'renderItem':_0x484a09['renderItem']||(_0x239bca=>({'primary':String(_0x239bca),'secondary':''})),'onSelect':_0x484a09['onSelect']||(()=>{}),'filterItems':_0x484a09['filterItems']||null,'getItemValue':_0x484a09['getItemValue']||(_0x41f9a1=>_0x41f9a1),'sortItems':_0x484a09['sortItems']||null,'debounceMs':_0x484a09['debounceMs']||0xc8,'minCharsForSearch':_0x484a09['minCharsForSearch']||0x0,'emptyMessage':_0x484a09['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x484a09['loadingMessage']||'Loading...','preload':_0x484a09['preload']!==![],'searchMode':_0x484a09['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',_0x58e735=>this['onBlur'](_0x58e735)),this['input']['addEventListener']('input',_0x2d7826=>this['onInput'](_0x2d7826)),this['input']['addEventListener']('keydown',_0x484370=>this['onKeydown'](_0x484370)),this['clearBtn']['addEventListener']('mousedown',_0x298f51=>{_0x298f51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5a6c59=>{_0x5a6c59['preventDefault']();}),document['addEventListener']('click',_0x45960a=>{!this['wrapper']['contains'](_0x45960a['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(_0x26c9af){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x26c9af);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x215ff3){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x22843e){const _0x573a10=_0x22843e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x573a10);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x573a10):this['loadAndShow'](_0x573a10);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2139e2){switch(_0x2139e2['key']){case'ArrowDown':_0x2139e2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2139e2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2139e2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2139e2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x16836c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2dcd99=this['selectedIndex']+_0x16836c;if(_0x2dcd99>=0x0&&_0x2dcd99<this['filteredItems']['length']){this['selectedIndex']=_0x2dcd99,this['updateSelectionHighlight']();const _0x59f91b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x59f91b[this['selectedIndex']]&&_0x59f91b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5306a4=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5306a4['forEach']((_0x155c2f,_0x413f20)=>{_0x155c2f['classList']['toggle']('keyboard-selected',_0x413f20===this['selectedIndex']);});}async['loadAndShow'](_0x409a2e){this['showLoading']();try{const _0x13f5f3=await this['options']['loadItems'](_0x409a2e);if(this['options']['searchMode']==='server'){let _0x24d045=_0x13f5f3;this['options']['sortItems']&&(_0x24d045=this['options']['sortItems']([..._0x13f5f3]));this['filteredItems']=_0x24d045;const _0x4603e9=this['filteredItems']['length']>=this['options']['maxItems'];_0x4603e9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4603e9),this['open']();}else this['allItems']=_0x13f5f3,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x409a2e);}catch(_0x543fb1){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x543fb1),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x303485){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x303485):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x351ed3=this['filteredItems']['length']>=this['options']['maxItems'];_0x351ed3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x351ed3),this['open']();}['renderItems'](_0x2e7924){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']((_0x7ceb21,_0x52c720)=>{const _0x174a1b=document['createElement']('div');_0x174a1b['className']='autocomplete-select-item',_0x174a1b['setAttribute']('role','option'),_0x174a1b['setAttribute']('data-index',_0x52c720);const _0xe6f12=this['options']['renderItem'](_0x7ceb21);let _0x49c079='';_0xe6f12['icon']&&(_0x49c079='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0xe6f12['iconClass']||'')+'\x22>'+_0xe6f12['icon']+'</span>'),_0x174a1b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x49c079+'\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'](_0xe6f12['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xe6f12['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0xe6f12['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x174a1b['addEventListener']('click',()=>{this['selectItem'](_0x7ceb21);}),_0x174a1b['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x52c720,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x174a1b);}),_0x2e7924?(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'](_0x205f31){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x205f31)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x37979f){this['selectedItem']=_0x37979f;const _0x1395ac=this['options']['renderItem'](_0x37979f);this['input']['value']=_0x1395ac['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x37979f);}['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'](_0x1ec4d8){if(_0x1ec4d8){this['selectedItem']=_0x1ec4d8;const _0x3d0bfd=this['options']['renderItem'](_0x1ec4d8);this['input']['value']=_0x3d0bfd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x9fb1c){this['allItems']=_0x9fb1c,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'](_0x498c2d){this['input']['placeholder']=_0x498c2d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x518054=null){const _0x3a813b=document['getElementById']('admin-menu-container'),_0x52af0c=document['getElementById']('admin-menu-btn'),_0xbfa5ca=document['getElementById']('admin-menu');if(!_0x3a813b||!_0x52af0c||!_0xbfa5ca)return;try{!_0x518054&&(_0x518054=await API['getCurrentUser']());if(_0x518054){const _0x35aa42=window['Permissions'],_0x3cf8b1=_0x35aa42['hasServerPermission'](_0x518054,'*')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:manage')||_0x35aa42['hasServerPermission'](_0x518054,'users:create')||_0x35aa42['hasTeamPermission'](_0x518054,'teams:manage')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:view_details');if(!_0x3cf8b1)return;_0x3a813b['hidden']=![];if(!_0x35aa42['hasServerPermission'](_0x518054,'*')){const _0x537a7a=_0xbfa5ca['querySelectorAll']('.admin-menu-item');_0x537a7a['forEach'](_0x48479e=>{const _0x3dce0e=_0x48479e['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3dce0e==='Users'&&!_0x35aa42['hasServerPermission'](_0x518054,'users:create')&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Skills'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Settings'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Administration'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Git\x20History'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Roles'&&(_0x48479e['hidden']=!![]);});}_0x52af0c['addEventListener']('click',_0x4a8cde=>{_0x4a8cde['stopPropagation']();const _0x47ab42=document['getElementById']('actions-menu');if(_0x47ab42)_0x47ab42['hidden']=!![];_0xbfa5ca['hidden']=!_0xbfa5ca['hidden'];}),document['addEventListener']('click',_0x366609=>{!_0xbfa5ca['hidden']&&!_0x52af0c['contains'](_0x366609['target'])&&!_0xbfa5ca['contains'](_0x366609['target'])&&(_0xbfa5ca['hidden']=!![]);}),document['addEventListener']('keydown',_0x274f19=>{_0x274f19['key']==='Escape'&&!_0xbfa5ca['hidden']&&(_0xbfa5ca['hidden']=!![]);});}}catch(_0x1aa6bc){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1aa6bc['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|