@profoundlogic/coderflow-server 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/memory-utils.js +1 -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-container-init.js +1 -1
- package/dist/lib/task-context-usage.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 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0xbabc90=window['location']['pathname'],_0x2c36a7=_0xbabc90['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x2c36a7)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x2c36a7[0x1]),_0x2c36a7[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xf38d32={}){const _0x2eada3=new URLSearchParams();_0xf38d32['userId']&&_0x2eada3['set']('userId',String(_0xf38d32['userId']));_0xf38d32['automation']&&_0x2eada3['set']('automation',String(_0xf38d32['automation']));const _0x323986=API_BASE+'/tasks/stats'+(_0x2eada3['toString']()?'?'+_0x2eada3['toString']():''),_0x5687d9=await fetch(_0x323986);if(!_0x5687d9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5687d9['statusText']);return await _0x5687d9['json']();},async 'getTasks'(_0x30bc3f={}){const _0x37ae1a=new URLSearchParams();_0x30bc3f['status']&&_0x37ae1a['set']('status',String(_0x30bc3f['status']));_0x30bc3f['environment']&&_0x37ae1a['set']('environment',String(_0x30bc3f['environment']));_0x30bc3f['automation']&&_0x37ae1a['set']('automation',String(_0x30bc3f['automation']));if(_0x30bc3f['include']){const _0x3a2c7d=Array['isArray'](_0x30bc3f['include'])?_0x30bc3f['include']['join'](','):String(_0x30bc3f['include']);_0x3a2c7d&&_0x37ae1a['set']('include',_0x3a2c7d);}_0x30bc3f['filter']&&_0x37ae1a['set']('filter',String(_0x30bc3f['filter']));_0x30bc3f['page']&&_0x37ae1a['set']('page',String(_0x30bc3f['page']));_0x30bc3f['limit']&&_0x37ae1a['set']('limit',String(_0x30bc3f['limit']));_0x30bc3f['userId']&&_0x37ae1a['set']('userId',String(_0x30bc3f['userId']));_0x30bc3f['search']&&_0x37ae1a['set']('search',String(_0x30bc3f['search']));_0x30bc3f['includeChildTasks']&&_0x37ae1a['set']('includeChildTasks','true');const _0x5c388d=API_BASE+'/tasks'+(_0x37ae1a['toString']()?'?'+_0x37ae1a['toString']():''),_0x4f12f7=await fetch(_0x5c388d);if(!_0x4f12f7['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4f12f7['statusText']);return await _0x4f12f7['json']();},async 'getAutomations'(_0x1eeb71={}){const _0x235902=new URLSearchParams();_0x1eeb71['environment']&&_0x235902['set']('environment',String(_0x1eeb71['environment']));const _0x9f0410=await fetch(API_BASE+'/api/automations'+(_0x235902['toString']()?'?'+_0x235902['toString']():''));if(!_0x9f0410['ok']){const _0x1b4924=await _0x9f0410['json']()['catch'](()=>({}));throw new Error(_0x1b4924['message']||_0x1b4924['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x9f0410['statusText']);}return await _0x9f0410['json']();},async 'getAutomation'(_0x7d699d){const _0x3a831b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7d699d));if(!_0x3a831b['ok']){const _0x1b8531=await _0x3a831b['json']()['catch'](()=>({}));throw new Error(_0x1b8531['message']||_0x1b8531['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3a831b['statusText']);}return await _0x3a831b['json']();},async 'createAutomation'(_0x54c520){const _0x31ea93=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54c520||{})});if(!_0x31ea93['ok']){const _0x3772c1=await _0x31ea93['json']()['catch'](()=>({}));throw new Error(_0x3772c1['message']||_0x3772c1['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x31ea93['statusText']);}return await _0x31ea93['json']();},async 'updateAutomation'(_0x9c8e35,_0x46a99b){const _0x53cd12=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x9c8e35),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46a99b||{})});if(!_0x53cd12['ok']){const _0x5a5a66=await _0x53cd12['json']()['catch'](()=>({}));throw new Error(_0x5a5a66['message']||_0x5a5a66['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x53cd12['statusText']);}return await _0x53cd12['json']();},async 'deleteAutomation'(_0x36cbc1){const _0x1a7153=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x36cbc1),{'method':'DELETE'});if(!_0x1a7153['ok']){const _0xd75c74=await _0x1a7153['json']()['catch'](()=>({}));throw new Error(_0xd75c74['message']||_0xd75c74['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1a7153['statusText']);}return await _0x1a7153['json']();},async 'triggerAutomation'(_0x5102ed){const _0x42cb28=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5102ed)+'/trigger',{'method':'POST'});if(!_0x42cb28['ok']){const _0x17a1d0=await _0x42cb28['json']()['catch'](()=>({}));throw new Error(_0x17a1d0['message']||_0x17a1d0['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x42cb28['statusText']);}return await _0x42cb28['json']();},async 'setAutomationEnabled'(_0x468088,_0x8317e2){const _0x10c757=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x468088)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x8317e2})});if(!_0x10c757['ok']){const _0x2dd1d0=await _0x10c757['json']()['catch'](()=>({}));throw new Error(_0x2dd1d0['message']||_0x2dd1d0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x10c757['statusText']);}return await _0x10c757['json']();},async 'getAutomationHistory'(_0x31edc8,_0x410140=0x32){const _0x21c1da=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31edc8)+'/history?limit='+encodeURIComponent(String(_0x410140)));if(!_0x21c1da['ok']){const _0x52845d=await _0x21c1da['json']()['catch'](()=>({}));throw new Error(_0x52845d['message']||_0x52845d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x21c1da['statusText']);}return await _0x21c1da['json']();},async 'getTask'(_0x5e0c9a,_0x31f84b={}){const _0x29f198=new URLSearchParams();if(_0x31f84b['include']){const _0x3080ad=Array['isArray'](_0x31f84b['include'])?_0x31f84b['include']['join'](','):String(_0x31f84b['include']);if(_0x3080ad)_0x29f198['set']('include',_0x3080ad);}const _0x246edd=await fetch(API_BASE+'/tasks/'+_0x5e0c9a+(_0x29f198['toString']()?'?'+_0x29f198['toString']():''));if(!_0x246edd['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x246edd['statusText']);return await _0x246edd['json']();},async 'getTaskResults'(_0x49b015){const _0x36bd93=await fetch(API_BASE+'/tasks/'+_0x49b015+'/results');if(!_0x36bd93['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x36bd93['statusText']);return await _0x36bd93['json']();},async 'getTaskPatches'(_0x3cf5b5){const _0x400dac=await fetch(API_BASE+'/tasks/'+_0x3cf5b5+'/patches');if(!_0x400dac['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x400dac['statusText']);return await _0x400dac['json']();},async 'getTaskAttachments'(_0x4dacea){const _0x595b4a=await fetch(API_BASE+'/tasks/'+_0x4dacea+'/attachments');if(!_0x595b4a['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x595b4a['statusText']);return await _0x595b4a['json']();},async 'uploadAttachments'(_0x23ee24,_0x17d3c2){const _0x3d2091=new FormData();for(const _0x256dd3 of _0x17d3c2){_0x3d2091['append']('attachments',_0x256dd3);}const _0x5253e2=await fetch(API_BASE+'/tasks/'+_0x23ee24+'/attachments',{'method':'POST','body':_0x3d2091});if(!_0x5253e2['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5253e2['statusText']);return await _0x5253e2['json']();},async 'isAINameGenerationAvailable'(){try{const _0x11a9ed=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x11a9ed['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x11a9ed['json']();}catch(_0xd33ec){return{'available':![],'reason':_0xd33ec['message']};}},async 'generateTaskName'(_0x16eaa3){try{const _0x18be3b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x16eaa3})});return await _0x18be3b['json']();}catch(_0x31b3d6){return{'success':![],'error':_0x31b3d6['message']};}},async 'createTask'(_0x5a483f){let _0x445b41,_0x4ca2ec={};if(_0x5a483f['files']&&_0x5a483f['files']['length']>0x0){const _0x5594b4=new FormData();for(const [_0xd61fb4,_0x5f1245]of Object['entries'](_0x5a483f)){if(_0xd61fb4!=='files'){if(_0x5f1245==null)continue;typeof _0x5f1245==='object'?_0x5594b4['append'](_0xd61fb4,JSON['stringify'](_0x5f1245)):_0x5594b4['append'](_0xd61fb4,String(_0x5f1245));}}for(const _0x380db7 of _0x5a483f['files']){_0x5594b4['append']('attachments',_0x380db7);}_0x445b41=_0x5594b4;}else _0x4ca2ec['Content-Type']='application/json',_0x445b41=JSON['stringify'](_0x5a483f);const _0x20455d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4ca2ec,'body':_0x445b41});if(!_0x20455d['ok']){const _0x4168c3=await _0x20455d['json'](),_0x54873a=new Error(_0x4168c3['error']||'Failed\x20to\x20create\x20task:\x20'+_0x20455d['statusText']),{message:_0x3e9e8a,..._0x3ced4d}=_0x4168c3;Object['assign'](_0x54873a,_0x3ced4d);throw _0x54873a;}return await _0x20455d['json']();},async 'createTestTask'(_0x594c0e){const _0x1cedbc=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x594c0e)});if(!_0x1cedbc['ok']){const _0xdd11e6=await _0x1cedbc['json']();throw new Error(_0xdd11e6['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x1cedbc['statusText']);}return await _0x1cedbc['json']();},async 'createEphemeralTest'(_0x288095){const _0x1ed7a7=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x288095)});if(!_0x1ed7a7['ok']){const _0x489eed=await _0x1ed7a7['json']();throw new Error(_0x489eed['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x1ed7a7['statusText']);}return await _0x1ed7a7['json']();},async 'createDeployTask'(_0x249d25){const _0x32ef1a=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x249d25)});if(!_0x32ef1a['ok']){const _0x2a08a6=await _0x32ef1a['json']();throw new Error(_0x2a08a6['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x32ef1a['statusText']);}return await _0x32ef1a['json']();},async 'getEnvironments'(){const _0x592312=await fetch(API_BASE+'/environments');if(!_0x592312['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x592312['statusText']);return await _0x592312['json']();},async 'getEnvironment'(_0x5d99b2){const _0x2f7565=await fetch(API_BASE+'/environments/'+_0x5d99b2);if(!_0x2f7565['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x2f7565['statusText']);return await _0x2f7565['json']();},async 'getEnvironmentRepoHistory'(_0x1327df,_0x1c98fd,_0x2bb249={}){if(!_0x1327df||!_0x1c98fd)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3b0730=new URLSearchParams();if(_0x2bb249['limit'])_0x3b0730['set']('limit',String(_0x2bb249['limit']));if(_0x2bb249['offset'])_0x3b0730['set']('offset',String(_0x2bb249['offset']));if(_0x2bb249['search'])_0x3b0730['set']('search',String(_0x2bb249['search']));if(_0x2bb249['branch'])_0x3b0730['set']('branch',String(_0x2bb249['branch']));const _0x3a60d1=API_BASE+'/environments/'+encodeURIComponent(_0x1327df)+'/repos/'+encodeURIComponent(_0x1c98fd)+'/git/history',_0xba887e=await fetch(''+_0x3a60d1+(_0x3b0730['toString']()?'?'+_0x3b0730['toString']():''));if(!_0xba887e['ok']){const _0x4bdc30=await _0xba887e['json']()['catch'](()=>({}));throw new Error(_0x4bdc30['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0xba887e['statusText']);}return await _0xba887e['json']();},async 'getEnvironmentRepoCommit'(_0x36ba4d,_0x324682,_0x24cb84){if(!_0x36ba4d||!_0x324682||!_0x24cb84)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xc083b6=API_BASE+'/environments/'+encodeURIComponent(_0x36ba4d)+'/repos/'+encodeURIComponent(_0x324682)+'/git/commits/'+encodeURIComponent(_0x24cb84),_0x1d65a2=await fetch(_0xc083b6);if(!_0x1d65a2['ok']){const _0x5ad44e=await _0x1d65a2['json']()['catch'](()=>({}));throw new Error(_0x5ad44e['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1d65a2['statusText']);}return await _0x1d65a2['json']();},async 'getEnvironmentRepoBranches'(_0x107482,_0x43f641){if(!_0x107482||!_0x43f641)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x425de8=API_BASE+'/environments/'+encodeURIComponent(_0x107482)+'/repos/'+encodeURIComponent(_0x43f641)+'/git/branches',_0x3ed290=await fetch(_0x425de8);if(!_0x3ed290['ok']){const _0x5c5403=await _0x3ed290['json']()['catch'](()=>({}));throw new Error(_0x5c5403['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3ed290['statusText']);}return await _0x3ed290['json']();},async 'revertEnvironmentRepoCommit'(_0x1ec110,_0x2dd683,_0x28af5c,_0x2abcf6={}){if(!_0x1ec110||!_0x2dd683||!_0x28af5c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5af734=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1ec110)+'/repos/'+encodeURIComponent(_0x2dd683)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x28af5c,..._0x2abcf6})});if(!_0x5af734['ok']){const _0x4df898=await _0x5af734['json']()['catch'](()=>({}));throw new Error(_0x4df898['message']||_0x4df898['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5af734['statusText']);}return await _0x5af734['json']();},async 'getTemplates'(_0x59342f={}){const _0x314437=new URLSearchParams();if(_0x59342f['include']){const _0x537eef=Array['isArray'](_0x59342f['include'])?_0x59342f['include']['join'](','):String(_0x59342f['include']);if(_0x537eef)_0x314437['set']('include',_0x537eef);}const _0x869a4a=await fetch(API_BASE+'/templates'+(_0x314437['toString']()?'?'+_0x314437['toString']():''));if(!_0x869a4a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x869a4a['statusText']);return await _0x869a4a['json']();},async 'getTemplatesForEnvironment'(_0x3d5f94,_0x5a9b5e={}){if(!_0x3d5f94)throw new Error('Environment\x20name\x20is\x20required');const _0x4ac2e2=new URLSearchParams();if(_0x5a9b5e['include']){const _0x39cb5e=Array['isArray'](_0x5a9b5e['include'])?_0x5a9b5e['include']['join'](','):String(_0x5a9b5e['include']);if(_0x39cb5e)_0x4ac2e2['set']('include',_0x39cb5e);}const _0x426781=await fetch(API_BASE+'/templates/'+_0x3d5f94+(_0x4ac2e2['toString']()?'?'+_0x4ac2e2['toString']():''));if(!_0x426781['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3d5f94+':\x20'+_0x426781['statusText']);return await _0x426781['json']();},async 'getTemplate'(_0x394f73,_0x15c937,_0x479005={}){if(!_0x394f73||!_0x15c937)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1f4499=new URLSearchParams();if(_0x479005['include']){const _0xa32f9a=Array['isArray'](_0x479005['include'])?_0x479005['include']['join'](','):String(_0x479005['include']);if(_0xa32f9a)_0x1f4499['set']('include',_0xa32f9a);}const _0x9494f=await fetch(API_BASE+'/templates/'+_0x394f73+'/'+_0x15c937+(_0x1f4499['toString']()?'?'+_0x1f4499['toString']():''));if(!_0x9494f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x9494f['statusText']);return await _0x9494f['json']();},async 'getTaskLogs'(_0x454230,_0x2ad465={}){if(!_0x454230)throw new Error('Task\x20ID\x20is\x20required');const _0x31ede0=new URLSearchParams();_0x2ad465['tail']&&_0x31ede0['set']('tail',String(_0x2ad465['tail']));const _0x44fe35=await fetch(API_BASE+'/tasks/'+_0x454230+'/logs'+(_0x31ede0['toString']()?'?'+_0x31ede0['toString']():''));if(!_0x44fe35['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x44fe35['statusText']);return await _0x44fe35['text']();},async 'getContainers'(){const _0x5ba29b=await fetch(API_BASE+'/containers');if(!_0x5ba29b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5ba29b['statusText']);return await _0x5ba29b['json']();},async 'getContainer'(_0x76aa53){const _0x4a0a0a=await fetch(API_BASE+'/containers/'+_0x76aa53);if(!_0x4a0a0a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x4a0a0a['statusText']);return await _0x4a0a0a['json']();},async 'startInteractiveContainer'(_0x5435ee){const _0x494a3a=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5435ee)});if(!_0x494a3a['ok']){const _0x43f733=await _0x494a3a['json']()['catch'](()=>({}));throw new Error(_0x43f733['message']||'Failed\x20to\x20start\x20container:\x20'+_0x494a3a['statusText']);}return await _0x494a3a['json']();},async 'startContainerCodeServer'(_0x3d81a1,_0x1fa242={}){if(!_0x3d81a1)throw new Error('Container\x20ID\x20is\x20required');const _0x262301=new URLSearchParams();_0x1fa242['theme']&&_0x262301['set']('theme',_0x1fa242['theme']);const _0x11f3cd=await fetch(API_BASE+'/containers/'+_0x3d81a1+'/code-server'+(_0x262301['toString']()?'?'+_0x262301['toString']():'')),_0xe26e15=await _0x11f3cd['json']()['catch'](()=>({}));if(!_0x11f3cd['ok'])throw new Error(_0xe26e15['message']||_0xe26e15['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x11f3cd['statusText']);return _0xe26e15;},async 'stopContainer'(_0xa88d2a){const _0x22d4a6=await fetch(API_BASE+'/containers/'+_0xa88d2a,{'method':'DELETE'});if(!_0x22d4a6['ok']){const _0x5efb9e=await _0x22d4a6['json']()['catch'](()=>({}));throw new Error(_0x5efb9e['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x22d4a6['statusText']);}return await _0x22d4a6['json']();},async 'stopTask'(_0x9ccf72){if(!_0x9ccf72)throw new Error('Task\x20ID\x20is\x20required');const _0x4dc8de=await fetch(API_BASE+'/tasks/'+_0x9ccf72+'/stop',{'method':'POST'});if(!_0x4dc8de['ok']){const _0x2376cb=await _0x4dc8de['json']()['catch'](()=>({}));throw new Error(_0x2376cb['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4dc8de['statusText']);}return await _0x4dc8de['json']();},async 'interruptTask'(_0xee208c){if(!_0xee208c)throw new Error('Task\x20ID\x20is\x20required');const _0x3d8636=await fetch(API_BASE+'/tasks/'+_0xee208c+'/interrupt',{'method':'POST'});if(!_0x3d8636['ok']){const _0x5e6162=await _0x3d8636['json']()['catch'](()=>({}));throw new Error(_0x5e6162['error']||_0x5e6162['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3d8636['statusText']);}return await _0x3d8636['json']();},async 'startTask'(_0xdc2ff6){if(!_0xdc2ff6)throw new Error('Task\x20ID\x20is\x20required');const _0x53de6d=await fetch(API_BASE+'/tasks/'+_0xdc2ff6+'/start',{'method':'POST'});if(!_0x53de6d['ok']){const _0x2b8cbb=await _0x53de6d['json']()['catch'](()=>({}));throw new Error(_0x2b8cbb['error']||'Failed\x20to\x20start\x20task:\x20'+_0x53de6d['statusText']);}return await _0x53de6d['json']();},async 'deleteTask'(_0x54d914){if(!_0x54d914)throw new Error('Task\x20ID\x20is\x20required');const _0x280a30=await fetch(API_BASE+'/tasks/'+_0x54d914,{'method':'DELETE'});if(!_0x280a30['ok']){const _0x1f1bbd=await _0x280a30['json']()['catch'](()=>({}));throw new Error(_0x1f1bbd['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x280a30['statusText']);}return await _0x280a30['json']();},async 'refreshTasksFromDisk'(){const _0xafea4=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xafea4['ok']){const _0x5ce4fd=await _0xafea4['json']()['catch'](()=>({}));throw new Error(_0x5ce4fd['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xafea4['statusText']);}return await _0xafea4['json']();},async 'approveTask'(_0x759247,_0x2c9133={}){if(!_0x759247)throw new Error('Task\x20ID\x20is\x20required');const _0x42159d={'commit_message':_0x2c9133['commit_message']||'','pull':_0x2c9133['pull']??![],'push':_0x2c9133['push']??![],'conflict_strategy':_0x2c9133['conflict_strategy']||'rebase'};_0x2c9133['new_branch']&&(_0x42159d['new_branch']=_0x2c9133['new_branch']);const _0x2a6225=await fetch(API_BASE+'/tasks/'+_0x759247+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42159d)});if(!_0x2a6225['ok']){const _0x5b5262=await _0x2a6225['json']()['catch'](()=>({}));let _0xa85a2d=_0x5b5262['error']||_0x5b5262['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2a6225['statusText'];if(_0x5b5262['results']&&Array['isArray'](_0x5b5262['results'])){const _0x3bd9d4=_0x5b5262['results']['filter'](_0x222ae4=>!_0x222ae4['success']&&_0x222ae4['error']);_0x3bd9d4['length']>0x0&&(_0xa85a2d=_0x3bd9d4[0x0]['error']);}const _0x14c743=new Error(_0xa85a2d);_0x14c743['hasConflicts']=_0x5b5262['results']?.['some'](_0xc974e9=>_0xc974e9['conflict'])||![];throw _0x14c743;}return await _0x2a6225['json']();},async 'getPullRequestInfo'(_0x4fb2b6){if(!_0x4fb2b6)throw new Error('Task\x20ID\x20is\x20required');const _0x1336c6=await fetch(API_BASE+'/tasks/'+_0x4fb2b6+'/pull-request-info');if(!_0x1336c6['ok']){const _0x540de1=await _0x1336c6['json']()['catch'](()=>({}));throw new Error(_0x540de1['error']||_0x540de1['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1336c6['statusText']);}return await _0x1336c6['json']();},async 'createPullRequests'(_0x255278,_0x58e98d){if(!_0x255278)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58e98d||!Array['isArray'](_0x58e98d))throw new Error('repos\x20array\x20is\x20required');const _0x1f7ad7=await fetch(API_BASE+'/tasks/'+_0x255278+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x58e98d})});if(!_0x1f7ad7['ok']){const _0x1c3fa1=await _0x1f7ad7['json']()['catch'](()=>({}));let _0x58bddb=_0x1c3fa1['error']||_0x1c3fa1['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1f7ad7['statusText'];if(_0x1c3fa1['results']&&Array['isArray'](_0x1c3fa1['results'])){const _0x29d349=_0x1c3fa1['results']['filter'](_0x361e5c=>!_0x361e5c['success']&&_0x361e5c['error']);_0x29d349['length']>0x0&&(_0x58bddb=_0x29d349[0x0]['error']);}throw new Error(_0x58bddb);}return await _0x1f7ad7['json']();},async 'syncRepos'(_0x2f04dd){if(!_0x2f04dd)throw new Error('Task\x20ID\x20is\x20required');const _0x5763a6=await fetch(API_BASE+'/tasks/'+_0x2f04dd+'/sync-repos',{'method':'POST'});if(!_0x5763a6['ok']){const _0x3e7ff0=await _0x5763a6['json']()['catch'](()=>({}));throw new Error(_0x3e7ff0['error']||_0x3e7ff0['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5763a6['statusText']);}return await _0x5763a6['json']();},async 'getIbmiSyncInfo'(_0x191d27){if(!_0x191d27)throw new Error('Task\x20ID\x20is\x20required');const _0x3b94ca=await fetch(API_BASE+'/tasks/'+_0x191d27+'/ibmi-sync-info');if(!_0x3b94ca['ok']){const _0x445654=await _0x3b94ca['json']()['catch'](()=>({}));throw new Error(_0x445654['error']||_0x445654['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x3b94ca['json']();},async 'getSyncFiles'(_0x3d483a){if(!_0x3d483a)throw new Error('Task\x20ID\x20is\x20required');const _0x3a00f2=await fetch(API_BASE+'/tasks/'+_0x3d483a+'/sync-to-ibmi/files');if(!_0x3a00f2['ok']){const _0x19f7a5=await _0x3a00f2['json']()['catch'](()=>({}));throw new Error(_0x19f7a5['error']||_0x19f7a5['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x3a00f2['json']();},async 'syncToIbmi'(_0x2eafab,_0x49cbb9,_0x303d43=null,_0x43fc20=null,_0x21e252=null){if(!_0x2eafab)throw new Error('Task\x20ID\x20is\x20required');const _0x19521e={'library':_0x49cbb9};if(_0x303d43)_0x19521e['user']=_0x303d43;if(_0x43fc20)_0x19521e['password']=_0x43fc20;if(_0x21e252)_0x19521e['files']=_0x21e252;const _0x3300ef=await fetch(API_BASE+'/tasks/'+_0x2eafab+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19521e)});if(!_0x3300ef['ok']){const _0x22e1b8=await _0x3300ef['json']()['catch'](()=>({}));throw new Error(_0x22e1b8['error']||_0x22e1b8['message']||'Sync\x20failed');}return await _0x3300ef['json']();},async 'getIbmiSyncLog'(_0x16ab6b){if(!_0x16ab6b)throw new Error('Task\x20ID\x20is\x20required');const _0x2f986e=await fetch(API_BASE+'/tasks/'+_0x16ab6b+'/ibmi-sync-log');if(!_0x2f986e['ok']){const _0x1184f6=await _0x2f986e['json']()['catch'](()=>({}));throw new Error(_0x1184f6['error']||_0x1184f6['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2f986e['json']();},async 'pullChanges'(_0x181a9e){if(!_0x181a9e)throw new Error('Task\x20ID\x20is\x20required');const _0x19fa5d=await fetch(API_BASE+'/tasks/'+_0x181a9e+'/pull-changes',{'method':'POST'});if(!_0x19fa5d['ok']){const _0x3f049b=await _0x19fa5d['json']()['catch'](()=>({}));throw new Error(_0x3f049b['error']||_0x3f049b['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x19fa5d['statusText']);}return await _0x19fa5d['json']();},async 'readFile'(_0x3ae170,_0x2a157a){if(!_0x3ae170)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2a157a)throw new Error('File\x20path\x20is\x20required');const _0x5cd98a=await fetch(API_BASE+'/tasks/'+_0x3ae170+'/files?path='+encodeURIComponent(_0x2a157a));if(!_0x5cd98a['ok']){const _0x1a4966=await _0x5cd98a['json']()['catch'](()=>({}));throw new Error(_0x1a4966['error']||_0x1a4966['message']||'Failed\x20to\x20read\x20file:\x20'+_0x5cd98a['statusText']);}return await _0x5cd98a['json']();},'getTaskFileDownloadUrl'(_0x259cb1,_0xc050f2){if(!_0x259cb1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xc050f2)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x259cb1+'/files/download?path='+encodeURIComponent(_0xc050f2);},async 'writeFile'(_0x352ccc,_0x284f3a,_0x4443b2){if(!_0x352ccc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x284f3a)throw new Error('File\x20path\x20is\x20required');if(_0x4443b2===undefined)throw new Error('Content\x20is\x20required');const _0x4e0abb=await fetch(API_BASE+'/tasks/'+_0x352ccc+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x284f3a,'content':_0x4443b2})});if(!_0x4e0abb['ok']){const _0x523b50=await _0x4e0abb['json']()['catch'](()=>({}));throw new Error(_0x523b50['error']||_0x523b50['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4e0abb['statusText']);}return await _0x4e0abb['json']();},async 'uploadTaskFiles'(_0x262f57,_0x57b457,_0x544c4a){if(!_0x262f57)throw new Error('Task\x20ID\x20is\x20required');if(!_0x57b457)throw new Error('Target\x20directory\x20is\x20required');if(!_0x544c4a||_0x544c4a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3ae08f=new FormData();_0x3ae08f['append']('targetDir',_0x57b457);for(const _0x4d0871 of _0x544c4a){_0x3ae08f['append']('files',_0x4d0871,_0x4d0871['name']);}const _0x1bcab6=await fetch(API_BASE+'/tasks/'+_0x262f57+'/files/upload',{'method':'POST','body':_0x3ae08f});if(!_0x1bcab6['ok']){const _0x3550f3=await _0x1bcab6['json']()['catch'](()=>({}));throw new Error(_0x3550f3['error']||_0x3550f3['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1bcab6['statusText']);}return await _0x1bcab6['json']();},async 'createDirectory'(_0x48cf5c,_0x511f96){if(!_0x48cf5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x511f96)throw new Error('Directory\x20path\x20is\x20required');const _0x3f1bc8=await fetch(API_BASE+'/tasks/'+_0x48cf5c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x511f96})});if(!_0x3f1bc8['ok']){const _0x205c75=await _0x3f1bc8['json']()['catch'](()=>({}));throw new Error(_0x205c75['error']||_0x205c75['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3f1bc8['statusText']);}return await _0x3f1bc8['json']();},async 'renamePath'(_0x3252dc,_0x3f8015,_0x1e37a6){if(!_0x3252dc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f8015)throw new Error('Source\x20path\x20is\x20required');if(!_0x1e37a6)throw new Error('Destination\x20path\x20is\x20required');const _0x578f92=await fetch(API_BASE+'/tasks/'+_0x3252dc+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x3f8015,'newPath':_0x1e37a6})});if(!_0x578f92['ok']){const _0x266b98=await _0x578f92['json']()['catch'](()=>({}));throw new Error(_0x266b98['error']||_0x266b98['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x578f92['statusText']);}return await _0x578f92['json']();},async 'deleteFile'(_0x4077f0,_0x9e3465){if(!_0x4077f0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x9e3465)throw new Error('File\x20path\x20is\x20required');const _0x538b60=await fetch(API_BASE+'/tasks/'+_0x4077f0+'/files?path='+encodeURIComponent(_0x9e3465),{'method':'DELETE'});if(!_0x538b60['ok']){const _0x1c8719=await _0x538b60['json']()['catch'](()=>({}));throw new Error(_0x1c8719['error']||_0x1c8719['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x538b60['statusText']);}return await _0x538b60['json']();},async 'deleteDirectory'(_0x26251b,_0x3efc04){if(!_0x26251b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3efc04)throw new Error('Directory\x20path\x20is\x20required');const _0x17d990=await fetch(API_BASE+'/tasks/'+_0x26251b+'/files/directory?path='+encodeURIComponent(_0x3efc04),{'method':'DELETE'});if(!_0x17d990['ok']){const _0xe94af5=await _0x17d990['json']()['catch'](()=>({}));throw new Error(_0xe94af5['error']||_0xe94af5['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x17d990['statusText']);}return await _0x17d990['json']();},async 'discardFile'(_0x56e431,_0x4a2407,_0x5c2b60){if(!_0x56e431)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4a2407)throw new Error('File\x20path\x20is\x20required');if(!_0x5c2b60)throw new Error('Repository\x20path\x20is\x20required');const _0x284c1a=await fetch(API_BASE+'/tasks/'+_0x56e431+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4a2407,'repoPath':_0x5c2b60})});if(!_0x284c1a['ok']){const _0x503e57=await _0x284c1a['json']()['catch'](()=>({}));throw new Error(_0x503e57['error']||_0x503e57['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x284c1a['statusText']);}return await _0x284c1a['json']();},async 'followUpTask'(_0x22af91,_0x56e59c={}){if(!_0x22af91)throw new Error('Task\x20ID\x20is\x20required');if(!_0x56e59c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x413418,_0x12ea86={};if(_0x56e59c['files']&&_0x56e59c['files']['length']>0x0){const _0x30006d=new FormData();_0x30006d['append']('instructions',_0x56e59c['instructions']);for(const _0x68d3ba of _0x56e59c['files']){_0x30006d['append']('attachments',_0x68d3ba);}_0x413418=_0x30006d;}else _0x12ea86['Content-Type']='application/json',_0x413418=JSON['stringify']({'instructions':_0x56e59c['instructions']});const _0x1e6166=await fetch(API_BASE+'/tasks/'+_0x22af91+'/follow-up',{'method':'POST','headers':_0x12ea86,'body':_0x413418});if(!_0x1e6166['ok']){const _0x394f5b=await _0x1e6166['json']()['catch'](()=>({}));throw new Error(_0x394f5b['error']||_0x394f5b['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1e6166['statusText']);}return await _0x1e6166['json']();},async 'getTaskRewindPoints'(_0x4c337b){if(!_0x4c337b)throw new Error('Task\x20ID\x20is\x20required');const _0x296ad1=await fetch(API_BASE+'/tasks/'+_0x4c337b+'/rewind-points');if(!_0x296ad1['ok']){const _0x449dc3=await _0x296ad1['json']()['catch'](()=>({}));throw new Error(_0x449dc3['error']||_0x449dc3['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x296ad1['statusText']);}return await _0x296ad1['json']();},async 'rewindTask'(_0x31a429,_0xe610e2={}){if(!_0x31a429)throw new Error('Task\x20ID\x20is\x20required');const _0x2ea5b6=Number['isInteger'](_0xe610e2['targetFollowUpCount'])?_0xe610e2['targetFollowUpCount']:0x0,_0x19cbaa={'targetFollowUpCount':_0x2ea5b6};typeof _0xe610e2['instructions']==='string'&&_0xe610e2['instructions']['trim']()&&(_0x19cbaa['instructions']=_0xe610e2['instructions']['trim']());typeof _0xe610e2['rewindFiles']==='boolean'&&(_0x19cbaa['rewindFiles']=_0xe610e2['rewindFiles']);const _0x17f0b2=await fetch(API_BASE+'/tasks/'+_0x31a429+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19cbaa)});if(!_0x17f0b2['ok']){const _0x4ce694=await _0x17f0b2['json']()['catch'](()=>({}));throw new Error(_0x4ce694['error']||_0x4ce694['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x17f0b2['statusText']);}return await _0x17f0b2['json']();},async 'login'(_0x43300e,_0x2a8588){const _0x199444=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x43300e,'password':_0x2a8588})});if(!_0x199444['ok']){const _0x1ff4cf=await _0x199444['json']();throw new Error(_0x1ff4cf['message']||'Login\x20failed');}return await _0x199444['json']();},async 'logout'(){const _0x34cf30=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x34cf30['ok']){const _0x5bf06b=await _0x34cf30['json']();throw new Error(_0x5bf06b['message']||'Logout\x20failed');}return await _0x34cf30['json']();},async 'getCurrentUser'(){const _0x399f7b=await fetch(API_BASE+'/auth/me');if(!_0x399f7b['ok'])throw new Error('Not\x20authenticated');const _0x33bdd1=await _0x399f7b['json']();return _0x33bdd1['user'];},async 'getRolesInfo'(){const _0x1b7298=await fetch(API_BASE+'/users/roles');if(!_0x1b7298['ok']){const _0x24f9cc=await _0x1b7298['json']();throw new Error(_0x24f9cc['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1b7298['json']();},async 'getUsers'(){const _0x256afb=await fetch(API_BASE+'/users');if(!_0x256afb['ok']){const _0x52d2f2=await _0x256afb['json']();throw new Error(_0x52d2f2['message']||'Failed\x20to\x20get\x20users');}return await _0x256afb['json']();},async 'getUser'(_0x2d1d58){const _0x5cc1b5=await fetch(API_BASE+'/users/'+_0x2d1d58);if(!_0x5cc1b5['ok']){const _0x1e9c50=await _0x5cc1b5['json']();throw new Error(_0x1e9c50['message']||'Failed\x20to\x20get\x20user');}return await _0x5cc1b5['json']();},async 'createUser'(_0x3a8314){const _0x4e9bca=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a8314)});if(!_0x4e9bca['ok']){const _0x409df0=await _0x4e9bca['json']();throw new Error(_0x409df0['message']||'Failed\x20to\x20create\x20user');}return await _0x4e9bca['json']();},async 'updateUser'(_0x19f662,_0x1b9240){const _0x27957b=await fetch(API_BASE+'/users/'+_0x19f662,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b9240)});if(!_0x27957b['ok']){const _0x56e776=await _0x27957b['json']();throw new Error(_0x56e776['message']||'Failed\x20to\x20update\x20user');}return await _0x27957b['json']();},async 'deleteUser'(_0x3f86e2){const _0x2ff7b9=await fetch(API_BASE+'/users/'+_0x3f86e2,{'method':'DELETE'});if(!_0x2ff7b9['ok']){const _0x41f491=await _0x2ff7b9['json']();throw new Error(_0x41f491['message']||'Failed\x20to\x20delete\x20user');}return await _0x2ff7b9['json']();},async 'stopAllContainers'(){const _0x2f9548=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1d2b55=await _0x2f9548['json']()['catch'](()=>({}));if(!_0x2f9548['ok'])throw new Error(_0x1d2b55['message']||_0x1d2b55['error']||'Failed\x20to\x20stop\x20containers');return _0x1d2b55;},async 'removeStoppedContainers'(){const _0x5cad37=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x19d687=await _0x5cad37['json']()['catch'](()=>({}));if(!_0x5cad37['ok'])throw new Error(_0x19d687['message']||_0x19d687['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x19d687;},async 'pruneDockerResources'(){const _0x113783=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5f3ccd=await _0x113783['json']()['catch'](()=>({}));if(!_0x113783['ok'])throw new Error(_0x5f3ccd['message']||_0x5f3ccd['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5f3ccd;},async 'getUpdateSettings'(){const _0x26ef41=await fetch(API_BASE+'/health/update-settings'),_0x30b179=await _0x26ef41['json']()['catch'](()=>({}));if(!_0x26ef41['ok'])throw new Error(_0x30b179['message']||_0x30b179['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x30b179;},async 'applyServerUpdate'(_0x5c7944){const _0x1dc7bd=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x5c7944})}),_0x52a1aa=await _0x1dc7bd['json']()['catch'](()=>({}));if(!_0x1dc7bd['ok']){const _0xe68cff=new Error(_0x52a1aa['message']||_0x52a1aa['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x52a1aa['output']!==undefined)_0xe68cff['output']=_0x52a1aa['output'];if(_0x52a1aa['error']!==undefined)_0xe68cff['commandError']=_0x52a1aa['error'];throw _0xe68cff;}return _0x52a1aa;},async 'restartServer'(){const _0x58b24b=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x32e304=await _0x58b24b['json']()['catch'](()=>({}));if(!_0x58b24b['ok'])throw new Error(_0x32e304['message']||_0x32e304['error']||'Failed\x20to\x20restart\x20server');return _0x32e304;},async 'createPasswordToken'(_0x1eaef3,_0x1652a3='setup',_0x324374=![]){const _0x19a79e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x1eaef3,'type':_0x1652a3,'sendEmail':_0x324374})});if(!_0x19a79e['ok']){const _0x29bb2f=await _0x19a79e['json']();throw new Error(_0x29bb2f['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x19a79e['json']();},async 'getEmailConfig'(){const _0x1f213b=await fetch(API_BASE+'/password/email-config');if(!_0x1f213b['ok']){const _0x49c4b4=await _0x1f213b['json']();throw new Error(_0x49c4b4['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x1f213b['json']();},async 'updateTaskName'(_0x412501,_0x953b73){const _0x2ea2fa=await fetch(API_BASE+'/tasks/'+_0x412501,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x953b73})});if(!_0x2ea2fa['ok']){const _0x51a22c=await _0x2ea2fa['json']();throw new Error(_0x51a22c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2ea2fa['json']();},async 'pinTask'(_0x1038dc,_0x454a8d,_0x17eb82=null){if(!_0x1038dc)throw new Error('Task\x20ID\x20is\x20required');const _0x36e66c={'pinned':_0x454a8d};_0x17eb82&&_0x17eb82['length']>0x0&&(_0x36e66c['additionalTaskIds']=_0x17eb82);const _0x4574b5=await fetch(API_BASE+'/tasks/'+_0x1038dc+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36e66c)});if(!_0x4574b5['ok']){const _0x49c9f2=await _0x4574b5['json']();throw new Error(_0x49c9f2['error']||'Failed\x20to\x20pin\x20task');}return await _0x4574b5['json']();},async 'setTaskWinner'(_0x2a2ea1,_0x3c4163,_0xf17619=[]){if(!_0x2a2ea1)throw new Error('Task\x20ID\x20is\x20required');const _0xa7f671=await fetch(API_BASE+'/tasks/'+_0x2a2ea1+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3c4163,'siblings':_0xf17619})});if(!_0xa7f671['ok']){const _0x23e7d3=await _0xa7f671['json']();throw new Error(_0x23e7d3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xa7f671['json']();},async 'setTaskLoser'(_0xd6735b,_0x48af0f){if(!_0xd6735b)throw new Error('Task\x20ID\x20is\x20required');const _0x19bb7c=await fetch(API_BASE+'/tasks/'+_0xd6735b+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x48af0f})});if(!_0x19bb7c['ok']){const _0x486c0f=await _0x19bb7c['json']();throw new Error(_0x486c0f['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x19bb7c['json']();},async 'createTaskGroup'(_0x20acb2){const _0x41d931=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20acb2)});if(!_0x41d931['ok']){const _0xe50172=await _0x41d931['json']();throw new Error(_0xe50172['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x41d931['json']();},async 'getTaskGroups'(_0x16ee38={}){const _0x4bb728=new URLSearchParams();if(_0x16ee38['userId'])_0x4bb728['set']('userId',String(_0x16ee38['userId']));if(_0x16ee38['status'])_0x4bb728['set']('status',String(_0x16ee38['status']));if(_0x16ee38['limit'])_0x4bb728['set']('limit',String(_0x16ee38['limit']));const _0x4adb6b=API_BASE+'/tasks/groups'+(_0x4bb728['toString']()?'?'+_0x4bb728['toString']():''),_0x52c19f=await fetch(_0x4adb6b);if(!_0x52c19f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x52c19f['json']();},async 'getTaskGroup'(_0x1284c5){const _0x30d4da=await fetch(API_BASE+'/tasks/groups/'+_0x1284c5);if(!_0x30d4da['ok']){const _0x7327c8=await _0x30d4da['json']();throw new Error(_0x7327c8['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x30d4da['json']();},async 'updateTaskGroup'(_0x4325a3,_0x2ab1e8,_0x5cf83d){const _0x61721c=await fetch(API_BASE+'/tasks/'+_0x4325a3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x2ab1e8,'groupIndex':_0x5cf83d})});if(!_0x61721c['ok']){const _0x3e37a1=await _0x61721c['json']();throw new Error(_0x3e37a1['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x61721c['json']();},async 'removeTaskFromGroup'(_0x17bfd3){return this['updateTaskGroup'](_0x17bfd3,null,null);},async 'deleteTaskGroup'(_0x453f1b,_0x1db5b2=![]){const _0x4ee903=_0x1db5b2?'?deleteTasks=true':'',_0x4d22cc=await fetch(API_BASE+'/tasks/groups/'+_0x453f1b+_0x4ee903,{'method':'DELETE'});if(!_0x4d22cc['ok']){const _0x107f02=await _0x4d22cc['json']();throw new Error(_0x107f02['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x4ad74f,_0x1615a8){const _0x2716fa=await fetch(API_BASE+'/tasks/groups/'+_0x4ad74f+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x1615a8})});if(!_0x2716fa['ok']){const _0xb18e21=await _0x2716fa['json']();throw new Error(_0xb18e21['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2716fa['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3beab1){if(!_0x3beab1)throw new Error('Task\x20ID\x20is\x20required');const _0x5b9de5=await fetch(API_BASE+'/tasks/'+_0x3beab1+'/comments');if(!_0x5b9de5['ok']){const _0x2c04d8=await _0x5b9de5['json']()['catch'](()=>({}));throw new Error(_0x2c04d8['error']||'Failed\x20to\x20get\x20comments');}return await _0x5b9de5['json']();},async 'addComment'(_0x1e7a85,_0x28bab6){if(!_0x1e7a85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28bab6)throw new Error('Comment\x20content\x20is\x20required');const _0x4dfc11=await fetch(API_BASE+'/tasks/'+_0x1e7a85+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x28bab6})});if(!_0x4dfc11['ok']){const _0x1147be=await _0x4dfc11['json']()['catch'](()=>({}));throw new Error(_0x1147be['error']||'Failed\x20to\x20add\x20comment');}return await _0x4dfc11['json']();},async 'updateComment'(_0x3bf2c9,_0x43c1f2,_0x1759d8){if(!_0x3bf2c9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x43c1f2)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1759d8)throw new Error('Comment\x20content\x20is\x20required');const _0x368ff0=await fetch(API_BASE+'/tasks/'+_0x3bf2c9+'/comments/'+_0x43c1f2,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1759d8})});if(!_0x368ff0['ok']){const _0x4e39ab=await _0x368ff0['json']()['catch'](()=>({}));throw new Error(_0x4e39ab['error']||'Failed\x20to\x20update\x20comment');}return await _0x368ff0['json']();},async 'deleteComment'(_0x21e483,_0x1c2591){if(!_0x21e483)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c2591)throw new Error('Comment\x20ID\x20is\x20required');const _0x117a0a=await fetch(API_BASE+'/tasks/'+_0x21e483+'/comments/'+_0x1c2591,{'method':'DELETE'});if(!_0x117a0a['ok']){const _0x4fd4dd=await _0x117a0a['json']()['catch'](()=>({}));throw new Error(_0x4fd4dd['error']||'Failed\x20to\x20delete\x20comment');}return await _0x117a0a['json']();},async 'createObjective'(_0x35c186){const _0x8078f1={'objective':!![],'name':_0x35c186['name']||'','environment':_0x35c186['environment']||null,'agents':_0x35c186['agents']||[],'branches':_0x35c186['branches']||{},'isPinned':_0x35c186['isPinned']||![],'parentObjectiveId':_0x35c186['parentObjectiveId']||null,'env_vars':_0x35c186['envVars']||{},'parameters':{'instructions':_0x35c186['instructions']||''},'files':_0x35c186['files']||[],'jira':_0x35c186['jira']||null};return this['createTask'](_0x8078f1);},async 'updateObjective'(_0x4eaacb,_0x1f85f8,_0x3a6d94=[],_0x1ff377=[]){let _0x17a3d3,_0xcf0093={};const _0x1b2ee0={..._0x1f85f8};_0x1ff377&&_0x1ff377['length']>0x0&&(_0x1b2ee0['removeAttachments']=_0x1ff377);if(_0x3a6d94&&_0x3a6d94['length']>0x0){const _0x52d26b=new FormData();for(const [_0x4c7ca6,_0xb36e17]of Object['entries'](_0x1b2ee0)){if(_0xb36e17==null)continue;typeof _0xb36e17==='object'?_0x52d26b['append'](_0x4c7ca6,JSON['stringify'](_0xb36e17)):_0x52d26b['append'](_0x4c7ca6,String(_0xb36e17));}for(const _0x42c04f of _0x3a6d94){_0x52d26b['append']('attachments',_0x42c04f);}_0x17a3d3=_0x52d26b;}else _0xcf0093['Content-Type']='application/json',_0x17a3d3=JSON['stringify'](_0x1b2ee0);const _0x26e7c6=await fetch(API_BASE+'/tasks/'+_0x4eaacb,{'method':'PATCH','headers':_0xcf0093,'body':_0x17a3d3});if(!_0x26e7c6['ok']){const _0x1c386a=await _0x26e7c6['json']();throw new Error(_0x1c386a['error']||'Failed\x20to\x20update\x20objective');}return await _0x26e7c6['json']();},async 'deleteObjective'(_0x41d5aa){return this['deleteTask'](_0x41d5aa);},async 'launchObjective'(_0x4ca7b5,_0x41cc20={}){const _0xd443b5=await fetch(API_BASE+'/tasks/'+_0x4ca7b5+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41cc20)});if(!_0xd443b5['ok']){const _0x1632f1=await _0xd443b5['json']();throw new Error(_0x1632f1['error']||'Failed\x20to\x20launch\x20objective');}return await _0xd443b5['json']();},async 'getObjectiveAttachments'(_0x282238){return this['getTaskAttachments'](_0x282238);},async 'createJudgeTask'({environment:_0x186d45,judgeAgent:_0x1c7b44,groupId:_0x3a7181,taskIds:_0x12c1aa,judgeCustomInstructions:_0x65daa2,isPinned:_0x2396ac}){const _0x11e0ac=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x186d45,'judgeAgent':_0x1c7b44,'groupId':_0x3a7181,'taskIds':_0x12c1aa,'judgeCustomInstructions':_0x65daa2,'isPinned':_0x2396ac})});if(!_0x11e0ac['ok']){const _0x3c2699=await _0x11e0ac['json']();throw new Error(_0x3c2699['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x11e0ac['json']();},async 'getJudgeTasks'(_0x5dcfa0){const _0x2df833=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5dcfa0));if(!_0x2df833['ok']){const _0x2bdd6c=await _0x2df833['json']();throw new Error(_0x2bdd6c['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2df833['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4a498d,_0x534ca2,_0x276325=''){const _0x46e02d=await fetch(API_BASE+'/tasks/'+_0x4a498d+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x534ca2,'customPreamble':_0x276325})});if(!_0x46e02d['ok']){const _0x32815e=await _0x46e02d['json']();throw new Error(_0x32815e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x46e02d['json']();},async 'getJiraConfig'(){const _0x4ef621=await fetch(API_BASE+'/jira/config');if(!_0x4ef621['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4ef621['json']();},async 'getJiraIssue'(_0x5f39b5){const _0x2fc090=await fetch(API_BASE+'/jira/issues/'+_0x5f39b5);if(!_0x2fc090['ok']){const _0x3e3027=await _0x2fc090['json']()['catch'](()=>({}));throw new Error(_0x3e3027['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2fc090['statusText']);}return await _0x2fc090['json']();},async 'searchJiraIssues'(_0x414692,_0x453d80=0x14){const _0x953c13=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x414692,'maxResults':_0x453d80})});if(!_0x953c13['ok']){const _0x556f16=await _0x953c13['json']()['catch'](()=>({}));throw new Error(_0x556f16['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x953c13['statusText']);}return await _0x953c13['json']();},async 'postJiraComment'(_0x1618eb,_0x81d1be){const _0x5b1acd=await fetch(API_BASE+'/jira/issues/'+_0x1618eb+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x81d1be})});if(!_0x5b1acd['ok']){const _0x28fb80=await _0x5b1acd['json']()['catch'](()=>({}));throw new Error(_0x28fb80['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5b1acd['statusText']);}return await _0x5b1acd['json']();},async 'getJiraComments'(_0x25b4a0){const _0x2fe78f=await fetch(API_BASE+'/jira/issues/'+_0x25b4a0+'/comments');if(!_0x2fe78f['ok']){const _0x2061ba=await _0x2fe78f['json']()['catch'](()=>({}));throw new Error(_0x2061ba['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2fe78f['statusText']);}return await _0x2fe78f['json']();},async 'promptParameter'({environment:_0x1f943b,command:_0x27fff5,parser:parser='json'}){const _0x26723d=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1f943b,'command':_0x27fff5,'parser':parser})});if(!_0x26723d['ok']){const _0x62ceca=await _0x26723d['json']()['catch'](()=>({}));throw new Error(_0x62ceca['message']||_0x62ceca['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x26723d['statusText']);}return await _0x26723d['json']();},async 'promptParameterStream'(_0x219bf4,_0x4fe28d){const _0x52f3c3=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x219bf4)});if(!_0x52f3c3['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x52f3c3['statusText']);const _0x3e7192=_0x52f3c3['body']['getReader'](),_0x1986c9=new TextDecoder();let _0x906fce='';return new Promise((_0x395f85,_0x137292)=>{const _0x3d78da=async()=>{try{const {done:_0x8c746e,value:_0x55521d}=await _0x3e7192['read']();if(_0x8c746e)return;_0x906fce+=_0x1986c9['decode'](_0x55521d,{'stream':!![]});const _0xe4c645=_0x906fce['split']('\x0a\x0a');_0x906fce=_0xe4c645['pop']()||'';for(const _0x542b53 of _0xe4c645){if(!_0x542b53['trim']())continue;const _0x49ea39=_0x542b53['split']('\x0a');let _0x582632='message',_0x49823a='';for(const _0x42c48c of _0x49ea39){if(_0x42c48c['startsWith']('event:'))_0x582632=_0x42c48c['substring'](0x6)['trim']();else _0x42c48c['startsWith']('data:')&&(_0x49823a=_0x42c48c['substring'](0x5)['trim']());}if(!_0x49823a)continue;try{const _0x2e631b=JSON['parse'](_0x49823a);if(_0x582632==='progress'&&_0x4fe28d)_0x4fe28d(_0x2e631b['stage'],_0x2e631b['message']);else{if(_0x582632==='result'){_0x395f85(_0x2e631b);return;}else{if(_0x582632==='error'){let _0x195d8c=_0x2e631b['message']||_0x2e631b['error']||'Prompt\x20command\x20failed';_0x2e631b['rawOutput']&&(_0x195d8c+='\x0a\x0aRaw\x20output:\x0a'+_0x2e631b['rawOutput']);_0x137292(new Error(_0x195d8c));return;}}}}catch(_0x245ac7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x245ac7),console['error']('Event\x20type:',_0x582632),console['error']('Event\x20data:',_0x49823a),console['error']('First\x20200\x20chars:',_0x49823a['substring'](0x0,0xc8)),_0x137292(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x245ac7['message']+'\x0a\x0aData:\x20'+_0x49823a['substring'](0x0,0x1f4)));return;}}_0x3d78da();}catch(_0x5ba70d){_0x137292(_0x5ba70d);}};_0x3d78da();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2d8a73){const _0x10c448=await fetch(''+API_BASE+_0x2d8a73);if(!_0x10c448['ok']){const _0x547400=await _0x10c448['json']()['catch'](()=>({'error':_0x10c448['statusText']})),_0x312496=new Error(_0x547400['error']||_0x547400['message']||_0x10c448['statusText']);if(_0x547400['detail']!==undefined)_0x312496['detail']=_0x547400['detail'];throw _0x312496;}return await _0x10c448['json']();},async 'post'(_0x905d49,_0x49d2b9){const _0x31da26=await fetch(''+API_BASE+_0x905d49,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x49d2b9)});if(!_0x31da26['ok']){const _0x1d2466=await _0x31da26['json']()['catch'](()=>({'error':_0x31da26['statusText']})),_0xe16d70=new Error(_0x1d2466['error']||_0x1d2466['message']||_0x31da26['statusText']);if(_0x1d2466['detail']!==undefined)_0xe16d70['detail']=_0x1d2466['detail'];throw _0xe16d70;}return await _0x31da26['json']();},async 'put'(_0x5ab473,_0x23c0a7){const _0x1decc7=await fetch(''+API_BASE+_0x5ab473,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23c0a7)});if(!_0x1decc7['ok']){const _0x56149e=await _0x1decc7['json']()['catch'](()=>({'error':_0x1decc7['statusText']})),_0x31ebc8=new Error(_0x56149e['error']||_0x56149e['message']||_0x1decc7['statusText']);if(_0x56149e['detail']!==undefined)_0x31ebc8['detail']=_0x56149e['detail'];throw _0x31ebc8;}return await _0x1decc7['json']();},async 'delete'(_0x3b05af,_0xda411b){const _0x57aa17={'method':'DELETE'};_0xda411b&&(_0x57aa17['headers']={'Content-Type':'application/json'},_0x57aa17['body']=JSON['stringify'](_0xda411b));const _0x49bd65=await fetch(''+API_BASE+_0x3b05af,_0x57aa17);if(!_0x49bd65['ok']){const _0x42417b=await _0x49bd65['json']()['catch'](()=>({'error':_0x49bd65['statusText']})),_0x3ef207=new Error(_0x42417b['error']||_0x42417b['message']||_0x49bd65['statusText']);if(_0x42417b['detail']!==undefined)_0x3ef207['detail']=_0x42417b['detail'];throw _0x3ef207;}return await _0x49bd65['json']();},async 'getSkills'(){const _0x598114=await fetch(API_BASE+'/skills');if(!_0x598114['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x598114['statusText']);return await _0x598114['json']();},async 'getSkill'(_0x28abe7){const _0x5ac6b7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x28abe7));if(!_0x5ac6b7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5ac6b7['statusText']);return await _0x5ac6b7['json']();},async 'createSkill'(_0x396de2){const _0xeb9d65=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x396de2)});if(!_0xeb9d65['ok']){const _0x33ead1=await _0xeb9d65['json']()['catch'](()=>({'error':_0xeb9d65['statusText']})),_0x11021b=new Error(_0x33ead1['error']||_0x33ead1['message']||_0xeb9d65['statusText']);if(_0x33ead1['detail']!==undefined)_0x11021b['detail']=_0x33ead1['detail'];throw _0x11021b;}return await _0xeb9d65['json']();},async 'updateSkill'(_0xaf8f47,_0xa8b73b){const _0x1d1238=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xaf8f47),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa8b73b)});if(!_0x1d1238['ok']){const _0x1623b1=await _0x1d1238['json']()['catch'](()=>({'error':_0x1d1238['statusText']})),_0x5e74a8=new Error(_0x1623b1['error']||_0x1623b1['message']||_0x1d1238['statusText']);if(_0x1623b1['detail']!==undefined)_0x5e74a8['detail']=_0x1623b1['detail'];throw _0x5e74a8;}return await _0x1d1238['json']();},async 'deleteSkill'(_0x2b16c1){const _0x1efce0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2b16c1),{'method':'DELETE'});if(!_0x1efce0['ok']){const _0x4be874=await _0x1efce0['json']()['catch'](()=>({'error':_0x1efce0['statusText']})),_0x4c288b=new Error(_0x4be874['error']||_0x4be874['message']||_0x1efce0['statusText']);if(_0x4be874['detail']!==undefined)_0x4c288b['detail']=_0x4be874['detail'];throw _0x4c288b;}return await _0x1efce0['json']();},async 'getSkillFile'(_0xcde190,_0x64567e){const _0x516b20=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xcde190)+'/files/'+_0x64567e);if(!_0x516b20['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x516b20['statusText']);return await _0x516b20['json']();},async 'saveSkillFile'(_0x30e134,_0x2d06fd,_0x105fb9){const _0x2aafdc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x30e134)+'/files/'+_0x2d06fd,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x105fb9})});if(!_0x2aafdc['ok']){const _0x5aa32c=await _0x2aafdc['json']()['catch'](()=>({'error':_0x2aafdc['statusText']})),_0x9935ff=new Error(_0x5aa32c['error']||_0x5aa32c['message']||_0x2aafdc['statusText']);if(_0x5aa32c['detail']!==undefined)_0x9935ff['detail']=_0x5aa32c['detail'];throw _0x9935ff;}return await _0x2aafdc['json']();},async 'deleteSkillFile'(_0x5317c3,_0x397836){const _0x1caff6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5317c3)+'/files/'+_0x397836,{'method':'DELETE'});if(!_0x1caff6['ok']){const _0x3b624e=await _0x1caff6['json']()['catch'](()=>({'error':_0x1caff6['statusText']})),_0x1a6415=new Error(_0x3b624e['error']||_0x3b624e['message']||_0x1caff6['statusText']);if(_0x3b624e['detail']!==undefined)_0x1a6415['detail']=_0x3b624e['detail'];throw _0x1a6415;}return await _0x1caff6['json']();},async 'pullSkills'(){const _0x3d444c=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x3d444c['ok']){const _0x227bea=await _0x3d444c['json']()['catch'](()=>({'error':_0x3d444c['statusText']})),_0x105a4e=new Error(_0x227bea['error']||_0x227bea['message']||_0x3d444c['statusText']);if(_0x227bea['detail']!==undefined)_0x105a4e['detail']=_0x227bea['detail'];throw _0x105a4e;}return await _0x3d444c['json']();},async 'commitSkills'(_0x4251a8,_0xe28768={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xe28768,_0x53d0bf=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x4251a8,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x53d0bf['ok']){const _0x586550=await _0x53d0bf['json']()['catch'](()=>({'error':_0x53d0bf['statusText']})),_0x1a53ca=new Error(_0x586550['error']||_0x586550['message']||_0x53d0bf['statusText']);if(_0x586550['detail']!==undefined)_0x1a53ca['detail']=_0x586550['detail'];throw _0x1a53ca;}return await _0x53d0bf['json']();},async 'discardSkillsChanges'(){const _0x1201f1=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1201f1['ok']){const _0x3ae836=await _0x1201f1['json']()['catch'](()=>({'error':_0x1201f1['statusText']})),_0x73c4e=new Error(_0x3ae836['error']||_0x3ae836['message']||_0x1201f1['statusText']);if(_0x3ae836['detail']!==undefined)_0x73c4e['detail']=_0x3ae836['detail'];throw _0x73c4e;}return await _0x1201f1['json']();},async 'getSkillCatalog'(){const _0x1bea44=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1bea44['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1bea44['statusText']);return await _0x1bea44['json']();},async 'getImportedSkillsRegistry'(){const _0x14e19f=await fetch(API_BASE+'/external-skills/registry');if(!_0x14e19f['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x14e19f['statusText']);return await _0x14e19f['json']();},async 'importCatalogSkill'(_0x4c1167){const _0x1a9717=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4c1167})});if(!_0x1a9717['ok']){const _0x484d5b=await _0x1a9717['json']()['catch'](()=>({'error':_0x1a9717['statusText']})),_0x4d8951=new Error(_0x484d5b['error']||_0x484d5b['message']||_0x1a9717['statusText']);if(_0x484d5b['detail']!==undefined)_0x4d8951['detail']=_0x484d5b['detail'];throw _0x4d8951;}return await _0x1a9717['json']();},async 'importSkillFromGit'(_0x3e7de3,_0x13278c,_0x1a0d96='main',_0x4c3d29=null){const _0x49d8e5=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3e7de3,'skillPath':_0x13278c,'branch':_0x1a0d96,'skillId':_0x4c3d29})});if(!_0x49d8e5['ok']){const _0x3bfc77=await _0x49d8e5['json']()['catch'](()=>({'error':_0x49d8e5['statusText']})),_0x2de801=new Error(_0x3bfc77['error']||_0x3bfc77['message']||_0x49d8e5['statusText']);if(_0x3bfc77['detail']!==undefined)_0x2de801['detail']=_0x3bfc77['detail'];throw _0x2de801;}return await _0x49d8e5['json']();},async 'probeMarketplace'(_0x465645,_0x4df8ec='main'){const _0x56beaa=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x465645,'branch':_0x4df8ec})});if(!_0x56beaa['ok']){const _0x1262a5=await _0x56beaa['json']()['catch'](()=>({'error':_0x56beaa['statusText']})),_0xaa5968=new Error(_0x1262a5['error']||_0x1262a5['message']||_0x56beaa['statusText']);if(_0x1262a5['detail']!==undefined)_0xaa5968['detail']=_0x1262a5['detail'];throw _0xaa5968;}return await _0x56beaa['json']();},async 'importMarketplaceBundle'(_0x338b73,_0x562cfc,_0x1d5d5b,_0x2cd38d=null){const _0x87d90c=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x338b73,'branch':_0x562cfc,'bundleId':_0x1d5d5b,'selectedSkills':_0x2cd38d})});if(!_0x87d90c['ok']){const _0x2ae6b3=await _0x87d90c['json']()['catch'](()=>({'error':_0x87d90c['statusText']})),_0x561ba9=new Error(_0x2ae6b3['error']||_0x2ae6b3['message']||_0x87d90c['statusText']);if(_0x2ae6b3['detail']!==undefined)_0x561ba9['detail']=_0x2ae6b3['detail'];throw _0x561ba9;}return await _0x87d90c['json']();},async 'importSkillFromFolder'(_0x253d8c,_0x3fcbed=null){const _0x6a3970=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x253d8c,'skillId':_0x3fcbed})});if(!_0x6a3970['ok']){const _0x3cb88a=await _0x6a3970['json']()['catch'](()=>({'error':_0x6a3970['statusText']})),_0x16b963=new Error(_0x3cb88a['error']||_0x3cb88a['message']||_0x6a3970['statusText']);if(_0x3cb88a['detail']!==undefined)_0x16b963['detail']=_0x3cb88a['detail'];throw _0x16b963;}return await _0x6a3970['json']();},async 'importSkillFromNpm'(_0x348ef3,_0x4743c7='latest',_0x19022f=null,_0x28c953=null){const _0x2d71dd=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x348ef3,'version':_0x4743c7,'skillId':_0x19022f,'registry':_0x28c953})});if(!_0x2d71dd['ok']){const _0x2743d=await _0x2d71dd['json']()['catch'](()=>({'error':_0x2d71dd['statusText']})),_0x4f29d5=new Error(_0x2743d['error']||_0x2743d['message']||_0x2d71dd['statusText']);if(_0x2743d['detail']!==undefined)_0x4f29d5['detail']=_0x2743d['detail'];throw _0x4f29d5;}return await _0x2d71dd['json']();},async 'checkSkillUpdates'(_0x1a6cad){const _0x25ed9b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a6cad)+'/check-updates',{'method':'POST'});if(!_0x25ed9b['ok']){const _0x4c7281=await _0x25ed9b['json']()['catch'](()=>({'error':_0x25ed9b['statusText']})),_0x1a7799=new Error(_0x4c7281['error']||_0x4c7281['message']||_0x25ed9b['statusText']);if(_0x4c7281['detail']!==undefined)_0x1a7799['detail']=_0x4c7281['detail'];throw _0x1a7799;}return await _0x25ed9b['json']();},async 'updateExternalSkill'(_0x2176ff){const _0x1d5ca5=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2176ff)+'/update',{'method':'POST'});if(!_0x1d5ca5['ok']){const _0xf6429b=await _0x1d5ca5['json']()['catch'](()=>({'error':_0x1d5ca5['statusText']})),_0x4859fd=new Error(_0xf6429b['error']||_0xf6429b['message']||_0x1d5ca5['statusText']);if(_0xf6429b['detail']!==undefined)_0x4859fd['detail']=_0xf6429b['detail'];throw _0x4859fd;}return await _0x1d5ca5['json']();},async 'updateSkillFlags'(_0x2313e7,_0x2429c9){const _0x4ba68e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2313e7)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x2429c9})});if(!_0x4ba68e['ok']){const _0x40cecd=await _0x4ba68e['json']()['catch'](()=>({'error':_0x4ba68e['statusText']})),_0x11d67d=new Error(_0x40cecd['error']||_0x40cecd['message']||_0x4ba68e['statusText']);if(_0x40cecd['detail']!==undefined)_0x11d67d['detail']=_0x40cecd['detail'];throw _0x11d67d;}return await _0x4ba68e['json']();},async 'removeFromImportedRegistry'(_0x4631ce){const _0x45c3b3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4631ce)+'/registry',{'method':'DELETE'});if(!_0x45c3b3['ok']){const _0x303ab9=await _0x45c3b3['json']()['catch'](()=>({'error':_0x45c3b3['statusText']})),_0x39ede2=new Error(_0x303ab9['error']||_0x303ab9['message']||_0x45c3b3['statusText']);if(_0x303ab9['detail']!==undefined)_0x39ede2['detail']=_0x303ab9['detail'];throw _0x39ede2;}return await _0x45c3b3['json']();},async 'getTeams'(){const _0x333074=await fetch(API_BASE+'/teams');if(!_0x333074['ok']){const _0x30a881=await _0x333074['json']()['catch'](()=>({'message':_0x333074['statusText']}));throw new Error(_0x30a881['message']||'Failed\x20to\x20get\x20teams');}return await _0x333074['json']();},async 'getTeam'(_0x461f02){const _0x5be0c8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x461f02));if(!_0x5be0c8['ok']){const _0x49138e=await _0x5be0c8['json']()['catch'](()=>({'message':_0x5be0c8['statusText']}));throw new Error(_0x49138e['message']||'Failed\x20to\x20get\x20team');}return await _0x5be0c8['json']();},async 'createTeam'(_0xc4e45){const _0x2ead22=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc4e45)});if(!_0x2ead22['ok']){const _0x11dbde=await _0x2ead22['json']()['catch'](()=>({'message':_0x2ead22['statusText']}));throw new Error(_0x11dbde['message']||'Failed\x20to\x20create\x20team');}return await _0x2ead22['json']();},async 'updateTeam'(_0x4cbc1d,_0x232464){const _0x48cfcb=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cbc1d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x232464)});if(!_0x48cfcb['ok']){const _0x236b55=await _0x48cfcb['json']()['catch'](()=>({'message':_0x48cfcb['statusText']}));throw new Error(_0x236b55['message']||'Failed\x20to\x20update\x20team');}return await _0x48cfcb['json']();},async 'deleteTeam'(_0xce186f){const _0x352d3c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xce186f),{'method':'DELETE'});if(!_0x352d3c['ok']){const _0x45806f=await _0x352d3c['json']()['catch'](()=>({'message':_0x352d3c['statusText']}));throw new Error(_0x45806f['message']||'Failed\x20to\x20delete\x20team');}return await _0x352d3c['json']();},async 'addTeamMember'(_0x5bb458,_0x2f8126){const _0x160dba=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5bb458)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2f8126})});if(!_0x160dba['ok']){const _0x2cc04c=await _0x160dba['json']()['catch'](()=>({'message':_0x160dba['statusText']}));throw new Error(_0x2cc04c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x160dba['json']();},async 'removeTeamMember'(_0xf4166,_0x192320){const _0x1790db=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xf4166)+'/members/'+encodeURIComponent(_0x192320),{'method':'DELETE'});if(!_0x1790db['ok']){const _0x38362f=await _0x1790db['json']()['catch'](()=>({'message':_0x1790db['statusText']}));throw new Error(_0x38362f['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1790db['json']();},async 'getBindings'(_0x13529a={}){const _0x44cf16=new URLSearchParams();if(_0x13529a['resource_type'])_0x44cf16['set']('resource_type',_0x13529a['resource_type']);if(_0x13529a['resource_id'])_0x44cf16['set']('resource_id',_0x13529a['resource_id']);if(_0x13529a['subject_type'])_0x44cf16['set']('subject_type',_0x13529a['subject_type']);if(_0x13529a['subject_id'])_0x44cf16['set']('subject_id',_0x13529a['subject_id']);const _0x47cbe7=_0x44cf16['toString'](),_0x2e5145=await fetch(API_BASE+'/bindings'+(_0x47cbe7?'?'+_0x47cbe7:''));if(!_0x2e5145['ok']){const _0x2a9518=await _0x2e5145['json']()['catch'](()=>({'message':_0x2e5145['statusText']}));throw new Error(_0x2a9518['message']||'Failed\x20to\x20get\x20bindings');}return await _0x2e5145['json']();},async 'createBinding'(_0x239117){const _0x12fb0d=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x239117)});if(!_0x12fb0d['ok']){const _0x5bbf8d=await _0x12fb0d['json']()['catch'](()=>({'message':_0x12fb0d['statusText']}));throw new Error(_0x5bbf8d['message']||'Failed\x20to\x20create\x20binding');}return await _0x12fb0d['json']();},async 'updateBinding'(_0x268806,_0x5bfe3a){const _0x1228dd=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x268806),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bfe3a)});if(!_0x1228dd['ok']){const _0x60ffa4=await _0x1228dd['json']()['catch'](()=>({'message':_0x1228dd['statusText']}));throw new Error(_0x60ffa4['message']||'Failed\x20to\x20update\x20binding');}return await _0x1228dd['json']();},async 'deleteBinding'(_0x2a629d){const _0x599214=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2a629d),{'method':'DELETE'});if(!_0x599214['ok']){const _0x12f4c5=await _0x599214['json']()['catch'](()=>({'message':_0x599214['statusText']}));throw new Error(_0x12f4c5['message']||'Failed\x20to\x20delete\x20binding');}return await _0x599214['json']();},async 'getRoleDefinitions'(){const _0x349591=await fetch(API_BASE+'/roles');if(!_0x349591['ok']){const _0x1a7e20=await _0x349591['json']()['catch'](()=>({'message':_0x349591['statusText']}));throw new Error(_0x1a7e20['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x349591['json']();},async 'getRoleDefinition'(_0x280ccc){const _0x5d6976=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x280ccc));if(!_0x5d6976['ok']){const _0x49016d=await _0x5d6976['json']()['catch'](()=>({'message':_0x5d6976['statusText']}));throw new Error(_0x49016d['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5d6976['json']();},async 'createRoleDefinition'(_0x22fa89){const _0x26615a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22fa89)});if(!_0x26615a['ok']){const _0x53310d=await _0x26615a['json']()['catch'](()=>({'message':_0x26615a['statusText']}));throw new Error(_0x53310d['message']||_0x53310d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x26615a['json']();},async 'updateRoleDefinition'(_0x3b4be4,_0x4a1542){const _0x36b1d8=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3b4be4),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a1542)});if(!_0x36b1d8['ok']){const _0x747ec1=await _0x36b1d8['json']()['catch'](()=>({'message':_0x36b1d8['statusText']}));throw new Error(_0x747ec1['message']||_0x747ec1['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x36b1d8['json']();},async 'deleteRoleDefinition'(_0x5cd809){const _0x69a523=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5cd809),{'method':'DELETE'});if(!_0x69a523['ok']){const _0x5a55dd=await _0x69a523['json']()['catch'](()=>({'message':_0x69a523['statusText']}));throw new Error(_0x5a55dd['message']||_0x5a55dd['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x69a523['json']();},async 'getAvailablePermissions'(){const _0x175566=await fetch(API_BASE+'/roles/available-permissions');if(!_0x175566['ok']){const _0x3d2a5b=await _0x175566['json']()['catch'](()=>({'message':_0x175566['statusText']}));throw new Error(_0x3d2a5b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x175566['json']();},async 'getGitProviderAllowedTeams'(_0x2093ae){const _0x289c48=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2093ae)+'/allowed-teams');if(!_0x289c48['ok']){const _0x38f340=await _0x289c48['json']()['catch'](()=>({'message':_0x289c48['statusText']}));throw new Error(_0x38f340['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x289c48['json']();},async 'setGitProviderAllowedTeams'(_0x63a6e,_0x2af5c1){const _0x2d3f98=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x63a6e)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2af5c1})});if(!_0x2d3f98['ok']){const _0x29b6df=await _0x2d3f98['json']()['catch'](()=>({'message':_0x2d3f98['statusText']}));throw new Error(_0x29b6df['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x2d3f98['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 _0x397fbe=toastState['baseBottom'];toastState['toasts']['forEach'](_0x37a663=>{_0x37a663['el']['style']['bottom']=_0x397fbe+'px';const _0x4d46a4=_0x37a663['el']['offsetHeight']||toastState['defaultHeight'];_0x397fbe+=_0x4d46a4+toastState['gap'];});});}function removeToastById(_0x352b53){const _0x381748=toastState['toasts']['findIndex'](_0x1c54d4=>_0x1c54d4['id']===_0x352b53);if(_0x381748===-0x1)return;const _0x4668ee=toastState['toasts'][_0x381748];if(_0x4668ee['timeoutId'])clearTimeout(_0x4668ee['timeoutId']);_0x4668ee['el']['classList']['remove']('show'),setTimeout(()=>_0x4668ee['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x381748,0x1),repositionAllToasts();}function registerToast(_0x4d1ea4){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4d1ea4),repositionAllToasts(),_0x4d1ea4['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(_0x22fb51){if(_0x22fb51===null||_0x22fb51===undefined)return'';return String(_0x22fb51)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x265148,_0x2e95d8){if(_0x265148&&typeof _0x265148==='object'&&!Array['isArray'](_0x265148))return{'code':typeof _0x265148['text']==='string'?_0x265148['text']:'','language':typeof _0x265148['lang']==='string'?_0x265148['lang']:''};return{'code':typeof _0x265148==='string'?_0x265148:'','language':typeof _0x2e95d8==='string'?_0x2e95d8:''};}function buildMermaidBlock(_0x3c8c25){const _0x2f3e8e=String(_0x3c8c25||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2f3e8e))+'\x22>'+escapeHtmlValue(_0x2f3e8e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x1df4d0=new marked['Renderer'](),_0x3e383a=_0x1df4d0['code']['bind'](_0x1df4d0);return _0x1df4d0['code']=function(_0x4ac354,_0x3d9993,..._0x3bc7a8){const {code:_0x5144e7,language:_0x2dbbdb}=getMarkdownCodeBlockPayload(_0x4ac354,_0x3d9993),_0xc0c321=String(_0x2dbbdb||'')['trim']()['toLowerCase']();if(_0xc0c321==='mermaid')return buildMermaidBlock(_0x5144e7);const _0x47410e=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x47410e&&_0xc0c321)try{const _0x3bb8c2=_0x47410e['getLanguage'](_0xc0c321)?_0xc0c321:'plaintext',_0x2e902d=_0x47410e['highlight'](_0x5144e7,{'language':_0x3bb8c2})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0xc0c321)+'\x22>'+_0x2e902d+'</code></pre>';}catch(_0x38ae95){console['error']('Syntax\x20highlighting\x20error:',_0x38ae95);}return _0x3e383a(_0x4ac354,_0x3d9993,..._0x3bc7a8);},sharedMarkedRenderer=_0x1df4d0,_0x1df4d0;}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 _0x21013c=window['mermaid'];if(!_0x21013c||typeof _0x21013c['initialize']!=='function')return _0x21013c||null;return _0x21013c['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x21013c;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0xabeb55,_0x3ca6db)=>{const _0xae3cfa=()=>_0xabeb55(configureMermaidInstance()),_0x405b8d=()=>{mermaidLoadPromise=null,_0x3ca6db(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xae5f07=document['getElementById'](MERMAID_SCRIPT_ID);!_0xae5f07&&(_0xae5f07=document['createElement']('script'),_0xae5f07['id']=MERMAID_SCRIPT_ID,_0xae5f07['src']=MERMAID_SCRIPT_SRC,_0xae5f07['async']=!![],document['head']['appendChild'](_0xae5f07));if(window['mermaid']){_0xae3cfa();return;}_0xae5f07['addEventListener']('load',_0xae3cfa,{'once':!![]}),_0xae5f07['addEventListener']('error',_0x405b8d,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x913d6){const _0x2857c0=_0x913d6['getAttribute']('data-mermaid-source');if(!_0x2857c0)return null;let _0x366de1=_0x2857c0;try{_0x366de1=decodeURIComponent(_0x2857c0);}catch{}return _0x913d6['textContent']=_0x366de1,_0x913d6['removeAttribute']('data-processed'),_0x913d6['removeAttribute']('aria-roledescription'),_0x913d6['removeAttribute']('role'),_0x913d6['removeAttribute']('aria-label'),_0x366de1;}function collectMermaidNodes(_0x5b2f81,_0x382ff9){if(!(_0x5b2f81 instanceof Element))return;_0x5b2f81['matches']('.mermaid[data-mermaid-source]')&&_0x382ff9['add'](_0x5b2f81),_0x5b2f81['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x18ef2e=>{_0x382ff9['add'](_0x18ef2e);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x4f0259=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x580a6f=>setTimeout(_0x580a6f,0x0);_0x4f0259(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1ab9e8=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1ab9e8);});});}function queueMermaidRender(_0x199db0){const _0x234dc5=new Set();_0x199db0 instanceof Document||_0x199db0 instanceof DocumentFragment?_0x199db0['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1a7f6c=>_0x234dc5['add'](_0x1a7f6c)):collectMermaidNodes(_0x199db0,_0x234dc5);if(_0x234dc5['size']===0x0)return;_0x234dc5['forEach'](_0x5d8d29=>pendingMermaidNodes['add'](_0x5d8d29)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x569f5f=Array['from'](pendingMermaidNodes)['filter'](_0x522e50=>_0x522e50['isConnected']);pendingMermaidNodes['clear']();if(_0x569f5f['length']===0x0)return;const _0xb8b465=await loadMermaid();if(!_0xb8b465)return;configureMermaidInstance();const _0x559f3a=getMermaidTheme();for(const _0x1ad796 of _0x569f5f){const _0x1b08bd=_0x1ad796['getAttribute']('data-mermaid-source');if(!_0x1b08bd)continue;const _0x4c169f=_0x1ad796['getAttribute']('data-processed')==='true';if(_0x4c169f&&_0x1ad796['dataset']['mermaidTheme']===_0x559f3a)continue;restoreMermaidSource(_0x1ad796);try{if(typeof _0xb8b465['run']==='function')await _0xb8b465['run']({'nodes':[_0x1ad796]});else typeof _0xb8b465['init']==='function'&&_0xb8b465['init'](undefined,[_0x1ad796]);_0x1ad796['dataset']['mermaidTheme']=_0x559f3a,delete _0x1ad796['dataset']['mermaidError'];}catch(_0x5d1418){console['error']('Mermaid\x20render\x20failed:',_0x5d1418),restoreMermaidSource(_0x1ad796),_0x1ad796['dataset']['mermaidError']='true',delete _0x1ad796['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5437ea=>{_0x5437ea['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x5437ea);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2fd390=>{_0x2fd390['forEach'](_0x1efe80=>{_0x1efe80['addedNodes']['forEach'](_0x4b63be=>{_0x4b63be['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x4b63be);});});}),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'(_0x1dd5a6){const _0x39a414=new Date(_0x1dd5a6),_0x16c3fb=new Date(),_0x5def6a=_0x16c3fb-_0x39a414,_0x4e9593=Math['floor'](_0x5def6a/0x3e8),_0x196029=Math['floor'](_0x4e9593/0x3c),_0x4f59ca=Math['floor'](_0x196029/0x3c),_0x35df77=Math['floor'](_0x4f59ca/0x18);if(_0x4e9593<0x3c)return'now';if(_0x196029<0x3c)return _0x196029+'m\x20ago';if(_0x4f59ca<0x18)return _0x4f59ca+'h\x20ago';return _0x35df77+'d\x20ago';},'getStatusIcon'(_0x403d7d){switch(_0x403d7d){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x5ecab5){switch(_0x5ecab5){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'(_0x17a591,_0x36102b=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x149c7c={};_0x149c7c['text/plain']=new Blob([_0x17a591],{'type':'text/plain'});_0x36102b&&(_0x149c7c['text/html']=new Blob([_0x36102b],{'type':'text/html'}));const _0x42868b=new ClipboardItem(_0x149c7c);return await navigator['clipboard']['write']([_0x42868b]),!![];}catch(_0x180847){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x180847);}try{const _0x31fe6d=_0x2637b2=>{_0x2637b2['preventDefault'](),_0x2637b2['clipboardData']['setData']('text/plain',_0x17a591),_0x36102b&&_0x2637b2['clipboardData']['setData']('text/html',_0x36102b);};document['addEventListener']('copy',_0x31fe6d);const _0x441a63=document['execCommand']('copy');document['removeEventListener']('copy',_0x31fe6d);if(_0x441a63)return!![];}catch(_0x32a697){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x32a697);}try{const _0x3a9040=document['createElement']('textarea');_0x3a9040['value']=_0x17a591,_0x3a9040['style']['position']='fixed',_0x3a9040['style']['opacity']='0',_0x3a9040['style']['pointerEvents']='none',document['body']['appendChild'](_0x3a9040),_0x3a9040['select']();const _0x4c7fe3=document['execCommand']('copy');return document['body']['removeChild'](_0x3a9040),_0x4c7fe3;}catch(_0x5dd822){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x5dd822),![];}},'showToast'(_0x40c5b5,_0x3f5692='info'){const _0xb016d6=getNextToastId(),_0x2c9ef0=document['createElement']('div');_0x2c9ef0['className']='toast\x20toast-'+_0x3f5692,_0x2c9ef0['textContent']=_0x40c5b5,_0x2c9ef0['dataset']['toastId']=_0xb016d6,document['body']['appendChild'](_0x2c9ef0);const _0x2bc878=_0x3f5692==='error'?0x2710:0xbb8,_0x191dbb=setTimeout(()=>{removeToastById(_0xb016d6);},_0x2bc878),_0x335a01={'id':_0xb016d6,'el':_0x2c9ef0,'timeoutId':_0x191dbb};return registerToast(_0x335a01),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2c9ef0['classList']['add']('show');});}),_0xb016d6;},'showError'(_0x544eda){console['error'](_0x544eda);const _0x25de3b=typeof _0x544eda==='string'?_0x544eda:_0x544eda['message']||'An\x20error\x20occurred';this['showToast'](_0x25de3b,'error');},'showSuccess'(_0x42a08c){this['showToast'](_0x42a08c,'success');},'capitalize'(_0x3b73c1){if(!_0x3b73c1)return'';return _0x3b73c1['charAt'](0x0)['toUpperCase']()+_0x3b73c1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4b000b){return escapeHtmlValue(_0x4b000b);},'ansiToHtml'(_0x3ab6f9){if(_0x3ab6f9===null||_0x3ab6f9===undefined)return'';let _0x5452b7=this['escapeHtml'](_0x3ab6f9);const _0x49b7b2={'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'},_0x1f8cec={'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 _0x4948f4=0x0;return _0x5452b7=_0x5452b7['replace'](/\x1b\[([0-9;]*)m/g,(_0x36ebc9,_0x404bf7)=>{if(!_0x404bf7||_0x404bf7==='0'){const _0x23bd6c='</span>'['repeat'](_0x4948f4);return _0x4948f4=0x0,_0x23bd6c;}const _0x50d8f0=_0x404bf7['split'](';'),_0x2b086f=[];for(const _0x3a3c31 of _0x50d8f0){if(_0x3a3c31==='1')_0x2b086f['push']('font-weight:bold');else{if(_0x3a3c31==='2')_0x2b086f['push']('opacity:0.7');else{if(_0x3a3c31==='3')_0x2b086f['push']('font-style:italic');else{if(_0x3a3c31==='4')_0x2b086f['push']('text-decoration:underline');else{if(_0x3a3c31==='9')_0x2b086f['push']('text-decoration:line-through');else{if(_0x49b7b2[_0x3a3c31])_0x2b086f['push']('color:'+_0x49b7b2[_0x3a3c31]);else{if(_0x1f8cec[_0x3a3c31])_0x2b086f['push']('background-color:'+_0x1f8cec[_0x3a3c31]);}}}}}}}if(_0x2b086f['length']>0x0)return _0x4948f4++,'<span\x20style=\x22'+_0x2b086f['join'](';')+'\x22>';return'';}),_0x5452b7+='</span>'['repeat'](_0x4948f4),_0x5452b7=_0x5452b7['replace'](/\\u001b\[([0-9;]*)m/g,(_0xedd6fa,_0x4544a0)=>{if(!_0x4544a0||_0x4544a0==='0')return'';const _0x2afbb0=_0x4544a0['split'](';'),_0x594832=[];for(const _0x4e320b of _0x2afbb0){if(_0x4e320b==='1')_0x594832['push']('font-weight:bold');else{if(_0x49b7b2[_0x4e320b])_0x594832['push']('color:'+_0x49b7b2[_0x4e320b]);else{if(_0x1f8cec[_0x4e320b])_0x594832['push']('background-color:'+_0x1f8cec[_0x4e320b]);}}}if(_0x594832['length']>0x0)return'<span\x20style=\x22'+_0x594832['join'](';')+'\x22>';return'';}),_0x5452b7;},'showModal'({title:_0x5bd1a4,content:_0x286766,buttons:buttons=[]}){const _0x3c7dc3='\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'](_0x5bd1a4)+'</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'+_0x286766+'\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']((_0x39d223,_0x347d6b)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x39d223['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x347d6b+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x39d223['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',_0x2f9c28=document['createElement']('div');_0x2f9c28['id']='utils-modal',_0x2f9c28['className']='modal',_0x2f9c28['innerHTML']=_0x3c7dc3,document['body']['appendChild'](_0x2f9c28);const _0x1e9c2b=document['getElementById']('utils-modal-close');_0x1e9c2b&&_0x1e9c2b['addEventListener']('click',()=>this['hideModal']());const _0x228277=_0x2f9c28['querySelectorAll']('[data-btn-index]');_0x228277['forEach'](_0x5b66e7=>{const _0x284f30=parseInt(_0x5b66e7['dataset']['btnIndex']);buttons[_0x284f30]?.['onClick']&&_0x5b66e7['addEventListener']('click',buttons[_0x284f30]['onClick']);});const _0x259d6a=document['getElementById']('utils-modal-overlay');_0x259d6a&&_0x259d6a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x21426e=document['getElementById']('utils-modal');_0x21426e&&_0x21426e['remove']();},'parseKeyValuePairs'(_0x124bc0){const _0x3c0f2f={};if(!_0x124bc0)return _0x3c0f2f;return _0x124bc0['split'](/\r?\n/)['map'](_0x2a7486=>_0x2a7486['trim']())['filter'](Boolean)['forEach'](_0x87d29d=>{const _0x3e1287=_0x87d29d['indexOf']('=');if(_0x3e1287>0x0){const _0x176181=_0x87d29d['slice'](0x0,_0x3e1287)['trim'](),_0x13d12b=_0x87d29d['slice'](_0x3e1287+0x1)['trim']();if(_0x176181)_0x3c0f2f[_0x176181]=_0x13d12b;}}),_0x3c0f2f;},'debounce'(_0x5d8eea,_0x4683f3=0xfa){let _0x3f3c96=null;return(..._0x22b7e6)=>{clearTimeout(_0x3f3c96),_0x3f3c96=setTimeout(()=>_0x5d8eea['apply'](this,_0x22b7e6),_0x4683f3);};},'formatTimestamp'(_0x32eaf9){if(!_0x32eaf9)return'N/A';const _0x2ea2ce=new Date(_0x32eaf9);return _0x2ea2ce['toLocaleDateString']()+'\x20'+_0x2ea2ce['toLocaleTimeString']();},'getQueryParams'(){const _0x376977=new URLSearchParams(window['location']['search']),_0x5641af={};for(const [_0x36053f,_0x25fd3b]of _0x376977){_0x5641af[_0x36053f]=_0x25fd3b;}return _0x5641af;},'formatDuration'(_0xa955b7,_0x4dbfbc){if(!_0xa955b7)return'N/A';const _0x476d46=new Date(_0xa955b7),_0x4f35af=_0x4dbfbc?new Date(_0x4dbfbc):new Date(),_0x5a6ccb=_0x4f35af-_0x476d46;if(_0x5a6ccb<0x0)return'0s';const _0x2daf99=Math['floor'](_0x5a6ccb/0x3e8),_0x125eae=Math['floor'](_0x2daf99/0x3c),_0x242f3d=Math['floor'](_0x125eae/0x3c),_0x9e785d=Math['floor'](_0x242f3d/0x18);if(_0x2daf99<0x3c)return _0x2daf99+'s';if(_0x125eae<0x3c)return _0x125eae+'m\x20'+_0x2daf99%0x3c+'s';if(_0x242f3d<0x18)return _0x242f3d+'h\x20'+_0x125eae%0x3c+'m\x20'+_0x2daf99%0x3c+'s';return _0x9e785d+'d\x20'+_0x242f3d%0x18+'h\x20'+_0x125eae%0x3c+'m';},'renderMarkdown'(_0x29e1c1,_0x5e20bd={}){if(!_0x29e1c1)return'';_0x29e1c1=this['rewriteAttachmentLinks'](_0x29e1c1,_0x5e20bd),_0x29e1c1=this['rewriteColorSyntax'](_0x29e1c1);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x29e1c1,_0x5e20bd);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x29e1c1);}catch(_0xd01caa){return console['error']('Markdown\x20parsing\x20error:',_0xd01caa),this['renderMarkdownFallback'](_0x29e1c1,_0x5e20bd);}},'rewriteAttachmentLinks'(_0x597157,_0x1d5fc3={}){const _0x196c7c=typeof _0x1d5fc3['resolveAttachmentUrl']==='function'?_0x1d5fc3['resolveAttachmentUrl']:_0x1d5fc3['taskId']?_0x8e0dfe=>API_BASE+'/tasks/'+_0x1d5fc3['taskId']+'/attachments/'+encodeURIComponent(_0x8e0dfe):null;if(!_0x196c7c)return _0x597157;return String(_0x597157)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x343aee,_0x12dc48)=>{const _0x3055ca=String(_0x12dc48||'')['trim']();if(!_0x3055ca)return _0x343aee;let _0x476dc7=_0x3055ca;try{_0x476dc7=decodeURIComponent(_0x3055ca);}catch{}const _0x3466f3=_0x196c7c(_0x476dc7);if(!_0x3466f3)return _0x343aee;return']('+_0x3466f3+')';});},'rewriteColorSyntax'(_0x3a1ddf){if(!_0x3a1ddf)return _0x3a1ddf;return String(_0x3a1ddf)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x188856,_0x4d3fd2,_0xfca833)=>{const _0x399888=this['rewriteColorSyntax'](_0xfca833);return'<span\x20style=\x22color:\x20'+_0x4d3fd2+'\x22>'+_0x399888+'</span>';});},'renderMarkdownFallback'(_0x3faf98,_0x1d74c2={}){if(!_0x3faf98)return'';_0x3faf98=_0x3faf98['replace'](/\r\n/g,'\x0a'),_0x3faf98=_0x3faf98['replace'](/\r/g,'\x0a'),_0x3faf98=this['rewriteAttachmentLinks'](_0x3faf98,_0x1d74c2);let _0x490c79=this['escapeHtml'](_0x3faf98);return _0x490c79=_0x490c79['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x490c79=_0x490c79['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x490c79=_0x490c79['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x490c79=_0x490c79['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x490c79=_0x490c79['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x490c79=_0x490c79['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x490c79=_0x490c79['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x490c79=_0x490c79['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x490c79=_0x490c79['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x490c79=_0x490c79['replace'](/\n\n/g,'</p><p>'),_0x490c79=_0x490c79['replace'](/\n/g,'<br>'),'<p>'+_0x490c79+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1a8424=new Uint8Array(0x10);crypto['getRandomValues'](_0x1a8424),_0x1a8424[0x6]=_0x1a8424[0x6]&0xf|0x40,_0x1a8424[0x8]=_0x1a8424[0x8]&0x3f|0x80;const _0x2d679c=Array['from'](_0x1a8424,_0x1bbe0c=>_0x1bbe0c['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2d679c['slice'](0x0,0x8)+'-'+_0x2d679c['slice'](0x8,0xc)+'-'+_0x2d679c['slice'](0xc,0x10)+'-'+_0x2d679c['slice'](0x10,0x14)+'-'+_0x2d679c['slice'](0x14);}};export class CustomSelect{constructor(_0x44c560,_0x44691d={}){this['nativeSelect']=_0x44c560,this['options']=_0x44691d,this['isOpen']=![],this['selectedValue']=_0x44c560['value']||'',this['searchable']=_0x44691d['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5e6efa=document['createElement']('div');_0x5e6efa['className']='custom-select';const _0x5eea3b=document['createElement']('div');_0x5eea3b['className']='custom-select-trigger',_0x5eea3b['setAttribute']('tabindex','0'),_0x5eea3b['setAttribute']('role','button'),_0x5eea3b['setAttribute']('aria-haspopup','listbox');const _0x13e2d4=document['createElement']('span');_0x13e2d4['className']='custom-select-trigger-text';const _0xe96584=document['createElement']('span');_0xe96584['className']='custom-select-arrow',_0xe96584['textContent']='▼',_0x5eea3b['appendChild'](_0x13e2d4),_0x5eea3b['appendChild'](_0xe96584);const _0xd64ea4=document['createElement']('div');_0xd64ea4['className']='custom-select-dropdown',_0xd64ea4['setAttribute']('role','listbox');if(this['searchable']){const _0x3f8a16=document['createElement']('div');_0x3f8a16['className']='custom-select-search';const _0x4b1c16=document['createElement']('input');_0x4b1c16['type']='text',_0x4b1c16['className']='custom-select-search-input',_0x4b1c16['placeholder']='Type\x20to\x20search...',_0x4b1c16['setAttribute']('aria-label','Search\x20options'),_0x4b1c16['addEventListener']('input',_0x518d9b=>{this['searchQuery']=_0x518d9b['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x4b1c16['addEventListener']('keydown',_0x559b1c=>{if(_0x559b1c['key']==='Escape')_0x559b1c['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x559b1c['key']==='Enter'){_0x559b1c['preventDefault'](),_0x559b1c['stopPropagation']();const _0x434935=_0xd64ea4['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x434935){const _0x432a2f=_0x434935['getAttribute']('data-value');this['select'](_0x432a2f);}}}}),_0x3f8a16['appendChild'](_0x4b1c16),_0xd64ea4['appendChild'](_0x3f8a16),this['searchInput']=_0x4b1c16;}const _0x108bfb=document['createElement']('div');_0x108bfb['className']='custom-select-options',_0xd64ea4['appendChild'](_0x108bfb),_0x5e6efa['appendChild'](_0x5eea3b),_0x5e6efa['appendChild'](_0xd64ea4),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5e6efa,this['nativeSelect']),this['wrapper']=_0x5e6efa,this['trigger']=_0x5eea3b,this['triggerText']=_0x13e2d4,this['dropdown']=_0xd64ea4,this['optionsContainer']=_0x108bfb,_0x5eea3b['addEventListener']('click',()=>this['toggle']()),_0x5eea3b['addEventListener']('keydown',_0x221ccb=>this['handleKeydown'](_0x221ccb)),document['addEventListener']('click',_0x522681=>{!_0x5e6efa['contains'](_0x522681['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0xe1384=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0xe1384['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x5d5861=new MutationObserver(()=>{this['updateDisabledState']();});_0x5d5861['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0xb0533e=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0xb0533e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x48c5c1=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x48c5c1),this['trigger']['setAttribute']('aria-disabled',_0x48c5c1?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x48c5c1?'-1':'0'),_0x48c5c1&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x43500c=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4a33fa=_0x43500c['filter'](_0x27f185=>!_0x27f185['disabled']&&!_0x27f185['hidden']);_0x43500c['forEach']((_0x3053f7,_0x2513a7)=>{const _0x461d7e=document['createElement']('div');_0x461d7e['className']='custom-select-option',_0x461d7e['textContent']=_0x3053f7['textContent'],_0x461d7e['setAttribute']('data-value',_0x3053f7['value']),_0x461d7e['setAttribute']('data-index',_0x2513a7),_0x461d7e['setAttribute']('role','option'),_0x3053f7['disabled']?_0x461d7e['classList']['add']('disabled'):_0x461d7e['addEventListener']('click',()=>this['select'](_0x3053f7['value'])),_0x3053f7['value']===this['selectedValue']&&_0x461d7e['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x461d7e),this['allOptions']['push']({'element':_0x461d7e,'text':_0x3053f7['textContent']['toLowerCase'](),'value':_0x3053f7['value'],'disabled':_0x3053f7['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4959fa=this['searchInput']['parentElement'];_0x4a33fa['length']>0x3?_0x4959fa['style']['display']='':_0x4959fa['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4f2326=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x16a8c5=>{if(!_0x4f2326||_0x16a8c5['disabled'])_0x16a8c5['element']['style']['display']='';else{const _0x5b936f=_0x16a8c5['text']['includes'](_0x4f2326);_0x16a8c5['element']['style']['display']=_0x5b936f?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x280097){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x280097,this['nativeSelect']['value']=_0x280097;const _0x395714=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x395714),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x5de15b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x5de15b&&(this['triggerText']['textContent']=_0x5de15b['textContent'],_0x5de15b['disabled']||_0x5de15b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x15f041=>{_0x15f041['getAttribute']('data-value')===this['selectedValue']?_0x15f041['classList']['add']('selected'):_0x15f041['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 _0xb1bd4e=window['getComputedStyle'](this['dropdown']);if(_0xb1bd4e['position']==='fixed'){const _0x2d2798=this['trigger']['getBoundingClientRect'](),_0x427669=parseInt(_0xb1bd4e['maxHeight'])||0xc8,_0x26e092=window['innerHeight'],_0x51b730=_0x26e092-_0x2d2798['bottom'],_0x4d341f=_0x2d2798['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x276fae;_0x51b730<_0x427669&&_0x4d341f>_0x51b730?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x26e092-_0x2d2798['top']+'px',_0x276fae=Math['min'](_0x427669,_0x4d341f-0xa),this['dropdown']['style']['maxHeight']=_0x276fae+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2d2798['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x276fae=Math['min'](_0x427669,_0x51b730-0xa),this['dropdown']['style']['maxHeight']=_0x276fae+'px');if(this['optionsContainer']){let _0x579cec=_0x276fae;if(this['searchInput']){const _0x2114ec=this['searchInput']['parentElement'];_0x2114ec&&(_0x579cec-=_0x2114ec['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x579cec)+'px';}this['dropdown']['style']['left']=_0x2d2798['left']+'px',this['dropdown']['style']['width']=_0x2d2798['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x10eabe=this['searchInput']['parentElement'];_0x10eabe&&_0x10eabe['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'](_0x1ff6a0){if(this['nativeSelect']['disabled'])return;if(_0x1ff6a0['key']==='Enter'||_0x1ff6a0['key']==='\x20')_0x1ff6a0['preventDefault'](),this['toggle']();else _0x1ff6a0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x600dad='\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',_0x600dad),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x156b35=document['getElementById']('confirm-dialog-close'),_0x221e2e=document['getElementById']('confirm-dialog-cancel'),_0x1ae9f0=document['getElementById']('confirm-dialog-confirm'),_0x361648=this['_modal']['querySelector']('.modal-overlay');_0x156b35['addEventListener']('click',()=>this['_resolve'](![])),_0x221e2e['addEventListener']('click',()=>this['_resolve'](![])),_0x1ae9f0['addEventListener']('click',()=>this['_resolve'](!![])),_0x361648['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x102d60=>{if(_0x102d60['key']==='Escape')_0x102d60['preventDefault'](),this['_resolve'](![]);else _0x102d60['key']==='Enter'&&(_0x102d60['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x50dc0e,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x591fd3=>{this['_resolvePromise']=_0x591fd3,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x50dc0e;const _0x2adb81=document['getElementById']('confirm-dialog-cancel'),_0x344653=document['getElementById']('confirm-dialog-confirm');_0x2adb81['textContent']=cancelText,_0x344653['textContent']=confirmText,_0x344653['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x344653['focus']();});},'_resolve'(_0x362bc2){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x362bc2),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2476d1,_0x58ee6e={}){this['container']=_0x2476d1,this['options']={'placeholder':_0x58ee6e['placeholder']||'Type\x20to\x20search...','maxItems':_0x58ee6e['maxItems']||0x64,'loadItems':_0x58ee6e['loadItems']||(async()=>[]),'renderItem':_0x58ee6e['renderItem']||(_0x36688c=>({'primary':String(_0x36688c),'secondary':''})),'onSelect':_0x58ee6e['onSelect']||(()=>{}),'filterItems':_0x58ee6e['filterItems']||null,'getItemValue':_0x58ee6e['getItemValue']||(_0x139cc6=>_0x139cc6),'sortItems':_0x58ee6e['sortItems']||null,'debounceMs':_0x58ee6e['debounceMs']||0xc8,'minCharsForSearch':_0x58ee6e['minCharsForSearch']||0x0,'emptyMessage':_0x58ee6e['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x58ee6e['loadingMessage']||'Loading...','preload':_0x58ee6e['preload']!==![],'searchMode':_0x58ee6e['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',_0x3b0aaa=>this['onBlur'](_0x3b0aaa)),this['input']['addEventListener']('input',_0x54e172=>this['onInput'](_0x54e172)),this['input']['addEventListener']('keydown',_0x24f036=>this['onKeydown'](_0x24f036)),this['clearBtn']['addEventListener']('mousedown',_0x56922b=>{_0x56922b['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1147ce=>{_0x1147ce['preventDefault']();}),document['addEventListener']('click',_0x131ee8=>{!this['wrapper']['contains'](_0x131ee8['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(_0x33869d){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x33869d);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x4d9065){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5b7858){const _0x468864=_0x5b7858['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x468864);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x468864):this['loadAndShow'](_0x468864);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4b841b){switch(_0x4b841b['key']){case'ArrowDown':_0x4b841b['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4b841b['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4b841b['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4b841b['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x3acc77){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1a3b33=this['selectedIndex']+_0x3acc77;if(_0x1a3b33>=0x0&&_0x1a3b33<this['filteredItems']['length']){this['selectedIndex']=_0x1a3b33,this['updateSelectionHighlight']();const _0x58cb27=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x58cb27[this['selectedIndex']]&&_0x58cb27[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x56536b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x56536b['forEach']((_0x2eb0ce,_0x2a32b4)=>{_0x2eb0ce['classList']['toggle']('keyboard-selected',_0x2a32b4===this['selectedIndex']);});}async['loadAndShow'](_0x1f472e){this['showLoading']();try{const _0x56bf75=await this['options']['loadItems'](_0x1f472e);if(this['options']['searchMode']==='server'){let _0x59e08a=_0x56bf75;this['options']['sortItems']&&(_0x59e08a=this['options']['sortItems']([..._0x56bf75]));this['filteredItems']=_0x59e08a;const _0x1a574e=this['filteredItems']['length']>=this['options']['maxItems'];_0x1a574e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x1a574e),this['open']();}else this['allItems']=_0x56bf75,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x1f472e);}catch(_0x592b2d){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x592b2d),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x217d4b){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x217d4b):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x40af54=this['filteredItems']['length']>=this['options']['maxItems'];_0x40af54&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x40af54),this['open']();}['renderItems'](_0x2adb11){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']((_0x59845a,_0x2e40a9)=>{const _0x5c486d=document['createElement']('div');_0x5c486d['className']='autocomplete-select-item',_0x5c486d['setAttribute']('role','option'),_0x5c486d['setAttribute']('data-index',_0x2e40a9);const _0x3663b1=this['options']['renderItem'](_0x59845a);let _0x3801af='';_0x3663b1['icon']&&(_0x3801af='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x3663b1['iconClass']||'')+'\x22>'+_0x3663b1['icon']+'</span>'),_0x5c486d['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3801af+'\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'](_0x3663b1['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3663b1['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x3663b1['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5c486d['addEventListener']('click',()=>{this['selectItem'](_0x59845a);}),_0x5c486d['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x2e40a9,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5c486d);}),_0x2adb11?(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'](_0x53b22b){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x53b22b)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1ca856){this['selectedItem']=_0x1ca856;const _0x37a56a=this['options']['renderItem'](_0x1ca856);this['input']['value']=_0x37a56a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1ca856);}['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'](_0x550b8c){if(_0x550b8c){this['selectedItem']=_0x550b8c;const _0x5c70e5=this['options']['renderItem'](_0x550b8c);this['input']['value']=_0x5c70e5['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x8da578){this['allItems']=_0x8da578,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'](_0x403eb1){this['input']['placeholder']=_0x403eb1;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x520bc8=null){const _0x530015=document['getElementById']('admin-menu-container'),_0x3745f9=document['getElementById']('admin-menu-btn'),_0x1284c6=document['getElementById']('admin-menu');if(!_0x530015||!_0x3745f9||!_0x1284c6)return;try{!_0x520bc8&&(_0x520bc8=await API['getCurrentUser']());if(_0x520bc8){const _0x1b8ad5=window['Permissions'],_0x45863c=_0x1b8ad5['hasServerPermission'](_0x520bc8,'*')||_0x1b8ad5['hasEnvPermission'](_0x520bc8,'environments:manage')||_0x1b8ad5['hasServerPermission'](_0x520bc8,'users:create')||_0x1b8ad5['hasTeamPermission'](_0x520bc8,'teams:manage')||_0x1b8ad5['hasEnvPermission'](_0x520bc8,'environments:view_details');if(!_0x45863c)return;_0x530015['hidden']=![];if(!_0x1b8ad5['hasServerPermission'](_0x520bc8,'*')){const _0x422bf9=_0x1284c6['querySelectorAll']('.admin-menu-item');_0x422bf9['forEach'](_0x2a8ffb=>{const _0x50a83c=_0x2a8ffb['querySelector']('.option-text')?.['textContent']?.['trim']();_0x50a83c==='Users'&&!_0x1b8ad5['hasServerPermission'](_0x520bc8,'users:create')&&(_0x2a8ffb['hidden']=!![]),_0x50a83c==='Skills'&&(_0x2a8ffb['hidden']=!![]),_0x50a83c==='Server\x20Settings'&&(_0x2a8ffb['hidden']=!![]),_0x50a83c==='Server\x20Administration'&&(_0x2a8ffb['hidden']=!![]),_0x50a83c==='Git\x20History'&&(_0x2a8ffb['hidden']=!![]),_0x50a83c==='Roles'&&(_0x2a8ffb['hidden']=!![]);});}_0x3745f9['addEventListener']('click',_0x360252=>{_0x360252['stopPropagation']();const _0x16eb6d=document['getElementById']('actions-menu');if(_0x16eb6d)_0x16eb6d['hidden']=!![];_0x1284c6['hidden']=!_0x1284c6['hidden'];}),document['addEventListener']('click',_0x30e080=>{!_0x1284c6['hidden']&&!_0x3745f9['contains'](_0x30e080['target'])&&!_0x1284c6['contains'](_0x30e080['target'])&&(_0x1284c6['hidden']=!![]);}),document['addEventListener']('keydown',_0x1fc82e=>{_0x1fc82e['key']==='Escape'&&!_0x1284c6['hidden']&&(_0x1284c6['hidden']=!![]);});}}catch(_0x1fb56b){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1fb56b['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 _0x53289e=window['location']['pathname'],_0x1fc754=_0x53289e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1fc754)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1fc754[0x1]),_0x1fc754[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4225c0={}){const _0x3ba4e8=new URLSearchParams();_0x4225c0['userId']&&_0x3ba4e8['set']('userId',String(_0x4225c0['userId']));_0x4225c0['automation']&&_0x3ba4e8['set']('automation',String(_0x4225c0['automation']));const _0x2d6e6d=API_BASE+'/tasks/stats'+(_0x3ba4e8['toString']()?'?'+_0x3ba4e8['toString']():''),_0x41d610=await fetch(_0x2d6e6d);if(!_0x41d610['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x41d610['statusText']);return await _0x41d610['json']();},async 'getTasks'(_0x11e500={}){const _0x180179=new URLSearchParams();_0x11e500['status']&&_0x180179['set']('status',String(_0x11e500['status']));_0x11e500['environment']&&_0x180179['set']('environment',String(_0x11e500['environment']));_0x11e500['automation']&&_0x180179['set']('automation',String(_0x11e500['automation']));if(_0x11e500['include']){const _0x12b43f=Array['isArray'](_0x11e500['include'])?_0x11e500['include']['join'](','):String(_0x11e500['include']);_0x12b43f&&_0x180179['set']('include',_0x12b43f);}_0x11e500['filter']&&_0x180179['set']('filter',String(_0x11e500['filter']));_0x11e500['page']&&_0x180179['set']('page',String(_0x11e500['page']));_0x11e500['limit']&&_0x180179['set']('limit',String(_0x11e500['limit']));_0x11e500['userId']&&_0x180179['set']('userId',String(_0x11e500['userId']));_0x11e500['search']&&_0x180179['set']('search',String(_0x11e500['search']));_0x11e500['includeChildTasks']&&_0x180179['set']('includeChildTasks','true');const _0x6c20a9=API_BASE+'/tasks'+(_0x180179['toString']()?'?'+_0x180179['toString']():''),_0x2405dd=await fetch(_0x6c20a9);if(!_0x2405dd['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x2405dd['statusText']);return await _0x2405dd['json']();},async 'getAutomations'(_0x34b52b={}){const _0x4da454=new URLSearchParams();_0x34b52b['environment']&&_0x4da454['set']('environment',String(_0x34b52b['environment']));const _0x1b18fb=await fetch(API_BASE+'/api/automations'+(_0x4da454['toString']()?'?'+_0x4da454['toString']():''));if(!_0x1b18fb['ok']){const _0x49ae52=await _0x1b18fb['json']()['catch'](()=>({}));throw new Error(_0x49ae52['message']||_0x49ae52['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1b18fb['statusText']);}return await _0x1b18fb['json']();},async 'getAutomation'(_0x55ffdc){const _0x548da0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55ffdc));if(!_0x548da0['ok']){const _0x273710=await _0x548da0['json']()['catch'](()=>({}));throw new Error(_0x273710['message']||_0x273710['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x548da0['statusText']);}return await _0x548da0['json']();},async 'createAutomation'(_0x26f46a){const _0x19a7b9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f46a||{})});if(!_0x19a7b9['ok']){const _0x3999e7=await _0x19a7b9['json']()['catch'](()=>({}));throw new Error(_0x3999e7['message']||_0x3999e7['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x19a7b9['statusText']);}return await _0x19a7b9['json']();},async 'updateAutomation'(_0x1556d0,_0x429b57){const _0x42c5f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1556d0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x429b57||{})});if(!_0x42c5f5['ok']){const _0x2a6c87=await _0x42c5f5['json']()['catch'](()=>({}));throw new Error(_0x2a6c87['message']||_0x2a6c87['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x42c5f5['statusText']);}return await _0x42c5f5['json']();},async 'deleteAutomation'(_0x442b38){const _0x104062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x442b38),{'method':'DELETE'});if(!_0x104062['ok']){const _0x4b0738=await _0x104062['json']()['catch'](()=>({}));throw new Error(_0x4b0738['message']||_0x4b0738['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x104062['statusText']);}return await _0x104062['json']();},async 'triggerAutomation'(_0x1a12e2){const _0x3527c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a12e2)+'/trigger',{'method':'POST'});if(!_0x3527c0['ok']){const _0x3be143=await _0x3527c0['json']()['catch'](()=>({}));throw new Error(_0x3be143['message']||_0x3be143['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3527c0['statusText']);}return await _0x3527c0['json']();},async 'setAutomationEnabled'(_0xbd2688,_0x5c5cb4){const _0x312d48=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xbd2688)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5cb4})});if(!_0x312d48['ok']){const _0x981cbd=await _0x312d48['json']()['catch'](()=>({}));throw new Error(_0x981cbd['message']||_0x981cbd['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x312d48['statusText']);}return await _0x312d48['json']();},async 'getAutomationHistory'(_0x590dc0,_0x1952c0=0x32){const _0x2db719=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x590dc0)+'/history?limit='+encodeURIComponent(String(_0x1952c0)));if(!_0x2db719['ok']){const _0x1f3b42=await _0x2db719['json']()['catch'](()=>({}));throw new Error(_0x1f3b42['message']||_0x1f3b42['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x2db719['statusText']);}return await _0x2db719['json']();},async 'getTask'(_0x1af208,_0x2d0eb2={}){const _0xb8a014=new URLSearchParams();if(_0x2d0eb2['include']){const _0x3ba907=Array['isArray'](_0x2d0eb2['include'])?_0x2d0eb2['include']['join'](','):String(_0x2d0eb2['include']);if(_0x3ba907)_0xb8a014['set']('include',_0x3ba907);}const _0x1d6f25=await fetch(API_BASE+'/tasks/'+_0x1af208+(_0xb8a014['toString']()?'?'+_0xb8a014['toString']():''));if(!_0x1d6f25['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d6f25['statusText']);return await _0x1d6f25['json']();},async 'getTaskResults'(_0x5849e8){const _0x483ae5=await fetch(API_BASE+'/tasks/'+_0x5849e8+'/results');if(!_0x483ae5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x483ae5['statusText']);return await _0x483ae5['json']();},async 'getTaskPatches'(_0x5086ea){const _0x422c49=await fetch(API_BASE+'/tasks/'+_0x5086ea+'/patches');if(!_0x422c49['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x422c49['statusText']);return await _0x422c49['json']();},async 'getTaskAttachments'(_0x9dfeab){const _0x24872b=await fetch(API_BASE+'/tasks/'+_0x9dfeab+'/attachments');if(!_0x24872b['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x24872b['statusText']);return await _0x24872b['json']();},async 'uploadAttachments'(_0x26dce5,_0x2b17fe){const _0x5129d2=new FormData();for(const _0x1a730f of _0x2b17fe){_0x5129d2['append']('attachments',_0x1a730f);}const _0x3f3d49=await fetch(API_BASE+'/tasks/'+_0x26dce5+'/attachments',{'method':'POST','body':_0x5129d2});if(!_0x3f3d49['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3f3d49['statusText']);return await _0x3f3d49['json']();},async 'isAINameGenerationAvailable'(){try{const _0x23e2bb=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x23e2bb['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x23e2bb['json']();}catch(_0x427a01){return{'available':![],'reason':_0x427a01['message']};}},async 'generateTaskName'(_0x464151){try{const _0x593395=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x464151})});return await _0x593395['json']();}catch(_0x973267){return{'success':![],'error':_0x973267['message']};}},async 'createTask'(_0x126f03){let _0x470552,_0x4b106f={};if(_0x126f03['files']&&_0x126f03['files']['length']>0x0){const _0x492695=new FormData();for(const [_0x243b1c,_0x1314e9]of Object['entries'](_0x126f03)){if(_0x243b1c!=='files'){if(_0x1314e9==null)continue;typeof _0x1314e9==='object'?_0x492695['append'](_0x243b1c,JSON['stringify'](_0x1314e9)):_0x492695['append'](_0x243b1c,String(_0x1314e9));}}for(const _0x140737 of _0x126f03['files']){_0x492695['append']('attachments',_0x140737);}_0x470552=_0x492695;}else _0x4b106f['Content-Type']='application/json',_0x470552=JSON['stringify'](_0x126f03);const _0x5a8dd1=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b106f,'body':_0x470552});if(!_0x5a8dd1['ok']){const _0x465cb0=await _0x5a8dd1['json'](),_0x431ef1=new Error(_0x465cb0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5a8dd1['statusText']),{message:_0x3b068f,..._0x35a5d2}=_0x465cb0;Object['assign'](_0x431ef1,_0x35a5d2);throw _0x431ef1;}return await _0x5a8dd1['json']();},async 'createTestTask'(_0x3967d9){const _0x59fa=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3967d9)});if(!_0x59fa['ok']){const _0x5a095c=await _0x59fa['json']();throw new Error(_0x5a095c['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x59fa['statusText']);}return await _0x59fa['json']();},async 'createEphemeralTest'(_0x53123e){const _0x2818e1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53123e)});if(!_0x2818e1['ok']){const _0x19c93d=await _0x2818e1['json']();throw new Error(_0x19c93d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2818e1['statusText']);}return await _0x2818e1['json']();},async 'createDeployTask'(_0x4e9a35){const _0x1351ed=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e9a35)});if(!_0x1351ed['ok']){const _0x5e911b=await _0x1351ed['json']();throw new Error(_0x5e911b['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1351ed['statusText']);}return await _0x1351ed['json']();},async 'getEnvironments'(){const _0x16219c=await fetch(API_BASE+'/environments');if(!_0x16219c['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16219c['statusText']);return await _0x16219c['json']();},async 'getEnvironment'(_0xd021d3){const _0x135ff6=await fetch(API_BASE+'/environments/'+_0xd021d3);if(!_0x135ff6['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x135ff6['statusText']);return await _0x135ff6['json']();},async 'getEnvironmentRepoHistory'(_0x22a3b7,_0x2861d4,_0x247d36={}){if(!_0x22a3b7||!_0x2861d4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5acdc0=new URLSearchParams();if(_0x247d36['limit'])_0x5acdc0['set']('limit',String(_0x247d36['limit']));if(_0x247d36['offset'])_0x5acdc0['set']('offset',String(_0x247d36['offset']));if(_0x247d36['search'])_0x5acdc0['set']('search',String(_0x247d36['search']));if(_0x247d36['branch'])_0x5acdc0['set']('branch',String(_0x247d36['branch']));const _0x36d983=API_BASE+'/environments/'+encodeURIComponent(_0x22a3b7)+'/repos/'+encodeURIComponent(_0x2861d4)+'/git/history',_0x30d974=await fetch(''+_0x36d983+(_0x5acdc0['toString']()?'?'+_0x5acdc0['toString']():''));if(!_0x30d974['ok']){const _0x5f0796=await _0x30d974['json']()['catch'](()=>({}));throw new Error(_0x5f0796['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x30d974['statusText']);}return await _0x30d974['json']();},async 'getEnvironmentRepoCommit'(_0x164a8a,_0x1cfbe8,_0x757f1){if(!_0x164a8a||!_0x1cfbe8||!_0x757f1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4020cd=API_BASE+'/environments/'+encodeURIComponent(_0x164a8a)+'/repos/'+encodeURIComponent(_0x1cfbe8)+'/git/commits/'+encodeURIComponent(_0x757f1),_0x3dc8ea=await fetch(_0x4020cd);if(!_0x3dc8ea['ok']){const _0x3d4eec=await _0x3dc8ea['json']()['catch'](()=>({}));throw new Error(_0x3d4eec['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3dc8ea['statusText']);}return await _0x3dc8ea['json']();},async 'getEnvironmentRepoBranches'(_0x253990,_0x5aee2a){if(!_0x253990||!_0x5aee2a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x34ea14=API_BASE+'/environments/'+encodeURIComponent(_0x253990)+'/repos/'+encodeURIComponent(_0x5aee2a)+'/git/branches',_0x21e8fa=await fetch(_0x34ea14);if(!_0x21e8fa['ok']){const _0x37bd4f=await _0x21e8fa['json']()['catch'](()=>({}));throw new Error(_0x37bd4f['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x21e8fa['statusText']);}return await _0x21e8fa['json']();},async 'revertEnvironmentRepoCommit'(_0x370a23,_0x1adec1,_0xc53163,_0x40ebe6={}){if(!_0x370a23||!_0x1adec1||!_0xc53163)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x248026=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x370a23)+'/repos/'+encodeURIComponent(_0x1adec1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xc53163,..._0x40ebe6})});if(!_0x248026['ok']){const _0x435f26=await _0x248026['json']()['catch'](()=>({}));throw new Error(_0x435f26['message']||_0x435f26['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x248026['statusText']);}return await _0x248026['json']();},async 'getTemplates'(_0x1c3c1e={}){const _0x3d9f00=new URLSearchParams();if(_0x1c3c1e['include']){const _0x208a4b=Array['isArray'](_0x1c3c1e['include'])?_0x1c3c1e['include']['join'](','):String(_0x1c3c1e['include']);if(_0x208a4b)_0x3d9f00['set']('include',_0x208a4b);}const _0x8f155e=await fetch(API_BASE+'/templates'+(_0x3d9f00['toString']()?'?'+_0x3d9f00['toString']():''));if(!_0x8f155e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x8f155e['statusText']);return await _0x8f155e['json']();},async 'getTemplatesForEnvironment'(_0x5c592b,_0x18d723={}){if(!_0x5c592b)throw new Error('Environment\x20name\x20is\x20required');const _0x4cded4=new URLSearchParams();if(_0x18d723['include']){const _0x281904=Array['isArray'](_0x18d723['include'])?_0x18d723['include']['join'](','):String(_0x18d723['include']);if(_0x281904)_0x4cded4['set']('include',_0x281904);}const _0x323d47=await fetch(API_BASE+'/templates/'+_0x5c592b+(_0x4cded4['toString']()?'?'+_0x4cded4['toString']():''));if(!_0x323d47['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5c592b+':\x20'+_0x323d47['statusText']);return await _0x323d47['json']();},async 'getTemplate'(_0x123764,_0x6cddc0,_0x3232fe={}){if(!_0x123764||!_0x6cddc0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1d4f5d=new URLSearchParams();if(_0x3232fe['include']){const _0x4e99c0=Array['isArray'](_0x3232fe['include'])?_0x3232fe['include']['join'](','):String(_0x3232fe['include']);if(_0x4e99c0)_0x1d4f5d['set']('include',_0x4e99c0);}const _0x2a1336=await fetch(API_BASE+'/templates/'+_0x123764+'/'+_0x6cddc0+(_0x1d4f5d['toString']()?'?'+_0x1d4f5d['toString']():''));if(!_0x2a1336['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2a1336['statusText']);return await _0x2a1336['json']();},async 'getTaskLogs'(_0x2cebf0,_0x169caf={}){if(!_0x2cebf0)throw new Error('Task\x20ID\x20is\x20required');const _0x208bbb=new URLSearchParams();_0x169caf['tail']&&_0x208bbb['set']('tail',String(_0x169caf['tail']));const _0x1db1ef=await fetch(API_BASE+'/tasks/'+_0x2cebf0+'/logs'+(_0x208bbb['toString']()?'?'+_0x208bbb['toString']():''));if(!_0x1db1ef['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1db1ef['statusText']);return await _0x1db1ef['text']();},async 'getContainers'(){const _0x3013bd=await fetch(API_BASE+'/containers');if(!_0x3013bd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3013bd['statusText']);return await _0x3013bd['json']();},async 'getContainer'(_0x35e48d){const _0xb36253=await fetch(API_BASE+'/containers/'+_0x35e48d);if(!_0xb36253['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xb36253['statusText']);return await _0xb36253['json']();},async 'startInteractiveContainer'(_0x452527){const _0x2811f3=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452527)});if(!_0x2811f3['ok']){const _0x25175d=await _0x2811f3['json']()['catch'](()=>({}));throw new Error(_0x25175d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2811f3['statusText']);}return await _0x2811f3['json']();},async 'startContainerCodeServer'(_0x58716e,_0xb819d6={}){if(!_0x58716e)throw new Error('Container\x20ID\x20is\x20required');const _0x5cf958=new URLSearchParams();_0xb819d6['theme']&&_0x5cf958['set']('theme',_0xb819d6['theme']);const _0x790484=await fetch(API_BASE+'/containers/'+_0x58716e+'/code-server'+(_0x5cf958['toString']()?'?'+_0x5cf958['toString']():'')),_0x1968da=await _0x790484['json']()['catch'](()=>({}));if(!_0x790484['ok'])throw new Error(_0x1968da['message']||_0x1968da['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x790484['statusText']);return _0x1968da;},async 'stopContainer'(_0x67031){const _0x2a1a0f=await fetch(API_BASE+'/containers/'+_0x67031,{'method':'DELETE'});if(!_0x2a1a0f['ok']){const _0x5d32a9=await _0x2a1a0f['json']()['catch'](()=>({}));throw new Error(_0x5d32a9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2a1a0f['statusText']);}return await _0x2a1a0f['json']();},async 'stopTask'(_0x2b55f0){if(!_0x2b55f0)throw new Error('Task\x20ID\x20is\x20required');const _0x208c1c=await fetch(API_BASE+'/tasks/'+_0x2b55f0+'/stop',{'method':'POST'});if(!_0x208c1c['ok']){const _0x5c773d=await _0x208c1c['json']()['catch'](()=>({}));throw new Error(_0x5c773d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x208c1c['statusText']);}return await _0x208c1c['json']();},async 'interruptTask'(_0x5077b7){if(!_0x5077b7)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed614=await fetch(API_BASE+'/tasks/'+_0x5077b7+'/interrupt',{'method':'POST'});if(!_0x3ed614['ok']){const _0x201643=await _0x3ed614['json']()['catch'](()=>({}));throw new Error(_0x201643['error']||_0x201643['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ed614['statusText']);}return await _0x3ed614['json']();},async 'startTask'(_0x242f9a){if(!_0x242f9a)throw new Error('Task\x20ID\x20is\x20required');const _0x144289=await fetch(API_BASE+'/tasks/'+_0x242f9a+'/start',{'method':'POST'});if(!_0x144289['ok']){const _0x5d1e13=await _0x144289['json']()['catch'](()=>({}));throw new Error(_0x5d1e13['error']||'Failed\x20to\x20start\x20task:\x20'+_0x144289['statusText']);}return await _0x144289['json']();},async 'deleteTask'(_0x3cab86){if(!_0x3cab86)throw new Error('Task\x20ID\x20is\x20required');const _0xa2a87b=await fetch(API_BASE+'/tasks/'+_0x3cab86,{'method':'DELETE'});if(!_0xa2a87b['ok']){const _0x2db07b=await _0xa2a87b['json']()['catch'](()=>({}));throw new Error(_0x2db07b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xa2a87b['statusText']);}return await _0xa2a87b['json']();},async 'refreshTasksFromDisk'(){const _0x1b4c8f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b4c8f['ok']){const _0x1ce812=await _0x1b4c8f['json']()['catch'](()=>({}));throw new Error(_0x1ce812['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b4c8f['statusText']);}return await _0x1b4c8f['json']();},async 'approveTask'(_0x426357,_0x2bd1fa={}){if(!_0x426357)throw new Error('Task\x20ID\x20is\x20required');const _0x4a5280={'commit_message':_0x2bd1fa['commit_message']||'','pull':_0x2bd1fa['pull']??![],'push':_0x2bd1fa['push']??![],'conflict_strategy':_0x2bd1fa['conflict_strategy']||'rebase'};_0x2bd1fa['new_branch']&&(_0x4a5280['new_branch']=_0x2bd1fa['new_branch']);const _0x391269=await fetch(API_BASE+'/tasks/'+_0x426357+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a5280)});if(!_0x391269['ok']){const _0x4a9784=await _0x391269['json']()['catch'](()=>({}));let _0x220d94=_0x4a9784['error']||_0x4a9784['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x391269['statusText'];if(_0x4a9784['results']&&Array['isArray'](_0x4a9784['results'])){const _0x570faf=_0x4a9784['results']['filter'](_0x4b496e=>!_0x4b496e['success']&&_0x4b496e['error']);_0x570faf['length']>0x0&&(_0x220d94=_0x570faf[0x0]['error']);}const _0xbd0e5b=new Error(_0x220d94);_0xbd0e5b['hasConflicts']=_0x4a9784['results']?.['some'](_0x4189fb=>_0x4189fb['conflict'])||![];throw _0xbd0e5b;}return await _0x391269['json']();},async 'getPullRequestInfo'(_0x1a0105){if(!_0x1a0105)throw new Error('Task\x20ID\x20is\x20required');const _0x178287=await fetch(API_BASE+'/tasks/'+_0x1a0105+'/pull-request-info');if(!_0x178287['ok']){const _0x5c738a=await _0x178287['json']()['catch'](()=>({}));throw new Error(_0x5c738a['error']||_0x5c738a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x178287['statusText']);}return await _0x178287['json']();},async 'createPullRequests'(_0x3db37a,_0x1da76f){if(!_0x3db37a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1da76f||!Array['isArray'](_0x1da76f))throw new Error('repos\x20array\x20is\x20required');const _0x7904c=await fetch(API_BASE+'/tasks/'+_0x3db37a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1da76f})});if(!_0x7904c['ok']){const _0x507a7f=await _0x7904c['json']()['catch'](()=>({}));let _0x22fdb6=_0x507a7f['error']||_0x507a7f['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x7904c['statusText'];if(_0x507a7f['results']&&Array['isArray'](_0x507a7f['results'])){const _0x59aeb0=_0x507a7f['results']['filter'](_0x29e769=>!_0x29e769['success']&&_0x29e769['error']);_0x59aeb0['length']>0x0&&(_0x22fdb6=_0x59aeb0[0x0]['error']);}throw new Error(_0x22fdb6);}return await _0x7904c['json']();},async 'syncRepos'(_0x4a013c){if(!_0x4a013c)throw new Error('Task\x20ID\x20is\x20required');const _0x5962e4=await fetch(API_BASE+'/tasks/'+_0x4a013c+'/sync-repos',{'method':'POST'});if(!_0x5962e4['ok']){const _0x2960e4=await _0x5962e4['json']()['catch'](()=>({}));throw new Error(_0x2960e4['error']||_0x2960e4['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5962e4['statusText']);}return await _0x5962e4['json']();},async 'getIbmiSyncInfo'(_0x320314){if(!_0x320314)throw new Error('Task\x20ID\x20is\x20required');const _0x50a656=await fetch(API_BASE+'/tasks/'+_0x320314+'/ibmi-sync-info');if(!_0x50a656['ok']){const _0x2c8afb=await _0x50a656['json']()['catch'](()=>({}));throw new Error(_0x2c8afb['error']||_0x2c8afb['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x50a656['json']();},async 'getSyncFiles'(_0x14c30b){if(!_0x14c30b)throw new Error('Task\x20ID\x20is\x20required');const _0xdf7b7a=await fetch(API_BASE+'/tasks/'+_0x14c30b+'/sync-to-ibmi/files');if(!_0xdf7b7a['ok']){const _0x26f4f4=await _0xdf7b7a['json']()['catch'](()=>({}));throw new Error(_0x26f4f4['error']||_0x26f4f4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xdf7b7a['json']();},async 'syncToIbmi'(_0x23bcc5,_0x1d04a8,_0x4befbe=null,_0x3bb7c7=null,_0x4574db=null){if(!_0x23bcc5)throw new Error('Task\x20ID\x20is\x20required');const _0x4ee7bb={'library':_0x1d04a8};if(_0x4befbe)_0x4ee7bb['user']=_0x4befbe;if(_0x3bb7c7)_0x4ee7bb['password']=_0x3bb7c7;if(_0x4574db)_0x4ee7bb['files']=_0x4574db;const _0x2c4176=await fetch(API_BASE+'/tasks/'+_0x23bcc5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ee7bb)});if(!_0x2c4176['ok']){const _0x47771a=await _0x2c4176['json']()['catch'](()=>({}));throw new Error(_0x47771a['error']||_0x47771a['message']||'Sync\x20failed');}return await _0x2c4176['json']();},async 'getIbmiSyncLog'(_0x4474a1){if(!_0x4474a1)throw new Error('Task\x20ID\x20is\x20required');const _0x482ebc=await fetch(API_BASE+'/tasks/'+_0x4474a1+'/ibmi-sync-log');if(!_0x482ebc['ok']){const _0x24676b=await _0x482ebc['json']()['catch'](()=>({}));throw new Error(_0x24676b['error']||_0x24676b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x482ebc['json']();},async 'pullChanges'(_0x1cba63){if(!_0x1cba63)throw new Error('Task\x20ID\x20is\x20required');const _0x448886=await fetch(API_BASE+'/tasks/'+_0x1cba63+'/pull-changes',{'method':'POST'});if(!_0x448886['ok']){const _0x17ea6a=await _0x448886['json']()['catch'](()=>({}));throw new Error(_0x17ea6a['error']||_0x17ea6a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x448886['statusText']);}return await _0x448886['json']();},async 'readFile'(_0x300395,_0xb263dd){if(!_0x300395)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb263dd)throw new Error('File\x20path\x20is\x20required');const _0x82af80=await fetch(API_BASE+'/tasks/'+_0x300395+'/files?path='+encodeURIComponent(_0xb263dd));if(!_0x82af80['ok']){const _0x6b84ed=await _0x82af80['json']()['catch'](()=>({}));throw new Error(_0x6b84ed['error']||_0x6b84ed['message']||'Failed\x20to\x20read\x20file:\x20'+_0x82af80['statusText']);}return await _0x82af80['json']();},'getTaskFileDownloadUrl'(_0x3795fa,_0x593670){if(!_0x3795fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x593670)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3795fa+'/files/download?path='+encodeURIComponent(_0x593670);},async 'writeFile'(_0x2963dd,_0x8fb832,_0x58ec51){if(!_0x2963dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8fb832)throw new Error('File\x20path\x20is\x20required');if(_0x58ec51===undefined)throw new Error('Content\x20is\x20required');const _0x35e634=await fetch(API_BASE+'/tasks/'+_0x2963dd+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x8fb832,'content':_0x58ec51})});if(!_0x35e634['ok']){const _0x3a49b9=await _0x35e634['json']()['catch'](()=>({}));throw new Error(_0x3a49b9['error']||_0x3a49b9['message']||'Failed\x20to\x20write\x20file:\x20'+_0x35e634['statusText']);}return await _0x35e634['json']();},async 'uploadTaskFiles'(_0x48863d,_0x93aea3,_0x334f4a){if(!_0x48863d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x93aea3)throw new Error('Target\x20directory\x20is\x20required');if(!_0x334f4a||_0x334f4a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4d9255=new FormData();_0x4d9255['append']('targetDir',_0x93aea3);for(const _0x3ec91a of _0x334f4a){_0x4d9255['append']('files',_0x3ec91a,_0x3ec91a['name']);}const _0x266f80=await fetch(API_BASE+'/tasks/'+_0x48863d+'/files/upload',{'method':'POST','body':_0x4d9255});if(!_0x266f80['ok']){const _0x510aba=await _0x266f80['json']()['catch'](()=>({}));throw new Error(_0x510aba['error']||_0x510aba['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x266f80['statusText']);}return await _0x266f80['json']();},async 'createDirectory'(_0x566c12,_0xce9ff2){if(!_0x566c12)throw new Error('Task\x20ID\x20is\x20required');if(!_0xce9ff2)throw new Error('Directory\x20path\x20is\x20required');const _0x11c0e9=await fetch(API_BASE+'/tasks/'+_0x566c12+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xce9ff2})});if(!_0x11c0e9['ok']){const _0x54a3b1=await _0x11c0e9['json']()['catch'](()=>({}));throw new Error(_0x54a3b1['error']||_0x54a3b1['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x11c0e9['statusText']);}return await _0x11c0e9['json']();},async 'renamePath'(_0x5288db,_0x54c103,_0x1078c1){if(!_0x5288db)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54c103)throw new Error('Source\x20path\x20is\x20required');if(!_0x1078c1)throw new Error('Destination\x20path\x20is\x20required');const _0x35e922=await fetch(API_BASE+'/tasks/'+_0x5288db+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x54c103,'newPath':_0x1078c1})});if(!_0x35e922['ok']){const _0x2f3c7b=await _0x35e922['json']()['catch'](()=>({}));throw new Error(_0x2f3c7b['error']||_0x2f3c7b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x35e922['statusText']);}return await _0x35e922['json']();},async 'deleteFile'(_0x53484a,_0x6c499e){if(!_0x53484a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6c499e)throw new Error('File\x20path\x20is\x20required');const _0x416841=await fetch(API_BASE+'/tasks/'+_0x53484a+'/files?path='+encodeURIComponent(_0x6c499e),{'method':'DELETE'});if(!_0x416841['ok']){const _0x4b8aa0=await _0x416841['json']()['catch'](()=>({}));throw new Error(_0x4b8aa0['error']||_0x4b8aa0['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x416841['statusText']);}return await _0x416841['json']();},async 'deleteDirectory'(_0x46bb2d,_0x54542b){if(!_0x46bb2d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54542b)throw new Error('Directory\x20path\x20is\x20required');const _0x5807f5=await fetch(API_BASE+'/tasks/'+_0x46bb2d+'/files/directory?path='+encodeURIComponent(_0x54542b),{'method':'DELETE'});if(!_0x5807f5['ok']){const _0xcd699a=await _0x5807f5['json']()['catch'](()=>({}));throw new Error(_0xcd699a['error']||_0xcd699a['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5807f5['statusText']);}return await _0x5807f5['json']();},async 'discardFile'(_0x1fc943,_0x1273c3,_0x4aa956){if(!_0x1fc943)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1273c3)throw new Error('File\x20path\x20is\x20required');if(!_0x4aa956)throw new Error('Repository\x20path\x20is\x20required');const _0x384786=await fetch(API_BASE+'/tasks/'+_0x1fc943+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1273c3,'repoPath':_0x4aa956})});if(!_0x384786['ok']){const _0x1bae1e=await _0x384786['json']()['catch'](()=>({}));throw new Error(_0x1bae1e['error']||_0x1bae1e['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x384786['statusText']);}return await _0x384786['json']();},async 'followUpTask'(_0x44e70e,_0x1f1783={}){if(!_0x44e70e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f1783['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2341ae,_0x46630c={};if(_0x1f1783['files']&&_0x1f1783['files']['length']>0x0){const _0x445a12=new FormData();_0x445a12['append']('instructions',_0x1f1783['instructions']);for(const _0xe49b81 of _0x1f1783['files']){_0x445a12['append']('attachments',_0xe49b81);}_0x2341ae=_0x445a12;}else _0x46630c['Content-Type']='application/json',_0x2341ae=JSON['stringify']({'instructions':_0x1f1783['instructions']});const _0x5ea7c7=await fetch(API_BASE+'/tasks/'+_0x44e70e+'/follow-up',{'method':'POST','headers':_0x46630c,'body':_0x2341ae});if(!_0x5ea7c7['ok']){const _0x4a5b3f=await _0x5ea7c7['json']()['catch'](()=>({}));throw new Error(_0x4a5b3f['error']||_0x4a5b3f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5ea7c7['statusText']);}return await _0x5ea7c7['json']();},async 'getTaskRewindPoints'(_0x1c4e6f){if(!_0x1c4e6f)throw new Error('Task\x20ID\x20is\x20required');const _0x329def=await fetch(API_BASE+'/tasks/'+_0x1c4e6f+'/rewind-points');if(!_0x329def['ok']){const _0x4b27be=await _0x329def['json']()['catch'](()=>({}));throw new Error(_0x4b27be['error']||_0x4b27be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x329def['statusText']);}return await _0x329def['json']();},async 'rewindTask'(_0x4c63f7,_0x575389={}){if(!_0x4c63f7)throw new Error('Task\x20ID\x20is\x20required');const _0x30adae=Number['isInteger'](_0x575389['targetFollowUpCount'])?_0x575389['targetFollowUpCount']:0x0,_0x344ddb={'targetFollowUpCount':_0x30adae};typeof _0x575389['instructions']==='string'&&_0x575389['instructions']['trim']()&&(_0x344ddb['instructions']=_0x575389['instructions']['trim']());typeof _0x575389['rewindFiles']==='boolean'&&(_0x344ddb['rewindFiles']=_0x575389['rewindFiles']);const _0x31d466=await fetch(API_BASE+'/tasks/'+_0x4c63f7+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344ddb)});if(!_0x31d466['ok']){const _0x133b04=await _0x31d466['json']()['catch'](()=>({}));throw new Error(_0x133b04['error']||_0x133b04['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x31d466['statusText']);}return await _0x31d466['json']();},async 'login'(_0x43a451,_0x574bf5){const _0x50b939=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x43a451,'password':_0x574bf5})});if(!_0x50b939['ok']){const _0x46ea69=await _0x50b939['json']();throw new Error(_0x46ea69['message']||'Login\x20failed');}return await _0x50b939['json']();},async 'logout'(){const _0x475a52=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x475a52['ok']){const _0x5311a5=await _0x475a52['json']();throw new Error(_0x5311a5['message']||'Logout\x20failed');}return await _0x475a52['json']();},async 'getCurrentUser'(){const _0x2c392a=await fetch(API_BASE+'/auth/me');if(!_0x2c392a['ok'])throw new Error('Not\x20authenticated');const _0x46ecfd=await _0x2c392a['json']();return _0x46ecfd['user'];},async 'getRolesInfo'(){const _0x270ee6=await fetch(API_BASE+'/users/roles');if(!_0x270ee6['ok']){const _0x1fa460=await _0x270ee6['json']();throw new Error(_0x1fa460['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x270ee6['json']();},async 'getUsers'(){const _0x5d96fc=await fetch(API_BASE+'/users');if(!_0x5d96fc['ok']){const _0x3c80f5=await _0x5d96fc['json']();throw new Error(_0x3c80f5['message']||'Failed\x20to\x20get\x20users');}return await _0x5d96fc['json']();},async 'getUser'(_0x10df34){const _0x234629=await fetch(API_BASE+'/users/'+_0x10df34);if(!_0x234629['ok']){const _0x3e6b4b=await _0x234629['json']();throw new Error(_0x3e6b4b['message']||'Failed\x20to\x20get\x20user');}return await _0x234629['json']();},async 'createUser'(_0x726b55){const _0x22a293=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x726b55)});if(!_0x22a293['ok']){const _0xd40f94=await _0x22a293['json']();throw new Error(_0xd40f94['message']||'Failed\x20to\x20create\x20user');}return await _0x22a293['json']();},async 'updateUser'(_0x15fddf,_0x41dc03){const _0x2d98d4=await fetch(API_BASE+'/users/'+_0x15fddf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41dc03)});if(!_0x2d98d4['ok']){const _0x3714cc=await _0x2d98d4['json']();throw new Error(_0x3714cc['message']||'Failed\x20to\x20update\x20user');}return await _0x2d98d4['json']();},async 'deleteUser'(_0x3d6921){const _0x1cbaff=await fetch(API_BASE+'/users/'+_0x3d6921,{'method':'DELETE'});if(!_0x1cbaff['ok']){const _0x4d1eb0=await _0x1cbaff['json']();throw new Error(_0x4d1eb0['message']||'Failed\x20to\x20delete\x20user');}return await _0x1cbaff['json']();},async 'stopAllContainers'(){const _0x36a71e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x5b7594=await _0x36a71e['json']()['catch'](()=>({}));if(!_0x36a71e['ok'])throw new Error(_0x5b7594['message']||_0x5b7594['error']||'Failed\x20to\x20stop\x20containers');return _0x5b7594;},async 'removeStoppedContainers'(){const _0x3023ba=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1f5635=await _0x3023ba['json']()['catch'](()=>({}));if(!_0x3023ba['ok'])throw new Error(_0x1f5635['message']||_0x1f5635['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1f5635;},async 'pruneDockerResources'(){const _0x26b1eb=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x768d30=await _0x26b1eb['json']()['catch'](()=>({}));if(!_0x26b1eb['ok'])throw new Error(_0x768d30['message']||_0x768d30['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x768d30;},async 'getUpdateSettings'(){const _0x3ae464=await fetch(API_BASE+'/health/update-settings'),_0x5a66e9=await _0x3ae464['json']()['catch'](()=>({}));if(!_0x3ae464['ok'])throw new Error(_0x5a66e9['message']||_0x5a66e9['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5a66e9;},async 'applyServerUpdate'(_0x47ca79){const _0x2f3667=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x47ca79})}),_0xed2e73=await _0x2f3667['json']()['catch'](()=>({}));if(!_0x2f3667['ok']){const _0x129963=new Error(_0xed2e73['message']||_0xed2e73['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0xed2e73['output']!==undefined)_0x129963['output']=_0xed2e73['output'];if(_0xed2e73['error']!==undefined)_0x129963['commandError']=_0xed2e73['error'];throw _0x129963;}return _0xed2e73;},async 'restartServer'(){const _0x44679a=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x31e5c9=await _0x44679a['json']()['catch'](()=>({}));if(!_0x44679a['ok'])throw new Error(_0x31e5c9['message']||_0x31e5c9['error']||'Failed\x20to\x20restart\x20server');return _0x31e5c9;},async 'createPasswordToken'(_0x475302,_0x18493c='setup',_0x1e5a04=![]){const _0x2b8f2a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x475302,'type':_0x18493c,'sendEmail':_0x1e5a04})});if(!_0x2b8f2a['ok']){const _0x36c886=await _0x2b8f2a['json']();throw new Error(_0x36c886['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2b8f2a['json']();},async 'getEmailConfig'(){const _0x41e8f7=await fetch(API_BASE+'/password/email-config');if(!_0x41e8f7['ok']){const _0x74d872=await _0x41e8f7['json']();throw new Error(_0x74d872['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x41e8f7['json']();},async 'updateTaskName'(_0x191501,_0x1cf17d){const _0x345ae1=await fetch(API_BASE+'/tasks/'+_0x191501,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1cf17d})});if(!_0x345ae1['ok']){const _0x4d0a98=await _0x345ae1['json']();throw new Error(_0x4d0a98['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x345ae1['json']();},async 'pinTask'(_0x37397a,_0x4f2047,_0x257437=null){if(!_0x37397a)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8e1b={'pinned':_0x4f2047};_0x257437&&_0x257437['length']>0x0&&(_0x4f8e1b['additionalTaskIds']=_0x257437);const _0xa41075=await fetch(API_BASE+'/tasks/'+_0x37397a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f8e1b)});if(!_0xa41075['ok']){const _0x520326=await _0xa41075['json']();throw new Error(_0x520326['error']||'Failed\x20to\x20pin\x20task');}return await _0xa41075['json']();},async 'setTaskWinner'(_0x649c8,_0x4f9447,_0x2dc498=[]){if(!_0x649c8)throw new Error('Task\x20ID\x20is\x20required');const _0x5877a7=await fetch(API_BASE+'/tasks/'+_0x649c8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4f9447,'siblings':_0x2dc498})});if(!_0x5877a7['ok']){const _0x436ac4=await _0x5877a7['json']();throw new Error(_0x436ac4['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x5877a7['json']();},async 'setTaskLoser'(_0x52dfbf,_0x54f95b){if(!_0x52dfbf)throw new Error('Task\x20ID\x20is\x20required');const _0x15fe0a=await fetch(API_BASE+'/tasks/'+_0x52dfbf+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x54f95b})});if(!_0x15fe0a['ok']){const _0x2831ce=await _0x15fe0a['json']();throw new Error(_0x2831ce['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x15fe0a['json']();},async 'createTaskGroup'(_0x1d69e9){const _0x208321=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d69e9)});if(!_0x208321['ok']){const _0x189297=await _0x208321['json']();throw new Error(_0x189297['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x208321['json']();},async 'getTaskGroups'(_0xf9a147={}){const _0x16bed6=new URLSearchParams();if(_0xf9a147['userId'])_0x16bed6['set']('userId',String(_0xf9a147['userId']));if(_0xf9a147['status'])_0x16bed6['set']('status',String(_0xf9a147['status']));if(_0xf9a147['limit'])_0x16bed6['set']('limit',String(_0xf9a147['limit']));const _0x4d4bc4=API_BASE+'/tasks/groups'+(_0x16bed6['toString']()?'?'+_0x16bed6['toString']():''),_0x2b1c81=await fetch(_0x4d4bc4);if(!_0x2b1c81['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b1c81['json']();},async 'getTaskGroup'(_0x577b40){const _0x3f5deb=await fetch(API_BASE+'/tasks/groups/'+_0x577b40);if(!_0x3f5deb['ok']){const _0x5a9d88=await _0x3f5deb['json']();throw new Error(_0x5a9d88['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3f5deb['json']();},async 'updateTaskGroup'(_0x30fd26,_0x4cbe8e,_0x248735){const _0x3bcc7f=await fetch(API_BASE+'/tasks/'+_0x30fd26+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4cbe8e,'groupIndex':_0x248735})});if(!_0x3bcc7f['ok']){const _0x354952=await _0x3bcc7f['json']();throw new Error(_0x354952['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3bcc7f['json']();},async 'removeTaskFromGroup'(_0x5459c0){return this['updateTaskGroup'](_0x5459c0,null,null);},async 'deleteTaskGroup'(_0x5ad7d0,_0x25ae1a=![]){const _0x3a1598=_0x25ae1a?'?deleteTasks=true':'',_0x25bc37=await fetch(API_BASE+'/tasks/groups/'+_0x5ad7d0+_0x3a1598,{'method':'DELETE'});if(!_0x25bc37['ok']){const _0x97342b=await _0x25bc37['json']();throw new Error(_0x97342b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xfa9f46,_0x6d4658){const _0x4513fc=await fetch(API_BASE+'/tasks/groups/'+_0xfa9f46+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x6d4658})});if(!_0x4513fc['ok']){const _0x4f0e47=await _0x4513fc['json']();throw new Error(_0x4f0e47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4513fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x61e4a1){if(!_0x61e4a1)throw new Error('Task\x20ID\x20is\x20required');const _0x41a5d9=await fetch(API_BASE+'/tasks/'+_0x61e4a1+'/comments');if(!_0x41a5d9['ok']){const _0xc89182=await _0x41a5d9['json']()['catch'](()=>({}));throw new Error(_0xc89182['error']||'Failed\x20to\x20get\x20comments');}return await _0x41a5d9['json']();},async 'addComment'(_0x21921c,_0x4001e1){if(!_0x21921c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4001e1)throw new Error('Comment\x20content\x20is\x20required');const _0x4ed296=await fetch(API_BASE+'/tasks/'+_0x21921c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4001e1})});if(!_0x4ed296['ok']){const _0x4f21d1=await _0x4ed296['json']()['catch'](()=>({}));throw new Error(_0x4f21d1['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ed296['json']();},async 'updateComment'(_0x4b179b,_0x2d09ab,_0x43373a){if(!_0x4b179b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d09ab)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x43373a)throw new Error('Comment\x20content\x20is\x20required');const _0xc1a905=await fetch(API_BASE+'/tasks/'+_0x4b179b+'/comments/'+_0x2d09ab,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x43373a})});if(!_0xc1a905['ok']){const _0x5c4456=await _0xc1a905['json']()['catch'](()=>({}));throw new Error(_0x5c4456['error']||'Failed\x20to\x20update\x20comment');}return await _0xc1a905['json']();},async 'deleteComment'(_0xd58828,_0x595ecd){if(!_0xd58828)throw new Error('Task\x20ID\x20is\x20required');if(!_0x595ecd)throw new Error('Comment\x20ID\x20is\x20required');const _0x3ba757=await fetch(API_BASE+'/tasks/'+_0xd58828+'/comments/'+_0x595ecd,{'method':'DELETE'});if(!_0x3ba757['ok']){const _0x2a410f=await _0x3ba757['json']()['catch'](()=>({}));throw new Error(_0x2a410f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3ba757['json']();},async 'createObjective'(_0x471247){const _0x2ea3c3={'objective':!![],'name':_0x471247['name']||'','environment':_0x471247['environment']||null,'agents':_0x471247['agents']||[],'branches':_0x471247['branches']||{},'isPinned':_0x471247['isPinned']||![],'parentObjectiveId':_0x471247['parentObjectiveId']||null,'env_vars':_0x471247['envVars']||{},'parameters':{'instructions':_0x471247['instructions']||''},'files':_0x471247['files']||[],'jira':_0x471247['jira']||null};return this['createTask'](_0x2ea3c3);},async 'updateObjective'(_0x36f21d,_0x595f5a,_0x51c310=[],_0x526b18=[]){let _0x551f54,_0x45c96e={};const _0x126dd4={..._0x595f5a};_0x526b18&&_0x526b18['length']>0x0&&(_0x126dd4['removeAttachments']=_0x526b18);if(_0x51c310&&_0x51c310['length']>0x0){const _0x20d338=new FormData();for(const [_0x39d007,_0x540237]of Object['entries'](_0x126dd4)){if(_0x540237==null)continue;typeof _0x540237==='object'?_0x20d338['append'](_0x39d007,JSON['stringify'](_0x540237)):_0x20d338['append'](_0x39d007,String(_0x540237));}for(const _0x4a99ad of _0x51c310){_0x20d338['append']('attachments',_0x4a99ad);}_0x551f54=_0x20d338;}else _0x45c96e['Content-Type']='application/json',_0x551f54=JSON['stringify'](_0x126dd4);const _0x46225b=await fetch(API_BASE+'/tasks/'+_0x36f21d,{'method':'PATCH','headers':_0x45c96e,'body':_0x551f54});if(!_0x46225b['ok']){const _0x1b6e17=await _0x46225b['json']();throw new Error(_0x1b6e17['error']||'Failed\x20to\x20update\x20objective');}return await _0x46225b['json']();},async 'deleteObjective'(_0x59150a){return this['deleteTask'](_0x59150a);},async 'launchObjective'(_0x5a36ab,_0xf52db={}){const _0xacaad3=await fetch(API_BASE+'/tasks/'+_0x5a36ab+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf52db)});if(!_0xacaad3['ok']){const _0x17f35c=await _0xacaad3['json']();throw new Error(_0x17f35c['error']||'Failed\x20to\x20launch\x20objective');}return await _0xacaad3['json']();},async 'getObjectiveAttachments'(_0x532074){return this['getTaskAttachments'](_0x532074);},async 'createJudgeTask'({environment:_0x59956e,judgeAgent:_0x508c34,groupId:_0x4b8011,taskIds:_0x259173,judgeCustomInstructions:_0x535070,isPinned:_0x15be9b}){const _0x4b25c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59956e,'judgeAgent':_0x508c34,'groupId':_0x4b8011,'taskIds':_0x259173,'judgeCustomInstructions':_0x535070,'isPinned':_0x15be9b})});if(!_0x4b25c4['ok']){const _0x2268fe=await _0x4b25c4['json']();throw new Error(_0x2268fe['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4b25c4['json']();},async 'getJudgeTasks'(_0x28adf5){const _0x496210=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x28adf5));if(!_0x496210['ok']){const _0x187809=await _0x496210['json']();throw new Error(_0x187809['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x496210['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3250e9,_0x44b50a,_0x208971=''){const _0x2c6dad=await fetch(API_BASE+'/tasks/'+_0x3250e9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x44b50a,'customPreamble':_0x208971})});if(!_0x2c6dad['ok']){const _0xf69561=await _0x2c6dad['json']();throw new Error(_0xf69561['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2c6dad['json']();},async 'getJiraConfig'(){const _0x2b6e84=await fetch(API_BASE+'/jira/config');if(!_0x2b6e84['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2b6e84['json']();},async 'getJiraIssue'(_0x529564){const _0x3f66c0=await fetch(API_BASE+'/jira/issues/'+_0x529564);if(!_0x3f66c0['ok']){const _0x4c0e59=await _0x3f66c0['json']()['catch'](()=>({}));throw new Error(_0x4c0e59['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3f66c0['statusText']);}return await _0x3f66c0['json']();},async 'searchJiraIssues'(_0x466e35,_0xc17cb3=0x14){const _0x497bda=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x466e35,'maxResults':_0xc17cb3})});if(!_0x497bda['ok']){const _0x4a82a9=await _0x497bda['json']()['catch'](()=>({}));throw new Error(_0x4a82a9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x497bda['statusText']);}return await _0x497bda['json']();},async 'postJiraComment'(_0x323af4,_0x29b372){const _0x24090c=await fetch(API_BASE+'/jira/issues/'+_0x323af4+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x29b372})});if(!_0x24090c['ok']){const _0x1207c6=await _0x24090c['json']()['catch'](()=>({}));throw new Error(_0x1207c6['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x24090c['statusText']);}return await _0x24090c['json']();},async 'getJiraComments'(_0x526fec){const _0x54282e=await fetch(API_BASE+'/jira/issues/'+_0x526fec+'/comments');if(!_0x54282e['ok']){const _0x572001=await _0x54282e['json']()['catch'](()=>({}));throw new Error(_0x572001['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x54282e['statusText']);}return await _0x54282e['json']();},async 'promptParameter'({environment:_0x672a66,command:_0x202f11,parser:parser='json'}){const _0xa74361=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x672a66,'command':_0x202f11,'parser':parser})});if(!_0xa74361['ok']){const _0x1c9c16=await _0xa74361['json']()['catch'](()=>({}));throw new Error(_0x1c9c16['message']||_0x1c9c16['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xa74361['statusText']);}return await _0xa74361['json']();},async 'promptParameterStream'(_0x50c619,_0x4d52a4){const _0x5c0f68=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50c619)});if(!_0x5c0f68['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c0f68['statusText']);const _0x36d0f5=_0x5c0f68['body']['getReader'](),_0x42e7b5=new TextDecoder();let _0xecf8='';return new Promise((_0x4269ef,_0x5af3f0)=>{const _0xafe40a=async()=>{try{const {done:_0x399cbe,value:_0x148ee2}=await _0x36d0f5['read']();if(_0x399cbe)return;_0xecf8+=_0x42e7b5['decode'](_0x148ee2,{'stream':!![]});const _0x90872f=_0xecf8['split']('\x0a\x0a');_0xecf8=_0x90872f['pop']()||'';for(const _0x21e153 of _0x90872f){if(!_0x21e153['trim']())continue;const _0x5c0756=_0x21e153['split']('\x0a');let _0x291f26='message',_0x1277ae='';for(const _0xe834e5 of _0x5c0756){if(_0xe834e5['startsWith']('event:'))_0x291f26=_0xe834e5['substring'](0x6)['trim']();else _0xe834e5['startsWith']('data:')&&(_0x1277ae=_0xe834e5['substring'](0x5)['trim']());}if(!_0x1277ae)continue;try{const _0x40b839=JSON['parse'](_0x1277ae);if(_0x291f26==='progress'&&_0x4d52a4)_0x4d52a4(_0x40b839['stage'],_0x40b839['message']);else{if(_0x291f26==='result'){_0x4269ef(_0x40b839);return;}else{if(_0x291f26==='error'){let _0x458303=_0x40b839['message']||_0x40b839['error']||'Prompt\x20command\x20failed';_0x40b839['rawOutput']&&(_0x458303+='\x0a\x0aRaw\x20output:\x0a'+_0x40b839['rawOutput']);_0x5af3f0(new Error(_0x458303));return;}}}}catch(_0x44e47f){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x44e47f),console['error']('Event\x20type:',_0x291f26),console['error']('Event\x20data:',_0x1277ae),console['error']('First\x20200\x20chars:',_0x1277ae['substring'](0x0,0xc8)),_0x5af3f0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x44e47f['message']+'\x0a\x0aData:\x20'+_0x1277ae['substring'](0x0,0x1f4)));return;}}_0xafe40a();}catch(_0x209e99){_0x5af3f0(_0x209e99);}};_0xafe40a();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5f44ce){const _0x162d49=await fetch(''+API_BASE+_0x5f44ce);if(!_0x162d49['ok']){const _0x57f0cb=await _0x162d49['json']()['catch'](()=>({'error':_0x162d49['statusText']})),_0x58672b=new Error(_0x57f0cb['error']||_0x57f0cb['message']||_0x162d49['statusText']);if(_0x57f0cb['detail']!==undefined)_0x58672b['detail']=_0x57f0cb['detail'];throw _0x58672b;}return await _0x162d49['json']();},async 'post'(_0x4294b0,_0x42218e){const _0x319e4b=await fetch(''+API_BASE+_0x4294b0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42218e)});if(!_0x319e4b['ok']){const _0x3c37c1=await _0x319e4b['json']()['catch'](()=>({'error':_0x319e4b['statusText']})),_0x870a2e=new Error(_0x3c37c1['error']||_0x3c37c1['message']||_0x319e4b['statusText']);if(_0x3c37c1['detail']!==undefined)_0x870a2e['detail']=_0x3c37c1['detail'];throw _0x870a2e;}return await _0x319e4b['json']();},async 'put'(_0x4bc983,_0x41fa15){const _0x21eeab=await fetch(''+API_BASE+_0x4bc983,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fa15)});if(!_0x21eeab['ok']){const _0x3d8088=await _0x21eeab['json']()['catch'](()=>({'error':_0x21eeab['statusText']})),_0x59547b=new Error(_0x3d8088['error']||_0x3d8088['message']||_0x21eeab['statusText']);if(_0x3d8088['detail']!==undefined)_0x59547b['detail']=_0x3d8088['detail'];throw _0x59547b;}return await _0x21eeab['json']();},async 'delete'(_0x2ef04c,_0x2e864f){const _0xb4ce70={'method':'DELETE'};_0x2e864f&&(_0xb4ce70['headers']={'Content-Type':'application/json'},_0xb4ce70['body']=JSON['stringify'](_0x2e864f));const _0x1d05bc=await fetch(''+API_BASE+_0x2ef04c,_0xb4ce70);if(!_0x1d05bc['ok']){const _0x1016e8=await _0x1d05bc['json']()['catch'](()=>({'error':_0x1d05bc['statusText']})),_0x4c7777=new Error(_0x1016e8['error']||_0x1016e8['message']||_0x1d05bc['statusText']);if(_0x1016e8['detail']!==undefined)_0x4c7777['detail']=_0x1016e8['detail'];throw _0x4c7777;}return await _0x1d05bc['json']();},async 'getSkills'(){const _0x3f6f7c=await fetch(API_BASE+'/skills');if(!_0x3f6f7c['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3f6f7c['statusText']);return await _0x3f6f7c['json']();},async 'getSkill'(_0x30a909){const _0x3f0716=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x30a909));if(!_0x3f0716['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3f0716['statusText']);return await _0x3f0716['json']();},async 'createSkill'(_0x1aa3de){const _0x24d16b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa3de)});if(!_0x24d16b['ok']){const _0x4f173d=await _0x24d16b['json']()['catch'](()=>({'error':_0x24d16b['statusText']})),_0x332d45=new Error(_0x4f173d['error']||_0x4f173d['message']||_0x24d16b['statusText']);if(_0x4f173d['detail']!==undefined)_0x332d45['detail']=_0x4f173d['detail'];throw _0x332d45;}return await _0x24d16b['json']();},async 'updateSkill'(_0x3b5def,_0x20b756){const _0x44d4fd=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3b5def),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20b756)});if(!_0x44d4fd['ok']){const _0x41ad8a=await _0x44d4fd['json']()['catch'](()=>({'error':_0x44d4fd['statusText']})),_0x1ff538=new Error(_0x41ad8a['error']||_0x41ad8a['message']||_0x44d4fd['statusText']);if(_0x41ad8a['detail']!==undefined)_0x1ff538['detail']=_0x41ad8a['detail'];throw _0x1ff538;}return await _0x44d4fd['json']();},async 'deleteSkill'(_0x4cdc75){const _0x2d408f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4cdc75),{'method':'DELETE'});if(!_0x2d408f['ok']){const _0xcea912=await _0x2d408f['json']()['catch'](()=>({'error':_0x2d408f['statusText']})),_0x43fec0=new Error(_0xcea912['error']||_0xcea912['message']||_0x2d408f['statusText']);if(_0xcea912['detail']!==undefined)_0x43fec0['detail']=_0xcea912['detail'];throw _0x43fec0;}return await _0x2d408f['json']();},async 'getSkillFile'(_0x505066,_0x2882f8){const _0x226726=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x505066)+'/files/'+_0x2882f8);if(!_0x226726['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x226726['statusText']);return await _0x226726['json']();},async 'saveSkillFile'(_0x4b7fa2,_0x208cfe,_0x1f74a8){const _0x5373a8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b7fa2)+'/files/'+_0x208cfe,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f74a8})});if(!_0x5373a8['ok']){const _0x178a30=await _0x5373a8['json']()['catch'](()=>({'error':_0x5373a8['statusText']})),_0x477b2a=new Error(_0x178a30['error']||_0x178a30['message']||_0x5373a8['statusText']);if(_0x178a30['detail']!==undefined)_0x477b2a['detail']=_0x178a30['detail'];throw _0x477b2a;}return await _0x5373a8['json']();},async 'deleteSkillFile'(_0x53c9f9,_0x366204){const _0xde9e6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c9f9)+'/files/'+_0x366204,{'method':'DELETE'});if(!_0xde9e6['ok']){const _0x36d442=await _0xde9e6['json']()['catch'](()=>({'error':_0xde9e6['statusText']})),_0x4a457a=new Error(_0x36d442['error']||_0x36d442['message']||_0xde9e6['statusText']);if(_0x36d442['detail']!==undefined)_0x4a457a['detail']=_0x36d442['detail'];throw _0x4a457a;}return await _0xde9e6['json']();},async 'pullSkills'(){const _0x5f3219=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5f3219['ok']){const _0x133b2b=await _0x5f3219['json']()['catch'](()=>({'error':_0x5f3219['statusText']})),_0x23acca=new Error(_0x133b2b['error']||_0x133b2b['message']||_0x5f3219['statusText']);if(_0x133b2b['detail']!==undefined)_0x23acca['detail']=_0x133b2b['detail'];throw _0x23acca;}return await _0x5f3219['json']();},async 'commitSkills'(_0x18106d,_0x40c76c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x40c76c,_0x4476b7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x18106d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4476b7['ok']){const _0x10f7d3=await _0x4476b7['json']()['catch'](()=>({'error':_0x4476b7['statusText']})),_0x2904e4=new Error(_0x10f7d3['error']||_0x10f7d3['message']||_0x4476b7['statusText']);if(_0x10f7d3['detail']!==undefined)_0x2904e4['detail']=_0x10f7d3['detail'];throw _0x2904e4;}return await _0x4476b7['json']();},async 'discardSkillsChanges'(){const _0x44d15d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x44d15d['ok']){const _0x129118=await _0x44d15d['json']()['catch'](()=>({'error':_0x44d15d['statusText']})),_0x3f1329=new Error(_0x129118['error']||_0x129118['message']||_0x44d15d['statusText']);if(_0x129118['detail']!==undefined)_0x3f1329['detail']=_0x129118['detail'];throw _0x3f1329;}return await _0x44d15d['json']();},async 'getSkillCatalog'(){const _0xf61e3f=await fetch(API_BASE+'/external-skills/catalog');if(!_0xf61e3f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xf61e3f['statusText']);return await _0xf61e3f['json']();},async 'getImportedSkillsRegistry'(){const _0x3c5261=await fetch(API_BASE+'/external-skills/registry');if(!_0x3c5261['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3c5261['statusText']);return await _0x3c5261['json']();},async 'importCatalogSkill'(_0x1567a1){const _0x2e1932=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x1567a1})});if(!_0x2e1932['ok']){const _0x253fdc=await _0x2e1932['json']()['catch'](()=>({'error':_0x2e1932['statusText']})),_0x2b7f70=new Error(_0x253fdc['error']||_0x253fdc['message']||_0x2e1932['statusText']);if(_0x253fdc['detail']!==undefined)_0x2b7f70['detail']=_0x253fdc['detail'];throw _0x2b7f70;}return await _0x2e1932['json']();},async 'importSkillFromGit'(_0x465cbb,_0x295774,_0x56f4eb='main',_0x2f389d=null){const _0x58590e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x465cbb,'skillPath':_0x295774,'branch':_0x56f4eb,'skillId':_0x2f389d})});if(!_0x58590e['ok']){const _0x36e67d=await _0x58590e['json']()['catch'](()=>({'error':_0x58590e['statusText']})),_0x47e03b=new Error(_0x36e67d['error']||_0x36e67d['message']||_0x58590e['statusText']);if(_0x36e67d['detail']!==undefined)_0x47e03b['detail']=_0x36e67d['detail'];throw _0x47e03b;}return await _0x58590e['json']();},async 'probeMarketplace'(_0xdd5553,_0x6a0461='main'){const _0x4f2271=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xdd5553,'branch':_0x6a0461})});if(!_0x4f2271['ok']){const _0x3bd1de=await _0x4f2271['json']()['catch'](()=>({'error':_0x4f2271['statusText']})),_0x376c52=new Error(_0x3bd1de['error']||_0x3bd1de['message']||_0x4f2271['statusText']);if(_0x3bd1de['detail']!==undefined)_0x376c52['detail']=_0x3bd1de['detail'];throw _0x376c52;}return await _0x4f2271['json']();},async 'importMarketplaceBundle'(_0x37343b,_0x2b0221,_0x2a9523,_0x9ee3ed=null){const _0x59be5b=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x37343b,'branch':_0x2b0221,'bundleId':_0x2a9523,'selectedSkills':_0x9ee3ed})});if(!_0x59be5b['ok']){const _0x2e13dd=await _0x59be5b['json']()['catch'](()=>({'error':_0x59be5b['statusText']})),_0x513032=new Error(_0x2e13dd['error']||_0x2e13dd['message']||_0x59be5b['statusText']);if(_0x2e13dd['detail']!==undefined)_0x513032['detail']=_0x2e13dd['detail'];throw _0x513032;}return await _0x59be5b['json']();},async 'importSkillFromFolder'(_0x399c1a,_0xb261fe=null){const _0x87d1c7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x399c1a,'skillId':_0xb261fe})});if(!_0x87d1c7['ok']){const _0x426118=await _0x87d1c7['json']()['catch'](()=>({'error':_0x87d1c7['statusText']})),_0x5e31a8=new Error(_0x426118['error']||_0x426118['message']||_0x87d1c7['statusText']);if(_0x426118['detail']!==undefined)_0x5e31a8['detail']=_0x426118['detail'];throw _0x5e31a8;}return await _0x87d1c7['json']();},async 'importSkillFromNpm'(_0x32c13b,_0x14a488='latest',_0xb5366b=null,_0x58424a=null){const _0x36b894=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32c13b,'version':_0x14a488,'skillId':_0xb5366b,'registry':_0x58424a})});if(!_0x36b894['ok']){const _0x20197b=await _0x36b894['json']()['catch'](()=>({'error':_0x36b894['statusText']})),_0x178f55=new Error(_0x20197b['error']||_0x20197b['message']||_0x36b894['statusText']);if(_0x20197b['detail']!==undefined)_0x178f55['detail']=_0x20197b['detail'];throw _0x178f55;}return await _0x36b894['json']();},async 'checkSkillUpdates'(_0x4a418e){const _0x2610be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a418e)+'/check-updates',{'method':'POST'});if(!_0x2610be['ok']){const _0x13b45f=await _0x2610be['json']()['catch'](()=>({'error':_0x2610be['statusText']})),_0x2e0f2e=new Error(_0x13b45f['error']||_0x13b45f['message']||_0x2610be['statusText']);if(_0x13b45f['detail']!==undefined)_0x2e0f2e['detail']=_0x13b45f['detail'];throw _0x2e0f2e;}return await _0x2610be['json']();},async 'updateExternalSkill'(_0x1a6b71){const _0x56abf7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a6b71)+'/update',{'method':'POST'});if(!_0x56abf7['ok']){const _0x2ae46f=await _0x56abf7['json']()['catch'](()=>({'error':_0x56abf7['statusText']})),_0x5a54a0=new Error(_0x2ae46f['error']||_0x2ae46f['message']||_0x56abf7['statusText']);if(_0x2ae46f['detail']!==undefined)_0x5a54a0['detail']=_0x2ae46f['detail'];throw _0x5a54a0;}return await _0x56abf7['json']();},async 'updateSkillFlags'(_0x48a8aa,_0x500b18){const _0x49cabe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48a8aa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x500b18})});if(!_0x49cabe['ok']){const _0x22f64e=await _0x49cabe['json']()['catch'](()=>({'error':_0x49cabe['statusText']})),_0x132b52=new Error(_0x22f64e['error']||_0x22f64e['message']||_0x49cabe['statusText']);if(_0x22f64e['detail']!==undefined)_0x132b52['detail']=_0x22f64e['detail'];throw _0x132b52;}return await _0x49cabe['json']();},async 'removeFromImportedRegistry'(_0x409cd5){const _0x2fadca=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x409cd5)+'/registry',{'method':'DELETE'});if(!_0x2fadca['ok']){const _0x1a4ac0=await _0x2fadca['json']()['catch'](()=>({'error':_0x2fadca['statusText']})),_0x439c2e=new Error(_0x1a4ac0['error']||_0x1a4ac0['message']||_0x2fadca['statusText']);if(_0x1a4ac0['detail']!==undefined)_0x439c2e['detail']=_0x1a4ac0['detail'];throw _0x439c2e;}return await _0x2fadca['json']();},async 'getTeams'(){const _0x4724a5=await fetch(API_BASE+'/teams');if(!_0x4724a5['ok']){const _0x3fb566=await _0x4724a5['json']()['catch'](()=>({'message':_0x4724a5['statusText']}));throw new Error(_0x3fb566['message']||'Failed\x20to\x20get\x20teams');}return await _0x4724a5['json']();},async 'getTeam'(_0x2f444d){const _0x5d3d7e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2f444d));if(!_0x5d3d7e['ok']){const _0xf39919=await _0x5d3d7e['json']()['catch'](()=>({'message':_0x5d3d7e['statusText']}));throw new Error(_0xf39919['message']||'Failed\x20to\x20get\x20team');}return await _0x5d3d7e['json']();},async 'createTeam'(_0x119b57){const _0x43e9b8=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x119b57)});if(!_0x43e9b8['ok']){const _0x5e0d2f=await _0x43e9b8['json']()['catch'](()=>({'message':_0x43e9b8['statusText']}));throw new Error(_0x5e0d2f['message']||'Failed\x20to\x20create\x20team');}return await _0x43e9b8['json']();},async 'updateTeam'(_0x442048,_0x1b6e2c){const _0x5cbef6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x442048),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6e2c)});if(!_0x5cbef6['ok']){const _0x31dac=await _0x5cbef6['json']()['catch'](()=>({'message':_0x5cbef6['statusText']}));throw new Error(_0x31dac['message']||'Failed\x20to\x20update\x20team');}return await _0x5cbef6['json']();},async 'deleteTeam'(_0xc3094a){const _0x4c86b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc3094a),{'method':'DELETE'});if(!_0x4c86b6['ok']){const _0x41f9a0=await _0x4c86b6['json']()['catch'](()=>({'message':_0x4c86b6['statusText']}));throw new Error(_0x41f9a0['message']||'Failed\x20to\x20delete\x20team');}return await _0x4c86b6['json']();},async 'addTeamMember'(_0x3bc00d,_0x1116ad){const _0x370d6a=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bc00d)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x1116ad})});if(!_0x370d6a['ok']){const _0x4cbf8d=await _0x370d6a['json']()['catch'](()=>({'message':_0x370d6a['statusText']}));throw new Error(_0x4cbf8d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x370d6a['json']();},async 'removeTeamMember'(_0x1d053f,_0x583977){const _0x119910=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1d053f)+'/members/'+encodeURIComponent(_0x583977),{'method':'DELETE'});if(!_0x119910['ok']){const _0x9d56c0=await _0x119910['json']()['catch'](()=>({'message':_0x119910['statusText']}));throw new Error(_0x9d56c0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x119910['json']();},async 'getBindings'(_0x237c73={}){const _0x27f670=new URLSearchParams();if(_0x237c73['resource_type'])_0x27f670['set']('resource_type',_0x237c73['resource_type']);if(_0x237c73['resource_id'])_0x27f670['set']('resource_id',_0x237c73['resource_id']);if(_0x237c73['subject_type'])_0x27f670['set']('subject_type',_0x237c73['subject_type']);if(_0x237c73['subject_id'])_0x27f670['set']('subject_id',_0x237c73['subject_id']);const _0x5b506b=_0x27f670['toString'](),_0x21f623=await fetch(API_BASE+'/bindings'+(_0x5b506b?'?'+_0x5b506b:''));if(!_0x21f623['ok']){const _0x39037b=await _0x21f623['json']()['catch'](()=>({'message':_0x21f623['statusText']}));throw new Error(_0x39037b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x21f623['json']();},async 'createBinding'(_0x56e78b){const _0x264e30=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56e78b)});if(!_0x264e30['ok']){const _0x3abd42=await _0x264e30['json']()['catch'](()=>({'message':_0x264e30['statusText']}));throw new Error(_0x3abd42['message']||'Failed\x20to\x20create\x20binding');}return await _0x264e30['json']();},async 'updateBinding'(_0x47930b,_0x2b4553){const _0x536738=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x47930b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4553)});if(!_0x536738['ok']){const _0x2bc078=await _0x536738['json']()['catch'](()=>({'message':_0x536738['statusText']}));throw new Error(_0x2bc078['message']||'Failed\x20to\x20update\x20binding');}return await _0x536738['json']();},async 'deleteBinding'(_0xc7f5e9){const _0x52c50a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xc7f5e9),{'method':'DELETE'});if(!_0x52c50a['ok']){const _0x1d753f=await _0x52c50a['json']()['catch'](()=>({'message':_0x52c50a['statusText']}));throw new Error(_0x1d753f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x52c50a['json']();},async 'getRoleDefinitions'(){const _0x52f93e=await fetch(API_BASE+'/roles');if(!_0x52f93e['ok']){const _0x479b13=await _0x52f93e['json']()['catch'](()=>({'message':_0x52f93e['statusText']}));throw new Error(_0x479b13['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x52f93e['json']();},async 'getRoleDefinition'(_0xfd2796){const _0x3fc12a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xfd2796));if(!_0x3fc12a['ok']){const _0x530ee3=await _0x3fc12a['json']()['catch'](()=>({'message':_0x3fc12a['statusText']}));throw new Error(_0x530ee3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3fc12a['json']();},async 'createRoleDefinition'(_0x30ffe1){const _0x3df9c2=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30ffe1)});if(!_0x3df9c2['ok']){const _0x3fe8e8=await _0x3df9c2['json']()['catch'](()=>({'message':_0x3df9c2['statusText']}));throw new Error(_0x3fe8e8['message']||_0x3fe8e8['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3df9c2['json']();},async 'updateRoleDefinition'(_0x350fe2,_0x397ea4){const _0x5b4f3f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x350fe2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x397ea4)});if(!_0x5b4f3f['ok']){const _0x18c30c=await _0x5b4f3f['json']()['catch'](()=>({'message':_0x5b4f3f['statusText']}));throw new Error(_0x18c30c['message']||_0x18c30c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x5b4f3f['json']();},async 'deleteRoleDefinition'(_0x4a42a1){const _0x827eca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4a42a1),{'method':'DELETE'});if(!_0x827eca['ok']){const _0x53baa3=await _0x827eca['json']()['catch'](()=>({'message':_0x827eca['statusText']}));throw new Error(_0x53baa3['message']||_0x53baa3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x827eca['json']();},async 'getAvailablePermissions'(){const _0x22ce83=await fetch(API_BASE+'/roles/available-permissions');if(!_0x22ce83['ok']){const _0x554c5d=await _0x22ce83['json']()['catch'](()=>({'message':_0x22ce83['statusText']}));throw new Error(_0x554c5d['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x22ce83['json']();},async 'getGitProviderAllowedTeams'(_0x2baf0d){const _0x12af65=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2baf0d)+'/allowed-teams');if(!_0x12af65['ok']){const _0x34f995=await _0x12af65['json']()['catch'](()=>({'message':_0x12af65['statusText']}));throw new Error(_0x34f995['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x12af65['json']();},async 'setGitProviderAllowedTeams'(_0x453bd9,_0x440959){const _0x52b5d1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x453bd9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x440959})});if(!_0x52b5d1['ok']){const _0x4670de=await _0x52b5d1['json']()['catch'](()=>({'message':_0x52b5d1['statusText']}));throw new Error(_0x4670de['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x52b5d1['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 _0x3eabd2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2ab672=>{_0x2ab672['el']['style']['bottom']=_0x3eabd2+'px';const _0x21856b=_0x2ab672['el']['offsetHeight']||toastState['defaultHeight'];_0x3eabd2+=_0x21856b+toastState['gap'];});});}function removeToastById(_0x5da54e){const _0x54be93=toastState['toasts']['findIndex'](_0x3b3265=>_0x3b3265['id']===_0x5da54e);if(_0x54be93===-0x1)return;const _0x21eb2b=toastState['toasts'][_0x54be93];if(_0x21eb2b['timeoutId'])clearTimeout(_0x21eb2b['timeoutId']);_0x21eb2b['el']['classList']['remove']('show'),setTimeout(()=>_0x21eb2b['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x54be93,0x1),repositionAllToasts();}function registerToast(_0x333020){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x333020),repositionAllToasts(),_0x333020['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(_0x47a1be){if(_0x47a1be===null||_0x47a1be===undefined)return'';return String(_0x47a1be)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x1c7585,_0x32d20c){if(_0x1c7585&&typeof _0x1c7585==='object'&&!Array['isArray'](_0x1c7585))return{'code':typeof _0x1c7585['text']==='string'?_0x1c7585['text']:'','language':typeof _0x1c7585['lang']==='string'?_0x1c7585['lang']:''};return{'code':typeof _0x1c7585==='string'?_0x1c7585:'','language':typeof _0x32d20c==='string'?_0x32d20c:''};}function buildMermaidBlock(_0x1714af){const _0x2c56ff=String(_0x1714af||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2c56ff))+'\x22>'+escapeHtmlValue(_0x2c56ff)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x41d53a=new marked['Renderer'](),_0x37ad22=_0x41d53a['code']['bind'](_0x41d53a);return _0x41d53a['code']=function(_0x252b78,_0x1b9b77,..._0x18c6af){const {code:_0x728fd3,language:_0x357b21}=getMarkdownCodeBlockPayload(_0x252b78,_0x1b9b77),_0x5e5076=String(_0x357b21||'')['trim']()['toLowerCase']();if(_0x5e5076==='mermaid')return buildMermaidBlock(_0x728fd3);const _0x5575c8=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5575c8&&_0x5e5076)try{const _0x287e92=_0x5575c8['getLanguage'](_0x5e5076)?_0x5e5076:'plaintext',_0x34a65b=_0x5575c8['highlight'](_0x728fd3,{'language':_0x287e92})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x5e5076)+'\x22>'+_0x34a65b+'</code></pre>';}catch(_0x3a7585){console['error']('Syntax\x20highlighting\x20error:',_0x3a7585);}return _0x37ad22(_0x252b78,_0x1b9b77,..._0x18c6af);},sharedMarkedRenderer=_0x41d53a,_0x41d53a;}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 _0x1f2796=window['mermaid'];if(!_0x1f2796||typeof _0x1f2796['initialize']!=='function')return _0x1f2796||null;return _0x1f2796['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f2796;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5d8e38,_0x24c3aa)=>{const _0x480086=()=>_0x5d8e38(configureMermaidInstance()),_0x3c2f13=()=>{mermaidLoadPromise=null,_0x24c3aa(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x249919=document['getElementById'](MERMAID_SCRIPT_ID);!_0x249919&&(_0x249919=document['createElement']('script'),_0x249919['id']=MERMAID_SCRIPT_ID,_0x249919['src']=MERMAID_SCRIPT_SRC,_0x249919['async']=!![],document['head']['appendChild'](_0x249919));if(window['mermaid']){_0x480086();return;}_0x249919['addEventListener']('load',_0x480086,{'once':!![]}),_0x249919['addEventListener']('error',_0x3c2f13,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4b4c92){const _0x3764d6=_0x4b4c92['getAttribute']('data-mermaid-source');if(!_0x3764d6)return null;let _0x2c0141=_0x3764d6;try{_0x2c0141=decodeURIComponent(_0x3764d6);}catch{}return _0x4b4c92['textContent']=_0x2c0141,_0x4b4c92['removeAttribute']('data-processed'),_0x4b4c92['removeAttribute']('aria-roledescription'),_0x4b4c92['removeAttribute']('role'),_0x4b4c92['removeAttribute']('aria-label'),_0x2c0141;}function collectMermaidNodes(_0x16641e,_0x3aee76){if(!(_0x16641e instanceof Element))return;_0x16641e['matches']('.mermaid[data-mermaid-source]')&&_0x3aee76['add'](_0x16641e),_0x16641e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x33287c=>{_0x3aee76['add'](_0x33287c);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2de0ac=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x51c16e=>setTimeout(_0x51c16e,0x0);_0x2de0ac(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a1932=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a1932);});});}function queueMermaidRender(_0x546f6a){const _0x3ba9bb=new Set();_0x546f6a instanceof Document||_0x546f6a instanceof DocumentFragment?_0x546f6a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2d66d8=>_0x3ba9bb['add'](_0x2d66d8)):collectMermaidNodes(_0x546f6a,_0x3ba9bb);if(_0x3ba9bb['size']===0x0)return;_0x3ba9bb['forEach'](_0x2ae56f=>pendingMermaidNodes['add'](_0x2ae56f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x19e5f9=Array['from'](pendingMermaidNodes)['filter'](_0x14a67a=>_0x14a67a['isConnected']);pendingMermaidNodes['clear']();if(_0x19e5f9['length']===0x0)return;const _0x5d47fb=await loadMermaid();if(!_0x5d47fb)return;configureMermaidInstance();const _0x10baad=getMermaidTheme();for(const _0x4b2bb2 of _0x19e5f9){const _0x35aea7=_0x4b2bb2['getAttribute']('data-mermaid-source');if(!_0x35aea7)continue;const _0x5cf961=_0x4b2bb2['getAttribute']('data-processed')==='true';if(_0x5cf961&&_0x4b2bb2['dataset']['mermaidTheme']===_0x10baad)continue;restoreMermaidSource(_0x4b2bb2);try{if(typeof _0x5d47fb['run']==='function')await _0x5d47fb['run']({'nodes':[_0x4b2bb2]});else typeof _0x5d47fb['init']==='function'&&_0x5d47fb['init'](undefined,[_0x4b2bb2]);_0x4b2bb2['dataset']['mermaidTheme']=_0x10baad,delete _0x4b2bb2['dataset']['mermaidError'];}catch(_0x5f287a){console['error']('Mermaid\x20render\x20failed:',_0x5f287a),restoreMermaidSource(_0x4b2bb2),_0x4b2bb2['dataset']['mermaidError']='true',delete _0x4b2bb2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x362d1a=>{_0x362d1a['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x362d1a);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x27592b=>{_0x27592b['forEach'](_0x290209=>{_0x290209['addedNodes']['forEach'](_0x9274a7=>{_0x9274a7['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x9274a7);});});}),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'(_0x4b6017){const _0x4b9a39=new Date(_0x4b6017),_0x495c8c=new Date(),_0x368494=_0x495c8c-_0x4b9a39,_0x33bb28=Math['floor'](_0x368494/0x3e8),_0x5e030f=Math['floor'](_0x33bb28/0x3c),_0xd18350=Math['floor'](_0x5e030f/0x3c),_0x5059cf=Math['floor'](_0xd18350/0x18);if(_0x33bb28<0x3c)return'now';if(_0x5e030f<0x3c)return _0x5e030f+'m\x20ago';if(_0xd18350<0x18)return _0xd18350+'h\x20ago';return _0x5059cf+'d\x20ago';},'getStatusIcon'(_0x556098){switch(_0x556098){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x483e55){switch(_0x483e55){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'(_0x4df4a6,_0x2d5e1a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x41914d={};_0x41914d['text/plain']=new Blob([_0x4df4a6],{'type':'text/plain'});_0x2d5e1a&&(_0x41914d['text/html']=new Blob([_0x2d5e1a],{'type':'text/html'}));const _0x1af3ad=new ClipboardItem(_0x41914d);return await navigator['clipboard']['write']([_0x1af3ad]),!![];}catch(_0x28fec9){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x28fec9);}try{const _0x202127=_0x247b4d=>{_0x247b4d['preventDefault'](),_0x247b4d['clipboardData']['setData']('text/plain',_0x4df4a6),_0x2d5e1a&&_0x247b4d['clipboardData']['setData']('text/html',_0x2d5e1a);};document['addEventListener']('copy',_0x202127);const _0xe4fc47=document['execCommand']('copy');document['removeEventListener']('copy',_0x202127);if(_0xe4fc47)return!![];}catch(_0x1d3540){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1d3540);}try{const _0x100fb9=document['createElement']('textarea');_0x100fb9['value']=_0x4df4a6,_0x100fb9['style']['position']='fixed',_0x100fb9['style']['opacity']='0',_0x100fb9['style']['pointerEvents']='none',document['body']['appendChild'](_0x100fb9),_0x100fb9['select']();const _0x337602=document['execCommand']('copy');return document['body']['removeChild'](_0x100fb9),_0x337602;}catch(_0x1b4107){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1b4107),![];}},'showToast'(_0x4e898d,_0x165e42='info'){const _0x34c0ef=getNextToastId(),_0x355be1=document['createElement']('div');_0x355be1['className']='toast\x20toast-'+_0x165e42,_0x355be1['textContent']=_0x4e898d,_0x355be1['dataset']['toastId']=_0x34c0ef,document['body']['appendChild'](_0x355be1);const _0x424d50=_0x165e42==='error'?0x2710:0xbb8,_0x21cfb1=setTimeout(()=>{removeToastById(_0x34c0ef);},_0x424d50),_0x15aae={'id':_0x34c0ef,'el':_0x355be1,'timeoutId':_0x21cfb1};return registerToast(_0x15aae),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x355be1['classList']['add']('show');});}),_0x34c0ef;},'showError'(_0x4a1636){console['error'](_0x4a1636);const _0x33ae56=typeof _0x4a1636==='string'?_0x4a1636:_0x4a1636['message']||'An\x20error\x20occurred';this['showToast'](_0x33ae56,'error');},'showSuccess'(_0x5f475c){this['showToast'](_0x5f475c,'success');},'capitalize'(_0x3b1b20){if(!_0x3b1b20)return'';return _0x3b1b20['charAt'](0x0)['toUpperCase']()+_0x3b1b20['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x508ab3){return escapeHtmlValue(_0x508ab3);},'ansiToHtml'(_0x468af3){if(_0x468af3===null||_0x468af3===undefined)return'';let _0x3773a2=this['escapeHtml'](_0x468af3);const _0x54b815={'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'},_0x78f2d6={'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 _0x2ad0d4=0x0;return _0x3773a2=_0x3773a2['replace'](/\x1b\[([0-9;]*)m/g,(_0x369720,_0x559d92)=>{if(!_0x559d92||_0x559d92==='0'){const _0x39c798='</span>'['repeat'](_0x2ad0d4);return _0x2ad0d4=0x0,_0x39c798;}const _0x33f185=_0x559d92['split'](';'),_0x345f80=[];for(const _0x15607a of _0x33f185){if(_0x15607a==='1')_0x345f80['push']('font-weight:bold');else{if(_0x15607a==='2')_0x345f80['push']('opacity:0.7');else{if(_0x15607a==='3')_0x345f80['push']('font-style:italic');else{if(_0x15607a==='4')_0x345f80['push']('text-decoration:underline');else{if(_0x15607a==='9')_0x345f80['push']('text-decoration:line-through');else{if(_0x54b815[_0x15607a])_0x345f80['push']('color:'+_0x54b815[_0x15607a]);else{if(_0x78f2d6[_0x15607a])_0x345f80['push']('background-color:'+_0x78f2d6[_0x15607a]);}}}}}}}if(_0x345f80['length']>0x0)return _0x2ad0d4++,'<span\x20style=\x22'+_0x345f80['join'](';')+'\x22>';return'';}),_0x3773a2+='</span>'['repeat'](_0x2ad0d4),_0x3773a2=_0x3773a2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2fdeea,_0x435ce0)=>{if(!_0x435ce0||_0x435ce0==='0')return'';const _0x441adb=_0x435ce0['split'](';'),_0x42747=[];for(const _0x40f7a8 of _0x441adb){if(_0x40f7a8==='1')_0x42747['push']('font-weight:bold');else{if(_0x54b815[_0x40f7a8])_0x42747['push']('color:'+_0x54b815[_0x40f7a8]);else{if(_0x78f2d6[_0x40f7a8])_0x42747['push']('background-color:'+_0x78f2d6[_0x40f7a8]);}}}if(_0x42747['length']>0x0)return'<span\x20style=\x22'+_0x42747['join'](';')+'\x22>';return'';}),_0x3773a2;},'showModal'({title:_0x49c7f7,content:_0x3249ce,buttons:buttons=[]}){const _0x45afde='\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'](_0x49c7f7)+'</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'+_0x3249ce+'\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']((_0xc158bb,_0x5bdfc7)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0xc158bb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5bdfc7+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0xc158bb['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',_0x4bd5a6=document['createElement']('div');_0x4bd5a6['id']='utils-modal',_0x4bd5a6['className']='modal',_0x4bd5a6['innerHTML']=_0x45afde,document['body']['appendChild'](_0x4bd5a6);const _0x9bbac5=document['getElementById']('utils-modal-close');_0x9bbac5&&_0x9bbac5['addEventListener']('click',()=>this['hideModal']());const _0xaeec51=_0x4bd5a6['querySelectorAll']('[data-btn-index]');_0xaeec51['forEach'](_0x2fbed4=>{const _0x4d47cc=parseInt(_0x2fbed4['dataset']['btnIndex']);buttons[_0x4d47cc]?.['onClick']&&_0x2fbed4['addEventListener']('click',buttons[_0x4d47cc]['onClick']);});const _0x4b5de2=document['getElementById']('utils-modal-overlay');_0x4b5de2&&_0x4b5de2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1addc5=document['getElementById']('utils-modal');_0x1addc5&&_0x1addc5['remove']();},'parseKeyValuePairs'(_0x4d0a26){const _0x11198f={};if(!_0x4d0a26)return _0x11198f;return _0x4d0a26['split'](/\r?\n/)['map'](_0xda7d8e=>_0xda7d8e['trim']())['filter'](Boolean)['forEach'](_0x5376e4=>{const _0x3ee742=_0x5376e4['indexOf']('=');if(_0x3ee742>0x0){const _0x18b63f=_0x5376e4['slice'](0x0,_0x3ee742)['trim'](),_0x3dab23=_0x5376e4['slice'](_0x3ee742+0x1)['trim']();if(_0x18b63f)_0x11198f[_0x18b63f]=_0x3dab23;}}),_0x11198f;},'debounce'(_0x47d02b,_0x57bff4=0xfa){let _0x3aa4df=null;return(..._0x6302e2)=>{clearTimeout(_0x3aa4df),_0x3aa4df=setTimeout(()=>_0x47d02b['apply'](this,_0x6302e2),_0x57bff4);};},'formatTimestamp'(_0x31c05b){if(!_0x31c05b)return'N/A';const _0x16333a=new Date(_0x31c05b);return _0x16333a['toLocaleDateString']()+'\x20'+_0x16333a['toLocaleTimeString']();},'getQueryParams'(){const _0x497e32=new URLSearchParams(window['location']['search']),_0x5c5262={};for(const [_0x13f6a0,_0x318d77]of _0x497e32){_0x5c5262[_0x13f6a0]=_0x318d77;}return _0x5c5262;},'formatDuration'(_0xc7e574,_0x6ed31b){if(!_0xc7e574)return'N/A';const _0x20aabe=new Date(_0xc7e574),_0x4dc959=_0x6ed31b?new Date(_0x6ed31b):new Date(),_0x1d64c8=_0x4dc959-_0x20aabe;if(_0x1d64c8<0x0)return'0s';const _0x34a2b3=Math['floor'](_0x1d64c8/0x3e8),_0x3478d1=Math['floor'](_0x34a2b3/0x3c),_0x5ce0b6=Math['floor'](_0x3478d1/0x3c),_0x21cdbd=Math['floor'](_0x5ce0b6/0x18);if(_0x34a2b3<0x3c)return _0x34a2b3+'s';if(_0x3478d1<0x3c)return _0x3478d1+'m\x20'+_0x34a2b3%0x3c+'s';if(_0x5ce0b6<0x18)return _0x5ce0b6+'h\x20'+_0x3478d1%0x3c+'m\x20'+_0x34a2b3%0x3c+'s';return _0x21cdbd+'d\x20'+_0x5ce0b6%0x18+'h\x20'+_0x3478d1%0x3c+'m';},'renderMarkdown'(_0x8bd66e,_0x1219c3={}){if(!_0x8bd66e)return'';_0x8bd66e=this['rewriteAttachmentLinks'](_0x8bd66e,_0x1219c3),_0x8bd66e=this['rewriteColorSyntax'](_0x8bd66e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x8bd66e);}catch(_0x1135d1){return console['error']('Markdown\x20parsing\x20error:',_0x1135d1),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);}},'rewriteAttachmentLinks'(_0x10778e,_0x50940d={}){const _0x52f331=typeof _0x50940d['resolveAttachmentUrl']==='function'?_0x50940d['resolveAttachmentUrl']:_0x50940d['taskId']?_0xfa79d2=>API_BASE+'/tasks/'+_0x50940d['taskId']+'/attachments/'+encodeURIComponent(_0xfa79d2):null;if(!_0x52f331)return _0x10778e;return String(_0x10778e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3b8745,_0x5c1366)=>{const _0x5e13fe=String(_0x5c1366||'')['trim']();if(!_0x5e13fe)return _0x3b8745;let _0x2aa316=_0x5e13fe;try{_0x2aa316=decodeURIComponent(_0x5e13fe);}catch{}const _0x2a8ea8=_0x52f331(_0x2aa316);if(!_0x2a8ea8)return _0x3b8745;return']('+_0x2a8ea8+')';});},'rewriteColorSyntax'(_0x28cbf2){if(!_0x28cbf2)return _0x28cbf2;return String(_0x28cbf2)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x5030e9,_0x310f00,_0x349345)=>{const _0x22658e=this['rewriteColorSyntax'](_0x349345);return'<span\x20style=\x22color:\x20'+_0x310f00+'\x22>'+_0x22658e+'</span>';});},'renderMarkdownFallback'(_0x430894,_0x4d4a47={}){if(!_0x430894)return'';_0x430894=_0x430894['replace'](/\r\n/g,'\x0a'),_0x430894=_0x430894['replace'](/\r/g,'\x0a'),_0x430894=this['rewriteAttachmentLinks'](_0x430894,_0x4d4a47);let _0x23c544=this['escapeHtml'](_0x430894);return _0x23c544=_0x23c544['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x23c544=_0x23c544['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x23c544=_0x23c544['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x23c544=_0x23c544['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x23c544=_0x23c544['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x23c544=_0x23c544['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x23c544=_0x23c544['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x23c544=_0x23c544['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x23c544=_0x23c544['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x23c544=_0x23c544['replace'](/\n\n/g,'</p><p>'),_0x23c544=_0x23c544['replace'](/\n/g,'<br>'),'<p>'+_0x23c544+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x46e172=new Uint8Array(0x10);crypto['getRandomValues'](_0x46e172),_0x46e172[0x6]=_0x46e172[0x6]&0xf|0x40,_0x46e172[0x8]=_0x46e172[0x8]&0x3f|0x80;const _0x3402fb=Array['from'](_0x46e172,_0x3be59e=>_0x3be59e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3402fb['slice'](0x0,0x8)+'-'+_0x3402fb['slice'](0x8,0xc)+'-'+_0x3402fb['slice'](0xc,0x10)+'-'+_0x3402fb['slice'](0x10,0x14)+'-'+_0x3402fb['slice'](0x14);}};export class CustomSelect{constructor(_0x3cdda0,_0x2197e9={}){this['nativeSelect']=_0x3cdda0,this['options']=_0x2197e9,this['isOpen']=![],this['selectedValue']=_0x3cdda0['value']||'',this['searchable']=_0x2197e9['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x26aa08=document['createElement']('div');_0x26aa08['className']='custom-select';const _0x456f92=document['createElement']('div');_0x456f92['className']='custom-select-trigger',_0x456f92['setAttribute']('tabindex','0'),_0x456f92['setAttribute']('role','button'),_0x456f92['setAttribute']('aria-haspopup','listbox');const _0x1f537c=document['createElement']('span');_0x1f537c['className']='custom-select-trigger-text';const _0x4ad97d=document['createElement']('span');_0x4ad97d['className']='custom-select-arrow',_0x4ad97d['textContent']='▼',_0x456f92['appendChild'](_0x1f537c),_0x456f92['appendChild'](_0x4ad97d);const _0x3fcd4b=document['createElement']('div');_0x3fcd4b['className']='custom-select-dropdown',_0x3fcd4b['setAttribute']('role','listbox');if(this['searchable']){const _0x37cfb6=document['createElement']('div');_0x37cfb6['className']='custom-select-search';const _0x417b35=document['createElement']('input');_0x417b35['type']='text',_0x417b35['className']='custom-select-search-input',_0x417b35['placeholder']='Type\x20to\x20search...',_0x417b35['setAttribute']('aria-label','Search\x20options'),_0x417b35['addEventListener']('input',_0x12f5c8=>{this['searchQuery']=_0x12f5c8['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x417b35['addEventListener']('keydown',_0x3255be=>{if(_0x3255be['key']==='Escape')_0x3255be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3255be['key']==='Enter'){_0x3255be['preventDefault'](),_0x3255be['stopPropagation']();const _0x57aa30=_0x3fcd4b['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x57aa30){const _0x4fa1d8=_0x57aa30['getAttribute']('data-value');this['select'](_0x4fa1d8);}}}}),_0x37cfb6['appendChild'](_0x417b35),_0x3fcd4b['appendChild'](_0x37cfb6),this['searchInput']=_0x417b35;}const _0x51bea7=document['createElement']('div');_0x51bea7['className']='custom-select-options',_0x3fcd4b['appendChild'](_0x51bea7),_0x26aa08['appendChild'](_0x456f92),_0x26aa08['appendChild'](_0x3fcd4b),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x26aa08,this['nativeSelect']),this['wrapper']=_0x26aa08,this['trigger']=_0x456f92,this['triggerText']=_0x1f537c,this['dropdown']=_0x3fcd4b,this['optionsContainer']=_0x51bea7,_0x456f92['addEventListener']('click',()=>this['toggle']()),_0x456f92['addEventListener']('keydown',_0x50b036=>this['handleKeydown'](_0x50b036)),document['addEventListener']('click',_0x44bc5e=>{!_0x26aa08['contains'](_0x44bc5e['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1cc8a8=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1cc8a8['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x175a8f=new MutationObserver(()=>{this['updateDisabledState']();});_0x175a8f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3133f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3133f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x24773f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x24773f),this['trigger']['setAttribute']('aria-disabled',_0x24773f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x24773f?'-1':'0'),_0x24773f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5434a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x43ae15=_0x5434a['filter'](_0x31b019=>!_0x31b019['disabled']&&!_0x31b019['hidden']);_0x5434a['forEach']((_0x5ccb52,_0x22d34b)=>{const _0x3e0962=document['createElement']('div');_0x3e0962['className']='custom-select-option',_0x3e0962['textContent']=_0x5ccb52['textContent'],_0x3e0962['setAttribute']('data-value',_0x5ccb52['value']),_0x3e0962['setAttribute']('data-index',_0x22d34b),_0x3e0962['setAttribute']('role','option'),_0x5ccb52['disabled']?_0x3e0962['classList']['add']('disabled'):_0x3e0962['addEventListener']('click',()=>this['select'](_0x5ccb52['value'])),_0x5ccb52['value']===this['selectedValue']&&_0x3e0962['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x3e0962),this['allOptions']['push']({'element':_0x3e0962,'text':_0x5ccb52['textContent']['toLowerCase'](),'value':_0x5ccb52['value'],'disabled':_0x5ccb52['disabled']});});if(this['searchable']&&this['searchInput']){const _0x905cd1=this['searchInput']['parentElement'];_0x43ae15['length']>0x3?_0x905cd1['style']['display']='':_0x905cd1['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x31ee22=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x57803c=>{if(!_0x31ee22||_0x57803c['disabled'])_0x57803c['element']['style']['display']='';else{const _0x21d75c=_0x57803c['text']['includes'](_0x31ee22);_0x57803c['element']['style']['display']=_0x21d75c?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x54acda){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x54acda,this['nativeSelect']['value']=_0x54acda;const _0x27dbf7=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x27dbf7),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x203720=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x203720&&(this['triggerText']['textContent']=_0x203720['textContent'],_0x203720['disabled']||_0x203720['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x20d9e3=>{_0x20d9e3['getAttribute']('data-value')===this['selectedValue']?_0x20d9e3['classList']['add']('selected'):_0x20d9e3['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 _0x272fe4=window['getComputedStyle'](this['dropdown']);if(_0x272fe4['position']==='fixed'){const _0x553d59=this['trigger']['getBoundingClientRect'](),_0x533fec=parseInt(_0x272fe4['maxHeight'])||0xc8,_0x13bace=window['innerHeight'],_0x36e278=_0x13bace-_0x553d59['bottom'],_0x31dfca=_0x553d59['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x504f70;_0x36e278<_0x533fec&&_0x31dfca>_0x36e278?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x13bace-_0x553d59['top']+'px',_0x504f70=Math['min'](_0x533fec,_0x31dfca-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x553d59['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x504f70=Math['min'](_0x533fec,_0x36e278-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px');if(this['optionsContainer']){let _0x325bb8=_0x504f70;if(this['searchInput']){const _0x1c1622=this['searchInput']['parentElement'];_0x1c1622&&(_0x325bb8-=_0x1c1622['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x325bb8)+'px';}this['dropdown']['style']['left']=_0x553d59['left']+'px',this['dropdown']['style']['width']=_0x553d59['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x19559d=this['searchInput']['parentElement'];_0x19559d&&_0x19559d['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'](_0x5b9091){if(this['nativeSelect']['disabled'])return;if(_0x5b9091['key']==='Enter'||_0x5b9091['key']==='\x20')_0x5b9091['preventDefault'](),this['toggle']();else _0x5b9091['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1ba0f2='\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',_0x1ba0f2),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2c0524=document['getElementById']('confirm-dialog-close'),_0x30c964=document['getElementById']('confirm-dialog-cancel'),_0x3ef8a5=document['getElementById']('confirm-dialog-confirm'),_0xa93a64=this['_modal']['querySelector']('.modal-overlay');_0x2c0524['addEventListener']('click',()=>this['_resolve'](![])),_0x30c964['addEventListener']('click',()=>this['_resolve'](![])),_0x3ef8a5['addEventListener']('click',()=>this['_resolve'](!![])),_0xa93a64['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1f499c=>{if(_0x1f499c['key']==='Escape')_0x1f499c['preventDefault'](),this['_resolve'](![]);else _0x1f499c['key']==='Enter'&&(_0x1f499c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2ff717,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x56011b=>{this['_resolvePromise']=_0x56011b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2ff717;const _0x25161c=document['getElementById']('confirm-dialog-cancel'),_0x580ba5=document['getElementById']('confirm-dialog-confirm');_0x25161c['textContent']=cancelText,_0x580ba5['textContent']=confirmText,_0x580ba5['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x580ba5['focus']();});},'_resolve'(_0x2393ce){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x2393ce),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xf20d0c,_0x24a9ee={}){this['container']=_0xf20d0c,this['options']={'placeholder':_0x24a9ee['placeholder']||'Type\x20to\x20search...','maxItems':_0x24a9ee['maxItems']||0x64,'loadItems':_0x24a9ee['loadItems']||(async()=>[]),'renderItem':_0x24a9ee['renderItem']||(_0x370f41=>({'primary':String(_0x370f41),'secondary':''})),'onSelect':_0x24a9ee['onSelect']||(()=>{}),'filterItems':_0x24a9ee['filterItems']||null,'getItemValue':_0x24a9ee['getItemValue']||(_0x58089c=>_0x58089c),'sortItems':_0x24a9ee['sortItems']||null,'debounceMs':_0x24a9ee['debounceMs']||0xc8,'minCharsForSearch':_0x24a9ee['minCharsForSearch']||0x0,'emptyMessage':_0x24a9ee['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x24a9ee['loadingMessage']||'Loading...','preload':_0x24a9ee['preload']!==![],'searchMode':_0x24a9ee['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',_0x4418fc=>this['onBlur'](_0x4418fc)),this['input']['addEventListener']('input',_0xff9a38=>this['onInput'](_0xff9a38)),this['input']['addEventListener']('keydown',_0xe83e5f=>this['onKeydown'](_0xe83e5f)),this['clearBtn']['addEventListener']('mousedown',_0x452bf5=>{_0x452bf5['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x208f92=>{_0x208f92['preventDefault']();}),document['addEventListener']('click',_0xbda906=>{!this['wrapper']['contains'](_0xbda906['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(_0x48b03e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x48b03e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x403de9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xdf2408){const _0x591d28=_0xdf2408['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x591d28);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x591d28):this['loadAndShow'](_0x591d28);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x49e35f){switch(_0x49e35f['key']){case'ArrowDown':_0x49e35f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x49e35f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x49e35f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x49e35f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x42aff4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3dadcf=this['selectedIndex']+_0x42aff4;if(_0x3dadcf>=0x0&&_0x3dadcf<this['filteredItems']['length']){this['selectedIndex']=_0x3dadcf,this['updateSelectionHighlight']();const _0x25d996=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x25d996[this['selectedIndex']]&&_0x25d996[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x584ae6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x584ae6['forEach']((_0x3cbdec,_0x198ade)=>{_0x3cbdec['classList']['toggle']('keyboard-selected',_0x198ade===this['selectedIndex']);});}async['loadAndShow'](_0x302925){this['showLoading']();try{const _0x458daf=await this['options']['loadItems'](_0x302925);if(this['options']['searchMode']==='server'){let _0x19b7ac=_0x458daf;this['options']['sortItems']&&(_0x19b7ac=this['options']['sortItems']([..._0x458daf]));this['filteredItems']=_0x19b7ac;const _0xbc6bc2=this['filteredItems']['length']>=this['options']['maxItems'];_0xbc6bc2&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xbc6bc2),this['open']();}else this['allItems']=_0x458daf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x302925);}catch(_0x107d73){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x107d73),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x46f237){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x46f237):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x15949a=this['filteredItems']['length']>=this['options']['maxItems'];_0x15949a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x15949a),this['open']();}['renderItems'](_0x55d3e9){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']((_0x46461e,_0x16e2ed)=>{const _0x591fd9=document['createElement']('div');_0x591fd9['className']='autocomplete-select-item',_0x591fd9['setAttribute']('role','option'),_0x591fd9['setAttribute']('data-index',_0x16e2ed);const _0x31e629=this['options']['renderItem'](_0x46461e);let _0x4f42c3='';_0x31e629['icon']&&(_0x4f42c3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x31e629['iconClass']||'')+'\x22>'+_0x31e629['icon']+'</span>'),_0x591fd9['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4f42c3+'\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'](_0x31e629['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x31e629['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x31e629['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591fd9['addEventListener']('click',()=>{this['selectItem'](_0x46461e);}),_0x591fd9['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x16e2ed,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591fd9);}),_0x55d3e9?(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'](_0x5d8f58){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5d8f58)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e66ce){this['selectedItem']=_0x2e66ce;const _0x8cb01f=this['options']['renderItem'](_0x2e66ce);this['input']['value']=_0x8cb01f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e66ce);}['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'](_0x53e2d6){if(_0x53e2d6){this['selectedItem']=_0x53e2d6;const _0x5f27a8=this['options']['renderItem'](_0x53e2d6);this['input']['value']=_0x5f27a8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x550f1a){this['allItems']=_0x550f1a,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'](_0x116877){this['input']['placeholder']=_0x116877;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1ae68b=null){const _0xb0c0d8=document['getElementById']('admin-menu-container'),_0x354627=document['getElementById']('admin-menu-btn'),_0x34e512=document['getElementById']('admin-menu');if(!_0xb0c0d8||!_0x354627||!_0x34e512)return;try{!_0x1ae68b&&(_0x1ae68b=await API['getCurrentUser']());if(_0x1ae68b){const _0x81239c=window['Permissions'],_0x3dc828=_0x81239c['hasServerPermission'](_0x1ae68b,'*')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:manage')||_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')||_0x81239c['hasTeamPermission'](_0x1ae68b,'teams:manage')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:view_details');if(!_0x3dc828)return;_0xb0c0d8['hidden']=![];if(!_0x81239c['hasServerPermission'](_0x1ae68b,'*')){const _0x144444=_0x34e512['querySelectorAll']('.admin-menu-item');_0x144444['forEach'](_0x17bc4f=>{const _0x1efa70=_0x17bc4f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1efa70==='Users'&&!_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Skills'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Settings'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Administration'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Git\x20History'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Roles'&&(_0x17bc4f['hidden']=!![]);});}_0x354627['addEventListener']('click',_0x451451=>{_0x451451['stopPropagation']();const _0x4faec8=document['getElementById']('actions-menu');if(_0x4faec8)_0x4faec8['hidden']=!![];_0x34e512['hidden']=!_0x34e512['hidden'];}),document['addEventListener']('click',_0xe3cdce=>{!_0x34e512['hidden']&&!_0x354627['contains'](_0xe3cdce['target'])&&!_0x34e512['contains'](_0xe3cdce['target'])&&(_0x34e512['hidden']=!![]);}),document['addEventListener']('keydown',_0x270b96=>{_0x270b96['key']==='Escape'&&!_0x34e512['hidden']&&(_0x34e512['hidden']=!![]);});}}catch(_0x194db9){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x194db9['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|