@profoundlogic/coderflow-server 0.7.7 → 0.7.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/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 +682 -0
- package/dist/web-ui/public/admin.html +648 -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 +3 -3
- 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 +10 -2
- 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 _0x2e6ec1=window['location']['pathname'],_0x172a8a=_0x2e6ec1['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x172a8a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x172a8a[0x1]),_0x172a8a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x50e1cd={}){const _0x11cfc=new URLSearchParams();_0x50e1cd['userId']&&_0x11cfc['set']('userId',String(_0x50e1cd['userId']));_0x50e1cd['automation']&&_0x11cfc['set']('automation',String(_0x50e1cd['automation']));const _0xdfe427=API_BASE+'/tasks/stats'+(_0x11cfc['toString']()?'?'+_0x11cfc['toString']():''),_0x196351=await fetch(_0xdfe427);if(!_0x196351['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x196351['statusText']);return await _0x196351['json']();},async 'getTasks'(_0x316732={}){const _0x3a7059=new URLSearchParams();_0x316732['status']&&_0x3a7059['set']('status',String(_0x316732['status']));_0x316732['environment']&&_0x3a7059['set']('environment',String(_0x316732['environment']));_0x316732['automation']&&_0x3a7059['set']('automation',String(_0x316732['automation']));if(_0x316732['include']){const _0x4d1df6=Array['isArray'](_0x316732['include'])?_0x316732['include']['join'](','):String(_0x316732['include']);_0x4d1df6&&_0x3a7059['set']('include',_0x4d1df6);}_0x316732['filter']&&_0x3a7059['set']('filter',String(_0x316732['filter']));_0x316732['page']&&_0x3a7059['set']('page',String(_0x316732['page']));_0x316732['limit']&&_0x3a7059['set']('limit',String(_0x316732['limit']));_0x316732['userId']&&_0x3a7059['set']('userId',String(_0x316732['userId']));_0x316732['search']&&_0x3a7059['set']('search',String(_0x316732['search']));_0x316732['includeChildTasks']&&_0x3a7059['set']('includeChildTasks','true');const _0x2a2a8e=API_BASE+'/tasks'+(_0x3a7059['toString']()?'?'+_0x3a7059['toString']():''),_0x57e5a8=await fetch(_0x2a2a8e);if(!_0x57e5a8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x57e5a8['statusText']);return await _0x57e5a8['json']();},async 'getAutomations'(_0x1763a2={}){const _0x5e6c83=new URLSearchParams();_0x1763a2['environment']&&_0x5e6c83['set']('environment',String(_0x1763a2['environment']));const _0x4c3c77=await fetch(API_BASE+'/api/automations'+(_0x5e6c83['toString']()?'?'+_0x5e6c83['toString']():''));if(!_0x4c3c77['ok']){const _0xb67ff=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0xb67ff['message']||_0xb67ff['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'getAutomation'(_0x1f2d9b){const _0x539788=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f2d9b));if(!_0x539788['ok']){const _0x46b8a7=await _0x539788['json']()['catch'](()=>({}));throw new Error(_0x46b8a7['message']||_0x46b8a7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539788['statusText']);}return await _0x539788['json']();},async 'createAutomation'(_0x4bb77f){const _0x510eba=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb77f||{})});if(!_0x510eba['ok']){const _0x2476a1=await _0x510eba['json']()['catch'](()=>({}));throw new Error(_0x2476a1['message']||_0x2476a1['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x510eba['statusText']);}return await _0x510eba['json']();},async 'updateAutomation'(_0x247fc3,_0x95ef9d){const _0x270d2c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x247fc3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x95ef9d||{})});if(!_0x270d2c['ok']){const _0x1e8a4a=await _0x270d2c['json']()['catch'](()=>({}));throw new Error(_0x1e8a4a['message']||_0x1e8a4a['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x270d2c['statusText']);}return await _0x270d2c['json']();},async 'deleteAutomation'(_0x4a5ca9){const _0x12c180=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4a5ca9),{'method':'DELETE'});if(!_0x12c180['ok']){const _0x465beb=await _0x12c180['json']()['catch'](()=>({}));throw new Error(_0x465beb['message']||_0x465beb['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12c180['statusText']);}return await _0x12c180['json']();},async 'triggerAutomation'(_0x306bd4){const _0x58eeba=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x306bd4)+'/trigger',{'method':'POST'});if(!_0x58eeba['ok']){const _0x2106de=await _0x58eeba['json']()['catch'](()=>({}));throw new Error(_0x2106de['message']||_0x2106de['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x58eeba['statusText']);}return await _0x58eeba['json']();},async 'setAutomationEnabled'(_0x5e00a0,_0x88eb9e){const _0x47d8bb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5e00a0)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x88eb9e})});if(!_0x47d8bb['ok']){const _0x1d4a3e=await _0x47d8bb['json']()['catch'](()=>({}));throw new Error(_0x1d4a3e['message']||_0x1d4a3e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x47d8bb['statusText']);}return await _0x47d8bb['json']();},async 'getAutomationHistory'(_0x3c13c5,_0x7266b2=0x32){const _0x4c8743=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c13c5)+'/history?limit='+encodeURIComponent(String(_0x7266b2)));if(!_0x4c8743['ok']){const _0x9697a9=await _0x4c8743['json']()['catch'](()=>({}));throw new Error(_0x9697a9['message']||_0x9697a9['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4c8743['statusText']);}return await _0x4c8743['json']();},async 'getTask'(_0x23da9e,_0x3216ff={}){const _0xb0193=new URLSearchParams();if(_0x3216ff['include']){const _0x597368=Array['isArray'](_0x3216ff['include'])?_0x3216ff['include']['join'](','):String(_0x3216ff['include']);if(_0x597368)_0xb0193['set']('include',_0x597368);}const _0x393d4a=await fetch(API_BASE+'/tasks/'+_0x23da9e+(_0xb0193['toString']()?'?'+_0xb0193['toString']():''));if(!_0x393d4a['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x393d4a['statusText']);return await _0x393d4a['json']();},async 'getTaskResults'(_0x15622b){const _0xc3c61d=await fetch(API_BASE+'/tasks/'+_0x15622b+'/results');if(!_0xc3c61d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xc3c61d['statusText']);return await _0xc3c61d['json']();},async 'getTaskPatches'(_0x2572cd){const _0x480650=await fetch(API_BASE+'/tasks/'+_0x2572cd+'/patches');if(!_0x480650['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x480650['statusText']);return await _0x480650['json']();},async 'getTaskAttachments'(_0x3b42f3){const _0x51b3ce=await fetch(API_BASE+'/tasks/'+_0x3b42f3+'/attachments');if(!_0x51b3ce['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x51b3ce['statusText']);return await _0x51b3ce['json']();},async 'uploadAttachments'(_0x32522b,_0x51574c){const _0x19a643=new FormData();for(const _0x4e10e4 of _0x51574c){_0x19a643['append']('attachments',_0x4e10e4);}const _0x388b29=await fetch(API_BASE+'/tasks/'+_0x32522b+'/attachments',{'method':'POST','body':_0x19a643});if(!_0x388b29['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x388b29['statusText']);return await _0x388b29['json']();},async 'isAINameGenerationAvailable'(){try{const _0x590123=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x590123['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x590123['json']();}catch(_0x406a73){return{'available':![],'reason':_0x406a73['message']};}},async 'generateTaskName'(_0xb26931){try{const _0x4d930d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xb26931})});return await _0x4d930d['json']();}catch(_0x298f8f){return{'success':![],'error':_0x298f8f['message']};}},async 'createTask'(_0x1a636c){let _0x501acb,_0x42f7c0={};if(_0x1a636c['files']&&_0x1a636c['files']['length']>0x0){const _0x3e7344=new FormData();for(const [_0xcc6308,_0x576139]of Object['entries'](_0x1a636c)){if(_0xcc6308!=='files'){if(_0x576139==null)continue;typeof _0x576139==='object'?_0x3e7344['append'](_0xcc6308,JSON['stringify'](_0x576139)):_0x3e7344['append'](_0xcc6308,String(_0x576139));}}for(const _0x423f3c of _0x1a636c['files']){_0x3e7344['append']('attachments',_0x423f3c);}_0x501acb=_0x3e7344;}else _0x42f7c0['Content-Type']='application/json',_0x501acb=JSON['stringify'](_0x1a636c);const _0x24f6e3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x42f7c0,'body':_0x501acb});if(!_0x24f6e3['ok']){const _0x46c91e=await _0x24f6e3['json'](),_0x375555=new Error(_0x46c91e['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24f6e3['statusText']),{message:_0x5f0df7,..._0x126e62}=_0x46c91e;Object['assign'](_0x375555,_0x126e62);throw _0x375555;}return await _0x24f6e3['json']();},async 'createTestTask'(_0x4417fa){const _0x16bf06=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4417fa)});if(!_0x16bf06['ok']){const _0x28524e=await _0x16bf06['json']();throw new Error(_0x28524e['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16bf06['statusText']);}return await _0x16bf06['json']();},async 'createEphemeralTest'(_0x5462fc){const _0x5c5c9d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5462fc)});if(!_0x5c5c9d['ok']){const _0x33fe55=await _0x5c5c9d['json']();throw new Error(_0x33fe55['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5c5c9d['statusText']);}return await _0x5c5c9d['json']();},async 'createDeployTask'(_0x58432f){const _0x2de682=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58432f)});if(!_0x2de682['ok']){const _0x11ef7a=await _0x2de682['json']();throw new Error(_0x11ef7a['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2de682['statusText']);}return await _0x2de682['json']();},async 'getEnvironments'(){const _0x4c6a24=await fetch(API_BASE+'/environments');if(!_0x4c6a24['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c6a24['statusText']);return await _0x4c6a24['json']();},async 'getEnvironment'(_0x5afe84){const _0x17f500=await fetch(API_BASE+'/environments/'+_0x5afe84);if(!_0x17f500['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x17f500['statusText']);return await _0x17f500['json']();},async 'getEnvironmentRepoHistory'(_0x4d18dd,_0x502064,_0x2264aa={}){if(!_0x4d18dd||!_0x502064)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x558c3e=new URLSearchParams();if(_0x2264aa['limit'])_0x558c3e['set']('limit',String(_0x2264aa['limit']));if(_0x2264aa['offset'])_0x558c3e['set']('offset',String(_0x2264aa['offset']));if(_0x2264aa['search'])_0x558c3e['set']('search',String(_0x2264aa['search']));if(_0x2264aa['branch'])_0x558c3e['set']('branch',String(_0x2264aa['branch']));const _0x4204ac=API_BASE+'/environments/'+encodeURIComponent(_0x4d18dd)+'/repos/'+encodeURIComponent(_0x502064)+'/git/history',_0x227091=await fetch(''+_0x4204ac+(_0x558c3e['toString']()?'?'+_0x558c3e['toString']():''));if(!_0x227091['ok']){const _0x266300=await _0x227091['json']()['catch'](()=>({}));throw new Error(_0x266300['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x227091['statusText']);}return await _0x227091['json']();},async 'getEnvironmentRepoCommit'(_0x11b1df,_0x232756,_0x4ae846){if(!_0x11b1df||!_0x232756||!_0x4ae846)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x369954=API_BASE+'/environments/'+encodeURIComponent(_0x11b1df)+'/repos/'+encodeURIComponent(_0x232756)+'/git/commits/'+encodeURIComponent(_0x4ae846),_0x22e103=await fetch(_0x369954);if(!_0x22e103['ok']){const _0x356125=await _0x22e103['json']()['catch'](()=>({}));throw new Error(_0x356125['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x22e103['statusText']);}return await _0x22e103['json']();},async 'getEnvironmentRepoBranches'(_0x22c5ec,_0x112f11){if(!_0x22c5ec||!_0x112f11)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x701e38=API_BASE+'/environments/'+encodeURIComponent(_0x22c5ec)+'/repos/'+encodeURIComponent(_0x112f11)+'/git/branches',_0x4cab8a=await fetch(_0x701e38);if(!_0x4cab8a['ok']){const _0x38cfbe=await _0x4cab8a['json']()['catch'](()=>({}));throw new Error(_0x38cfbe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4cab8a['statusText']);}return await _0x4cab8a['json']();},async 'revertEnvironmentRepoCommit'(_0xa80eaf,_0x361169,_0x29e481,_0x226c31={}){if(!_0xa80eaf||!_0x361169||!_0x29e481)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x12cca6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0xa80eaf)+'/repos/'+encodeURIComponent(_0x361169)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x29e481,..._0x226c31})});if(!_0x12cca6['ok']){const _0x6b4790=await _0x12cca6['json']()['catch'](()=>({}));throw new Error(_0x6b4790['message']||_0x6b4790['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x12cca6['statusText']);}return await _0x12cca6['json']();},async 'getTemplates'(_0x5357ff={}){const _0x1d5e36=new URLSearchParams();if(_0x5357ff['include']){const _0x563207=Array['isArray'](_0x5357ff['include'])?_0x5357ff['include']['join'](','):String(_0x5357ff['include']);if(_0x563207)_0x1d5e36['set']('include',_0x563207);}const _0x37e2af=await fetch(API_BASE+'/templates'+(_0x1d5e36['toString']()?'?'+_0x1d5e36['toString']():''));if(!_0x37e2af['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x37e2af['statusText']);return await _0x37e2af['json']();},async 'getTemplatesForEnvironment'(_0x5ebe5d,_0x1133b0={}){if(!_0x5ebe5d)throw new Error('Environment\x20name\x20is\x20required');const _0x56fd5d=new URLSearchParams();if(_0x1133b0['include']){const _0xd85549=Array['isArray'](_0x1133b0['include'])?_0x1133b0['include']['join'](','):String(_0x1133b0['include']);if(_0xd85549)_0x56fd5d['set']('include',_0xd85549);}const _0x56b19c=await fetch(API_BASE+'/templates/'+_0x5ebe5d+(_0x56fd5d['toString']()?'?'+_0x56fd5d['toString']():''));if(!_0x56b19c['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5ebe5d+':\x20'+_0x56b19c['statusText']);return await _0x56b19c['json']();},async 'getTemplate'(_0x22c462,_0x8007eb,_0x3a0ea4={}){if(!_0x22c462||!_0x8007eb)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2f3a35=new URLSearchParams();if(_0x3a0ea4['include']){const _0x21edab=Array['isArray'](_0x3a0ea4['include'])?_0x3a0ea4['include']['join'](','):String(_0x3a0ea4['include']);if(_0x21edab)_0x2f3a35['set']('include',_0x21edab);}const _0x4ca9a4=await fetch(API_BASE+'/templates/'+_0x22c462+'/'+_0x8007eb+(_0x2f3a35['toString']()?'?'+_0x2f3a35['toString']():''));if(!_0x4ca9a4['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ca9a4['statusText']);return await _0x4ca9a4['json']();},async 'getTaskLogs'(_0x58a15d,_0x1ba508={}){if(!_0x58a15d)throw new Error('Task\x20ID\x20is\x20required');const _0x4274c9=new URLSearchParams();_0x1ba508['tail']&&_0x4274c9['set']('tail',String(_0x1ba508['tail']));const _0x42d4d6=await fetch(API_BASE+'/tasks/'+_0x58a15d+'/logs'+(_0x4274c9['toString']()?'?'+_0x4274c9['toString']():''));if(!_0x42d4d6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42d4d6['statusText']);return await _0x42d4d6['text']();},async 'getContainers'(){const _0x2d2c14=await fetch(API_BASE+'/containers');if(!_0x2d2c14['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2d2c14['statusText']);return await _0x2d2c14['json']();},async 'getContainer'(_0xb40306){const _0x33a972=await fetch(API_BASE+'/containers/'+_0xb40306);if(!_0x33a972['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33a972['statusText']);return await _0x33a972['json']();},async 'startInteractiveContainer'(_0x5f08e8){const _0x4df029=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f08e8)});if(!_0x4df029['ok']){const _0x4eab07=await _0x4df029['json']()['catch'](()=>({}));throw new Error(_0x4eab07['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4df029['statusText']);}return await _0x4df029['json']();},async 'startContainerCodeServer'(_0xf127ae,_0x1b0dd0={}){if(!_0xf127ae)throw new Error('Container\x20ID\x20is\x20required');const _0x17f304=new URLSearchParams();_0x1b0dd0['theme']&&_0x17f304['set']('theme',_0x1b0dd0['theme']);const _0x5a927d=await fetch(API_BASE+'/containers/'+_0xf127ae+'/code-server'+(_0x17f304['toString']()?'?'+_0x17f304['toString']():'')),_0x20342b=await _0x5a927d['json']()['catch'](()=>({}));if(!_0x5a927d['ok'])throw new Error(_0x20342b['message']||_0x20342b['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5a927d['statusText']);return _0x20342b;},async 'stopContainer'(_0x3e4b97){const _0x316f23=await fetch(API_BASE+'/containers/'+_0x3e4b97,{'method':'DELETE'});if(!_0x316f23['ok']){const _0x130a21=await _0x316f23['json']()['catch'](()=>({}));throw new Error(_0x130a21['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x316f23['statusText']);}return await _0x316f23['json']();},async 'stopTask'(_0x2fba6a){if(!_0x2fba6a)throw new Error('Task\x20ID\x20is\x20required');const _0x445cc8=await fetch(API_BASE+'/tasks/'+_0x2fba6a+'/stop',{'method':'POST'});if(!_0x445cc8['ok']){const _0x59a58c=await _0x445cc8['json']()['catch'](()=>({}));throw new Error(_0x59a58c['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x445cc8['statusText']);}return await _0x445cc8['json']();},async 'interruptTask'(_0xde2e7e){if(!_0xde2e7e)throw new Error('Task\x20ID\x20is\x20required');const _0x1a7225=await fetch(API_BASE+'/tasks/'+_0xde2e7e+'/interrupt',{'method':'POST'});if(!_0x1a7225['ok']){const _0x2a3e3b=await _0x1a7225['json']()['catch'](()=>({}));throw new Error(_0x2a3e3b['error']||_0x2a3e3b['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1a7225['statusText']);}return await _0x1a7225['json']();},async 'startTask'(_0x157ef9){if(!_0x157ef9)throw new Error('Task\x20ID\x20is\x20required');const _0xafb763=await fetch(API_BASE+'/tasks/'+_0x157ef9+'/start',{'method':'POST'});if(!_0xafb763['ok']){const _0x331109=await _0xafb763['json']()['catch'](()=>({}));throw new Error(_0x331109['error']||'Failed\x20to\x20start\x20task:\x20'+_0xafb763['statusText']);}return await _0xafb763['json']();},async 'deleteTask'(_0x3aa16d){if(!_0x3aa16d)throw new Error('Task\x20ID\x20is\x20required');const _0x59ccdd=await fetch(API_BASE+'/tasks/'+_0x3aa16d,{'method':'DELETE'});if(!_0x59ccdd['ok']){const _0x5daf74=await _0x59ccdd['json']()['catch'](()=>({}));throw new Error(_0x5daf74['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x59ccdd['statusText']);}return await _0x59ccdd['json']();},async 'refreshTasksFromDisk'(){const _0x55d062=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x55d062['ok']){const _0x1c7faf=await _0x55d062['json']()['catch'](()=>({}));throw new Error(_0x1c7faf['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x55d062['statusText']);}return await _0x55d062['json']();},async 'approveTask'(_0x24152d,_0xbd135d={}){if(!_0x24152d)throw new Error('Task\x20ID\x20is\x20required');const _0x47550b={'commit_message':_0xbd135d['commit_message']||'','pull':_0xbd135d['pull']??![],'push':_0xbd135d['push']??![]};_0xbd135d['new_branch']&&(_0x47550b['new_branch']=_0xbd135d['new_branch']);const _0x56398d=await fetch(API_BASE+'/tasks/'+_0x24152d+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x47550b)});if(!_0x56398d['ok']){const _0xd551a6=await _0x56398d['json']()['catch'](()=>({}));let _0x534789=_0xd551a6['error']||_0xd551a6['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x56398d['statusText'];if(_0xd551a6['results']&&Array['isArray'](_0xd551a6['results'])){const _0x451f84=_0xd551a6['results']['filter'](_0x455666=>!_0x455666['success']&&_0x455666['error']);_0x451f84['length']>0x0&&(_0x534789=_0x451f84[0x0]['error']);}throw new Error(_0x534789);}return await _0x56398d['json']();},async 'getPullRequestInfo'(_0xfb7591){if(!_0xfb7591)throw new Error('Task\x20ID\x20is\x20required');const _0x446773=await fetch(API_BASE+'/tasks/'+_0xfb7591+'/pull-request-info');if(!_0x446773['ok']){const _0xbdadc7=await _0x446773['json']()['catch'](()=>({}));throw new Error(_0xbdadc7['error']||_0xbdadc7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x446773['statusText']);}return await _0x446773['json']();},async 'createPullRequests'(_0x2ba445,_0x24a5b9){if(!_0x2ba445)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24a5b9||!Array['isArray'](_0x24a5b9))throw new Error('repos\x20array\x20is\x20required');const _0x2e644c=await fetch(API_BASE+'/tasks/'+_0x2ba445+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x24a5b9})});if(!_0x2e644c['ok']){const _0xc05cbe=await _0x2e644c['json']()['catch'](()=>({}));let _0x3692a6=_0xc05cbe['error']||_0xc05cbe['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x2e644c['statusText'];if(_0xc05cbe['results']&&Array['isArray'](_0xc05cbe['results'])){const _0x56b3bf=_0xc05cbe['results']['filter'](_0x15e097=>!_0x15e097['success']&&_0x15e097['error']);_0x56b3bf['length']>0x0&&(_0x3692a6=_0x56b3bf[0x0]['error']);}throw new Error(_0x3692a6);}return await _0x2e644c['json']();},async 'syncRepos'(_0x29d24e){if(!_0x29d24e)throw new Error('Task\x20ID\x20is\x20required');const _0x2d63b3=await fetch(API_BASE+'/tasks/'+_0x29d24e+'/sync-repos',{'method':'POST'});if(!_0x2d63b3['ok']){const _0x2e1839=await _0x2d63b3['json']()['catch'](()=>({}));throw new Error(_0x2e1839['error']||_0x2e1839['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2d63b3['statusText']);}return await _0x2d63b3['json']();},async 'getIbmiSyncInfo'(_0x4fb28b){if(!_0x4fb28b)throw new Error('Task\x20ID\x20is\x20required');const _0x576609=await fetch(API_BASE+'/tasks/'+_0x4fb28b+'/ibmi-sync-info');if(!_0x576609['ok']){const _0x43196d=await _0x576609['json']()['catch'](()=>({}));throw new Error(_0x43196d['error']||_0x43196d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x576609['json']();},async 'getSyncFiles'(_0x243714){if(!_0x243714)throw new Error('Task\x20ID\x20is\x20required');const _0x517293=await fetch(API_BASE+'/tasks/'+_0x243714+'/sync-to-ibmi/files');if(!_0x517293['ok']){const _0x991183=await _0x517293['json']()['catch'](()=>({}));throw new Error(_0x991183['error']||_0x991183['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x517293['json']();},async 'syncToIbmi'(_0x20ba9e,_0x4366f9,_0x37bc34=null,_0x27bdd1=null,_0x308ca8=null){if(!_0x20ba9e)throw new Error('Task\x20ID\x20is\x20required');const _0x493c6f={'library':_0x4366f9};if(_0x37bc34)_0x493c6f['user']=_0x37bc34;if(_0x27bdd1)_0x493c6f['password']=_0x27bdd1;if(_0x308ca8)_0x493c6f['files']=_0x308ca8;const _0x340486=await fetch(API_BASE+'/tasks/'+_0x20ba9e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493c6f)});if(!_0x340486['ok']){const _0x370bfe=await _0x340486['json']()['catch'](()=>({}));throw new Error(_0x370bfe['error']||_0x370bfe['message']||'Sync\x20failed');}return await _0x340486['json']();},async 'getIbmiSyncLog'(_0x587e2b){if(!_0x587e2b)throw new Error('Task\x20ID\x20is\x20required');const _0x3496ce=await fetch(API_BASE+'/tasks/'+_0x587e2b+'/ibmi-sync-log');if(!_0x3496ce['ok']){const _0x21f540=await _0x3496ce['json']()['catch'](()=>({}));throw new Error(_0x21f540['error']||_0x21f540['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3496ce['json']();},async 'pullChanges'(_0xdf83c3){if(!_0xdf83c3)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad279=await fetch(API_BASE+'/tasks/'+_0xdf83c3+'/pull-changes',{'method':'POST'});if(!_0x2ad279['ok']){const _0x23bf9c=await _0x2ad279['json']()['catch'](()=>({}));throw new Error(_0x23bf9c['error']||_0x23bf9c['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2ad279['statusText']);}return await _0x2ad279['json']();},async 'readFile'(_0x4f517b,_0x576aaa){if(!_0x4f517b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x576aaa)throw new Error('File\x20path\x20is\x20required');const _0x24323e=await fetch(API_BASE+'/tasks/'+_0x4f517b+'/files?path='+encodeURIComponent(_0x576aaa));if(!_0x24323e['ok']){const _0x25275b=await _0x24323e['json']()['catch'](()=>({}));throw new Error(_0x25275b['error']||_0x25275b['message']||'Failed\x20to\x20read\x20file:\x20'+_0x24323e['statusText']);}return await _0x24323e['json']();},'getTaskFileDownloadUrl'(_0x169efc,_0x186316){if(!_0x169efc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x186316)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x169efc+'/files/download?path='+encodeURIComponent(_0x186316);},async 'writeFile'(_0x3c112c,_0x160270,_0x30384b){if(!_0x3c112c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x160270)throw new Error('File\x20path\x20is\x20required');if(_0x30384b===undefined)throw new Error('Content\x20is\x20required');const _0x229d10=await fetch(API_BASE+'/tasks/'+_0x3c112c+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x160270,'content':_0x30384b})});if(!_0x229d10['ok']){const _0xa57ef8=await _0x229d10['json']()['catch'](()=>({}));throw new Error(_0xa57ef8['error']||_0xa57ef8['message']||'Failed\x20to\x20write\x20file:\x20'+_0x229d10['statusText']);}return await _0x229d10['json']();},async 'uploadTaskFiles'(_0x287fa0,_0x7d0f85,_0x5113bc){if(!_0x287fa0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x7d0f85)throw new Error('Target\x20directory\x20is\x20required');if(!_0x5113bc||_0x5113bc['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x24608d=new FormData();_0x24608d['append']('targetDir',_0x7d0f85);for(const _0xd21f6c of _0x5113bc){_0x24608d['append']('files',_0xd21f6c,_0xd21f6c['name']);}const _0xfe568=await fetch(API_BASE+'/tasks/'+_0x287fa0+'/files/upload',{'method':'POST','body':_0x24608d});if(!_0xfe568['ok']){const _0x5920b9=await _0xfe568['json']()['catch'](()=>({}));throw new Error(_0x5920b9['error']||_0x5920b9['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xfe568['statusText']);}return await _0xfe568['json']();},async 'createDirectory'(_0xdd76f2,_0x4edcf3){if(!_0xdd76f2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4edcf3)throw new Error('Directory\x20path\x20is\x20required');const _0x24a3cf=await fetch(API_BASE+'/tasks/'+_0xdd76f2+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4edcf3})});if(!_0x24a3cf['ok']){const _0x4ff72a=await _0x24a3cf['json']()['catch'](()=>({}));throw new Error(_0x4ff72a['error']||_0x4ff72a['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x24a3cf['statusText']);}return await _0x24a3cf['json']();},async 'renamePath'(_0x2bf68d,_0x16ae4e,_0x36607a){if(!_0x2bf68d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16ae4e)throw new Error('Source\x20path\x20is\x20required');if(!_0x36607a)throw new Error('Destination\x20path\x20is\x20required');const _0x12a4ee=await fetch(API_BASE+'/tasks/'+_0x2bf68d+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x16ae4e,'newPath':_0x36607a})});if(!_0x12a4ee['ok']){const _0x5469a1=await _0x12a4ee['json']()['catch'](()=>({}));throw new Error(_0x5469a1['error']||_0x5469a1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x12a4ee['statusText']);}return await _0x12a4ee['json']();},async 'deleteFile'(_0x5841e7,_0x40eb83){if(!_0x5841e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40eb83)throw new Error('File\x20path\x20is\x20required');const _0x20339c=await fetch(API_BASE+'/tasks/'+_0x5841e7+'/files?path='+encodeURIComponent(_0x40eb83),{'method':'DELETE'});if(!_0x20339c['ok']){const _0x3fb68d=await _0x20339c['json']()['catch'](()=>({}));throw new Error(_0x3fb68d['error']||_0x3fb68d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x20339c['statusText']);}return await _0x20339c['json']();},async 'deleteDirectory'(_0x298308,_0x2ea275){if(!_0x298308)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ea275)throw new Error('Directory\x20path\x20is\x20required');const _0x344bf5=await fetch(API_BASE+'/tasks/'+_0x298308+'/files/directory?path='+encodeURIComponent(_0x2ea275),{'method':'DELETE'});if(!_0x344bf5['ok']){const _0x3caf54=await _0x344bf5['json']()['catch'](()=>({}));throw new Error(_0x3caf54['error']||_0x3caf54['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x344bf5['statusText']);}return await _0x344bf5['json']();},async 'discardFile'(_0xc29d1d,_0x635c39,_0x5c991f){if(!_0xc29d1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x635c39)throw new Error('File\x20path\x20is\x20required');if(!_0x5c991f)throw new Error('Repository\x20path\x20is\x20required');const _0x224b7a=await fetch(API_BASE+'/tasks/'+_0xc29d1d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x635c39,'repoPath':_0x5c991f})});if(!_0x224b7a['ok']){const _0x5e0bcb=await _0x224b7a['json']()['catch'](()=>({}));throw new Error(_0x5e0bcb['error']||_0x5e0bcb['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x224b7a['statusText']);}return await _0x224b7a['json']();},async 'followUpTask'(_0x23481f,_0x28ba02={}){if(!_0x23481f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28ba02['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3a1891,_0x3e4cd9={};if(_0x28ba02['files']&&_0x28ba02['files']['length']>0x0){const _0x4f0813=new FormData();_0x4f0813['append']('instructions',_0x28ba02['instructions']);for(const _0x1d5368 of _0x28ba02['files']){_0x4f0813['append']('attachments',_0x1d5368);}_0x3a1891=_0x4f0813;}else _0x3e4cd9['Content-Type']='application/json',_0x3a1891=JSON['stringify']({'instructions':_0x28ba02['instructions']});const _0x4645bc=await fetch(API_BASE+'/tasks/'+_0x23481f+'/follow-up',{'method':'POST','headers':_0x3e4cd9,'body':_0x3a1891});if(!_0x4645bc['ok']){const _0xcece5b=await _0x4645bc['json']()['catch'](()=>({}));throw new Error(_0xcece5b['error']||_0xcece5b['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4645bc['statusText']);}return await _0x4645bc['json']();},async 'getTaskRewindPoints'(_0x6ff0ce){if(!_0x6ff0ce)throw new Error('Task\x20ID\x20is\x20required');const _0x60dabe=await fetch(API_BASE+'/tasks/'+_0x6ff0ce+'/rewind-points');if(!_0x60dabe['ok']){const _0x5657c7=await _0x60dabe['json']()['catch'](()=>({}));throw new Error(_0x5657c7['error']||_0x5657c7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x60dabe['statusText']);}return await _0x60dabe['json']();},async 'rewindTask'(_0x7bdd78,_0x58faa7={}){if(!_0x7bdd78)throw new Error('Task\x20ID\x20is\x20required');const _0x33def1=Number['isInteger'](_0x58faa7['targetFollowUpCount'])?_0x58faa7['targetFollowUpCount']:0x0,_0x16843b={'targetFollowUpCount':_0x33def1};typeof _0x58faa7['instructions']==='string'&&_0x58faa7['instructions']['trim']()&&(_0x16843b['instructions']=_0x58faa7['instructions']['trim']());typeof _0x58faa7['rewindFiles']==='boolean'&&(_0x16843b['rewindFiles']=_0x58faa7['rewindFiles']);const _0x2b16b4=await fetch(API_BASE+'/tasks/'+_0x7bdd78+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16843b)});if(!_0x2b16b4['ok']){const _0x1c469d=await _0x2b16b4['json']()['catch'](()=>({}));throw new Error(_0x1c469d['error']||_0x1c469d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b16b4['statusText']);}return await _0x2b16b4['json']();},async 'login'(_0x423091,_0xd34bf0){const _0x2b44fd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x423091,'password':_0xd34bf0})});if(!_0x2b44fd['ok']){const _0xbaa34b=await _0x2b44fd['json']();throw new Error(_0xbaa34b['message']||'Login\x20failed');}return await _0x2b44fd['json']();},async 'logout'(){const _0x4fa8d0=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4fa8d0['ok']){const _0x1c878e=await _0x4fa8d0['json']();throw new Error(_0x1c878e['message']||'Logout\x20failed');}return await _0x4fa8d0['json']();},async 'getCurrentUser'(){const _0x58b7df=await fetch(API_BASE+'/auth/me');if(!_0x58b7df['ok'])throw new Error('Not\x20authenticated');const _0x3f0e34=await _0x58b7df['json']();return _0x3f0e34['user'];},async 'getRolesInfo'(){const _0xed7a9d=await fetch(API_BASE+'/users/roles');if(!_0xed7a9d['ok']){const _0x50ed71=await _0xed7a9d['json']();throw new Error(_0x50ed71['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0xed7a9d['json']();},async 'getUsers'(){const _0x167af7=await fetch(API_BASE+'/users');if(!_0x167af7['ok']){const _0x34641e=await _0x167af7['json']();throw new Error(_0x34641e['message']||'Failed\x20to\x20get\x20users');}return await _0x167af7['json']();},async 'getUser'(_0x1d148c){const _0x366630=await fetch(API_BASE+'/users/'+_0x1d148c);if(!_0x366630['ok']){const _0x386da8=await _0x366630['json']();throw new Error(_0x386da8['message']||'Failed\x20to\x20get\x20user');}return await _0x366630['json']();},async 'createUser'(_0x4469fd){const _0x35906a=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4469fd)});if(!_0x35906a['ok']){const _0x1e6fe1=await _0x35906a['json']();throw new Error(_0x1e6fe1['message']||'Failed\x20to\x20create\x20user');}return await _0x35906a['json']();},async 'updateUser'(_0x251eaa,_0x25a6d9){const _0x3df9f5=await fetch(API_BASE+'/users/'+_0x251eaa,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a6d9)});if(!_0x3df9f5['ok']){const _0x3f6d3d=await _0x3df9f5['json']();throw new Error(_0x3f6d3d['message']||'Failed\x20to\x20update\x20user');}return await _0x3df9f5['json']();},async 'deleteUser'(_0x1ce6fe){const _0x4eac12=await fetch(API_BASE+'/users/'+_0x1ce6fe,{'method':'DELETE'});if(!_0x4eac12['ok']){const _0x41b456=await _0x4eac12['json']();throw new Error(_0x41b456['message']||'Failed\x20to\x20delete\x20user');}return await _0x4eac12['json']();},async 'stopAllContainers'(){const _0x212899=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x381468=await _0x212899['json']()['catch'](()=>({}));if(!_0x212899['ok'])throw new Error(_0x381468['message']||_0x381468['error']||'Failed\x20to\x20stop\x20containers');return _0x381468;},async 'removeStoppedContainers'(){const _0x3c5ab1=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x18f32c=await _0x3c5ab1['json']()['catch'](()=>({}));if(!_0x3c5ab1['ok'])throw new Error(_0x18f32c['message']||_0x18f32c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x18f32c;},async 'pruneDockerResources'(){const _0x3b00c3=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4e159d=await _0x3b00c3['json']()['catch'](()=>({}));if(!_0x3b00c3['ok'])throw new Error(_0x4e159d['message']||_0x4e159d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4e159d;},async 'getUpdateSettings'(){const _0x26d908=await fetch(API_BASE+'/health/update-settings'),_0x55c7e5=await _0x26d908['json']()['catch'](()=>({}));if(!_0x26d908['ok'])throw new Error(_0x55c7e5['message']||_0x55c7e5['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x55c7e5;},async 'applyServerUpdate'(_0xf162b0){const _0x288d0c=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0xf162b0})}),_0x521e14=await _0x288d0c['json']()['catch'](()=>({}));if(!_0x288d0c['ok']){const _0x24c665=new Error(_0x521e14['message']||_0x521e14['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x521e14['output']!==undefined)_0x24c665['output']=_0x521e14['output'];if(_0x521e14['error']!==undefined)_0x24c665['commandError']=_0x521e14['error'];throw _0x24c665;}return _0x521e14;},async 'restartServer'(){const _0x3353d0=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2134f8=await _0x3353d0['json']()['catch'](()=>({}));if(!_0x3353d0['ok'])throw new Error(_0x2134f8['message']||_0x2134f8['error']||'Failed\x20to\x20restart\x20server');return _0x2134f8;},async 'createPasswordToken'(_0x438a9f,_0x130605='setup',_0x55c930=![]){const _0x19df6e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x438a9f,'type':_0x130605,'sendEmail':_0x55c930})});if(!_0x19df6e['ok']){const _0x5dfd8d=await _0x19df6e['json']();throw new Error(_0x5dfd8d['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x19df6e['json']();},async 'getEmailConfig'(){const _0x3dc1fa=await fetch(API_BASE+'/password/email-config');if(!_0x3dc1fa['ok']){const _0x4f3f64=await _0x3dc1fa['json']();throw new Error(_0x4f3f64['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3dc1fa['json']();},async 'updateTaskName'(_0x2d3d8b,_0x40aea1){const _0x11b0c6=await fetch(API_BASE+'/tasks/'+_0x2d3d8b,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x40aea1})});if(!_0x11b0c6['ok']){const _0x5b0791=await _0x11b0c6['json']();throw new Error(_0x5b0791['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x11b0c6['json']();},async 'pinTask'(_0x351c93,_0x3f10ce,_0xf3e900=null){if(!_0x351c93)throw new Error('Task\x20ID\x20is\x20required');const _0x1e5de7={'pinned':_0x3f10ce};_0xf3e900&&_0xf3e900['length']>0x0&&(_0x1e5de7['additionalTaskIds']=_0xf3e900);const _0xe6a13c=await fetch(API_BASE+'/tasks/'+_0x351c93+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e5de7)});if(!_0xe6a13c['ok']){const _0x352cb6=await _0xe6a13c['json']();throw new Error(_0x352cb6['error']||'Failed\x20to\x20pin\x20task');}return await _0xe6a13c['json']();},async 'setTaskWinner'(_0x377fc7,_0x31f1be,_0x3d06f9=[]){if(!_0x377fc7)throw new Error('Task\x20ID\x20is\x20required');const _0x3d4bda=await fetch(API_BASE+'/tasks/'+_0x377fc7+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x31f1be,'siblings':_0x3d06f9})});if(!_0x3d4bda['ok']){const _0x1574ad=await _0x3d4bda['json']();throw new Error(_0x1574ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3d4bda['json']();},async 'setTaskLoser'(_0x337684,_0x3606ba){if(!_0x337684)throw new Error('Task\x20ID\x20is\x20required');const _0x1ff393=await fetch(API_BASE+'/tasks/'+_0x337684+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3606ba})});if(!_0x1ff393['ok']){const _0x25e00d=await _0x1ff393['json']();throw new Error(_0x25e00d['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1ff393['json']();},async 'createTaskGroup'(_0x4c675c){const _0x44fe90=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c675c)});if(!_0x44fe90['ok']){const _0x599c6f=await _0x44fe90['json']();throw new Error(_0x599c6f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x44fe90['json']();},async 'getTaskGroups'(_0x31045a={}){const _0x51bd46=new URLSearchParams();if(_0x31045a['userId'])_0x51bd46['set']('userId',String(_0x31045a['userId']));if(_0x31045a['status'])_0x51bd46['set']('status',String(_0x31045a['status']));if(_0x31045a['limit'])_0x51bd46['set']('limit',String(_0x31045a['limit']));const _0x363de9=API_BASE+'/tasks/groups'+(_0x51bd46['toString']()?'?'+_0x51bd46['toString']():''),_0x2472f0=await fetch(_0x363de9);if(!_0x2472f0['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2472f0['json']();},async 'getTaskGroup'(_0x40b0d3){const _0x1dc6a9=await fetch(API_BASE+'/tasks/groups/'+_0x40b0d3);if(!_0x1dc6a9['ok']){const _0x1ad599=await _0x1dc6a9['json']();throw new Error(_0x1ad599['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x1dc6a9['json']();},async 'updateTaskGroup'(_0x9f53a3,_0x18521d,_0x53aae4){const _0x3b4e25=await fetch(API_BASE+'/tasks/'+_0x9f53a3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x18521d,'groupIndex':_0x53aae4})});if(!_0x3b4e25['ok']){const _0x39f46e=await _0x3b4e25['json']();throw new Error(_0x39f46e['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3b4e25['json']();},async 'removeTaskFromGroup'(_0x5bec8f){return this['updateTaskGroup'](_0x5bec8f,null,null);},async 'deleteTaskGroup'(_0x2d72a2,_0x487e0f=![]){const _0x86ee86=_0x487e0f?'?deleteTasks=true':'',_0x346958=await fetch(API_BASE+'/tasks/groups/'+_0x2d72a2+_0x86ee86,{'method':'DELETE'});if(!_0x346958['ok']){const _0x359455=await _0x346958['json']();throw new Error(_0x359455['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3cb548,_0x2119a1){const _0x3a6b50=await fetch(API_BASE+'/tasks/groups/'+_0x3cb548+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2119a1})});if(!_0x3a6b50['ok']){const _0x43e6c6=await _0x3a6b50['json']();throw new Error(_0x43e6c6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3a6b50['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54d33f){if(!_0x54d33f)throw new Error('Task\x20ID\x20is\x20required');const _0x45d50c=await fetch(API_BASE+'/tasks/'+_0x54d33f+'/comments');if(!_0x45d50c['ok']){const _0x16770b=await _0x45d50c['json']()['catch'](()=>({}));throw new Error(_0x16770b['error']||'Failed\x20to\x20get\x20comments');}return await _0x45d50c['json']();},async 'addComment'(_0x52ee28,_0x6f57b6){if(!_0x52ee28)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6f57b6)throw new Error('Comment\x20content\x20is\x20required');const _0x113212=await fetch(API_BASE+'/tasks/'+_0x52ee28+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x6f57b6})});if(!_0x113212['ok']){const _0x4edc86=await _0x113212['json']()['catch'](()=>({}));throw new Error(_0x4edc86['error']||'Failed\x20to\x20add\x20comment');}return await _0x113212['json']();},async 'updateComment'(_0x5de9cf,_0x341ac5,_0xcec240){if(!_0x5de9cf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x341ac5)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xcec240)throw new Error('Comment\x20content\x20is\x20required');const _0x2d5cb4=await fetch(API_BASE+'/tasks/'+_0x5de9cf+'/comments/'+_0x341ac5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xcec240})});if(!_0x2d5cb4['ok']){const _0xd96636=await _0x2d5cb4['json']()['catch'](()=>({}));throw new Error(_0xd96636['error']||'Failed\x20to\x20update\x20comment');}return await _0x2d5cb4['json']();},async 'deleteComment'(_0x1927fa,_0x52dda7){if(!_0x1927fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x52dda7)throw new Error('Comment\x20ID\x20is\x20required');const _0x203506=await fetch(API_BASE+'/tasks/'+_0x1927fa+'/comments/'+_0x52dda7,{'method':'DELETE'});if(!_0x203506['ok']){const _0x5ef27d=await _0x203506['json']()['catch'](()=>({}));throw new Error(_0x5ef27d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203506['json']();},async 'createObjective'(_0x1fb8d9){const _0x25b299={'objective':!![],'name':_0x1fb8d9['name']||'','environment':_0x1fb8d9['environment']||null,'agents':_0x1fb8d9['agents']||[],'branches':_0x1fb8d9['branches']||{},'isPinned':_0x1fb8d9['isPinned']||![],'parentObjectiveId':_0x1fb8d9['parentObjectiveId']||null,'env_vars':_0x1fb8d9['envVars']||{},'parameters':{'instructions':_0x1fb8d9['instructions']||''},'files':_0x1fb8d9['files']||[],'jira':_0x1fb8d9['jira']||null};return this['createTask'](_0x25b299);},async 'updateObjective'(_0x339c0a,_0x21cd48,_0x2aaa97=[],_0x1e8cd0=[]){let _0x83342d,_0x2a0b02={};const _0x428d5c={..._0x21cd48};_0x1e8cd0&&_0x1e8cd0['length']>0x0&&(_0x428d5c['removeAttachments']=_0x1e8cd0);if(_0x2aaa97&&_0x2aaa97['length']>0x0){const _0x30bd82=new FormData();for(const [_0x127d1b,_0x31e9ce]of Object['entries'](_0x428d5c)){if(_0x31e9ce==null)continue;typeof _0x31e9ce==='object'?_0x30bd82['append'](_0x127d1b,JSON['stringify'](_0x31e9ce)):_0x30bd82['append'](_0x127d1b,String(_0x31e9ce));}for(const _0x5088b5 of _0x2aaa97){_0x30bd82['append']('attachments',_0x5088b5);}_0x83342d=_0x30bd82;}else _0x2a0b02['Content-Type']='application/json',_0x83342d=JSON['stringify'](_0x428d5c);const _0x24c043=await fetch(API_BASE+'/tasks/'+_0x339c0a,{'method':'PATCH','headers':_0x2a0b02,'body':_0x83342d});if(!_0x24c043['ok']){const _0xf1dee3=await _0x24c043['json']();throw new Error(_0xf1dee3['error']||'Failed\x20to\x20update\x20objective');}return await _0x24c043['json']();},async 'deleteObjective'(_0x4d8753){return this['deleteTask'](_0x4d8753);},async 'launchObjective'(_0x1fcee9,_0x306f6b={}){const _0x1d683f=await fetch(API_BASE+'/tasks/'+_0x1fcee9+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306f6b)});if(!_0x1d683f['ok']){const _0x4c0bc8=await _0x1d683f['json']();throw new Error(_0x4c0bc8['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d683f['json']();},async 'getObjectiveAttachments'(_0x54d4d9){return this['getTaskAttachments'](_0x54d4d9);},async 'createJudgeTask'({environment:_0x10080e,judgeAgent:_0x52c796,groupId:_0x3d0a16,taskIds:_0x1841f1,judgeCustomInstructions:_0x3e1e90,isPinned:_0x1668e5}){const _0x2a9882=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x10080e,'judgeAgent':_0x52c796,'groupId':_0x3d0a16,'taskIds':_0x1841f1,'judgeCustomInstructions':_0x3e1e90,'isPinned':_0x1668e5})});if(!_0x2a9882['ok']){const _0x3e57bd=await _0x2a9882['json']();throw new Error(_0x3e57bd['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2a9882['json']();},async 'getJudgeTasks'(_0x2af37e){const _0xc1d7f3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2af37e));if(!_0xc1d7f3['ok']){const _0x81ea90=await _0xc1d7f3['json']();throw new Error(_0x81ea90['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xc1d7f3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5465f2,_0x3a1c60,_0x3adc75=''){const _0x297879=await fetch(API_BASE+'/tasks/'+_0x5465f2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3a1c60,'customPreamble':_0x3adc75})});if(!_0x297879['ok']){const _0xa17a04=await _0x297879['json']();throw new Error(_0xa17a04['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x297879['json']();},async 'getJiraConfig'(){const _0x5ba094=await fetch(API_BASE+'/jira/config');if(!_0x5ba094['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5ba094['json']();},async 'getJiraIssue'(_0x73365){const _0x39b1a3=await fetch(API_BASE+'/jira/issues/'+_0x73365);if(!_0x39b1a3['ok']){const _0xf5f3c8=await _0x39b1a3['json']()['catch'](()=>({}));throw new Error(_0xf5f3c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x39b1a3['statusText']);}return await _0x39b1a3['json']();},async 'searchJiraIssues'(_0x485b8f,_0x5e8e42=0x14){const _0x55be17=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x485b8f,'maxResults':_0x5e8e42})});if(!_0x55be17['ok']){const _0x2482ff=await _0x55be17['json']()['catch'](()=>({}));throw new Error(_0x2482ff['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x55be17['statusText']);}return await _0x55be17['json']();},async 'postJiraComment'(_0x411262,_0xa39e75){const _0x45bbc0=await fetch(API_BASE+'/jira/issues/'+_0x411262+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xa39e75})});if(!_0x45bbc0['ok']){const _0x3c4f8d=await _0x45bbc0['json']()['catch'](()=>({}));throw new Error(_0x3c4f8d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x45bbc0['statusText']);}return await _0x45bbc0['json']();},async 'getJiraComments'(_0x2d0ebf){const _0x3d40de=await fetch(API_BASE+'/jira/issues/'+_0x2d0ebf+'/comments');if(!_0x3d40de['ok']){const _0x5ab673=await _0x3d40de['json']()['catch'](()=>({}));throw new Error(_0x5ab673['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d40de['statusText']);}return await _0x3d40de['json']();},async 'promptParameter'({environment:_0x117ff0,command:_0x1c0e44,parser:parser='json'}){const _0x523103=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x117ff0,'command':_0x1c0e44,'parser':parser})});if(!_0x523103['ok']){const _0x391923=await _0x523103['json']()['catch'](()=>({}));throw new Error(_0x391923['message']||_0x391923['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x523103['statusText']);}return await _0x523103['json']();},async 'promptParameterStream'(_0x573469,_0x8c6319){const _0x164fca=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573469)});if(!_0x164fca['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x164fca['statusText']);const _0x2d5c9b=_0x164fca['body']['getReader'](),_0x4d5f8e=new TextDecoder();let _0x495fbb='';return new Promise((_0x447272,_0x3e5340)=>{const _0x30e465=async()=>{try{const {done:_0x34a25d,value:_0x3e46b7}=await _0x2d5c9b['read']();if(_0x34a25d)return;_0x495fbb+=_0x4d5f8e['decode'](_0x3e46b7,{'stream':!![]});const _0x11944a=_0x495fbb['split']('\x0a\x0a');_0x495fbb=_0x11944a['pop']()||'';for(const _0x47db96 of _0x11944a){if(!_0x47db96['trim']())continue;const _0x5b8938=_0x47db96['split']('\x0a');let _0x407101='message',_0x1ccc01='';for(const _0x2cfec4 of _0x5b8938){if(_0x2cfec4['startsWith']('event:'))_0x407101=_0x2cfec4['substring'](0x6)['trim']();else _0x2cfec4['startsWith']('data:')&&(_0x1ccc01=_0x2cfec4['substring'](0x5)['trim']());}if(!_0x1ccc01)continue;try{const _0x2926d6=JSON['parse'](_0x1ccc01);if(_0x407101==='progress'&&_0x8c6319)_0x8c6319(_0x2926d6['stage'],_0x2926d6['message']);else{if(_0x407101==='result'){_0x447272(_0x2926d6);return;}else{if(_0x407101==='error'){let _0xfe64ef=_0x2926d6['message']||_0x2926d6['error']||'Prompt\x20command\x20failed';_0x2926d6['rawOutput']&&(_0xfe64ef+='\x0a\x0aRaw\x20output:\x0a'+_0x2926d6['rawOutput']);_0x3e5340(new Error(_0xfe64ef));return;}}}}catch(_0x110933){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x110933),console['error']('Event\x20type:',_0x407101),console['error']('Event\x20data:',_0x1ccc01),console['error']('First\x20200\x20chars:',_0x1ccc01['substring'](0x0,0xc8)),_0x3e5340(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x110933['message']+'\x0a\x0aData:\x20'+_0x1ccc01['substring'](0x0,0x1f4)));return;}}_0x30e465();}catch(_0x293480){_0x3e5340(_0x293480);}};_0x30e465();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x59448f){const _0x5613d0=await fetch(''+API_BASE+_0x59448f);if(!_0x5613d0['ok']){const _0x48f4bb=await _0x5613d0['json']()['catch'](()=>({'error':_0x5613d0['statusText']})),_0xc5b633=new Error(_0x48f4bb['error']||_0x48f4bb['message']||_0x5613d0['statusText']);if(_0x48f4bb['detail']!==undefined)_0xc5b633['detail']=_0x48f4bb['detail'];throw _0xc5b633;}return await _0x5613d0['json']();},async 'post'(_0x4ea2ff,_0x485749){const _0x571cec=await fetch(''+API_BASE+_0x4ea2ff,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x485749)});if(!_0x571cec['ok']){const _0x421308=await _0x571cec['json']()['catch'](()=>({'error':_0x571cec['statusText']})),_0x39f8fb=new Error(_0x421308['error']||_0x421308['message']||_0x571cec['statusText']);if(_0x421308['detail']!==undefined)_0x39f8fb['detail']=_0x421308['detail'];throw _0x39f8fb;}return await _0x571cec['json']();},async 'put'(_0x2ae990,_0x1de217){const _0x26fbd0=await fetch(''+API_BASE+_0x2ae990,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1de217)});if(!_0x26fbd0['ok']){const _0x1b14e5=await _0x26fbd0['json']()['catch'](()=>({'error':_0x26fbd0['statusText']})),_0x344d64=new Error(_0x1b14e5['error']||_0x1b14e5['message']||_0x26fbd0['statusText']);if(_0x1b14e5['detail']!==undefined)_0x344d64['detail']=_0x1b14e5['detail'];throw _0x344d64;}return await _0x26fbd0['json']();},async 'delete'(_0x5f4de3,_0x47d8fd){const _0x388832={'method':'DELETE'};_0x47d8fd&&(_0x388832['headers']={'Content-Type':'application/json'},_0x388832['body']=JSON['stringify'](_0x47d8fd));const _0x3db63e=await fetch(''+API_BASE+_0x5f4de3,_0x388832);if(!_0x3db63e['ok']){const _0x16e51c=await _0x3db63e['json']()['catch'](()=>({'error':_0x3db63e['statusText']})),_0x28751a=new Error(_0x16e51c['error']||_0x16e51c['message']||_0x3db63e['statusText']);if(_0x16e51c['detail']!==undefined)_0x28751a['detail']=_0x16e51c['detail'];throw _0x28751a;}return await _0x3db63e['json']();},async 'getSkills'(){const _0x37942b=await fetch(API_BASE+'/skills');if(!_0x37942b['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x37942b['statusText']);return await _0x37942b['json']();},async 'getSkill'(_0x1e771){const _0x5a27c6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e771));if(!_0x5a27c6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5a27c6['statusText']);return await _0x5a27c6['json']();},async 'createSkill'(_0x23aebe){const _0x83dd86=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23aebe)});if(!_0x83dd86['ok']){const _0x2cb2f9=await _0x83dd86['json']()['catch'](()=>({'error':_0x83dd86['statusText']})),_0x3337ec=new Error(_0x2cb2f9['error']||_0x2cb2f9['message']||_0x83dd86['statusText']);if(_0x2cb2f9['detail']!==undefined)_0x3337ec['detail']=_0x2cb2f9['detail'];throw _0x3337ec;}return await _0x83dd86['json']();},async 'updateSkill'(_0x328c73,_0xe8ef4a){const _0x4b389e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x328c73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe8ef4a)});if(!_0x4b389e['ok']){const _0x43defd=await _0x4b389e['json']()['catch'](()=>({'error':_0x4b389e['statusText']})),_0x210724=new Error(_0x43defd['error']||_0x43defd['message']||_0x4b389e['statusText']);if(_0x43defd['detail']!==undefined)_0x210724['detail']=_0x43defd['detail'];throw _0x210724;}return await _0x4b389e['json']();},async 'deleteSkill'(_0x2d8d57){const _0x3de931=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d8d57),{'method':'DELETE'});if(!_0x3de931['ok']){const _0x958dd5=await _0x3de931['json']()['catch'](()=>({'error':_0x3de931['statusText']})),_0x13ab3b=new Error(_0x958dd5['error']||_0x958dd5['message']||_0x3de931['statusText']);if(_0x958dd5['detail']!==undefined)_0x13ab3b['detail']=_0x958dd5['detail'];throw _0x13ab3b;}return await _0x3de931['json']();},async 'getSkillFile'(_0x3e2dd8,_0xa695d4){const _0x3b60df=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3e2dd8)+'/files/'+_0xa695d4);if(!_0x3b60df['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3b60df['statusText']);return await _0x3b60df['json']();},async 'saveSkillFile'(_0x4296db,_0x3fa731,_0x4d11a3){const _0x397279=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4296db)+'/files/'+_0x3fa731,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4d11a3})});if(!_0x397279['ok']){const _0x2af86f=await _0x397279['json']()['catch'](()=>({'error':_0x397279['statusText']})),_0x4f925d=new Error(_0x2af86f['error']||_0x2af86f['message']||_0x397279['statusText']);if(_0x2af86f['detail']!==undefined)_0x4f925d['detail']=_0x2af86f['detail'];throw _0x4f925d;}return await _0x397279['json']();},async 'deleteSkillFile'(_0x4ee132,_0x49d813){const _0xa3bf95=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4ee132)+'/files/'+_0x49d813,{'method':'DELETE'});if(!_0xa3bf95['ok']){const _0xd45a12=await _0xa3bf95['json']()['catch'](()=>({'error':_0xa3bf95['statusText']})),_0x585b93=new Error(_0xd45a12['error']||_0xd45a12['message']||_0xa3bf95['statusText']);if(_0xd45a12['detail']!==undefined)_0x585b93['detail']=_0xd45a12['detail'];throw _0x585b93;}return await _0xa3bf95['json']();},async 'pullSkills'(){const _0x13d025=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x13d025['ok']){const _0x563929=await _0x13d025['json']()['catch'](()=>({'error':_0x13d025['statusText']})),_0x51b8eb=new Error(_0x563929['error']||_0x563929['message']||_0x13d025['statusText']);if(_0x563929['detail']!==undefined)_0x51b8eb['detail']=_0x563929['detail'];throw _0x51b8eb;}return await _0x13d025['json']();},async 'commitSkills'(_0x197aff,_0x47ae25={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x47ae25,_0x57f03f=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x197aff,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x57f03f['ok']){const _0x1cdaa4=await _0x57f03f['json']()['catch'](()=>({'error':_0x57f03f['statusText']})),_0x2e8964=new Error(_0x1cdaa4['error']||_0x1cdaa4['message']||_0x57f03f['statusText']);if(_0x1cdaa4['detail']!==undefined)_0x2e8964['detail']=_0x1cdaa4['detail'];throw _0x2e8964;}return await _0x57f03f['json']();},async 'discardSkillsChanges'(){const _0x31b6ca=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x31b6ca['ok']){const _0x2fed7f=await _0x31b6ca['json']()['catch'](()=>({'error':_0x31b6ca['statusText']})),_0x186e0c=new Error(_0x2fed7f['error']||_0x2fed7f['message']||_0x31b6ca['statusText']);if(_0x2fed7f['detail']!==undefined)_0x186e0c['detail']=_0x2fed7f['detail'];throw _0x186e0c;}return await _0x31b6ca['json']();},async 'getSkillCatalog'(){const _0x2fc705=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2fc705['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2fc705['statusText']);return await _0x2fc705['json']();},async 'getImportedSkillsRegistry'(){const _0x8b455c=await fetch(API_BASE+'/external-skills/registry');if(!_0x8b455c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x8b455c['statusText']);return await _0x8b455c['json']();},async 'importCatalogSkill'(_0x4cc3cf){const _0x1ee464=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4cc3cf})});if(!_0x1ee464['ok']){const _0x5d09c9=await _0x1ee464['json']()['catch'](()=>({'error':_0x1ee464['statusText']})),_0x32fd2c=new Error(_0x5d09c9['error']||_0x5d09c9['message']||_0x1ee464['statusText']);if(_0x5d09c9['detail']!==undefined)_0x32fd2c['detail']=_0x5d09c9['detail'];throw _0x32fd2c;}return await _0x1ee464['json']();},async 'importSkillFromGit'(_0x13bc5f,_0x5c7c29,_0x43ed9e='main',_0x14a4bd=null){const _0x1a5807=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13bc5f,'skillPath':_0x5c7c29,'branch':_0x43ed9e,'skillId':_0x14a4bd})});if(!_0x1a5807['ok']){const _0x3c4e29=await _0x1a5807['json']()['catch'](()=>({'error':_0x1a5807['statusText']})),_0x290c57=new Error(_0x3c4e29['error']||_0x3c4e29['message']||_0x1a5807['statusText']);if(_0x3c4e29['detail']!==undefined)_0x290c57['detail']=_0x3c4e29['detail'];throw _0x290c57;}return await _0x1a5807['json']();},async 'probeMarketplace'(_0x2cdf96,_0x4d1a89='main'){const _0x3eaed4=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2cdf96,'branch':_0x4d1a89})});if(!_0x3eaed4['ok']){const _0x4c8ac1=await _0x3eaed4['json']()['catch'](()=>({'error':_0x3eaed4['statusText']})),_0x5197b7=new Error(_0x4c8ac1['error']||_0x4c8ac1['message']||_0x3eaed4['statusText']);if(_0x4c8ac1['detail']!==undefined)_0x5197b7['detail']=_0x4c8ac1['detail'];throw _0x5197b7;}return await _0x3eaed4['json']();},async 'importMarketplaceBundle'(_0x5dba8b,_0x106fde,_0x2e939b,_0x4ad835=null){const _0x3cd568=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5dba8b,'branch':_0x106fde,'bundleId':_0x2e939b,'selectedSkills':_0x4ad835})});if(!_0x3cd568['ok']){const _0x2fe93d=await _0x3cd568['json']()['catch'](()=>({'error':_0x3cd568['statusText']})),_0x5c0540=new Error(_0x2fe93d['error']||_0x2fe93d['message']||_0x3cd568['statusText']);if(_0x2fe93d['detail']!==undefined)_0x5c0540['detail']=_0x2fe93d['detail'];throw _0x5c0540;}return await _0x3cd568['json']();},async 'importSkillFromFolder'(_0x2cb514,_0x400f2c=null){const _0x1db680=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2cb514,'skillId':_0x400f2c})});if(!_0x1db680['ok']){const _0x3c353d=await _0x1db680['json']()['catch'](()=>({'error':_0x1db680['statusText']})),_0xd40a49=new Error(_0x3c353d['error']||_0x3c353d['message']||_0x1db680['statusText']);if(_0x3c353d['detail']!==undefined)_0xd40a49['detail']=_0x3c353d['detail'];throw _0xd40a49;}return await _0x1db680['json']();},async 'importSkillFromNpm'(_0x593a13,_0x1cfec8='latest',_0x58ee79=null,_0x4a13cc=null){const _0x7dcb62=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x593a13,'version':_0x1cfec8,'skillId':_0x58ee79,'registry':_0x4a13cc})});if(!_0x7dcb62['ok']){const _0x1d3af1=await _0x7dcb62['json']()['catch'](()=>({'error':_0x7dcb62['statusText']})),_0x16056c=new Error(_0x1d3af1['error']||_0x1d3af1['message']||_0x7dcb62['statusText']);if(_0x1d3af1['detail']!==undefined)_0x16056c['detail']=_0x1d3af1['detail'];throw _0x16056c;}return await _0x7dcb62['json']();},async 'checkSkillUpdates'(_0x8c1560){const _0x123240=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x8c1560)+'/check-updates',{'method':'POST'});if(!_0x123240['ok']){const _0x4370d3=await _0x123240['json']()['catch'](()=>({'error':_0x123240['statusText']})),_0x4a8d5f=new Error(_0x4370d3['error']||_0x4370d3['message']||_0x123240['statusText']);if(_0x4370d3['detail']!==undefined)_0x4a8d5f['detail']=_0x4370d3['detail'];throw _0x4a8d5f;}return await _0x123240['json']();},async 'updateExternalSkill'(_0x1d44f9){const _0x48b42b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1d44f9)+'/update',{'method':'POST'});if(!_0x48b42b['ok']){const _0x5874b2=await _0x48b42b['json']()['catch'](()=>({'error':_0x48b42b['statusText']})),_0x1747ce=new Error(_0x5874b2['error']||_0x5874b2['message']||_0x48b42b['statusText']);if(_0x5874b2['detail']!==undefined)_0x1747ce['detail']=_0x5874b2['detail'];throw _0x1747ce;}return await _0x48b42b['json']();},async 'updateSkillFlags'(_0x14ddaa,_0x48e7ed){const _0x5639c8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x14ddaa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x48e7ed})});if(!_0x5639c8['ok']){const _0xf94cb1=await _0x5639c8['json']()['catch'](()=>({'error':_0x5639c8['statusText']})),_0x247c7a=new Error(_0xf94cb1['error']||_0xf94cb1['message']||_0x5639c8['statusText']);if(_0xf94cb1['detail']!==undefined)_0x247c7a['detail']=_0xf94cb1['detail'];throw _0x247c7a;}return await _0x5639c8['json']();},async 'removeFromImportedRegistry'(_0x775278){const _0x123725=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x775278)+'/registry',{'method':'DELETE'});if(!_0x123725['ok']){const _0x25a8cc=await _0x123725['json']()['catch'](()=>({'error':_0x123725['statusText']})),_0x25bef5=new Error(_0x25a8cc['error']||_0x25a8cc['message']||_0x123725['statusText']);if(_0x25a8cc['detail']!==undefined)_0x25bef5['detail']=_0x25a8cc['detail'];throw _0x25bef5;}return await _0x123725['json']();},async 'getTeams'(){const _0x16771e=await fetch(API_BASE+'/teams');if(!_0x16771e['ok']){const _0xc83425=await _0x16771e['json']()['catch'](()=>({'message':_0x16771e['statusText']}));throw new Error(_0xc83425['message']||'Failed\x20to\x20get\x20teams');}return await _0x16771e['json']();},async 'getTeam'(_0x5463e7){const _0x38cad8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5463e7));if(!_0x38cad8['ok']){const _0x9fd4bb=await _0x38cad8['json']()['catch'](()=>({'message':_0x38cad8['statusText']}));throw new Error(_0x9fd4bb['message']||'Failed\x20to\x20get\x20team');}return await _0x38cad8['json']();},async 'createTeam'(_0x3a2bc7){const _0x2d0cfc=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2bc7)});if(!_0x2d0cfc['ok']){const _0x52b86e=await _0x2d0cfc['json']()['catch'](()=>({'message':_0x2d0cfc['statusText']}));throw new Error(_0x52b86e['message']||'Failed\x20to\x20create\x20team');}return await _0x2d0cfc['json']();},async 'updateTeam'(_0x10b8df,_0x3f690d){const _0x5e2070=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10b8df),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f690d)});if(!_0x5e2070['ok']){const _0x436442=await _0x5e2070['json']()['catch'](()=>({'message':_0x5e2070['statusText']}));throw new Error(_0x436442['message']||'Failed\x20to\x20update\x20team');}return await _0x5e2070['json']();},async 'deleteTeam'(_0x376bf0){const _0x593b31=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x376bf0),{'method':'DELETE'});if(!_0x593b31['ok']){const _0x3a3be5=await _0x593b31['json']()['catch'](()=>({'message':_0x593b31['statusText']}));throw new Error(_0x3a3be5['message']||'Failed\x20to\x20delete\x20team');}return await _0x593b31['json']();},async 'addTeamMember'(_0x42d915,_0x4a27ef){const _0x514c7c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x42d915)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4a27ef})});if(!_0x514c7c['ok']){const _0x47ca74=await _0x514c7c['json']()['catch'](()=>({'message':_0x514c7c['statusText']}));throw new Error(_0x47ca74['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x514c7c['json']();},async 'removeTeamMember'(_0x5474ff,_0x5c9f7c){const _0x1fc331=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5474ff)+'/members/'+encodeURIComponent(_0x5c9f7c),{'method':'DELETE'});if(!_0x1fc331['ok']){const _0x5545d3=await _0x1fc331['json']()['catch'](()=>({'message':_0x1fc331['statusText']}));throw new Error(_0x5545d3['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1fc331['json']();},async 'getBindings'(_0x23e0b0={}){const _0x44112b=new URLSearchParams();if(_0x23e0b0['resource_type'])_0x44112b['set']('resource_type',_0x23e0b0['resource_type']);if(_0x23e0b0['resource_id'])_0x44112b['set']('resource_id',_0x23e0b0['resource_id']);if(_0x23e0b0['subject_type'])_0x44112b['set']('subject_type',_0x23e0b0['subject_type']);if(_0x23e0b0['subject_id'])_0x44112b['set']('subject_id',_0x23e0b0['subject_id']);const _0x42ac4f=_0x44112b['toString'](),_0x56cc49=await fetch(API_BASE+'/bindings'+(_0x42ac4f?'?'+_0x42ac4f:''));if(!_0x56cc49['ok']){const _0x16a23b=await _0x56cc49['json']()['catch'](()=>({'message':_0x56cc49['statusText']}));throw new Error(_0x16a23b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x56cc49['json']();},async 'createBinding'(_0x2659f6){const _0x4b6709=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2659f6)});if(!_0x4b6709['ok']){const _0x3a1127=await _0x4b6709['json']()['catch'](()=>({'message':_0x4b6709['statusText']}));throw new Error(_0x3a1127['message']||'Failed\x20to\x20create\x20binding');}return await _0x4b6709['json']();},async 'updateBinding'(_0x18ecba,_0x304b4f){const _0x35fb5b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x18ecba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x304b4f)});if(!_0x35fb5b['ok']){const _0xdbc691=await _0x35fb5b['json']()['catch'](()=>({'message':_0x35fb5b['statusText']}));throw new Error(_0xdbc691['message']||'Failed\x20to\x20update\x20binding');}return await _0x35fb5b['json']();},async 'deleteBinding'(_0x2ca0e1){const _0x5094b3=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2ca0e1),{'method':'DELETE'});if(!_0x5094b3['ok']){const _0x5bb9e8=await _0x5094b3['json']()['catch'](()=>({'message':_0x5094b3['statusText']}));throw new Error(_0x5bb9e8['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5094b3['json']();},async 'getRoleDefinitions'(){const _0x3fa56e=await fetch(API_BASE+'/roles');if(!_0x3fa56e['ok']){const _0x331476=await _0x3fa56e['json']()['catch'](()=>({'message':_0x3fa56e['statusText']}));throw new Error(_0x331476['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x3fa56e['json']();},async 'getRoleDefinition'(_0x2286cd){const _0x5ad435=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2286cd));if(!_0x5ad435['ok']){const _0x3b33f8=await _0x5ad435['json']()['catch'](()=>({'message':_0x5ad435['statusText']}));throw new Error(_0x3b33f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5ad435['json']();},async 'createRoleDefinition'(_0x5cd667){const _0x171490=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cd667)});if(!_0x171490['ok']){const _0x2f713f=await _0x171490['json']()['catch'](()=>({'message':_0x171490['statusText']}));throw new Error(_0x2f713f['message']||_0x2f713f['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x171490['json']();},async 'updateRoleDefinition'(_0xb21e01,_0xd47223){const _0x8f964f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb21e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd47223)});if(!_0x8f964f['ok']){const _0x366b95=await _0x8f964f['json']()['catch'](()=>({'message':_0x8f964f['statusText']}));throw new Error(_0x366b95['message']||_0x366b95['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x8f964f['json']();},async 'deleteRoleDefinition'(_0x368f2b){const _0x1a9fc0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x368f2b),{'method':'DELETE'});if(!_0x1a9fc0['ok']){const _0x8db6db=await _0x1a9fc0['json']()['catch'](()=>({'message':_0x1a9fc0['statusText']}));throw new Error(_0x8db6db['message']||_0x8db6db['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x1a9fc0['json']();},async 'getAvailablePermissions'(){const _0x563458=await fetch(API_BASE+'/roles/available-permissions');if(!_0x563458['ok']){const _0x172abc=await _0x563458['json']()['catch'](()=>({'message':_0x563458['statusText']}));throw new Error(_0x172abc['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x563458['json']();},async 'getGitProviderAllowedTeams'(_0x456ca4){const _0x5761f8=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x456ca4)+'/allowed-teams');if(!_0x5761f8['ok']){const _0x2eb67c=await _0x5761f8['json']()['catch'](()=>({'message':_0x5761f8['statusText']}));throw new Error(_0x2eb67c['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5761f8['json']();},async 'setGitProviderAllowedTeams'(_0x4b2eb6,_0x3dc918){const _0x27674f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4b2eb6)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3dc918})});if(!_0x27674f['ok']){const _0x49ea87=await _0x27674f['json']()['catch'](()=>({'message':_0x27674f['statusText']}));throw new Error(_0x49ea87['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x27674f['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 _0x173ca9=toastState['baseBottom'];toastState['toasts']['forEach'](_0x350b08=>{_0x350b08['el']['style']['bottom']=_0x173ca9+'px';const _0x34814f=_0x350b08['el']['offsetHeight']||toastState['defaultHeight'];_0x173ca9+=_0x34814f+toastState['gap'];});});}function removeToastById(_0x424197){const _0x57fc8a=toastState['toasts']['findIndex'](_0xf0ab31=>_0xf0ab31['id']===_0x424197);if(_0x57fc8a===-0x1)return;const _0x1937d2=toastState['toasts'][_0x57fc8a];if(_0x1937d2['timeoutId'])clearTimeout(_0x1937d2['timeoutId']);_0x1937d2['el']['classList']['remove']('show'),setTimeout(()=>_0x1937d2['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x57fc8a,0x1),repositionAllToasts();}function registerToast(_0x81ff68){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x81ff68),repositionAllToasts(),_0x81ff68['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(_0x412aa1){if(_0x412aa1===null||_0x412aa1===undefined)return'';return String(_0x412aa1)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x4ca0c9,_0x50c522){if(_0x4ca0c9&&typeof _0x4ca0c9==='object'&&!Array['isArray'](_0x4ca0c9))return{'code':typeof _0x4ca0c9['text']==='string'?_0x4ca0c9['text']:'','language':typeof _0x4ca0c9['lang']==='string'?_0x4ca0c9['lang']:''};return{'code':typeof _0x4ca0c9==='string'?_0x4ca0c9:'','language':typeof _0x50c522==='string'?_0x50c522:''};}function buildMermaidBlock(_0xe21a9d){const _0x4658f0=String(_0xe21a9d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4658f0))+'\x22>'+escapeHtmlValue(_0x4658f0)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x37b0df=new marked['Renderer'](),_0x1fefee=_0x37b0df['code']['bind'](_0x37b0df);return _0x37b0df['code']=function(_0x3921e5,_0x3b7ab1,..._0x3f85e4){const {code:_0x55adc5,language:_0xe34154}=getMarkdownCodeBlockPayload(_0x3921e5,_0x3b7ab1),_0x35941a=String(_0xe34154||'')['trim']()['toLowerCase']();if(_0x35941a==='mermaid')return buildMermaidBlock(_0x55adc5);const _0x233524=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x233524&&_0x35941a)try{const _0xc5a45d=_0x233524['getLanguage'](_0x35941a)?_0x35941a:'plaintext',_0x582e63=_0x233524['highlight'](_0x55adc5,{'language':_0xc5a45d})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x35941a)+'\x22>'+_0x582e63+'</code></pre>';}catch(_0x31dc0e){console['error']('Syntax\x20highlighting\x20error:',_0x31dc0e);}return _0x1fefee(_0x3921e5,_0x3b7ab1,..._0x3f85e4);},sharedMarkedRenderer=_0x37b0df,_0x37b0df;}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 _0x18eb50=window['mermaid'];if(!_0x18eb50||typeof _0x18eb50['initialize']!=='function')return _0x18eb50||null;return _0x18eb50['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x18eb50;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2ea11d,_0x25c389)=>{const _0x7764c5=()=>_0x2ea11d(configureMermaidInstance()),_0x3b3aee=()=>{mermaidLoadPromise=null,_0x25c389(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x258ffb=document['getElementById'](MERMAID_SCRIPT_ID);!_0x258ffb&&(_0x258ffb=document['createElement']('script'),_0x258ffb['id']=MERMAID_SCRIPT_ID,_0x258ffb['src']=MERMAID_SCRIPT_SRC,_0x258ffb['async']=!![],document['head']['appendChild'](_0x258ffb));if(window['mermaid']){_0x7764c5();return;}_0x258ffb['addEventListener']('load',_0x7764c5,{'once':!![]}),_0x258ffb['addEventListener']('error',_0x3b3aee,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5d52df){const _0x44ac54=_0x5d52df['getAttribute']('data-mermaid-source');if(!_0x44ac54)return null;let _0x5ef99a=_0x44ac54;try{_0x5ef99a=decodeURIComponent(_0x44ac54);}catch{}return _0x5d52df['textContent']=_0x5ef99a,_0x5d52df['removeAttribute']('data-processed'),_0x5d52df['removeAttribute']('aria-roledescription'),_0x5d52df['removeAttribute']('role'),_0x5d52df['removeAttribute']('aria-label'),_0x5ef99a;}function collectMermaidNodes(_0x2cbac7,_0x203a0f){if(!(_0x2cbac7 instanceof Element))return;_0x2cbac7['matches']('.mermaid[data-mermaid-source]')&&_0x203a0f['add'](_0x2cbac7),_0x2cbac7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1a4da5=>{_0x203a0f['add'](_0x1a4da5);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x7cd64e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x4b4d06=>setTimeout(_0x4b4d06,0x0);_0x7cd64e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x21ea65=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x21ea65);});});}function queueMermaidRender(_0x28b339){const _0x438c5c=new Set();_0x28b339 instanceof Document||_0x28b339 instanceof DocumentFragment?_0x28b339['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ca737=>_0x438c5c['add'](_0x3ca737)):collectMermaidNodes(_0x28b339,_0x438c5c);if(_0x438c5c['size']===0x0)return;_0x438c5c['forEach'](_0x3977ca=>pendingMermaidNodes['add'](_0x3977ca)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x352c4d=Array['from'](pendingMermaidNodes)['filter'](_0x86acda=>_0x86acda['isConnected']);pendingMermaidNodes['clear']();if(_0x352c4d['length']===0x0)return;const _0x2ca665=await loadMermaid();if(!_0x2ca665)return;configureMermaidInstance();const _0x215026=getMermaidTheme();for(const _0x66fc9c of _0x352c4d){const _0x2c8f43=_0x66fc9c['getAttribute']('data-mermaid-source');if(!_0x2c8f43)continue;const _0x8d7de4=_0x66fc9c['getAttribute']('data-processed')==='true';if(_0x8d7de4&&_0x66fc9c['dataset']['mermaidTheme']===_0x215026)continue;restoreMermaidSource(_0x66fc9c);try{if(typeof _0x2ca665['run']==='function')await _0x2ca665['run']({'nodes':[_0x66fc9c]});else typeof _0x2ca665['init']==='function'&&_0x2ca665['init'](undefined,[_0x66fc9c]);_0x66fc9c['dataset']['mermaidTheme']=_0x215026,delete _0x66fc9c['dataset']['mermaidError'];}catch(_0x4ac847){console['error']('Mermaid\x20render\x20failed:',_0x4ac847),restoreMermaidSource(_0x66fc9c),_0x66fc9c['dataset']['mermaidError']='true',delete _0x66fc9c['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x209c7b=>{_0x209c7b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x209c7b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c6ed5=>{_0x4c6ed5['forEach'](_0x167662=>{_0x167662['addedNodes']['forEach'](_0x2b44bc=>{_0x2b44bc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2b44bc);});});}),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'(_0x430288){const _0x3962e7=new Date(_0x430288),_0x451e49=new Date(),_0xe0732=_0x451e49-_0x3962e7,_0x33a076=Math['floor'](_0xe0732/0x3e8),_0x597b90=Math['floor'](_0x33a076/0x3c),_0x345a94=Math['floor'](_0x597b90/0x3c),_0x31705d=Math['floor'](_0x345a94/0x18);if(_0x33a076<0x3c)return'now';if(_0x597b90<0x3c)return _0x597b90+'m\x20ago';if(_0x345a94<0x18)return _0x345a94+'h\x20ago';return _0x31705d+'d\x20ago';},'getStatusIcon'(_0x13801a){switch(_0x13801a){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x8dad52){switch(_0x8dad52){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'(_0x1c5885,_0x3f21b5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x13350c={};_0x13350c['text/plain']=new Blob([_0x1c5885],{'type':'text/plain'});_0x3f21b5&&(_0x13350c['text/html']=new Blob([_0x3f21b5],{'type':'text/html'}));const _0x5b5a24=new ClipboardItem(_0x13350c);return await navigator['clipboard']['write']([_0x5b5a24]),!![];}catch(_0x3d1372){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3d1372);}try{const _0x2266c3=_0x3ded84=>{_0x3ded84['preventDefault'](),_0x3ded84['clipboardData']['setData']('text/plain',_0x1c5885),_0x3f21b5&&_0x3ded84['clipboardData']['setData']('text/html',_0x3f21b5);};document['addEventListener']('copy',_0x2266c3);const _0x256c86=document['execCommand']('copy');document['removeEventListener']('copy',_0x2266c3);if(_0x256c86)return!![];}catch(_0x1c00b4){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1c00b4);}try{const _0x40f87f=document['createElement']('textarea');_0x40f87f['value']=_0x1c5885,_0x40f87f['style']['position']='fixed',_0x40f87f['style']['opacity']='0',_0x40f87f['style']['pointerEvents']='none',document['body']['appendChild'](_0x40f87f),_0x40f87f['select']();const _0x57d5be=document['execCommand']('copy');return document['body']['removeChild'](_0x40f87f),_0x57d5be;}catch(_0x4ed0e2){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4ed0e2),![];}},'showToast'(_0x4a92e8,_0x5adc65='info'){const _0x55476b=getNextToastId(),_0x21f52a=document['createElement']('div');_0x21f52a['className']='toast\x20toast-'+_0x5adc65,_0x21f52a['textContent']=_0x4a92e8,_0x21f52a['dataset']['toastId']=_0x55476b,document['body']['appendChild'](_0x21f52a);const _0x15e9f5=_0x5adc65==='error'?0x2710:0xbb8,_0x4e131c=setTimeout(()=>{removeToastById(_0x55476b);},_0x15e9f5),_0x15103b={'id':_0x55476b,'el':_0x21f52a,'timeoutId':_0x4e131c};return registerToast(_0x15103b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x21f52a['classList']['add']('show');});}),_0x55476b;},'showError'(_0x2f3dc1){console['error'](_0x2f3dc1);const _0x8c7bce=typeof _0x2f3dc1==='string'?_0x2f3dc1:_0x2f3dc1['message']||'An\x20error\x20occurred';this['showToast'](_0x8c7bce,'error');},'showSuccess'(_0x342635){this['showToast'](_0x342635,'success');},'capitalize'(_0x20b1d0){if(!_0x20b1d0)return'';return _0x20b1d0['charAt'](0x0)['toUpperCase']()+_0x20b1d0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2b0411){return escapeHtmlValue(_0x2b0411);},'ansiToHtml'(_0x2bb8e0){if(_0x2bb8e0===null||_0x2bb8e0===undefined)return'';let _0x573df8=this['escapeHtml'](_0x2bb8e0);const _0xa2e3e7={'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'},_0x13d3fc={'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 _0x5e6aa6=0x0;return _0x573df8=_0x573df8['replace'](/\x1b\[([0-9;]*)m/g,(_0x525f75,_0x54dd4f)=>{if(!_0x54dd4f||_0x54dd4f==='0'){const _0x505ca2='</span>'['repeat'](_0x5e6aa6);return _0x5e6aa6=0x0,_0x505ca2;}const _0x203bdf=_0x54dd4f['split'](';'),_0x2a073a=[];for(const _0x1bdfb4 of _0x203bdf){if(_0x1bdfb4==='1')_0x2a073a['push']('font-weight:bold');else{if(_0x1bdfb4==='2')_0x2a073a['push']('opacity:0.7');else{if(_0x1bdfb4==='3')_0x2a073a['push']('font-style:italic');else{if(_0x1bdfb4==='4')_0x2a073a['push']('text-decoration:underline');else{if(_0x1bdfb4==='9')_0x2a073a['push']('text-decoration:line-through');else{if(_0xa2e3e7[_0x1bdfb4])_0x2a073a['push']('color:'+_0xa2e3e7[_0x1bdfb4]);else{if(_0x13d3fc[_0x1bdfb4])_0x2a073a['push']('background-color:'+_0x13d3fc[_0x1bdfb4]);}}}}}}}if(_0x2a073a['length']>0x0)return _0x5e6aa6++,'<span\x20style=\x22'+_0x2a073a['join'](';')+'\x22>';return'';}),_0x573df8+='</span>'['repeat'](_0x5e6aa6),_0x573df8=_0x573df8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x58bd3b,_0x16273c)=>{if(!_0x16273c||_0x16273c==='0')return'';const _0x486298=_0x16273c['split'](';'),_0x5bcd41=[];for(const _0x2113d9 of _0x486298){if(_0x2113d9==='1')_0x5bcd41['push']('font-weight:bold');else{if(_0xa2e3e7[_0x2113d9])_0x5bcd41['push']('color:'+_0xa2e3e7[_0x2113d9]);else{if(_0x13d3fc[_0x2113d9])_0x5bcd41['push']('background-color:'+_0x13d3fc[_0x2113d9]);}}}if(_0x5bcd41['length']>0x0)return'<span\x20style=\x22'+_0x5bcd41['join'](';')+'\x22>';return'';}),_0x573df8;},'showModal'({title:_0xe1df3a,content:_0x5e7d66,buttons:buttons=[]}){const _0x94f9b='\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'](_0xe1df3a)+'</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'+_0x5e7d66+'\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']((_0x7ae3e1,_0x36a6fd)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x7ae3e1['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x36a6fd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x7ae3e1['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',_0x58bd74=document['createElement']('div');_0x58bd74['id']='utils-modal',_0x58bd74['className']='modal',_0x58bd74['innerHTML']=_0x94f9b,document['body']['appendChild'](_0x58bd74);const _0x5f29df=document['getElementById']('utils-modal-close');_0x5f29df&&_0x5f29df['addEventListener']('click',()=>this['hideModal']());const _0x25cee7=_0x58bd74['querySelectorAll']('[data-btn-index]');_0x25cee7['forEach'](_0x3edc80=>{const _0x4e96c0=parseInt(_0x3edc80['dataset']['btnIndex']);buttons[_0x4e96c0]?.['onClick']&&_0x3edc80['addEventListener']('click',buttons[_0x4e96c0]['onClick']);});const _0x4182a2=document['getElementById']('utils-modal-overlay');_0x4182a2&&_0x4182a2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x15fad8=document['getElementById']('utils-modal');_0x15fad8&&_0x15fad8['remove']();},'parseKeyValuePairs'(_0x1e0ca5){const _0x4b097a={};if(!_0x1e0ca5)return _0x4b097a;return _0x1e0ca5['split'](/\r?\n/)['map'](_0x24f356=>_0x24f356['trim']())['filter'](Boolean)['forEach'](_0x5ca86b=>{const _0x2e9ec0=_0x5ca86b['indexOf']('=');if(_0x2e9ec0>0x0){const _0x55ef19=_0x5ca86b['slice'](0x0,_0x2e9ec0)['trim'](),_0x5decf0=_0x5ca86b['slice'](_0x2e9ec0+0x1)['trim']();if(_0x55ef19)_0x4b097a[_0x55ef19]=_0x5decf0;}}),_0x4b097a;},'debounce'(_0x15682b,_0x2ddfdf=0xfa){let _0x490e15=null;return(..._0x126d46)=>{clearTimeout(_0x490e15),_0x490e15=setTimeout(()=>_0x15682b['apply'](this,_0x126d46),_0x2ddfdf);};},'formatTimestamp'(_0x1ff68c){if(!_0x1ff68c)return'N/A';const _0x51a747=new Date(_0x1ff68c);return _0x51a747['toLocaleDateString']()+'\x20'+_0x51a747['toLocaleTimeString']();},'getQueryParams'(){const _0x484643=new URLSearchParams(window['location']['search']),_0x367342={};for(const [_0x1bcede,_0x5daced]of _0x484643){_0x367342[_0x1bcede]=_0x5daced;}return _0x367342;},'formatDuration'(_0x8a76eb,_0x1a4c9f){if(!_0x8a76eb)return'N/A';const _0x4b49f4=new Date(_0x8a76eb),_0x38bf28=_0x1a4c9f?new Date(_0x1a4c9f):new Date(),_0x4ec168=_0x38bf28-_0x4b49f4;if(_0x4ec168<0x0)return'0s';const _0x54b5fb=Math['floor'](_0x4ec168/0x3e8),_0x52d5eb=Math['floor'](_0x54b5fb/0x3c),_0x96e954=Math['floor'](_0x52d5eb/0x3c),_0x319c08=Math['floor'](_0x96e954/0x18);if(_0x54b5fb<0x3c)return _0x54b5fb+'s';if(_0x52d5eb<0x3c)return _0x52d5eb+'m\x20'+_0x54b5fb%0x3c+'s';if(_0x96e954<0x18)return _0x96e954+'h\x20'+_0x52d5eb%0x3c+'m\x20'+_0x54b5fb%0x3c+'s';return _0x319c08+'d\x20'+_0x96e954%0x18+'h\x20'+_0x52d5eb%0x3c+'m';},'renderMarkdown'(_0x415f44,_0x3b9406={}){if(!_0x415f44)return'';_0x415f44=this['rewriteAttachmentLinks'](_0x415f44,_0x3b9406),_0x415f44=this['rewriteColorSyntax'](_0x415f44);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x415f44);}catch(_0x441d62){return console['error']('Markdown\x20parsing\x20error:',_0x441d62),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);}},'rewriteAttachmentLinks'(_0x40e751,_0x41bc7d={}){const _0xc340ad=typeof _0x41bc7d['resolveAttachmentUrl']==='function'?_0x41bc7d['resolveAttachmentUrl']:_0x41bc7d['taskId']?_0x3f46af=>API_BASE+'/tasks/'+_0x41bc7d['taskId']+'/attachments/'+encodeURIComponent(_0x3f46af):null;if(!_0xc340ad)return _0x40e751;return String(_0x40e751)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x30b25d,_0x434d3b)=>{const _0x3eab92=String(_0x434d3b||'')['trim']();if(!_0x3eab92)return _0x30b25d;let _0x51a074=_0x3eab92;try{_0x51a074=decodeURIComponent(_0x3eab92);}catch{}const _0x527030=_0xc340ad(_0x51a074);if(!_0x527030)return _0x30b25d;return']('+_0x527030+')';});},'rewriteColorSyntax'(_0x58862d){if(!_0x58862d)return _0x58862d;return String(_0x58862d)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x23252f,_0x30d0b1,_0x143e61)=>{const _0x177740=this['rewriteColorSyntax'](_0x143e61);return'<span\x20style=\x22color:\x20'+_0x30d0b1+'\x22>'+_0x177740+'</span>';});},'renderMarkdownFallback'(_0x37a477,_0x25e9a0={}){if(!_0x37a477)return'';_0x37a477=_0x37a477['replace'](/\r\n/g,'\x0a'),_0x37a477=_0x37a477['replace'](/\r/g,'\x0a'),_0x37a477=this['rewriteAttachmentLinks'](_0x37a477,_0x25e9a0);let _0x360bf6=this['escapeHtml'](_0x37a477);return _0x360bf6=_0x360bf6['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x360bf6=_0x360bf6['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x360bf6=_0x360bf6['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x360bf6=_0x360bf6['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x360bf6=_0x360bf6['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x360bf6=_0x360bf6['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x360bf6=_0x360bf6['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x360bf6=_0x360bf6['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x360bf6=_0x360bf6['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x360bf6=_0x360bf6['replace'](/\n\n/g,'</p><p>'),_0x360bf6=_0x360bf6['replace'](/\n/g,'<br>'),'<p>'+_0x360bf6+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1f779a=new Uint8Array(0x10);crypto['getRandomValues'](_0x1f779a),_0x1f779a[0x6]=_0x1f779a[0x6]&0xf|0x40,_0x1f779a[0x8]=_0x1f779a[0x8]&0x3f|0x80;const _0x366f4e=Array['from'](_0x1f779a,_0x27a581=>_0x27a581['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x366f4e['slice'](0x0,0x8)+'-'+_0x366f4e['slice'](0x8,0xc)+'-'+_0x366f4e['slice'](0xc,0x10)+'-'+_0x366f4e['slice'](0x10,0x14)+'-'+_0x366f4e['slice'](0x14);}};export class CustomSelect{constructor(_0x1332d4,_0x424cb3={}){this['nativeSelect']=_0x1332d4,this['options']=_0x424cb3,this['isOpen']=![],this['selectedValue']=_0x1332d4['value']||'',this['searchable']=_0x424cb3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x19ed63=document['createElement']('div');_0x19ed63['className']='custom-select';const _0x27163b=document['createElement']('div');_0x27163b['className']='custom-select-trigger',_0x27163b['setAttribute']('tabindex','0'),_0x27163b['setAttribute']('role','button'),_0x27163b['setAttribute']('aria-haspopup','listbox');const _0x2bac04=document['createElement']('span');_0x2bac04['className']='custom-select-trigger-text';const _0x5b10d6=document['createElement']('span');_0x5b10d6['className']='custom-select-arrow',_0x5b10d6['textContent']='▼',_0x27163b['appendChild'](_0x2bac04),_0x27163b['appendChild'](_0x5b10d6);const _0x52e8f1=document['createElement']('div');_0x52e8f1['className']='custom-select-dropdown',_0x52e8f1['setAttribute']('role','listbox');if(this['searchable']){const _0x18010=document['createElement']('div');_0x18010['className']='custom-select-search';const _0x16e781=document['createElement']('input');_0x16e781['type']='text',_0x16e781['className']='custom-select-search-input',_0x16e781['placeholder']='Type\x20to\x20search...',_0x16e781['setAttribute']('aria-label','Search\x20options'),_0x16e781['addEventListener']('input',_0x1fdd8a=>{this['searchQuery']=_0x1fdd8a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x16e781['addEventListener']('keydown',_0x303078=>{if(_0x303078['key']==='Escape')_0x303078['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x303078['key']==='Enter'){_0x303078['preventDefault'](),_0x303078['stopPropagation']();const _0x545f84=_0x52e8f1['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x545f84){const _0x1f8f2b=_0x545f84['getAttribute']('data-value');this['select'](_0x1f8f2b);}}}}),_0x18010['appendChild'](_0x16e781),_0x52e8f1['appendChild'](_0x18010),this['searchInput']=_0x16e781;}const _0xe3a238=document['createElement']('div');_0xe3a238['className']='custom-select-options',_0x52e8f1['appendChild'](_0xe3a238),_0x19ed63['appendChild'](_0x27163b),_0x19ed63['appendChild'](_0x52e8f1),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x19ed63,this['nativeSelect']),this['wrapper']=_0x19ed63,this['trigger']=_0x27163b,this['triggerText']=_0x2bac04,this['dropdown']=_0x52e8f1,this['optionsContainer']=_0xe3a238,_0x27163b['addEventListener']('click',()=>this['toggle']()),_0x27163b['addEventListener']('keydown',_0x286d93=>this['handleKeydown'](_0x286d93)),document['addEventListener']('click',_0x14172d=>{!_0x19ed63['contains'](_0x14172d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0xeeaad9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0xeeaad9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0xded45a=new MutationObserver(()=>{this['updateDisabledState']();});_0xded45a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2d9fdd=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2d9fdd['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x2c75a5=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x2c75a5),this['trigger']['setAttribute']('aria-disabled',_0x2c75a5?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x2c75a5?'-1':'0'),_0x2c75a5&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x1c8c49=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x543112=_0x1c8c49['filter'](_0x19fc96=>!_0x19fc96['disabled']&&!_0x19fc96['hidden']);_0x1c8c49['forEach']((_0x2d607d,_0x2bd1da)=>{const _0x737125=document['createElement']('div');_0x737125['className']='custom-select-option',_0x737125['textContent']=_0x2d607d['textContent'],_0x737125['setAttribute']('data-value',_0x2d607d['value']),_0x737125['setAttribute']('data-index',_0x2bd1da),_0x737125['setAttribute']('role','option'),_0x2d607d['disabled']?_0x737125['classList']['add']('disabled'):_0x737125['addEventListener']('click',()=>this['select'](_0x2d607d['value'])),_0x2d607d['value']===this['selectedValue']&&_0x737125['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x737125),this['allOptions']['push']({'element':_0x737125,'text':_0x2d607d['textContent']['toLowerCase'](),'value':_0x2d607d['value'],'disabled':_0x2d607d['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3db754=this['searchInput']['parentElement'];_0x543112['length']>0x3?_0x3db754['style']['display']='':_0x3db754['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3057a7=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3ee95c=>{if(!_0x3057a7||_0x3ee95c['disabled'])_0x3ee95c['element']['style']['display']='';else{const _0x41c979=_0x3ee95c['text']['includes'](_0x3057a7);_0x3ee95c['element']['style']['display']=_0x41c979?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x527b0c){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x527b0c,this['nativeSelect']['value']=_0x527b0c;const _0x1ca8a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ca8a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4335af=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4335af&&(this['triggerText']['textContent']=_0x4335af['textContent'],_0x4335af['disabled']||_0x4335af['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x183756=>{_0x183756['getAttribute']('data-value')===this['selectedValue']?_0x183756['classList']['add']('selected'):_0x183756['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 _0x265c20=window['getComputedStyle'](this['dropdown']);if(_0x265c20['position']==='fixed'){const _0x374695=this['trigger']['getBoundingClientRect'](),_0x4e5893=parseInt(_0x265c20['maxHeight'])||0xc8,_0x6d5ca1=window['innerHeight'],_0x317ad4=_0x6d5ca1-_0x374695['bottom'],_0x7b8127=_0x374695['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x34a7f1;_0x317ad4<_0x4e5893&&_0x7b8127>_0x317ad4?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x6d5ca1-_0x374695['top']+'px',_0x34a7f1=Math['min'](_0x4e5893,_0x7b8127-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374695['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x34a7f1=Math['min'](_0x4e5893,_0x317ad4-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px');if(this['optionsContainer']){let _0x28b6a1=_0x34a7f1;if(this['searchInput']){const _0x2d4470=this['searchInput']['parentElement'];_0x2d4470&&(_0x28b6a1-=_0x2d4470['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x28b6a1)+'px';}this['dropdown']['style']['left']=_0x374695['left']+'px',this['dropdown']['style']['width']=_0x374695['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x37112b=this['searchInput']['parentElement'];_0x37112b&&_0x37112b['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'](_0x55670e){if(this['nativeSelect']['disabled'])return;if(_0x55670e['key']==='Enter'||_0x55670e['key']==='\x20')_0x55670e['preventDefault'](),this['toggle']();else _0x55670e['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c093a='\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',_0x1c093a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1cf013=document['getElementById']('confirm-dialog-close'),_0x21bb3d=document['getElementById']('confirm-dialog-cancel'),_0x15ac17=document['getElementById']('confirm-dialog-confirm'),_0x1f2b32=this['_modal']['querySelector']('.modal-overlay');_0x1cf013['addEventListener']('click',()=>this['_resolve'](![])),_0x21bb3d['addEventListener']('click',()=>this['_resolve'](![])),_0x15ac17['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2b32['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x38e338=>{if(_0x38e338['key']==='Escape')_0x38e338['preventDefault'](),this['_resolve'](![]);else _0x38e338['key']==='Enter'&&(_0x38e338['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4cb5ed,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x38c9f6=>{this['_resolvePromise']=_0x38c9f6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4cb5ed;const _0x3b7483=document['getElementById']('confirm-dialog-cancel'),_0x267816=document['getElementById']('confirm-dialog-confirm');_0x3b7483['textContent']=cancelText,_0x267816['textContent']=confirmText,_0x267816['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x267816['focus']();});},'_resolve'(_0xcaad46){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0xcaad46),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1521b1,_0x4c1b34={}){this['container']=_0x1521b1,this['options']={'placeholder':_0x4c1b34['placeholder']||'Type\x20to\x20search...','maxItems':_0x4c1b34['maxItems']||0x64,'loadItems':_0x4c1b34['loadItems']||(async()=>[]),'renderItem':_0x4c1b34['renderItem']||(_0x59796c=>({'primary':String(_0x59796c),'secondary':''})),'onSelect':_0x4c1b34['onSelect']||(()=>{}),'filterItems':_0x4c1b34['filterItems']||null,'getItemValue':_0x4c1b34['getItemValue']||(_0x111d81=>_0x111d81),'sortItems':_0x4c1b34['sortItems']||null,'debounceMs':_0x4c1b34['debounceMs']||0xc8,'minCharsForSearch':_0x4c1b34['minCharsForSearch']||0x0,'emptyMessage':_0x4c1b34['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4c1b34['loadingMessage']||'Loading...','preload':_0x4c1b34['preload']!==![],'searchMode':_0x4c1b34['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',_0x55485e=>this['onBlur'](_0x55485e)),this['input']['addEventListener']('input',_0x5d7cd4=>this['onInput'](_0x5d7cd4)),this['input']['addEventListener']('keydown',_0x2263c6=>this['onKeydown'](_0x2263c6)),this['clearBtn']['addEventListener']('mousedown',_0x5b52c6=>{_0x5b52c6['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x3dc53f=>{_0x3dc53f['preventDefault']();}),document['addEventListener']('click',_0x35d26e=>{!this['wrapper']['contains'](_0x35d26e['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(_0x3d7bb6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x3d7bb6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x488e7e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x52852d){const _0x1acc6e=_0x52852d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1acc6e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1acc6e):this['loadAndShow'](_0x1acc6e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x699b0e){switch(_0x699b0e['key']){case'ArrowDown':_0x699b0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x699b0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x699b0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x699b0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4476ba){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x280f80=this['selectedIndex']+_0x4476ba;if(_0x280f80>=0x0&&_0x280f80<this['filteredItems']['length']){this['selectedIndex']=_0x280f80,this['updateSelectionHighlight']();const _0x35a195=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x35a195[this['selectedIndex']]&&_0x35a195[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4a7846=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a7846['forEach']((_0xb3c820,_0x12ee58)=>{_0xb3c820['classList']['toggle']('keyboard-selected',_0x12ee58===this['selectedIndex']);});}async['loadAndShow'](_0x156c29){this['showLoading']();try{const _0x193c64=await this['options']['loadItems'](_0x156c29);if(this['options']['searchMode']==='server'){let _0x50b4ce=_0x193c64;this['options']['sortItems']&&(_0x50b4ce=this['options']['sortItems']([..._0x193c64]));this['filteredItems']=_0x50b4ce;const _0x4c1181=this['filteredItems']['length']>=this['options']['maxItems'];_0x4c1181&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4c1181),this['open']();}else this['allItems']=_0x193c64,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x156c29);}catch(_0x201c38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x201c38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x10c488){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x10c488):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x39b4d1=this['filteredItems']['length']>=this['options']['maxItems'];_0x39b4d1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x39b4d1),this['open']();}['renderItems'](_0x5de065){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']((_0x41f240,_0x295cd6)=>{const _0xf20c4c=document['createElement']('div');_0xf20c4c['className']='autocomplete-select-item',_0xf20c4c['setAttribute']('role','option'),_0xf20c4c['setAttribute']('data-index',_0x295cd6);const _0x2e1fd1=this['options']['renderItem'](_0x41f240);let _0x3f3bf2='';_0x2e1fd1['icon']&&(_0x3f3bf2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x2e1fd1['iconClass']||'')+'\x22>'+_0x2e1fd1['icon']+'</span>'),_0xf20c4c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3f3bf2+'\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'](_0x2e1fd1['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2e1fd1['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x2e1fd1['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf20c4c['addEventListener']('click',()=>{this['selectItem'](_0x41f240);}),_0xf20c4c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x295cd6,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf20c4c);}),_0x5de065?(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'](_0x2a1471){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2a1471)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x21fe5e){this['selectedItem']=_0x21fe5e;const _0x568d95=this['options']['renderItem'](_0x21fe5e);this['input']['value']=_0x568d95['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x21fe5e);}['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'](_0x282266){if(_0x282266){this['selectedItem']=_0x282266;const _0x58bd76=this['options']['renderItem'](_0x282266);this['input']['value']=_0x58bd76['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4ddf76){this['allItems']=_0x4ddf76,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'](_0xbb4820){this['input']['placeholder']=_0xbb4820;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xea75db=null){const _0x43627e=document['getElementById']('admin-menu-container'),_0x23e29c=document['getElementById']('admin-menu-btn'),_0x587a7a=document['getElementById']('admin-menu');if(!_0x43627e||!_0x23e29c||!_0x587a7a)return;try{!_0xea75db&&(_0xea75db=await API['getCurrentUser']());if(_0xea75db){const _0xc6924c=window['Permissions'],_0x8e5df5=_0xc6924c['hasServerPermission'](_0xea75db,'*')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:manage')||_0xc6924c['hasServerPermission'](_0xea75db,'users:create')||_0xc6924c['hasTeamPermission'](_0xea75db,'teams:manage')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:view_details');if(!_0x8e5df5)return;_0x43627e['hidden']=![];if(!_0xc6924c['hasServerPermission'](_0xea75db,'*')){const _0x559eb3=_0x587a7a['querySelectorAll']('.admin-menu-item');_0x559eb3['forEach'](_0x4425ed=>{const _0x1cf113=_0x4425ed['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1cf113==='Users'&&!_0xc6924c['hasServerPermission'](_0xea75db,'users:create')&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Skills'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Settings'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Administration'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Git\x20History'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Roles'&&(_0x4425ed['hidden']=!![]);});}_0x23e29c['addEventListener']('click',_0x29a5de=>{_0x29a5de['stopPropagation']();const _0x3ed0cd=document['getElementById']('actions-menu');if(_0x3ed0cd)_0x3ed0cd['hidden']=!![];_0x587a7a['hidden']=!_0x587a7a['hidden'];}),document['addEventListener']('click',_0x349e02=>{!_0x587a7a['hidden']&&!_0x23e29c['contains'](_0x349e02['target'])&&!_0x587a7a['contains'](_0x349e02['target'])&&(_0x587a7a['hidden']=!![]);}),document['addEventListener']('keydown',_0x18b65c=>{_0x18b65c['key']==='Escape'&&!_0x587a7a['hidden']&&(_0x587a7a['hidden']=!![]);});}}catch(_0x510eb5){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x510eb5['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|