@profoundlogic/coderflow-server 0.6.8 → 0.7.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/Dockerfile +3 -0
- package/dist/base-image/entrypoint.sh +13 -0
- package/dist/base-image/standard-instructions/ibmi-database-sql.md +11 -0
- package/dist/base-image/standard-instructions/ibmi-exploratory-verification.md +38 -0
- package/dist/base-image/standard-instructions/ibmi-output-requirements.md +6 -0
- package/dist/base-image/standard-instructions/output-requirements.md +18 -0
- package/dist/base-image/standard-instructions/screenshot-guidelines.md +17 -0
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.css +21 -0
- package/dist/web-ui/public/environments.html +79 -9
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +52 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +43 -5
- 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 _0x16a5bb=window['location']['pathname'],_0x1166bd=_0x16a5bb['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1166bd)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1166bd[0x1]),_0x1166bd[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xdab3ea={}){const _0x57cd7f=new URLSearchParams();_0xdab3ea['userId']&&_0x57cd7f['set']('userId',String(_0xdab3ea['userId']));_0xdab3ea['automation']&&_0x57cd7f['set']('automation',String(_0xdab3ea['automation']));const _0x2b6e9b=API_BASE+'/tasks/stats'+(_0x57cd7f['toString']()?'?'+_0x57cd7f['toString']():''),_0x4a0fb3=await fetch(_0x2b6e9b);if(!_0x4a0fb3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a0fb3['statusText']);return await _0x4a0fb3['json']();},async 'getTasks'(_0x4ba6d4={}){const _0x10309b=new URLSearchParams();_0x4ba6d4['status']&&_0x10309b['set']('status',String(_0x4ba6d4['status']));_0x4ba6d4['environment']&&_0x10309b['set']('environment',String(_0x4ba6d4['environment']));_0x4ba6d4['automation']&&_0x10309b['set']('automation',String(_0x4ba6d4['automation']));if(_0x4ba6d4['include']){const _0x2487d4=Array['isArray'](_0x4ba6d4['include'])?_0x4ba6d4['include']['join'](','):String(_0x4ba6d4['include']);_0x2487d4&&_0x10309b['set']('include',_0x2487d4);}_0x4ba6d4['filter']&&_0x10309b['set']('filter',String(_0x4ba6d4['filter']));_0x4ba6d4['page']&&_0x10309b['set']('page',String(_0x4ba6d4['page']));_0x4ba6d4['limit']&&_0x10309b['set']('limit',String(_0x4ba6d4['limit']));_0x4ba6d4['userId']&&_0x10309b['set']('userId',String(_0x4ba6d4['userId']));_0x4ba6d4['search']&&_0x10309b['set']('search',String(_0x4ba6d4['search']));_0x4ba6d4['includeChildTasks']&&_0x10309b['set']('includeChildTasks','true');const _0x452868=API_BASE+'/tasks'+(_0x10309b['toString']()?'?'+_0x10309b['toString']():''),_0x4a1414=await fetch(_0x452868);if(!_0x4a1414['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4a1414['statusText']);return await _0x4a1414['json']();},async 'getAutomations'(_0x5b0899={}){const _0x582c33=new URLSearchParams();_0x5b0899['environment']&&_0x582c33['set']('environment',String(_0x5b0899['environment']));const _0x427adf=await fetch(API_BASE+'/api/automations'+(_0x582c33['toString']()?'?'+_0x582c33['toString']():''));if(!_0x427adf['ok']){const _0x4e17ac=await _0x427adf['json']()['catch'](()=>({}));throw new Error(_0x4e17ac['message']||_0x4e17ac['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x427adf['statusText']);}return await _0x427adf['json']();},async 'getAutomation'(_0x29324e){const _0x222d77=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29324e));if(!_0x222d77['ok']){const _0x52209b=await _0x222d77['json']()['catch'](()=>({}));throw new Error(_0x52209b['message']||_0x52209b['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x222d77['statusText']);}return await _0x222d77['json']();},async 'createAutomation'(_0x3e7812){const _0x4e5ad9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e7812||{})});if(!_0x4e5ad9['ok']){const _0x2dac86=await _0x4e5ad9['json']()['catch'](()=>({}));throw new Error(_0x2dac86['message']||_0x2dac86['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x4e5ad9['statusText']);}return await _0x4e5ad9['json']();},async 'updateAutomation'(_0x77de56,_0x1b743f){const _0x5e02c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x77de56),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b743f||{})});if(!_0x5e02c3['ok']){const _0xa9a115=await _0x5e02c3['json']()['catch'](()=>({}));throw new Error(_0xa9a115['message']||_0xa9a115['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5e02c3['statusText']);}return await _0x5e02c3['json']();},async 'deleteAutomation'(_0x4e6e1c){const _0x5f2596=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e6e1c),{'method':'DELETE'});if(!_0x5f2596['ok']){const _0x564693=await _0x5f2596['json']()['catch'](()=>({}));throw new Error(_0x564693['message']||_0x564693['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5f2596['statusText']);}return await _0x5f2596['json']();},async 'triggerAutomation'(_0x14c910){const _0x4292fd=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x14c910)+'/trigger',{'method':'POST'});if(!_0x4292fd['ok']){const _0x3206fd=await _0x4292fd['json']()['catch'](()=>({}));throw new Error(_0x3206fd['message']||_0x3206fd['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4292fd['statusText']);}return await _0x4292fd['json']();},async 'setAutomationEnabled'(_0x37dede,_0x22e6aa){const _0x4571e7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37dede)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x22e6aa})});if(!_0x4571e7['ok']){const _0x3b76ba=await _0x4571e7['json']()['catch'](()=>({}));throw new Error(_0x3b76ba['message']||_0x3b76ba['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4571e7['statusText']);}return await _0x4571e7['json']();},async 'getAutomationHistory'(_0x1d5554,_0x2fe09=0x32){const _0x5c16a1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d5554)+'/history?limit='+encodeURIComponent(String(_0x2fe09)));if(!_0x5c16a1['ok']){const _0x44cf61=await _0x5c16a1['json']()['catch'](()=>({}));throw new Error(_0x44cf61['message']||_0x44cf61['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5c16a1['statusText']);}return await _0x5c16a1['json']();},async 'getTask'(_0x34e931,_0x16a293={}){const _0x27a30e=new URLSearchParams();if(_0x16a293['include']){const _0x255f25=Array['isArray'](_0x16a293['include'])?_0x16a293['include']['join'](','):String(_0x16a293['include']);if(_0x255f25)_0x27a30e['set']('include',_0x255f25);}const _0x12afd6=await fetch(API_BASE+'/tasks/'+_0x34e931+(_0x27a30e['toString']()?'?'+_0x27a30e['toString']():''));if(!_0x12afd6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x12afd6['statusText']);return await _0x12afd6['json']();},async 'getTaskResults'(_0x21ffb6){const _0x291738=await fetch(API_BASE+'/tasks/'+_0x21ffb6+'/results');if(!_0x291738['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x291738['statusText']);return await _0x291738['json']();},async 'getTaskPatches'(_0x4b9f66){const _0x5bea7e=await fetch(API_BASE+'/tasks/'+_0x4b9f66+'/patches');if(!_0x5bea7e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5bea7e['statusText']);return await _0x5bea7e['json']();},async 'getTaskAttachments'(_0x2228c0){const _0x522b74=await fetch(API_BASE+'/tasks/'+_0x2228c0+'/attachments');if(!_0x522b74['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x522b74['statusText']);return await _0x522b74['json']();},async 'uploadAttachments'(_0x37ed01,_0x3f005e){const _0x271fb5=new FormData();for(const _0x5f59df of _0x3f005e){_0x271fb5['append']('attachments',_0x5f59df);}const _0x2e8fec=await fetch(API_BASE+'/tasks/'+_0x37ed01+'/attachments',{'method':'POST','body':_0x271fb5});if(!_0x2e8fec['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2e8fec['statusText']);return await _0x2e8fec['json']();},async 'isAINameGenerationAvailable'(){try{const _0x52f359=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x52f359['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x52f359['json']();}catch(_0xa6d14d){return{'available':![],'reason':_0xa6d14d['message']};}},async 'generateTaskName'(_0xcc1eb7){try{const _0x7b28e4=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xcc1eb7})});return await _0x7b28e4['json']();}catch(_0x50c24e){return{'success':![],'error':_0x50c24e['message']};}},async 'createTask'(_0x434094){let _0x46305c,_0x5957ce={};if(_0x434094['files']&&_0x434094['files']['length']>0x0){const _0x41dfdf=new FormData();for(const [_0x39113a,_0x65f3fb]of Object['entries'](_0x434094)){if(_0x39113a!=='files'){if(_0x65f3fb==null)continue;typeof _0x65f3fb==='object'?_0x41dfdf['append'](_0x39113a,JSON['stringify'](_0x65f3fb)):_0x41dfdf['append'](_0x39113a,String(_0x65f3fb));}}for(const _0x481ff9 of _0x434094['files']){_0x41dfdf['append']('attachments',_0x481ff9);}_0x46305c=_0x41dfdf;}else _0x5957ce['Content-Type']='application/json',_0x46305c=JSON['stringify'](_0x434094);const _0x6c5c19=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5957ce,'body':_0x46305c});if(!_0x6c5c19['ok']){const _0x17173a=await _0x6c5c19['json'](),_0x38bb29=new Error(_0x17173a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x6c5c19['statusText']),{message:_0x1a171d,..._0x4e8ec4}=_0x17173a;Object['assign'](_0x38bb29,_0x4e8ec4);throw _0x38bb29;}return await _0x6c5c19['json']();},async 'createTestTask'(_0xd23af0){const _0x16636d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd23af0)});if(!_0x16636d['ok']){const _0x433907=await _0x16636d['json']();throw new Error(_0x433907['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16636d['statusText']);}return await _0x16636d['json']();},async 'createEphemeralTest'(_0x307b54){const _0x4e5972=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x307b54)});if(!_0x4e5972['ok']){const _0x35f82a=await _0x4e5972['json']();throw new Error(_0x35f82a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4e5972['statusText']);}return await _0x4e5972['json']();},async 'createDeployTask'(_0x3b1b64){const _0x5dd642=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1b64)});if(!_0x5dd642['ok']){const _0x276d40=await _0x5dd642['json']();throw new Error(_0x276d40['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5dd642['statusText']);}return await _0x5dd642['json']();},async 'getEnvironments'(){const _0xf306bf=await fetch(API_BASE+'/environments');if(!_0xf306bf['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xf306bf['statusText']);return await _0xf306bf['json']();},async 'getEnvironment'(_0xbcf113){const _0x222acc=await fetch(API_BASE+'/environments/'+_0xbcf113);if(!_0x222acc['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x222acc['statusText']);return await _0x222acc['json']();},async 'getEnvironmentRepoHistory'(_0xc0a49f,_0x2b8605,_0x2fc718={}){if(!_0xc0a49f||!_0x2b8605)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x27153c=new URLSearchParams();if(_0x2fc718['limit'])_0x27153c['set']('limit',String(_0x2fc718['limit']));if(_0x2fc718['offset'])_0x27153c['set']('offset',String(_0x2fc718['offset']));if(_0x2fc718['search'])_0x27153c['set']('search',String(_0x2fc718['search']));if(_0x2fc718['branch'])_0x27153c['set']('branch',String(_0x2fc718['branch']));const _0x4c17c9=API_BASE+'/environments/'+encodeURIComponent(_0xc0a49f)+'/repos/'+encodeURIComponent(_0x2b8605)+'/git/history',_0x4b8c3c=await fetch(''+_0x4c17c9+(_0x27153c['toString']()?'?'+_0x27153c['toString']():''));if(!_0x4b8c3c['ok']){const _0x4de6a0=await _0x4b8c3c['json']()['catch'](()=>({}));throw new Error(_0x4de6a0['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4b8c3c['statusText']);}return await _0x4b8c3c['json']();},async 'getEnvironmentRepoCommit'(_0x3879ce,_0x258fbf,_0xbf0d41){if(!_0x3879ce||!_0x258fbf||!_0xbf0d41)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4bee1a=API_BASE+'/environments/'+encodeURIComponent(_0x3879ce)+'/repos/'+encodeURIComponent(_0x258fbf)+'/git/commits/'+encodeURIComponent(_0xbf0d41),_0xce2de2=await fetch(_0x4bee1a);if(!_0xce2de2['ok']){const _0x41e758=await _0xce2de2['json']()['catch'](()=>({}));throw new Error(_0x41e758['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0xce2de2['statusText']);}return await _0xce2de2['json']();},async 'getEnvironmentRepoBranches'(_0x2ddfcf,_0x31cc08){if(!_0x2ddfcf||!_0x31cc08)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x506b17=API_BASE+'/environments/'+encodeURIComponent(_0x2ddfcf)+'/repos/'+encodeURIComponent(_0x31cc08)+'/git/branches',_0x447b5d=await fetch(_0x506b17);if(!_0x447b5d['ok']){const _0x585ac5=await _0x447b5d['json']()['catch'](()=>({}));throw new Error(_0x585ac5['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x447b5d['statusText']);}return await _0x447b5d['json']();},async 'revertEnvironmentRepoCommit'(_0x137770,_0x3a26c7,_0x2ec324,_0x2b3fe4={}){if(!_0x137770||!_0x3a26c7||!_0x2ec324)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b1c62=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x137770)+'/repos/'+encodeURIComponent(_0x3a26c7)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2ec324,..._0x2b3fe4})});if(!_0x2b1c62['ok']){const _0x61a521=await _0x2b1c62['json']()['catch'](()=>({}));throw new Error(_0x61a521['message']||_0x61a521['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b1c62['statusText']);}return await _0x2b1c62['json']();},async 'getTemplates'(_0x14b136={}){const _0x4bc08c=new URLSearchParams();if(_0x14b136['include']){const _0x1d06d6=Array['isArray'](_0x14b136['include'])?_0x14b136['include']['join'](','):String(_0x14b136['include']);if(_0x1d06d6)_0x4bc08c['set']('include',_0x1d06d6);}const _0x2d319f=await fetch(API_BASE+'/templates'+(_0x4bc08c['toString']()?'?'+_0x4bc08c['toString']():''));if(!_0x2d319f['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2d319f['statusText']);return await _0x2d319f['json']();},async 'getTemplatesForEnvironment'(_0x29c7e8,_0xc27596={}){if(!_0x29c7e8)throw new Error('Environment\x20name\x20is\x20required');const _0x22b6e2=new URLSearchParams();if(_0xc27596['include']){const _0x5af590=Array['isArray'](_0xc27596['include'])?_0xc27596['include']['join'](','):String(_0xc27596['include']);if(_0x5af590)_0x22b6e2['set']('include',_0x5af590);}const _0x2dc0a9=await fetch(API_BASE+'/templates/'+_0x29c7e8+(_0x22b6e2['toString']()?'?'+_0x22b6e2['toString']():''));if(!_0x2dc0a9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x29c7e8+':\x20'+_0x2dc0a9['statusText']);return await _0x2dc0a9['json']();},async 'getTemplate'(_0x3b4d56,_0x1ef3c2,_0x12ee8a={}){if(!_0x3b4d56||!_0x1ef3c2)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xe1e7b5=new URLSearchParams();if(_0x12ee8a['include']){const _0x4db40f=Array['isArray'](_0x12ee8a['include'])?_0x12ee8a['include']['join'](','):String(_0x12ee8a['include']);if(_0x4db40f)_0xe1e7b5['set']('include',_0x4db40f);}const _0x453a12=await fetch(API_BASE+'/templates/'+_0x3b4d56+'/'+_0x1ef3c2+(_0xe1e7b5['toString']()?'?'+_0xe1e7b5['toString']():''));if(!_0x453a12['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x453a12['statusText']);return await _0x453a12['json']();},async 'getTaskLogs'(_0x165d3a,_0x57c0b8={}){if(!_0x165d3a)throw new Error('Task\x20ID\x20is\x20required');const _0x56060a=new URLSearchParams();_0x57c0b8['tail']&&_0x56060a['set']('tail',String(_0x57c0b8['tail']));const _0x42c386=await fetch(API_BASE+'/tasks/'+_0x165d3a+'/logs'+(_0x56060a['toString']()?'?'+_0x56060a['toString']():''));if(!_0x42c386['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42c386['statusText']);return await _0x42c386['text']();},async 'getContainers'(){const _0x5e4d0f=await fetch(API_BASE+'/containers');if(!_0x5e4d0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e4d0f['statusText']);return await _0x5e4d0f['json']();},async 'getContainer'(_0x577b3b){const _0x33e663=await fetch(API_BASE+'/containers/'+_0x577b3b);if(!_0x33e663['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33e663['statusText']);return await _0x33e663['json']();},async 'startInteractiveContainer'(_0x2dc9c3){const _0x312882=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc9c3)});if(!_0x312882['ok']){const _0x51b62c=await _0x312882['json']()['catch'](()=>({}));throw new Error(_0x51b62c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x312882['statusText']);}return await _0x312882['json']();},async 'stopContainer'(_0x5e2053){const _0x4d1954=await fetch(API_BASE+'/containers/'+_0x5e2053,{'method':'DELETE'});if(!_0x4d1954['ok']){const _0x13f496=await _0x4d1954['json']()['catch'](()=>({}));throw new Error(_0x13f496['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4d1954['statusText']);}return await _0x4d1954['json']();},async 'stopTask'(_0x29586f){if(!_0x29586f)throw new Error('Task\x20ID\x20is\x20required');const _0x385f1e=await fetch(API_BASE+'/tasks/'+_0x29586f+'/stop',{'method':'POST'});if(!_0x385f1e['ok']){const _0x186518=await _0x385f1e['json']()['catch'](()=>({}));throw new Error(_0x186518['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x385f1e['statusText']);}return await _0x385f1e['json']();},async 'interruptTask'(_0x347371){if(!_0x347371)throw new Error('Task\x20ID\x20is\x20required');const _0x1c4069=await fetch(API_BASE+'/tasks/'+_0x347371+'/interrupt',{'method':'POST'});if(!_0x1c4069['ok']){const _0x2408cb=await _0x1c4069['json']()['catch'](()=>({}));throw new Error(_0x2408cb['error']||_0x2408cb['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1c4069['statusText']);}return await _0x1c4069['json']();},async 'startTask'(_0x165412){if(!_0x165412)throw new Error('Task\x20ID\x20is\x20required');const _0x5125cb=await fetch(API_BASE+'/tasks/'+_0x165412+'/start',{'method':'POST'});if(!_0x5125cb['ok']){const _0x2102a9=await _0x5125cb['json']()['catch'](()=>({}));throw new Error(_0x2102a9['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5125cb['statusText']);}return await _0x5125cb['json']();},async 'deleteTask'(_0x1d69ee){if(!_0x1d69ee)throw new Error('Task\x20ID\x20is\x20required');const _0x48a762=await fetch(API_BASE+'/tasks/'+_0x1d69ee,{'method':'DELETE'});if(!_0x48a762['ok']){const _0x21467a=await _0x48a762['json']()['catch'](()=>({}));throw new Error(_0x21467a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x48a762['statusText']);}return await _0x48a762['json']();},async 'refreshTasksFromDisk'(){const _0x3678e3=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3678e3['ok']){const _0x441e84=await _0x3678e3['json']()['catch'](()=>({}));throw new Error(_0x441e84['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3678e3['statusText']);}return await _0x3678e3['json']();},async 'approveTask'(_0x3638b4,_0x458334={}){if(!_0x3638b4)throw new Error('Task\x20ID\x20is\x20required');const _0x52c48e={'commit_message':_0x458334['commit_message']||'','pull':_0x458334['pull']??![],'push':_0x458334['push']??![]};_0x458334['new_branch']&&(_0x52c48e['new_branch']=_0x458334['new_branch']);const _0x4a77c6=await fetch(API_BASE+'/tasks/'+_0x3638b4+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52c48e)});if(!_0x4a77c6['ok']){const _0x484f89=await _0x4a77c6['json']()['catch'](()=>({}));let _0x2de24e=_0x484f89['error']||_0x484f89['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x4a77c6['statusText'];if(_0x484f89['results']&&Array['isArray'](_0x484f89['results'])){const _0x233467=_0x484f89['results']['filter'](_0x8df383=>!_0x8df383['success']&&_0x8df383['error']);_0x233467['length']>0x0&&(_0x2de24e=_0x233467[0x0]['error']);}throw new Error(_0x2de24e);}return await _0x4a77c6['json']();},async 'getPullRequestInfo'(_0x44b10c){if(!_0x44b10c)throw new Error('Task\x20ID\x20is\x20required');const _0x31b055=await fetch(API_BASE+'/tasks/'+_0x44b10c+'/pull-request-info');if(!_0x31b055['ok']){const _0x20888b=await _0x31b055['json']()['catch'](()=>({}));throw new Error(_0x20888b['error']||_0x20888b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x31b055['statusText']);}return await _0x31b055['json']();},async 'createPullRequests'(_0x1aeeb6,_0x28a4e2){if(!_0x1aeeb6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28a4e2||!Array['isArray'](_0x28a4e2))throw new Error('repos\x20array\x20is\x20required');const _0x3683e7=await fetch(API_BASE+'/tasks/'+_0x1aeeb6+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x28a4e2})});if(!_0x3683e7['ok']){const _0x5a9670=await _0x3683e7['json']()['catch'](()=>({}));let _0x1d3a4c=_0x5a9670['error']||_0x5a9670['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3683e7['statusText'];if(_0x5a9670['results']&&Array['isArray'](_0x5a9670['results'])){const _0x5e3614=_0x5a9670['results']['filter'](_0x1f30f4=>!_0x1f30f4['success']&&_0x1f30f4['error']);_0x5e3614['length']>0x0&&(_0x1d3a4c=_0x5e3614[0x0]['error']);}throw new Error(_0x1d3a4c);}return await _0x3683e7['json']();},async 'syncRepos'(_0x37b37e){if(!_0x37b37e)throw new Error('Task\x20ID\x20is\x20required');const _0x467486=await fetch(API_BASE+'/tasks/'+_0x37b37e+'/sync-repos',{'method':'POST'});if(!_0x467486['ok']){const _0x1a5a92=await _0x467486['json']()['catch'](()=>({}));throw new Error(_0x1a5a92['error']||_0x1a5a92['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x467486['statusText']);}return await _0x467486['json']();},async 'getIbmiSyncInfo'(_0x36ed93){if(!_0x36ed93)throw new Error('Task\x20ID\x20is\x20required');const _0x1594c4=await fetch(API_BASE+'/tasks/'+_0x36ed93+'/ibmi-sync-info');if(!_0x1594c4['ok']){const _0x555c84=await _0x1594c4['json']()['catch'](()=>({}));throw new Error(_0x555c84['error']||_0x555c84['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1594c4['json']();},async 'getSyncFiles'(_0xcf8bd8){if(!_0xcf8bd8)throw new Error('Task\x20ID\x20is\x20required');const _0x5d4c59=await fetch(API_BASE+'/tasks/'+_0xcf8bd8+'/sync-to-ibmi/files');if(!_0x5d4c59['ok']){const _0xccc1aa=await _0x5d4c59['json']()['catch'](()=>({}));throw new Error(_0xccc1aa['error']||_0xccc1aa['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5d4c59['json']();},async 'syncToIbmi'(_0x54ae38,_0x550366,_0x3b7f5a=null,_0x573f8b=null,_0xefef92=null){if(!_0x54ae38)throw new Error('Task\x20ID\x20is\x20required');const _0x111789={'library':_0x550366};if(_0x3b7f5a)_0x111789['user']=_0x3b7f5a;if(_0x573f8b)_0x111789['password']=_0x573f8b;if(_0xefef92)_0x111789['files']=_0xefef92;const _0x42834f=await fetch(API_BASE+'/tasks/'+_0x54ae38+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111789)});if(!_0x42834f['ok']){const _0x422c47=await _0x42834f['json']()['catch'](()=>({}));throw new Error(_0x422c47['error']||_0x422c47['message']||'Sync\x20failed');}return await _0x42834f['json']();},async 'getIbmiSyncLog'(_0x5b2c6e){if(!_0x5b2c6e)throw new Error('Task\x20ID\x20is\x20required');const _0x1706e3=await fetch(API_BASE+'/tasks/'+_0x5b2c6e+'/ibmi-sync-log');if(!_0x1706e3['ok']){const _0x4843c5=await _0x1706e3['json']()['catch'](()=>({}));throw new Error(_0x4843c5['error']||_0x4843c5['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1706e3['json']();},async 'pullChanges'(_0x5b50a1){if(!_0x5b50a1)throw new Error('Task\x20ID\x20is\x20required');const _0x10256b=await fetch(API_BASE+'/tasks/'+_0x5b50a1+'/pull-changes',{'method':'POST'});if(!_0x10256b['ok']){const _0x55a998=await _0x10256b['json']()['catch'](()=>({}));throw new Error(_0x55a998['error']||_0x55a998['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10256b['statusText']);}return await _0x10256b['json']();},async 'readFile'(_0x49df15,_0x23ce0e){if(!_0x49df15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23ce0e)throw new Error('File\x20path\x20is\x20required');const _0x421c6b=await fetch(API_BASE+'/tasks/'+_0x49df15+'/files?path='+encodeURIComponent(_0x23ce0e));if(!_0x421c6b['ok']){const _0x40de73=await _0x421c6b['json']()['catch'](()=>({}));throw new Error(_0x40de73['error']||_0x40de73['message']||'Failed\x20to\x20read\x20file:\x20'+_0x421c6b['statusText']);}return await _0x421c6b['json']();},'getTaskFileDownloadUrl'(_0x12552f,_0x34ca2f){if(!_0x12552f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34ca2f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x12552f+'/files/download?path='+encodeURIComponent(_0x34ca2f);},async 'writeFile'(_0x5a6d26,_0x49955b,_0x945752){if(!_0x5a6d26)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49955b)throw new Error('File\x20path\x20is\x20required');if(_0x945752===undefined)throw new Error('Content\x20is\x20required');const _0x2f157b=await fetch(API_BASE+'/tasks/'+_0x5a6d26+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49955b,'content':_0x945752})});if(!_0x2f157b['ok']){const _0x21dc3e=await _0x2f157b['json']()['catch'](()=>({}));throw new Error(_0x21dc3e['error']||_0x21dc3e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2f157b['statusText']);}return await _0x2f157b['json']();},async 'uploadTaskFiles'(_0x17682d,_0x12d1b8,_0x73092f){if(!_0x17682d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12d1b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x73092f||_0x73092f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4b6a76=new FormData();_0x4b6a76['append']('targetDir',_0x12d1b8);for(const _0x54c681 of _0x73092f){_0x4b6a76['append']('files',_0x54c681,_0x54c681['name']);}const _0x279e07=await fetch(API_BASE+'/tasks/'+_0x17682d+'/files/upload',{'method':'POST','body':_0x4b6a76});if(!_0x279e07['ok']){const _0x2ed425=await _0x279e07['json']()['catch'](()=>({}));throw new Error(_0x2ed425['error']||_0x2ed425['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x279e07['statusText']);}return await _0x279e07['json']();},async 'deleteFile'(_0x4a2e47,_0x20211e){if(!_0x4a2e47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20211e)throw new Error('File\x20path\x20is\x20required');const _0x5e5aa0=await fetch(API_BASE+'/tasks/'+_0x4a2e47+'/files?path='+encodeURIComponent(_0x20211e),{'method':'DELETE'});if(!_0x5e5aa0['ok']){const _0x1c1834=await _0x5e5aa0['json']()['catch'](()=>({}));throw new Error(_0x1c1834['error']||_0x1c1834['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5e5aa0['statusText']);}return await _0x5e5aa0['json']();},async 'discardFile'(_0x370a1a,_0x3f7fcb,_0x177409){if(!_0x370a1a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f7fcb)throw new Error('File\x20path\x20is\x20required');if(!_0x177409)throw new Error('Repository\x20path\x20is\x20required');const _0x5813f6=await fetch(API_BASE+'/tasks/'+_0x370a1a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3f7fcb,'repoPath':_0x177409})});if(!_0x5813f6['ok']){const _0x3fd3ee=await _0x5813f6['json']()['catch'](()=>({}));throw new Error(_0x3fd3ee['error']||_0x3fd3ee['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x5813f6['statusText']);}return await _0x5813f6['json']();},async 'followUpTask'(_0x20fad1,_0x276fae={}){if(!_0x20fad1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x276fae['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2bb725,_0x27d68e={};if(_0x276fae['files']&&_0x276fae['files']['length']>0x0){const _0x4b3c6f=new FormData();_0x4b3c6f['append']('instructions',_0x276fae['instructions']);for(const _0x1a406b of _0x276fae['files']){_0x4b3c6f['append']('attachments',_0x1a406b);}_0x2bb725=_0x4b3c6f;}else _0x27d68e['Content-Type']='application/json',_0x2bb725=JSON['stringify']({'instructions':_0x276fae['instructions']});const _0x49f8f4=await fetch(API_BASE+'/tasks/'+_0x20fad1+'/follow-up',{'method':'POST','headers':_0x27d68e,'body':_0x2bb725});if(!_0x49f8f4['ok']){const _0xaf1962=await _0x49f8f4['json']()['catch'](()=>({}));throw new Error(_0xaf1962['error']||_0xaf1962['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x49f8f4['statusText']);}return await _0x49f8f4['json']();},async 'getTaskRewindPoints'(_0x4ced13){if(!_0x4ced13)throw new Error('Task\x20ID\x20is\x20required');const _0x517f81=await fetch(API_BASE+'/tasks/'+_0x4ced13+'/rewind-points');if(!_0x517f81['ok']){const _0x45a595=await _0x517f81['json']()['catch'](()=>({}));throw new Error(_0x45a595['error']||_0x45a595['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x517f81['statusText']);}return await _0x517f81['json']();},async 'rewindTask'(_0x4c7a04,_0x2fb75f={}){if(!_0x4c7a04)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd541=Number['isInteger'](_0x2fb75f['targetFollowUpCount'])?_0x2fb75f['targetFollowUpCount']:0x0,_0x45a5a9={'targetFollowUpCount':_0x2dd541};typeof _0x2fb75f['instructions']==='string'&&_0x2fb75f['instructions']['trim']()&&(_0x45a5a9['instructions']=_0x2fb75f['instructions']['trim']());typeof _0x2fb75f['rewindFiles']==='boolean'&&(_0x45a5a9['rewindFiles']=_0x2fb75f['rewindFiles']);const _0x3c43dc=await fetch(API_BASE+'/tasks/'+_0x4c7a04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45a5a9)});if(!_0x3c43dc['ok']){const _0x146cba=await _0x3c43dc['json']()['catch'](()=>({}));throw new Error(_0x146cba['error']||_0x146cba['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3c43dc['statusText']);}return await _0x3c43dc['json']();},async 'login'(_0x15766c,_0x2c7dd3){const _0x30aa0c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x15766c,'password':_0x2c7dd3})});if(!_0x30aa0c['ok']){const _0x269f9d=await _0x30aa0c['json']();throw new Error(_0x269f9d['message']||'Login\x20failed');}return await _0x30aa0c['json']();},async 'logout'(){const _0x1b0dba=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1b0dba['ok']){const _0x47ddae=await _0x1b0dba['json']();throw new Error(_0x47ddae['message']||'Logout\x20failed');}return await _0x1b0dba['json']();},async 'getCurrentUser'(){const _0x1225dd=await fetch(API_BASE+'/auth/me');if(!_0x1225dd['ok'])throw new Error('Not\x20authenticated');const _0x296fbe=await _0x1225dd['json']();return _0x296fbe['user'];},async 'getRolesInfo'(){const _0x14bf93=await fetch(API_BASE+'/users/roles');if(!_0x14bf93['ok']){const _0x5d26f9=await _0x14bf93['json']();throw new Error(_0x5d26f9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x14bf93['json']();},async 'getUsers'(){const _0x39f625=await fetch(API_BASE+'/users');if(!_0x39f625['ok']){const _0x527ee6=await _0x39f625['json']();throw new Error(_0x527ee6['message']||'Failed\x20to\x20get\x20users');}return await _0x39f625['json']();},async 'getUser'(_0x43f269){const _0x24ca2b=await fetch(API_BASE+'/users/'+_0x43f269);if(!_0x24ca2b['ok']){const _0x2c3cde=await _0x24ca2b['json']();throw new Error(_0x2c3cde['message']||'Failed\x20to\x20get\x20user');}return await _0x24ca2b['json']();},async 'createUser'(_0x4daa85){const _0x1165ce=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4daa85)});if(!_0x1165ce['ok']){const _0x27b9f3=await _0x1165ce['json']();throw new Error(_0x27b9f3['message']||'Failed\x20to\x20create\x20user');}return await _0x1165ce['json']();},async 'updateUser'(_0x3ceca6,_0x39d1c0){const _0x3166f3=await fetch(API_BASE+'/users/'+_0x3ceca6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39d1c0)});if(!_0x3166f3['ok']){const _0x44b6ba=await _0x3166f3['json']();throw new Error(_0x44b6ba['message']||'Failed\x20to\x20update\x20user');}return await _0x3166f3['json']();},async 'deleteUser'(_0x4a6013){const _0x23456b=await fetch(API_BASE+'/users/'+_0x4a6013,{'method':'DELETE'});if(!_0x23456b['ok']){const _0x28a75e=await _0x23456b['json']();throw new Error(_0x28a75e['message']||'Failed\x20to\x20delete\x20user');}return await _0x23456b['json']();},async 'stopAllContainers'(){const _0x11326a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1dabeb=await _0x11326a['json']()['catch'](()=>({}));if(!_0x11326a['ok'])throw new Error(_0x1dabeb['message']||_0x1dabeb['error']||'Failed\x20to\x20stop\x20containers');return _0x1dabeb;},async 'removeStoppedContainers'(){const _0xb1fd42=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x15164c=await _0xb1fd42['json']()['catch'](()=>({}));if(!_0xb1fd42['ok'])throw new Error(_0x15164c['message']||_0x15164c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x15164c;},async 'pruneDockerResources'(){const _0x4d8b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x47003c=await _0x4d8b22['json']()['catch'](()=>({}));if(!_0x4d8b22['ok'])throw new Error(_0x47003c['message']||_0x47003c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x47003c;},async 'createPasswordToken'(_0x47269d,_0x476d15='setup',_0x1cbe0d=![]){const _0x533ec0=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x47269d,'type':_0x476d15,'sendEmail':_0x1cbe0d})});if(!_0x533ec0['ok']){const _0x5640c8=await _0x533ec0['json']();throw new Error(_0x5640c8['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x533ec0['json']();},async 'getEmailConfig'(){const _0x3e49a3=await fetch(API_BASE+'/password/email-config');if(!_0x3e49a3['ok']){const _0x327801=await _0x3e49a3['json']();throw new Error(_0x327801['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3e49a3['json']();},async 'updateTaskName'(_0x36e4a6,_0x26dae9){const _0x3456a3=await fetch(API_BASE+'/tasks/'+_0x36e4a6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x26dae9})});if(!_0x3456a3['ok']){const _0x545280=await _0x3456a3['json']();throw new Error(_0x545280['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3456a3['json']();},async 'pinTask'(_0x1c7ec2,_0x4511cb,_0x1be4cd=null){if(!_0x1c7ec2)throw new Error('Task\x20ID\x20is\x20required');const _0x36894f={'pinned':_0x4511cb};_0x1be4cd&&_0x1be4cd['length']>0x0&&(_0x36894f['additionalTaskIds']=_0x1be4cd);const _0x1c2489=await fetch(API_BASE+'/tasks/'+_0x1c7ec2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36894f)});if(!_0x1c2489['ok']){const _0x4d6914=await _0x1c2489['json']();throw new Error(_0x4d6914['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c2489['json']();},async 'setTaskWinner'(_0x37ebf2,_0x43d372,_0x10182c=[]){if(!_0x37ebf2)throw new Error('Task\x20ID\x20is\x20required');const _0xfc475b=await fetch(API_BASE+'/tasks/'+_0x37ebf2+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43d372,'siblings':_0x10182c})});if(!_0xfc475b['ok']){const _0x2006fb=await _0xfc475b['json']();throw new Error(_0x2006fb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xfc475b['json']();},async 'setTaskLoser'(_0x58ae58,_0x44157a){if(!_0x58ae58)throw new Error('Task\x20ID\x20is\x20required');const _0x2a3ec7=await fetch(API_BASE+'/tasks/'+_0x58ae58+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x44157a})});if(!_0x2a3ec7['ok']){const _0x93b631=await _0x2a3ec7['json']();throw new Error(_0x93b631['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2a3ec7['json']();},async 'createTaskGroup'(_0x29e317){const _0x11415f=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e317)});if(!_0x11415f['ok']){const _0x22f022=await _0x11415f['json']();throw new Error(_0x22f022['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x11415f['json']();},async 'getTaskGroups'(_0x3127c0={}){const _0x188901=new URLSearchParams();if(_0x3127c0['userId'])_0x188901['set']('userId',String(_0x3127c0['userId']));if(_0x3127c0['status'])_0x188901['set']('status',String(_0x3127c0['status']));if(_0x3127c0['limit'])_0x188901['set']('limit',String(_0x3127c0['limit']));const _0x1bd8e9=API_BASE+'/tasks/groups'+(_0x188901['toString']()?'?'+_0x188901['toString']():''),_0x5aad7b=await fetch(_0x1bd8e9);if(!_0x5aad7b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5aad7b['json']();},async 'getTaskGroup'(_0x33e9a1){const _0x525107=await fetch(API_BASE+'/tasks/groups/'+_0x33e9a1);if(!_0x525107['ok']){const _0x5f2c83=await _0x525107['json']();throw new Error(_0x5f2c83['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x525107['json']();},async 'updateTaskGroup'(_0x501319,_0x59200b,_0x5166a9){const _0x237de0=await fetch(API_BASE+'/tasks/'+_0x501319+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x59200b,'groupIndex':_0x5166a9})});if(!_0x237de0['ok']){const _0x306bee=await _0x237de0['json']();throw new Error(_0x306bee['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x237de0['json']();},async 'removeTaskFromGroup'(_0x950e58){return this['updateTaskGroup'](_0x950e58,null,null);},async 'deleteTaskGroup'(_0x3e68b8,_0x1eadba=![]){const _0x6d33de=_0x1eadba?'?deleteTasks=true':'',_0x2910c0=await fetch(API_BASE+'/tasks/groups/'+_0x3e68b8+_0x6d33de,{'method':'DELETE'});if(!_0x2910c0['ok']){const _0x346d38=await _0x2910c0['json']();throw new Error(_0x346d38['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5f0e35,_0x101a44){const _0x165d17=await fetch(API_BASE+'/tasks/groups/'+_0x5f0e35+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x101a44})});if(!_0x165d17['ok']){const _0x49acc3=await _0x165d17['json']();throw new Error(_0x49acc3['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x165d17['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4ba4e5){if(!_0x4ba4e5)throw new Error('Task\x20ID\x20is\x20required');const _0x32ad6d=await fetch(API_BASE+'/tasks/'+_0x4ba4e5+'/comments');if(!_0x32ad6d['ok']){const _0x39b98d=await _0x32ad6d['json']()['catch'](()=>({}));throw new Error(_0x39b98d['error']||'Failed\x20to\x20get\x20comments');}return await _0x32ad6d['json']();},async 'addComment'(_0x4115d2,_0x46962a){if(!_0x4115d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x46962a)throw new Error('Comment\x20content\x20is\x20required');const _0x4fbb94=await fetch(API_BASE+'/tasks/'+_0x4115d2+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x46962a})});if(!_0x4fbb94['ok']){const _0x5b7202=await _0x4fbb94['json']()['catch'](()=>({}));throw new Error(_0x5b7202['error']||'Failed\x20to\x20add\x20comment');}return await _0x4fbb94['json']();},async 'updateComment'(_0x201be8,_0xbe843a,_0x543c81){if(!_0x201be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbe843a)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x543c81)throw new Error('Comment\x20content\x20is\x20required');const _0x49f589=await fetch(API_BASE+'/tasks/'+_0x201be8+'/comments/'+_0xbe843a,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x543c81})});if(!_0x49f589['ok']){const _0x2746bc=await _0x49f589['json']()['catch'](()=>({}));throw new Error(_0x2746bc['error']||'Failed\x20to\x20update\x20comment');}return await _0x49f589['json']();},async 'deleteComment'(_0x32cd1e,_0x284fe4){if(!_0x32cd1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x284fe4)throw new Error('Comment\x20ID\x20is\x20required');const _0x46655c=await fetch(API_BASE+'/tasks/'+_0x32cd1e+'/comments/'+_0x284fe4,{'method':'DELETE'});if(!_0x46655c['ok']){const _0x3707fa=await _0x46655c['json']()['catch'](()=>({}));throw new Error(_0x3707fa['error']||'Failed\x20to\x20delete\x20comment');}return await _0x46655c['json']();},async 'createObjective'(_0x29eddf){const _0x500a80={'objective':!![],'name':_0x29eddf['name']||'','environment':_0x29eddf['environment']||null,'agents':_0x29eddf['agents']||[],'branches':_0x29eddf['branches']||{},'isPinned':_0x29eddf['isPinned']||![],'parentObjectiveId':_0x29eddf['parentObjectiveId']||null,'env_vars':_0x29eddf['envVars']||{},'parameters':{'instructions':_0x29eddf['instructions']||''},'files':_0x29eddf['files']||[],'jira':_0x29eddf['jira']||null};return this['createTask'](_0x500a80);},async 'updateObjective'(_0x15d0ad,_0x575fe5,_0x59beee=[],_0x2be62b=[]){let _0x592aaa,_0x261421={};const _0x5c986e={..._0x575fe5};_0x2be62b&&_0x2be62b['length']>0x0&&(_0x5c986e['removeAttachments']=_0x2be62b);if(_0x59beee&&_0x59beee['length']>0x0){const _0x27f57d=new FormData();for(const [_0x39345b,_0x2d61d9]of Object['entries'](_0x5c986e)){if(_0x2d61d9==null)continue;typeof _0x2d61d9==='object'?_0x27f57d['append'](_0x39345b,JSON['stringify'](_0x2d61d9)):_0x27f57d['append'](_0x39345b,String(_0x2d61d9));}for(const _0x36782b of _0x59beee){_0x27f57d['append']('attachments',_0x36782b);}_0x592aaa=_0x27f57d;}else _0x261421['Content-Type']='application/json',_0x592aaa=JSON['stringify'](_0x5c986e);const _0x1c6d1a=await fetch(API_BASE+'/tasks/'+_0x15d0ad,{'method':'PATCH','headers':_0x261421,'body':_0x592aaa});if(!_0x1c6d1a['ok']){const _0x5f486e=await _0x1c6d1a['json']();throw new Error(_0x5f486e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1c6d1a['json']();},async 'deleteObjective'(_0x14ae77){return this['deleteTask'](_0x14ae77);},async 'launchObjective'(_0xc2d6a8,_0x3d62eb={}){const _0x5c871d=await fetch(API_BASE+'/tasks/'+_0xc2d6a8+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d62eb)});if(!_0x5c871d['ok']){const _0xf37aea=await _0x5c871d['json']();throw new Error(_0xf37aea['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5c871d['json']();},async 'getObjectiveAttachments'(_0x5af6d6){return this['getTaskAttachments'](_0x5af6d6);},async 'createJudgeTask'({environment:_0x3bbe96,judgeAgent:_0x35451a,groupId:_0x4a301c,taskIds:_0x148068,judgeCustomInstructions:_0x310ca5,isPinned:_0x200351}){const _0x2ab129=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3bbe96,'judgeAgent':_0x35451a,'groupId':_0x4a301c,'taskIds':_0x148068,'judgeCustomInstructions':_0x310ca5,'isPinned':_0x200351})});if(!_0x2ab129['ok']){const _0x2a398a=await _0x2ab129['json']();throw new Error(_0x2a398a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2ab129['json']();},async 'getJudgeTasks'(_0x2aa7f1){const _0x8f4e80=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2aa7f1));if(!_0x8f4e80['ok']){const _0x58131f=await _0x8f4e80['json']();throw new Error(_0x58131f['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x8f4e80['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3688c0,_0x3389f7,_0x81d991=''){const _0x4d47e9=await fetch(API_BASE+'/tasks/'+_0x3688c0+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3389f7,'customPreamble':_0x81d991})});if(!_0x4d47e9['ok']){const _0x525550=await _0x4d47e9['json']();throw new Error(_0x525550['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4d47e9['json']();},async 'getJiraConfig'(){const _0x2adc88=await fetch(API_BASE+'/jira/config');if(!_0x2adc88['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2adc88['json']();},async 'getJiraIssue'(_0x144976){const _0x284da2=await fetch(API_BASE+'/jira/issues/'+_0x144976);if(!_0x284da2['ok']){const _0x46c181=await _0x284da2['json']()['catch'](()=>({}));throw new Error(_0x46c181['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x284da2['statusText']);}return await _0x284da2['json']();},async 'searchJiraIssues'(_0x5b0d15,_0x3f4a69=0x14){const _0x10fcbf=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5b0d15,'maxResults':_0x3f4a69})});if(!_0x10fcbf['ok']){const _0x166e3a=await _0x10fcbf['json']()['catch'](()=>({}));throw new Error(_0x166e3a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x10fcbf['statusText']);}return await _0x10fcbf['json']();},async 'postJiraComment'(_0x10241d,_0x413bfc){const _0x5b788b=await fetch(API_BASE+'/jira/issues/'+_0x10241d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x413bfc})});if(!_0x5b788b['ok']){const _0x59196d=await _0x5b788b['json']()['catch'](()=>({}));throw new Error(_0x59196d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5b788b['statusText']);}return await _0x5b788b['json']();},async 'getJiraComments'(_0x387d5b){const _0x5664cf=await fetch(API_BASE+'/jira/issues/'+_0x387d5b+'/comments');if(!_0x5664cf['ok']){const _0x3bde7a=await _0x5664cf['json']()['catch'](()=>({}));throw new Error(_0x3bde7a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5664cf['statusText']);}return await _0x5664cf['json']();},async 'promptParameter'({environment:_0x4244af,command:_0x5b844d,parser:parser='json'}){const _0x2c6be2=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4244af,'command':_0x5b844d,'parser':parser})});if(!_0x2c6be2['ok']){const _0x1c2db5=await _0x2c6be2['json']()['catch'](()=>({}));throw new Error(_0x1c2db5['message']||_0x1c2db5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2c6be2['statusText']);}return await _0x2c6be2['json']();},async 'promptParameterStream'(_0x331e46,_0x1fdd21){const _0x190f01=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x331e46)});if(!_0x190f01['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x190f01['statusText']);const _0x3f766f=_0x190f01['body']['getReader'](),_0x1e13d4=new TextDecoder();let _0x22442a='';return new Promise((_0xc6885b,_0x123033)=>{const _0x2beff3=async()=>{try{const {done:_0xb56072,value:_0x36afb9}=await _0x3f766f['read']();if(_0xb56072)return;_0x22442a+=_0x1e13d4['decode'](_0x36afb9,{'stream':!![]});const _0x51292a=_0x22442a['split']('\x0a\x0a');_0x22442a=_0x51292a['pop']()||'';for(const _0x368c37 of _0x51292a){if(!_0x368c37['trim']())continue;const _0x93fad3=_0x368c37['split']('\x0a');let _0x411463='message',_0x175f2a='';for(const _0x18fa20 of _0x93fad3){if(_0x18fa20['startsWith']('event:'))_0x411463=_0x18fa20['substring'](0x6)['trim']();else _0x18fa20['startsWith']('data:')&&(_0x175f2a=_0x18fa20['substring'](0x5)['trim']());}if(!_0x175f2a)continue;try{const _0x2b87a1=JSON['parse'](_0x175f2a);if(_0x411463==='progress'&&_0x1fdd21)_0x1fdd21(_0x2b87a1['stage'],_0x2b87a1['message']);else{if(_0x411463==='result'){_0xc6885b(_0x2b87a1);return;}else{if(_0x411463==='error'){let _0x1f7040=_0x2b87a1['message']||_0x2b87a1['error']||'Prompt\x20command\x20failed';_0x2b87a1['rawOutput']&&(_0x1f7040+='\x0a\x0aRaw\x20output:\x0a'+_0x2b87a1['rawOutput']);_0x123033(new Error(_0x1f7040));return;}}}}catch(_0x179c03){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x179c03),console['error']('Event\x20type:',_0x411463),console['error']('Event\x20data:',_0x175f2a),console['error']('First\x20200\x20chars:',_0x175f2a['substring'](0x0,0xc8)),_0x123033(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x179c03['message']+'\x0a\x0aData:\x20'+_0x175f2a['substring'](0x0,0x1f4)));return;}}_0x2beff3();}catch(_0x4050a1){_0x123033(_0x4050a1);}};_0x2beff3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xac358d){const _0x55f5f1=await fetch(''+API_BASE+_0xac358d);if(!_0x55f5f1['ok']){const _0x1ae59f=await _0x55f5f1['json']()['catch'](()=>({'error':_0x55f5f1['statusText']})),_0x3d0e7d=new Error(_0x1ae59f['error']||_0x1ae59f['message']||_0x55f5f1['statusText']);if(_0x1ae59f['detail']!==undefined)_0x3d0e7d['detail']=_0x1ae59f['detail'];throw _0x3d0e7d;}return await _0x55f5f1['json']();},async 'post'(_0x39394a,_0x3c8f37){const _0x53501a=await fetch(''+API_BASE+_0x39394a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c8f37)});if(!_0x53501a['ok']){const _0x486fef=await _0x53501a['json']()['catch'](()=>({'error':_0x53501a['statusText']})),_0x35f7b3=new Error(_0x486fef['error']||_0x486fef['message']||_0x53501a['statusText']);if(_0x486fef['detail']!==undefined)_0x35f7b3['detail']=_0x486fef['detail'];throw _0x35f7b3;}return await _0x53501a['json']();},async 'put'(_0x3fc3b2,_0x11dd02){const _0xe18d14=await fetch(''+API_BASE+_0x3fc3b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11dd02)});if(!_0xe18d14['ok']){const _0x1706cb=await _0xe18d14['json']()['catch'](()=>({'error':_0xe18d14['statusText']})),_0x179465=new Error(_0x1706cb['error']||_0x1706cb['message']||_0xe18d14['statusText']);if(_0x1706cb['detail']!==undefined)_0x179465['detail']=_0x1706cb['detail'];throw _0x179465;}return await _0xe18d14['json']();},async 'delete'(_0x5eaef7,_0x264372){const _0x305c9f={'method':'DELETE'};_0x264372&&(_0x305c9f['headers']={'Content-Type':'application/json'},_0x305c9f['body']=JSON['stringify'](_0x264372));const _0x16bf74=await fetch(''+API_BASE+_0x5eaef7,_0x305c9f);if(!_0x16bf74['ok']){const _0x2e3d03=await _0x16bf74['json']()['catch'](()=>({'error':_0x16bf74['statusText']})),_0x58ba81=new Error(_0x2e3d03['error']||_0x2e3d03['message']||_0x16bf74['statusText']);if(_0x2e3d03['detail']!==undefined)_0x58ba81['detail']=_0x2e3d03['detail'];throw _0x58ba81;}return await _0x16bf74['json']();},async 'getSkills'(){const _0x2491af=await fetch(API_BASE+'/skills');if(!_0x2491af['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2491af['statusText']);return await _0x2491af['json']();},async 'getSkill'(_0x13534a){const _0x103416=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x13534a));if(!_0x103416['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x103416['statusText']);return await _0x103416['json']();},async 'createSkill'(_0x2faff1){const _0x4f1b7a=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2faff1)});if(!_0x4f1b7a['ok']){const _0x1a1d96=await _0x4f1b7a['json']()['catch'](()=>({'error':_0x4f1b7a['statusText']})),_0x1170b2=new Error(_0x1a1d96['error']||_0x1a1d96['message']||_0x4f1b7a['statusText']);if(_0x1a1d96['detail']!==undefined)_0x1170b2['detail']=_0x1a1d96['detail'];throw _0x1170b2;}return await _0x4f1b7a['json']();},async 'updateSkill'(_0x4c4a9d,_0x1b7ac6){const _0x43af57=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c4a9d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b7ac6)});if(!_0x43af57['ok']){const _0x380304=await _0x43af57['json']()['catch'](()=>({'error':_0x43af57['statusText']})),_0x58bc48=new Error(_0x380304['error']||_0x380304['message']||_0x43af57['statusText']);if(_0x380304['detail']!==undefined)_0x58bc48['detail']=_0x380304['detail'];throw _0x58bc48;}return await _0x43af57['json']();},async 'deleteSkill'(_0x1b5bcf){const _0x304678=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b5bcf),{'method':'DELETE'});if(!_0x304678['ok']){const _0x34c4af=await _0x304678['json']()['catch'](()=>({'error':_0x304678['statusText']})),_0x286a4c=new Error(_0x34c4af['error']||_0x34c4af['message']||_0x304678['statusText']);if(_0x34c4af['detail']!==undefined)_0x286a4c['detail']=_0x34c4af['detail'];throw _0x286a4c;}return await _0x304678['json']();},async 'getSkillFile'(_0x237a34,_0x22497f){const _0x87b7a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x237a34)+'/files/'+_0x22497f);if(!_0x87b7a7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x87b7a7['statusText']);return await _0x87b7a7['json']();},async 'saveSkillFile'(_0x48f82a,_0x8d6636,_0xe1521a){const _0x35245f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x48f82a)+'/files/'+_0x8d6636,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xe1521a})});if(!_0x35245f['ok']){const _0x445f65=await _0x35245f['json']()['catch'](()=>({'error':_0x35245f['statusText']})),_0x1bae1e=new Error(_0x445f65['error']||_0x445f65['message']||_0x35245f['statusText']);if(_0x445f65['detail']!==undefined)_0x1bae1e['detail']=_0x445f65['detail'];throw _0x1bae1e;}return await _0x35245f['json']();},async 'deleteSkillFile'(_0x1ae384,_0x59b5a0){const _0x5a1b3c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ae384)+'/files/'+_0x59b5a0,{'method':'DELETE'});if(!_0x5a1b3c['ok']){const _0x1a1028=await _0x5a1b3c['json']()['catch'](()=>({'error':_0x5a1b3c['statusText']})),_0x42b5e1=new Error(_0x1a1028['error']||_0x1a1028['message']||_0x5a1b3c['statusText']);if(_0x1a1028['detail']!==undefined)_0x42b5e1['detail']=_0x1a1028['detail'];throw _0x42b5e1;}return await _0x5a1b3c['json']();},async 'pullSkills'(){const _0x47dea8=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x47dea8['ok']){const _0x2faa87=await _0x47dea8['json']()['catch'](()=>({'error':_0x47dea8['statusText']})),_0x190a5b=new Error(_0x2faa87['error']||_0x2faa87['message']||_0x47dea8['statusText']);if(_0x2faa87['detail']!==undefined)_0x190a5b['detail']=_0x2faa87['detail'];throw _0x190a5b;}return await _0x47dea8['json']();},async 'commitSkills'(_0x54fae4,_0x1dcc2d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1dcc2d,_0x40ba77=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x54fae4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x40ba77['ok']){const _0x4bce4d=await _0x40ba77['json']()['catch'](()=>({'error':_0x40ba77['statusText']})),_0x5c7004=new Error(_0x4bce4d['error']||_0x4bce4d['message']||_0x40ba77['statusText']);if(_0x4bce4d['detail']!==undefined)_0x5c7004['detail']=_0x4bce4d['detail'];throw _0x5c7004;}return await _0x40ba77['json']();},async 'discardSkillsChanges'(){const _0x4b663d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b663d['ok']){const _0x55a82b=await _0x4b663d['json']()['catch'](()=>({'error':_0x4b663d['statusText']})),_0x293012=new Error(_0x55a82b['error']||_0x55a82b['message']||_0x4b663d['statusText']);if(_0x55a82b['detail']!==undefined)_0x293012['detail']=_0x55a82b['detail'];throw _0x293012;}return await _0x4b663d['json']();},async 'getSkillCatalog'(){const _0x2a3c76=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2a3c76['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2a3c76['statusText']);return await _0x2a3c76['json']();},async 'getImportedSkillsRegistry'(){const _0x470d29=await fetch(API_BASE+'/external-skills/registry');if(!_0x470d29['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x470d29['statusText']);return await _0x470d29['json']();},async 'importCatalogSkill'(_0x4faf84){const _0x4492f0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4faf84})});if(!_0x4492f0['ok']){const _0x58d37e=await _0x4492f0['json']()['catch'](()=>({'error':_0x4492f0['statusText']})),_0x10c7de=new Error(_0x58d37e['error']||_0x58d37e['message']||_0x4492f0['statusText']);if(_0x58d37e['detail']!==undefined)_0x10c7de['detail']=_0x58d37e['detail'];throw _0x10c7de;}return await _0x4492f0['json']();},async 'importSkillFromGit'(_0xbeb341,_0x3846bf,_0x554b4b='main',_0x1e7393=null){const _0x197308=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbeb341,'skillPath':_0x3846bf,'branch':_0x554b4b,'skillId':_0x1e7393})});if(!_0x197308['ok']){const _0x546cdb=await _0x197308['json']()['catch'](()=>({'error':_0x197308['statusText']})),_0x536b03=new Error(_0x546cdb['error']||_0x546cdb['message']||_0x197308['statusText']);if(_0x546cdb['detail']!==undefined)_0x536b03['detail']=_0x546cdb['detail'];throw _0x536b03;}return await _0x197308['json']();},async 'probeMarketplace'(_0x83c51b,_0x2b3e5a='main'){const _0x2a3afc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x83c51b,'branch':_0x2b3e5a})});if(!_0x2a3afc['ok']){const _0x455cad=await _0x2a3afc['json']()['catch'](()=>({'error':_0x2a3afc['statusText']})),_0x3ba411=new Error(_0x455cad['error']||_0x455cad['message']||_0x2a3afc['statusText']);if(_0x455cad['detail']!==undefined)_0x3ba411['detail']=_0x455cad['detail'];throw _0x3ba411;}return await _0x2a3afc['json']();},async 'importMarketplaceBundle'(_0x49f218,_0x4430cc,_0x256344,_0x4ede12=null){const _0x6d251f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x49f218,'branch':_0x4430cc,'bundleId':_0x256344,'selectedSkills':_0x4ede12})});if(!_0x6d251f['ok']){const _0x4a7da2=await _0x6d251f['json']()['catch'](()=>({'error':_0x6d251f['statusText']})),_0x10fd3b=new Error(_0x4a7da2['error']||_0x4a7da2['message']||_0x6d251f['statusText']);if(_0x4a7da2['detail']!==undefined)_0x10fd3b['detail']=_0x4a7da2['detail'];throw _0x10fd3b;}return await _0x6d251f['json']();},async 'importSkillFromFolder'(_0x4f2293,_0x7bce71=null){const _0xd586f8=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f2293,'skillId':_0x7bce71})});if(!_0xd586f8['ok']){const _0x3504f5=await _0xd586f8['json']()['catch'](()=>({'error':_0xd586f8['statusText']})),_0x21e5ed=new Error(_0x3504f5['error']||_0x3504f5['message']||_0xd586f8['statusText']);if(_0x3504f5['detail']!==undefined)_0x21e5ed['detail']=_0x3504f5['detail'];throw _0x21e5ed;}return await _0xd586f8['json']();},async 'importSkillFromNpm'(_0x22980e,_0x2e3c68='latest',_0x93fe2=null,_0x18eb8e=null){const _0x1fa6c7=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x22980e,'version':_0x2e3c68,'skillId':_0x93fe2,'registry':_0x18eb8e})});if(!_0x1fa6c7['ok']){const _0x305daf=await _0x1fa6c7['json']()['catch'](()=>({'error':_0x1fa6c7['statusText']})),_0x12050c=new Error(_0x305daf['error']||_0x305daf['message']||_0x1fa6c7['statusText']);if(_0x305daf['detail']!==undefined)_0x12050c['detail']=_0x305daf['detail'];throw _0x12050c;}return await _0x1fa6c7['json']();},async 'checkSkillUpdates'(_0x26b47e){const _0x5c75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26b47e)+'/check-updates',{'method':'POST'});if(!_0x5c75f3['ok']){const _0xa4c4e6=await _0x5c75f3['json']()['catch'](()=>({'error':_0x5c75f3['statusText']})),_0x4786be=new Error(_0xa4c4e6['error']||_0xa4c4e6['message']||_0x5c75f3['statusText']);if(_0xa4c4e6['detail']!==undefined)_0x4786be['detail']=_0xa4c4e6['detail'];throw _0x4786be;}return await _0x5c75f3['json']();},async 'updateExternalSkill'(_0x26fd08){const _0x506104=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26fd08)+'/update',{'method':'POST'});if(!_0x506104['ok']){const _0x5070cb=await _0x506104['json']()['catch'](()=>({'error':_0x506104['statusText']})),_0x3413ea=new Error(_0x5070cb['error']||_0x5070cb['message']||_0x506104['statusText']);if(_0x5070cb['detail']!==undefined)_0x3413ea['detail']=_0x5070cb['detail'];throw _0x3413ea;}return await _0x506104['json']();},async 'updateSkillFlags'(_0xe9b717,_0x308bc1){const _0x392e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xe9b717)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x308bc1})});if(!_0x392e42['ok']){const _0x17a012=await _0x392e42['json']()['catch'](()=>({'error':_0x392e42['statusText']})),_0x431579=new Error(_0x17a012['error']||_0x17a012['message']||_0x392e42['statusText']);if(_0x17a012['detail']!==undefined)_0x431579['detail']=_0x17a012['detail'];throw _0x431579;}return await _0x392e42['json']();},async 'removeFromImportedRegistry'(_0x525b7c){const _0x48ee06=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x525b7c)+'/registry',{'method':'DELETE'});if(!_0x48ee06['ok']){const _0x41511b=await _0x48ee06['json']()['catch'](()=>({'error':_0x48ee06['statusText']})),_0x4e78dc=new Error(_0x41511b['error']||_0x41511b['message']||_0x48ee06['statusText']);if(_0x41511b['detail']!==undefined)_0x4e78dc['detail']=_0x41511b['detail'];throw _0x4e78dc;}return await _0x48ee06['json']();},async 'getTeams'(){const _0x310db5=await fetch(API_BASE+'/teams');if(!_0x310db5['ok']){const _0x43098b=await _0x310db5['json']()['catch'](()=>({'message':_0x310db5['statusText']}));throw new Error(_0x43098b['message']||'Failed\x20to\x20get\x20teams');}return await _0x310db5['json']();},async 'getTeam'(_0x488878){const _0x5c9012=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x488878));if(!_0x5c9012['ok']){const _0x14f3c4=await _0x5c9012['json']()['catch'](()=>({'message':_0x5c9012['statusText']}));throw new Error(_0x14f3c4['message']||'Failed\x20to\x20get\x20team');}return await _0x5c9012['json']();},async 'createTeam'(_0x5b1d23){const _0x15fd32=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b1d23)});if(!_0x15fd32['ok']){const _0x5edf0e=await _0x15fd32['json']()['catch'](()=>({'message':_0x15fd32['statusText']}));throw new Error(_0x5edf0e['message']||'Failed\x20to\x20create\x20team');}return await _0x15fd32['json']();},async 'updateTeam'(_0x23203a,_0x3837ae){const _0x4431d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x23203a),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3837ae)});if(!_0x4431d1['ok']){const _0x1733c4=await _0x4431d1['json']()['catch'](()=>({'message':_0x4431d1['statusText']}));throw new Error(_0x1733c4['message']||'Failed\x20to\x20update\x20team');}return await _0x4431d1['json']();},async 'deleteTeam'(_0x51105d){const _0x367fac=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51105d),{'method':'DELETE'});if(!_0x367fac['ok']){const _0x327993=await _0x367fac['json']()['catch'](()=>({'message':_0x367fac['statusText']}));throw new Error(_0x327993['message']||'Failed\x20to\x20delete\x20team');}return await _0x367fac['json']();},async 'addTeamMember'(_0x443512,_0x59d3cc){const _0x11e4d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x443512)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59d3cc})});if(!_0x11e4d1['ok']){const _0x356175=await _0x11e4d1['json']()['catch'](()=>({'message':_0x11e4d1['statusText']}));throw new Error(_0x356175['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x11e4d1['json']();},async 'removeTeamMember'(_0x14edf8,_0x58b6f5){const _0x44c6e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14edf8)+'/members/'+encodeURIComponent(_0x58b6f5),{'method':'DELETE'});if(!_0x44c6e8['ok']){const _0x2d2245=await _0x44c6e8['json']()['catch'](()=>({'message':_0x44c6e8['statusText']}));throw new Error(_0x2d2245['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44c6e8['json']();},async 'getBindings'(_0x2ae079={}){const _0x535efb=new URLSearchParams();if(_0x2ae079['resource_type'])_0x535efb['set']('resource_type',_0x2ae079['resource_type']);if(_0x2ae079['resource_id'])_0x535efb['set']('resource_id',_0x2ae079['resource_id']);if(_0x2ae079['subject_type'])_0x535efb['set']('subject_type',_0x2ae079['subject_type']);if(_0x2ae079['subject_id'])_0x535efb['set']('subject_id',_0x2ae079['subject_id']);const _0x3d2d6e=_0x535efb['toString'](),_0x5d1eea=await fetch(API_BASE+'/bindings'+(_0x3d2d6e?'?'+_0x3d2d6e:''));if(!_0x5d1eea['ok']){const _0x563b1a=await _0x5d1eea['json']()['catch'](()=>({'message':_0x5d1eea['statusText']}));throw new Error(_0x563b1a['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5d1eea['json']();},async 'createBinding'(_0x12c7ee){const _0x463a54=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12c7ee)});if(!_0x463a54['ok']){const _0xdef47c=await _0x463a54['json']()['catch'](()=>({'message':_0x463a54['statusText']}));throw new Error(_0xdef47c['message']||'Failed\x20to\x20create\x20binding');}return await _0x463a54['json']();},async 'updateBinding'(_0x49a29b,_0x53eb94){const _0x194f52=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x49a29b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53eb94)});if(!_0x194f52['ok']){const _0x3db875=await _0x194f52['json']()['catch'](()=>({'message':_0x194f52['statusText']}));throw new Error(_0x3db875['message']||'Failed\x20to\x20update\x20binding');}return await _0x194f52['json']();},async 'deleteBinding'(_0x6ddad){const _0x4af93b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x6ddad),{'method':'DELETE'});if(!_0x4af93b['ok']){const _0xfcdf12=await _0x4af93b['json']()['catch'](()=>({'message':_0x4af93b['statusText']}));throw new Error(_0xfcdf12['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4af93b['json']();},async 'getRoleDefinitions'(){const _0x2cb92e=await fetch(API_BASE+'/roles');if(!_0x2cb92e['ok']){const _0x9756e9=await _0x2cb92e['json']()['catch'](()=>({'message':_0x2cb92e['statusText']}));throw new Error(_0x9756e9['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2cb92e['json']();},async 'getRoleDefinition'(_0x1b051f){const _0x3a6a2a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b051f));if(!_0x3a6a2a['ok']){const _0x49b658=await _0x3a6a2a['json']()['catch'](()=>({'message':_0x3a6a2a['statusText']}));throw new Error(_0x49b658['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3a6a2a['json']();},async 'createRoleDefinition'(_0x33a108){const _0x442291=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33a108)});if(!_0x442291['ok']){const _0x43263d=await _0x442291['json']()['catch'](()=>({'message':_0x442291['statusText']}));throw new Error(_0x43263d['message']||_0x43263d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x442291['json']();},async 'updateRoleDefinition'(_0x1e6683,_0xe65239){const _0x45a5c0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1e6683),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe65239)});if(!_0x45a5c0['ok']){const _0x6500f4=await _0x45a5c0['json']()['catch'](()=>({'message':_0x45a5c0['statusText']}));throw new Error(_0x6500f4['message']||_0x6500f4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x45a5c0['json']();},async 'deleteRoleDefinition'(_0x4945fd){const _0x140e6b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4945fd),{'method':'DELETE'});if(!_0x140e6b['ok']){const _0x290bef=await _0x140e6b['json']()['catch'](()=>({'message':_0x140e6b['statusText']}));throw new Error(_0x290bef['message']||_0x290bef['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x140e6b['json']();},async 'getAvailablePermissions'(){const _0x9dede0=await fetch(API_BASE+'/roles/available-permissions');if(!_0x9dede0['ok']){const _0x3a081c=await _0x9dede0['json']()['catch'](()=>({'message':_0x9dede0['statusText']}));throw new Error(_0x3a081c['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x9dede0['json']();},async 'getGitProviderAllowedTeams'(_0x31f3b3){const _0x3b28c5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31f3b3)+'/allowed-teams');if(!_0x3b28c5['ok']){const _0x186185=await _0x3b28c5['json']()['catch'](()=>({'message':_0x3b28c5['statusText']}));throw new Error(_0x186185['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3b28c5['json']();},async 'setGitProviderAllowedTeams'(_0x3b0a3f,_0x3eb949){const _0x1cccc1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3b0a3f)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3eb949})});if(!_0x1cccc1['ok']){const _0x33b5e4=await _0x1cccc1['json']()['catch'](()=>({'message':_0x1cccc1['statusText']}));throw new Error(_0x33b5e4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1cccc1['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 _0xe408c6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4f19c7=>{_0x4f19c7['el']['style']['bottom']=_0xe408c6+'px';const _0x54495a=_0x4f19c7['el']['offsetHeight']||toastState['defaultHeight'];_0xe408c6+=_0x54495a+toastState['gap'];});});}function removeToastById(_0x28857c){const _0x2de654=toastState['toasts']['findIndex'](_0x1760ae=>_0x1760ae['id']===_0x28857c);if(_0x2de654===-0x1)return;const _0x3b9501=toastState['toasts'][_0x2de654];if(_0x3b9501['timeoutId'])clearTimeout(_0x3b9501['timeoutId']);_0x3b9501['el']['classList']['remove']('show'),setTimeout(()=>_0x3b9501['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2de654,0x1),repositionAllToasts();}function registerToast(_0x3a67bc){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x3a67bc),repositionAllToasts(),_0x3a67bc['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(_0x421d63){if(_0x421d63===null||_0x421d63===undefined)return'';return String(_0x421d63)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2d79e8,_0x1c6188){if(_0x2d79e8&&typeof _0x2d79e8==='object'&&!Array['isArray'](_0x2d79e8))return{'code':typeof _0x2d79e8['text']==='string'?_0x2d79e8['text']:'','language':typeof _0x2d79e8['lang']==='string'?_0x2d79e8['lang']:''};return{'code':typeof _0x2d79e8==='string'?_0x2d79e8:'','language':typeof _0x1c6188==='string'?_0x1c6188:''};}function buildMermaidBlock(_0x394d40){const _0xe98077=String(_0x394d40||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0xe98077))+'\x22>'+escapeHtmlValue(_0xe98077)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x5509e0=new marked['Renderer'](),_0x4ac7da=_0x5509e0['code']['bind'](_0x5509e0);return _0x5509e0['code']=function(_0x2af773,_0x2eaba3,..._0x408687){const {code:_0x5ecbb2,language:_0x496d12}=getMarkdownCodeBlockPayload(_0x2af773,_0x2eaba3),_0x280a25=String(_0x496d12||'')['trim']()['toLowerCase']();if(_0x280a25==='mermaid')return buildMermaidBlock(_0x5ecbb2);const _0x367b4f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x367b4f&&_0x280a25)try{const _0xb4ba68=_0x367b4f['getLanguage'](_0x280a25)?_0x280a25:'plaintext',_0x428dcf=_0x367b4f['highlight'](_0x5ecbb2,{'language':_0xb4ba68})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x280a25)+'\x22>'+_0x428dcf+'</code></pre>';}catch(_0xde0ddc){console['error']('Syntax\x20highlighting\x20error:',_0xde0ddc);}return _0x4ac7da(_0x2af773,_0x2eaba3,..._0x408687);},sharedMarkedRenderer=_0x5509e0,_0x5509e0;}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 _0x34d3f7=window['mermaid'];if(!_0x34d3f7||typeof _0x34d3f7['initialize']!=='function')return _0x34d3f7||null;return _0x34d3f7['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x34d3f7;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2c48c4,_0x2380f4)=>{const _0x40b8e2=()=>_0x2c48c4(configureMermaidInstance()),_0x19446b=()=>{mermaidLoadPromise=null,_0x2380f4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x191e21=document['getElementById'](MERMAID_SCRIPT_ID);!_0x191e21&&(_0x191e21=document['createElement']('script'),_0x191e21['id']=MERMAID_SCRIPT_ID,_0x191e21['src']=MERMAID_SCRIPT_SRC,_0x191e21['async']=!![],document['head']['appendChild'](_0x191e21));if(window['mermaid']){_0x40b8e2();return;}_0x191e21['addEventListener']('load',_0x40b8e2,{'once':!![]}),_0x191e21['addEventListener']('error',_0x19446b,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x307e0b){const _0x2bbcf6=_0x307e0b['getAttribute']('data-mermaid-source');if(!_0x2bbcf6)return null;let _0x336bfd=_0x2bbcf6;try{_0x336bfd=decodeURIComponent(_0x2bbcf6);}catch{}return _0x307e0b['textContent']=_0x336bfd,_0x307e0b['removeAttribute']('data-processed'),_0x307e0b['removeAttribute']('aria-roledescription'),_0x307e0b['removeAttribute']('role'),_0x307e0b['removeAttribute']('aria-label'),_0x336bfd;}function collectMermaidNodes(_0x4ac068,_0x3342bd){if(!(_0x4ac068 instanceof Element))return;_0x4ac068['matches']('.mermaid[data-mermaid-source]')&&_0x3342bd['add'](_0x4ac068),_0x4ac068['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f2cb9=>{_0x3342bd['add'](_0x5f2cb9);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3457a7=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x1206cf=>setTimeout(_0x1206cf,0x0);_0x3457a7(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1fbf75=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1fbf75);});});}function queueMermaidRender(_0x455046){const _0x3ef73c=new Set();_0x455046 instanceof Document||_0x455046 instanceof DocumentFragment?_0x455046['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2a4d34=>_0x3ef73c['add'](_0x2a4d34)):collectMermaidNodes(_0x455046,_0x3ef73c);if(_0x3ef73c['size']===0x0)return;_0x3ef73c['forEach'](_0x2d4190=>pendingMermaidNodes['add'](_0x2d4190)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x41a111=Array['from'](pendingMermaidNodes)['filter'](_0x50228c=>_0x50228c['isConnected']);pendingMermaidNodes['clear']();if(_0x41a111['length']===0x0)return;const _0x256015=await loadMermaid();if(!_0x256015)return;configureMermaidInstance();const _0x50b689=getMermaidTheme();for(const _0x27fe25 of _0x41a111){const _0xd44390=_0x27fe25['getAttribute']('data-mermaid-source');if(!_0xd44390)continue;const _0x522a93=_0x27fe25['getAttribute']('data-processed')==='true';if(_0x522a93&&_0x27fe25['dataset']['mermaidTheme']===_0x50b689)continue;restoreMermaidSource(_0x27fe25);try{if(typeof _0x256015['run']==='function')await _0x256015['run']({'nodes':[_0x27fe25]});else typeof _0x256015['init']==='function'&&_0x256015['init'](undefined,[_0x27fe25]);_0x27fe25['dataset']['mermaidTheme']=_0x50b689,delete _0x27fe25['dataset']['mermaidError'];}catch(_0x25a0cd){console['error']('Mermaid\x20render\x20failed:',_0x25a0cd),restoreMermaidSource(_0x27fe25),_0x27fe25['dataset']['mermaidError']='true',delete _0x27fe25['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3de15b=>{_0x3de15b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3de15b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x47d08f=>{_0x47d08f['forEach'](_0x3cf580=>{_0x3cf580['addedNodes']['forEach'](_0x5422cc=>{_0x5422cc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5422cc);});});}),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'(_0x41d91b){const _0x480a74=new Date(_0x41d91b),_0x3bbd83=new Date(),_0x468d59=_0x3bbd83-_0x480a74,_0x544ae1=Math['floor'](_0x468d59/0x3e8),_0x5b153c=Math['floor'](_0x544ae1/0x3c),_0x4c1082=Math['floor'](_0x5b153c/0x3c),_0x10d9c3=Math['floor'](_0x4c1082/0x18);if(_0x544ae1<0x3c)return'now';if(_0x5b153c<0x3c)return _0x5b153c+'m\x20ago';if(_0x4c1082<0x18)return _0x4c1082+'h\x20ago';return _0x10d9c3+'d\x20ago';},'getStatusIcon'(_0x2c4035){switch(_0x2c4035){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x34d555){switch(_0x34d555){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'(_0x222621,_0x42a1ce=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x49a6b4={};_0x49a6b4['text/plain']=new Blob([_0x222621],{'type':'text/plain'});_0x42a1ce&&(_0x49a6b4['text/html']=new Blob([_0x42a1ce],{'type':'text/html'}));const _0x47fa48=new ClipboardItem(_0x49a6b4);return await navigator['clipboard']['write']([_0x47fa48]),!![];}catch(_0x35ecc3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35ecc3);}try{const _0x242f75=_0x2648fd=>{_0x2648fd['preventDefault'](),_0x2648fd['clipboardData']['setData']('text/plain',_0x222621),_0x42a1ce&&_0x2648fd['clipboardData']['setData']('text/html',_0x42a1ce);};document['addEventListener']('copy',_0x242f75);const _0x5eb457=document['execCommand']('copy');document['removeEventListener']('copy',_0x242f75);if(_0x5eb457)return!![];}catch(_0x3db46e){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x3db46e);}try{const _0x33a471=document['createElement']('textarea');_0x33a471['value']=_0x222621,_0x33a471['style']['position']='fixed',_0x33a471['style']['opacity']='0',_0x33a471['style']['pointerEvents']='none',document['body']['appendChild'](_0x33a471),_0x33a471['select']();const _0x51ae2b=document['execCommand']('copy');return document['body']['removeChild'](_0x33a471),_0x51ae2b;}catch(_0x482671){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x482671),![];}},'showToast'(_0x26ef86,_0x5f577b='info'){const _0x20fa1a=getNextToastId(),_0x42d080=document['createElement']('div');_0x42d080['className']='toast\x20toast-'+_0x5f577b,_0x42d080['textContent']=_0x26ef86,_0x42d080['dataset']['toastId']=_0x20fa1a,document['body']['appendChild'](_0x42d080);const _0x17c5ae=_0x5f577b==='error'?0x2710:0xbb8,_0x5030e1=setTimeout(()=>{removeToastById(_0x20fa1a);},_0x17c5ae),_0x3c7714={'id':_0x20fa1a,'el':_0x42d080,'timeoutId':_0x5030e1};return registerToast(_0x3c7714),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x42d080['classList']['add']('show');});}),_0x20fa1a;},'showError'(_0x4c4341){console['error'](_0x4c4341);const _0x4ff189=typeof _0x4c4341==='string'?_0x4c4341:_0x4c4341['message']||'An\x20error\x20occurred';this['showToast'](_0x4ff189,'error');},'showSuccess'(_0x2e4e23){this['showToast'](_0x2e4e23,'success');},'capitalize'(_0x347320){if(!_0x347320)return'';return _0x347320['charAt'](0x0)['toUpperCase']()+_0x347320['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x47000f){return escapeHtmlValue(_0x47000f);},'ansiToHtml'(_0x23b0e0){if(_0x23b0e0===null||_0x23b0e0===undefined)return'';let _0x2a747d=this['escapeHtml'](_0x23b0e0);const _0x22f154={'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'},_0x137e3d={'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 _0x12b9e3=0x0;return _0x2a747d=_0x2a747d['replace'](/\x1b\[([0-9;]*)m/g,(_0x208646,_0x51473f)=>{if(!_0x51473f||_0x51473f==='0'){const _0xaa3c42='</span>'['repeat'](_0x12b9e3);return _0x12b9e3=0x0,_0xaa3c42;}const _0x5eb5b2=_0x51473f['split'](';'),_0x3e4261=[];for(const _0x26aa98 of _0x5eb5b2){if(_0x26aa98==='1')_0x3e4261['push']('font-weight:bold');else{if(_0x26aa98==='2')_0x3e4261['push']('opacity:0.7');else{if(_0x26aa98==='3')_0x3e4261['push']('font-style:italic');else{if(_0x26aa98==='4')_0x3e4261['push']('text-decoration:underline');else{if(_0x26aa98==='9')_0x3e4261['push']('text-decoration:line-through');else{if(_0x22f154[_0x26aa98])_0x3e4261['push']('color:'+_0x22f154[_0x26aa98]);else{if(_0x137e3d[_0x26aa98])_0x3e4261['push']('background-color:'+_0x137e3d[_0x26aa98]);}}}}}}}if(_0x3e4261['length']>0x0)return _0x12b9e3++,'<span\x20style=\x22'+_0x3e4261['join'](';')+'\x22>';return'';}),_0x2a747d+='</span>'['repeat'](_0x12b9e3),_0x2a747d=_0x2a747d['replace'](/\\u001b\[([0-9;]*)m/g,(_0x235b39,_0x356d68)=>{if(!_0x356d68||_0x356d68==='0')return'';const _0x5cb999=_0x356d68['split'](';'),_0x5e3532=[];for(const _0x363084 of _0x5cb999){if(_0x363084==='1')_0x5e3532['push']('font-weight:bold');else{if(_0x22f154[_0x363084])_0x5e3532['push']('color:'+_0x22f154[_0x363084]);else{if(_0x137e3d[_0x363084])_0x5e3532['push']('background-color:'+_0x137e3d[_0x363084]);}}}if(_0x5e3532['length']>0x0)return'<span\x20style=\x22'+_0x5e3532['join'](';')+'\x22>';return'';}),_0x2a747d;},'showModal'({title:_0x172c94,content:_0x4400df,buttons:buttons=[]}){const _0x371e1a='\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'](_0x172c94)+'</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'+_0x4400df+'\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']((_0x121503,_0xe3ceed)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x121503['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xe3ceed+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x121503['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',_0x4290b7=document['createElement']('div');_0x4290b7['id']='utils-modal',_0x4290b7['className']='modal',_0x4290b7['innerHTML']=_0x371e1a,document['body']['appendChild'](_0x4290b7);const _0x51b66d=document['getElementById']('utils-modal-close');_0x51b66d&&_0x51b66d['addEventListener']('click',()=>this['hideModal']());const _0x51ebb0=_0x4290b7['querySelectorAll']('[data-btn-index]');_0x51ebb0['forEach'](_0x1d3c42=>{const _0x13e87e=parseInt(_0x1d3c42['dataset']['btnIndex']);buttons[_0x13e87e]?.['onClick']&&_0x1d3c42['addEventListener']('click',buttons[_0x13e87e]['onClick']);});const _0xba7c87=document['getElementById']('utils-modal-overlay');_0xba7c87&&_0xba7c87['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x32feb2=document['getElementById']('utils-modal');_0x32feb2&&_0x32feb2['remove']();},'parseKeyValuePairs'(_0x3fb9a2){const _0x307e8b={};if(!_0x3fb9a2)return _0x307e8b;return _0x3fb9a2['split'](/\r?\n/)['map'](_0x5ef0ce=>_0x5ef0ce['trim']())['filter'](Boolean)['forEach'](_0x1d87b1=>{const _0x426371=_0x1d87b1['indexOf']('=');if(_0x426371>0x0){const _0x2146ff=_0x1d87b1['slice'](0x0,_0x426371)['trim'](),_0x43e440=_0x1d87b1['slice'](_0x426371+0x1)['trim']();if(_0x2146ff)_0x307e8b[_0x2146ff]=_0x43e440;}}),_0x307e8b;},'debounce'(_0x4cd06b,_0x268790=0xfa){let _0x440117=null;return(..._0x34ad65)=>{clearTimeout(_0x440117),_0x440117=setTimeout(()=>_0x4cd06b['apply'](this,_0x34ad65),_0x268790);};},'formatTimestamp'(_0x1f4b32){if(!_0x1f4b32)return'N/A';const _0x1c3fef=new Date(_0x1f4b32);return _0x1c3fef['toLocaleDateString']()+'\x20'+_0x1c3fef['toLocaleTimeString']();},'getQueryParams'(){const _0x3b4e42=new URLSearchParams(window['location']['search']),_0x401593={};for(const [_0x39fbcb,_0xe61a6b]of _0x3b4e42){_0x401593[_0x39fbcb]=_0xe61a6b;}return _0x401593;},'formatDuration'(_0x3e0d33,_0x445b97){if(!_0x3e0d33)return'N/A';const _0x375355=new Date(_0x3e0d33),_0x368f01=_0x445b97?new Date(_0x445b97):new Date(),_0x550a43=_0x368f01-_0x375355;if(_0x550a43<0x0)return'0s';const _0x46e784=Math['floor'](_0x550a43/0x3e8),_0x46ecd5=Math['floor'](_0x46e784/0x3c),_0x56c039=Math['floor'](_0x46ecd5/0x3c),_0x571da4=Math['floor'](_0x56c039/0x18);if(_0x46e784<0x3c)return _0x46e784+'s';if(_0x46ecd5<0x3c)return _0x46ecd5+'m\x20'+_0x46e784%0x3c+'s';if(_0x56c039<0x18)return _0x56c039+'h\x20'+_0x46ecd5%0x3c+'m\x20'+_0x46e784%0x3c+'s';return _0x571da4+'d\x20'+_0x56c039%0x18+'h\x20'+_0x46ecd5%0x3c+'m';},'renderMarkdown'(_0x2c9e17,_0x2ac7d2={}){if(!_0x2c9e17)return'';_0x2c9e17=this['rewriteAttachmentLinks'](_0x2c9e17,_0x2ac7d2),_0x2c9e17=this['rewriteColorSyntax'](_0x2c9e17);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x2c9e17);}catch(_0x2ea72f){return console['error']('Markdown\x20parsing\x20error:',_0x2ea72f),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);}},'rewriteAttachmentLinks'(_0x629bc5,_0x41dc5c={}){const _0x46a46b=typeof _0x41dc5c['resolveAttachmentUrl']==='function'?_0x41dc5c['resolveAttachmentUrl']:_0x41dc5c['taskId']?_0x43d3d3=>API_BASE+'/tasks/'+_0x41dc5c['taskId']+'/attachments/'+encodeURIComponent(_0x43d3d3):null;if(!_0x46a46b)return _0x629bc5;return String(_0x629bc5)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x348bef,_0x50595b)=>{const _0x18d3db=String(_0x50595b||'')['trim']();if(!_0x18d3db)return _0x348bef;let _0x40b60e=_0x18d3db;try{_0x40b60e=decodeURIComponent(_0x18d3db);}catch{}const _0x372632=_0x46a46b(_0x40b60e);if(!_0x372632)return _0x348bef;return']('+_0x372632+')';});},'rewriteColorSyntax'(_0x186798){if(!_0x186798)return _0x186798;return String(_0x186798)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x12c87e,_0x403e1c,_0x56f372)=>{const _0x4d19ec=this['rewriteColorSyntax'](_0x56f372);return'<span\x20style=\x22color:\x20'+_0x403e1c+'\x22>'+_0x4d19ec+'</span>';});},'renderMarkdownFallback'(_0x5209d2,_0x24bc4d={}){if(!_0x5209d2)return'';_0x5209d2=_0x5209d2['replace'](/\r\n/g,'\x0a'),_0x5209d2=_0x5209d2['replace'](/\r/g,'\x0a'),_0x5209d2=this['rewriteAttachmentLinks'](_0x5209d2,_0x24bc4d);let _0x3b5dd3=this['escapeHtml'](_0x5209d2);return _0x3b5dd3=_0x3b5dd3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3b5dd3=_0x3b5dd3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3b5dd3=_0x3b5dd3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3b5dd3=_0x3b5dd3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3b5dd3=_0x3b5dd3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3b5dd3=_0x3b5dd3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3b5dd3=_0x3b5dd3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n\n/g,'</p><p>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n/g,'<br>'),'<p>'+_0x3b5dd3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x923f6d=new Uint8Array(0x10);crypto['getRandomValues'](_0x923f6d),_0x923f6d[0x6]=_0x923f6d[0x6]&0xf|0x40,_0x923f6d[0x8]=_0x923f6d[0x8]&0x3f|0x80;const _0x5115bb=Array['from'](_0x923f6d,_0x354249=>_0x354249['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5115bb['slice'](0x0,0x8)+'-'+_0x5115bb['slice'](0x8,0xc)+'-'+_0x5115bb['slice'](0xc,0x10)+'-'+_0x5115bb['slice'](0x10,0x14)+'-'+_0x5115bb['slice'](0x14);}};export class CustomSelect{constructor(_0x919831,_0x463a7f={}){this['nativeSelect']=_0x919831,this['options']=_0x463a7f,this['isOpen']=![],this['selectedValue']=_0x919831['value']||'',this['searchable']=_0x463a7f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4c58ff=document['createElement']('div');_0x4c58ff['className']='custom-select';const _0x518ebc=document['createElement']('div');_0x518ebc['className']='custom-select-trigger',_0x518ebc['setAttribute']('tabindex','0'),_0x518ebc['setAttribute']('role','button'),_0x518ebc['setAttribute']('aria-haspopup','listbox');const _0x3c05ba=document['createElement']('span');_0x3c05ba['className']='custom-select-trigger-text';const _0x512fe8=document['createElement']('span');_0x512fe8['className']='custom-select-arrow',_0x512fe8['textContent']='▼',_0x518ebc['appendChild'](_0x3c05ba),_0x518ebc['appendChild'](_0x512fe8);const _0x241d1f=document['createElement']('div');_0x241d1f['className']='custom-select-dropdown',_0x241d1f['setAttribute']('role','listbox');if(this['searchable']){const _0x360cf9=document['createElement']('div');_0x360cf9['className']='custom-select-search';const _0x1e0533=document['createElement']('input');_0x1e0533['type']='text',_0x1e0533['className']='custom-select-search-input',_0x1e0533['placeholder']='Type\x20to\x20search...',_0x1e0533['setAttribute']('aria-label','Search\x20options'),_0x1e0533['addEventListener']('input',_0x4e75e3=>{this['searchQuery']=_0x4e75e3['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1e0533['addEventListener']('keydown',_0x49e84e=>{if(_0x49e84e['key']==='Escape')_0x49e84e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x49e84e['key']==='Enter'){_0x49e84e['preventDefault'](),_0x49e84e['stopPropagation']();const _0xc39400=_0x241d1f['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xc39400){const _0xbd42f4=_0xc39400['getAttribute']('data-value');this['select'](_0xbd42f4);}}}}),_0x360cf9['appendChild'](_0x1e0533),_0x241d1f['appendChild'](_0x360cf9),this['searchInput']=_0x1e0533;}const _0x56a7a6=document['createElement']('div');_0x56a7a6['className']='custom-select-options',_0x241d1f['appendChild'](_0x56a7a6),_0x4c58ff['appendChild'](_0x518ebc),_0x4c58ff['appendChild'](_0x241d1f),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4c58ff,this['nativeSelect']),this['wrapper']=_0x4c58ff,this['trigger']=_0x518ebc,this['triggerText']=_0x3c05ba,this['dropdown']=_0x241d1f,this['optionsContainer']=_0x56a7a6,_0x518ebc['addEventListener']('click',()=>this['toggle']()),_0x518ebc['addEventListener']('keydown',_0x3a20a5=>this['handleKeydown'](_0x3a20a5)),document['addEventListener']('click',_0x127481=>{!_0x4c58ff['contains'](_0x127481['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1d486a=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1d486a['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411c08=new MutationObserver(()=>{this['updateDisabledState']();});_0x411c08['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5edfe9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5edfe9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x83351d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x83351d),this['trigger']['setAttribute']('aria-disabled',_0x83351d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x83351d?'-1':'0'),_0x83351d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x90593c=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4da6c4=_0x90593c['filter'](_0x1f13e=>!_0x1f13e['disabled']&&!_0x1f13e['hidden']);_0x90593c['forEach']((_0x434c81,_0x19c10d)=>{const _0x5b7b89=document['createElement']('div');_0x5b7b89['className']='custom-select-option',_0x5b7b89['textContent']=_0x434c81['textContent'],_0x5b7b89['setAttribute']('data-value',_0x434c81['value']),_0x5b7b89['setAttribute']('data-index',_0x19c10d),_0x5b7b89['setAttribute']('role','option'),_0x434c81['disabled']?_0x5b7b89['classList']['add']('disabled'):_0x5b7b89['addEventListener']('click',()=>this['select'](_0x434c81['value'])),_0x434c81['value']===this['selectedValue']&&_0x5b7b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5b7b89),this['allOptions']['push']({'element':_0x5b7b89,'text':_0x434c81['textContent']['toLowerCase'](),'value':_0x434c81['value'],'disabled':_0x434c81['disabled']});});if(this['searchable']&&this['searchInput']){const _0x13369d=this['searchInput']['parentElement'];_0x4da6c4['length']>0x3?_0x13369d['style']['display']='':_0x13369d['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4f9a76=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x20184e=>{if(!_0x4f9a76||_0x20184e['disabled'])_0x20184e['element']['style']['display']='';else{const _0x2ae4e7=_0x20184e['text']['includes'](_0x4f9a76);_0x20184e['element']['style']['display']=_0x2ae4e7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xc60e15){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xc60e15,this['nativeSelect']['value']=_0xc60e15;const _0x484460=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x484460),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x458e0e=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x458e0e&&(this['triggerText']['textContent']=_0x458e0e['textContent'],_0x458e0e['disabled']||_0x458e0e['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3505b0=>{_0x3505b0['getAttribute']('data-value')===this['selectedValue']?_0x3505b0['classList']['add']('selected'):_0x3505b0['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 _0x41d82a=window['getComputedStyle'](this['dropdown']);if(_0x41d82a['position']==='fixed'){const _0x5918d1=this['trigger']['getBoundingClientRect'](),_0x3e89d4=parseInt(_0x41d82a['maxHeight'])||0xc8,_0x33dd12=window['innerHeight'],_0x39096a=_0x33dd12-_0x5918d1['bottom'],_0x20c1ea=_0x5918d1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x16acb5;_0x39096a<_0x3e89d4&&_0x20c1ea>_0x39096a?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x33dd12-_0x5918d1['top']+'px',_0x16acb5=Math['min'](_0x3e89d4,_0x20c1ea-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5918d1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x16acb5=Math['min'](_0x3e89d4,_0x39096a-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px');if(this['optionsContainer']){let _0x116345=_0x16acb5;if(this['searchInput']){const _0x5534ee=this['searchInput']['parentElement'];_0x5534ee&&(_0x116345-=_0x5534ee['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x116345)+'px';}this['dropdown']['style']['left']=_0x5918d1['left']+'px',this['dropdown']['style']['width']=_0x5918d1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x44bf77=this['searchInput']['parentElement'];_0x44bf77&&_0x44bf77['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'](_0x150bdb){if(this['nativeSelect']['disabled'])return;if(_0x150bdb['key']==='Enter'||_0x150bdb['key']==='\x20')_0x150bdb['preventDefault'](),this['toggle']();else _0x150bdb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x58db7f='\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',_0x58db7f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2677b6=document['getElementById']('confirm-dialog-close'),_0x53becd=document['getElementById']('confirm-dialog-cancel'),_0x1767a8=document['getElementById']('confirm-dialog-confirm'),_0x4d7176=this['_modal']['querySelector']('.modal-overlay');_0x2677b6['addEventListener']('click',()=>this['_resolve'](![])),_0x53becd['addEventListener']('click',()=>this['_resolve'](![])),_0x1767a8['addEventListener']('click',()=>this['_resolve'](!![])),_0x4d7176['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x64230=>{if(_0x64230['key']==='Escape')_0x64230['preventDefault'](),this['_resolve'](![]);else _0x64230['key']==='Enter'&&(_0x64230['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x152b50,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x64604c=>{this['_resolvePromise']=_0x64604c,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x152b50;const _0x3d59c4=document['getElementById']('confirm-dialog-cancel'),_0x35cec2=document['getElementById']('confirm-dialog-confirm');_0x3d59c4['textContent']=cancelText,_0x35cec2['textContent']=confirmText,_0x35cec2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x35cec2['focus']();});},'_resolve'(_0x1d80d1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1d80d1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xb14834,_0x389c4f={}){this['container']=_0xb14834,this['options']={'placeholder':_0x389c4f['placeholder']||'Type\x20to\x20search...','maxItems':_0x389c4f['maxItems']||0x64,'loadItems':_0x389c4f['loadItems']||(async()=>[]),'renderItem':_0x389c4f['renderItem']||(_0x26b262=>({'primary':String(_0x26b262),'secondary':''})),'onSelect':_0x389c4f['onSelect']||(()=>{}),'filterItems':_0x389c4f['filterItems']||null,'getItemValue':_0x389c4f['getItemValue']||(_0x484c82=>_0x484c82),'sortItems':_0x389c4f['sortItems']||null,'debounceMs':_0x389c4f['debounceMs']||0xc8,'minCharsForSearch':_0x389c4f['minCharsForSearch']||0x0,'emptyMessage':_0x389c4f['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x389c4f['loadingMessage']||'Loading...','preload':_0x389c4f['preload']!==![],'searchMode':_0x389c4f['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',_0x3c431a=>this['onBlur'](_0x3c431a)),this['input']['addEventListener']('input',_0xd4a5f7=>this['onInput'](_0xd4a5f7)),this['input']['addEventListener']('keydown',_0x126f21=>this['onKeydown'](_0x126f21)),this['clearBtn']['addEventListener']('mousedown',_0x1b3292=>{_0x1b3292['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4477bd=>{_0x4477bd['preventDefault']();}),document['addEventListener']('click',_0x1c7445=>{!this['wrapper']['contains'](_0x1c7445['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(_0x318d46){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x318d46);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x4fca3e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x399e7c){const _0x1598e5=_0x399e7c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1598e5);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1598e5):this['loadAndShow'](_0x1598e5);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x140a40){switch(_0x140a40['key']){case'ArrowDown':_0x140a40['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x140a40['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x140a40['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x140a40['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x26ec6f){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x228b5f=this['selectedIndex']+_0x26ec6f;if(_0x228b5f>=0x0&&_0x228b5f<this['filteredItems']['length']){this['selectedIndex']=_0x228b5f,this['updateSelectionHighlight']();const _0x158124=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x158124[this['selectedIndex']]&&_0x158124[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x54f9ae=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x54f9ae['forEach']((_0x43cc24,_0x57cd84)=>{_0x43cc24['classList']['toggle']('keyboard-selected',_0x57cd84===this['selectedIndex']);});}async['loadAndShow'](_0x225fc4){this['showLoading']();try{const _0x7e355b=await this['options']['loadItems'](_0x225fc4);if(this['options']['searchMode']==='server'){let _0x55d72f=_0x7e355b;this['options']['sortItems']&&(_0x55d72f=this['options']['sortItems']([..._0x7e355b]));this['filteredItems']=_0x55d72f;const _0x160684=this['filteredItems']['length']>=this['options']['maxItems'];_0x160684&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x160684),this['open']();}else this['allItems']=_0x7e355b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x225fc4);}catch(_0x390726){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x390726),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3c1978){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3c1978):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49fc1b=this['filteredItems']['length']>=this['options']['maxItems'];_0x49fc1b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49fc1b),this['open']();}['renderItems'](_0x5bcb){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']((_0x290be0,_0x3aabd3)=>{const _0x16103f=document['createElement']('div');_0x16103f['className']='autocomplete-select-item',_0x16103f['setAttribute']('role','option'),_0x16103f['setAttribute']('data-index',_0x3aabd3);const _0x198075=this['options']['renderItem'](_0x290be0);let _0x232837='';_0x198075['icon']&&(_0x232837='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x198075['iconClass']||'')+'\x22>'+_0x198075['icon']+'</span>'),_0x16103f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x232837+'\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'](_0x198075['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x198075['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x198075['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x16103f['addEventListener']('click',()=>{this['selectItem'](_0x290be0);}),_0x16103f['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3aabd3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x16103f);}),_0x5bcb?(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'](_0x414312){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x414312)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5a880b){this['selectedItem']=_0x5a880b;const _0x3091cd=this['options']['renderItem'](_0x5a880b);this['input']['value']=_0x3091cd['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5a880b);}['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'](_0x57678c){if(_0x57678c){this['selectedItem']=_0x57678c;const _0x4292ef=this['options']['renderItem'](_0x57678c);this['input']['value']=_0x4292ef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x476c4b){this['allItems']=_0x476c4b,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'](_0x334b4a){this['input']['placeholder']=_0x334b4a;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3d6792=null){const _0x399757=document['getElementById']('admin-menu-container'),_0x2d5499=document['getElementById']('admin-menu-btn'),_0xec0951=document['getElementById']('admin-menu');if(!_0x399757||!_0x2d5499||!_0xec0951)return;try{!_0x3d6792&&(_0x3d6792=await API['getCurrentUser']());if(_0x3d6792){const _0x1d9b96=window['Permissions'],_0x1db6f1=_0x1d9b96['hasServerPermission'](_0x3d6792,'*')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:manage')||_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')||_0x1d9b96['hasTeamPermission'](_0x3d6792,'teams:manage')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:view_details');if(!_0x1db6f1)return;_0x399757['hidden']=![];if(!_0x1d9b96['hasServerPermission'](_0x3d6792,'*')){const _0x37e46f=_0xec0951['querySelectorAll']('.admin-menu-item');_0x37e46f['forEach'](_0x5e4dbf=>{const _0x184fb8=_0x5e4dbf['querySelector']('.option-text')?.['textContent']?.['trim']();_0x184fb8==='Users'&&!_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Skills'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Settings'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Health'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Git\x20History'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Roles'&&(_0x5e4dbf['hidden']=!![]);});}_0x2d5499['addEventListener']('click',_0x5bbd7e=>{_0x5bbd7e['stopPropagation']();const _0x58a6ca=document['getElementById']('actions-menu');if(_0x58a6ca)_0x58a6ca['hidden']=!![];_0xec0951['hidden']=!_0xec0951['hidden'];}),document['addEventListener']('click',_0x5a7159=>{!_0xec0951['hidden']&&!_0x2d5499['contains'](_0x5a7159['target'])&&!_0xec0951['contains'](_0x5a7159['target'])&&(_0xec0951['hidden']=!![]);}),document['addEventListener']('keydown',_0x544058=>{_0x544058['key']==='Escape'&&!_0xec0951['hidden']&&(_0xec0951['hidden']=!![]);});const _0xf93d10=document['getElementById']('server-health-btn');_0xf93d10&&_0xf93d10['addEventListener']('click',async()=>{_0xec0951['hidden']=!![];const {openServerHealthModal:_0x1dbb7e}=await import('./server-health.js');_0x1dbb7e();});}}catch(_0x2037e3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2037e3['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 _0x2ef9b2=window['location']['pathname'],_0x4ce050=_0x2ef9b2['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x4ce050)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x4ce050[0x1]),_0x4ce050[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x46bdcf={}){const _0x5c4c8b=new URLSearchParams();_0x46bdcf['userId']&&_0x5c4c8b['set']('userId',String(_0x46bdcf['userId']));_0x46bdcf['automation']&&_0x5c4c8b['set']('automation',String(_0x46bdcf['automation']));const _0x254a1e=API_BASE+'/tasks/stats'+(_0x5c4c8b['toString']()?'?'+_0x5c4c8b['toString']():''),_0x3179be=await fetch(_0x254a1e);if(!_0x3179be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3179be['statusText']);return await _0x3179be['json']();},async 'getTasks'(_0x20bf1f={}){const _0x22618e=new URLSearchParams();_0x20bf1f['status']&&_0x22618e['set']('status',String(_0x20bf1f['status']));_0x20bf1f['environment']&&_0x22618e['set']('environment',String(_0x20bf1f['environment']));_0x20bf1f['automation']&&_0x22618e['set']('automation',String(_0x20bf1f['automation']));if(_0x20bf1f['include']){const _0x5cbdd9=Array['isArray'](_0x20bf1f['include'])?_0x20bf1f['include']['join'](','):String(_0x20bf1f['include']);_0x5cbdd9&&_0x22618e['set']('include',_0x5cbdd9);}_0x20bf1f['filter']&&_0x22618e['set']('filter',String(_0x20bf1f['filter']));_0x20bf1f['page']&&_0x22618e['set']('page',String(_0x20bf1f['page']));_0x20bf1f['limit']&&_0x22618e['set']('limit',String(_0x20bf1f['limit']));_0x20bf1f['userId']&&_0x22618e['set']('userId',String(_0x20bf1f['userId']));_0x20bf1f['search']&&_0x22618e['set']('search',String(_0x20bf1f['search']));_0x20bf1f['includeChildTasks']&&_0x22618e['set']('includeChildTasks','true');const _0x137c02=API_BASE+'/tasks'+(_0x22618e['toString']()?'?'+_0x22618e['toString']():''),_0x26c3b8=await fetch(_0x137c02);if(!_0x26c3b8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x26c3b8['statusText']);return await _0x26c3b8['json']();},async 'getAutomations'(_0x1bc77c={}){const _0x150a35=new URLSearchParams();_0x1bc77c['environment']&&_0x150a35['set']('environment',String(_0x1bc77c['environment']));const _0x4c9ea2=await fetch(API_BASE+'/api/automations'+(_0x150a35['toString']()?'?'+_0x150a35['toString']():''));if(!_0x4c9ea2['ok']){const _0x15c602=await _0x4c9ea2['json']()['catch'](()=>({}));throw new Error(_0x15c602['message']||_0x15c602['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c9ea2['statusText']);}return await _0x4c9ea2['json']();},async 'getAutomation'(_0x4ae6b3){const _0x3f52f7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4ae6b3));if(!_0x3f52f7['ok']){const _0x2b8a9a=await _0x3f52f7['json']()['catch'](()=>({}));throw new Error(_0x2b8a9a['message']||_0x2b8a9a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3f52f7['statusText']);}return await _0x3f52f7['json']();},async 'createAutomation'(_0x2e7ee9){const _0x56c569=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e7ee9||{})});if(!_0x56c569['ok']){const _0x48e6d5=await _0x56c569['json']()['catch'](()=>({}));throw new Error(_0x48e6d5['message']||_0x48e6d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x56c569['statusText']);}return await _0x56c569['json']();},async 'updateAutomation'(_0x564cb4,_0x25159e){const _0xf7fc92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x564cb4),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25159e||{})});if(!_0xf7fc92['ok']){const _0x58de9d=await _0xf7fc92['json']()['catch'](()=>({}));throw new Error(_0x58de9d['message']||_0x58de9d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xf7fc92['statusText']);}return await _0xf7fc92['json']();},async 'deleteAutomation'(_0x30ccac){const _0x5758b0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30ccac),{'method':'DELETE'});if(!_0x5758b0['ok']){const _0x495aaa=await _0x5758b0['json']()['catch'](()=>({}));throw new Error(_0x495aaa['message']||_0x495aaa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5758b0['statusText']);}return await _0x5758b0['json']();},async 'triggerAutomation'(_0x351a2e){const _0x2a38d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x351a2e)+'/trigger',{'method':'POST'});if(!_0x2a38d8['ok']){const _0x38ff17=await _0x2a38d8['json']()['catch'](()=>({}));throw new Error(_0x38ff17['message']||_0x38ff17['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x2a38d8['statusText']);}return await _0x2a38d8['json']();},async 'setAutomationEnabled'(_0xe6b035,_0x690c59){const _0x33d057=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xe6b035)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x690c59})});if(!_0x33d057['ok']){const _0x1372b9=await _0x33d057['json']()['catch'](()=>({}));throw new Error(_0x1372b9['message']||_0x1372b9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x33d057['statusText']);}return await _0x33d057['json']();},async 'getAutomationHistory'(_0x31bb2a,_0x300441=0x32){const _0x8fc551=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31bb2a)+'/history?limit='+encodeURIComponent(String(_0x300441)));if(!_0x8fc551['ok']){const _0x2f233d=await _0x8fc551['json']()['catch'](()=>({}));throw new Error(_0x2f233d['message']||_0x2f233d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x8fc551['statusText']);}return await _0x8fc551['json']();},async 'getTask'(_0x1b2310,_0x5b2e0f={}){const _0x2deda8=new URLSearchParams();if(_0x5b2e0f['include']){const _0x1d5b9f=Array['isArray'](_0x5b2e0f['include'])?_0x5b2e0f['include']['join'](','):String(_0x5b2e0f['include']);if(_0x1d5b9f)_0x2deda8['set']('include',_0x1d5b9f);}const _0x4f8e32=await fetch(API_BASE+'/tasks/'+_0x1b2310+(_0x2deda8['toString']()?'?'+_0x2deda8['toString']():''));if(!_0x4f8e32['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4f8e32['statusText']);return await _0x4f8e32['json']();},async 'getTaskResults'(_0x1d836b){const _0x18c7bb=await fetch(API_BASE+'/tasks/'+_0x1d836b+'/results');if(!_0x18c7bb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x18c7bb['statusText']);return await _0x18c7bb['json']();},async 'getTaskPatches'(_0x21b1cd){const _0x2df16f=await fetch(API_BASE+'/tasks/'+_0x21b1cd+'/patches');if(!_0x2df16f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2df16f['statusText']);return await _0x2df16f['json']();},async 'getTaskAttachments'(_0x48cfab){const _0x424d49=await fetch(API_BASE+'/tasks/'+_0x48cfab+'/attachments');if(!_0x424d49['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x424d49['statusText']);return await _0x424d49['json']();},async 'uploadAttachments'(_0x3afbbf,_0x4118e1){const _0x36daf3=new FormData();for(const _0x6ca029 of _0x4118e1){_0x36daf3['append']('attachments',_0x6ca029);}const _0x997fea=await fetch(API_BASE+'/tasks/'+_0x3afbbf+'/attachments',{'method':'POST','body':_0x36daf3});if(!_0x997fea['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x997fea['statusText']);return await _0x997fea['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1eb182=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1eb182['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1eb182['json']();}catch(_0x5239a8){return{'available':![],'reason':_0x5239a8['message']};}},async 'generateTaskName'(_0x129a23){try{const _0x495b5d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x129a23})});return await _0x495b5d['json']();}catch(_0x51abd6){return{'success':![],'error':_0x51abd6['message']};}},async 'createTask'(_0x26ea82){let _0x2415b5,_0x5c6f96={};if(_0x26ea82['files']&&_0x26ea82['files']['length']>0x0){const _0x1711fd=new FormData();for(const [_0x1f08fc,_0x602d1a]of Object['entries'](_0x26ea82)){if(_0x1f08fc!=='files'){if(_0x602d1a==null)continue;typeof _0x602d1a==='object'?_0x1711fd['append'](_0x1f08fc,JSON['stringify'](_0x602d1a)):_0x1711fd['append'](_0x1f08fc,String(_0x602d1a));}}for(const _0x25b31b of _0x26ea82['files']){_0x1711fd['append']('attachments',_0x25b31b);}_0x2415b5=_0x1711fd;}else _0x5c6f96['Content-Type']='application/json',_0x2415b5=JSON['stringify'](_0x26ea82);const _0x33a0ee=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5c6f96,'body':_0x2415b5});if(!_0x33a0ee['ok']){const _0x147e41=await _0x33a0ee['json'](),_0x5d8e53=new Error(_0x147e41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x33a0ee['statusText']),{message:_0x412fcf,..._0x987a0e}=_0x147e41;Object['assign'](_0x5d8e53,_0x987a0e);throw _0x5d8e53;}return await _0x33a0ee['json']();},async 'createTestTask'(_0x4dd912){const _0x496fc1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dd912)});if(!_0x496fc1['ok']){const _0x9f5e88=await _0x496fc1['json']();throw new Error(_0x9f5e88['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x496fc1['statusText']);}return await _0x496fc1['json']();},async 'createEphemeralTest'(_0x52992d){const _0x35229c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52992d)});if(!_0x35229c['ok']){const _0x366796=await _0x35229c['json']();throw new Error(_0x366796['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35229c['statusText']);}return await _0x35229c['json']();},async 'createDeployTask'(_0xf60dcb){const _0x3f89d9=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf60dcb)});if(!_0x3f89d9['ok']){const _0x300f95=await _0x3f89d9['json']();throw new Error(_0x300f95['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3f89d9['statusText']);}return await _0x3f89d9['json']();},async 'getEnvironments'(){const _0xd0fe3f=await fetch(API_BASE+'/environments');if(!_0xd0fe3f['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd0fe3f['statusText']);return await _0xd0fe3f['json']();},async 'getEnvironment'(_0x239c3a){const _0x41a29f=await fetch(API_BASE+'/environments/'+_0x239c3a);if(!_0x41a29f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x41a29f['statusText']);return await _0x41a29f['json']();},async 'getEnvironmentRepoHistory'(_0x572590,_0x155342,_0x2683f0={}){if(!_0x572590||!_0x155342)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x30f955=new URLSearchParams();if(_0x2683f0['limit'])_0x30f955['set']('limit',String(_0x2683f0['limit']));if(_0x2683f0['offset'])_0x30f955['set']('offset',String(_0x2683f0['offset']));if(_0x2683f0['search'])_0x30f955['set']('search',String(_0x2683f0['search']));if(_0x2683f0['branch'])_0x30f955['set']('branch',String(_0x2683f0['branch']));const _0xeb6c43=API_BASE+'/environments/'+encodeURIComponent(_0x572590)+'/repos/'+encodeURIComponent(_0x155342)+'/git/history',_0x33cb43=await fetch(''+_0xeb6c43+(_0x30f955['toString']()?'?'+_0x30f955['toString']():''));if(!_0x33cb43['ok']){const _0x1a161d=await _0x33cb43['json']()['catch'](()=>({}));throw new Error(_0x1a161d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x33cb43['statusText']);}return await _0x33cb43['json']();},async 'getEnvironmentRepoCommit'(_0x48fd41,_0x5ddefa,_0x17c7fc){if(!_0x48fd41||!_0x5ddefa||!_0x17c7fc)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22c594=API_BASE+'/environments/'+encodeURIComponent(_0x48fd41)+'/repos/'+encodeURIComponent(_0x5ddefa)+'/git/commits/'+encodeURIComponent(_0x17c7fc),_0x5ddfae=await fetch(_0x22c594);if(!_0x5ddfae['ok']){const _0x276417=await _0x5ddfae['json']()['catch'](()=>({}));throw new Error(_0x276417['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ddfae['statusText']);}return await _0x5ddfae['json']();},async 'getEnvironmentRepoBranches'(_0x3af94f,_0x4c0c10){if(!_0x3af94f||!_0x4c0c10)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x104641=API_BASE+'/environments/'+encodeURIComponent(_0x3af94f)+'/repos/'+encodeURIComponent(_0x4c0c10)+'/git/branches',_0x106e14=await fetch(_0x104641);if(!_0x106e14['ok']){const _0x1acc7e=await _0x106e14['json']()['catch'](()=>({}));throw new Error(_0x1acc7e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x106e14['statusText']);}return await _0x106e14['json']();},async 'revertEnvironmentRepoCommit'(_0x23ac6e,_0x2a752c,_0x2999f6,_0x284b75={}){if(!_0x23ac6e||!_0x2a752c||!_0x2999f6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4f6543=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x23ac6e)+'/repos/'+encodeURIComponent(_0x2a752c)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2999f6,..._0x284b75})});if(!_0x4f6543['ok']){const _0x1a0043=await _0x4f6543['json']()['catch'](()=>({}));throw new Error(_0x1a0043['message']||_0x1a0043['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4f6543['statusText']);}return await _0x4f6543['json']();},async 'getTemplates'(_0x5bd1dd={}){const _0x3af1e0=new URLSearchParams();if(_0x5bd1dd['include']){const _0x4a4ed9=Array['isArray'](_0x5bd1dd['include'])?_0x5bd1dd['include']['join'](','):String(_0x5bd1dd['include']);if(_0x4a4ed9)_0x3af1e0['set']('include',_0x4a4ed9);}const _0x296c5d=await fetch(API_BASE+'/templates'+(_0x3af1e0['toString']()?'?'+_0x3af1e0['toString']():''));if(!_0x296c5d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x296c5d['statusText']);return await _0x296c5d['json']();},async 'getTemplatesForEnvironment'(_0x45d78d,_0x3f3170={}){if(!_0x45d78d)throw new Error('Environment\x20name\x20is\x20required');const _0x3b923e=new URLSearchParams();if(_0x3f3170['include']){const _0x18bfa1=Array['isArray'](_0x3f3170['include'])?_0x3f3170['include']['join'](','):String(_0x3f3170['include']);if(_0x18bfa1)_0x3b923e['set']('include',_0x18bfa1);}const _0x22d542=await fetch(API_BASE+'/templates/'+_0x45d78d+(_0x3b923e['toString']()?'?'+_0x3b923e['toString']():''));if(!_0x22d542['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45d78d+':\x20'+_0x22d542['statusText']);return await _0x22d542['json']();},async 'getTemplate'(_0x27876e,_0x4374e5,_0xc82f9={}){if(!_0x27876e||!_0x4374e5)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1b462a=new URLSearchParams();if(_0xc82f9['include']){const _0x522470=Array['isArray'](_0xc82f9['include'])?_0xc82f9['include']['join'](','):String(_0xc82f9['include']);if(_0x522470)_0x1b462a['set']('include',_0x522470);}const _0x19a08f=await fetch(API_BASE+'/templates/'+_0x27876e+'/'+_0x4374e5+(_0x1b462a['toString']()?'?'+_0x1b462a['toString']():''));if(!_0x19a08f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x19a08f['statusText']);return await _0x19a08f['json']();},async 'getTaskLogs'(_0x57c129,_0x2dc770={}){if(!_0x57c129)throw new Error('Task\x20ID\x20is\x20required');const _0x2d6bbb=new URLSearchParams();_0x2dc770['tail']&&_0x2d6bbb['set']('tail',String(_0x2dc770['tail']));const _0x2a1258=await fetch(API_BASE+'/tasks/'+_0x57c129+'/logs'+(_0x2d6bbb['toString']()?'?'+_0x2d6bbb['toString']():''));if(!_0x2a1258['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1258['statusText']);return await _0x2a1258['text']();},async 'getContainers'(){const _0x2ccd42=await fetch(API_BASE+'/containers');if(!_0x2ccd42['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ccd42['statusText']);return await _0x2ccd42['json']();},async 'getContainer'(_0x2f2754){const _0x1053f0=await fetch(API_BASE+'/containers/'+_0x2f2754);if(!_0x1053f0['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1053f0['statusText']);return await _0x1053f0['json']();},async 'startInteractiveContainer'(_0x39f7bc){const _0x56d396=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39f7bc)});if(!_0x56d396['ok']){const _0x2ad9b5=await _0x56d396['json']()['catch'](()=>({}));throw new Error(_0x2ad9b5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x56d396['statusText']);}return await _0x56d396['json']();},async 'stopContainer'(_0x12bb3a){const _0x2582ff=await fetch(API_BASE+'/containers/'+_0x12bb3a,{'method':'DELETE'});if(!_0x2582ff['ok']){const _0x500ea0=await _0x2582ff['json']()['catch'](()=>({}));throw new Error(_0x500ea0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2582ff['statusText']);}return await _0x2582ff['json']();},async 'stopTask'(_0x1fea49){if(!_0x1fea49)throw new Error('Task\x20ID\x20is\x20required');const _0x4b905c=await fetch(API_BASE+'/tasks/'+_0x1fea49+'/stop',{'method':'POST'});if(!_0x4b905c['ok']){const _0x23b35b=await _0x4b905c['json']()['catch'](()=>({}));throw new Error(_0x23b35b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4b905c['statusText']);}return await _0x4b905c['json']();},async 'interruptTask'(_0xbdc141){if(!_0xbdc141)throw new Error('Task\x20ID\x20is\x20required');const _0x50a040=await fetch(API_BASE+'/tasks/'+_0xbdc141+'/interrupt',{'method':'POST'});if(!_0x50a040['ok']){const _0x52db41=await _0x50a040['json']()['catch'](()=>({}));throw new Error(_0x52db41['error']||_0x52db41['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x50a040['statusText']);}return await _0x50a040['json']();},async 'startTask'(_0x5e0c2d){if(!_0x5e0c2d)throw new Error('Task\x20ID\x20is\x20required');const _0x43fa7c=await fetch(API_BASE+'/tasks/'+_0x5e0c2d+'/start',{'method':'POST'});if(!_0x43fa7c['ok']){const _0x91b938=await _0x43fa7c['json']()['catch'](()=>({}));throw new Error(_0x91b938['error']||'Failed\x20to\x20start\x20task:\x20'+_0x43fa7c['statusText']);}return await _0x43fa7c['json']();},async 'deleteTask'(_0x4bc60b){if(!_0x4bc60b)throw new Error('Task\x20ID\x20is\x20required');const _0xb78bd9=await fetch(API_BASE+'/tasks/'+_0x4bc60b,{'method':'DELETE'});if(!_0xb78bd9['ok']){const _0x571849=await _0xb78bd9['json']()['catch'](()=>({}));throw new Error(_0x571849['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xb78bd9['statusText']);}return await _0xb78bd9['json']();},async 'refreshTasksFromDisk'(){const _0x242317=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x242317['ok']){const _0x4c3359=await _0x242317['json']()['catch'](()=>({}));throw new Error(_0x4c3359['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x242317['statusText']);}return await _0x242317['json']();},async 'approveTask'(_0x7c435e,_0x16b58e={}){if(!_0x7c435e)throw new Error('Task\x20ID\x20is\x20required');const _0x104ef1={'commit_message':_0x16b58e['commit_message']||'','pull':_0x16b58e['pull']??![],'push':_0x16b58e['push']??![]};_0x16b58e['new_branch']&&(_0x104ef1['new_branch']=_0x16b58e['new_branch']);const _0x3ec977=await fetch(API_BASE+'/tasks/'+_0x7c435e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x104ef1)});if(!_0x3ec977['ok']){const _0x9215cb=await _0x3ec977['json']()['catch'](()=>({}));let _0xf8c66c=_0x9215cb['error']||_0x9215cb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3ec977['statusText'];if(_0x9215cb['results']&&Array['isArray'](_0x9215cb['results'])){const _0x2f2fab=_0x9215cb['results']['filter'](_0x339bfa=>!_0x339bfa['success']&&_0x339bfa['error']);_0x2f2fab['length']>0x0&&(_0xf8c66c=_0x2f2fab[0x0]['error']);}throw new Error(_0xf8c66c);}return await _0x3ec977['json']();},async 'getPullRequestInfo'(_0x109ccb){if(!_0x109ccb)throw new Error('Task\x20ID\x20is\x20required');const _0x422f0a=await fetch(API_BASE+'/tasks/'+_0x109ccb+'/pull-request-info');if(!_0x422f0a['ok']){const _0x20b47f=await _0x422f0a['json']()['catch'](()=>({}));throw new Error(_0x20b47f['error']||_0x20b47f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x422f0a['statusText']);}return await _0x422f0a['json']();},async 'createPullRequests'(_0x46876,_0x16a1da){if(!_0x46876)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16a1da||!Array['isArray'](_0x16a1da))throw new Error('repos\x20array\x20is\x20required');const _0x480fa7=await fetch(API_BASE+'/tasks/'+_0x46876+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x16a1da})});if(!_0x480fa7['ok']){const _0x4d8bbb=await _0x480fa7['json']()['catch'](()=>({}));let _0x545f05=_0x4d8bbb['error']||_0x4d8bbb['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x480fa7['statusText'];if(_0x4d8bbb['results']&&Array['isArray'](_0x4d8bbb['results'])){const _0x3525ac=_0x4d8bbb['results']['filter'](_0x3ce31e=>!_0x3ce31e['success']&&_0x3ce31e['error']);_0x3525ac['length']>0x0&&(_0x545f05=_0x3525ac[0x0]['error']);}throw new Error(_0x545f05);}return await _0x480fa7['json']();},async 'syncRepos'(_0x52cfe3){if(!_0x52cfe3)throw new Error('Task\x20ID\x20is\x20required');const _0x48621c=await fetch(API_BASE+'/tasks/'+_0x52cfe3+'/sync-repos',{'method':'POST'});if(!_0x48621c['ok']){const _0x1511ef=await _0x48621c['json']()['catch'](()=>({}));throw new Error(_0x1511ef['error']||_0x1511ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x48621c['statusText']);}return await _0x48621c['json']();},async 'getIbmiSyncInfo'(_0x145012){if(!_0x145012)throw new Error('Task\x20ID\x20is\x20required');const _0x165200=await fetch(API_BASE+'/tasks/'+_0x145012+'/ibmi-sync-info');if(!_0x165200['ok']){const _0x5ea393=await _0x165200['json']()['catch'](()=>({}));throw new Error(_0x5ea393['error']||_0x5ea393['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x165200['json']();},async 'getSyncFiles'(_0x552085){if(!_0x552085)throw new Error('Task\x20ID\x20is\x20required');const _0x651228=await fetch(API_BASE+'/tasks/'+_0x552085+'/sync-to-ibmi/files');if(!_0x651228['ok']){const _0x36fb7c=await _0x651228['json']()['catch'](()=>({}));throw new Error(_0x36fb7c['error']||_0x36fb7c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x651228['json']();},async 'syncToIbmi'(_0x475201,_0x5184c6,_0x1eb706=null,_0x21e532=null,_0x54058b=null){if(!_0x475201)throw new Error('Task\x20ID\x20is\x20required');const _0x17479a={'library':_0x5184c6};if(_0x1eb706)_0x17479a['user']=_0x1eb706;if(_0x21e532)_0x17479a['password']=_0x21e532;if(_0x54058b)_0x17479a['files']=_0x54058b;const _0x24891b=await fetch(API_BASE+'/tasks/'+_0x475201+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17479a)});if(!_0x24891b['ok']){const _0x3f71ed=await _0x24891b['json']()['catch'](()=>({}));throw new Error(_0x3f71ed['error']||_0x3f71ed['message']||'Sync\x20failed');}return await _0x24891b['json']();},async 'getIbmiSyncLog'(_0x2759c9){if(!_0x2759c9)throw new Error('Task\x20ID\x20is\x20required');const _0x36114b=await fetch(API_BASE+'/tasks/'+_0x2759c9+'/ibmi-sync-log');if(!_0x36114b['ok']){const _0x572fcf=await _0x36114b['json']()['catch'](()=>({}));throw new Error(_0x572fcf['error']||_0x572fcf['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x36114b['json']();},async 'pullChanges'(_0x590538){if(!_0x590538)throw new Error('Task\x20ID\x20is\x20required');const _0x5031db=await fetch(API_BASE+'/tasks/'+_0x590538+'/pull-changes',{'method':'POST'});if(!_0x5031db['ok']){const _0x4335f8=await _0x5031db['json']()['catch'](()=>({}));throw new Error(_0x4335f8['error']||_0x4335f8['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5031db['statusText']);}return await _0x5031db['json']();},async 'readFile'(_0x36485a,_0x441fd1){if(!_0x36485a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441fd1)throw new Error('File\x20path\x20is\x20required');const _0x395d2f=await fetch(API_BASE+'/tasks/'+_0x36485a+'/files?path='+encodeURIComponent(_0x441fd1));if(!_0x395d2f['ok']){const _0x5b6227=await _0x395d2f['json']()['catch'](()=>({}));throw new Error(_0x5b6227['error']||_0x5b6227['message']||'Failed\x20to\x20read\x20file:\x20'+_0x395d2f['statusText']);}return await _0x395d2f['json']();},'getTaskFileDownloadUrl'(_0x43bca6,_0x43faa1){if(!_0x43bca6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x43faa1)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x43bca6+'/files/download?path='+encodeURIComponent(_0x43faa1);},async 'writeFile'(_0x4d0311,_0x35bd2c,_0x499d0a){if(!_0x4d0311)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35bd2c)throw new Error('File\x20path\x20is\x20required');if(_0x499d0a===undefined)throw new Error('Content\x20is\x20required');const _0x3cf895=await fetch(API_BASE+'/tasks/'+_0x4d0311+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x35bd2c,'content':_0x499d0a})});if(!_0x3cf895['ok']){const _0x38de19=await _0x3cf895['json']()['catch'](()=>({}));throw new Error(_0x38de19['error']||_0x38de19['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3cf895['statusText']);}return await _0x3cf895['json']();},async 'uploadTaskFiles'(_0x24bfd0,_0x2c54fc,_0x311638){if(!_0x24bfd0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c54fc)throw new Error('Target\x20directory\x20is\x20required');if(!_0x311638||_0x311638['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31c965=new FormData();_0x31c965['append']('targetDir',_0x2c54fc);for(const _0x287ba2 of _0x311638){_0x31c965['append']('files',_0x287ba2,_0x287ba2['name']);}const _0x1a40c6=await fetch(API_BASE+'/tasks/'+_0x24bfd0+'/files/upload',{'method':'POST','body':_0x31c965});if(!_0x1a40c6['ok']){const _0x53cb4e=await _0x1a40c6['json']()['catch'](()=>({}));throw new Error(_0x53cb4e['error']||_0x53cb4e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1a40c6['statusText']);}return await _0x1a40c6['json']();},async 'createDirectory'(_0x154ac7,_0x58643e){if(!_0x154ac7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58643e)throw new Error('Directory\x20path\x20is\x20required');const _0xed9012=await fetch(API_BASE+'/tasks/'+_0x154ac7+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x58643e})});if(!_0xed9012['ok']){const _0x29d1b9=await _0xed9012['json']()['catch'](()=>({}));throw new Error(_0x29d1b9['error']||_0x29d1b9['message']||'Failed\x20to\x20create\x20directory:\x20'+_0xed9012['statusText']);}return await _0xed9012['json']();},async 'renamePath'(_0x3f61f8,_0x45bd56,_0x4db2e7){if(!_0x3f61f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45bd56)throw new Error('Source\x20path\x20is\x20required');if(!_0x4db2e7)throw new Error('Destination\x20path\x20is\x20required');const _0x5f2ec8=await fetch(API_BASE+'/tasks/'+_0x3f61f8+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45bd56,'newPath':_0x4db2e7})});if(!_0x5f2ec8['ok']){const _0x389211=await _0x5f2ec8['json']()['catch'](()=>({}));throw new Error(_0x389211['error']||_0x389211['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x5f2ec8['statusText']);}return await _0x5f2ec8['json']();},async 'deleteFile'(_0x25f405,_0x5740da){if(!_0x25f405)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5740da)throw new Error('File\x20path\x20is\x20required');const _0x4e16f1=await fetch(API_BASE+'/tasks/'+_0x25f405+'/files?path='+encodeURIComponent(_0x5740da),{'method':'DELETE'});if(!_0x4e16f1['ok']){const _0x495042=await _0x4e16f1['json']()['catch'](()=>({}));throw new Error(_0x495042['error']||_0x495042['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4e16f1['statusText']);}return await _0x4e16f1['json']();},async 'deleteDirectory'(_0x4b527a,_0x37f378){if(!_0x4b527a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37f378)throw new Error('Directory\x20path\x20is\x20required');const _0x25f0fb=await fetch(API_BASE+'/tasks/'+_0x4b527a+'/files/directory?path='+encodeURIComponent(_0x37f378),{'method':'DELETE'});if(!_0x25f0fb['ok']){const _0x2682c6=await _0x25f0fb['json']()['catch'](()=>({}));throw new Error(_0x2682c6['error']||_0x2682c6['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x25f0fb['statusText']);}return await _0x25f0fb['json']();},async 'discardFile'(_0x2b68f6,_0x1c125f,_0x3e82c2){if(!_0x2b68f6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c125f)throw new Error('File\x20path\x20is\x20required');if(!_0x3e82c2)throw new Error('Repository\x20path\x20is\x20required');const _0xa803a3=await fetch(API_BASE+'/tasks/'+_0x2b68f6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1c125f,'repoPath':_0x3e82c2})});if(!_0xa803a3['ok']){const _0x171860=await _0xa803a3['json']()['catch'](()=>({}));throw new Error(_0x171860['error']||_0x171860['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xa803a3['statusText']);}return await _0xa803a3['json']();},async 'followUpTask'(_0x5243fd,_0x175a41={}){if(!_0x5243fd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x175a41['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2a3b52,_0x1210b0={};if(_0x175a41['files']&&_0x175a41['files']['length']>0x0){const _0x50b178=new FormData();_0x50b178['append']('instructions',_0x175a41['instructions']);for(const _0x32d64d of _0x175a41['files']){_0x50b178['append']('attachments',_0x32d64d);}_0x2a3b52=_0x50b178;}else _0x1210b0['Content-Type']='application/json',_0x2a3b52=JSON['stringify']({'instructions':_0x175a41['instructions']});const _0x335c96=await fetch(API_BASE+'/tasks/'+_0x5243fd+'/follow-up',{'method':'POST','headers':_0x1210b0,'body':_0x2a3b52});if(!_0x335c96['ok']){const _0x1858f2=await _0x335c96['json']()['catch'](()=>({}));throw new Error(_0x1858f2['error']||_0x1858f2['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x335c96['statusText']);}return await _0x335c96['json']();},async 'getTaskRewindPoints'(_0x586453){if(!_0x586453)throw new Error('Task\x20ID\x20is\x20required');const _0x4517e3=await fetch(API_BASE+'/tasks/'+_0x586453+'/rewind-points');if(!_0x4517e3['ok']){const _0x57c4b9=await _0x4517e3['json']()['catch'](()=>({}));throw new Error(_0x57c4b9['error']||_0x57c4b9['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4517e3['statusText']);}return await _0x4517e3['json']();},async 'rewindTask'(_0x57fc03,_0x2377c9={}){if(!_0x57fc03)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad26a=Number['isInteger'](_0x2377c9['targetFollowUpCount'])?_0x2377c9['targetFollowUpCount']:0x0,_0x4e3c62={'targetFollowUpCount':_0x2ad26a};typeof _0x2377c9['instructions']==='string'&&_0x2377c9['instructions']['trim']()&&(_0x4e3c62['instructions']=_0x2377c9['instructions']['trim']());typeof _0x2377c9['rewindFiles']==='boolean'&&(_0x4e3c62['rewindFiles']=_0x2377c9['rewindFiles']);const _0x5174c1=await fetch(API_BASE+'/tasks/'+_0x57fc03+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3c62)});if(!_0x5174c1['ok']){const _0x222776=await _0x5174c1['json']()['catch'](()=>({}));throw new Error(_0x222776['error']||_0x222776['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5174c1['statusText']);}return await _0x5174c1['json']();},async 'login'(_0x185b71,_0x5935b6){const _0x376bd1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x185b71,'password':_0x5935b6})});if(!_0x376bd1['ok']){const _0x4acf12=await _0x376bd1['json']();throw new Error(_0x4acf12['message']||'Login\x20failed');}return await _0x376bd1['json']();},async 'logout'(){const _0x5de931=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5de931['ok']){const _0x5b4434=await _0x5de931['json']();throw new Error(_0x5b4434['message']||'Logout\x20failed');}return await _0x5de931['json']();},async 'getCurrentUser'(){const _0x59b4a2=await fetch(API_BASE+'/auth/me');if(!_0x59b4a2['ok'])throw new Error('Not\x20authenticated');const _0x3c7741=await _0x59b4a2['json']();return _0x3c7741['user'];},async 'getRolesInfo'(){const _0x256e7d=await fetch(API_BASE+'/users/roles');if(!_0x256e7d['ok']){const _0x4e6bf0=await _0x256e7d['json']();throw new Error(_0x4e6bf0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x256e7d['json']();},async 'getUsers'(){const _0x349705=await fetch(API_BASE+'/users');if(!_0x349705['ok']){const _0x5c8f3f=await _0x349705['json']();throw new Error(_0x5c8f3f['message']||'Failed\x20to\x20get\x20users');}return await _0x349705['json']();},async 'getUser'(_0x37515e){const _0x5811ef=await fetch(API_BASE+'/users/'+_0x37515e);if(!_0x5811ef['ok']){const _0x237f02=await _0x5811ef['json']();throw new Error(_0x237f02['message']||'Failed\x20to\x20get\x20user');}return await _0x5811ef['json']();},async 'createUser'(_0x3c2dca){const _0x317bdc=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c2dca)});if(!_0x317bdc['ok']){const _0x15c7ff=await _0x317bdc['json']();throw new Error(_0x15c7ff['message']||'Failed\x20to\x20create\x20user');}return await _0x317bdc['json']();},async 'updateUser'(_0x7120f2,_0x3e877d){const _0x1f667f=await fetch(API_BASE+'/users/'+_0x7120f2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e877d)});if(!_0x1f667f['ok']){const _0x234e93=await _0x1f667f['json']();throw new Error(_0x234e93['message']||'Failed\x20to\x20update\x20user');}return await _0x1f667f['json']();},async 'deleteUser'(_0x125946){const _0x3f175d=await fetch(API_BASE+'/users/'+_0x125946,{'method':'DELETE'});if(!_0x3f175d['ok']){const _0x430637=await _0x3f175d['json']();throw new Error(_0x430637['message']||'Failed\x20to\x20delete\x20user');}return await _0x3f175d['json']();},async 'stopAllContainers'(){const _0x432161=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3fc8e3=await _0x432161['json']()['catch'](()=>({}));if(!_0x432161['ok'])throw new Error(_0x3fc8e3['message']||_0x3fc8e3['error']||'Failed\x20to\x20stop\x20containers');return _0x3fc8e3;},async 'removeStoppedContainers'(){const _0x4fd733=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5433c9=await _0x4fd733['json']()['catch'](()=>({}));if(!_0x4fd733['ok'])throw new Error(_0x5433c9['message']||_0x5433c9['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5433c9;},async 'pruneDockerResources'(){const _0x217773=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x16ef9e=await _0x217773['json']()['catch'](()=>({}));if(!_0x217773['ok'])throw new Error(_0x16ef9e['message']||_0x16ef9e['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x16ef9e;},async 'createPasswordToken'(_0x133be9,_0x381b89='setup',_0x3482c1=![]){const _0x58e867=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x133be9,'type':_0x381b89,'sendEmail':_0x3482c1})});if(!_0x58e867['ok']){const _0x34faf0=await _0x58e867['json']();throw new Error(_0x34faf0['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x58e867['json']();},async 'getEmailConfig'(){const _0x14c337=await fetch(API_BASE+'/password/email-config');if(!_0x14c337['ok']){const _0x4693d3=await _0x14c337['json']();throw new Error(_0x4693d3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14c337['json']();},async 'updateTaskName'(_0x403c61,_0x8fddb8){const _0x4177c8=await fetch(API_BASE+'/tasks/'+_0x403c61,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x8fddb8})});if(!_0x4177c8['ok']){const _0x14b96c=await _0x4177c8['json']();throw new Error(_0x14b96c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4177c8['json']();},async 'pinTask'(_0x12ee96,_0x5701a9,_0x5251ac=null){if(!_0x12ee96)throw new Error('Task\x20ID\x20is\x20required');const _0x32c579={'pinned':_0x5701a9};_0x5251ac&&_0x5251ac['length']>0x0&&(_0x32c579['additionalTaskIds']=_0x5251ac);const _0xf0bb1b=await fetch(API_BASE+'/tasks/'+_0x12ee96+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32c579)});if(!_0xf0bb1b['ok']){const _0x12fb1a=await _0xf0bb1b['json']();throw new Error(_0x12fb1a['error']||'Failed\x20to\x20pin\x20task');}return await _0xf0bb1b['json']();},async 'setTaskWinner'(_0x94ff2f,_0x3638bb,_0x44df9f=[]){if(!_0x94ff2f)throw new Error('Task\x20ID\x20is\x20required');const _0x29c568=await fetch(API_BASE+'/tasks/'+_0x94ff2f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3638bb,'siblings':_0x44df9f})});if(!_0x29c568['ok']){const _0x551eda=await _0x29c568['json']();throw new Error(_0x551eda['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x29c568['json']();},async 'setTaskLoser'(_0x202204,_0x12a345){if(!_0x202204)throw new Error('Task\x20ID\x20is\x20required');const _0x3870fe=await fetch(API_BASE+'/tasks/'+_0x202204+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x12a345})});if(!_0x3870fe['ok']){const _0x210ac8=await _0x3870fe['json']();throw new Error(_0x210ac8['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3870fe['json']();},async 'createTaskGroup'(_0x2477dd){const _0x4d9c88=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2477dd)});if(!_0x4d9c88['ok']){const _0x21abcd=await _0x4d9c88['json']();throw new Error(_0x21abcd['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4d9c88['json']();},async 'getTaskGroups'(_0x5dd721={}){const _0x2c8aca=new URLSearchParams();if(_0x5dd721['userId'])_0x2c8aca['set']('userId',String(_0x5dd721['userId']));if(_0x5dd721['status'])_0x2c8aca['set']('status',String(_0x5dd721['status']));if(_0x5dd721['limit'])_0x2c8aca['set']('limit',String(_0x5dd721['limit']));const _0x523c1d=API_BASE+'/tasks/groups'+(_0x2c8aca['toString']()?'?'+_0x2c8aca['toString']():''),_0x103edb=await fetch(_0x523c1d);if(!_0x103edb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x103edb['json']();},async 'getTaskGroup'(_0x28ba63){const _0x4f0842=await fetch(API_BASE+'/tasks/groups/'+_0x28ba63);if(!_0x4f0842['ok']){const _0x2b637e=await _0x4f0842['json']();throw new Error(_0x2b637e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f0842['json']();},async 'updateTaskGroup'(_0x55f458,_0x58e07e,_0x1272a5){const _0x59d102=await fetch(API_BASE+'/tasks/'+_0x55f458+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x58e07e,'groupIndex':_0x1272a5})});if(!_0x59d102['ok']){const _0x37ff62=await _0x59d102['json']();throw new Error(_0x37ff62['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x59d102['json']();},async 'removeTaskFromGroup'(_0x222487){return this['updateTaskGroup'](_0x222487,null,null);},async 'deleteTaskGroup'(_0x398409,_0x233def=![]){const _0xca69ce=_0x233def?'?deleteTasks=true':'',_0x426100=await fetch(API_BASE+'/tasks/groups/'+_0x398409+_0xca69ce,{'method':'DELETE'});if(!_0x426100['ok']){const _0x10ddde=await _0x426100['json']();throw new Error(_0x10ddde['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x338280,_0x2dcd9d){const _0x195213=await fetch(API_BASE+'/tasks/groups/'+_0x338280+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2dcd9d})});if(!_0x195213['ok']){const _0x3525cb=await _0x195213['json']();throw new Error(_0x3525cb['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x195213['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52783f){if(!_0x52783f)throw new Error('Task\x20ID\x20is\x20required');const _0x4978a0=await fetch(API_BASE+'/tasks/'+_0x52783f+'/comments');if(!_0x4978a0['ok']){const _0x11f09a=await _0x4978a0['json']()['catch'](()=>({}));throw new Error(_0x11f09a['error']||'Failed\x20to\x20get\x20comments');}return await _0x4978a0['json']();},async 'addComment'(_0x5a33a8,_0x4df46f){if(!_0x5a33a8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df46f)throw new Error('Comment\x20content\x20is\x20required');const _0x4ea416=await fetch(API_BASE+'/tasks/'+_0x5a33a8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4df46f})});if(!_0x4ea416['ok']){const _0x2cae17=await _0x4ea416['json']()['catch'](()=>({}));throw new Error(_0x2cae17['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ea416['json']();},async 'updateComment'(_0x60c4d5,_0xc09342,_0x4e3764){if(!_0x60c4d5)throw new Error('Task\x20ID\x20is\x20required');if(!_0xc09342)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4e3764)throw new Error('Comment\x20content\x20is\x20required');const _0xdc4640=await fetch(API_BASE+'/tasks/'+_0x60c4d5+'/comments/'+_0xc09342,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4e3764})});if(!_0xdc4640['ok']){const _0x28d311=await _0xdc4640['json']()['catch'](()=>({}));throw new Error(_0x28d311['error']||'Failed\x20to\x20update\x20comment');}return await _0xdc4640['json']();},async 'deleteComment'(_0x375da8,_0x258597){if(!_0x375da8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x258597)throw new Error('Comment\x20ID\x20is\x20required');const _0x4090d1=await fetch(API_BASE+'/tasks/'+_0x375da8+'/comments/'+_0x258597,{'method':'DELETE'});if(!_0x4090d1['ok']){const _0x33fd48=await _0x4090d1['json']()['catch'](()=>({}));throw new Error(_0x33fd48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4090d1['json']();},async 'createObjective'(_0x5680a8){const _0x32926b={'objective':!![],'name':_0x5680a8['name']||'','environment':_0x5680a8['environment']||null,'agents':_0x5680a8['agents']||[],'branches':_0x5680a8['branches']||{},'isPinned':_0x5680a8['isPinned']||![],'parentObjectiveId':_0x5680a8['parentObjectiveId']||null,'env_vars':_0x5680a8['envVars']||{},'parameters':{'instructions':_0x5680a8['instructions']||''},'files':_0x5680a8['files']||[],'jira':_0x5680a8['jira']||null};return this['createTask'](_0x32926b);},async 'updateObjective'(_0x21e3b7,_0xd38636,_0x58a366=[],_0x1756d6=[]){let _0x2a8a99,_0x30d942={};const _0x245788={..._0xd38636};_0x1756d6&&_0x1756d6['length']>0x0&&(_0x245788['removeAttachments']=_0x1756d6);if(_0x58a366&&_0x58a366['length']>0x0){const _0x49d544=new FormData();for(const [_0x2adb8e,_0x374633]of Object['entries'](_0x245788)){if(_0x374633==null)continue;typeof _0x374633==='object'?_0x49d544['append'](_0x2adb8e,JSON['stringify'](_0x374633)):_0x49d544['append'](_0x2adb8e,String(_0x374633));}for(const _0x375890 of _0x58a366){_0x49d544['append']('attachments',_0x375890);}_0x2a8a99=_0x49d544;}else _0x30d942['Content-Type']='application/json',_0x2a8a99=JSON['stringify'](_0x245788);const _0x2fc9bc=await fetch(API_BASE+'/tasks/'+_0x21e3b7,{'method':'PATCH','headers':_0x30d942,'body':_0x2a8a99});if(!_0x2fc9bc['ok']){const _0x1c790b=await _0x2fc9bc['json']();throw new Error(_0x1c790b['error']||'Failed\x20to\x20update\x20objective');}return await _0x2fc9bc['json']();},async 'deleteObjective'(_0x447703){return this['deleteTask'](_0x447703);},async 'launchObjective'(_0x407918,_0x4b69b9={}){const _0x2b9ef2=await fetch(API_BASE+'/tasks/'+_0x407918+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b69b9)});if(!_0x2b9ef2['ok']){const _0x5c5b2e=await _0x2b9ef2['json']();throw new Error(_0x5c5b2e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2b9ef2['json']();},async 'getObjectiveAttachments'(_0x197e34){return this['getTaskAttachments'](_0x197e34);},async 'createJudgeTask'({environment:_0x5567e5,judgeAgent:_0x559201,groupId:_0x358acb,taskIds:_0x1c9b0f,judgeCustomInstructions:_0x25453b,isPinned:_0x17a0d1}){const _0x5bf675=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5567e5,'judgeAgent':_0x559201,'groupId':_0x358acb,'taskIds':_0x1c9b0f,'judgeCustomInstructions':_0x25453b,'isPinned':_0x17a0d1})});if(!_0x5bf675['ok']){const _0x28b407=await _0x5bf675['json']();throw new Error(_0x28b407['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x5bf675['json']();},async 'getJudgeTasks'(_0x3bcda7){const _0x33f8a3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3bcda7));if(!_0x33f8a3['ok']){const _0x5a5042=await _0x33f8a3['json']();throw new Error(_0x5a5042['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x33f8a3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x16f4e2,_0x55fa09,_0x51708d=''){const _0x940920=await fetch(API_BASE+'/tasks/'+_0x16f4e2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x55fa09,'customPreamble':_0x51708d})});if(!_0x940920['ok']){const _0x44ee8e=await _0x940920['json']();throw new Error(_0x44ee8e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x940920['json']();},async 'getJiraConfig'(){const _0x858daf=await fetch(API_BASE+'/jira/config');if(!_0x858daf['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x858daf['json']();},async 'getJiraIssue'(_0x220059){const _0x10d772=await fetch(API_BASE+'/jira/issues/'+_0x220059);if(!_0x10d772['ok']){const _0x3b59aa=await _0x10d772['json']()['catch'](()=>({}));throw new Error(_0x3b59aa['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x10d772['statusText']);}return await _0x10d772['json']();},async 'searchJiraIssues'(_0x5257d2,_0x2b1402=0x14){const _0x194395=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5257d2,'maxResults':_0x2b1402})});if(!_0x194395['ok']){const _0x122987=await _0x194395['json']()['catch'](()=>({}));throw new Error(_0x122987['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x194395['statusText']);}return await _0x194395['json']();},async 'postJiraComment'(_0x1cbb1f,_0x353b28){const _0x5abc46=await fetch(API_BASE+'/jira/issues/'+_0x1cbb1f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x353b28})});if(!_0x5abc46['ok']){const _0x199c51=await _0x5abc46['json']()['catch'](()=>({}));throw new Error(_0x199c51['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5abc46['statusText']);}return await _0x5abc46['json']();},async 'getJiraComments'(_0x3572d7){const _0x26b156=await fetch(API_BASE+'/jira/issues/'+_0x3572d7+'/comments');if(!_0x26b156['ok']){const _0x1a5b77=await _0x26b156['json']()['catch'](()=>({}));throw new Error(_0x1a5b77['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x26b156['statusText']);}return await _0x26b156['json']();},async 'promptParameter'({environment:_0x9deaa1,command:_0x329e3,parser:parser='json'}){const _0x4485bd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x9deaa1,'command':_0x329e3,'parser':parser})});if(!_0x4485bd['ok']){const _0x45771e=await _0x4485bd['json']()['catch'](()=>({}));throw new Error(_0x45771e['message']||_0x45771e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4485bd['statusText']);}return await _0x4485bd['json']();},async 'promptParameterStream'(_0x29f1b3,_0x6c6215){const _0x4b75ae=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f1b3)});if(!_0x4b75ae['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b75ae['statusText']);const _0x2fcb40=_0x4b75ae['body']['getReader'](),_0x3f6be9=new TextDecoder();let _0x142944='';return new Promise((_0x38c3db,_0x4431f8)=>{const _0xf5757=async()=>{try{const {done:_0x126e7b,value:_0x54329a}=await _0x2fcb40['read']();if(_0x126e7b)return;_0x142944+=_0x3f6be9['decode'](_0x54329a,{'stream':!![]});const _0x20a472=_0x142944['split']('\x0a\x0a');_0x142944=_0x20a472['pop']()||'';for(const _0x18426e of _0x20a472){if(!_0x18426e['trim']())continue;const _0x2f5e09=_0x18426e['split']('\x0a');let _0x48a552='message',_0x4a283a='';for(const _0x1f4514 of _0x2f5e09){if(_0x1f4514['startsWith']('event:'))_0x48a552=_0x1f4514['substring'](0x6)['trim']();else _0x1f4514['startsWith']('data:')&&(_0x4a283a=_0x1f4514['substring'](0x5)['trim']());}if(!_0x4a283a)continue;try{const _0x587083=JSON['parse'](_0x4a283a);if(_0x48a552==='progress'&&_0x6c6215)_0x6c6215(_0x587083['stage'],_0x587083['message']);else{if(_0x48a552==='result'){_0x38c3db(_0x587083);return;}else{if(_0x48a552==='error'){let _0x125aeb=_0x587083['message']||_0x587083['error']||'Prompt\x20command\x20failed';_0x587083['rawOutput']&&(_0x125aeb+='\x0a\x0aRaw\x20output:\x0a'+_0x587083['rawOutput']);_0x4431f8(new Error(_0x125aeb));return;}}}}catch(_0x5a4ab2){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5a4ab2),console['error']('Event\x20type:',_0x48a552),console['error']('Event\x20data:',_0x4a283a),console['error']('First\x20200\x20chars:',_0x4a283a['substring'](0x0,0xc8)),_0x4431f8(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5a4ab2['message']+'\x0a\x0aData:\x20'+_0x4a283a['substring'](0x0,0x1f4)));return;}}_0xf5757();}catch(_0x2f7d6f){_0x4431f8(_0x2f7d6f);}};_0xf5757();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5b4e76){const _0x47f068=await fetch(''+API_BASE+_0x5b4e76);if(!_0x47f068['ok']){const _0x236649=await _0x47f068['json']()['catch'](()=>({'error':_0x47f068['statusText']})),_0x23ec02=new Error(_0x236649['error']||_0x236649['message']||_0x47f068['statusText']);if(_0x236649['detail']!==undefined)_0x23ec02['detail']=_0x236649['detail'];throw _0x23ec02;}return await _0x47f068['json']();},async 'post'(_0x35ca4f,_0x2629d1){const _0x82c3d5=await fetch(''+API_BASE+_0x35ca4f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2629d1)});if(!_0x82c3d5['ok']){const _0x27968f=await _0x82c3d5['json']()['catch'](()=>({'error':_0x82c3d5['statusText']})),_0x1bbb26=new Error(_0x27968f['error']||_0x27968f['message']||_0x82c3d5['statusText']);if(_0x27968f['detail']!==undefined)_0x1bbb26['detail']=_0x27968f['detail'];throw _0x1bbb26;}return await _0x82c3d5['json']();},async 'put'(_0xe02806,_0x3a22e3){const _0xff478c=await fetch(''+API_BASE+_0xe02806,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a22e3)});if(!_0xff478c['ok']){const _0x3b5994=await _0xff478c['json']()['catch'](()=>({'error':_0xff478c['statusText']})),_0x2fd09c=new Error(_0x3b5994['error']||_0x3b5994['message']||_0xff478c['statusText']);if(_0x3b5994['detail']!==undefined)_0x2fd09c['detail']=_0x3b5994['detail'];throw _0x2fd09c;}return await _0xff478c['json']();},async 'delete'(_0x5ea88a,_0x1499d8){const _0x160941={'method':'DELETE'};_0x1499d8&&(_0x160941['headers']={'Content-Type':'application/json'},_0x160941['body']=JSON['stringify'](_0x1499d8));const _0x152f3b=await fetch(''+API_BASE+_0x5ea88a,_0x160941);if(!_0x152f3b['ok']){const _0x413d17=await _0x152f3b['json']()['catch'](()=>({'error':_0x152f3b['statusText']})),_0x5cd997=new Error(_0x413d17['error']||_0x413d17['message']||_0x152f3b['statusText']);if(_0x413d17['detail']!==undefined)_0x5cd997['detail']=_0x413d17['detail'];throw _0x5cd997;}return await _0x152f3b['json']();},async 'getSkills'(){const _0x34f6bf=await fetch(API_BASE+'/skills');if(!_0x34f6bf['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x34f6bf['statusText']);return await _0x34f6bf['json']();},async 'getSkill'(_0x2cba41){const _0x1c1802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2cba41));if(!_0x1c1802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c1802['statusText']);return await _0x1c1802['json']();},async 'createSkill'(_0x656398){const _0x2421eb=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x656398)});if(!_0x2421eb['ok']){const _0x1d692b=await _0x2421eb['json']()['catch'](()=>({'error':_0x2421eb['statusText']})),_0x3b7782=new Error(_0x1d692b['error']||_0x1d692b['message']||_0x2421eb['statusText']);if(_0x1d692b['detail']!==undefined)_0x3b7782['detail']=_0x1d692b['detail'];throw _0x3b7782;}return await _0x2421eb['json']();},async 'updateSkill'(_0x34b656,_0x1b1cb8){const _0x2bf06b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x34b656),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b1cb8)});if(!_0x2bf06b['ok']){const _0x53396c=await _0x2bf06b['json']()['catch'](()=>({'error':_0x2bf06b['statusText']})),_0x5ab719=new Error(_0x53396c['error']||_0x53396c['message']||_0x2bf06b['statusText']);if(_0x53396c['detail']!==undefined)_0x5ab719['detail']=_0x53396c['detail'];throw _0x5ab719;}return await _0x2bf06b['json']();},async 'deleteSkill'(_0x5799e5){const _0x2f6cba=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5799e5),{'method':'DELETE'});if(!_0x2f6cba['ok']){const _0x4be2b7=await _0x2f6cba['json']()['catch'](()=>({'error':_0x2f6cba['statusText']})),_0x1aba13=new Error(_0x4be2b7['error']||_0x4be2b7['message']||_0x2f6cba['statusText']);if(_0x4be2b7['detail']!==undefined)_0x1aba13['detail']=_0x4be2b7['detail'];throw _0x1aba13;}return await _0x2f6cba['json']();},async 'getSkillFile'(_0x494c91,_0x3275c9){const _0x221119=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x494c91)+'/files/'+_0x3275c9);if(!_0x221119['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x221119['statusText']);return await _0x221119['json']();},async 'saveSkillFile'(_0x5a2138,_0x19d4a1,_0x33c4ed){const _0x3fd56d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5a2138)+'/files/'+_0x19d4a1,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x33c4ed})});if(!_0x3fd56d['ok']){const _0x373b40=await _0x3fd56d['json']()['catch'](()=>({'error':_0x3fd56d['statusText']})),_0x23acbc=new Error(_0x373b40['error']||_0x373b40['message']||_0x3fd56d['statusText']);if(_0x373b40['detail']!==undefined)_0x23acbc['detail']=_0x373b40['detail'];throw _0x23acbc;}return await _0x3fd56d['json']();},async 'deleteSkillFile'(_0x4a1f93,_0x1eb139){const _0x394075=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4a1f93)+'/files/'+_0x1eb139,{'method':'DELETE'});if(!_0x394075['ok']){const _0x3c9e6f=await _0x394075['json']()['catch'](()=>({'error':_0x394075['statusText']})),_0x5e1f58=new Error(_0x3c9e6f['error']||_0x3c9e6f['message']||_0x394075['statusText']);if(_0x3c9e6f['detail']!==undefined)_0x5e1f58['detail']=_0x3c9e6f['detail'];throw _0x5e1f58;}return await _0x394075['json']();},async 'pullSkills'(){const _0x2b220f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x2b220f['ok']){const _0x17473e=await _0x2b220f['json']()['catch'](()=>({'error':_0x2b220f['statusText']})),_0x2a3c47=new Error(_0x17473e['error']||_0x17473e['message']||_0x2b220f['statusText']);if(_0x17473e['detail']!==undefined)_0x2a3c47['detail']=_0x17473e['detail'];throw _0x2a3c47;}return await _0x2b220f['json']();},async 'commitSkills'(_0x5abd37,_0x38efd3={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x38efd3,_0x35b2d6=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5abd37,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b2d6['ok']){const _0x4a9798=await _0x35b2d6['json']()['catch'](()=>({'error':_0x35b2d6['statusText']})),_0x2940b6=new Error(_0x4a9798['error']||_0x4a9798['message']||_0x35b2d6['statusText']);if(_0x4a9798['detail']!==undefined)_0x2940b6['detail']=_0x4a9798['detail'];throw _0x2940b6;}return await _0x35b2d6['json']();},async 'discardSkillsChanges'(){const _0x4b05b4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b05b4['ok']){const _0x2da5cc=await _0x4b05b4['json']()['catch'](()=>({'error':_0x4b05b4['statusText']})),_0x5f10fd=new Error(_0x2da5cc['error']||_0x2da5cc['message']||_0x4b05b4['statusText']);if(_0x2da5cc['detail']!==undefined)_0x5f10fd['detail']=_0x2da5cc['detail'];throw _0x5f10fd;}return await _0x4b05b4['json']();},async 'getSkillCatalog'(){const _0x37f636=await fetch(API_BASE+'/external-skills/catalog');if(!_0x37f636['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x37f636['statusText']);return await _0x37f636['json']();},async 'getImportedSkillsRegistry'(){const _0x22124e=await fetch(API_BASE+'/external-skills/registry');if(!_0x22124e['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x22124e['statusText']);return await _0x22124e['json']();},async 'importCatalogSkill'(_0x530ba6){const _0x56f1e8=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x530ba6})});if(!_0x56f1e8['ok']){const _0x1d4444=await _0x56f1e8['json']()['catch'](()=>({'error':_0x56f1e8['statusText']})),_0x3b841d=new Error(_0x1d4444['error']||_0x1d4444['message']||_0x56f1e8['statusText']);if(_0x1d4444['detail']!==undefined)_0x3b841d['detail']=_0x1d4444['detail'];throw _0x3b841d;}return await _0x56f1e8['json']();},async 'importSkillFromGit'(_0x330839,_0x3803da,_0xdc7f4b='main',_0x21c6a8=null){const _0x1437c7=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x330839,'skillPath':_0x3803da,'branch':_0xdc7f4b,'skillId':_0x21c6a8})});if(!_0x1437c7['ok']){const _0x8c5d99=await _0x1437c7['json']()['catch'](()=>({'error':_0x1437c7['statusText']})),_0x595eba=new Error(_0x8c5d99['error']||_0x8c5d99['message']||_0x1437c7['statusText']);if(_0x8c5d99['detail']!==undefined)_0x595eba['detail']=_0x8c5d99['detail'];throw _0x595eba;}return await _0x1437c7['json']();},async 'probeMarketplace'(_0x5c8b60,_0x3b2ab4='main'){const _0x218158=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5c8b60,'branch':_0x3b2ab4})});if(!_0x218158['ok']){const _0x5b8358=await _0x218158['json']()['catch'](()=>({'error':_0x218158['statusText']})),_0x112837=new Error(_0x5b8358['error']||_0x5b8358['message']||_0x218158['statusText']);if(_0x5b8358['detail']!==undefined)_0x112837['detail']=_0x5b8358['detail'];throw _0x112837;}return await _0x218158['json']();},async 'importMarketplaceBundle'(_0x46ac5a,_0xa7146c,_0x596b3c,_0x35c496=null){const _0x332e36=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x46ac5a,'branch':_0xa7146c,'bundleId':_0x596b3c,'selectedSkills':_0x35c496})});if(!_0x332e36['ok']){const _0xf12348=await _0x332e36['json']()['catch'](()=>({'error':_0x332e36['statusText']})),_0x23e988=new Error(_0xf12348['error']||_0xf12348['message']||_0x332e36['statusText']);if(_0xf12348['detail']!==undefined)_0x23e988['detail']=_0xf12348['detail'];throw _0x23e988;}return await _0x332e36['json']();},async 'importSkillFromFolder'(_0xb69624,_0x382761=null){const _0x599cae=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xb69624,'skillId':_0x382761})});if(!_0x599cae['ok']){const _0x5b2880=await _0x599cae['json']()['catch'](()=>({'error':_0x599cae['statusText']})),_0x3ede8c=new Error(_0x5b2880['error']||_0x5b2880['message']||_0x599cae['statusText']);if(_0x5b2880['detail']!==undefined)_0x3ede8c['detail']=_0x5b2880['detail'];throw _0x3ede8c;}return await _0x599cae['json']();},async 'importSkillFromNpm'(_0xa6e2c2,_0x4dec14='latest',_0xdc064d=null,_0x51214b=null){const _0x55b5a8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0xa6e2c2,'version':_0x4dec14,'skillId':_0xdc064d,'registry':_0x51214b})});if(!_0x55b5a8['ok']){const _0x514e1c=await _0x55b5a8['json']()['catch'](()=>({'error':_0x55b5a8['statusText']})),_0x2e9a5a=new Error(_0x514e1c['error']||_0x514e1c['message']||_0x55b5a8['statusText']);if(_0x514e1c['detail']!==undefined)_0x2e9a5a['detail']=_0x514e1c['detail'];throw _0x2e9a5a;}return await _0x55b5a8['json']();},async 'checkSkillUpdates'(_0x5d362a){const _0xfccade=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5d362a)+'/check-updates',{'method':'POST'});if(!_0xfccade['ok']){const _0x4ea8d2=await _0xfccade['json']()['catch'](()=>({'error':_0xfccade['statusText']})),_0x1c1351=new Error(_0x4ea8d2['error']||_0x4ea8d2['message']||_0xfccade['statusText']);if(_0x4ea8d2['detail']!==undefined)_0x1c1351['detail']=_0x4ea8d2['detail'];throw _0x1c1351;}return await _0xfccade['json']();},async 'updateExternalSkill'(_0x19947b){const _0x56da39=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x19947b)+'/update',{'method':'POST'});if(!_0x56da39['ok']){const _0x30fbaf=await _0x56da39['json']()['catch'](()=>({'error':_0x56da39['statusText']})),_0xf1f1ad=new Error(_0x30fbaf['error']||_0x30fbaf['message']||_0x56da39['statusText']);if(_0x30fbaf['detail']!==undefined)_0xf1f1ad['detail']=_0x30fbaf['detail'];throw _0xf1f1ad;}return await _0x56da39['json']();},async 'updateSkillFlags'(_0x5575e2,_0x4a76da){const _0x29c44f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5575e2)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4a76da})});if(!_0x29c44f['ok']){const _0x41a84a=await _0x29c44f['json']()['catch'](()=>({'error':_0x29c44f['statusText']})),_0x274ed7=new Error(_0x41a84a['error']||_0x41a84a['message']||_0x29c44f['statusText']);if(_0x41a84a['detail']!==undefined)_0x274ed7['detail']=_0x41a84a['detail'];throw _0x274ed7;}return await _0x29c44f['json']();},async 'removeFromImportedRegistry'(_0x26cf83){const _0x1b06c9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26cf83)+'/registry',{'method':'DELETE'});if(!_0x1b06c9['ok']){const _0x104a3f=await _0x1b06c9['json']()['catch'](()=>({'error':_0x1b06c9['statusText']})),_0xbd7098=new Error(_0x104a3f['error']||_0x104a3f['message']||_0x1b06c9['statusText']);if(_0x104a3f['detail']!==undefined)_0xbd7098['detail']=_0x104a3f['detail'];throw _0xbd7098;}return await _0x1b06c9['json']();},async 'getTeams'(){const _0x59f4ea=await fetch(API_BASE+'/teams');if(!_0x59f4ea['ok']){const _0x51e382=await _0x59f4ea['json']()['catch'](()=>({'message':_0x59f4ea['statusText']}));throw new Error(_0x51e382['message']||'Failed\x20to\x20get\x20teams');}return await _0x59f4ea['json']();},async 'getTeam'(_0x4280e6){const _0x1bc958=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4280e6));if(!_0x1bc958['ok']){const _0x4dc908=await _0x1bc958['json']()['catch'](()=>({'message':_0x1bc958['statusText']}));throw new Error(_0x4dc908['message']||'Failed\x20to\x20get\x20team');}return await _0x1bc958['json']();},async 'createTeam'(_0x5b82b3){const _0x51ab4b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b82b3)});if(!_0x51ab4b['ok']){const _0x7c31d5=await _0x51ab4b['json']()['catch'](()=>({'message':_0x51ab4b['statusText']}));throw new Error(_0x7c31d5['message']||'Failed\x20to\x20create\x20team');}return await _0x51ab4b['json']();},async 'updateTeam'(_0x44db12,_0x4cd24a){const _0x4b92e4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44db12),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cd24a)});if(!_0x4b92e4['ok']){const _0x298684=await _0x4b92e4['json']()['catch'](()=>({'message':_0x4b92e4['statusText']}));throw new Error(_0x298684['message']||'Failed\x20to\x20update\x20team');}return await _0x4b92e4['json']();},async 'deleteTeam'(_0x342ef1){const _0x40bc01=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x342ef1),{'method':'DELETE'});if(!_0x40bc01['ok']){const _0x303d63=await _0x40bc01['json']()['catch'](()=>({'message':_0x40bc01['statusText']}));throw new Error(_0x303d63['message']||'Failed\x20to\x20delete\x20team');}return await _0x40bc01['json']();},async 'addTeamMember'(_0x3d28b8,_0x253812){const _0xead8f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3d28b8)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x253812})});if(!_0xead8f1['ok']){const _0x251306=await _0xead8f1['json']()['catch'](()=>({'message':_0xead8f1['statusText']}));throw new Error(_0x251306['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xead8f1['json']();},async 'removeTeamMember'(_0x10ad3a,_0x6b08f7){const _0xa1adfb=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10ad3a)+'/members/'+encodeURIComponent(_0x6b08f7),{'method':'DELETE'});if(!_0xa1adfb['ok']){const _0x1c8826=await _0xa1adfb['json']()['catch'](()=>({'message':_0xa1adfb['statusText']}));throw new Error(_0x1c8826['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xa1adfb['json']();},async 'getBindings'(_0x35a3f8={}){const _0x224817=new URLSearchParams();if(_0x35a3f8['resource_type'])_0x224817['set']('resource_type',_0x35a3f8['resource_type']);if(_0x35a3f8['resource_id'])_0x224817['set']('resource_id',_0x35a3f8['resource_id']);if(_0x35a3f8['subject_type'])_0x224817['set']('subject_type',_0x35a3f8['subject_type']);if(_0x35a3f8['subject_id'])_0x224817['set']('subject_id',_0x35a3f8['subject_id']);const _0xf65b02=_0x224817['toString'](),_0x1753e7=await fetch(API_BASE+'/bindings'+(_0xf65b02?'?'+_0xf65b02:''));if(!_0x1753e7['ok']){const _0x2fc9e2=await _0x1753e7['json']()['catch'](()=>({'message':_0x1753e7['statusText']}));throw new Error(_0x2fc9e2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1753e7['json']();},async 'createBinding'(_0xff974f){const _0x27bdbc=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xff974f)});if(!_0x27bdbc['ok']){const _0x169f8b=await _0x27bdbc['json']()['catch'](()=>({'message':_0x27bdbc['statusText']}));throw new Error(_0x169f8b['message']||'Failed\x20to\x20create\x20binding');}return await _0x27bdbc['json']();},async 'updateBinding'(_0x54c34b,_0xd71131){const _0x236fa6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x54c34b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd71131)});if(!_0x236fa6['ok']){const _0xb1cb4c=await _0x236fa6['json']()['catch'](()=>({'message':_0x236fa6['statusText']}));throw new Error(_0xb1cb4c['message']||'Failed\x20to\x20update\x20binding');}return await _0x236fa6['json']();},async 'deleteBinding'(_0x12a72e){const _0x573f7c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x12a72e),{'method':'DELETE'});if(!_0x573f7c['ok']){const _0x5c2ee3=await _0x573f7c['json']()['catch'](()=>({'message':_0x573f7c['statusText']}));throw new Error(_0x5c2ee3['message']||'Failed\x20to\x20delete\x20binding');}return await _0x573f7c['json']();},async 'getRoleDefinitions'(){const _0x14479d=await fetch(API_BASE+'/roles');if(!_0x14479d['ok']){const _0x4759ec=await _0x14479d['json']()['catch'](()=>({'message':_0x14479d['statusText']}));throw new Error(_0x4759ec['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x14479d['json']();},async 'getRoleDefinition'(_0x358dc0){const _0x1c222b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358dc0));if(!_0x1c222b['ok']){const _0x262c21=await _0x1c222b['json']()['catch'](()=>({'message':_0x1c222b['statusText']}));throw new Error(_0x262c21['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1c222b['json']();},async 'createRoleDefinition'(_0x1129ac){const _0x44f27d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1129ac)});if(!_0x44f27d['ok']){const _0x54cbe3=await _0x44f27d['json']()['catch'](()=>({'message':_0x44f27d['statusText']}));throw new Error(_0x54cbe3['message']||_0x54cbe3['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x44f27d['json']();},async 'updateRoleDefinition'(_0x58bc73,_0x403629){const _0x2b7f40=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x58bc73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x403629)});if(!_0x2b7f40['ok']){const _0xf5ed81=await _0x2b7f40['json']()['catch'](()=>({'message':_0x2b7f40['statusText']}));throw new Error(_0xf5ed81['message']||_0xf5ed81['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x2b7f40['json']();},async 'deleteRoleDefinition'(_0x462cb2){const _0x37316e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x462cb2),{'method':'DELETE'});if(!_0x37316e['ok']){const _0x49fc96=await _0x37316e['json']()['catch'](()=>({'message':_0x37316e['statusText']}));throw new Error(_0x49fc96['message']||_0x49fc96['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x37316e['json']();},async 'getAvailablePermissions'(){const _0x28860a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x28860a['ok']){const _0x3c8abf=await _0x28860a['json']()['catch'](()=>({'message':_0x28860a['statusText']}));throw new Error(_0x3c8abf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x28860a['json']();},async 'getGitProviderAllowedTeams'(_0x3f888e){const _0x14e08f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3f888e)+'/allowed-teams');if(!_0x14e08f['ok']){const _0x45dddf=await _0x14e08f['json']()['catch'](()=>({'message':_0x14e08f['statusText']}));throw new Error(_0x45dddf['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x14e08f['json']();},async 'setGitProviderAllowedTeams'(_0x192e4b,_0x83a789){const _0x3e437f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192e4b)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x83a789})});if(!_0x3e437f['ok']){const _0x43a8ca=await _0x3e437f['json']()['catch'](()=>({'message':_0x3e437f['statusText']}));throw new Error(_0x43a8ca['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3e437f['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0xbe7368=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c20c5=>{_0x5c20c5['el']['style']['bottom']=_0xbe7368+'px';const _0x3d40a2=_0x5c20c5['el']['offsetHeight']||toastState['defaultHeight'];_0xbe7368+=_0x3d40a2+toastState['gap'];});});}function removeToastById(_0x5ae3a7){const _0x159a0b=toastState['toasts']['findIndex'](_0x41f143=>_0x41f143['id']===_0x5ae3a7);if(_0x159a0b===-0x1)return;const _0x33ed80=toastState['toasts'][_0x159a0b];if(_0x33ed80['timeoutId'])clearTimeout(_0x33ed80['timeoutId']);_0x33ed80['el']['classList']['remove']('show'),setTimeout(()=>_0x33ed80['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x159a0b,0x1),repositionAllToasts();}function registerToast(_0x9e0f4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x9e0f4e),repositionAllToasts(),_0x9e0f4e['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x15672c){if(_0x15672c===null||_0x15672c===undefined)return'';return String(_0x15672c)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x49fd78,_0x5d6a74){if(_0x49fd78&&typeof _0x49fd78==='object'&&!Array['isArray'](_0x49fd78))return{'code':typeof _0x49fd78['text']==='string'?_0x49fd78['text']:'','language':typeof _0x49fd78['lang']==='string'?_0x49fd78['lang']:''};return{'code':typeof _0x49fd78==='string'?_0x49fd78:'','language':typeof _0x5d6a74==='string'?_0x5d6a74:''};}function buildMermaidBlock(_0x2001cc){const _0x1a0ded=String(_0x2001cc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1a0ded))+'\x22>'+escapeHtmlValue(_0x1a0ded)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x53188f=new marked['Renderer'](),_0xa45361=_0x53188f['code']['bind'](_0x53188f);return _0x53188f['code']=function(_0x391d04,_0x1e56df,..._0x4e2046){const {code:_0x25bfae,language:_0x337ed8}=getMarkdownCodeBlockPayload(_0x391d04,_0x1e56df),_0x1c4978=String(_0x337ed8||'')['trim']()['toLowerCase']();if(_0x1c4978==='mermaid')return buildMermaidBlock(_0x25bfae);const _0x203013=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x203013&&_0x1c4978)try{const _0x2ffdb1=_0x203013['getLanguage'](_0x1c4978)?_0x1c4978:'plaintext',_0x1e3c87=_0x203013['highlight'](_0x25bfae,{'language':_0x2ffdb1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1c4978)+'\x22>'+_0x1e3c87+'</code></pre>';}catch(_0x342583){console['error']('Syntax\x20highlighting\x20error:',_0x342583);}return _0xa45361(_0x391d04,_0x1e56df,..._0x4e2046);},sharedMarkedRenderer=_0x53188f,_0x53188f;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0xd326e1=window['mermaid'];if(!_0xd326e1||typeof _0xd326e1['initialize']!=='function')return _0xd326e1||null;return _0xd326e1['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0xd326e1;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7dca,_0x530d3a)=>{const _0x19112e=()=>_0x4c7dca(configureMermaidInstance()),_0x39966d=()=>{mermaidLoadPromise=null,_0x530d3a(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x2c4260=document['getElementById'](MERMAID_SCRIPT_ID);!_0x2c4260&&(_0x2c4260=document['createElement']('script'),_0x2c4260['id']=MERMAID_SCRIPT_ID,_0x2c4260['src']=MERMAID_SCRIPT_SRC,_0x2c4260['async']=!![],document['head']['appendChild'](_0x2c4260));if(window['mermaid']){_0x19112e();return;}_0x2c4260['addEventListener']('load',_0x19112e,{'once':!![]}),_0x2c4260['addEventListener']('error',_0x39966d,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x161696){const _0x47e054=_0x161696['getAttribute']('data-mermaid-source');if(!_0x47e054)return null;let _0x362d87=_0x47e054;try{_0x362d87=decodeURIComponent(_0x47e054);}catch{}return _0x161696['textContent']=_0x362d87,_0x161696['removeAttribute']('data-processed'),_0x161696['removeAttribute']('aria-roledescription'),_0x161696['removeAttribute']('role'),_0x161696['removeAttribute']('aria-label'),_0x362d87;}function collectMermaidNodes(_0x6ad670,_0x1e41ce){if(!(_0x6ad670 instanceof Element))return;_0x6ad670['matches']('.mermaid[data-mermaid-source]')&&_0x1e41ce['add'](_0x6ad670),_0x6ad670['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x338d3f=>{_0x1e41ce['add'](_0x338d3f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11e5a8=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x28b005=>setTimeout(_0x28b005,0x0);_0x11e5a8(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a383d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a383d);});});}function queueMermaidRender(_0xcbb8e3){const _0x25827c=new Set();_0xcbb8e3 instanceof Document||_0xcbb8e3 instanceof DocumentFragment?_0xcbb8e3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3eaaea=>_0x25827c['add'](_0x3eaaea)):collectMermaidNodes(_0xcbb8e3,_0x25827c);if(_0x25827c['size']===0x0)return;_0x25827c['forEach'](_0x297f7c=>pendingMermaidNodes['add'](_0x297f7c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x312913=Array['from'](pendingMermaidNodes)['filter'](_0x4f6b7f=>_0x4f6b7f['isConnected']);pendingMermaidNodes['clear']();if(_0x312913['length']===0x0)return;const _0x4876fe=await loadMermaid();if(!_0x4876fe)return;configureMermaidInstance();const _0x564f5d=getMermaidTheme();for(const _0x3a7337 of _0x312913){const _0x2cd3dd=_0x3a7337['getAttribute']('data-mermaid-source');if(!_0x2cd3dd)continue;const _0x28818a=_0x3a7337['getAttribute']('data-processed')==='true';if(_0x28818a&&_0x3a7337['dataset']['mermaidTheme']===_0x564f5d)continue;restoreMermaidSource(_0x3a7337);try{if(typeof _0x4876fe['run']==='function')await _0x4876fe['run']({'nodes':[_0x3a7337]});else typeof _0x4876fe['init']==='function'&&_0x4876fe['init'](undefined,[_0x3a7337]);_0x3a7337['dataset']['mermaidTheme']=_0x564f5d,delete _0x3a7337['dataset']['mermaidError'];}catch(_0x3571bf){console['error']('Mermaid\x20render\x20failed:',_0x3571bf),restoreMermaidSource(_0x3a7337),_0x3a7337['dataset']['mermaidError']='true',delete _0x3a7337['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x46ea8e=>{_0x46ea8e['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x46ea8e);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1b4666=>{_0x1b4666['forEach'](_0x2ee9a4=>{_0x2ee9a4['addedNodes']['forEach'](_0x4befe1=>{_0x4befe1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x4befe1);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x149b85){const _0x58e3dd=new Date(_0x149b85),_0x357e60=new Date(),_0x4203ab=_0x357e60-_0x58e3dd,_0x220514=Math['floor'](_0x4203ab/0x3e8),_0x3416ba=Math['floor'](_0x220514/0x3c),_0x448a43=Math['floor'](_0x3416ba/0x3c),_0x5d5caf=Math['floor'](_0x448a43/0x18);if(_0x220514<0x3c)return'now';if(_0x3416ba<0x3c)return _0x3416ba+'m\x20ago';if(_0x448a43<0x18)return _0x448a43+'h\x20ago';return _0x5d5caf+'d\x20ago';},'getStatusIcon'(_0x16bd7b){switch(_0x16bd7b){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4e0c54){switch(_0x4e0c54){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x56a574,_0xb0cb2=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x4c7ac0={};_0x4c7ac0['text/plain']=new Blob([_0x56a574],{'type':'text/plain'});_0xb0cb2&&(_0x4c7ac0['text/html']=new Blob([_0xb0cb2],{'type':'text/html'}));const _0xc57019=new ClipboardItem(_0x4c7ac0);return await navigator['clipboard']['write']([_0xc57019]),!![];}catch(_0x4ac4b2){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4ac4b2);}try{const _0x1b370b=_0x4fafdf=>{_0x4fafdf['preventDefault'](),_0x4fafdf['clipboardData']['setData']('text/plain',_0x56a574),_0xb0cb2&&_0x4fafdf['clipboardData']['setData']('text/html',_0xb0cb2);};document['addEventListener']('copy',_0x1b370b);const _0x4f811f=document['execCommand']('copy');document['removeEventListener']('copy',_0x1b370b);if(_0x4f811f)return!![];}catch(_0x490f0c){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x490f0c);}try{const _0x3a5472=document['createElement']('textarea');_0x3a5472['value']=_0x56a574,_0x3a5472['style']['position']='fixed',_0x3a5472['style']['opacity']='0',_0x3a5472['style']['pointerEvents']='none',document['body']['appendChild'](_0x3a5472),_0x3a5472['select']();const _0x2f9aa4=document['execCommand']('copy');return document['body']['removeChild'](_0x3a5472),_0x2f9aa4;}catch(_0x52b891){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x52b891),![];}},'showToast'(_0x119f9d,_0x16a794='info'){const _0x2468a3=getNextToastId(),_0x1a581b=document['createElement']('div');_0x1a581b['className']='toast\x20toast-'+_0x16a794,_0x1a581b['textContent']=_0x119f9d,_0x1a581b['dataset']['toastId']=_0x2468a3,document['body']['appendChild'](_0x1a581b);const _0x1d5dbd=_0x16a794==='error'?0x2710:0xbb8,_0xd1f47c=setTimeout(()=>{removeToastById(_0x2468a3);},_0x1d5dbd),_0x46ec2d={'id':_0x2468a3,'el':_0x1a581b,'timeoutId':_0xd1f47c};return registerToast(_0x46ec2d),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x1a581b['classList']['add']('show');});}),_0x2468a3;},'showError'(_0xa4308f){console['error'](_0xa4308f);const _0x373b82=typeof _0xa4308f==='string'?_0xa4308f:_0xa4308f['message']||'An\x20error\x20occurred';this['showToast'](_0x373b82,'error');},'showSuccess'(_0x3439c5){this['showToast'](_0x3439c5,'success');},'capitalize'(_0x224956){if(!_0x224956)return'';return _0x224956['charAt'](0x0)['toUpperCase']()+_0x224956['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5d6b62){return escapeHtmlValue(_0x5d6b62);},'ansiToHtml'(_0x2df0fe){if(_0x2df0fe===null||_0x2df0fe===undefined)return'';let _0x49aae6=this['escapeHtml'](_0x2df0fe);const _0x2e8897={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x4b3d29={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x312bbb=0x0;return _0x49aae6=_0x49aae6['replace'](/\x1b\[([0-9;]*)m/g,(_0x42e5c6,_0x1f3eb9)=>{if(!_0x1f3eb9||_0x1f3eb9==='0'){const _0x167f9a='</span>'['repeat'](_0x312bbb);return _0x312bbb=0x0,_0x167f9a;}const _0x19bf71=_0x1f3eb9['split'](';'),_0x599622=[];for(const _0x5e8327 of _0x19bf71){if(_0x5e8327==='1')_0x599622['push']('font-weight:bold');else{if(_0x5e8327==='2')_0x599622['push']('opacity:0.7');else{if(_0x5e8327==='3')_0x599622['push']('font-style:italic');else{if(_0x5e8327==='4')_0x599622['push']('text-decoration:underline');else{if(_0x5e8327==='9')_0x599622['push']('text-decoration:line-through');else{if(_0x2e8897[_0x5e8327])_0x599622['push']('color:'+_0x2e8897[_0x5e8327]);else{if(_0x4b3d29[_0x5e8327])_0x599622['push']('background-color:'+_0x4b3d29[_0x5e8327]);}}}}}}}if(_0x599622['length']>0x0)return _0x312bbb++,'<span\x20style=\x22'+_0x599622['join'](';')+'\x22>';return'';}),_0x49aae6+='</span>'['repeat'](_0x312bbb),_0x49aae6=_0x49aae6['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4daaf4,_0x462e45)=>{if(!_0x462e45||_0x462e45==='0')return'';const _0x1fcc86=_0x462e45['split'](';'),_0x296217=[];for(const _0x1a8f16 of _0x1fcc86){if(_0x1a8f16==='1')_0x296217['push']('font-weight:bold');else{if(_0x2e8897[_0x1a8f16])_0x296217['push']('color:'+_0x2e8897[_0x1a8f16]);else{if(_0x4b3d29[_0x1a8f16])_0x296217['push']('background-color:'+_0x4b3d29[_0x1a8f16]);}}}if(_0x296217['length']>0x0)return'<span\x20style=\x22'+_0x296217['join'](';')+'\x22>';return'';}),_0x49aae6;},'showModal'({title:_0x368a9,content:_0x545576,buttons:buttons=[]}){const _0x575630='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x368a9)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x545576+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x13a3e0,_0x14bbc2)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13a3e0['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x14bbc2+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13a3e0['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x2c9132=document['createElement']('div');_0x2c9132['id']='utils-modal',_0x2c9132['className']='modal',_0x2c9132['innerHTML']=_0x575630,document['body']['appendChild'](_0x2c9132);const _0x2dcccc=document['getElementById']('utils-modal-close');_0x2dcccc&&_0x2dcccc['addEventListener']('click',()=>this['hideModal']());const _0xde6f5d=_0x2c9132['querySelectorAll']('[data-btn-index]');_0xde6f5d['forEach'](_0x2d1d5c=>{const _0x172185=parseInt(_0x2d1d5c['dataset']['btnIndex']);buttons[_0x172185]?.['onClick']&&_0x2d1d5c['addEventListener']('click',buttons[_0x172185]['onClick']);});const _0x2ba979=document['getElementById']('utils-modal-overlay');_0x2ba979&&_0x2ba979['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x16ac66=document['getElementById']('utils-modal');_0x16ac66&&_0x16ac66['remove']();},'parseKeyValuePairs'(_0xbe9370){const _0x127fb2={};if(!_0xbe9370)return _0x127fb2;return _0xbe9370['split'](/\r?\n/)['map'](_0x5b81de=>_0x5b81de['trim']())['filter'](Boolean)['forEach'](_0x1428b1=>{const _0x4cc6ce=_0x1428b1['indexOf']('=');if(_0x4cc6ce>0x0){const _0x417bb3=_0x1428b1['slice'](0x0,_0x4cc6ce)['trim'](),_0x3a95a0=_0x1428b1['slice'](_0x4cc6ce+0x1)['trim']();if(_0x417bb3)_0x127fb2[_0x417bb3]=_0x3a95a0;}}),_0x127fb2;},'debounce'(_0x3ebad5,_0x2b1f64=0xfa){let _0x1e3eed=null;return(..._0x883a08)=>{clearTimeout(_0x1e3eed),_0x1e3eed=setTimeout(()=>_0x3ebad5['apply'](this,_0x883a08),_0x2b1f64);};},'formatTimestamp'(_0x22835e){if(!_0x22835e)return'N/A';const _0x4295d5=new Date(_0x22835e);return _0x4295d5['toLocaleDateString']()+'\x20'+_0x4295d5['toLocaleTimeString']();},'getQueryParams'(){const _0x1c54ff=new URLSearchParams(window['location']['search']),_0x5c8767={};for(const [_0x1cf61c,_0x66c0b1]of _0x1c54ff){_0x5c8767[_0x1cf61c]=_0x66c0b1;}return _0x5c8767;},'formatDuration'(_0x3633d7,_0x474aeb){if(!_0x3633d7)return'N/A';const _0x3e7688=new Date(_0x3633d7),_0x15a242=_0x474aeb?new Date(_0x474aeb):new Date(),_0x3fcf9d=_0x15a242-_0x3e7688;if(_0x3fcf9d<0x0)return'0s';const _0x5ee2e0=Math['floor'](_0x3fcf9d/0x3e8),_0x238237=Math['floor'](_0x5ee2e0/0x3c),_0x5d9ce8=Math['floor'](_0x238237/0x3c),_0x4cd574=Math['floor'](_0x5d9ce8/0x18);if(_0x5ee2e0<0x3c)return _0x5ee2e0+'s';if(_0x238237<0x3c)return _0x238237+'m\x20'+_0x5ee2e0%0x3c+'s';if(_0x5d9ce8<0x18)return _0x5d9ce8+'h\x20'+_0x238237%0x3c+'m\x20'+_0x5ee2e0%0x3c+'s';return _0x4cd574+'d\x20'+_0x5d9ce8%0x18+'h\x20'+_0x238237%0x3c+'m';},'renderMarkdown'(_0x35c3e2,_0x5693e8={}){if(!_0x35c3e2)return'';_0x35c3e2=this['rewriteAttachmentLinks'](_0x35c3e2,_0x5693e8),_0x35c3e2=this['rewriteColorSyntax'](_0x35c3e2);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x35c3e2);}catch(_0x13caae){return console['error']('Markdown\x20parsing\x20error:',_0x13caae),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);}},'rewriteAttachmentLinks'(_0x359c5d,_0x478007={}){const _0x371a88=typeof _0x478007['resolveAttachmentUrl']==='function'?_0x478007['resolveAttachmentUrl']:_0x478007['taskId']?_0xfda62f=>API_BASE+'/tasks/'+_0x478007['taskId']+'/attachments/'+encodeURIComponent(_0xfda62f):null;if(!_0x371a88)return _0x359c5d;return String(_0x359c5d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x58e661,_0x2b3a7c)=>{const _0xd5c11=String(_0x2b3a7c||'')['trim']();if(!_0xd5c11)return _0x58e661;let _0x14eecf=_0xd5c11;try{_0x14eecf=decodeURIComponent(_0xd5c11);}catch{}const _0x100b1c=_0x371a88(_0x14eecf);if(!_0x100b1c)return _0x58e661;return']('+_0x100b1c+')';});},'rewriteColorSyntax'(_0x1c1e98){if(!_0x1c1e98)return _0x1c1e98;return String(_0x1c1e98)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x52f966,_0x147c3e,_0x45a1f7)=>{const _0xf1e650=this['rewriteColorSyntax'](_0x45a1f7);return'<span\x20style=\x22color:\x20'+_0x147c3e+'\x22>'+_0xf1e650+'</span>';});},'renderMarkdownFallback'(_0x47df1f,_0x2599d5={}){if(!_0x47df1f)return'';_0x47df1f=_0x47df1f['replace'](/\r\n/g,'\x0a'),_0x47df1f=_0x47df1f['replace'](/\r/g,'\x0a'),_0x47df1f=this['rewriteAttachmentLinks'](_0x47df1f,_0x2599d5);let _0x22039d=this['escapeHtml'](_0x47df1f);return _0x22039d=_0x22039d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22039d=_0x22039d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22039d=_0x22039d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22039d=_0x22039d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22039d=_0x22039d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22039d=_0x22039d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22039d=_0x22039d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22039d=_0x22039d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22039d=_0x22039d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22039d=_0x22039d['replace'](/\n\n/g,'</p><p>'),_0x22039d=_0x22039d['replace'](/\n/g,'<br>'),'<p>'+_0x22039d+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x51ff77=new Uint8Array(0x10);crypto['getRandomValues'](_0x51ff77),_0x51ff77[0x6]=_0x51ff77[0x6]&0xf|0x40,_0x51ff77[0x8]=_0x51ff77[0x8]&0x3f|0x80;const _0x1ae7a3=Array['from'](_0x51ff77,_0x384d8e=>_0x384d8e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x1ae7a3['slice'](0x0,0x8)+'-'+_0x1ae7a3['slice'](0x8,0xc)+'-'+_0x1ae7a3['slice'](0xc,0x10)+'-'+_0x1ae7a3['slice'](0x10,0x14)+'-'+_0x1ae7a3['slice'](0x14);}};export class CustomSelect{constructor(_0x567263,_0x2f6079={}){this['nativeSelect']=_0x567263,this['options']=_0x2f6079,this['isOpen']=![],this['selectedValue']=_0x567263['value']||'',this['searchable']=_0x2f6079['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x41d808=document['createElement']('div');_0x41d808['className']='custom-select';const _0xc1e7d0=document['createElement']('div');_0xc1e7d0['className']='custom-select-trigger',_0xc1e7d0['setAttribute']('tabindex','0'),_0xc1e7d0['setAttribute']('role','button'),_0xc1e7d0['setAttribute']('aria-haspopup','listbox');const _0x5174f6=document['createElement']('span');_0x5174f6['className']='custom-select-trigger-text';const _0x5a117f=document['createElement']('span');_0x5a117f['className']='custom-select-arrow',_0x5a117f['textContent']='▼',_0xc1e7d0['appendChild'](_0x5174f6),_0xc1e7d0['appendChild'](_0x5a117f);const _0x1df1e8=document['createElement']('div');_0x1df1e8['className']='custom-select-dropdown',_0x1df1e8['setAttribute']('role','listbox');if(this['searchable']){const _0x122aa9=document['createElement']('div');_0x122aa9['className']='custom-select-search';const _0x40ff17=document['createElement']('input');_0x40ff17['type']='text',_0x40ff17['className']='custom-select-search-input',_0x40ff17['placeholder']='Type\x20to\x20search...',_0x40ff17['setAttribute']('aria-label','Search\x20options'),_0x40ff17['addEventListener']('input',_0x16e4c5=>{this['searchQuery']=_0x16e4c5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x40ff17['addEventListener']('keydown',_0x5a126=>{if(_0x5a126['key']==='Escape')_0x5a126['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x5a126['key']==='Enter'){_0x5a126['preventDefault'](),_0x5a126['stopPropagation']();const _0x1682ed=_0x1df1e8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1682ed){const _0x4d020c=_0x1682ed['getAttribute']('data-value');this['select'](_0x4d020c);}}}}),_0x122aa9['appendChild'](_0x40ff17),_0x1df1e8['appendChild'](_0x122aa9),this['searchInput']=_0x40ff17;}const _0x338ef=document['createElement']('div');_0x338ef['className']='custom-select-options',_0x1df1e8['appendChild'](_0x338ef),_0x41d808['appendChild'](_0xc1e7d0),_0x41d808['appendChild'](_0x1df1e8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x41d808,this['nativeSelect']),this['wrapper']=_0x41d808,this['trigger']=_0xc1e7d0,this['triggerText']=_0x5174f6,this['dropdown']=_0x1df1e8,this['optionsContainer']=_0x338ef,_0xc1e7d0['addEventListener']('click',()=>this['toggle']()),_0xc1e7d0['addEventListener']('keydown',_0x5de506=>this['handleKeydown'](_0x5de506)),document['addEventListener']('click',_0x22c4d5=>{!_0x41d808['contains'](_0x22c4d5['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2a7fd9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2a7fd9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1b1f6d=new MutationObserver(()=>{this['updateDisabledState']();});_0x1b1f6d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x13dc71=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x13dc71['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5b3321=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5b3321),this['trigger']['setAttribute']('aria-disabled',_0x5b3321?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5b3321?'-1':'0'),_0x5b3321&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2655f6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x129ce8=_0x2655f6['filter'](_0x31978e=>!_0x31978e['disabled']&&!_0x31978e['hidden']);_0x2655f6['forEach']((_0x432cb2,_0x23a392)=>{const _0x2ce75=document['createElement']('div');_0x2ce75['className']='custom-select-option',_0x2ce75['textContent']=_0x432cb2['textContent'],_0x2ce75['setAttribute']('data-value',_0x432cb2['value']),_0x2ce75['setAttribute']('data-index',_0x23a392),_0x2ce75['setAttribute']('role','option'),_0x432cb2['disabled']?_0x2ce75['classList']['add']('disabled'):_0x2ce75['addEventListener']('click',()=>this['select'](_0x432cb2['value'])),_0x432cb2['value']===this['selectedValue']&&_0x2ce75['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ce75),this['allOptions']['push']({'element':_0x2ce75,'text':_0x432cb2['textContent']['toLowerCase'](),'value':_0x432cb2['value'],'disabled':_0x432cb2['disabled']});});if(this['searchable']&&this['searchInput']){const _0x29d506=this['searchInput']['parentElement'];_0x129ce8['length']>0x3?_0x29d506['style']['display']='':_0x29d506['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x17a147=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4f25a3=>{if(!_0x17a147||_0x4f25a3['disabled'])_0x4f25a3['element']['style']['display']='';else{const _0x45ec49=_0x4f25a3['text']['includes'](_0x17a147);_0x4f25a3['element']['style']['display']=_0x45ec49?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x35418b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x35418b,this['nativeSelect']['value']=_0x35418b;const _0x287abb=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x287abb),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xab781c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xab781c&&(this['triggerText']['textContent']=_0xab781c['textContent'],_0xab781c['disabled']||_0xab781c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3ab874=>{_0x3ab874['getAttribute']('data-value')===this['selectedValue']?_0x3ab874['classList']['add']('selected'):_0x3ab874['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x5bbba0=window['getComputedStyle'](this['dropdown']);if(_0x5bbba0['position']==='fixed'){const _0x514ab2=this['trigger']['getBoundingClientRect'](),_0x5a2426=parseInt(_0x5bbba0['maxHeight'])||0xc8,_0x32e8cb=window['innerHeight'],_0x1bb3bc=_0x32e8cb-_0x514ab2['bottom'],_0x5af3b7=_0x514ab2['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3c1a62;_0x1bb3bc<_0x5a2426&&_0x5af3b7>_0x1bb3bc?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x32e8cb-_0x514ab2['top']+'px',_0x3c1a62=Math['min'](_0x5a2426,_0x5af3b7-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x514ab2['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3c1a62=Math['min'](_0x5a2426,_0x1bb3bc-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px');if(this['optionsContainer']){let _0x4daf98=_0x3c1a62;if(this['searchInput']){const _0x1ede44=this['searchInput']['parentElement'];_0x1ede44&&(_0x4daf98-=_0x1ede44['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4daf98)+'px';}this['dropdown']['style']['left']=_0x514ab2['left']+'px',this['dropdown']['style']['width']=_0x514ab2['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4b3009=this['searchInput']['parentElement'];_0x4b3009&&_0x4b3009['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x41fd18){if(this['nativeSelect']['disabled'])return;if(_0x41fd18['key']==='Enter'||_0x41fd18['key']==='\x20')_0x41fd18['preventDefault'](),this['toggle']();else _0x41fd18['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x20fb00='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x20fb00),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x453571=document['getElementById']('confirm-dialog-close'),_0x4857a3=document['getElementById']('confirm-dialog-cancel'),_0x37cb30=document['getElementById']('confirm-dialog-confirm'),_0x41cc6b=this['_modal']['querySelector']('.modal-overlay');_0x453571['addEventListener']('click',()=>this['_resolve'](![])),_0x4857a3['addEventListener']('click',()=>this['_resolve'](![])),_0x37cb30['addEventListener']('click',()=>this['_resolve'](!![])),_0x41cc6b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x260821=>{if(_0x260821['key']==='Escape')_0x260821['preventDefault'](),this['_resolve'](![]);else _0x260821['key']==='Enter'&&(_0x260821['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xaf269e,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xff39d=>{this['_resolvePromise']=_0xff39d,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xaf269e;const _0x5bb63a=document['getElementById']('confirm-dialog-cancel'),_0xadc58=document['getElementById']('confirm-dialog-confirm');_0x5bb63a['textContent']=cancelText,_0xadc58['textContent']=confirmText,_0xadc58['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xadc58['focus']();});},'_resolve'(_0x3d2375){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3d2375),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e3b17,_0x25c371={}){this['container']=_0x3e3b17,this['options']={'placeholder':_0x25c371['placeholder']||'Type\x20to\x20search...','maxItems':_0x25c371['maxItems']||0x64,'loadItems':_0x25c371['loadItems']||(async()=>[]),'renderItem':_0x25c371['renderItem']||(_0x459929=>({'primary':String(_0x459929),'secondary':''})),'onSelect':_0x25c371['onSelect']||(()=>{}),'filterItems':_0x25c371['filterItems']||null,'getItemValue':_0x25c371['getItemValue']||(_0xbca5b9=>_0xbca5b9),'sortItems':_0x25c371['sortItems']||null,'debounceMs':_0x25c371['debounceMs']||0xc8,'minCharsForSearch':_0x25c371['minCharsForSearch']||0x0,'emptyMessage':_0x25c371['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x25c371['loadingMessage']||'Loading...','preload':_0x25c371['preload']!==![],'searchMode':_0x25c371['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x43001c=>this['onBlur'](_0x43001c)),this['input']['addEventListener']('input',_0x536f04=>this['onInput'](_0x536f04)),this['input']['addEventListener']('keydown',_0x38f5a0=>this['onKeydown'](_0x38f5a0)),this['clearBtn']['addEventListener']('mousedown',_0x78fe83=>{_0x78fe83['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x21e3c5=>{_0x21e3c5['preventDefault']();}),document['addEventListener']('click',_0x565e7f=>{!this['wrapper']['contains'](_0x565e7f['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0xc28494){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xc28494);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x274d68){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4a907e){const _0x3a05f7=_0x4a907e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3a05f7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3a05f7):this['loadAndShow'](_0x3a05f7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48daba){switch(_0x48daba['key']){case'ArrowDown':_0x48daba['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48daba['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48daba['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48daba['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5de43e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x183d7c=this['selectedIndex']+_0x5de43e;if(_0x183d7c>=0x0&&_0x183d7c<this['filteredItems']['length']){this['selectedIndex']=_0x183d7c,this['updateSelectionHighlight']();const _0x5d1bb9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5d1bb9[this['selectedIndex']]&&_0x5d1bb9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x16f963=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x16f963['forEach']((_0x142f2f,_0x27bc54)=>{_0x142f2f['classList']['toggle']('keyboard-selected',_0x27bc54===this['selectedIndex']);});}async['loadAndShow'](_0x247c43){this['showLoading']();try{const _0x20fdbd=await this['options']['loadItems'](_0x247c43);if(this['options']['searchMode']==='server'){let _0x7b2552=_0x20fdbd;this['options']['sortItems']&&(_0x7b2552=this['options']['sortItems']([..._0x20fdbd]));this['filteredItems']=_0x7b2552;const _0x23394a=this['filteredItems']['length']>=this['options']['maxItems'];_0x23394a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23394a),this['open']();}else this['allItems']=_0x20fdbd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x247c43);}catch(_0x31a145){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x31a145),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419e8e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419e8e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x464105=this['filteredItems']['length']>=this['options']['maxItems'];_0x464105&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x464105),this['open']();}['renderItems'](_0x57524b){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x454d35,_0x4d5f68)=>{const _0x433a79=document['createElement']('div');_0x433a79['className']='autocomplete-select-item',_0x433a79['setAttribute']('role','option'),_0x433a79['setAttribute']('data-index',_0x4d5f68);const _0x5bdc67=this['options']['renderItem'](_0x454d35);let _0x22b2ef='';_0x5bdc67['icon']&&(_0x22b2ef='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5bdc67['iconClass']||'')+'\x22>'+_0x5bdc67['icon']+'</span>'),_0x433a79['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x22b2ef+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x5bdc67['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5bdc67['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5bdc67['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x433a79['addEventListener']('click',()=>{this['selectItem'](_0x454d35);}),_0x433a79['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4d5f68,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x433a79);}),_0x57524b?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x304a7c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x304a7c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xd91139){this['selectedItem']=_0xd91139;const _0x16a22d=this['options']['renderItem'](_0xd91139);this['input']['value']=_0x16a22d['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xd91139);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x24395f){if(_0x24395f){this['selectedItem']=_0x24395f;const _0x5e05f9=this['options']['renderItem'](_0x24395f);this['input']['value']=_0x5e05f9['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5bedca){this['allItems']=_0x5bedca,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x341b6c){this['input']['placeholder']=_0x341b6c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x48c6db=null){const _0x1de539=document['getElementById']('admin-menu-container'),_0x5372cb=document['getElementById']('admin-menu-btn'),_0x4345d6=document['getElementById']('admin-menu');if(!_0x1de539||!_0x5372cb||!_0x4345d6)return;try{!_0x48c6db&&(_0x48c6db=await API['getCurrentUser']());if(_0x48c6db){const _0x45ec78=window['Permissions'],_0x463836=_0x45ec78['hasServerPermission'](_0x48c6db,'*')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:manage')||_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')||_0x45ec78['hasTeamPermission'](_0x48c6db,'teams:manage')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:view_details');if(!_0x463836)return;_0x1de539['hidden']=![];if(!_0x45ec78['hasServerPermission'](_0x48c6db,'*')){const _0x39f8f5=_0x4345d6['querySelectorAll']('.admin-menu-item');_0x39f8f5['forEach'](_0x2376ea=>{const _0x1e566d=_0x2376ea['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1e566d==='Users'&&!_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Skills'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Settings'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Health'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Git\x20History'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Roles'&&(_0x2376ea['hidden']=!![]);});}_0x5372cb['addEventListener']('click',_0x1c8cca=>{_0x1c8cca['stopPropagation']();const _0xb1192f=document['getElementById']('actions-menu');if(_0xb1192f)_0xb1192f['hidden']=!![];_0x4345d6['hidden']=!_0x4345d6['hidden'];}),document['addEventListener']('click',_0x172a7d=>{!_0x4345d6['hidden']&&!_0x5372cb['contains'](_0x172a7d['target'])&&!_0x4345d6['contains'](_0x172a7d['target'])&&(_0x4345d6['hidden']=!![]);}),document['addEventListener']('keydown',_0x155a9f=>{_0x155a9f['key']==='Escape'&&!_0x4345d6['hidden']&&(_0x4345d6['hidden']=!![]);});const _0x48e4fe=document['getElementById']('server-health-btn');_0x48e4fe&&_0x48e4fe['addEventListener']('click',async()=>{_0x4345d6['hidden']=!![];const {openServerHealthModal:_0x11be30}=await import('./server-health.js');_0x11be30();});}}catch(_0x5ee3c1){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ee3c1['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|