@profoundlogic/coderflow-server 0.7.8 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/entrypoint.sh +75 -5
- 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 -0
- package/dist/lib/task-context-usage.js +1 -0
- 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.css +108 -1
- package/dist/web-ui/public/admin.html +35 -23
- 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.html +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/styles.css +45 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +11 -0
- 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 _0x233e76=window['location']['pathname'],_0x42606e=_0x233e76['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x42606e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x42606e[0x1]),_0x42606e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51326d={}){const _0x286f2c=new URLSearchParams();_0x51326d['userId']&&_0x286f2c['set']('userId',String(_0x51326d['userId']));_0x51326d['automation']&&_0x286f2c['set']('automation',String(_0x51326d['automation']));const _0x4753fe=API_BASE+'/tasks/stats'+(_0x286f2c['toString']()?'?'+_0x286f2c['toString']():''),_0x40243d=await fetch(_0x4753fe);if(!_0x40243d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x40243d['statusText']);return await _0x40243d['json']();},async 'getTasks'(_0xcf7701={}){const _0x20bac0=new URLSearchParams();_0xcf7701['status']&&_0x20bac0['set']('status',String(_0xcf7701['status']));_0xcf7701['environment']&&_0x20bac0['set']('environment',String(_0xcf7701['environment']));_0xcf7701['automation']&&_0x20bac0['set']('automation',String(_0xcf7701['automation']));if(_0xcf7701['include']){const _0x25ff1b=Array['isArray'](_0xcf7701['include'])?_0xcf7701['include']['join'](','):String(_0xcf7701['include']);_0x25ff1b&&_0x20bac0['set']('include',_0x25ff1b);}_0xcf7701['filter']&&_0x20bac0['set']('filter',String(_0xcf7701['filter']));_0xcf7701['page']&&_0x20bac0['set']('page',String(_0xcf7701['page']));_0xcf7701['limit']&&_0x20bac0['set']('limit',String(_0xcf7701['limit']));_0xcf7701['userId']&&_0x20bac0['set']('userId',String(_0xcf7701['userId']));_0xcf7701['search']&&_0x20bac0['set']('search',String(_0xcf7701['search']));_0xcf7701['includeChildTasks']&&_0x20bac0['set']('includeChildTasks','true');const _0x2fe253=API_BASE+'/tasks'+(_0x20bac0['toString']()?'?'+_0x20bac0['toString']():''),_0x3559e8=await fetch(_0x2fe253);if(!_0x3559e8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3559e8['statusText']);return await _0x3559e8['json']();},async 'getAutomations'(_0x57513d={}){const _0x5b03ef=new URLSearchParams();_0x57513d['environment']&&_0x5b03ef['set']('environment',String(_0x57513d['environment']));const _0xc2c37f=await fetch(API_BASE+'/api/automations'+(_0x5b03ef['toString']()?'?'+_0x5b03ef['toString']():''));if(!_0xc2c37f['ok']){const _0x2fc5c1=await _0xc2c37f['json']()['catch'](()=>({}));throw new Error(_0x2fc5c1['message']||_0x2fc5c1['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc2c37f['statusText']);}return await _0xc2c37f['json']();},async 'getAutomation'(_0x3d1457){const _0x287925=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3d1457));if(!_0x287925['ok']){const _0x2050d8=await _0x287925['json']()['catch'](()=>({}));throw new Error(_0x2050d8['message']||_0x2050d8['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x287925['statusText']);}return await _0x287925['json']();},async 'createAutomation'(_0xbb7a54){const _0x3334aa=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbb7a54||{})});if(!_0x3334aa['ok']){const _0x53f690=await _0x3334aa['json']()['catch'](()=>({}));throw new Error(_0x53f690['message']||_0x53f690['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3334aa['statusText']);}return await _0x3334aa['json']();},async 'updateAutomation'(_0x21deb8,_0x25a9c7){const _0x1c34d7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x21deb8),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a9c7||{})});if(!_0x1c34d7['ok']){const _0x532df9=await _0x1c34d7['json']()['catch'](()=>({}));throw new Error(_0x532df9['message']||_0x532df9['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1c34d7['statusText']);}return await _0x1c34d7['json']();},async 'deleteAutomation'(_0x449e86){const _0xe0f73f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x449e86),{'method':'DELETE'});if(!_0xe0f73f['ok']){const _0x5e9e81=await _0xe0f73f['json']()['catch'](()=>({}));throw new Error(_0x5e9e81['message']||_0x5e9e81['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xe0f73f['statusText']);}return await _0xe0f73f['json']();},async 'triggerAutomation'(_0x57a1e0){const _0x53d422=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57a1e0)+'/trigger',{'method':'POST'});if(!_0x53d422['ok']){const _0x22be42=await _0x53d422['json']()['catch'](()=>({}));throw new Error(_0x22be42['message']||_0x22be42['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x53d422['statusText']);}return await _0x53d422['json']();},async 'setAutomationEnabled'(_0x2c7e53,_0x3779fc){const _0x1de884=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c7e53)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x3779fc})});if(!_0x1de884['ok']){const _0x1823e1=await _0x1de884['json']()['catch'](()=>({}));throw new Error(_0x1823e1['message']||_0x1823e1['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1de884['statusText']);}return await _0x1de884['json']();},async 'getAutomationHistory'(_0x1f6557,_0x2e7794=0x32){const _0x44544e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f6557)+'/history?limit='+encodeURIComponent(String(_0x2e7794)));if(!_0x44544e['ok']){const _0x3909f0=await _0x44544e['json']()['catch'](()=>({}));throw new Error(_0x3909f0['message']||_0x3909f0['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x44544e['statusText']);}return await _0x44544e['json']();},async 'getTask'(_0x3a95cc,_0x370eb6={}){const _0xd98613=new URLSearchParams();if(_0x370eb6['include']){const _0x1c1921=Array['isArray'](_0x370eb6['include'])?_0x370eb6['include']['join'](','):String(_0x370eb6['include']);if(_0x1c1921)_0xd98613['set']('include',_0x1c1921);}const _0x2dbec9=await fetch(API_BASE+'/tasks/'+_0x3a95cc+(_0xd98613['toString']()?'?'+_0xd98613['toString']():''));if(!_0x2dbec9['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2dbec9['statusText']);return await _0x2dbec9['json']();},async 'getTaskResults'(_0x16d0d6){const _0x33107a=await fetch(API_BASE+'/tasks/'+_0x16d0d6+'/results');if(!_0x33107a['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x33107a['statusText']);return await _0x33107a['json']();},async 'getTaskPatches'(_0x5844d2){const _0x3754b2=await fetch(API_BASE+'/tasks/'+_0x5844d2+'/patches');if(!_0x3754b2['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x3754b2['statusText']);return await _0x3754b2['json']();},async 'getTaskAttachments'(_0x1d5d56){const _0x386fbe=await fetch(API_BASE+'/tasks/'+_0x1d5d56+'/attachments');if(!_0x386fbe['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x386fbe['statusText']);return await _0x386fbe['json']();},async 'uploadAttachments'(_0xab1186,_0x448dd3){const _0x18c024=new FormData();for(const _0x129ffe of _0x448dd3){_0x18c024['append']('attachments',_0x129ffe);}const _0x5edfbe=await fetch(API_BASE+'/tasks/'+_0xab1186+'/attachments',{'method':'POST','body':_0x18c024});if(!_0x5edfbe['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5edfbe['statusText']);return await _0x5edfbe['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3f02f9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3f02f9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3f02f9['json']();}catch(_0x24e1b1){return{'available':![],'reason':_0x24e1b1['message']};}},async 'generateTaskName'(_0x1e9346){try{const _0x3bccdd=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x1e9346})});return await _0x3bccdd['json']();}catch(_0x1d19dc){return{'success':![],'error':_0x1d19dc['message']};}},async 'createTask'(_0x5864a8){let _0x13d7a1,_0x4ec753={};if(_0x5864a8['files']&&_0x5864a8['files']['length']>0x0){const _0x45b4eb=new FormData();for(const [_0x319c78,_0x4f9e88]of Object['entries'](_0x5864a8)){if(_0x319c78!=='files'){if(_0x4f9e88==null)continue;typeof _0x4f9e88==='object'?_0x45b4eb['append'](_0x319c78,JSON['stringify'](_0x4f9e88)):_0x45b4eb['append'](_0x319c78,String(_0x4f9e88));}}for(const _0x58f640 of _0x5864a8['files']){_0x45b4eb['append']('attachments',_0x58f640);}_0x13d7a1=_0x45b4eb;}else _0x4ec753['Content-Type']='application/json',_0x13d7a1=JSON['stringify'](_0x5864a8);const _0x300fc5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4ec753,'body':_0x13d7a1});if(!_0x300fc5['ok']){const _0x171555=await _0x300fc5['json'](),_0x479552=new Error(_0x171555['error']||'Failed\x20to\x20create\x20task:\x20'+_0x300fc5['statusText']),{message:_0x12f62a,..._0x3731b1}=_0x171555;Object['assign'](_0x479552,_0x3731b1);throw _0x479552;}return await _0x300fc5['json']();},async 'createTestTask'(_0x39c482){const _0x6d1269=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39c482)});if(!_0x6d1269['ok']){const _0x28537b=await _0x6d1269['json']();throw new Error(_0x28537b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x6d1269['statusText']);}return await _0x6d1269['json']();},async 'createEphemeralTest'(_0x16d9ce){const _0x35b6b0=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16d9ce)});if(!_0x35b6b0['ok']){const _0x16e855=await _0x35b6b0['json']();throw new Error(_0x16e855['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35b6b0['statusText']);}return await _0x35b6b0['json']();},async 'createDeployTask'(_0x39782d){const _0x41c85a=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39782d)});if(!_0x41c85a['ok']){const _0x4dc5a2=await _0x41c85a['json']();throw new Error(_0x4dc5a2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41c85a['statusText']);}return await _0x41c85a['json']();},async 'getEnvironments'(){const _0x3dad25=await fetch(API_BASE+'/environments');if(!_0x3dad25['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3dad25['statusText']);return await _0x3dad25['json']();},async 'getEnvironment'(_0x2e975d){const _0x5d82a3=await fetch(API_BASE+'/environments/'+_0x2e975d);if(!_0x5d82a3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5d82a3['statusText']);return await _0x5d82a3['json']();},async 'getEnvironmentRepoHistory'(_0x13764c,_0x1f97e8,_0x5b8869={}){if(!_0x13764c||!_0x1f97e8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4d95b9=new URLSearchParams();if(_0x5b8869['limit'])_0x4d95b9['set']('limit',String(_0x5b8869['limit']));if(_0x5b8869['offset'])_0x4d95b9['set']('offset',String(_0x5b8869['offset']));if(_0x5b8869['search'])_0x4d95b9['set']('search',String(_0x5b8869['search']));if(_0x5b8869['branch'])_0x4d95b9['set']('branch',String(_0x5b8869['branch']));const _0x27fa13=API_BASE+'/environments/'+encodeURIComponent(_0x13764c)+'/repos/'+encodeURIComponent(_0x1f97e8)+'/git/history',_0x4e686f=await fetch(''+_0x27fa13+(_0x4d95b9['toString']()?'?'+_0x4d95b9['toString']():''));if(!_0x4e686f['ok']){const _0x51af5e=await _0x4e686f['json']()['catch'](()=>({}));throw new Error(_0x51af5e['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4e686f['statusText']);}return await _0x4e686f['json']();},async 'getEnvironmentRepoCommit'(_0x240753,_0x40b235,_0x5ed338){if(!_0x240753||!_0x40b235||!_0x5ed338)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xdd87bb=API_BASE+'/environments/'+encodeURIComponent(_0x240753)+'/repos/'+encodeURIComponent(_0x40b235)+'/git/commits/'+encodeURIComponent(_0x5ed338),_0x2907e4=await fetch(_0xdd87bb);if(!_0x2907e4['ok']){const _0x4715df=await _0x2907e4['json']()['catch'](()=>({}));throw new Error(_0x4715df['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2907e4['statusText']);}return await _0x2907e4['json']();},async 'getEnvironmentRepoBranches'(_0x3bca45,_0x58a792){if(!_0x3bca45||!_0x58a792)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x359fdd=API_BASE+'/environments/'+encodeURIComponent(_0x3bca45)+'/repos/'+encodeURIComponent(_0x58a792)+'/git/branches',_0x1b6374=await fetch(_0x359fdd);if(!_0x1b6374['ok']){const _0x3d67a6=await _0x1b6374['json']()['catch'](()=>({}));throw new Error(_0x3d67a6['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b6374['statusText']);}return await _0x1b6374['json']();},async 'revertEnvironmentRepoCommit'(_0x1c5518,_0x1adb33,_0x12a37d,_0x558789={}){if(!_0x1c5518||!_0x1adb33||!_0x12a37d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3aacdc=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c5518)+'/repos/'+encodeURIComponent(_0x1adb33)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x12a37d,..._0x558789})});if(!_0x3aacdc['ok']){const _0x5efba7=await _0x3aacdc['json']()['catch'](()=>({}));throw new Error(_0x5efba7['message']||_0x5efba7['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3aacdc['statusText']);}return await _0x3aacdc['json']();},async 'getTemplates'(_0x2f948f={}){const _0x49ab1a=new URLSearchParams();if(_0x2f948f['include']){const _0x39127f=Array['isArray'](_0x2f948f['include'])?_0x2f948f['include']['join'](','):String(_0x2f948f['include']);if(_0x39127f)_0x49ab1a['set']('include',_0x39127f);}const _0x47a483=await fetch(API_BASE+'/templates'+(_0x49ab1a['toString']()?'?'+_0x49ab1a['toString']():''));if(!_0x47a483['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x47a483['statusText']);return await _0x47a483['json']();},async 'getTemplatesForEnvironment'(_0x321859,_0x3afc16={}){if(!_0x321859)throw new Error('Environment\x20name\x20is\x20required');const _0x421eed=new URLSearchParams();if(_0x3afc16['include']){const _0x8d462b=Array['isArray'](_0x3afc16['include'])?_0x3afc16['include']['join'](','):String(_0x3afc16['include']);if(_0x8d462b)_0x421eed['set']('include',_0x8d462b);}const _0x4c60fa=await fetch(API_BASE+'/templates/'+_0x321859+(_0x421eed['toString']()?'?'+_0x421eed['toString']():''));if(!_0x4c60fa['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x321859+':\x20'+_0x4c60fa['statusText']);return await _0x4c60fa['json']();},async 'getTemplate'(_0xd6cb03,_0x4e2863,_0x5e64bd={}){if(!_0xd6cb03||!_0x4e2863)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x59453d=new URLSearchParams();if(_0x5e64bd['include']){const _0x38c5d1=Array['isArray'](_0x5e64bd['include'])?_0x5e64bd['include']['join'](','):String(_0x5e64bd['include']);if(_0x38c5d1)_0x59453d['set']('include',_0x38c5d1);}const _0xefadee=await fetch(API_BASE+'/templates/'+_0xd6cb03+'/'+_0x4e2863+(_0x59453d['toString']()?'?'+_0x59453d['toString']():''));if(!_0xefadee['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0xefadee['statusText']);return await _0xefadee['json']();},async 'getTaskLogs'(_0x1641e0,_0x4edb76={}){if(!_0x1641e0)throw new Error('Task\x20ID\x20is\x20required');const _0xf1d8f2=new URLSearchParams();_0x4edb76['tail']&&_0xf1d8f2['set']('tail',String(_0x4edb76['tail']));const _0x1ffbcc=await fetch(API_BASE+'/tasks/'+_0x1641e0+'/logs'+(_0xf1d8f2['toString']()?'?'+_0xf1d8f2['toString']():''));if(!_0x1ffbcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1ffbcc['statusText']);return await _0x1ffbcc['text']();},async 'getContainers'(){const _0x2c00cc=await fetch(API_BASE+'/containers');if(!_0x2c00cc['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2c00cc['statusText']);return await _0x2c00cc['json']();},async 'getContainer'(_0x52da2d){const _0x1cf3a7=await fetch(API_BASE+'/containers/'+_0x52da2d);if(!_0x1cf3a7['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1cf3a7['statusText']);return await _0x1cf3a7['json']();},async 'startInteractiveContainer'(_0x151c7c){const _0x15a0f2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x151c7c)});if(!_0x15a0f2['ok']){const _0x4cac7b=await _0x15a0f2['json']()['catch'](()=>({}));throw new Error(_0x4cac7b['message']||'Failed\x20to\x20start\x20container:\x20'+_0x15a0f2['statusText']);}return await _0x15a0f2['json']();},async 'startContainerCodeServer'(_0x37c55c,_0x3934ce={}){if(!_0x37c55c)throw new Error('Container\x20ID\x20is\x20required');const _0x549dc3=new URLSearchParams();_0x3934ce['theme']&&_0x549dc3['set']('theme',_0x3934ce['theme']);const _0x4132c9=await fetch(API_BASE+'/containers/'+_0x37c55c+'/code-server'+(_0x549dc3['toString']()?'?'+_0x549dc3['toString']():'')),_0xde09f5=await _0x4132c9['json']()['catch'](()=>({}));if(!_0x4132c9['ok'])throw new Error(_0xde09f5['message']||_0xde09f5['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4132c9['statusText']);return _0xde09f5;},async 'stopContainer'(_0x36f147){const _0x24687a=await fetch(API_BASE+'/containers/'+_0x36f147,{'method':'DELETE'});if(!_0x24687a['ok']){const _0x12e39e=await _0x24687a['json']()['catch'](()=>({}));throw new Error(_0x12e39e['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x24687a['statusText']);}return await _0x24687a['json']();},async 'stopTask'(_0x4e72e2){if(!_0x4e72e2)throw new Error('Task\x20ID\x20is\x20required');const _0x94cb8=await fetch(API_BASE+'/tasks/'+_0x4e72e2+'/stop',{'method':'POST'});if(!_0x94cb8['ok']){const _0x3008fa=await _0x94cb8['json']()['catch'](()=>({}));throw new Error(_0x3008fa['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x94cb8['statusText']);}return await _0x94cb8['json']();},async 'interruptTask'(_0x442fd5){if(!_0x442fd5)throw new Error('Task\x20ID\x20is\x20required');const _0x249195=await fetch(API_BASE+'/tasks/'+_0x442fd5+'/interrupt',{'method':'POST'});if(!_0x249195['ok']){const _0x56313a=await _0x249195['json']()['catch'](()=>({}));throw new Error(_0x56313a['error']||_0x56313a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x249195['statusText']);}return await _0x249195['json']();},async 'startTask'(_0x2b3d49){if(!_0x2b3d49)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc511=await fetch(API_BASE+'/tasks/'+_0x2b3d49+'/start',{'method':'POST'});if(!_0x5dc511['ok']){const _0x1edb7c=await _0x5dc511['json']()['catch'](()=>({}));throw new Error(_0x1edb7c['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5dc511['statusText']);}return await _0x5dc511['json']();},async 'deleteTask'(_0x487e5c){if(!_0x487e5c)throw new Error('Task\x20ID\x20is\x20required');const _0x370fa3=await fetch(API_BASE+'/tasks/'+_0x487e5c,{'method':'DELETE'});if(!_0x370fa3['ok']){const _0x3ea64d=await _0x370fa3['json']()['catch'](()=>({}));throw new Error(_0x3ea64d['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x370fa3['statusText']);}return await _0x370fa3['json']();},async 'refreshTasksFromDisk'(){const _0x24922f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x24922f['ok']){const _0x316317=await _0x24922f['json']()['catch'](()=>({}));throw new Error(_0x316317['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x24922f['statusText']);}return await _0x24922f['json']();},async 'approveTask'(_0x24b161,_0x47a71f={}){if(!_0x24b161)throw new Error('Task\x20ID\x20is\x20required');const _0x19d528={'commit_message':_0x47a71f['commit_message']||'','pull':_0x47a71f['pull']??![],'push':_0x47a71f['push']??![]};_0x47a71f['new_branch']&&(_0x19d528['new_branch']=_0x47a71f['new_branch']);const _0x1e1413=await fetch(API_BASE+'/tasks/'+_0x24b161+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d528)});if(!_0x1e1413['ok']){const _0x354d8e=await _0x1e1413['json']()['catch'](()=>({}));let _0x4ba1a4=_0x354d8e['error']||_0x354d8e['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1e1413['statusText'];if(_0x354d8e['results']&&Array['isArray'](_0x354d8e['results'])){const _0x49ff04=_0x354d8e['results']['filter'](_0x1ab344=>!_0x1ab344['success']&&_0x1ab344['error']);_0x49ff04['length']>0x0&&(_0x4ba1a4=_0x49ff04[0x0]['error']);}throw new Error(_0x4ba1a4);}return await _0x1e1413['json']();},async 'getPullRequestInfo'(_0x58e444){if(!_0x58e444)throw new Error('Task\x20ID\x20is\x20required');const _0x10b24d=await fetch(API_BASE+'/tasks/'+_0x58e444+'/pull-request-info');if(!_0x10b24d['ok']){const _0x27bf18=await _0x10b24d['json']()['catch'](()=>({}));throw new Error(_0x27bf18['error']||_0x27bf18['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x10b24d['statusText']);}return await _0x10b24d['json']();},async 'createPullRequests'(_0x2815c9,_0x3e5a54){if(!_0x2815c9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e5a54||!Array['isArray'](_0x3e5a54))throw new Error('repos\x20array\x20is\x20required');const _0x58c0f2=await fetch(API_BASE+'/tasks/'+_0x2815c9+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3e5a54})});if(!_0x58c0f2['ok']){const _0x3fea8c=await _0x58c0f2['json']()['catch'](()=>({}));let _0x4c933e=_0x3fea8c['error']||_0x3fea8c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c0f2['statusText'];if(_0x3fea8c['results']&&Array['isArray'](_0x3fea8c['results'])){const _0x17fb02=_0x3fea8c['results']['filter'](_0x5d58f3=>!_0x5d58f3['success']&&_0x5d58f3['error']);_0x17fb02['length']>0x0&&(_0x4c933e=_0x17fb02[0x0]['error']);}throw new Error(_0x4c933e);}return await _0x58c0f2['json']();},async 'syncRepos'(_0xf094d){if(!_0xf094d)throw new Error('Task\x20ID\x20is\x20required');const _0x3515d5=await fetch(API_BASE+'/tasks/'+_0xf094d+'/sync-repos',{'method':'POST'});if(!_0x3515d5['ok']){const _0x3e7884=await _0x3515d5['json']()['catch'](()=>({}));throw new Error(_0x3e7884['error']||_0x3e7884['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3515d5['statusText']);}return await _0x3515d5['json']();},async 'getIbmiSyncInfo'(_0x341e0f){if(!_0x341e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x389324=await fetch(API_BASE+'/tasks/'+_0x341e0f+'/ibmi-sync-info');if(!_0x389324['ok']){const _0x4addca=await _0x389324['json']()['catch'](()=>({}));throw new Error(_0x4addca['error']||_0x4addca['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x389324['json']();},async 'getSyncFiles'(_0x1d1d69){if(!_0x1d1d69)throw new Error('Task\x20ID\x20is\x20required');const _0x6ee51a=await fetch(API_BASE+'/tasks/'+_0x1d1d69+'/sync-to-ibmi/files');if(!_0x6ee51a['ok']){const _0x360d36=await _0x6ee51a['json']()['catch'](()=>({}));throw new Error(_0x360d36['error']||_0x360d36['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x6ee51a['json']();},async 'syncToIbmi'(_0x8440d7,_0x19a302,_0x4fd5b2=null,_0x2bd054=null,_0x26f393=null){if(!_0x8440d7)throw new Error('Task\x20ID\x20is\x20required');const _0x5e561c={'library':_0x19a302};if(_0x4fd5b2)_0x5e561c['user']=_0x4fd5b2;if(_0x2bd054)_0x5e561c['password']=_0x2bd054;if(_0x26f393)_0x5e561c['files']=_0x26f393;const _0x569095=await fetch(API_BASE+'/tasks/'+_0x8440d7+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e561c)});if(!_0x569095['ok']){const _0x5ac8eb=await _0x569095['json']()['catch'](()=>({}));throw new Error(_0x5ac8eb['error']||_0x5ac8eb['message']||'Sync\x20failed');}return await _0x569095['json']();},async 'getIbmiSyncLog'(_0x9eff87){if(!_0x9eff87)throw new Error('Task\x20ID\x20is\x20required');const _0x20daf6=await fetch(API_BASE+'/tasks/'+_0x9eff87+'/ibmi-sync-log');if(!_0x20daf6['ok']){const _0x26e11b=await _0x20daf6['json']()['catch'](()=>({}));throw new Error(_0x26e11b['error']||_0x26e11b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20daf6['json']();},async 'pullChanges'(_0x48596c){if(!_0x48596c)throw new Error('Task\x20ID\x20is\x20required');const _0x953177=await fetch(API_BASE+'/tasks/'+_0x48596c+'/pull-changes',{'method':'POST'});if(!_0x953177['ok']){const _0x30d760=await _0x953177['json']()['catch'](()=>({}));throw new Error(_0x30d760['error']||_0x30d760['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x953177['statusText']);}return await _0x953177['json']();},async 'readFile'(_0xe71118,_0x791054){if(!_0xe71118)throw new Error('Task\x20ID\x20is\x20required');if(!_0x791054)throw new Error('File\x20path\x20is\x20required');const _0x2f6906=await fetch(API_BASE+'/tasks/'+_0xe71118+'/files?path='+encodeURIComponent(_0x791054));if(!_0x2f6906['ok']){const _0x2316e0=await _0x2f6906['json']()['catch'](()=>({}));throw new Error(_0x2316e0['error']||_0x2316e0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2f6906['statusText']);}return await _0x2f6906['json']();},'getTaskFileDownloadUrl'(_0x2d0f82,_0xee3c5){if(!_0x2d0f82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xee3c5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2d0f82+'/files/download?path='+encodeURIComponent(_0xee3c5);},async 'writeFile'(_0x496ed1,_0x5d6866,_0x2eb14c){if(!_0x496ed1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d6866)throw new Error('File\x20path\x20is\x20required');if(_0x2eb14c===undefined)throw new Error('Content\x20is\x20required');const _0x728ba=await fetch(API_BASE+'/tasks/'+_0x496ed1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d6866,'content':_0x2eb14c})});if(!_0x728ba['ok']){const _0x5f51e4=await _0x728ba['json']()['catch'](()=>({}));throw new Error(_0x5f51e4['error']||_0x5f51e4['message']||'Failed\x20to\x20write\x20file:\x20'+_0x728ba['statusText']);}return await _0x728ba['json']();},async 'uploadTaskFiles'(_0x4051cc,_0x35333d,_0x3a82c5){if(!_0x4051cc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35333d)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a82c5||_0x3a82c5['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0xe489f4=new FormData();_0xe489f4['append']('targetDir',_0x35333d);for(const _0x999a0 of _0x3a82c5){_0xe489f4['append']('files',_0x999a0,_0x999a0['name']);}const _0x2fbfa6=await fetch(API_BASE+'/tasks/'+_0x4051cc+'/files/upload',{'method':'POST','body':_0xe489f4});if(!_0x2fbfa6['ok']){const _0x255b88=await _0x2fbfa6['json']()['catch'](()=>({}));throw new Error(_0x255b88['error']||_0x255b88['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2fbfa6['statusText']);}return await _0x2fbfa6['json']();},async 'createDirectory'(_0x2f2e1e,_0x3095a4){if(!_0x2f2e1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3095a4)throw new Error('Directory\x20path\x20is\x20required');const _0x2121f4=await fetch(API_BASE+'/tasks/'+_0x2f2e1e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3095a4})});if(!_0x2121f4['ok']){const _0x16a913=await _0x2121f4['json']()['catch'](()=>({}));throw new Error(_0x16a913['error']||_0x16a913['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x2121f4['statusText']);}return await _0x2121f4['json']();},async 'renamePath'(_0x22de85,_0x45b0a8,_0x4fa939){if(!_0x22de85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45b0a8)throw new Error('Source\x20path\x20is\x20required');if(!_0x4fa939)throw new Error('Destination\x20path\x20is\x20required');const _0x3d394d=await fetch(API_BASE+'/tasks/'+_0x22de85+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45b0a8,'newPath':_0x4fa939})});if(!_0x3d394d['ok']){const _0x1029ce=await _0x3d394d['json']()['catch'](()=>({}));throw new Error(_0x1029ce['error']||_0x1029ce['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x3d394d['statusText']);}return await _0x3d394d['json']();},async 'deleteFile'(_0x1e291a,_0x4787d8){if(!_0x1e291a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4787d8)throw new Error('File\x20path\x20is\x20required');const _0x4f20d1=await fetch(API_BASE+'/tasks/'+_0x1e291a+'/files?path='+encodeURIComponent(_0x4787d8),{'method':'DELETE'});if(!_0x4f20d1['ok']){const _0x19e06d=await _0x4f20d1['json']()['catch'](()=>({}));throw new Error(_0x19e06d['error']||_0x19e06d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f20d1['statusText']);}return await _0x4f20d1['json']();},async 'deleteDirectory'(_0x326155,_0x20b120){if(!_0x326155)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20b120)throw new Error('Directory\x20path\x20is\x20required');const _0x334751=await fetch(API_BASE+'/tasks/'+_0x326155+'/files/directory?path='+encodeURIComponent(_0x20b120),{'method':'DELETE'});if(!_0x334751['ok']){const _0x115c48=await _0x334751['json']()['catch'](()=>({}));throw new Error(_0x115c48['error']||_0x115c48['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x334751['statusText']);}return await _0x334751['json']();},async 'discardFile'(_0x3361de,_0x4c9221,_0x196ae6){if(!_0x3361de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4c9221)throw new Error('File\x20path\x20is\x20required');if(!_0x196ae6)throw new Error('Repository\x20path\x20is\x20required');const _0x44f686=await fetch(API_BASE+'/tasks/'+_0x3361de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4c9221,'repoPath':_0x196ae6})});if(!_0x44f686['ok']){const _0x347196=await _0x44f686['json']()['catch'](()=>({}));throw new Error(_0x347196['error']||_0x347196['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x44f686['statusText']);}return await _0x44f686['json']();},async 'followUpTask'(_0x12de5a,_0x3f5458={}){if(!_0x12de5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f5458['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1befb9,_0x29c66f={};if(_0x3f5458['files']&&_0x3f5458['files']['length']>0x0){const _0x112214=new FormData();_0x112214['append']('instructions',_0x3f5458['instructions']);for(const _0xc81535 of _0x3f5458['files']){_0x112214['append']('attachments',_0xc81535);}_0x1befb9=_0x112214;}else _0x29c66f['Content-Type']='application/json',_0x1befb9=JSON['stringify']({'instructions':_0x3f5458['instructions']});const _0x1b6f4a=await fetch(API_BASE+'/tasks/'+_0x12de5a+'/follow-up',{'method':'POST','headers':_0x29c66f,'body':_0x1befb9});if(!_0x1b6f4a['ok']){const _0x36dd98=await _0x1b6f4a['json']()['catch'](()=>({}));throw new Error(_0x36dd98['error']||_0x36dd98['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1b6f4a['statusText']);}return await _0x1b6f4a['json']();},async 'getTaskRewindPoints'(_0x47f57a){if(!_0x47f57a)throw new Error('Task\x20ID\x20is\x20required');const _0x2746eb=await fetch(API_BASE+'/tasks/'+_0x47f57a+'/rewind-points');if(!_0x2746eb['ok']){const _0x1374fc=await _0x2746eb['json']()['catch'](()=>({}));throw new Error(_0x1374fc['error']||_0x1374fc['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2746eb['statusText']);}return await _0x2746eb['json']();},async 'rewindTask'(_0x376c69,_0x339888={}){if(!_0x376c69)throw new Error('Task\x20ID\x20is\x20required');const _0x6257c6=Number['isInteger'](_0x339888['targetFollowUpCount'])?_0x339888['targetFollowUpCount']:0x0,_0x486e3f={'targetFollowUpCount':_0x6257c6};typeof _0x339888['instructions']==='string'&&_0x339888['instructions']['trim']()&&(_0x486e3f['instructions']=_0x339888['instructions']['trim']());typeof _0x339888['rewindFiles']==='boolean'&&(_0x486e3f['rewindFiles']=_0x339888['rewindFiles']);const _0x3d71ba=await fetch(API_BASE+'/tasks/'+_0x376c69+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486e3f)});if(!_0x3d71ba['ok']){const _0x2dc3f7=await _0x3d71ba['json']()['catch'](()=>({}));throw new Error(_0x2dc3f7['error']||_0x2dc3f7['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d71ba['statusText']);}return await _0x3d71ba['json']();},async 'login'(_0x4d2314,_0x108efd){const _0x5ccc2e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4d2314,'password':_0x108efd})});if(!_0x5ccc2e['ok']){const _0x5d231c=await _0x5ccc2e['json']();throw new Error(_0x5d231c['message']||'Login\x20failed');}return await _0x5ccc2e['json']();},async 'logout'(){const _0x529c56=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x529c56['ok']){const _0x458bf3=await _0x529c56['json']();throw new Error(_0x458bf3['message']||'Logout\x20failed');}return await _0x529c56['json']();},async 'getCurrentUser'(){const _0x40a1cb=await fetch(API_BASE+'/auth/me');if(!_0x40a1cb['ok'])throw new Error('Not\x20authenticated');const _0x426a76=await _0x40a1cb['json']();return _0x426a76['user'];},async 'getRolesInfo'(){const _0x40fd7c=await fetch(API_BASE+'/users/roles');if(!_0x40fd7c['ok']){const _0x490a59=await _0x40fd7c['json']();throw new Error(_0x490a59['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x40fd7c['json']();},async 'getUsers'(){const _0x11f86a=await fetch(API_BASE+'/users');if(!_0x11f86a['ok']){const _0x1ef210=await _0x11f86a['json']();throw new Error(_0x1ef210['message']||'Failed\x20to\x20get\x20users');}return await _0x11f86a['json']();},async 'getUser'(_0x1e0075){const _0x199c03=await fetch(API_BASE+'/users/'+_0x1e0075);if(!_0x199c03['ok']){const _0x15bd2b=await _0x199c03['json']();throw new Error(_0x15bd2b['message']||'Failed\x20to\x20get\x20user');}return await _0x199c03['json']();},async 'createUser'(_0x5da985){const _0x4d7315=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da985)});if(!_0x4d7315['ok']){const _0x2b4b1e=await _0x4d7315['json']();throw new Error(_0x2b4b1e['message']||'Failed\x20to\x20create\x20user');}return await _0x4d7315['json']();},async 'updateUser'(_0x24b74d,_0x37ebb5){const _0x6c6ced=await fetch(API_BASE+'/users/'+_0x24b74d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37ebb5)});if(!_0x6c6ced['ok']){const _0x280292=await _0x6c6ced['json']();throw new Error(_0x280292['message']||'Failed\x20to\x20update\x20user');}return await _0x6c6ced['json']();},async 'deleteUser'(_0x11a713){const _0x140950=await fetch(API_BASE+'/users/'+_0x11a713,{'method':'DELETE'});if(!_0x140950['ok']){const _0x441443=await _0x140950['json']();throw new Error(_0x441443['message']||'Failed\x20to\x20delete\x20user');}return await _0x140950['json']();},async 'stopAllContainers'(){const _0x43b6d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x302dbc=await _0x43b6d1['json']()['catch'](()=>({}));if(!_0x43b6d1['ok'])throw new Error(_0x302dbc['message']||_0x302dbc['error']||'Failed\x20to\x20stop\x20containers');return _0x302dbc;},async 'removeStoppedContainers'(){const _0x5cf77b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c3693=await _0x5cf77b['json']()['catch'](()=>({}));if(!_0x5cf77b['ok'])throw new Error(_0x5c3693['message']||_0x5c3693['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c3693;},async 'pruneDockerResources'(){const _0x3eb461=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x33b2af=await _0x3eb461['json']()['catch'](()=>({}));if(!_0x3eb461['ok'])throw new Error(_0x33b2af['message']||_0x33b2af['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x33b2af;},async 'getUpdateSettings'(){const _0x19df42=await fetch(API_BASE+'/health/update-settings'),_0x219899=await _0x19df42['json']()['catch'](()=>({}));if(!_0x19df42['ok'])throw new Error(_0x219899['message']||_0x219899['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x219899;},async 'applyServerUpdate'(_0x2ba00b){const _0x110c0b=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2ba00b})}),_0x169130=await _0x110c0b['json']()['catch'](()=>({}));if(!_0x110c0b['ok']){const _0x4a614c=new Error(_0x169130['message']||_0x169130['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x169130['output']!==undefined)_0x4a614c['output']=_0x169130['output'];if(_0x169130['error']!==undefined)_0x4a614c['commandError']=_0x169130['error'];throw _0x4a614c;}return _0x169130;},async 'restartServer'(){const _0x439e6d=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2a0587=await _0x439e6d['json']()['catch'](()=>({}));if(!_0x439e6d['ok'])throw new Error(_0x2a0587['message']||_0x2a0587['error']||'Failed\x20to\x20restart\x20server');return _0x2a0587;},async 'createPasswordToken'(_0x2ab5f6,_0x4f986e='setup',_0x5cfe11=![]){const _0x1823f4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab5f6,'type':_0x4f986e,'sendEmail':_0x5cfe11})});if(!_0x1823f4['ok']){const _0x2311d9=await _0x1823f4['json']();throw new Error(_0x2311d9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1823f4['json']();},async 'getEmailConfig'(){const _0x4030e5=await fetch(API_BASE+'/password/email-config');if(!_0x4030e5['ok']){const _0x402f96=await _0x4030e5['json']();throw new Error(_0x402f96['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x4030e5['json']();},async 'updateTaskName'(_0x136cf9,_0x395772){const _0x4ed0c9=await fetch(API_BASE+'/tasks/'+_0x136cf9,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x395772})});if(!_0x4ed0c9['ok']){const _0x3a7bda=await _0x4ed0c9['json']();throw new Error(_0x3a7bda['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4ed0c9['json']();},async 'pinTask'(_0x1097a6,_0x3b5bc6,_0x2c4c19=null){if(!_0x1097a6)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7b98={'pinned':_0x3b5bc6};_0x2c4c19&&_0x2c4c19['length']>0x0&&(_0x3f7b98['additionalTaskIds']=_0x2c4c19);const _0x7768b4=await fetch(API_BASE+'/tasks/'+_0x1097a6+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f7b98)});if(!_0x7768b4['ok']){const _0x3988e5=await _0x7768b4['json']();throw new Error(_0x3988e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x7768b4['json']();},async 'setTaskWinner'(_0x311f7b,_0x964870,_0x340cc6=[]){if(!_0x311f7b)throw new Error('Task\x20ID\x20is\x20required');const _0x2f7bde=await fetch(API_BASE+'/tasks/'+_0x311f7b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x964870,'siblings':_0x340cc6})});if(!_0x2f7bde['ok']){const _0x5344d2=await _0x2f7bde['json']();throw new Error(_0x5344d2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2f7bde['json']();},async 'setTaskLoser'(_0x30aaac,_0xfc3182){if(!_0x30aaac)throw new Error('Task\x20ID\x20is\x20required');const _0x268b8d=await fetch(API_BASE+'/tasks/'+_0x30aaac+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xfc3182})});if(!_0x268b8d['ok']){const _0x3af909=await _0x268b8d['json']();throw new Error(_0x3af909['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x268b8d['json']();},async 'createTaskGroup'(_0x36234b){const _0x200909=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36234b)});if(!_0x200909['ok']){const _0x56caa3=await _0x200909['json']();throw new Error(_0x56caa3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x200909['json']();},async 'getTaskGroups'(_0x1f20fb={}){const _0x5aa66e=new URLSearchParams();if(_0x1f20fb['userId'])_0x5aa66e['set']('userId',String(_0x1f20fb['userId']));if(_0x1f20fb['status'])_0x5aa66e['set']('status',String(_0x1f20fb['status']));if(_0x1f20fb['limit'])_0x5aa66e['set']('limit',String(_0x1f20fb['limit']));const _0x1acfb7=API_BASE+'/tasks/groups'+(_0x5aa66e['toString']()?'?'+_0x5aa66e['toString']():''),_0x3bdb2e=await fetch(_0x1acfb7);if(!_0x3bdb2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3bdb2e['json']();},async 'getTaskGroup'(_0x351831){const _0x231d38=await fetch(API_BASE+'/tasks/groups/'+_0x351831);if(!_0x231d38['ok']){const _0x2a0efe=await _0x231d38['json']();throw new Error(_0x2a0efe['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x231d38['json']();},async 'updateTaskGroup'(_0x1c689d,_0x4c7fb2,_0xec00){const _0x29850d=await fetch(API_BASE+'/tasks/'+_0x1c689d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4c7fb2,'groupIndex':_0xec00})});if(!_0x29850d['ok']){const _0xa5c500=await _0x29850d['json']();throw new Error(_0xa5c500['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x29850d['json']();},async 'removeTaskFromGroup'(_0x3f8d18){return this['updateTaskGroup'](_0x3f8d18,null,null);},async 'deleteTaskGroup'(_0x8bc16f,_0x12c72d=![]){const _0x47329f=_0x12c72d?'?deleteTasks=true':'',_0x249f7d=await fetch(API_BASE+'/tasks/groups/'+_0x8bc16f+_0x47329f,{'method':'DELETE'});if(!_0x249f7d['ok']){const _0x4471f8=await _0x249f7d['json']();throw new Error(_0x4471f8['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xdfa827,_0x4de897){const _0x51f2b1=await fetch(API_BASE+'/tasks/groups/'+_0xdfa827+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4de897})});if(!_0x51f2b1['ok']){const _0x359156=await _0x51f2b1['json']();throw new Error(_0x359156['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x51f2b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4c0b3c){if(!_0x4c0b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x3a8287=await fetch(API_BASE+'/tasks/'+_0x4c0b3c+'/comments');if(!_0x3a8287['ok']){const _0x1c26d5=await _0x3a8287['json']()['catch'](()=>({}));throw new Error(_0x1c26d5['error']||'Failed\x20to\x20get\x20comments');}return await _0x3a8287['json']();},async 'addComment'(_0x445f18,_0x477e8a){if(!_0x445f18)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477e8a)throw new Error('Comment\x20content\x20is\x20required');const _0x1c7da1=await fetch(API_BASE+'/tasks/'+_0x445f18+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477e8a})});if(!_0x1c7da1['ok']){const _0x52a895=await _0x1c7da1['json']()['catch'](()=>({}));throw new Error(_0x52a895['error']||'Failed\x20to\x20add\x20comment');}return await _0x1c7da1['json']();},async 'updateComment'(_0x45161c,_0x42c89d,_0x1d7b23){if(!_0x45161c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x42c89d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d7b23)throw new Error('Comment\x20content\x20is\x20required');const _0x627f43=await fetch(API_BASE+'/tasks/'+_0x45161c+'/comments/'+_0x42c89d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d7b23})});if(!_0x627f43['ok']){const _0x3485f8=await _0x627f43['json']()['catch'](()=>({}));throw new Error(_0x3485f8['error']||'Failed\x20to\x20update\x20comment');}return await _0x627f43['json']();},async 'deleteComment'(_0x21e767,_0x1e821b){if(!_0x21e767)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e821b)throw new Error('Comment\x20ID\x20is\x20required');const _0x5c42a7=await fetch(API_BASE+'/tasks/'+_0x21e767+'/comments/'+_0x1e821b,{'method':'DELETE'});if(!_0x5c42a7['ok']){const _0x416663=await _0x5c42a7['json']()['catch'](()=>({}));throw new Error(_0x416663['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5c42a7['json']();},async 'createObjective'(_0x48ab24){const _0x39196d={'objective':!![],'name':_0x48ab24['name']||'','environment':_0x48ab24['environment']||null,'agents':_0x48ab24['agents']||[],'branches':_0x48ab24['branches']||{},'isPinned':_0x48ab24['isPinned']||![],'parentObjectiveId':_0x48ab24['parentObjectiveId']||null,'env_vars':_0x48ab24['envVars']||{},'parameters':{'instructions':_0x48ab24['instructions']||''},'files':_0x48ab24['files']||[],'jira':_0x48ab24['jira']||null};return this['createTask'](_0x39196d);},async 'updateObjective'(_0xf19063,_0x1a5ae8,_0x1d4b24=[],_0x29342e=[]){let _0x24e186,_0x454555={};const _0x432e8b={..._0x1a5ae8};_0x29342e&&_0x29342e['length']>0x0&&(_0x432e8b['removeAttachments']=_0x29342e);if(_0x1d4b24&&_0x1d4b24['length']>0x0){const _0x3ceae8=new FormData();for(const [_0x4fe500,_0x3b5c3c]of Object['entries'](_0x432e8b)){if(_0x3b5c3c==null)continue;typeof _0x3b5c3c==='object'?_0x3ceae8['append'](_0x4fe500,JSON['stringify'](_0x3b5c3c)):_0x3ceae8['append'](_0x4fe500,String(_0x3b5c3c));}for(const _0x3da565 of _0x1d4b24){_0x3ceae8['append']('attachments',_0x3da565);}_0x24e186=_0x3ceae8;}else _0x454555['Content-Type']='application/json',_0x24e186=JSON['stringify'](_0x432e8b);const _0x50ca71=await fetch(API_BASE+'/tasks/'+_0xf19063,{'method':'PATCH','headers':_0x454555,'body':_0x24e186});if(!_0x50ca71['ok']){const _0x3a7292=await _0x50ca71['json']();throw new Error(_0x3a7292['error']||'Failed\x20to\x20update\x20objective');}return await _0x50ca71['json']();},async 'deleteObjective'(_0x4cc428){return this['deleteTask'](_0x4cc428);},async 'launchObjective'(_0x58bd96,_0x25a5d7={}){const _0x65db77=await fetch(API_BASE+'/tasks/'+_0x58bd96+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a5d7)});if(!_0x65db77['ok']){const _0x4578e7=await _0x65db77['json']();throw new Error(_0x4578e7['error']||'Failed\x20to\x20launch\x20objective');}return await _0x65db77['json']();},async 'getObjectiveAttachments'(_0x1600a1){return this['getTaskAttachments'](_0x1600a1);},async 'createJudgeTask'({environment:_0x236238,judgeAgent:_0x58395c,groupId:_0x56f280,taskIds:_0x1537e3,judgeCustomInstructions:_0x53991c,isPinned:_0x1f7b8c}){const _0x592753=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x236238,'judgeAgent':_0x58395c,'groupId':_0x56f280,'taskIds':_0x1537e3,'judgeCustomInstructions':_0x53991c,'isPinned':_0x1f7b8c})});if(!_0x592753['ok']){const _0x5ab901=await _0x592753['json']();throw new Error(_0x5ab901['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x592753['json']();},async 'getJudgeTasks'(_0x29fa06){const _0x359bbf=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x29fa06));if(!_0x359bbf['ok']){const _0x2a8f9d=await _0x359bbf['json']();throw new Error(_0x2a8f9d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x359bbf['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ae539,_0x4e53e4,_0x74e5f=''){const _0x1924ae=await fetch(API_BASE+'/tasks/'+_0x4ae539+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4e53e4,'customPreamble':_0x74e5f})});if(!_0x1924ae['ok']){const _0x49f9c7=await _0x1924ae['json']();throw new Error(_0x49f9c7['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1924ae['json']();},async 'getJiraConfig'(){const _0x5f4794=await fetch(API_BASE+'/jira/config');if(!_0x5f4794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5f4794['json']();},async 'getJiraIssue'(_0x3e0a74){const _0x222b6b=await fetch(API_BASE+'/jira/issues/'+_0x3e0a74);if(!_0x222b6b['ok']){const _0x4499ac=await _0x222b6b['json']()['catch'](()=>({}));throw new Error(_0x4499ac['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x222b6b['statusText']);}return await _0x222b6b['json']();},async 'searchJiraIssues'(_0x5738d9,_0x360243=0x14){const _0x7ed25d=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5738d9,'maxResults':_0x360243})});if(!_0x7ed25d['ok']){const _0x5d7b15=await _0x7ed25d['json']()['catch'](()=>({}));throw new Error(_0x5d7b15['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x7ed25d['statusText']);}return await _0x7ed25d['json']();},async 'postJiraComment'(_0x3d72ed,_0x3fb28a){const _0x1ced74=await fetch(API_BASE+'/jira/issues/'+_0x3d72ed+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fb28a})});if(!_0x1ced74['ok']){const _0x220e1e=await _0x1ced74['json']()['catch'](()=>({}));throw new Error(_0x220e1e['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1ced74['statusText']);}return await _0x1ced74['json']();},async 'getJiraComments'(_0x151940){const _0x44d6fc=await fetch(API_BASE+'/jira/issues/'+_0x151940+'/comments');if(!_0x44d6fc['ok']){const _0x1795a0=await _0x44d6fc['json']()['catch'](()=>({}));throw new Error(_0x1795a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x44d6fc['statusText']);}return await _0x44d6fc['json']();},async 'promptParameter'({environment:_0x8509c6,command:_0x17ea5c,parser:parser='json'}){const _0x475c28=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x8509c6,'command':_0x17ea5c,'parser':parser})});if(!_0x475c28['ok']){const _0x5e6826=await _0x475c28['json']()['catch'](()=>({}));throw new Error(_0x5e6826['message']||_0x5e6826['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x475c28['statusText']);}return await _0x475c28['json']();},async 'promptParameterStream'(_0x4228df,_0x5c9d04){const _0x31868b=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4228df)});if(!_0x31868b['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x31868b['statusText']);const _0x7d6fd5=_0x31868b['body']['getReader'](),_0x57a86a=new TextDecoder();let _0x3e72df='';return new Promise((_0x394a8e,_0x27032b)=>{const _0x17ffc3=async()=>{try{const {done:_0x392ab4,value:_0x592e02}=await _0x7d6fd5['read']();if(_0x392ab4)return;_0x3e72df+=_0x57a86a['decode'](_0x592e02,{'stream':!![]});const _0x13cea3=_0x3e72df['split']('\x0a\x0a');_0x3e72df=_0x13cea3['pop']()||'';for(const _0x4b5dde of _0x13cea3){if(!_0x4b5dde['trim']())continue;const _0x31e5d5=_0x4b5dde['split']('\x0a');let _0xa22f95='message',_0x478855='';for(const _0x3e90b5 of _0x31e5d5){if(_0x3e90b5['startsWith']('event:'))_0xa22f95=_0x3e90b5['substring'](0x6)['trim']();else _0x3e90b5['startsWith']('data:')&&(_0x478855=_0x3e90b5['substring'](0x5)['trim']());}if(!_0x478855)continue;try{const _0x3e6190=JSON['parse'](_0x478855);if(_0xa22f95==='progress'&&_0x5c9d04)_0x5c9d04(_0x3e6190['stage'],_0x3e6190['message']);else{if(_0xa22f95==='result'){_0x394a8e(_0x3e6190);return;}else{if(_0xa22f95==='error'){let _0x1ae605=_0x3e6190['message']||_0x3e6190['error']||'Prompt\x20command\x20failed';_0x3e6190['rawOutput']&&(_0x1ae605+='\x0a\x0aRaw\x20output:\x0a'+_0x3e6190['rawOutput']);_0x27032b(new Error(_0x1ae605));return;}}}}catch(_0x92375e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x92375e),console['error']('Event\x20type:',_0xa22f95),console['error']('Event\x20data:',_0x478855),console['error']('First\x20200\x20chars:',_0x478855['substring'](0x0,0xc8)),_0x27032b(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x92375e['message']+'\x0a\x0aData:\x20'+_0x478855['substring'](0x0,0x1f4)));return;}}_0x17ffc3();}catch(_0x4ffbc8){_0x27032b(_0x4ffbc8);}};_0x17ffc3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x44bfa7){const _0x3736d6=await fetch(''+API_BASE+_0x44bfa7);if(!_0x3736d6['ok']){const _0x47b177=await _0x3736d6['json']()['catch'](()=>({'error':_0x3736d6['statusText']})),_0x44756e=new Error(_0x47b177['error']||_0x47b177['message']||_0x3736d6['statusText']);if(_0x47b177['detail']!==undefined)_0x44756e['detail']=_0x47b177['detail'];throw _0x44756e;}return await _0x3736d6['json']();},async 'post'(_0x1b01cd,_0x54543c){const _0xae01f2=await fetch(''+API_BASE+_0x1b01cd,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54543c)});if(!_0xae01f2['ok']){const _0x2df876=await _0xae01f2['json']()['catch'](()=>({'error':_0xae01f2['statusText']})),_0x8fae97=new Error(_0x2df876['error']||_0x2df876['message']||_0xae01f2['statusText']);if(_0x2df876['detail']!==undefined)_0x8fae97['detail']=_0x2df876['detail'];throw _0x8fae97;}return await _0xae01f2['json']();},async 'put'(_0xcb210a,_0x444029){const _0x552765=await fetch(''+API_BASE+_0xcb210a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x444029)});if(!_0x552765['ok']){const _0x39e666=await _0x552765['json']()['catch'](()=>({'error':_0x552765['statusText']})),_0x251fdc=new Error(_0x39e666['error']||_0x39e666['message']||_0x552765['statusText']);if(_0x39e666['detail']!==undefined)_0x251fdc['detail']=_0x39e666['detail'];throw _0x251fdc;}return await _0x552765['json']();},async 'delete'(_0x247240,_0x4842fe){const _0x39c273={'method':'DELETE'};_0x4842fe&&(_0x39c273['headers']={'Content-Type':'application/json'},_0x39c273['body']=JSON['stringify'](_0x4842fe));const _0x6a0543=await fetch(''+API_BASE+_0x247240,_0x39c273);if(!_0x6a0543['ok']){const _0x1b9951=await _0x6a0543['json']()['catch'](()=>({'error':_0x6a0543['statusText']})),_0x320aba=new Error(_0x1b9951['error']||_0x1b9951['message']||_0x6a0543['statusText']);if(_0x1b9951['detail']!==undefined)_0x320aba['detail']=_0x1b9951['detail'];throw _0x320aba;}return await _0x6a0543['json']();},async 'getSkills'(){const _0x40eaf4=await fetch(API_BASE+'/skills');if(!_0x40eaf4['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x40eaf4['statusText']);return await _0x40eaf4['json']();},async 'getSkill'(_0x478fb4){const _0x1c3f65=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x478fb4));if(!_0x1c3f65['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c3f65['statusText']);return await _0x1c3f65['json']();},async 'createSkill'(_0x17727f){const _0xf36826=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17727f)});if(!_0xf36826['ok']){const _0xeb44d1=await _0xf36826['json']()['catch'](()=>({'error':_0xf36826['statusText']})),_0x1f918b=new Error(_0xeb44d1['error']||_0xeb44d1['message']||_0xf36826['statusText']);if(_0xeb44d1['detail']!==undefined)_0x1f918b['detail']=_0xeb44d1['detail'];throw _0x1f918b;}return await _0xf36826['json']();},async 'updateSkill'(_0x17d44c,_0x13701d){const _0x37771c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17d44c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13701d)});if(!_0x37771c['ok']){const _0x2551ca=await _0x37771c['json']()['catch'](()=>({'error':_0x37771c['statusText']})),_0x23d3d=new Error(_0x2551ca['error']||_0x2551ca['message']||_0x37771c['statusText']);if(_0x2551ca['detail']!==undefined)_0x23d3d['detail']=_0x2551ca['detail'];throw _0x23d3d;}return await _0x37771c['json']();},async 'deleteSkill'(_0x5f20fb){const _0x49118b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f20fb),{'method':'DELETE'});if(!_0x49118b['ok']){const _0x1b2471=await _0x49118b['json']()['catch'](()=>({'error':_0x49118b['statusText']})),_0xa4aa33=new Error(_0x1b2471['error']||_0x1b2471['message']||_0x49118b['statusText']);if(_0x1b2471['detail']!==undefined)_0xa4aa33['detail']=_0x1b2471['detail'];throw _0xa4aa33;}return await _0x49118b['json']();},async 'getSkillFile'(_0x5b14c1,_0x57f767){const _0x2e81ac=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b14c1)+'/files/'+_0x57f767);if(!_0x2e81ac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2e81ac['statusText']);return await _0x2e81ac['json']();},async 'saveSkillFile'(_0x274bfd,_0x2d3b6a,_0x37372f){const _0x5edd5a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x274bfd)+'/files/'+_0x2d3b6a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37372f})});if(!_0x5edd5a['ok']){const _0x459e8b=await _0x5edd5a['json']()['catch'](()=>({'error':_0x5edd5a['statusText']})),_0x3a4547=new Error(_0x459e8b['error']||_0x459e8b['message']||_0x5edd5a['statusText']);if(_0x459e8b['detail']!==undefined)_0x3a4547['detail']=_0x459e8b['detail'];throw _0x3a4547;}return await _0x5edd5a['json']();},async 'deleteSkillFile'(_0x321a8d,_0x5df29d){const _0x6bb2ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x321a8d)+'/files/'+_0x5df29d,{'method':'DELETE'});if(!_0x6bb2ca['ok']){const _0x279ff0=await _0x6bb2ca['json']()['catch'](()=>({'error':_0x6bb2ca['statusText']})),_0x3d1705=new Error(_0x279ff0['error']||_0x279ff0['message']||_0x6bb2ca['statusText']);if(_0x279ff0['detail']!==undefined)_0x3d1705['detail']=_0x279ff0['detail'];throw _0x3d1705;}return await _0x6bb2ca['json']();},async 'pullSkills'(){const _0x5cd26a=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5cd26a['ok']){const _0x32c52a=await _0x5cd26a['json']()['catch'](()=>({'error':_0x5cd26a['statusText']})),_0x1a8e49=new Error(_0x32c52a['error']||_0x32c52a['message']||_0x5cd26a['statusText']);if(_0x32c52a['detail']!==undefined)_0x1a8e49['detail']=_0x32c52a['detail'];throw _0x1a8e49;}return await _0x5cd26a['json']();},async 'commitSkills'(_0x39b8d6,_0xd87e21={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xd87e21,_0x3ed0d7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39b8d6,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ed0d7['ok']){const _0x2c67c1=await _0x3ed0d7['json']()['catch'](()=>({'error':_0x3ed0d7['statusText']})),_0x28db48=new Error(_0x2c67c1['error']||_0x2c67c1['message']||_0x3ed0d7['statusText']);if(_0x2c67c1['detail']!==undefined)_0x28db48['detail']=_0x2c67c1['detail'];throw _0x28db48;}return await _0x3ed0d7['json']();},async 'discardSkillsChanges'(){const _0x573ca3=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x573ca3['ok']){const _0x5cc126=await _0x573ca3['json']()['catch'](()=>({'error':_0x573ca3['statusText']})),_0xabe7e9=new Error(_0x5cc126['error']||_0x5cc126['message']||_0x573ca3['statusText']);if(_0x5cc126['detail']!==undefined)_0xabe7e9['detail']=_0x5cc126['detail'];throw _0xabe7e9;}return await _0x573ca3['json']();},async 'getSkillCatalog'(){const _0x5c35f6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5c35f6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5c35f6['statusText']);return await _0x5c35f6['json']();},async 'getImportedSkillsRegistry'(){const _0x4a58c0=await fetch(API_BASE+'/external-skills/registry');if(!_0x4a58c0['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4a58c0['statusText']);return await _0x4a58c0['json']();},async 'importCatalogSkill'(_0x5813cf){const _0x49fd66=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5813cf})});if(!_0x49fd66['ok']){const _0x4f89d2=await _0x49fd66['json']()['catch'](()=>({'error':_0x49fd66['statusText']})),_0x59f2ef=new Error(_0x4f89d2['error']||_0x4f89d2['message']||_0x49fd66['statusText']);if(_0x4f89d2['detail']!==undefined)_0x59f2ef['detail']=_0x4f89d2['detail'];throw _0x59f2ef;}return await _0x49fd66['json']();},async 'importSkillFromGit'(_0x562261,_0x21fc0d,_0x3b5ca8='main',_0x56577c=null){const _0x1c514f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x562261,'skillPath':_0x21fc0d,'branch':_0x3b5ca8,'skillId':_0x56577c})});if(!_0x1c514f['ok']){const _0x7e1f06=await _0x1c514f['json']()['catch'](()=>({'error':_0x1c514f['statusText']})),_0x4a1daa=new Error(_0x7e1f06['error']||_0x7e1f06['message']||_0x1c514f['statusText']);if(_0x7e1f06['detail']!==undefined)_0x4a1daa['detail']=_0x7e1f06['detail'];throw _0x4a1daa;}return await _0x1c514f['json']();},async 'probeMarketplace'(_0x3c477c,_0x5d3d14='main'){const _0x14a4b5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3c477c,'branch':_0x5d3d14})});if(!_0x14a4b5['ok']){const _0x39a0a2=await _0x14a4b5['json']()['catch'](()=>({'error':_0x14a4b5['statusText']})),_0x451e3a=new Error(_0x39a0a2['error']||_0x39a0a2['message']||_0x14a4b5['statusText']);if(_0x39a0a2['detail']!==undefined)_0x451e3a['detail']=_0x39a0a2['detail'];throw _0x451e3a;}return await _0x14a4b5['json']();},async 'importMarketplaceBundle'(_0x2b404c,_0x578b46,_0x3dd329,_0x173984=null){const _0x57f76d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2b404c,'branch':_0x578b46,'bundleId':_0x3dd329,'selectedSkills':_0x173984})});if(!_0x57f76d['ok']){const _0x276f33=await _0x57f76d['json']()['catch'](()=>({'error':_0x57f76d['statusText']})),_0x13da96=new Error(_0x276f33['error']||_0x276f33['message']||_0x57f76d['statusText']);if(_0x276f33['detail']!==undefined)_0x13da96['detail']=_0x276f33['detail'];throw _0x13da96;}return await _0x57f76d['json']();},async 'importSkillFromFolder'(_0x3644c1,_0x5a9c4d=null){const _0x3927bd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3644c1,'skillId':_0x5a9c4d})});if(!_0x3927bd['ok']){const _0x23691a=await _0x3927bd['json']()['catch'](()=>({'error':_0x3927bd['statusText']})),_0x2d491e=new Error(_0x23691a['error']||_0x23691a['message']||_0x3927bd['statusText']);if(_0x23691a['detail']!==undefined)_0x2d491e['detail']=_0x23691a['detail'];throw _0x2d491e;}return await _0x3927bd['json']();},async 'importSkillFromNpm'(_0x7adaf2,_0x2b3054='latest',_0x3d65d4=null,_0x5d3bad=null){const _0x2786fe=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x7adaf2,'version':_0x2b3054,'skillId':_0x3d65d4,'registry':_0x5d3bad})});if(!_0x2786fe['ok']){const _0x3ee74c=await _0x2786fe['json']()['catch'](()=>({'error':_0x2786fe['statusText']})),_0x3a0dc3=new Error(_0x3ee74c['error']||_0x3ee74c['message']||_0x2786fe['statusText']);if(_0x3ee74c['detail']!==undefined)_0x3a0dc3['detail']=_0x3ee74c['detail'];throw _0x3a0dc3;}return await _0x2786fe['json']();},async 'checkSkillUpdates'(_0x260ab4){const _0x1e169e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x260ab4)+'/check-updates',{'method':'POST'});if(!_0x1e169e['ok']){const _0x30adfd=await _0x1e169e['json']()['catch'](()=>({'error':_0x1e169e['statusText']})),_0x158c51=new Error(_0x30adfd['error']||_0x30adfd['message']||_0x1e169e['statusText']);if(_0x30adfd['detail']!==undefined)_0x158c51['detail']=_0x30adfd['detail'];throw _0x158c51;}return await _0x1e169e['json']();},async 'updateExternalSkill'(_0x290f12){const _0x15adde=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x290f12)+'/update',{'method':'POST'});if(!_0x15adde['ok']){const _0x3f0f96=await _0x15adde['json']()['catch'](()=>({'error':_0x15adde['statusText']})),_0x350d0=new Error(_0x3f0f96['error']||_0x3f0f96['message']||_0x15adde['statusText']);if(_0x3f0f96['detail']!==undefined)_0x350d0['detail']=_0x3f0f96['detail'];throw _0x350d0;}return await _0x15adde['json']();},async 'updateSkillFlags'(_0x196d7c,_0x3c741f){const _0x34f322=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x196d7c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x3c741f})});if(!_0x34f322['ok']){const _0x46accf=await _0x34f322['json']()['catch'](()=>({'error':_0x34f322['statusText']})),_0x3791ab=new Error(_0x46accf['error']||_0x46accf['message']||_0x34f322['statusText']);if(_0x46accf['detail']!==undefined)_0x3791ab['detail']=_0x46accf['detail'];throw _0x3791ab;}return await _0x34f322['json']();},async 'removeFromImportedRegistry'(_0x3cc825){const _0x5bd941=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cc825)+'/registry',{'method':'DELETE'});if(!_0x5bd941['ok']){const _0x57907a=await _0x5bd941['json']()['catch'](()=>({'error':_0x5bd941['statusText']})),_0x23edde=new Error(_0x57907a['error']||_0x57907a['message']||_0x5bd941['statusText']);if(_0x57907a['detail']!==undefined)_0x23edde['detail']=_0x57907a['detail'];throw _0x23edde;}return await _0x5bd941['json']();},async 'getTeams'(){const _0x23f724=await fetch(API_BASE+'/teams');if(!_0x23f724['ok']){const _0x4dc15e=await _0x23f724['json']()['catch'](()=>({'message':_0x23f724['statusText']}));throw new Error(_0x4dc15e['message']||'Failed\x20to\x20get\x20teams');}return await _0x23f724['json']();},async 'getTeam'(_0x9a67a6){const _0x19e22f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x9a67a6));if(!_0x19e22f['ok']){const _0x2cadfb=await _0x19e22f['json']()['catch'](()=>({'message':_0x19e22f['statusText']}));throw new Error(_0x2cadfb['message']||'Failed\x20to\x20get\x20team');}return await _0x19e22f['json']();},async 'createTeam'(_0xef7fe9){const _0x5c26d2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xef7fe9)});if(!_0x5c26d2['ok']){const _0x145628=await _0x5c26d2['json']()['catch'](()=>({'message':_0x5c26d2['statusText']}));throw new Error(_0x145628['message']||'Failed\x20to\x20create\x20team');}return await _0x5c26d2['json']();},async 'updateTeam'(_0x2a2beb,_0x190400){const _0x4db1a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2a2beb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x190400)});if(!_0x4db1a2['ok']){const _0x4c46c7=await _0x4db1a2['json']()['catch'](()=>({'message':_0x4db1a2['statusText']}));throw new Error(_0x4c46c7['message']||'Failed\x20to\x20update\x20team');}return await _0x4db1a2['json']();},async 'deleteTeam'(_0x31bd68){const _0x19da0f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31bd68),{'method':'DELETE'});if(!_0x19da0f['ok']){const _0x35db8e=await _0x19da0f['json']()['catch'](()=>({'message':_0x19da0f['statusText']}));throw new Error(_0x35db8e['message']||'Failed\x20to\x20delete\x20team');}return await _0x19da0f['json']();},async 'addTeamMember'(_0x68d7d9,_0x4ad51c){const _0x5936a4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x68d7d9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ad51c})});if(!_0x5936a4['ok']){const _0x124659=await _0x5936a4['json']()['catch'](()=>({'message':_0x5936a4['statusText']}));throw new Error(_0x124659['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5936a4['json']();},async 'removeTeamMember'(_0x4cc020,_0x50a989){const _0xcf6c25=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cc020)+'/members/'+encodeURIComponent(_0x50a989),{'method':'DELETE'});if(!_0xcf6c25['ok']){const _0x4d1966=await _0xcf6c25['json']()['catch'](()=>({'message':_0xcf6c25['statusText']}));throw new Error(_0x4d1966['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xcf6c25['json']();},async 'getBindings'(_0x814fde={}){const _0x51adff=new URLSearchParams();if(_0x814fde['resource_type'])_0x51adff['set']('resource_type',_0x814fde['resource_type']);if(_0x814fde['resource_id'])_0x51adff['set']('resource_id',_0x814fde['resource_id']);if(_0x814fde['subject_type'])_0x51adff['set']('subject_type',_0x814fde['subject_type']);if(_0x814fde['subject_id'])_0x51adff['set']('subject_id',_0x814fde['subject_id']);const _0x50af96=_0x51adff['toString'](),_0xb98aa1=await fetch(API_BASE+'/bindings'+(_0x50af96?'?'+_0x50af96:''));if(!_0xb98aa1['ok']){const _0x32b073=await _0xb98aa1['json']()['catch'](()=>({'message':_0xb98aa1['statusText']}));throw new Error(_0x32b073['message']||'Failed\x20to\x20get\x20bindings');}return await _0xb98aa1['json']();},async 'createBinding'(_0x2f833d){const _0x16c6b7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f833d)});if(!_0x16c6b7['ok']){const _0x3279c0=await _0x16c6b7['json']()['catch'](()=>({'message':_0x16c6b7['statusText']}));throw new Error(_0x3279c0['message']||'Failed\x20to\x20create\x20binding');}return await _0x16c6b7['json']();},async 'updateBinding'(_0x4f212d,_0x5ab9d5){const _0x42f537=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4f212d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ab9d5)});if(!_0x42f537['ok']){const _0x539b94=await _0x42f537['json']()['catch'](()=>({'message':_0x42f537['statusText']}));throw new Error(_0x539b94['message']||'Failed\x20to\x20update\x20binding');}return await _0x42f537['json']();},async 'deleteBinding'(_0x128ce6){const _0xf1be6e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x128ce6),{'method':'DELETE'});if(!_0xf1be6e['ok']){const _0x1630e1=await _0xf1be6e['json']()['catch'](()=>({'message':_0xf1be6e['statusText']}));throw new Error(_0x1630e1['message']||'Failed\x20to\x20delete\x20binding');}return await _0xf1be6e['json']();},async 'getRoleDefinitions'(){const _0x539b5f=await fetch(API_BASE+'/roles');if(!_0x539b5f['ok']){const _0x170bb5=await _0x539b5f['json']()['catch'](()=>({'message':_0x539b5f['statusText']}));throw new Error(_0x170bb5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x539b5f['json']();},async 'getRoleDefinition'(_0x165787){const _0x4b62ca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x165787));if(!_0x4b62ca['ok']){const _0x3ccee1=await _0x4b62ca['json']()['catch'](()=>({'message':_0x4b62ca['statusText']}));throw new Error(_0x3ccee1['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b62ca['json']();},async 'createRoleDefinition'(_0x367654){const _0x15f5cb=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x367654)});if(!_0x15f5cb['ok']){const _0x5018c1=await _0x15f5cb['json']()['catch'](()=>({'message':_0x15f5cb['statusText']}));throw new Error(_0x5018c1['message']||_0x5018c1['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x15f5cb['json']();},async 'updateRoleDefinition'(_0x3bc267,_0x44775a){const _0xca4965=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3bc267),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44775a)});if(!_0xca4965['ok']){const _0x9fe032=await _0xca4965['json']()['catch'](()=>({'message':_0xca4965['statusText']}));throw new Error(_0x9fe032['message']||_0x9fe032['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xca4965['json']();},async 'deleteRoleDefinition'(_0x542fb9){const _0x23d669=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x542fb9),{'method':'DELETE'});if(!_0x23d669['ok']){const _0x37153b=await _0x23d669['json']()['catch'](()=>({'message':_0x23d669['statusText']}));throw new Error(_0x37153b['message']||_0x37153b['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x23d669['json']();},async 'getAvailablePermissions'(){const _0x264288=await fetch(API_BASE+'/roles/available-permissions');if(!_0x264288['ok']){const _0x328547=await _0x264288['json']()['catch'](()=>({'message':_0x264288['statusText']}));throw new Error(_0x328547['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x264288['json']();},async 'getGitProviderAllowedTeams'(_0xd60c38){const _0x1f70b0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xd60c38)+'/allowed-teams');if(!_0x1f70b0['ok']){const _0x174298=await _0x1f70b0['json']()['catch'](()=>({'message':_0x1f70b0['statusText']}));throw new Error(_0x174298['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1f70b0['json']();},async 'setGitProviderAllowedTeams'(_0x57f2a7,_0x3b4055){const _0x3ee051=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x57f2a7)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3b4055})});if(!_0x3ee051['ok']){const _0x4f90e2=await _0x3ee051['json']()['catch'](()=>({'message':_0x3ee051['statusText']}));throw new Error(_0x4f90e2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3ee051['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x60455e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x24d9b0=>{_0x24d9b0['el']['style']['bottom']=_0x60455e+'px';const _0x4e734e=_0x24d9b0['el']['offsetHeight']||toastState['defaultHeight'];_0x60455e+=_0x4e734e+toastState['gap'];});});}function removeToastById(_0x3598b6){const _0x343079=toastState['toasts']['findIndex'](_0x43ef48=>_0x43ef48['id']===_0x3598b6);if(_0x343079===-0x1)return;const _0x1dd206=toastState['toasts'][_0x343079];if(_0x1dd206['timeoutId'])clearTimeout(_0x1dd206['timeoutId']);_0x1dd206['el']['classList']['remove']('show'),setTimeout(()=>_0x1dd206['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x343079,0x1),repositionAllToasts();}function registerToast(_0x23e3a2){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23e3a2),repositionAllToasts(),_0x23e3a2['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x5c7da1){if(_0x5c7da1===null||_0x5c7da1===undefined)return'';return String(_0x5c7da1)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x591b5f,_0x44f3b2){if(_0x591b5f&&typeof _0x591b5f==='object'&&!Array['isArray'](_0x591b5f))return{'code':typeof _0x591b5f['text']==='string'?_0x591b5f['text']:'','language':typeof _0x591b5f['lang']==='string'?_0x591b5f['lang']:''};return{'code':typeof _0x591b5f==='string'?_0x591b5f:'','language':typeof _0x44f3b2==='string'?_0x44f3b2:''};}function buildMermaidBlock(_0x249c92){const _0x369737=String(_0x249c92||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x369737))+'\x22>'+escapeHtmlValue(_0x369737)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x33488b=new marked['Renderer'](),_0x3dcb32=_0x33488b['code']['bind'](_0x33488b);return _0x33488b['code']=function(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d){const {code:_0x905ce4,language:_0x4095a8}=getMarkdownCodeBlockPayload(_0x1ad7fd,_0x5c3c8e),_0x21743c=String(_0x4095a8||'')['trim']()['toLowerCase']();if(_0x21743c==='mermaid')return buildMermaidBlock(_0x905ce4);const _0x5aa106=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5aa106&&_0x21743c)try{const _0xc9fddf=_0x5aa106['getLanguage'](_0x21743c)?_0x21743c:'plaintext',_0x37ecb1=_0x5aa106['highlight'](_0x905ce4,{'language':_0xc9fddf})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x21743c)+'\x22>'+_0x37ecb1+'</code></pre>';}catch(_0x306f98){console['error']('Syntax\x20highlighting\x20error:',_0x306f98);}return _0x3dcb32(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d);},sharedMarkedRenderer=_0x33488b,_0x33488b;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x3efc43=window['mermaid'];if(!_0x3efc43||typeof _0x3efc43['initialize']!=='function')return _0x3efc43||null;return _0x3efc43['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3efc43;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x19bb72,_0x2ed899)=>{const _0x267f54=()=>_0x19bb72(configureMermaidInstance()),_0x5df3c7=()=>{mermaidLoadPromise=null,_0x2ed899(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x118b3f=document['getElementById'](MERMAID_SCRIPT_ID);!_0x118b3f&&(_0x118b3f=document['createElement']('script'),_0x118b3f['id']=MERMAID_SCRIPT_ID,_0x118b3f['src']=MERMAID_SCRIPT_SRC,_0x118b3f['async']=!![],document['head']['appendChild'](_0x118b3f));if(window['mermaid']){_0x267f54();return;}_0x118b3f['addEventListener']('load',_0x267f54,{'once':!![]}),_0x118b3f['addEventListener']('error',_0x5df3c7,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x135afd){const _0x119632=_0x135afd['getAttribute']('data-mermaid-source');if(!_0x119632)return null;let _0x250c00=_0x119632;try{_0x250c00=decodeURIComponent(_0x119632);}catch{}return _0x135afd['textContent']=_0x250c00,_0x135afd['removeAttribute']('data-processed'),_0x135afd['removeAttribute']('aria-roledescription'),_0x135afd['removeAttribute']('role'),_0x135afd['removeAttribute']('aria-label'),_0x250c00;}function collectMermaidNodes(_0x15ede8,_0x60259c){if(!(_0x15ede8 instanceof Element))return;_0x15ede8['matches']('.mermaid[data-mermaid-source]')&&_0x60259c['add'](_0x15ede8),_0x15ede8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a6895=>{_0x60259c['add'](_0x5a6895);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x97a52f=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x131cd9=>setTimeout(_0x131cd9,0x0);_0x97a52f(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x96ec71=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x96ec71);});});}function queueMermaidRender(_0x529f6c){const _0x4e28b9=new Set();_0x529f6c instanceof Document||_0x529f6c instanceof DocumentFragment?_0x529f6c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x51d48b=>_0x4e28b9['add'](_0x51d48b)):collectMermaidNodes(_0x529f6c,_0x4e28b9);if(_0x4e28b9['size']===0x0)return;_0x4e28b9['forEach'](_0xdb9593=>pendingMermaidNodes['add'](_0xdb9593)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x42e500=Array['from'](pendingMermaidNodes)['filter'](_0x4e4b15=>_0x4e4b15['isConnected']);pendingMermaidNodes['clear']();if(_0x42e500['length']===0x0)return;const _0x11de54=await loadMermaid();if(!_0x11de54)return;configureMermaidInstance();const _0xa11c94=getMermaidTheme();for(const _0x4691fe of _0x42e500){const _0xd8bc1b=_0x4691fe['getAttribute']('data-mermaid-source');if(!_0xd8bc1b)continue;const _0x527f33=_0x4691fe['getAttribute']('data-processed')==='true';if(_0x527f33&&_0x4691fe['dataset']['mermaidTheme']===_0xa11c94)continue;restoreMermaidSource(_0x4691fe);try{if(typeof _0x11de54['run']==='function')await _0x11de54['run']({'nodes':[_0x4691fe]});else typeof _0x11de54['init']==='function'&&_0x11de54['init'](undefined,[_0x4691fe]);_0x4691fe['dataset']['mermaidTheme']=_0xa11c94,delete _0x4691fe['dataset']['mermaidError'];}catch(_0x20af6d){console['error']('Mermaid\x20render\x20failed:',_0x20af6d),restoreMermaidSource(_0x4691fe),_0x4691fe['dataset']['mermaidError']='true',delete _0x4691fe['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1dc16b=>{_0x1dc16b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1dc16b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b533f=>{_0x5b533f['forEach'](_0x3ca313=>{_0x3ca313['addedNodes']['forEach'](_0x14f6bd=>{_0x14f6bd['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x14f6bd);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x112985){const _0x466913=new Date(_0x112985),_0x485c16=new Date(),_0x206e75=_0x485c16-_0x466913,_0x3c0b8c=Math['floor'](_0x206e75/0x3e8),_0x12b79c=Math['floor'](_0x3c0b8c/0x3c),_0xf0a61d=Math['floor'](_0x12b79c/0x3c),_0x5d7dc5=Math['floor'](_0xf0a61d/0x18);if(_0x3c0b8c<0x3c)return'now';if(_0x12b79c<0x3c)return _0x12b79c+'m\x20ago';if(_0xf0a61d<0x18)return _0xf0a61d+'h\x20ago';return _0x5d7dc5+'d\x20ago';},'getStatusIcon'(_0x7dcdc){switch(_0x7dcdc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x5a7f29){switch(_0x5a7f29){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x2a625f,_0x554b24=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2a2336={};_0x2a2336['text/plain']=new Blob([_0x2a625f],{'type':'text/plain'});_0x554b24&&(_0x2a2336['text/html']=new Blob([_0x554b24],{'type':'text/html'}));const _0xa586e5=new ClipboardItem(_0x2a2336);return await navigator['clipboard']['write']([_0xa586e5]),!![];}catch(_0x2baa93){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2baa93);}try{const _0x3e8da9=_0x3177e4=>{_0x3177e4['preventDefault'](),_0x3177e4['clipboardData']['setData']('text/plain',_0x2a625f),_0x554b24&&_0x3177e4['clipboardData']['setData']('text/html',_0x554b24);};document['addEventListener']('copy',_0x3e8da9);const _0x3eada7=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e8da9);if(_0x3eada7)return!![];}catch(_0x398cec){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398cec);}try{const _0x1c18bf=document['createElement']('textarea');_0x1c18bf['value']=_0x2a625f,_0x1c18bf['style']['position']='fixed',_0x1c18bf['style']['opacity']='0',_0x1c18bf['style']['pointerEvents']='none',document['body']['appendChild'](_0x1c18bf),_0x1c18bf['select']();const _0x2c8650=document['execCommand']('copy');return document['body']['removeChild'](_0x1c18bf),_0x2c8650;}catch(_0x4c325b){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c325b),![];}},'showToast'(_0x37b8b0,_0x16f275='info'){const _0x437d97=getNextToastId(),_0x5d46f7=document['createElement']('div');_0x5d46f7['className']='toast\x20toast-'+_0x16f275,_0x5d46f7['textContent']=_0x37b8b0,_0x5d46f7['dataset']['toastId']=_0x437d97,document['body']['appendChild'](_0x5d46f7);const _0x19f059=_0x16f275==='error'?0x2710:0xbb8,_0x30a536=setTimeout(()=>{removeToastById(_0x437d97);},_0x19f059),_0x2d9fbc={'id':_0x437d97,'el':_0x5d46f7,'timeoutId':_0x30a536};return registerToast(_0x2d9fbc),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d46f7['classList']['add']('show');});}),_0x437d97;},'showError'(_0x1e44a5){console['error'](_0x1e44a5);const _0x571233=typeof _0x1e44a5==='string'?_0x1e44a5:_0x1e44a5['message']||'An\x20error\x20occurred';this['showToast'](_0x571233,'error');},'showSuccess'(_0x15007b){this['showToast'](_0x15007b,'success');},'capitalize'(_0xf131c1){if(!_0xf131c1)return'';return _0xf131c1['charAt'](0x0)['toUpperCase']()+_0xf131c1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x37d115){return escapeHtmlValue(_0x37d115);},'ansiToHtml'(_0x5afa20){if(_0x5afa20===null||_0x5afa20===undefined)return'';let _0x567e5b=this['escapeHtml'](_0x5afa20);const _0x34c157={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x3d60f4={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x277094=0x0;return _0x567e5b=_0x567e5b['replace'](/\x1b\[([0-9;]*)m/g,(_0x946b3b,_0x42578b)=>{if(!_0x42578b||_0x42578b==='0'){const _0x179bc6='</span>'['repeat'](_0x277094);return _0x277094=0x0,_0x179bc6;}const _0x4d08ee=_0x42578b['split'](';'),_0x43a9a0=[];for(const _0x30c912 of _0x4d08ee){if(_0x30c912==='1')_0x43a9a0['push']('font-weight:bold');else{if(_0x30c912==='2')_0x43a9a0['push']('opacity:0.7');else{if(_0x30c912==='3')_0x43a9a0['push']('font-style:italic');else{if(_0x30c912==='4')_0x43a9a0['push']('text-decoration:underline');else{if(_0x30c912==='9')_0x43a9a0['push']('text-decoration:line-through');else{if(_0x34c157[_0x30c912])_0x43a9a0['push']('color:'+_0x34c157[_0x30c912]);else{if(_0x3d60f4[_0x30c912])_0x43a9a0['push']('background-color:'+_0x3d60f4[_0x30c912]);}}}}}}}if(_0x43a9a0['length']>0x0)return _0x277094++,'<span\x20style=\x22'+_0x43a9a0['join'](';')+'\x22>';return'';}),_0x567e5b+='</span>'['repeat'](_0x277094),_0x567e5b=_0x567e5b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x345384,_0x3f6890)=>{if(!_0x3f6890||_0x3f6890==='0')return'';const _0x584ab3=_0x3f6890['split'](';'),_0x50b2b7=[];for(const _0x1dd7f4 of _0x584ab3){if(_0x1dd7f4==='1')_0x50b2b7['push']('font-weight:bold');else{if(_0x34c157[_0x1dd7f4])_0x50b2b7['push']('color:'+_0x34c157[_0x1dd7f4]);else{if(_0x3d60f4[_0x1dd7f4])_0x50b2b7['push']('background-color:'+_0x3d60f4[_0x1dd7f4]);}}}if(_0x50b2b7['length']>0x0)return'<span\x20style=\x22'+_0x50b2b7['join'](';')+'\x22>';return'';}),_0x567e5b;},'showModal'({title:_0x416e2f,content:_0x2f5ac5,buttons:buttons=[]}){const _0x8173ab='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x416e2f)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2f5ac5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x98896e,_0x52bfa0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x98896e['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x52bfa0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x98896e['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x3c1c05=document['createElement']('div');_0x3c1c05['id']='utils-modal',_0x3c1c05['className']='modal',_0x3c1c05['innerHTML']=_0x8173ab,document['body']['appendChild'](_0x3c1c05);const _0x73ad6c=document['getElementById']('utils-modal-close');_0x73ad6c&&_0x73ad6c['addEventListener']('click',()=>this['hideModal']());const _0x23182e=_0x3c1c05['querySelectorAll']('[data-btn-index]');_0x23182e['forEach'](_0x5ab40f=>{const _0x26bb2a=parseInt(_0x5ab40f['dataset']['btnIndex']);buttons[_0x26bb2a]?.['onClick']&&_0x5ab40f['addEventListener']('click',buttons[_0x26bb2a]['onClick']);});const _0x1d7568=document['getElementById']('utils-modal-overlay');_0x1d7568&&_0x1d7568['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x57bd6e=document['getElementById']('utils-modal');_0x57bd6e&&_0x57bd6e['remove']();},'parseKeyValuePairs'(_0x4269b5){const _0x2ed03e={};if(!_0x4269b5)return _0x2ed03e;return _0x4269b5['split'](/\r?\n/)['map'](_0x6e0d94=>_0x6e0d94['trim']())['filter'](Boolean)['forEach'](_0x1138ff=>{const _0x5108ea=_0x1138ff['indexOf']('=');if(_0x5108ea>0x0){const _0x1dc5a7=_0x1138ff['slice'](0x0,_0x5108ea)['trim'](),_0x299b52=_0x1138ff['slice'](_0x5108ea+0x1)['trim']();if(_0x1dc5a7)_0x2ed03e[_0x1dc5a7]=_0x299b52;}}),_0x2ed03e;},'debounce'(_0x45e559,_0x99e7db=0xfa){let _0x4b21bb=null;return(..._0xa865fe)=>{clearTimeout(_0x4b21bb),_0x4b21bb=setTimeout(()=>_0x45e559['apply'](this,_0xa865fe),_0x99e7db);};},'formatTimestamp'(_0x16da4e){if(!_0x16da4e)return'N/A';const _0x4a8415=new Date(_0x16da4e);return _0x4a8415['toLocaleDateString']()+'\x20'+_0x4a8415['toLocaleTimeString']();},'getQueryParams'(){const _0x259eb2=new URLSearchParams(window['location']['search']),_0x2b8dcf={};for(const [_0x862d5e,_0xe84f81]of _0x259eb2){_0x2b8dcf[_0x862d5e]=_0xe84f81;}return _0x2b8dcf;},'formatDuration'(_0x401564,_0x483e29){if(!_0x401564)return'N/A';const _0x3443e0=new Date(_0x401564),_0x4aad0e=_0x483e29?new Date(_0x483e29):new Date(),_0x5b5d29=_0x4aad0e-_0x3443e0;if(_0x5b5d29<0x0)return'0s';const _0x41fa56=Math['floor'](_0x5b5d29/0x3e8),_0x42da4f=Math['floor'](_0x41fa56/0x3c),_0x57fe1d=Math['floor'](_0x42da4f/0x3c),_0x113490=Math['floor'](_0x57fe1d/0x18);if(_0x41fa56<0x3c)return _0x41fa56+'s';if(_0x42da4f<0x3c)return _0x42da4f+'m\x20'+_0x41fa56%0x3c+'s';if(_0x57fe1d<0x18)return _0x57fe1d+'h\x20'+_0x42da4f%0x3c+'m\x20'+_0x41fa56%0x3c+'s';return _0x113490+'d\x20'+_0x57fe1d%0x18+'h\x20'+_0x42da4f%0x3c+'m';},'renderMarkdown'(_0x45622a,_0x2c60ae={}){if(!_0x45622a)return'';_0x45622a=this['rewriteAttachmentLinks'](_0x45622a,_0x2c60ae),_0x45622a=this['rewriteColorSyntax'](_0x45622a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x45622a);}catch(_0x1224b9){return console['error']('Markdown\x20parsing\x20error:',_0x1224b9),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);}},'rewriteAttachmentLinks'(_0x1b3386,_0x332c17={}){const _0x3aaeba=typeof _0x332c17['resolveAttachmentUrl']==='function'?_0x332c17['resolveAttachmentUrl']:_0x332c17['taskId']?_0x244e2e=>API_BASE+'/tasks/'+_0x332c17['taskId']+'/attachments/'+encodeURIComponent(_0x244e2e):null;if(!_0x3aaeba)return _0x1b3386;return String(_0x1b3386)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x309920,_0x1387f9)=>{const _0x256617=String(_0x1387f9||'')['trim']();if(!_0x256617)return _0x309920;let _0x264df0=_0x256617;try{_0x264df0=decodeURIComponent(_0x256617);}catch{}const _0x4f528e=_0x3aaeba(_0x264df0);if(!_0x4f528e)return _0x309920;return']('+_0x4f528e+')';});},'rewriteColorSyntax'(_0x5c7cdb){if(!_0x5c7cdb)return _0x5c7cdb;return String(_0x5c7cdb)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e7fcf,_0x563dc0,_0x2b0d69)=>{const _0x8655c8=this['rewriteColorSyntax'](_0x2b0d69);return'<span\x20style=\x22color:\x20'+_0x563dc0+'\x22>'+_0x8655c8+'</span>';});},'renderMarkdownFallback'(_0x41246d,_0x24a360={}){if(!_0x41246d)return'';_0x41246d=_0x41246d['replace'](/\r\n/g,'\x0a'),_0x41246d=_0x41246d['replace'](/\r/g,'\x0a'),_0x41246d=this['rewriteAttachmentLinks'](_0x41246d,_0x24a360);let _0x44af68=this['escapeHtml'](_0x41246d);return _0x44af68=_0x44af68['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x44af68=_0x44af68['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x44af68=_0x44af68['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x44af68=_0x44af68['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x44af68=_0x44af68['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x44af68=_0x44af68['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x44af68=_0x44af68['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x44af68=_0x44af68['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x44af68=_0x44af68['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x44af68=_0x44af68['replace'](/\n\n/g,'</p><p>'),_0x44af68=_0x44af68['replace'](/\n/g,'<br>'),'<p>'+_0x44af68+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3284f6=new Uint8Array(0x10);crypto['getRandomValues'](_0x3284f6),_0x3284f6[0x6]=_0x3284f6[0x6]&0xf|0x40,_0x3284f6[0x8]=_0x3284f6[0x8]&0x3f|0x80;const _0x41fbe5=Array['from'](_0x3284f6,_0x187002=>_0x187002['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x41fbe5['slice'](0x0,0x8)+'-'+_0x41fbe5['slice'](0x8,0xc)+'-'+_0x41fbe5['slice'](0xc,0x10)+'-'+_0x41fbe5['slice'](0x10,0x14)+'-'+_0x41fbe5['slice'](0x14);}};export class CustomSelect{constructor(_0x30b5e2,_0x59e62b={}){this['nativeSelect']=_0x30b5e2,this['options']=_0x59e62b,this['isOpen']=![],this['selectedValue']=_0x30b5e2['value']||'',this['searchable']=_0x59e62b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1de5a2=document['createElement']('div');_0x1de5a2['className']='custom-select';const _0x5d5768=document['createElement']('div');_0x5d5768['className']='custom-select-trigger',_0x5d5768['setAttribute']('tabindex','0'),_0x5d5768['setAttribute']('role','button'),_0x5d5768['setAttribute']('aria-haspopup','listbox');const _0x51c77f=document['createElement']('span');_0x51c77f['className']='custom-select-trigger-text';const _0x13b50e=document['createElement']('span');_0x13b50e['className']='custom-select-arrow',_0x13b50e['textContent']='▼',_0x5d5768['appendChild'](_0x51c77f),_0x5d5768['appendChild'](_0x13b50e);const _0x24edea=document['createElement']('div');_0x24edea['className']='custom-select-dropdown',_0x24edea['setAttribute']('role','listbox');if(this['searchable']){const _0x520941=document['createElement']('div');_0x520941['className']='custom-select-search';const _0x45a016=document['createElement']('input');_0x45a016['type']='text',_0x45a016['className']='custom-select-search-input',_0x45a016['placeholder']='Type\x20to\x20search...',_0x45a016['setAttribute']('aria-label','Search\x20options'),_0x45a016['addEventListener']('input',_0x1594b5=>{this['searchQuery']=_0x1594b5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x45a016['addEventListener']('keydown',_0xd82833=>{if(_0xd82833['key']==='Escape')_0xd82833['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xd82833['key']==='Enter'){_0xd82833['preventDefault'](),_0xd82833['stopPropagation']();const _0x1355ba=_0x24edea['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1355ba){const _0x5d0875=_0x1355ba['getAttribute']('data-value');this['select'](_0x5d0875);}}}}),_0x520941['appendChild'](_0x45a016),_0x24edea['appendChild'](_0x520941),this['searchInput']=_0x45a016;}const _0x567f85=document['createElement']('div');_0x567f85['className']='custom-select-options',_0x24edea['appendChild'](_0x567f85),_0x1de5a2['appendChild'](_0x5d5768),_0x1de5a2['appendChild'](_0x24edea),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1de5a2,this['nativeSelect']),this['wrapper']=_0x1de5a2,this['trigger']=_0x5d5768,this['triggerText']=_0x51c77f,this['dropdown']=_0x24edea,this['optionsContainer']=_0x567f85,_0x5d5768['addEventListener']('click',()=>this['toggle']()),_0x5d5768['addEventListener']('keydown',_0x3f31eb=>this['handleKeydown'](_0x3f31eb)),document['addEventListener']('click',_0x38cd60=>{!_0x1de5a2['contains'](_0x38cd60['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5223fc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5223fc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x5c71b4=new MutationObserver(()=>{this['updateDisabledState']();});_0x5c71b4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x19ded8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x19ded8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x55205f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x55205f),this['trigger']['setAttribute']('aria-disabled',_0x55205f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x55205f?'-1':'0'),_0x55205f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2942ff=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1dd185=_0x2942ff['filter'](_0x5a37ca=>!_0x5a37ca['disabled']&&!_0x5a37ca['hidden']);_0x2942ff['forEach']((_0x2f020e,_0x1c839b)=>{const _0x18c7da=document['createElement']('div');_0x18c7da['className']='custom-select-option',_0x18c7da['textContent']=_0x2f020e['textContent'],_0x18c7da['setAttribute']('data-value',_0x2f020e['value']),_0x18c7da['setAttribute']('data-index',_0x1c839b),_0x18c7da['setAttribute']('role','option'),_0x2f020e['disabled']?_0x18c7da['classList']['add']('disabled'):_0x18c7da['addEventListener']('click',()=>this['select'](_0x2f020e['value'])),_0x2f020e['value']===this['selectedValue']&&_0x18c7da['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x18c7da),this['allOptions']['push']({'element':_0x18c7da,'text':_0x2f020e['textContent']['toLowerCase'](),'value':_0x2f020e['value'],'disabled':_0x2f020e['disabled']});});if(this['searchable']&&this['searchInput']){const _0x30dcd4=this['searchInput']['parentElement'];_0x1dd185['length']>0x3?_0x30dcd4['style']['display']='':_0x30dcd4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2cb20f=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x24922b=>{if(!_0x2cb20f||_0x24922b['disabled'])_0x24922b['element']['style']['display']='';else{const _0x467345=_0x24922b['text']['includes'](_0x2cb20f);_0x24922b['element']['style']['display']=_0x467345?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x55ac77){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x55ac77,this['nativeSelect']['value']=_0x55ac77;const _0x124fcd=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x124fcd),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3217e2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3217e2&&(this['triggerText']['textContent']=_0x3217e2['textContent'],_0x3217e2['disabled']||_0x3217e2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3956a6=>{_0x3956a6['getAttribute']('data-value')===this['selectedValue']?_0x3956a6['classList']['add']('selected'):_0x3956a6['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x238f99=window['getComputedStyle'](this['dropdown']);if(_0x238f99['position']==='fixed'){const _0x2cd673=this['trigger']['getBoundingClientRect'](),_0x444062=parseInt(_0x238f99['maxHeight'])||0xc8,_0x2ee5e4=window['innerHeight'],_0x19a90c=_0x2ee5e4-_0x2cd673['bottom'],_0x1f08f9=_0x2cd673['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1e7f82;_0x19a90c<_0x444062&&_0x1f08f9>_0x19a90c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2ee5e4-_0x2cd673['top']+'px',_0x1e7f82=Math['min'](_0x444062,_0x1f08f9-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2cd673['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1e7f82=Math['min'](_0x444062,_0x19a90c-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px');if(this['optionsContainer']){let _0x392df3=_0x1e7f82;if(this['searchInput']){const _0x551d4f=this['searchInput']['parentElement'];_0x551d4f&&(_0x392df3-=_0x551d4f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x392df3)+'px';}this['dropdown']['style']['left']=_0x2cd673['left']+'px',this['dropdown']['style']['width']=_0x2cd673['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc89154=this['searchInput']['parentElement'];_0xc89154&&_0xc89154['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x198b26){if(this['nativeSelect']['disabled'])return;if(_0x198b26['key']==='Enter'||_0x198b26['key']==='\x20')_0x198b26['preventDefault'](),this['toggle']();else _0x198b26['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1d6183='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x1d6183),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4d30aa=document['getElementById']('confirm-dialog-close'),_0x363e66=document['getElementById']('confirm-dialog-cancel'),_0x10b668=document['getElementById']('confirm-dialog-confirm'),_0x16c3bb=this['_modal']['querySelector']('.modal-overlay');_0x4d30aa['addEventListener']('click',()=>this['_resolve'](![])),_0x363e66['addEventListener']('click',()=>this['_resolve'](![])),_0x10b668['addEventListener']('click',()=>this['_resolve'](!![])),_0x16c3bb['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4065b1=>{if(_0x4065b1['key']==='Escape')_0x4065b1['preventDefault'](),this['_resolve'](![]);else _0x4065b1['key']==='Enter'&&(_0x4065b1['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x538117,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2704be=>{this['_resolvePromise']=_0x2704be,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x538117;const _0x4b82c5=document['getElementById']('confirm-dialog-cancel'),_0x1460c2=document['getElementById']('confirm-dialog-confirm');_0x4b82c5['textContent']=cancelText,_0x1460c2['textContent']=confirmText,_0x1460c2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1460c2['focus']();});},'_resolve'(_0x151f7f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x151f7f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d777a,_0x484a09={}){this['container']=_0x3d777a,this['options']={'placeholder':_0x484a09['placeholder']||'Type\x20to\x20search...','maxItems':_0x484a09['maxItems']||0x64,'loadItems':_0x484a09['loadItems']||(async()=>[]),'renderItem':_0x484a09['renderItem']||(_0x239bca=>({'primary':String(_0x239bca),'secondary':''})),'onSelect':_0x484a09['onSelect']||(()=>{}),'filterItems':_0x484a09['filterItems']||null,'getItemValue':_0x484a09['getItemValue']||(_0x41f9a1=>_0x41f9a1),'sortItems':_0x484a09['sortItems']||null,'debounceMs':_0x484a09['debounceMs']||0xc8,'minCharsForSearch':_0x484a09['minCharsForSearch']||0x0,'emptyMessage':_0x484a09['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x484a09['loadingMessage']||'Loading...','preload':_0x484a09['preload']!==![],'searchMode':_0x484a09['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x58e735=>this['onBlur'](_0x58e735)),this['input']['addEventListener']('input',_0x2d7826=>this['onInput'](_0x2d7826)),this['input']['addEventListener']('keydown',_0x484370=>this['onKeydown'](_0x484370)),this['clearBtn']['addEventListener']('mousedown',_0x298f51=>{_0x298f51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5a6c59=>{_0x5a6c59['preventDefault']();}),document['addEventListener']('click',_0x45960a=>{!this['wrapper']['contains'](_0x45960a['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x26c9af){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x26c9af);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x215ff3){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x22843e){const _0x573a10=_0x22843e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x573a10);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x573a10):this['loadAndShow'](_0x573a10);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2139e2){switch(_0x2139e2['key']){case'ArrowDown':_0x2139e2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2139e2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2139e2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2139e2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x16836c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2dcd99=this['selectedIndex']+_0x16836c;if(_0x2dcd99>=0x0&&_0x2dcd99<this['filteredItems']['length']){this['selectedIndex']=_0x2dcd99,this['updateSelectionHighlight']();const _0x59f91b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x59f91b[this['selectedIndex']]&&_0x59f91b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5306a4=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5306a4['forEach']((_0x155c2f,_0x413f20)=>{_0x155c2f['classList']['toggle']('keyboard-selected',_0x413f20===this['selectedIndex']);});}async['loadAndShow'](_0x409a2e){this['showLoading']();try{const _0x13f5f3=await this['options']['loadItems'](_0x409a2e);if(this['options']['searchMode']==='server'){let _0x24d045=_0x13f5f3;this['options']['sortItems']&&(_0x24d045=this['options']['sortItems']([..._0x13f5f3]));this['filteredItems']=_0x24d045;const _0x4603e9=this['filteredItems']['length']>=this['options']['maxItems'];_0x4603e9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4603e9),this['open']();}else this['allItems']=_0x13f5f3,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x409a2e);}catch(_0x543fb1){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x543fb1),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x303485){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x303485):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x351ed3=this['filteredItems']['length']>=this['options']['maxItems'];_0x351ed3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x351ed3),this['open']();}['renderItems'](_0x2e7924){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x7ceb21,_0x52c720)=>{const _0x174a1b=document['createElement']('div');_0x174a1b['className']='autocomplete-select-item',_0x174a1b['setAttribute']('role','option'),_0x174a1b['setAttribute']('data-index',_0x52c720);const _0xe6f12=this['options']['renderItem'](_0x7ceb21);let _0x49c079='';_0xe6f12['icon']&&(_0x49c079='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0xe6f12['iconClass']||'')+'\x22>'+_0xe6f12['icon']+'</span>'),_0x174a1b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x49c079+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0xe6f12['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xe6f12['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0xe6f12['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x174a1b['addEventListener']('click',()=>{this['selectItem'](_0x7ceb21);}),_0x174a1b['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x52c720,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x174a1b);}),_0x2e7924?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x205f31){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x205f31)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x37979f){this['selectedItem']=_0x37979f;const _0x1395ac=this['options']['renderItem'](_0x37979f);this['input']['value']=_0x1395ac['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x37979f);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x1ec4d8){if(_0x1ec4d8){this['selectedItem']=_0x1ec4d8;const _0x3d0bfd=this['options']['renderItem'](_0x1ec4d8);this['input']['value']=_0x3d0bfd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x9fb1c){this['allItems']=_0x9fb1c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x498c2d){this['input']['placeholder']=_0x498c2d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x518054=null){const _0x3a813b=document['getElementById']('admin-menu-container'),_0x52af0c=document['getElementById']('admin-menu-btn'),_0xbfa5ca=document['getElementById']('admin-menu');if(!_0x3a813b||!_0x52af0c||!_0xbfa5ca)return;try{!_0x518054&&(_0x518054=await API['getCurrentUser']());if(_0x518054){const _0x35aa42=window['Permissions'],_0x3cf8b1=_0x35aa42['hasServerPermission'](_0x518054,'*')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:manage')||_0x35aa42['hasServerPermission'](_0x518054,'users:create')||_0x35aa42['hasTeamPermission'](_0x518054,'teams:manage')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:view_details');if(!_0x3cf8b1)return;_0x3a813b['hidden']=![];if(!_0x35aa42['hasServerPermission'](_0x518054,'*')){const _0x537a7a=_0xbfa5ca['querySelectorAll']('.admin-menu-item');_0x537a7a['forEach'](_0x48479e=>{const _0x3dce0e=_0x48479e['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3dce0e==='Users'&&!_0x35aa42['hasServerPermission'](_0x518054,'users:create')&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Skills'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Settings'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Administration'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Git\x20History'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Roles'&&(_0x48479e['hidden']=!![]);});}_0x52af0c['addEventListener']('click',_0x4a8cde=>{_0x4a8cde['stopPropagation']();const _0x47ab42=document['getElementById']('actions-menu');if(_0x47ab42)_0x47ab42['hidden']=!![];_0xbfa5ca['hidden']=!_0xbfa5ca['hidden'];}),document['addEventListener']('click',_0x366609=>{!_0xbfa5ca['hidden']&&!_0x52af0c['contains'](_0x366609['target'])&&!_0xbfa5ca['contains'](_0x366609['target'])&&(_0xbfa5ca['hidden']=!![]);}),document['addEventListener']('keydown',_0x274f19=>{_0x274f19['key']==='Escape'&&!_0xbfa5ca['hidden']&&(_0xbfa5ca['hidden']=!![]);});}}catch(_0x1aa6bc){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1aa6bc['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|
|
1
|
+
function detectApiBase(){const _0x59b457=window['location']['pathname'],_0x1d57df=_0x59b457['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1d57df)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1d57df[0x1]),_0x1d57df[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x257203={}){const _0xa2dbb4=new URLSearchParams();_0x257203['userId']&&_0xa2dbb4['set']('userId',String(_0x257203['userId']));_0x257203['automation']&&_0xa2dbb4['set']('automation',String(_0x257203['automation']));const _0x4dfc63=API_BASE+'/tasks/stats'+(_0xa2dbb4['toString']()?'?'+_0xa2dbb4['toString']():''),_0x3b3837=await fetch(_0x4dfc63);if(!_0x3b3837['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3b3837['statusText']);return await _0x3b3837['json']();},async 'getTasks'(_0x3fde61={}){const _0x2bf758=new URLSearchParams();_0x3fde61['status']&&_0x2bf758['set']('status',String(_0x3fde61['status']));_0x3fde61['environment']&&_0x2bf758['set']('environment',String(_0x3fde61['environment']));_0x3fde61['automation']&&_0x2bf758['set']('automation',String(_0x3fde61['automation']));if(_0x3fde61['include']){const _0x474a5e=Array['isArray'](_0x3fde61['include'])?_0x3fde61['include']['join'](','):String(_0x3fde61['include']);_0x474a5e&&_0x2bf758['set']('include',_0x474a5e);}_0x3fde61['filter']&&_0x2bf758['set']('filter',String(_0x3fde61['filter']));_0x3fde61['page']&&_0x2bf758['set']('page',String(_0x3fde61['page']));_0x3fde61['limit']&&_0x2bf758['set']('limit',String(_0x3fde61['limit']));_0x3fde61['userId']&&_0x2bf758['set']('userId',String(_0x3fde61['userId']));_0x3fde61['search']&&_0x2bf758['set']('search',String(_0x3fde61['search']));_0x3fde61['includeChildTasks']&&_0x2bf758['set']('includeChildTasks','true');const _0xbd1ecd=API_BASE+'/tasks'+(_0x2bf758['toString']()?'?'+_0x2bf758['toString']():''),_0x463c4a=await fetch(_0xbd1ecd);if(!_0x463c4a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x463c4a['statusText']);return await _0x463c4a['json']();},async 'getAutomations'(_0x4b14fc={}){const _0x5a706a=new URLSearchParams();_0x4b14fc['environment']&&_0x5a706a['set']('environment',String(_0x4b14fc['environment']));const _0x42be1f=await fetch(API_BASE+'/api/automations'+(_0x5a706a['toString']()?'?'+_0x5a706a['toString']():''));if(!_0x42be1f['ok']){const _0x5e849d=await _0x42be1f['json']()['catch'](()=>({}));throw new Error(_0x5e849d['message']||_0x5e849d['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x42be1f['statusText']);}return await _0x42be1f['json']();},async 'getAutomation'(_0xc1cafa){const _0x47b579=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xc1cafa));if(!_0x47b579['ok']){const _0x2a3746=await _0x47b579['json']()['catch'](()=>({}));throw new Error(_0x2a3746['message']||_0x2a3746['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x47b579['statusText']);}return await _0x47b579['json']();},async 'createAutomation'(_0x33f98b){const _0x3b702e=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33f98b||{})});if(!_0x3b702e['ok']){const _0x324c04=await _0x3b702e['json']()['catch'](()=>({}));throw new Error(_0x324c04['message']||_0x324c04['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3b702e['statusText']);}return await _0x3b702e['json']();},async 'updateAutomation'(_0x4473a6,_0x2ea605){const _0x40143e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4473a6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ea605||{})});if(!_0x40143e['ok']){const _0x1e6613=await _0x40143e['json']()['catch'](()=>({}));throw new Error(_0x1e6613['message']||_0x1e6613['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x40143e['statusText']);}return await _0x40143e['json']();},async 'deleteAutomation'(_0x91337e){const _0x26d151=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x91337e),{'method':'DELETE'});if(!_0x26d151['ok']){const _0x4c89cd=await _0x26d151['json']()['catch'](()=>({}));throw new Error(_0x4c89cd['message']||_0x4c89cd['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x26d151['statusText']);}return await _0x26d151['json']();},async 'triggerAutomation'(_0x3a3891){const _0x105386=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3a3891)+'/trigger',{'method':'POST'});if(!_0x105386['ok']){const _0x2b1b0f=await _0x105386['json']()['catch'](()=>({}));throw new Error(_0x2b1b0f['message']||_0x2b1b0f['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x105386['statusText']);}return await _0x105386['json']();},async 'setAutomationEnabled'(_0x54f78c,_0x1f154c){const _0x424ffe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x54f78c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x1f154c})});if(!_0x424ffe['ok']){const _0x5c302b=await _0x424ffe['json']()['catch'](()=>({}));throw new Error(_0x5c302b['message']||_0x5c302b['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x424ffe['statusText']);}return await _0x424ffe['json']();},async 'getAutomationHistory'(_0x2a5c8f,_0x5dcfac=0x32){const _0x1a6374=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2a5c8f)+'/history?limit='+encodeURIComponent(String(_0x5dcfac)));if(!_0x1a6374['ok']){const _0x354d21=await _0x1a6374['json']()['catch'](()=>({}));throw new Error(_0x354d21['message']||_0x354d21['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1a6374['statusText']);}return await _0x1a6374['json']();},async 'getTask'(_0x309e63,_0x1bf91c={}){const _0x426838=new URLSearchParams();if(_0x1bf91c['include']){const _0x54bc2d=Array['isArray'](_0x1bf91c['include'])?_0x1bf91c['include']['join'](','):String(_0x1bf91c['include']);if(_0x54bc2d)_0x426838['set']('include',_0x54bc2d);}const _0x45ee09=await fetch(API_BASE+'/tasks/'+_0x309e63+(_0x426838['toString']()?'?'+_0x426838['toString']():''));if(!_0x45ee09['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x45ee09['statusText']);return await _0x45ee09['json']();},async 'getTaskResults'(_0x227ff9){const _0x57985c=await fetch(API_BASE+'/tasks/'+_0x227ff9+'/results');if(!_0x57985c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57985c['statusText']);return await _0x57985c['json']();},async 'getTaskPatches'(_0x599807){const _0x274421=await fetch(API_BASE+'/tasks/'+_0x599807+'/patches');if(!_0x274421['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x274421['statusText']);return await _0x274421['json']();},async 'getTaskAttachments'(_0x261cbe){const _0x39fbc8=await fetch(API_BASE+'/tasks/'+_0x261cbe+'/attachments');if(!_0x39fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x39fbc8['statusText']);return await _0x39fbc8['json']();},async 'uploadAttachments'(_0x1b7474,_0x5073eb){const _0x8416ec=new FormData();for(const _0xbdd8ab of _0x5073eb){_0x8416ec['append']('attachments',_0xbdd8ab);}const _0x4d0a83=await fetch(API_BASE+'/tasks/'+_0x1b7474+'/attachments',{'method':'POST','body':_0x8416ec});if(!_0x4d0a83['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4d0a83['statusText']);return await _0x4d0a83['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44453c=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44453c['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44453c['json']();}catch(_0x326241){return{'available':![],'reason':_0x326241['message']};}},async 'generateTaskName'(_0x2d4d0d){try{const _0x3ae026=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d4d0d})});return await _0x3ae026['json']();}catch(_0x2bea8b){return{'success':![],'error':_0x2bea8b['message']};}},async 'createTask'(_0x12e9a6){let _0x5035a4,_0x3ecc0d={};if(_0x12e9a6['files']&&_0x12e9a6['files']['length']>0x0){const _0x2089c8=new FormData();for(const [_0x47e853,_0x3faf55]of Object['entries'](_0x12e9a6)){if(_0x47e853!=='files'){if(_0x3faf55==null)continue;typeof _0x3faf55==='object'?_0x2089c8['append'](_0x47e853,JSON['stringify'](_0x3faf55)):_0x2089c8['append'](_0x47e853,String(_0x3faf55));}}for(const _0x59d4ff of _0x12e9a6['files']){_0x2089c8['append']('attachments',_0x59d4ff);}_0x5035a4=_0x2089c8;}else _0x3ecc0d['Content-Type']='application/json',_0x5035a4=JSON['stringify'](_0x12e9a6);const _0x32423d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ecc0d,'body':_0x5035a4});if(!_0x32423d['ok']){const _0x351d19=await _0x32423d['json'](),_0x22f155=new Error(_0x351d19['error']||'Failed\x20to\x20create\x20task:\x20'+_0x32423d['statusText']),{message:_0x102744,..._0x49a6f2}=_0x351d19;Object['assign'](_0x22f155,_0x49a6f2);throw _0x22f155;}return await _0x32423d['json']();},async 'createTestTask'(_0x5d81a8){const _0x191492=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d81a8)});if(!_0x191492['ok']){const _0x404cfa=await _0x191492['json']();throw new Error(_0x404cfa['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x191492['statusText']);}return await _0x191492['json']();},async 'createEphemeralTest'(_0x5f5877){const _0x356d54=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f5877)});if(!_0x356d54['ok']){const _0x38ed83=await _0x356d54['json']();throw new Error(_0x38ed83['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x356d54['statusText']);}return await _0x356d54['json']();},async 'createDeployTask'(_0x4fd364){const _0x4d7f9b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd364)});if(!_0x4d7f9b['ok']){const _0x2e18cc=await _0x4d7f9b['json']();throw new Error(_0x2e18cc['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4d7f9b['statusText']);}return await _0x4d7f9b['json']();},async 'getEnvironments'(){const _0x2ee95a=await fetch(API_BASE+'/environments');if(!_0x2ee95a['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ee95a['statusText']);return await _0x2ee95a['json']();},async 'getEnvironment'(_0xc5f43c){const _0x4822a9=await fetch(API_BASE+'/environments/'+_0xc5f43c);if(!_0x4822a9['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4822a9['statusText']);return await _0x4822a9['json']();},async 'getEnvironmentRepoHistory'(_0x5a2871,_0x396e68,_0x57958d={}){if(!_0x5a2871||!_0x396e68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a72d8=new URLSearchParams();if(_0x57958d['limit'])_0x3a72d8['set']('limit',String(_0x57958d['limit']));if(_0x57958d['offset'])_0x3a72d8['set']('offset',String(_0x57958d['offset']));if(_0x57958d['search'])_0x3a72d8['set']('search',String(_0x57958d['search']));if(_0x57958d['branch'])_0x3a72d8['set']('branch',String(_0x57958d['branch']));const _0x2d099a=API_BASE+'/environments/'+encodeURIComponent(_0x5a2871)+'/repos/'+encodeURIComponent(_0x396e68)+'/git/history',_0x3e1236=await fetch(''+_0x2d099a+(_0x3a72d8['toString']()?'?'+_0x3a72d8['toString']():''));if(!_0x3e1236['ok']){const _0x19e976=await _0x3e1236['json']()['catch'](()=>({}));throw new Error(_0x19e976['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e1236['statusText']);}return await _0x3e1236['json']();},async 'getEnvironmentRepoCommit'(_0x35b37e,_0x7f4b6,_0x19e405){if(!_0x35b37e||!_0x7f4b6||!_0x19e405)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x16ea90=API_BASE+'/environments/'+encodeURIComponent(_0x35b37e)+'/repos/'+encodeURIComponent(_0x7f4b6)+'/git/commits/'+encodeURIComponent(_0x19e405),_0x3b5c5a=await fetch(_0x16ea90);if(!_0x3b5c5a['ok']){const _0x47501e=await _0x3b5c5a['json']()['catch'](()=>({}));throw new Error(_0x47501e['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3b5c5a['statusText']);}return await _0x3b5c5a['json']();},async 'getEnvironmentRepoBranches'(_0x1ec212,_0x312fe1){if(!_0x1ec212||!_0x312fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1acf05=API_BASE+'/environments/'+encodeURIComponent(_0x1ec212)+'/repos/'+encodeURIComponent(_0x312fe1)+'/git/branches',_0x33384a=await fetch(_0x1acf05);if(!_0x33384a['ok']){const _0x51d942=await _0x33384a['json']()['catch'](()=>({}));throw new Error(_0x51d942['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x33384a['statusText']);}return await _0x33384a['json']();},async 'revertEnvironmentRepoCommit'(_0x2ec410,_0x5ad7cf,_0xf620cf,_0x31eab1={}){if(!_0x2ec410||!_0x5ad7cf||!_0xf620cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x416604=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2ec410)+'/repos/'+encodeURIComponent(_0x5ad7cf)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xf620cf,..._0x31eab1})});if(!_0x416604['ok']){const _0x49bcb3=await _0x416604['json']()['catch'](()=>({}));throw new Error(_0x49bcb3['message']||_0x49bcb3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x416604['statusText']);}return await _0x416604['json']();},async 'getTemplates'(_0x4cf444={}){const _0x521da9=new URLSearchParams();if(_0x4cf444['include']){const _0x27d7bd=Array['isArray'](_0x4cf444['include'])?_0x4cf444['include']['join'](','):String(_0x4cf444['include']);if(_0x27d7bd)_0x521da9['set']('include',_0x27d7bd);}const _0x59542a=await fetch(API_BASE+'/templates'+(_0x521da9['toString']()?'?'+_0x521da9['toString']():''));if(!_0x59542a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x59542a['statusText']);return await _0x59542a['json']();},async 'getTemplatesForEnvironment'(_0x28d007,_0x12f399={}){if(!_0x28d007)throw new Error('Environment\x20name\x20is\x20required');const _0x196a0d=new URLSearchParams();if(_0x12f399['include']){const _0x52ea19=Array['isArray'](_0x12f399['include'])?_0x12f399['include']['join'](','):String(_0x12f399['include']);if(_0x52ea19)_0x196a0d['set']('include',_0x52ea19);}const _0x5a032a=await fetch(API_BASE+'/templates/'+_0x28d007+(_0x196a0d['toString']()?'?'+_0x196a0d['toString']():''));if(!_0x5a032a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x28d007+':\x20'+_0x5a032a['statusText']);return await _0x5a032a['json']();},async 'getTemplate'(_0x38bdc7,_0x426fd6,_0x3c6b09={}){if(!_0x38bdc7||!_0x426fd6)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xcd0a2e=new URLSearchParams();if(_0x3c6b09['include']){const _0x2a0d9a=Array['isArray'](_0x3c6b09['include'])?_0x3c6b09['include']['join'](','):String(_0x3c6b09['include']);if(_0x2a0d9a)_0xcd0a2e['set']('include',_0x2a0d9a);}const _0x366b0f=await fetch(API_BASE+'/templates/'+_0x38bdc7+'/'+_0x426fd6+(_0xcd0a2e['toString']()?'?'+_0xcd0a2e['toString']():''));if(!_0x366b0f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x366b0f['statusText']);return await _0x366b0f['json']();},async 'getTaskLogs'(_0x3b5b4f,_0x5488df={}){if(!_0x3b5b4f)throw new Error('Task\x20ID\x20is\x20required');const _0x1dcfca=new URLSearchParams();_0x5488df['tail']&&_0x1dcfca['set']('tail',String(_0x5488df['tail']));const _0x3f3fdb=await fetch(API_BASE+'/tasks/'+_0x3b5b4f+'/logs'+(_0x1dcfca['toString']()?'?'+_0x1dcfca['toString']():''));if(!_0x3f3fdb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3f3fdb['statusText']);return await _0x3f3fdb['text']();},async 'getContainers'(){const _0x99649e=await fetch(API_BASE+'/containers');if(!_0x99649e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x99649e['statusText']);return await _0x99649e['json']();},async 'getContainer'(_0x3aa52b){const _0x15f556=await fetch(API_BASE+'/containers/'+_0x3aa52b);if(!_0x15f556['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x15f556['statusText']);return await _0x15f556['json']();},async 'startInteractiveContainer'(_0x5df843){const _0x345e73=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5df843)});if(!_0x345e73['ok']){const _0x2d6c2a=await _0x345e73['json']()['catch'](()=>({}));throw new Error(_0x2d6c2a['message']||'Failed\x20to\x20start\x20container:\x20'+_0x345e73['statusText']);}return await _0x345e73['json']();},async 'startContainerCodeServer'(_0x26c6ca,_0x309dec={}){if(!_0x26c6ca)throw new Error('Container\x20ID\x20is\x20required');const _0x36f5c0=new URLSearchParams();_0x309dec['theme']&&_0x36f5c0['set']('theme',_0x309dec['theme']);const _0x1e4607=await fetch(API_BASE+'/containers/'+_0x26c6ca+'/code-server'+(_0x36f5c0['toString']()?'?'+_0x36f5c0['toString']():'')),_0x13a2be=await _0x1e4607['json']()['catch'](()=>({}));if(!_0x1e4607['ok'])throw new Error(_0x13a2be['message']||_0x13a2be['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x1e4607['statusText']);return _0x13a2be;},async 'stopContainer'(_0x266520){const _0x3265ab=await fetch(API_BASE+'/containers/'+_0x266520,{'method':'DELETE'});if(!_0x3265ab['ok']){const _0xc56c76=await _0x3265ab['json']()['catch'](()=>({}));throw new Error(_0xc56c76['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3265ab['statusText']);}return await _0x3265ab['json']();},async 'stopTask'(_0xba540e){if(!_0xba540e)throw new Error('Task\x20ID\x20is\x20required');const _0x40c748=await fetch(API_BASE+'/tasks/'+_0xba540e+'/stop',{'method':'POST'});if(!_0x40c748['ok']){const _0x5db904=await _0x40c748['json']()['catch'](()=>({}));throw new Error(_0x5db904['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x40c748['statusText']);}return await _0x40c748['json']();},async 'interruptTask'(_0x4f387c){if(!_0x4f387c)throw new Error('Task\x20ID\x20is\x20required');const _0x596e4c=await fetch(API_BASE+'/tasks/'+_0x4f387c+'/interrupt',{'method':'POST'});if(!_0x596e4c['ok']){const _0xa154c5=await _0x596e4c['json']()['catch'](()=>({}));throw new Error(_0xa154c5['error']||_0xa154c5['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x596e4c['statusText']);}return await _0x596e4c['json']();},async 'startTask'(_0xa539a0){if(!_0xa539a0)throw new Error('Task\x20ID\x20is\x20required');const _0xf34e98=await fetch(API_BASE+'/tasks/'+_0xa539a0+'/start',{'method':'POST'});if(!_0xf34e98['ok']){const _0x1a9527=await _0xf34e98['json']()['catch'](()=>({}));throw new Error(_0x1a9527['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf34e98['statusText']);}return await _0xf34e98['json']();},async 'deleteTask'(_0x32adfd){if(!_0x32adfd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d19c7=await fetch(API_BASE+'/tasks/'+_0x32adfd,{'method':'DELETE'});if(!_0x4d19c7['ok']){const _0x2581d9=await _0x4d19c7['json']()['catch'](()=>({}));throw new Error(_0x2581d9['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4d19c7['statusText']);}return await _0x4d19c7['json']();},async 'refreshTasksFromDisk'(){const _0x514e3c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x514e3c['ok']){const _0x58d5e2=await _0x514e3c['json']()['catch'](()=>({}));throw new Error(_0x58d5e2['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x514e3c['statusText']);}return await _0x514e3c['json']();},async 'approveTask'(_0x2fc8fc,_0x432d02={}){if(!_0x2fc8fc)throw new Error('Task\x20ID\x20is\x20required');const _0x31334d={'commit_message':_0x432d02['commit_message']||'','pull':_0x432d02['pull']??![],'push':_0x432d02['push']??![]};_0x432d02['new_branch']&&(_0x31334d['new_branch']=_0x432d02['new_branch']);const _0x13c1b8=await fetch(API_BASE+'/tasks/'+_0x2fc8fc+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31334d)});if(!_0x13c1b8['ok']){const _0x25ab56=await _0x13c1b8['json']()['catch'](()=>({}));let _0x367a18=_0x25ab56['error']||_0x25ab56['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x13c1b8['statusText'];if(_0x25ab56['results']&&Array['isArray'](_0x25ab56['results'])){const _0x1037b8=_0x25ab56['results']['filter'](_0x38963f=>!_0x38963f['success']&&_0x38963f['error']);_0x1037b8['length']>0x0&&(_0x367a18=_0x1037b8[0x0]['error']);}throw new Error(_0x367a18);}return await _0x13c1b8['json']();},async 'getPullRequestInfo'(_0x585b15){if(!_0x585b15)throw new Error('Task\x20ID\x20is\x20required');const _0x1223a3=await fetch(API_BASE+'/tasks/'+_0x585b15+'/pull-request-info');if(!_0x1223a3['ok']){const _0x4adcb6=await _0x1223a3['json']()['catch'](()=>({}));throw new Error(_0x4adcb6['error']||_0x4adcb6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1223a3['statusText']);}return await _0x1223a3['json']();},async 'createPullRequests'(_0x3691b4,_0x5b8fd8){if(!_0x3691b4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b8fd8||!Array['isArray'](_0x5b8fd8))throw new Error('repos\x20array\x20is\x20required');const _0x449c80=await fetch(API_BASE+'/tasks/'+_0x3691b4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x5b8fd8})});if(!_0x449c80['ok']){const _0x286acf=await _0x449c80['json']()['catch'](()=>({}));let _0x2fc2b7=_0x286acf['error']||_0x286acf['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x449c80['statusText'];if(_0x286acf['results']&&Array['isArray'](_0x286acf['results'])){const _0x179a8c=_0x286acf['results']['filter'](_0x5b8369=>!_0x5b8369['success']&&_0x5b8369['error']);_0x179a8c['length']>0x0&&(_0x2fc2b7=_0x179a8c[0x0]['error']);}throw new Error(_0x2fc2b7);}return await _0x449c80['json']();},async 'syncRepos'(_0xb700e6){if(!_0xb700e6)throw new Error('Task\x20ID\x20is\x20required');const _0x54f935=await fetch(API_BASE+'/tasks/'+_0xb700e6+'/sync-repos',{'method':'POST'});if(!_0x54f935['ok']){const _0x3a4f8c=await _0x54f935['json']()['catch'](()=>({}));throw new Error(_0x3a4f8c['error']||_0x3a4f8c['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x54f935['statusText']);}return await _0x54f935['json']();},async 'getIbmiSyncInfo'(_0x1494c6){if(!_0x1494c6)throw new Error('Task\x20ID\x20is\x20required');const _0x1d3fd6=await fetch(API_BASE+'/tasks/'+_0x1494c6+'/ibmi-sync-info');if(!_0x1d3fd6['ok']){const _0x223e65=await _0x1d3fd6['json']()['catch'](()=>({}));throw new Error(_0x223e65['error']||_0x223e65['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1d3fd6['json']();},async 'getSyncFiles'(_0x2c464a){if(!_0x2c464a)throw new Error('Task\x20ID\x20is\x20required');const _0x47fe8f=await fetch(API_BASE+'/tasks/'+_0x2c464a+'/sync-to-ibmi/files');if(!_0x47fe8f['ok']){const _0x61114b=await _0x47fe8f['json']()['catch'](()=>({}));throw new Error(_0x61114b['error']||_0x61114b['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x47fe8f['json']();},async 'syncToIbmi'(_0xc135db,_0x5beee3,_0xa075dd=null,_0x309931=null,_0x70e23d=null){if(!_0xc135db)throw new Error('Task\x20ID\x20is\x20required');const _0x36ee86={'library':_0x5beee3};if(_0xa075dd)_0x36ee86['user']=_0xa075dd;if(_0x309931)_0x36ee86['password']=_0x309931;if(_0x70e23d)_0x36ee86['files']=_0x70e23d;const _0xa2759d=await fetch(API_BASE+'/tasks/'+_0xc135db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36ee86)});if(!_0xa2759d['ok']){const _0x1c210b=await _0xa2759d['json']()['catch'](()=>({}));throw new Error(_0x1c210b['error']||_0x1c210b['message']||'Sync\x20failed');}return await _0xa2759d['json']();},async 'getIbmiSyncLog'(_0x57ef16){if(!_0x57ef16)throw new Error('Task\x20ID\x20is\x20required');const _0x4fde32=await fetch(API_BASE+'/tasks/'+_0x57ef16+'/ibmi-sync-log');if(!_0x4fde32['ok']){const _0x25b6b2=await _0x4fde32['json']()['catch'](()=>({}));throw new Error(_0x25b6b2['error']||_0x25b6b2['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4fde32['json']();},async 'pullChanges'(_0x71dec7){if(!_0x71dec7)throw new Error('Task\x20ID\x20is\x20required');const _0x128be7=await fetch(API_BASE+'/tasks/'+_0x71dec7+'/pull-changes',{'method':'POST'});if(!_0x128be7['ok']){const _0x27db39=await _0x128be7['json']()['catch'](()=>({}));throw new Error(_0x27db39['error']||_0x27db39['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x128be7['statusText']);}return await _0x128be7['json']();},async 'readFile'(_0x5a0a3e,_0x4519d5){if(!_0x5a0a3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4519d5)throw new Error('File\x20path\x20is\x20required');const _0x47ccba=await fetch(API_BASE+'/tasks/'+_0x5a0a3e+'/files?path='+encodeURIComponent(_0x4519d5));if(!_0x47ccba['ok']){const _0x33a6b0=await _0x47ccba['json']()['catch'](()=>({}));throw new Error(_0x33a6b0['error']||_0x33a6b0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x47ccba['statusText']);}return await _0x47ccba['json']();},'getTaskFileDownloadUrl'(_0x2b8fb2,_0x104018){if(!_0x2b8fb2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x104018)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2b8fb2+'/files/download?path='+encodeURIComponent(_0x104018);},async 'writeFile'(_0x374231,_0x41fc0a,_0x4ff265){if(!_0x374231)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41fc0a)throw new Error('File\x20path\x20is\x20required');if(_0x4ff265===undefined)throw new Error('Content\x20is\x20required');const _0x308355=await fetch(API_BASE+'/tasks/'+_0x374231+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x41fc0a,'content':_0x4ff265})});if(!_0x308355['ok']){const _0x488a75=await _0x308355['json']()['catch'](()=>({}));throw new Error(_0x488a75['error']||_0x488a75['message']||'Failed\x20to\x20write\x20file:\x20'+_0x308355['statusText']);}return await _0x308355['json']();},async 'uploadTaskFiles'(_0x58d2f5,_0x5a079e,_0x2274ef){if(!_0x58d2f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a079e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2274ef||_0x2274ef['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x410970=new FormData();_0x410970['append']('targetDir',_0x5a079e);for(const _0x22b1ed of _0x2274ef){_0x410970['append']('files',_0x22b1ed,_0x22b1ed['name']);}const _0x6493a1=await fetch(API_BASE+'/tasks/'+_0x58d2f5+'/files/upload',{'method':'POST','body':_0x410970});if(!_0x6493a1['ok']){const _0x4ad73e=await _0x6493a1['json']()['catch'](()=>({}));throw new Error(_0x4ad73e['error']||_0x4ad73e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x6493a1['statusText']);}return await _0x6493a1['json']();},async 'createDirectory'(_0x191659,_0x19bd4a){if(!_0x191659)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19bd4a)throw new Error('Directory\x20path\x20is\x20required');const _0x3edda2=await fetch(API_BASE+'/tasks/'+_0x191659+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x19bd4a})});if(!_0x3edda2['ok']){const _0x2726d7=await _0x3edda2['json']()['catch'](()=>({}));throw new Error(_0x2726d7['error']||_0x2726d7['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3edda2['statusText']);}return await _0x3edda2['json']();},async 'renamePath'(_0x3131ef,_0x22097e,_0x282a83){if(!_0x3131ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22097e)throw new Error('Source\x20path\x20is\x20required');if(!_0x282a83)throw new Error('Destination\x20path\x20is\x20required');const _0x8b7a5b=await fetch(API_BASE+'/tasks/'+_0x3131ef+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22097e,'newPath':_0x282a83})});if(!_0x8b7a5b['ok']){const _0x349b9b=await _0x8b7a5b['json']()['catch'](()=>({}));throw new Error(_0x349b9b['error']||_0x349b9b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x8b7a5b['statusText']);}return await _0x8b7a5b['json']();},async 'deleteFile'(_0x5786a0,_0x292ac6){if(!_0x5786a0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x292ac6)throw new Error('File\x20path\x20is\x20required');const _0xfbeb88=await fetch(API_BASE+'/tasks/'+_0x5786a0+'/files?path='+encodeURIComponent(_0x292ac6),{'method':'DELETE'});if(!_0xfbeb88['ok']){const _0x20bd2e=await _0xfbeb88['json']()['catch'](()=>({}));throw new Error(_0x20bd2e['error']||_0x20bd2e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0xfbeb88['statusText']);}return await _0xfbeb88['json']();},async 'deleteDirectory'(_0x50e80d,_0xe77313){if(!_0x50e80d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe77313)throw new Error('Directory\x20path\x20is\x20required');const _0x4f97d6=await fetch(API_BASE+'/tasks/'+_0x50e80d+'/files/directory?path='+encodeURIComponent(_0xe77313),{'method':'DELETE'});if(!_0x4f97d6['ok']){const _0x208fb7=await _0x4f97d6['json']()['catch'](()=>({}));throw new Error(_0x208fb7['error']||_0x208fb7['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f97d6['statusText']);}return await _0x4f97d6['json']();},async 'discardFile'(_0x1c1deb,_0x2a44f4,_0x4b7ae9){if(!_0x1c1deb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2a44f4)throw new Error('File\x20path\x20is\x20required');if(!_0x4b7ae9)throw new Error('Repository\x20path\x20is\x20required');const _0x54de05=await fetch(API_BASE+'/tasks/'+_0x1c1deb+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2a44f4,'repoPath':_0x4b7ae9})});if(!_0x54de05['ok']){const _0x6f3d4b=await _0x54de05['json']()['catch'](()=>({}));throw new Error(_0x6f3d4b['error']||_0x6f3d4b['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x54de05['statusText']);}return await _0x54de05['json']();},async 'followUpTask'(_0x26630e,_0x4999a1={}){if(!_0x26630e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4999a1['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3126bd,_0x3f1bcf={};if(_0x4999a1['files']&&_0x4999a1['files']['length']>0x0){const _0x3fd0be=new FormData();_0x3fd0be['append']('instructions',_0x4999a1['instructions']);for(const _0x2d28a5 of _0x4999a1['files']){_0x3fd0be['append']('attachments',_0x2d28a5);}_0x3126bd=_0x3fd0be;}else _0x3f1bcf['Content-Type']='application/json',_0x3126bd=JSON['stringify']({'instructions':_0x4999a1['instructions']});const _0x202f86=await fetch(API_BASE+'/tasks/'+_0x26630e+'/follow-up',{'method':'POST','headers':_0x3f1bcf,'body':_0x3126bd});if(!_0x202f86['ok']){const _0x38b1ee=await _0x202f86['json']()['catch'](()=>({}));throw new Error(_0x38b1ee['error']||_0x38b1ee['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x202f86['statusText']);}return await _0x202f86['json']();},async 'getTaskRewindPoints'(_0x594a4e){if(!_0x594a4e)throw new Error('Task\x20ID\x20is\x20required');const _0x1633e4=await fetch(API_BASE+'/tasks/'+_0x594a4e+'/rewind-points');if(!_0x1633e4['ok']){const _0x1b5544=await _0x1633e4['json']()['catch'](()=>({}));throw new Error(_0x1b5544['error']||_0x1b5544['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1633e4['statusText']);}return await _0x1633e4['json']();},async 'rewindTask'(_0x5ab4b8,_0x304cc2={}){if(!_0x5ab4b8)throw new Error('Task\x20ID\x20is\x20required');const _0x4a6e5d=Number['isInteger'](_0x304cc2['targetFollowUpCount'])?_0x304cc2['targetFollowUpCount']:0x0,_0x45db5a={'targetFollowUpCount':_0x4a6e5d};typeof _0x304cc2['instructions']==='string'&&_0x304cc2['instructions']['trim']()&&(_0x45db5a['instructions']=_0x304cc2['instructions']['trim']());typeof _0x304cc2['rewindFiles']==='boolean'&&(_0x45db5a['rewindFiles']=_0x304cc2['rewindFiles']);const _0x2240ae=await fetch(API_BASE+'/tasks/'+_0x5ab4b8+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45db5a)});if(!_0x2240ae['ok']){const _0x1965e4=await _0x2240ae['json']()['catch'](()=>({}));throw new Error(_0x1965e4['error']||_0x1965e4['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2240ae['statusText']);}return await _0x2240ae['json']();},async 'login'(_0x4b7e6c,_0x267008){const _0x8d15fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4b7e6c,'password':_0x267008})});if(!_0x8d15fe['ok']){const _0x3b2a94=await _0x8d15fe['json']();throw new Error(_0x3b2a94['message']||'Login\x20failed');}return await _0x8d15fe['json']();},async 'logout'(){const _0x5b84f5=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5b84f5['ok']){const _0x37cb07=await _0x5b84f5['json']();throw new Error(_0x37cb07['message']||'Logout\x20failed');}return await _0x5b84f5['json']();},async 'getCurrentUser'(){const _0x230d9a=await fetch(API_BASE+'/auth/me');if(!_0x230d9a['ok'])throw new Error('Not\x20authenticated');const _0x279c58=await _0x230d9a['json']();return _0x279c58['user'];},async 'getRolesInfo'(){const _0x4664f2=await fetch(API_BASE+'/users/roles');if(!_0x4664f2['ok']){const _0x22a9d3=await _0x4664f2['json']();throw new Error(_0x22a9d3['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4664f2['json']();},async 'getUsers'(){const _0x1c8676=await fetch(API_BASE+'/users');if(!_0x1c8676['ok']){const _0x34fe5a=await _0x1c8676['json']();throw new Error(_0x34fe5a['message']||'Failed\x20to\x20get\x20users');}return await _0x1c8676['json']();},async 'getUser'(_0x206afd){const _0x1e7fff=await fetch(API_BASE+'/users/'+_0x206afd);if(!_0x1e7fff['ok']){const _0x3802b7=await _0x1e7fff['json']();throw new Error(_0x3802b7['message']||'Failed\x20to\x20get\x20user');}return await _0x1e7fff['json']();},async 'createUser'(_0x3bff15){const _0x324393=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bff15)});if(!_0x324393['ok']){const _0xcff111=await _0x324393['json']();throw new Error(_0xcff111['message']||'Failed\x20to\x20create\x20user');}return await _0x324393['json']();},async 'updateUser'(_0x4afda3,_0x5259c){const _0x4a7084=await fetch(API_BASE+'/users/'+_0x4afda3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5259c)});if(!_0x4a7084['ok']){const _0xb7348f=await _0x4a7084['json']();throw new Error(_0xb7348f['message']||'Failed\x20to\x20update\x20user');}return await _0x4a7084['json']();},async 'deleteUser'(_0x181315){const _0x4984cb=await fetch(API_BASE+'/users/'+_0x181315,{'method':'DELETE'});if(!_0x4984cb['ok']){const _0x4dd92d=await _0x4984cb['json']();throw new Error(_0x4dd92d['message']||'Failed\x20to\x20delete\x20user');}return await _0x4984cb['json']();},async 'stopAllContainers'(){const _0xc6649f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4dba23=await _0xc6649f['json']()['catch'](()=>({}));if(!_0xc6649f['ok'])throw new Error(_0x4dba23['message']||_0x4dba23['error']||'Failed\x20to\x20stop\x20containers');return _0x4dba23;},async 'removeStoppedContainers'(){const _0x27a37f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x9120aa=await _0x27a37f['json']()['catch'](()=>({}));if(!_0x27a37f['ok'])throw new Error(_0x9120aa['message']||_0x9120aa['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x9120aa;},async 'pruneDockerResources'(){const _0xb37caa=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x345367=await _0xb37caa['json']()['catch'](()=>({}));if(!_0xb37caa['ok'])throw new Error(_0x345367['message']||_0x345367['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x345367;},async 'getUpdateSettings'(){const _0x3503e6=await fetch(API_BASE+'/health/update-settings'),_0x67eaa7=await _0x3503e6['json']()['catch'](()=>({}));if(!_0x3503e6['ok'])throw new Error(_0x67eaa7['message']||_0x67eaa7['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x67eaa7;},async 'applyServerUpdate'(_0x5ea4f7){const _0x71ef1e=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x5ea4f7})}),_0x122118=await _0x71ef1e['json']()['catch'](()=>({}));if(!_0x71ef1e['ok']){const _0x102e59=new Error(_0x122118['message']||_0x122118['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x122118['output']!==undefined)_0x102e59['output']=_0x122118['output'];if(_0x122118['error']!==undefined)_0x102e59['commandError']=_0x122118['error'];throw _0x102e59;}return _0x122118;},async 'restartServer'(){const _0x8a7f53=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x3e1ec6=await _0x8a7f53['json']()['catch'](()=>({}));if(!_0x8a7f53['ok'])throw new Error(_0x3e1ec6['message']||_0x3e1ec6['error']||'Failed\x20to\x20restart\x20server');return _0x3e1ec6;},async 'createPasswordToken'(_0x239041,_0x248c0f='setup',_0x36dcca=![]){const _0x3baf45=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x239041,'type':_0x248c0f,'sendEmail':_0x36dcca})});if(!_0x3baf45['ok']){const _0xb6a024=await _0x3baf45['json']();throw new Error(_0xb6a024['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x3baf45['json']();},async 'getEmailConfig'(){const _0x13ca13=await fetch(API_BASE+'/password/email-config');if(!_0x13ca13['ok']){const _0x2df33b=await _0x13ca13['json']();throw new Error(_0x2df33b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x13ca13['json']();},async 'updateTaskName'(_0x301ffd,_0x51d944){const _0x970900=await fetch(API_BASE+'/tasks/'+_0x301ffd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x51d944})});if(!_0x970900['ok']){const _0xd12f47=await _0x970900['json']();throw new Error(_0xd12f47['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x970900['json']();},async 'pinTask'(_0x14af12,_0x5541c2,_0x399cf5=null){if(!_0x14af12)throw new Error('Task\x20ID\x20is\x20required');const _0x5e1c27={'pinned':_0x5541c2};_0x399cf5&&_0x399cf5['length']>0x0&&(_0x5e1c27['additionalTaskIds']=_0x399cf5);const _0x29bd02=await fetch(API_BASE+'/tasks/'+_0x14af12+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e1c27)});if(!_0x29bd02['ok']){const _0x1fc215=await _0x29bd02['json']();throw new Error(_0x1fc215['error']||'Failed\x20to\x20pin\x20task');}return await _0x29bd02['json']();},async 'setTaskWinner'(_0x1a868f,_0x6210cd,_0x323f11=[]){if(!_0x1a868f)throw new Error('Task\x20ID\x20is\x20required');const _0x56bbf4=await fetch(API_BASE+'/tasks/'+_0x1a868f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x6210cd,'siblings':_0x323f11})});if(!_0x56bbf4['ok']){const _0x1b23ad=await _0x56bbf4['json']();throw new Error(_0x1b23ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x56bbf4['json']();},async 'setTaskLoser'(_0x3bdcb9,_0x3d74f5){if(!_0x3bdcb9)throw new Error('Task\x20ID\x20is\x20required');const _0x3f2693=await fetch(API_BASE+'/tasks/'+_0x3bdcb9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d74f5})});if(!_0x3f2693['ok']){const _0x42937e=await _0x3f2693['json']();throw new Error(_0x42937e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3f2693['json']();},async 'createTaskGroup'(_0x2e85fd){const _0x172e56=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e85fd)});if(!_0x172e56['ok']){const _0x3dcde6=await _0x172e56['json']();throw new Error(_0x3dcde6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x172e56['json']();},async 'getTaskGroups'(_0x2a8e3c={}){const _0x3d0fb8=new URLSearchParams();if(_0x2a8e3c['userId'])_0x3d0fb8['set']('userId',String(_0x2a8e3c['userId']));if(_0x2a8e3c['status'])_0x3d0fb8['set']('status',String(_0x2a8e3c['status']));if(_0x2a8e3c['limit'])_0x3d0fb8['set']('limit',String(_0x2a8e3c['limit']));const _0x50004b=API_BASE+'/tasks/groups'+(_0x3d0fb8['toString']()?'?'+_0x3d0fb8['toString']():''),_0x4832a5=await fetch(_0x50004b);if(!_0x4832a5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4832a5['json']();},async 'getTaskGroup'(_0x29704b){const _0x58e38c=await fetch(API_BASE+'/tasks/groups/'+_0x29704b);if(!_0x58e38c['ok']){const _0x2f63e3=await _0x58e38c['json']();throw new Error(_0x2f63e3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x58e38c['json']();},async 'updateTaskGroup'(_0x5e98d8,_0x1bdf91,_0x332ad9){const _0x395c28=await fetch(API_BASE+'/tasks/'+_0x5e98d8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1bdf91,'groupIndex':_0x332ad9})});if(!_0x395c28['ok']){const _0x465936=await _0x395c28['json']();throw new Error(_0x465936['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x395c28['json']();},async 'removeTaskFromGroup'(_0xec4d93){return this['updateTaskGroup'](_0xec4d93,null,null);},async 'deleteTaskGroup'(_0x4f8da6,_0x58cde9=![]){const _0x3bbb37=_0x58cde9?'?deleteTasks=true':'',_0x28c7ad=await fetch(API_BASE+'/tasks/groups/'+_0x4f8da6+_0x3bbb37,{'method':'DELETE'});if(!_0x28c7ad['ok']){const _0x2f5c11=await _0x28c7ad['json']();throw new Error(_0x2f5c11['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3667bb,_0x3f33db){const _0x380af0=await fetch(API_BASE+'/tasks/groups/'+_0x3667bb+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f33db})});if(!_0x380af0['ok']){const _0x105902=await _0x380af0['json']();throw new Error(_0x105902['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x380af0['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3a7e59){if(!_0x3a7e59)throw new Error('Task\x20ID\x20is\x20required');const _0x4c0ca4=await fetch(API_BASE+'/tasks/'+_0x3a7e59+'/comments');if(!_0x4c0ca4['ok']){const _0x3d18a8=await _0x4c0ca4['json']()['catch'](()=>({}));throw new Error(_0x3d18a8['error']||'Failed\x20to\x20get\x20comments');}return await _0x4c0ca4['json']();},async 'addComment'(_0x1d09cb,_0x3d9e09){if(!_0x1d09cb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9e09)throw new Error('Comment\x20content\x20is\x20required');const _0x41e35b=await fetch(API_BASE+'/tasks/'+_0x1d09cb+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d9e09})});if(!_0x41e35b['ok']){const _0x46fc24=await _0x41e35b['json']()['catch'](()=>({}));throw new Error(_0x46fc24['error']||'Failed\x20to\x20add\x20comment');}return await _0x41e35b['json']();},async 'updateComment'(_0x14f2e7,_0xd8ee3c,_0x3d470d){if(!_0x14f2e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd8ee3c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3d470d)throw new Error('Comment\x20content\x20is\x20required');const _0x460ba4=await fetch(API_BASE+'/tasks/'+_0x14f2e7+'/comments/'+_0xd8ee3c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d470d})});if(!_0x460ba4['ok']){const _0x685ee4=await _0x460ba4['json']()['catch'](()=>({}));throw new Error(_0x685ee4['error']||'Failed\x20to\x20update\x20comment');}return await _0x460ba4['json']();},async 'deleteComment'(_0x38acb9,_0x17ddcd){if(!_0x38acb9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17ddcd)throw new Error('Comment\x20ID\x20is\x20required');const _0x50a36d=await fetch(API_BASE+'/tasks/'+_0x38acb9+'/comments/'+_0x17ddcd,{'method':'DELETE'});if(!_0x50a36d['ok']){const _0x103bc9=await _0x50a36d['json']()['catch'](()=>({}));throw new Error(_0x103bc9['error']||'Failed\x20to\x20delete\x20comment');}return await _0x50a36d['json']();},async 'createObjective'(_0x1122fc){const _0x46770a={'objective':!![],'name':_0x1122fc['name']||'','environment':_0x1122fc['environment']||null,'agents':_0x1122fc['agents']||[],'branches':_0x1122fc['branches']||{},'isPinned':_0x1122fc['isPinned']||![],'parentObjectiveId':_0x1122fc['parentObjectiveId']||null,'env_vars':_0x1122fc['envVars']||{},'parameters':{'instructions':_0x1122fc['instructions']||''},'files':_0x1122fc['files']||[],'jira':_0x1122fc['jira']||null};return this['createTask'](_0x46770a);},async 'updateObjective'(_0x34b8b0,_0x17640a,_0x94b334=[],_0x2c6e31=[]){let _0x5073ab,_0x1130d2={};const _0x13e0a1={..._0x17640a};_0x2c6e31&&_0x2c6e31['length']>0x0&&(_0x13e0a1['removeAttachments']=_0x2c6e31);if(_0x94b334&&_0x94b334['length']>0x0){const _0x48ec41=new FormData();for(const [_0x197a36,_0x3bc0f4]of Object['entries'](_0x13e0a1)){if(_0x3bc0f4==null)continue;typeof _0x3bc0f4==='object'?_0x48ec41['append'](_0x197a36,JSON['stringify'](_0x3bc0f4)):_0x48ec41['append'](_0x197a36,String(_0x3bc0f4));}for(const _0x3aebe9 of _0x94b334){_0x48ec41['append']('attachments',_0x3aebe9);}_0x5073ab=_0x48ec41;}else _0x1130d2['Content-Type']='application/json',_0x5073ab=JSON['stringify'](_0x13e0a1);const _0x1b5199=await fetch(API_BASE+'/tasks/'+_0x34b8b0,{'method':'PATCH','headers':_0x1130d2,'body':_0x5073ab});if(!_0x1b5199['ok']){const _0x38218d=await _0x1b5199['json']();throw new Error(_0x38218d['error']||'Failed\x20to\x20update\x20objective');}return await _0x1b5199['json']();},async 'deleteObjective'(_0x1aacd0){return this['deleteTask'](_0x1aacd0);},async 'launchObjective'(_0x267bbb,_0x1baf51={}){const _0x64f4a5=await fetch(API_BASE+'/tasks/'+_0x267bbb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1baf51)});if(!_0x64f4a5['ok']){const _0x25f1b2=await _0x64f4a5['json']();throw new Error(_0x25f1b2['error']||'Failed\x20to\x20launch\x20objective');}return await _0x64f4a5['json']();},async 'getObjectiveAttachments'(_0x4c4d64){return this['getTaskAttachments'](_0x4c4d64);},async 'createJudgeTask'({environment:_0x281e3b,judgeAgent:_0x586e07,groupId:_0x2800f9,taskIds:_0x5e71fc,judgeCustomInstructions:_0x8ad8a,isPinned:_0x2c4129}){const _0x3fab24=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x281e3b,'judgeAgent':_0x586e07,'groupId':_0x2800f9,'taskIds':_0x5e71fc,'judgeCustomInstructions':_0x8ad8a,'isPinned':_0x2c4129})});if(!_0x3fab24['ok']){const _0x4d63f9=await _0x3fab24['json']();throw new Error(_0x4d63f9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3fab24['json']();},async 'getJudgeTasks'(_0x1b5c0e){const _0xee795f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b5c0e));if(!_0xee795f['ok']){const _0x43ed82=await _0xee795f['json']();throw new Error(_0x43ed82['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xee795f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5aab58,_0x27df70,_0x395aef=''){const _0x525742=await fetch(API_BASE+'/tasks/'+_0x5aab58+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x27df70,'customPreamble':_0x395aef})});if(!_0x525742['ok']){const _0x118bbf=await _0x525742['json']();throw new Error(_0x118bbf['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x525742['json']();},async 'getJiraConfig'(){const _0x3c04b7=await fetch(API_BASE+'/jira/config');if(!_0x3c04b7['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3c04b7['json']();},async 'getJiraIssue'(_0x1c1c32){const _0x50d250=await fetch(API_BASE+'/jira/issues/'+_0x1c1c32);if(!_0x50d250['ok']){const _0x2a3ffb=await _0x50d250['json']()['catch'](()=>({}));throw new Error(_0x2a3ffb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x50d250['statusText']);}return await _0x50d250['json']();},async 'searchJiraIssues'(_0x323ac6,_0x5481a6=0x14){const _0x373e54=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x323ac6,'maxResults':_0x5481a6})});if(!_0x373e54['ok']){const _0x18dec9=await _0x373e54['json']()['catch'](()=>({}));throw new Error(_0x18dec9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x373e54['statusText']);}return await _0x373e54['json']();},async 'postJiraComment'(_0x53242d,_0x3577d6){const _0x32819f=await fetch(API_BASE+'/jira/issues/'+_0x53242d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3577d6})});if(!_0x32819f['ok']){const _0x12aae2=await _0x32819f['json']()['catch'](()=>({}));throw new Error(_0x12aae2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x32819f['statusText']);}return await _0x32819f['json']();},async 'getJiraComments'(_0x28a6ff){const _0x506a71=await fetch(API_BASE+'/jira/issues/'+_0x28a6ff+'/comments');if(!_0x506a71['ok']){const _0x3ee6db=await _0x506a71['json']()['catch'](()=>({}));throw new Error(_0x3ee6db['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x506a71['statusText']);}return await _0x506a71['json']();},async 'promptParameter'({environment:_0x134c83,command:_0x590be8,parser:parser='json'}){const _0x5e2846=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x134c83,'command':_0x590be8,'parser':parser})});if(!_0x5e2846['ok']){const _0x114994=await _0x5e2846['json']()['catch'](()=>({}));throw new Error(_0x114994['message']||_0x114994['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5e2846['statusText']);}return await _0x5e2846['json']();},async 'promptParameterStream'(_0x5a4b6f,_0x1b1f7e){const _0x20efe3=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a4b6f)});if(!_0x20efe3['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x20efe3['statusText']);const _0x2d31e7=_0x20efe3['body']['getReader'](),_0xed2567=new TextDecoder();let _0x90a718='';return new Promise((_0x23ac5d,_0x20bb4d)=>{const _0x2849df=async()=>{try{const {done:_0x359b5f,value:_0x409783}=await _0x2d31e7['read']();if(_0x359b5f)return;_0x90a718+=_0xed2567['decode'](_0x409783,{'stream':!![]});const _0x4a6ff2=_0x90a718['split']('\x0a\x0a');_0x90a718=_0x4a6ff2['pop']()||'';for(const _0x1edc6c of _0x4a6ff2){if(!_0x1edc6c['trim']())continue;const _0x2b16e4=_0x1edc6c['split']('\x0a');let _0x483ac7='message',_0x510141='';for(const _0x294903 of _0x2b16e4){if(_0x294903['startsWith']('event:'))_0x483ac7=_0x294903['substring'](0x6)['trim']();else _0x294903['startsWith']('data:')&&(_0x510141=_0x294903['substring'](0x5)['trim']());}if(!_0x510141)continue;try{const _0x16a4c8=JSON['parse'](_0x510141);if(_0x483ac7==='progress'&&_0x1b1f7e)_0x1b1f7e(_0x16a4c8['stage'],_0x16a4c8['message']);else{if(_0x483ac7==='result'){_0x23ac5d(_0x16a4c8);return;}else{if(_0x483ac7==='error'){let _0x2eff4e=_0x16a4c8['message']||_0x16a4c8['error']||'Prompt\x20command\x20failed';_0x16a4c8['rawOutput']&&(_0x2eff4e+='\x0a\x0aRaw\x20output:\x0a'+_0x16a4c8['rawOutput']);_0x20bb4d(new Error(_0x2eff4e));return;}}}}catch(_0x37e5c8){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x37e5c8),console['error']('Event\x20type:',_0x483ac7),console['error']('Event\x20data:',_0x510141),console['error']('First\x20200\x20chars:',_0x510141['substring'](0x0,0xc8)),_0x20bb4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x37e5c8['message']+'\x0a\x0aData:\x20'+_0x510141['substring'](0x0,0x1f4)));return;}}_0x2849df();}catch(_0x57a081){_0x20bb4d(_0x57a081);}};_0x2849df();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2c2bbb){const _0x2e6074=await fetch(''+API_BASE+_0x2c2bbb);if(!_0x2e6074['ok']){const _0x707ce1=await _0x2e6074['json']()['catch'](()=>({'error':_0x2e6074['statusText']})),_0x338709=new Error(_0x707ce1['error']||_0x707ce1['message']||_0x2e6074['statusText']);if(_0x707ce1['detail']!==undefined)_0x338709['detail']=_0x707ce1['detail'];throw _0x338709;}return await _0x2e6074['json']();},async 'post'(_0xe9607f,_0x2e534e){const _0x5c1648=await fetch(''+API_BASE+_0xe9607f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e534e)});if(!_0x5c1648['ok']){const _0x2c5891=await _0x5c1648['json']()['catch'](()=>({'error':_0x5c1648['statusText']})),_0x39f4c5=new Error(_0x2c5891['error']||_0x2c5891['message']||_0x5c1648['statusText']);if(_0x2c5891['detail']!==undefined)_0x39f4c5['detail']=_0x2c5891['detail'];throw _0x39f4c5;}return await _0x5c1648['json']();},async 'put'(_0x49d442,_0x242ddf){const _0x27cfd8=await fetch(''+API_BASE+_0x49d442,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x242ddf)});if(!_0x27cfd8['ok']){const _0x53ac92=await _0x27cfd8['json']()['catch'](()=>({'error':_0x27cfd8['statusText']})),_0x303046=new Error(_0x53ac92['error']||_0x53ac92['message']||_0x27cfd8['statusText']);if(_0x53ac92['detail']!==undefined)_0x303046['detail']=_0x53ac92['detail'];throw _0x303046;}return await _0x27cfd8['json']();},async 'delete'(_0x1dab89,_0x5f52e0){const _0x1f52c9={'method':'DELETE'};_0x5f52e0&&(_0x1f52c9['headers']={'Content-Type':'application/json'},_0x1f52c9['body']=JSON['stringify'](_0x5f52e0));const _0x2995fe=await fetch(''+API_BASE+_0x1dab89,_0x1f52c9);if(!_0x2995fe['ok']){const _0x551c60=await _0x2995fe['json']()['catch'](()=>({'error':_0x2995fe['statusText']})),_0x432771=new Error(_0x551c60['error']||_0x551c60['message']||_0x2995fe['statusText']);if(_0x551c60['detail']!==undefined)_0x432771['detail']=_0x551c60['detail'];throw _0x432771;}return await _0x2995fe['json']();},async 'getSkills'(){const _0x4a1e0e=await fetch(API_BASE+'/skills');if(!_0x4a1e0e['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a1e0e['statusText']);return await _0x4a1e0e['json']();},async 'getSkill'(_0x40f20f){const _0x2a34ed=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40f20f));if(!_0x2a34ed['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2a34ed['statusText']);return await _0x2a34ed['json']();},async 'createSkill'(_0x1921e2){const _0x336f85=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1921e2)});if(!_0x336f85['ok']){const _0x4adbe9=await _0x336f85['json']()['catch'](()=>({'error':_0x336f85['statusText']})),_0x3daa32=new Error(_0x4adbe9['error']||_0x4adbe9['message']||_0x336f85['statusText']);if(_0x4adbe9['detail']!==undefined)_0x3daa32['detail']=_0x4adbe9['detail'];throw _0x3daa32;}return await _0x336f85['json']();},async 'updateSkill'(_0x4e614d,_0x2ff208){const _0x4f39d8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4e614d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ff208)});if(!_0x4f39d8['ok']){const _0xc0a64e=await _0x4f39d8['json']()['catch'](()=>({'error':_0x4f39d8['statusText']})),_0x5a8d13=new Error(_0xc0a64e['error']||_0xc0a64e['message']||_0x4f39d8['statusText']);if(_0xc0a64e['detail']!==undefined)_0x5a8d13['detail']=_0xc0a64e['detail'];throw _0x5a8d13;}return await _0x4f39d8['json']();},async 'deleteSkill'(_0x1db906){const _0x4c5f81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1db906),{'method':'DELETE'});if(!_0x4c5f81['ok']){const _0x16b557=await _0x4c5f81['json']()['catch'](()=>({'error':_0x4c5f81['statusText']})),_0x3682d5=new Error(_0x16b557['error']||_0x16b557['message']||_0x4c5f81['statusText']);if(_0x16b557['detail']!==undefined)_0x3682d5['detail']=_0x16b557['detail'];throw _0x3682d5;}return await _0x4c5f81['json']();},async 'getSkillFile'(_0x23be11,_0x2beda4){const _0x2bc4d4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23be11)+'/files/'+_0x2beda4);if(!_0x2bc4d4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2bc4d4['statusText']);return await _0x2bc4d4['json']();},async 'saveSkillFile'(_0xb4a597,_0x36d736,_0x228292){const _0x2d406b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xb4a597)+'/files/'+_0x36d736,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x228292})});if(!_0x2d406b['ok']){const _0x131eb1=await _0x2d406b['json']()['catch'](()=>({'error':_0x2d406b['statusText']})),_0x22a634=new Error(_0x131eb1['error']||_0x131eb1['message']||_0x2d406b['statusText']);if(_0x131eb1['detail']!==undefined)_0x22a634['detail']=_0x131eb1['detail'];throw _0x22a634;}return await _0x2d406b['json']();},async 'deleteSkillFile'(_0x52c667,_0x24a5ce){const _0x5e3ac0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52c667)+'/files/'+_0x24a5ce,{'method':'DELETE'});if(!_0x5e3ac0['ok']){const _0x31cc71=await _0x5e3ac0['json']()['catch'](()=>({'error':_0x5e3ac0['statusText']})),_0x293e57=new Error(_0x31cc71['error']||_0x31cc71['message']||_0x5e3ac0['statusText']);if(_0x31cc71['detail']!==undefined)_0x293e57['detail']=_0x31cc71['detail'];throw _0x293e57;}return await _0x5e3ac0['json']();},async 'pullSkills'(){const _0x60359=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x60359['ok']){const _0xc2a23=await _0x60359['json']()['catch'](()=>({'error':_0x60359['statusText']})),_0x2402de=new Error(_0xc2a23['error']||_0xc2a23['message']||_0x60359['statusText']);if(_0xc2a23['detail']!==undefined)_0x2402de['detail']=_0xc2a23['detail'];throw _0x2402de;}return await _0x60359['json']();},async 'commitSkills'(_0x5c08db,_0x53149c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x53149c,_0x4649ef=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5c08db,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4649ef['ok']){const _0xd32719=await _0x4649ef['json']()['catch'](()=>({'error':_0x4649ef['statusText']})),_0x1bea37=new Error(_0xd32719['error']||_0xd32719['message']||_0x4649ef['statusText']);if(_0xd32719['detail']!==undefined)_0x1bea37['detail']=_0xd32719['detail'];throw _0x1bea37;}return await _0x4649ef['json']();},async 'discardSkillsChanges'(){const _0x5be332=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5be332['ok']){const _0x2ced11=await _0x5be332['json']()['catch'](()=>({'error':_0x5be332['statusText']})),_0xba4535=new Error(_0x2ced11['error']||_0x2ced11['message']||_0x5be332['statusText']);if(_0x2ced11['detail']!==undefined)_0xba4535['detail']=_0x2ced11['detail'];throw _0xba4535;}return await _0x5be332['json']();},async 'getSkillCatalog'(){const _0x239d68=await fetch(API_BASE+'/external-skills/catalog');if(!_0x239d68['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x239d68['statusText']);return await _0x239d68['json']();},async 'getImportedSkillsRegistry'(){const _0x4490b9=await fetch(API_BASE+'/external-skills/registry');if(!_0x4490b9['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4490b9['statusText']);return await _0x4490b9['json']();},async 'importCatalogSkill'(_0x2dc632){const _0x5d7bf0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2dc632})});if(!_0x5d7bf0['ok']){const _0x20b9a6=await _0x5d7bf0['json']()['catch'](()=>({'error':_0x5d7bf0['statusText']})),_0x1ba7b7=new Error(_0x20b9a6['error']||_0x20b9a6['message']||_0x5d7bf0['statusText']);if(_0x20b9a6['detail']!==undefined)_0x1ba7b7['detail']=_0x20b9a6['detail'];throw _0x1ba7b7;}return await _0x5d7bf0['json']();},async 'importSkillFromGit'(_0x12fb5f,_0x4f95b4,_0x215baa='main',_0x2e237f=null){const _0xd8291b=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x12fb5f,'skillPath':_0x4f95b4,'branch':_0x215baa,'skillId':_0x2e237f})});if(!_0xd8291b['ok']){const _0x5e4e9e=await _0xd8291b['json']()['catch'](()=>({'error':_0xd8291b['statusText']})),_0x39c7b7=new Error(_0x5e4e9e['error']||_0x5e4e9e['message']||_0xd8291b['statusText']);if(_0x5e4e9e['detail']!==undefined)_0x39c7b7['detail']=_0x5e4e9e['detail'];throw _0x39c7b7;}return await _0xd8291b['json']();},async 'probeMarketplace'(_0xb9fe9d,_0x39e7bb='main'){const _0xc0722e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xb9fe9d,'branch':_0x39e7bb})});if(!_0xc0722e['ok']){const _0x47be80=await _0xc0722e['json']()['catch'](()=>({'error':_0xc0722e['statusText']})),_0x3d9a78=new Error(_0x47be80['error']||_0x47be80['message']||_0xc0722e['statusText']);if(_0x47be80['detail']!==undefined)_0x3d9a78['detail']=_0x47be80['detail'];throw _0x3d9a78;}return await _0xc0722e['json']();},async 'importMarketplaceBundle'(_0x36d2bc,_0xe2c73b,_0x410844,_0x39c031=null){const _0x2a05e3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x36d2bc,'branch':_0xe2c73b,'bundleId':_0x410844,'selectedSkills':_0x39c031})});if(!_0x2a05e3['ok']){const _0x7a265=await _0x2a05e3['json']()['catch'](()=>({'error':_0x2a05e3['statusText']})),_0x36ae4c=new Error(_0x7a265['error']||_0x7a265['message']||_0x2a05e3['statusText']);if(_0x7a265['detail']!==undefined)_0x36ae4c['detail']=_0x7a265['detail'];throw _0x36ae4c;}return await _0x2a05e3['json']();},async 'importSkillFromFolder'(_0x2ac52b,_0x459e1a=null){const _0xae6c68=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2ac52b,'skillId':_0x459e1a})});if(!_0xae6c68['ok']){const _0x61cf0d=await _0xae6c68['json']()['catch'](()=>({'error':_0xae6c68['statusText']})),_0x4fb507=new Error(_0x61cf0d['error']||_0x61cf0d['message']||_0xae6c68['statusText']);if(_0x61cf0d['detail']!==undefined)_0x4fb507['detail']=_0x61cf0d['detail'];throw _0x4fb507;}return await _0xae6c68['json']();},async 'importSkillFromNpm'(_0x2108f8,_0x902b8c='latest',_0xe432a5=null,_0x229932=null){const _0x1f28c6=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2108f8,'version':_0x902b8c,'skillId':_0xe432a5,'registry':_0x229932})});if(!_0x1f28c6['ok']){const _0x4d1d7f=await _0x1f28c6['json']()['catch'](()=>({'error':_0x1f28c6['statusText']})),_0x19d9e7=new Error(_0x4d1d7f['error']||_0x4d1d7f['message']||_0x1f28c6['statusText']);if(_0x4d1d7f['detail']!==undefined)_0x19d9e7['detail']=_0x4d1d7f['detail'];throw _0x19d9e7;}return await _0x1f28c6['json']();},async 'checkSkillUpdates'(_0x2e69cb){const _0x38199b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e69cb)+'/check-updates',{'method':'POST'});if(!_0x38199b['ok']){const _0x1bdf35=await _0x38199b['json']()['catch'](()=>({'error':_0x38199b['statusText']})),_0x286d66=new Error(_0x1bdf35['error']||_0x1bdf35['message']||_0x38199b['statusText']);if(_0x1bdf35['detail']!==undefined)_0x286d66['detail']=_0x1bdf35['detail'];throw _0x286d66;}return await _0x38199b['json']();},async 'updateExternalSkill'(_0x3cebfc){const _0x5102e8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cebfc)+'/update',{'method':'POST'});if(!_0x5102e8['ok']){const _0x40e673=await _0x5102e8['json']()['catch'](()=>({'error':_0x5102e8['statusText']})),_0x4ec3b9=new Error(_0x40e673['error']||_0x40e673['message']||_0x5102e8['statusText']);if(_0x40e673['detail']!==undefined)_0x4ec3b9['detail']=_0x40e673['detail'];throw _0x4ec3b9;}return await _0x5102e8['json']();},async 'updateSkillFlags'(_0x175fbd,_0x25b5eb){const _0x5446fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x175fbd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x25b5eb})});if(!_0x5446fd['ok']){const _0x4ff27b=await _0x5446fd['json']()['catch'](()=>({'error':_0x5446fd['statusText']})),_0x56c764=new Error(_0x4ff27b['error']||_0x4ff27b['message']||_0x5446fd['statusText']);if(_0x4ff27b['detail']!==undefined)_0x56c764['detail']=_0x4ff27b['detail'];throw _0x56c764;}return await _0x5446fd['json']();},async 'removeFromImportedRegistry'(_0x4fefcc){const _0x266969=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4fefcc)+'/registry',{'method':'DELETE'});if(!_0x266969['ok']){const _0x38060f=await _0x266969['json']()['catch'](()=>({'error':_0x266969['statusText']})),_0x54ce3f=new Error(_0x38060f['error']||_0x38060f['message']||_0x266969['statusText']);if(_0x38060f['detail']!==undefined)_0x54ce3f['detail']=_0x38060f['detail'];throw _0x54ce3f;}return await _0x266969['json']();},async 'getTeams'(){const _0x24b7e=await fetch(API_BASE+'/teams');if(!_0x24b7e['ok']){const _0x3a8ab9=await _0x24b7e['json']()['catch'](()=>({'message':_0x24b7e['statusText']}));throw new Error(_0x3a8ab9['message']||'Failed\x20to\x20get\x20teams');}return await _0x24b7e['json']();},async 'getTeam'(_0x75db77){const _0x3161b4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x75db77));if(!_0x3161b4['ok']){const _0x34956d=await _0x3161b4['json']()['catch'](()=>({'message':_0x3161b4['statusText']}));throw new Error(_0x34956d['message']||'Failed\x20to\x20get\x20team');}return await _0x3161b4['json']();},async 'createTeam'(_0xc9676c){const _0x656fa2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc9676c)});if(!_0x656fa2['ok']){const _0x28abe8=await _0x656fa2['json']()['catch'](()=>({'message':_0x656fa2['statusText']}));throw new Error(_0x28abe8['message']||'Failed\x20to\x20create\x20team');}return await _0x656fa2['json']();},async 'updateTeam'(_0x256478,_0x2cbf53){const _0x3559cd=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x256478),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cbf53)});if(!_0x3559cd['ok']){const _0x4c561c=await _0x3559cd['json']()['catch'](()=>({'message':_0x3559cd['statusText']}));throw new Error(_0x4c561c['message']||'Failed\x20to\x20update\x20team');}return await _0x3559cd['json']();},async 'deleteTeam'(_0x3bef18){const _0x1a66ed=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bef18),{'method':'DELETE'});if(!_0x1a66ed['ok']){const _0x4fdefa=await _0x1a66ed['json']()['catch'](()=>({'message':_0x1a66ed['statusText']}));throw new Error(_0x4fdefa['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a66ed['json']();},async 'addTeamMember'(_0x3de777,_0xb155dc){const _0x4e2cb6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3de777)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xb155dc})});if(!_0x4e2cb6['ok']){const _0x223fb4=await _0x4e2cb6['json']()['catch'](()=>({'message':_0x4e2cb6['statusText']}));throw new Error(_0x223fb4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4e2cb6['json']();},async 'removeTeamMember'(_0x627bc7,_0x445588){const _0x33e14f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x627bc7)+'/members/'+encodeURIComponent(_0x445588),{'method':'DELETE'});if(!_0x33e14f['ok']){const _0x1d039e=await _0x33e14f['json']()['catch'](()=>({'message':_0x33e14f['statusText']}));throw new Error(_0x1d039e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x33e14f['json']();},async 'getBindings'(_0x1582fd={}){const _0x4ed6c2=new URLSearchParams();if(_0x1582fd['resource_type'])_0x4ed6c2['set']('resource_type',_0x1582fd['resource_type']);if(_0x1582fd['resource_id'])_0x4ed6c2['set']('resource_id',_0x1582fd['resource_id']);if(_0x1582fd['subject_type'])_0x4ed6c2['set']('subject_type',_0x1582fd['subject_type']);if(_0x1582fd['subject_id'])_0x4ed6c2['set']('subject_id',_0x1582fd['subject_id']);const _0x2c044c=_0x4ed6c2['toString'](),_0x328e2a=await fetch(API_BASE+'/bindings'+(_0x2c044c?'?'+_0x2c044c:''));if(!_0x328e2a['ok']){const _0xc046c5=await _0x328e2a['json']()['catch'](()=>({'message':_0x328e2a['statusText']}));throw new Error(_0xc046c5['message']||'Failed\x20to\x20get\x20bindings');}return await _0x328e2a['json']();},async 'createBinding'(_0x573ff9){const _0x434685=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573ff9)});if(!_0x434685['ok']){const _0x2dff8f=await _0x434685['json']()['catch'](()=>({'message':_0x434685['statusText']}));throw new Error(_0x2dff8f['message']||'Failed\x20to\x20create\x20binding');}return await _0x434685['json']();},async 'updateBinding'(_0x4cc9e0,_0x3e86fd){const _0x3c604f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4cc9e0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e86fd)});if(!_0x3c604f['ok']){const _0xe90504=await _0x3c604f['json']()['catch'](()=>({'message':_0x3c604f['statusText']}));throw new Error(_0xe90504['message']||'Failed\x20to\x20update\x20binding');}return await _0x3c604f['json']();},async 'deleteBinding'(_0x57aca8){const _0x32de74=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x57aca8),{'method':'DELETE'});if(!_0x32de74['ok']){const _0x177753=await _0x32de74['json']()['catch'](()=>({'message':_0x32de74['statusText']}));throw new Error(_0x177753['message']||'Failed\x20to\x20delete\x20binding');}return await _0x32de74['json']();},async 'getRoleDefinitions'(){const _0x561542=await fetch(API_BASE+'/roles');if(!_0x561542['ok']){const _0x136366=await _0x561542['json']()['catch'](()=>({'message':_0x561542['statusText']}));throw new Error(_0x136366['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x561542['json']();},async 'getRoleDefinition'(_0x1010d8){const _0x4b6e65=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1010d8));if(!_0x4b6e65['ok']){const _0x30f74b=await _0x4b6e65['json']()['catch'](()=>({'message':_0x4b6e65['statusText']}));throw new Error(_0x30f74b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b6e65['json']();},async 'createRoleDefinition'(_0xd0783){const _0x18d39a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0783)});if(!_0x18d39a['ok']){const _0x18d443=await _0x18d39a['json']()['catch'](()=>({'message':_0x18d39a['statusText']}));throw new Error(_0x18d443['message']||_0x18d443['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x18d39a['json']();},async 'updateRoleDefinition'(_0x130404,_0x1570cc){const _0x1ccdb2=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x130404),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1570cc)});if(!_0x1ccdb2['ok']){const _0x100775=await _0x1ccdb2['json']()['catch'](()=>({'message':_0x1ccdb2['statusText']}));throw new Error(_0x100775['message']||_0x100775['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1ccdb2['json']();},async 'deleteRoleDefinition'(_0x3c535e){const _0x28070c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3c535e),{'method':'DELETE'});if(!_0x28070c['ok']){const _0x45915a=await _0x28070c['json']()['catch'](()=>({'message':_0x28070c['statusText']}));throw new Error(_0x45915a['message']||_0x45915a['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28070c['json']();},async 'getAvailablePermissions'(){const _0x217ac8=await fetch(API_BASE+'/roles/available-permissions');if(!_0x217ac8['ok']){const _0x4ee09b=await _0x217ac8['json']()['catch'](()=>({'message':_0x217ac8['statusText']}));throw new Error(_0x4ee09b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x217ac8['json']();},async 'getGitProviderAllowedTeams'(_0x540c3f){const _0x3be5e2=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x540c3f)+'/allowed-teams');if(!_0x3be5e2['ok']){const _0x2ce505=await _0x3be5e2['json']()['catch'](()=>({'message':_0x3be5e2['statusText']}));throw new Error(_0x2ce505['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3be5e2['json']();},async 'setGitProviderAllowedTeams'(_0x16ea37,_0x390231){const _0x28e94c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x16ea37)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x390231})});if(!_0x28e94c['ok']){const _0x3bc565=await _0x28e94c['json']()['catch'](()=>({'message':_0x28e94c['statusText']}));throw new Error(_0x3bc565['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x28e94c['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 _0x2c7df2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x514f94=>{_0x514f94['el']['style']['bottom']=_0x2c7df2+'px';const _0x46d599=_0x514f94['el']['offsetHeight']||toastState['defaultHeight'];_0x2c7df2+=_0x46d599+toastState['gap'];});});}function removeToastById(_0x1b3d53){const _0x63c431=toastState['toasts']['findIndex'](_0x585569=>_0x585569['id']===_0x1b3d53);if(_0x63c431===-0x1)return;const _0x296994=toastState['toasts'][_0x63c431];if(_0x296994['timeoutId'])clearTimeout(_0x296994['timeoutId']);_0x296994['el']['classList']['remove']('show'),setTimeout(()=>_0x296994['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x63c431,0x1),repositionAllToasts();}function registerToast(_0x13b131){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x13b131),repositionAllToasts(),_0x13b131['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(_0x48467e){if(_0x48467e===null||_0x48467e===undefined)return'';return String(_0x48467e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x1dde34,_0xf304ab){if(_0x1dde34&&typeof _0x1dde34==='object'&&!Array['isArray'](_0x1dde34))return{'code':typeof _0x1dde34['text']==='string'?_0x1dde34['text']:'','language':typeof _0x1dde34['lang']==='string'?_0x1dde34['lang']:''};return{'code':typeof _0x1dde34==='string'?_0x1dde34:'','language':typeof _0xf304ab==='string'?_0xf304ab:''};}function buildMermaidBlock(_0x5cf822){const _0x236fd5=String(_0x5cf822||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x236fd5))+'\x22>'+escapeHtmlValue(_0x236fd5)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x58e1df=new marked['Renderer'](),_0xda8391=_0x58e1df['code']['bind'](_0x58e1df);return _0x58e1df['code']=function(_0x200ac0,_0x28c48e,..._0x56ac54){const {code:_0x442bf7,language:_0x1e6c6e}=getMarkdownCodeBlockPayload(_0x200ac0,_0x28c48e),_0x3d4725=String(_0x1e6c6e||'')['trim']()['toLowerCase']();if(_0x3d4725==='mermaid')return buildMermaidBlock(_0x442bf7);const _0xbc3dd0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xbc3dd0&&_0x3d4725)try{const _0x1bc6e6=_0xbc3dd0['getLanguage'](_0x3d4725)?_0x3d4725:'plaintext',_0x5e1d8b=_0xbc3dd0['highlight'](_0x442bf7,{'language':_0x1bc6e6})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3d4725)+'\x22>'+_0x5e1d8b+'</code></pre>';}catch(_0x11e929){console['error']('Syntax\x20highlighting\x20error:',_0x11e929);}return _0xda8391(_0x200ac0,_0x28c48e,..._0x56ac54);},sharedMarkedRenderer=_0x58e1df,_0x58e1df;}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 _0x5ee7a5=window['mermaid'];if(!_0x5ee7a5||typeof _0x5ee7a5['initialize']!=='function')return _0x5ee7a5||null;return _0x5ee7a5['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5ee7a5;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x54ba48,_0x39a132)=>{const _0x12e508=()=>_0x54ba48(configureMermaidInstance()),_0x2cdb05=()=>{mermaidLoadPromise=null,_0x39a132(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x32bae7=document['getElementById'](MERMAID_SCRIPT_ID);!_0x32bae7&&(_0x32bae7=document['createElement']('script'),_0x32bae7['id']=MERMAID_SCRIPT_ID,_0x32bae7['src']=MERMAID_SCRIPT_SRC,_0x32bae7['async']=!![],document['head']['appendChild'](_0x32bae7));if(window['mermaid']){_0x12e508();return;}_0x32bae7['addEventListener']('load',_0x12e508,{'once':!![]}),_0x32bae7['addEventListener']('error',_0x2cdb05,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2ac6dd){const _0x41a535=_0x2ac6dd['getAttribute']('data-mermaid-source');if(!_0x41a535)return null;let _0x3c82aa=_0x41a535;try{_0x3c82aa=decodeURIComponent(_0x41a535);}catch{}return _0x2ac6dd['textContent']=_0x3c82aa,_0x2ac6dd['removeAttribute']('data-processed'),_0x2ac6dd['removeAttribute']('aria-roledescription'),_0x2ac6dd['removeAttribute']('role'),_0x2ac6dd['removeAttribute']('aria-label'),_0x3c82aa;}function collectMermaidNodes(_0x5ab631,_0x425570){if(!(_0x5ab631 instanceof Element))return;_0x5ab631['matches']('.mermaid[data-mermaid-source]')&&_0x425570['add'](_0x5ab631),_0x5ab631['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x30a434=>{_0x425570['add'](_0x30a434);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x588889=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x273839=>setTimeout(_0x273839,0x0);_0x588889(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x36e478=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x36e478);});});}function queueMermaidRender(_0x364334){const _0x3bc194=new Set();_0x364334 instanceof Document||_0x364334 instanceof DocumentFragment?_0x364334['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1822a5=>_0x3bc194['add'](_0x1822a5)):collectMermaidNodes(_0x364334,_0x3bc194);if(_0x3bc194['size']===0x0)return;_0x3bc194['forEach'](_0x433a1b=>pendingMermaidNodes['add'](_0x433a1b)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5affb3=Array['from'](pendingMermaidNodes)['filter'](_0x143eb7=>_0x143eb7['isConnected']);pendingMermaidNodes['clear']();if(_0x5affb3['length']===0x0)return;const _0xbf1a66=await loadMermaid();if(!_0xbf1a66)return;configureMermaidInstance();const _0x3d12b6=getMermaidTheme();for(const _0x4d6428 of _0x5affb3){const _0x54a36e=_0x4d6428['getAttribute']('data-mermaid-source');if(!_0x54a36e)continue;const _0x4004ce=_0x4d6428['getAttribute']('data-processed')==='true';if(_0x4004ce&&_0x4d6428['dataset']['mermaidTheme']===_0x3d12b6)continue;restoreMermaidSource(_0x4d6428);try{if(typeof _0xbf1a66['run']==='function')await _0xbf1a66['run']({'nodes':[_0x4d6428]});else typeof _0xbf1a66['init']==='function'&&_0xbf1a66['init'](undefined,[_0x4d6428]);_0x4d6428['dataset']['mermaidTheme']=_0x3d12b6,delete _0x4d6428['dataset']['mermaidError'];}catch(_0x12717b){console['error']('Mermaid\x20render\x20failed:',_0x12717b),restoreMermaidSource(_0x4d6428),_0x4d6428['dataset']['mermaidError']='true',delete _0x4d6428['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x21c930=>{_0x21c930['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x21c930);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x53d410=>{_0x53d410['forEach'](_0x2f7e52=>{_0x2f7e52['addedNodes']['forEach'](_0x3f4003=>{_0x3f4003['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3f4003);});});}),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'(_0x7753c1){const _0x4cab0a=new Date(_0x7753c1),_0x3b3430=new Date(),_0x446c41=_0x3b3430-_0x4cab0a,_0x457f1b=Math['floor'](_0x446c41/0x3e8),_0x310330=Math['floor'](_0x457f1b/0x3c),_0x1daef8=Math['floor'](_0x310330/0x3c),_0x22166a=Math['floor'](_0x1daef8/0x18);if(_0x457f1b<0x3c)return'now';if(_0x310330<0x3c)return _0x310330+'m\x20ago';if(_0x1daef8<0x18)return _0x1daef8+'h\x20ago';return _0x22166a+'d\x20ago';},'getStatusIcon'(_0x2145cc){switch(_0x2145cc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x18ceac){switch(_0x18ceac){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'(_0x1e133c,_0x2b285e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x8505b0={};_0x8505b0['text/plain']=new Blob([_0x1e133c],{'type':'text/plain'});_0x2b285e&&(_0x8505b0['text/html']=new Blob([_0x2b285e],{'type':'text/html'}));const _0x45097b=new ClipboardItem(_0x8505b0);return await navigator['clipboard']['write']([_0x45097b]),!![];}catch(_0x2c7039){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2c7039);}try{const _0x17f034=_0x302084=>{_0x302084['preventDefault'](),_0x302084['clipboardData']['setData']('text/plain',_0x1e133c),_0x2b285e&&_0x302084['clipboardData']['setData']('text/html',_0x2b285e);};document['addEventListener']('copy',_0x17f034);const _0x1a3414=document['execCommand']('copy');document['removeEventListener']('copy',_0x17f034);if(_0x1a3414)return!![];}catch(_0x4d1342){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4d1342);}try{const _0x3c27cc=document['createElement']('textarea');_0x3c27cc['value']=_0x1e133c,_0x3c27cc['style']['position']='fixed',_0x3c27cc['style']['opacity']='0',_0x3c27cc['style']['pointerEvents']='none',document['body']['appendChild'](_0x3c27cc),_0x3c27cc['select']();const _0x3a786f=document['execCommand']('copy');return document['body']['removeChild'](_0x3c27cc),_0x3a786f;}catch(_0x3b8c11){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3b8c11),![];}},'showToast'(_0x3c0a60,_0x14c655='info'){const _0x4aeef2=getNextToastId(),_0x7783d9=document['createElement']('div');_0x7783d9['className']='toast\x20toast-'+_0x14c655,_0x7783d9['textContent']=_0x3c0a60,_0x7783d9['dataset']['toastId']=_0x4aeef2,document['body']['appendChild'](_0x7783d9);const _0x32109a=_0x14c655==='error'?0x2710:0xbb8,_0x1b6524=setTimeout(()=>{removeToastById(_0x4aeef2);},_0x32109a),_0xc0b3be={'id':_0x4aeef2,'el':_0x7783d9,'timeoutId':_0x1b6524};return registerToast(_0xc0b3be),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x7783d9['classList']['add']('show');});}),_0x4aeef2;},'showError'(_0x2c9233){console['error'](_0x2c9233);const _0x18a4ff=typeof _0x2c9233==='string'?_0x2c9233:_0x2c9233['message']||'An\x20error\x20occurred';this['showToast'](_0x18a4ff,'error');},'showSuccess'(_0x3fc305){this['showToast'](_0x3fc305,'success');},'capitalize'(_0x4e38b7){if(!_0x4e38b7)return'';return _0x4e38b7['charAt'](0x0)['toUpperCase']()+_0x4e38b7['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3579a7){return escapeHtmlValue(_0x3579a7);},'ansiToHtml'(_0x354bf1){if(_0x354bf1===null||_0x354bf1===undefined)return'';let _0x5add83=this['escapeHtml'](_0x354bf1);const _0x167147={'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'},_0x2d70c9={'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 _0x2e4a62=0x0;return _0x5add83=_0x5add83['replace'](/\x1b\[([0-9;]*)m/g,(_0x5632a6,_0x28e4f2)=>{if(!_0x28e4f2||_0x28e4f2==='0'){const _0x47e5a5='</span>'['repeat'](_0x2e4a62);return _0x2e4a62=0x0,_0x47e5a5;}const _0xf2d713=_0x28e4f2['split'](';'),_0x417497=[];for(const _0x49d82d of _0xf2d713){if(_0x49d82d==='1')_0x417497['push']('font-weight:bold');else{if(_0x49d82d==='2')_0x417497['push']('opacity:0.7');else{if(_0x49d82d==='3')_0x417497['push']('font-style:italic');else{if(_0x49d82d==='4')_0x417497['push']('text-decoration:underline');else{if(_0x49d82d==='9')_0x417497['push']('text-decoration:line-through');else{if(_0x167147[_0x49d82d])_0x417497['push']('color:'+_0x167147[_0x49d82d]);else{if(_0x2d70c9[_0x49d82d])_0x417497['push']('background-color:'+_0x2d70c9[_0x49d82d]);}}}}}}}if(_0x417497['length']>0x0)return _0x2e4a62++,'<span\x20style=\x22'+_0x417497['join'](';')+'\x22>';return'';}),_0x5add83+='</span>'['repeat'](_0x2e4a62),_0x5add83=_0x5add83['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4bf293,_0x2796ce)=>{if(!_0x2796ce||_0x2796ce==='0')return'';const _0x551465=_0x2796ce['split'](';'),_0x5e51b5=[];for(const _0x221e7c of _0x551465){if(_0x221e7c==='1')_0x5e51b5['push']('font-weight:bold');else{if(_0x167147[_0x221e7c])_0x5e51b5['push']('color:'+_0x167147[_0x221e7c]);else{if(_0x2d70c9[_0x221e7c])_0x5e51b5['push']('background-color:'+_0x2d70c9[_0x221e7c]);}}}if(_0x5e51b5['length']>0x0)return'<span\x20style=\x22'+_0x5e51b5['join'](';')+'\x22>';return'';}),_0x5add83;},'showModal'({title:_0x28120e,content:_0x2acf69,buttons:buttons=[]}){const _0x408a1c='\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'](_0x28120e)+'</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'+_0x2acf69+'\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']((_0x13e544,_0x6f07b8)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13e544['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x6f07b8+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13e544['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',_0x3ab3ca=document['createElement']('div');_0x3ab3ca['id']='utils-modal',_0x3ab3ca['className']='modal',_0x3ab3ca['innerHTML']=_0x408a1c,document['body']['appendChild'](_0x3ab3ca);const _0x45d1f1=document['getElementById']('utils-modal-close');_0x45d1f1&&_0x45d1f1['addEventListener']('click',()=>this['hideModal']());const _0x149f59=_0x3ab3ca['querySelectorAll']('[data-btn-index]');_0x149f59['forEach'](_0x42580c=>{const _0x589a8b=parseInt(_0x42580c['dataset']['btnIndex']);buttons[_0x589a8b]?.['onClick']&&_0x42580c['addEventListener']('click',buttons[_0x589a8b]['onClick']);});const _0x180883=document['getElementById']('utils-modal-overlay');_0x180883&&_0x180883['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x22768d=document['getElementById']('utils-modal');_0x22768d&&_0x22768d['remove']();},'parseKeyValuePairs'(_0x2fdc04){const _0x4a0cc5={};if(!_0x2fdc04)return _0x4a0cc5;return _0x2fdc04['split'](/\r?\n/)['map'](_0x57e6be=>_0x57e6be['trim']())['filter'](Boolean)['forEach'](_0x39a57d=>{const _0x3004c8=_0x39a57d['indexOf']('=');if(_0x3004c8>0x0){const _0x2a6e6d=_0x39a57d['slice'](0x0,_0x3004c8)['trim'](),_0x4a9f4a=_0x39a57d['slice'](_0x3004c8+0x1)['trim']();if(_0x2a6e6d)_0x4a0cc5[_0x2a6e6d]=_0x4a9f4a;}}),_0x4a0cc5;},'debounce'(_0x461af5,_0x2d914c=0xfa){let _0x5cf667=null;return(..._0x4a3785)=>{clearTimeout(_0x5cf667),_0x5cf667=setTimeout(()=>_0x461af5['apply'](this,_0x4a3785),_0x2d914c);};},'formatTimestamp'(_0x2f62e2){if(!_0x2f62e2)return'N/A';const _0x498ad4=new Date(_0x2f62e2);return _0x498ad4['toLocaleDateString']()+'\x20'+_0x498ad4['toLocaleTimeString']();},'getQueryParams'(){const _0x2f518f=new URLSearchParams(window['location']['search']),_0x47bfff={};for(const [_0x3cf73c,_0x5c18ce]of _0x2f518f){_0x47bfff[_0x3cf73c]=_0x5c18ce;}return _0x47bfff;},'formatDuration'(_0x485e59,_0x5b8e7c){if(!_0x485e59)return'N/A';const _0x137afa=new Date(_0x485e59),_0xb6a7b6=_0x5b8e7c?new Date(_0x5b8e7c):new Date(),_0x388b58=_0xb6a7b6-_0x137afa;if(_0x388b58<0x0)return'0s';const _0x54f05c=Math['floor'](_0x388b58/0x3e8),_0x113daf=Math['floor'](_0x54f05c/0x3c),_0x39a85e=Math['floor'](_0x113daf/0x3c),_0x2a6c66=Math['floor'](_0x39a85e/0x18);if(_0x54f05c<0x3c)return _0x54f05c+'s';if(_0x113daf<0x3c)return _0x113daf+'m\x20'+_0x54f05c%0x3c+'s';if(_0x39a85e<0x18)return _0x39a85e+'h\x20'+_0x113daf%0x3c+'m\x20'+_0x54f05c%0x3c+'s';return _0x2a6c66+'d\x20'+_0x39a85e%0x18+'h\x20'+_0x113daf%0x3c+'m';},'renderMarkdown'(_0x57c5b4,_0x29aa3d={}){if(!_0x57c5b4)return'';_0x57c5b4=this['rewriteAttachmentLinks'](_0x57c5b4,_0x29aa3d),_0x57c5b4=this['rewriteColorSyntax'](_0x57c5b4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x57c5b4);}catch(_0x2eadba){return console['error']('Markdown\x20parsing\x20error:',_0x2eadba),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);}},'rewriteAttachmentLinks'(_0x23bcca,_0x1373e8={}){const _0x1c5805=typeof _0x1373e8['resolveAttachmentUrl']==='function'?_0x1373e8['resolveAttachmentUrl']:_0x1373e8['taskId']?_0xbc8dff=>API_BASE+'/tasks/'+_0x1373e8['taskId']+'/attachments/'+encodeURIComponent(_0xbc8dff):null;if(!_0x1c5805)return _0x23bcca;return String(_0x23bcca)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x4b8676,_0xbf7ba8)=>{const _0x33322c=String(_0xbf7ba8||'')['trim']();if(!_0x33322c)return _0x4b8676;let _0x13c285=_0x33322c;try{_0x13c285=decodeURIComponent(_0x33322c);}catch{}const _0xc2734f=_0x1c5805(_0x13c285);if(!_0xc2734f)return _0x4b8676;return']('+_0xc2734f+')';});},'rewriteColorSyntax'(_0x319299){if(!_0x319299)return _0x319299;return String(_0x319299)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x57481b,_0x7cb34d,_0x5acc3f)=>{const _0x26a54e=this['rewriteColorSyntax'](_0x5acc3f);return'<span\x20style=\x22color:\x20'+_0x7cb34d+'\x22>'+_0x26a54e+'</span>';});},'renderMarkdownFallback'(_0x265810,_0x1c5e89={}){if(!_0x265810)return'';_0x265810=_0x265810['replace'](/\r\n/g,'\x0a'),_0x265810=_0x265810['replace'](/\r/g,'\x0a'),_0x265810=this['rewriteAttachmentLinks'](_0x265810,_0x1c5e89);let _0x5aa14f=this['escapeHtml'](_0x265810);return _0x5aa14f=_0x5aa14f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5aa14f=_0x5aa14f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5aa14f=_0x5aa14f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5aa14f=_0x5aa14f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5aa14f=_0x5aa14f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5aa14f=_0x5aa14f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5aa14f=_0x5aa14f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5aa14f=_0x5aa14f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5aa14f=_0x5aa14f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5aa14f=_0x5aa14f['replace'](/\n\n/g,'</p><p>'),_0x5aa14f=_0x5aa14f['replace'](/\n/g,'<br>'),'<p>'+_0x5aa14f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3e7737=new Uint8Array(0x10);crypto['getRandomValues'](_0x3e7737),_0x3e7737[0x6]=_0x3e7737[0x6]&0xf|0x40,_0x3e7737[0x8]=_0x3e7737[0x8]&0x3f|0x80;const _0x456268=Array['from'](_0x3e7737,_0x2793ac=>_0x2793ac['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x456268['slice'](0x0,0x8)+'-'+_0x456268['slice'](0x8,0xc)+'-'+_0x456268['slice'](0xc,0x10)+'-'+_0x456268['slice'](0x10,0x14)+'-'+_0x456268['slice'](0x14);}};export class CustomSelect{constructor(_0x4ba0aa,_0xb1602e={}){this['nativeSelect']=_0x4ba0aa,this['options']=_0xb1602e,this['isOpen']=![],this['selectedValue']=_0x4ba0aa['value']||'',this['searchable']=_0xb1602e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1d8bcb=document['createElement']('div');_0x1d8bcb['className']='custom-select';const _0x181694=document['createElement']('div');_0x181694['className']='custom-select-trigger',_0x181694['setAttribute']('tabindex','0'),_0x181694['setAttribute']('role','button'),_0x181694['setAttribute']('aria-haspopup','listbox');const _0x545d97=document['createElement']('span');_0x545d97['className']='custom-select-trigger-text';const _0x7274db=document['createElement']('span');_0x7274db['className']='custom-select-arrow',_0x7274db['textContent']='▼',_0x181694['appendChild'](_0x545d97),_0x181694['appendChild'](_0x7274db);const _0x85dfc7=document['createElement']('div');_0x85dfc7['className']='custom-select-dropdown',_0x85dfc7['setAttribute']('role','listbox');if(this['searchable']){const _0x2bcfc1=document['createElement']('div');_0x2bcfc1['className']='custom-select-search';const _0x2344f5=document['createElement']('input');_0x2344f5['type']='text',_0x2344f5['className']='custom-select-search-input',_0x2344f5['placeholder']='Type\x20to\x20search...',_0x2344f5['setAttribute']('aria-label','Search\x20options'),_0x2344f5['addEventListener']('input',_0x367375=>{this['searchQuery']=_0x367375['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2344f5['addEventListener']('keydown',_0x400415=>{if(_0x400415['key']==='Escape')_0x400415['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x400415['key']==='Enter'){_0x400415['preventDefault'](),_0x400415['stopPropagation']();const _0x33b5c4=_0x85dfc7['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x33b5c4){const _0x4895ac=_0x33b5c4['getAttribute']('data-value');this['select'](_0x4895ac);}}}}),_0x2bcfc1['appendChild'](_0x2344f5),_0x85dfc7['appendChild'](_0x2bcfc1),this['searchInput']=_0x2344f5;}const _0x39083b=document['createElement']('div');_0x39083b['className']='custom-select-options',_0x85dfc7['appendChild'](_0x39083b),_0x1d8bcb['appendChild'](_0x181694),_0x1d8bcb['appendChild'](_0x85dfc7),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1d8bcb,this['nativeSelect']),this['wrapper']=_0x1d8bcb,this['trigger']=_0x181694,this['triggerText']=_0x545d97,this['dropdown']=_0x85dfc7,this['optionsContainer']=_0x39083b,_0x181694['addEventListener']('click',()=>this['toggle']()),_0x181694['addEventListener']('keydown',_0x48ea34=>this['handleKeydown'](_0x48ea34)),document['addEventListener']('click',_0x38bc4d=>{!_0x1d8bcb['contains'](_0x38bc4d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d7e15=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d7e15['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de653=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de653['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x322aff=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x322aff['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x553893=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x553893),this['trigger']['setAttribute']('aria-disabled',_0x553893?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x553893?'-1':'0'),_0x553893&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x212276=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bea96=_0x212276['filter'](_0x672fec=>!_0x672fec['disabled']&&!_0x672fec['hidden']);_0x212276['forEach']((_0x39cac4,_0x33750f)=>{const _0x491c33=document['createElement']('div');_0x491c33['className']='custom-select-option',_0x491c33['textContent']=_0x39cac4['textContent'],_0x491c33['setAttribute']('data-value',_0x39cac4['value']),_0x491c33['setAttribute']('data-index',_0x33750f),_0x491c33['setAttribute']('role','option'),_0x39cac4['disabled']?_0x491c33['classList']['add']('disabled'):_0x491c33['addEventListener']('click',()=>this['select'](_0x39cac4['value'])),_0x39cac4['value']===this['selectedValue']&&_0x491c33['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x491c33),this['allOptions']['push']({'element':_0x491c33,'text':_0x39cac4['textContent']['toLowerCase'](),'value':_0x39cac4['value'],'disabled':_0x39cac4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x91bcce=this['searchInput']['parentElement'];_0x5bea96['length']>0x3?_0x91bcce['style']['display']='':_0x91bcce['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x14f418=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x317ee8=>{if(!_0x14f418||_0x317ee8['disabled'])_0x317ee8['element']['style']['display']='';else{const _0x100b89=_0x317ee8['text']['includes'](_0x14f418);_0x317ee8['element']['style']['display']=_0x100b89?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1ba69b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1ba69b,this['nativeSelect']['value']=_0x1ba69b;const _0xc7df24=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xc7df24),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x7be585=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x7be585&&(this['triggerText']['textContent']=_0x7be585['textContent'],_0x7be585['disabled']||_0x7be585['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x46a1c7=>{_0x46a1c7['getAttribute']('data-value')===this['selectedValue']?_0x46a1c7['classList']['add']('selected'):_0x46a1c7['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 _0x560474=window['getComputedStyle'](this['dropdown']);if(_0x560474['position']==='fixed'){const _0x3eefb7=this['trigger']['getBoundingClientRect'](),_0x5bca16=parseInt(_0x560474['maxHeight'])||0xc8,_0x2b058d=window['innerHeight'],_0x4b84d7=_0x2b058d-_0x3eefb7['bottom'],_0x4b8d29=_0x3eefb7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x823cce;_0x4b84d7<_0x5bca16&&_0x4b8d29>_0x4b84d7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2b058d-_0x3eefb7['top']+'px',_0x823cce=Math['min'](_0x5bca16,_0x4b8d29-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3eefb7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x823cce=Math['min'](_0x5bca16,_0x4b84d7-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px');if(this['optionsContainer']){let _0x3fa932=_0x823cce;if(this['searchInput']){const _0x251064=this['searchInput']['parentElement'];_0x251064&&(_0x3fa932-=_0x251064['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3fa932)+'px';}this['dropdown']['style']['left']=_0x3eefb7['left']+'px',this['dropdown']['style']['width']=_0x3eefb7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x51b22a=this['searchInput']['parentElement'];_0x51b22a&&_0x51b22a['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'](_0x276090){if(this['nativeSelect']['disabled'])return;if(_0x276090['key']==='Enter'||_0x276090['key']==='\x20')_0x276090['preventDefault'](),this['toggle']();else _0x276090['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xc4c876='\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',_0xc4c876),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x50f7ea=document['getElementById']('confirm-dialog-close'),_0x1fe819=document['getElementById']('confirm-dialog-cancel'),_0x7bf9f3=document['getElementById']('confirm-dialog-confirm'),_0x4a2964=this['_modal']['querySelector']('.modal-overlay');_0x50f7ea['addEventListener']('click',()=>this['_resolve'](![])),_0x1fe819['addEventListener']('click',()=>this['_resolve'](![])),_0x7bf9f3['addEventListener']('click',()=>this['_resolve'](!![])),_0x4a2964['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x6cfb4b=>{if(_0x6cfb4b['key']==='Escape')_0x6cfb4b['preventDefault'](),this['_resolve'](![]);else _0x6cfb4b['key']==='Enter'&&(_0x6cfb4b['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x14eda1,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x532bf0=>{this['_resolvePromise']=_0x532bf0,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x14eda1;const _0x3d3d45=document['getElementById']('confirm-dialog-cancel'),_0xa40fd8=document['getElementById']('confirm-dialog-confirm');_0x3d3d45['textContent']=cancelText,_0xa40fd8['textContent']=confirmText,_0xa40fd8['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xa40fd8['focus']();});},'_resolve'(_0x3bde65){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3bde65),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x578a50,_0xd1956e={}){this['container']=_0x578a50,this['options']={'placeholder':_0xd1956e['placeholder']||'Type\x20to\x20search...','maxItems':_0xd1956e['maxItems']||0x64,'loadItems':_0xd1956e['loadItems']||(async()=>[]),'renderItem':_0xd1956e['renderItem']||(_0x4c6ad2=>({'primary':String(_0x4c6ad2),'secondary':''})),'onSelect':_0xd1956e['onSelect']||(()=>{}),'filterItems':_0xd1956e['filterItems']||null,'getItemValue':_0xd1956e['getItemValue']||(_0x5f5433=>_0x5f5433),'sortItems':_0xd1956e['sortItems']||null,'debounceMs':_0xd1956e['debounceMs']||0xc8,'minCharsForSearch':_0xd1956e['minCharsForSearch']||0x0,'emptyMessage':_0xd1956e['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xd1956e['loadingMessage']||'Loading...','preload':_0xd1956e['preload']!==![],'searchMode':_0xd1956e['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',_0x54ebfe=>this['onBlur'](_0x54ebfe)),this['input']['addEventListener']('input',_0x23f92d=>this['onInput'](_0x23f92d)),this['input']['addEventListener']('keydown',_0x5fa10e=>this['onKeydown'](_0x5fa10e)),this['clearBtn']['addEventListener']('mousedown',_0x4767ae=>{_0x4767ae['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x32c14c=>{_0x32c14c['preventDefault']();}),document['addEventListener']('click',_0x3cf8b7=>{!this['wrapper']['contains'](_0x3cf8b7['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(_0x9264b6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x9264b6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x300865){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x446e13){const _0x2fd65b=_0x446e13['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2fd65b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2fd65b):this['loadAndShow'](_0x2fd65b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50ba6e){switch(_0x50ba6e['key']){case'ArrowDown':_0x50ba6e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50ba6e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50ba6e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50ba6e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0xc758a7){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x15980d=this['selectedIndex']+_0xc758a7;if(_0x15980d>=0x0&&_0x15980d<this['filteredItems']['length']){this['selectedIndex']=_0x15980d,this['updateSelectionHighlight']();const _0xf0b157=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xf0b157[this['selectedIndex']]&&_0xf0b157[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1f2cff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1f2cff['forEach']((_0x3d63c3,_0x268cf4)=>{_0x3d63c3['classList']['toggle']('keyboard-selected',_0x268cf4===this['selectedIndex']);});}async['loadAndShow'](_0x564278){this['showLoading']();try{const _0x124bd0=await this['options']['loadItems'](_0x564278);if(this['options']['searchMode']==='server'){let _0x34ba0a=_0x124bd0;this['options']['sortItems']&&(_0x34ba0a=this['options']['sortItems']([..._0x124bd0]));this['filteredItems']=_0x34ba0a;const _0x3d68c0=this['filteredItems']['length']>=this['options']['maxItems'];_0x3d68c0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3d68c0),this['open']();}else this['allItems']=_0x124bd0,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x564278);}catch(_0x2ea222){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2ea222),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3fdf31){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3fdf31):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x41e142=this['filteredItems']['length']>=this['options']['maxItems'];_0x41e142&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x41e142),this['open']();}['renderItems'](_0x5647c8){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']((_0x5a8b74,_0x1d8086)=>{const _0x1f6542=document['createElement']('div');_0x1f6542['className']='autocomplete-select-item',_0x1f6542['setAttribute']('role','option'),_0x1f6542['setAttribute']('data-index',_0x1d8086);const _0x5850c2=this['options']['renderItem'](_0x5a8b74);let _0x4c1510='';_0x5850c2['icon']&&(_0x4c1510='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5850c2['iconClass']||'')+'\x22>'+_0x5850c2['icon']+'</span>'),_0x1f6542['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4c1510+'\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'](_0x5850c2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5850c2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5850c2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1f6542['addEventListener']('click',()=>{this['selectItem'](_0x5a8b74);}),_0x1f6542['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1d8086,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1f6542);}),_0x5647c8?(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'](_0x2d472c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2d472c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4d9e15){this['selectedItem']=_0x4d9e15;const _0x28f65a=this['options']['renderItem'](_0x4d9e15);this['input']['value']=_0x28f65a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4d9e15);}['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'](_0x33f3e6){if(_0x33f3e6){this['selectedItem']=_0x33f3e6;const _0x596016=this['options']['renderItem'](_0x33f3e6);this['input']['value']=_0x596016['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x488c8f){this['allItems']=_0x488c8f,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'](_0x1a0a80){this['input']['placeholder']=_0x1a0a80;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x107d43=null){const _0x49cc20=document['getElementById']('admin-menu-container'),_0x50e319=document['getElementById']('admin-menu-btn'),_0x539fc0=document['getElementById']('admin-menu');if(!_0x49cc20||!_0x50e319||!_0x539fc0)return;try{!_0x107d43&&(_0x107d43=await API['getCurrentUser']());if(_0x107d43){const _0x19d5a0=window['Permissions'],_0x227b3c=_0x19d5a0['hasServerPermission'](_0x107d43,'*')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:manage')||_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')||_0x19d5a0['hasTeamPermission'](_0x107d43,'teams:manage')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:view_details');if(!_0x227b3c)return;_0x49cc20['hidden']=![];if(!_0x19d5a0['hasServerPermission'](_0x107d43,'*')){const _0xd61a2a=_0x539fc0['querySelectorAll']('.admin-menu-item');_0xd61a2a['forEach'](_0x2460a0=>{const _0x3eda7c=_0x2460a0['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3eda7c==='Users'&&!_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Skills'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Settings'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Administration'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Git\x20History'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Roles'&&(_0x2460a0['hidden']=!![]);});}_0x50e319['addEventListener']('click',_0x29e195=>{_0x29e195['stopPropagation']();const _0x658df7=document['getElementById']('actions-menu');if(_0x658df7)_0x658df7['hidden']=!![];_0x539fc0['hidden']=!_0x539fc0['hidden'];}),document['addEventListener']('click',_0x3c7f5a=>{!_0x539fc0['hidden']&&!_0x50e319['contains'](_0x3c7f5a['target'])&&!_0x539fc0['contains'](_0x3c7f5a['target'])&&(_0x539fc0['hidden']=!![]);}),document['addEventListener']('keydown',_0x218238=>{_0x218238['key']==='Escape'&&!_0x539fc0['hidden']&&(_0x539fc0['hidden']=!![]);});}}catch(_0x513bfd){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x513bfd['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|