@profoundlogic/coderflow-server 0.6.9 → 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 +68 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/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 _0x478d1e=window['location']['pathname'],_0x153d9d=_0x478d1e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x153d9d)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x153d9d[0x1]),_0x153d9d[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3ff65b={}){const _0x4cfaa5=new URLSearchParams();_0x3ff65b['userId']&&_0x4cfaa5['set']('userId',String(_0x3ff65b['userId']));_0x3ff65b['automation']&&_0x4cfaa5['set']('automation',String(_0x3ff65b['automation']));const _0x3a46e9=API_BASE+'/tasks/stats'+(_0x4cfaa5['toString']()?'?'+_0x4cfaa5['toString']():''),_0x42fbc8=await fetch(_0x3a46e9);if(!_0x42fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42fbc8['statusText']);return await _0x42fbc8['json']();},async 'getTasks'(_0x2f8d20={}){const _0x3a356c=new URLSearchParams();_0x2f8d20['status']&&_0x3a356c['set']('status',String(_0x2f8d20['status']));_0x2f8d20['environment']&&_0x3a356c['set']('environment',String(_0x2f8d20['environment']));_0x2f8d20['automation']&&_0x3a356c['set']('automation',String(_0x2f8d20['automation']));if(_0x2f8d20['include']){const _0x2ee5c9=Array['isArray'](_0x2f8d20['include'])?_0x2f8d20['include']['join'](','):String(_0x2f8d20['include']);_0x2ee5c9&&_0x3a356c['set']('include',_0x2ee5c9);}_0x2f8d20['filter']&&_0x3a356c['set']('filter',String(_0x2f8d20['filter']));_0x2f8d20['page']&&_0x3a356c['set']('page',String(_0x2f8d20['page']));_0x2f8d20['limit']&&_0x3a356c['set']('limit',String(_0x2f8d20['limit']));_0x2f8d20['userId']&&_0x3a356c['set']('userId',String(_0x2f8d20['userId']));_0x2f8d20['search']&&_0x3a356c['set']('search',String(_0x2f8d20['search']));_0x2f8d20['includeChildTasks']&&_0x3a356c['set']('includeChildTasks','true');const _0x105b79=API_BASE+'/tasks'+(_0x3a356c['toString']()?'?'+_0x3a356c['toString']():''),_0x22c0e2=await fetch(_0x105b79);if(!_0x22c0e2['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x22c0e2['statusText']);return await _0x22c0e2['json']();},async 'getAutomations'(_0x32a1ef={}){const _0x29f5a1=new URLSearchParams();_0x32a1ef['environment']&&_0x29f5a1['set']('environment',String(_0x32a1ef['environment']));const _0x2ba613=await fetch(API_BASE+'/api/automations'+(_0x29f5a1['toString']()?'?'+_0x29f5a1['toString']():''));if(!_0x2ba613['ok']){const _0x595f2a=await _0x2ba613['json']()['catch'](()=>({}));throw new Error(_0x595f2a['message']||_0x595f2a['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ba613['statusText']);}return await _0x2ba613['json']();},async 'getAutomation'(_0x5c18ad){const _0x1453c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c18ad));if(!_0x1453c0['ok']){const _0x1e0774=await _0x1453c0['json']()['catch'](()=>({}));throw new Error(_0x1e0774['message']||_0x1e0774['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x1453c0['statusText']);}return await _0x1453c0['json']();},async 'createAutomation'(_0x935aab){const _0x54bec9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x935aab||{})});if(!_0x54bec9['ok']){const _0x21906d=await _0x54bec9['json']()['catch'](()=>({}));throw new Error(_0x21906d['message']||_0x21906d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54bec9['statusText']);}return await _0x54bec9['json']();},async 'updateAutomation'(_0x27a019,_0x18897f){const _0x410181=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27a019),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18897f||{})});if(!_0x410181['ok']){const _0x4d3072=await _0x410181['json']()['catch'](()=>({}));throw new Error(_0x4d3072['message']||_0x4d3072['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x410181['statusText']);}return await _0x410181['json']();},async 'deleteAutomation'(_0x588e6e){const _0x4ae845=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x588e6e),{'method':'DELETE'});if(!_0x4ae845['ok']){const _0x41e3e7=await _0x4ae845['json']()['catch'](()=>({}));throw new Error(_0x41e3e7['message']||_0x41e3e7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4ae845['statusText']);}return await _0x4ae845['json']();},async 'triggerAutomation'(_0x38bf14){const _0x1495e4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x38bf14)+'/trigger',{'method':'POST'});if(!_0x1495e4['ok']){const _0x3a88a2=await _0x1495e4['json']()['catch'](()=>({}));throw new Error(_0x3a88a2['message']||_0x3a88a2['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x1495e4['statusText']);}return await _0x1495e4['json']();},async 'setAutomationEnabled'(_0xa81284,_0x47a1e7){const _0x3c8250=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa81284)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x47a1e7})});if(!_0x3c8250['ok']){const _0x109bc9=await _0x3c8250['json']()['catch'](()=>({}));throw new Error(_0x109bc9['message']||_0x109bc9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3c8250['statusText']);}return await _0x3c8250['json']();},async 'getAutomationHistory'(_0x5c1913,_0x4c8a57=0x32){const _0x5cbbd3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c1913)+'/history?limit='+encodeURIComponent(String(_0x4c8a57)));if(!_0x5cbbd3['ok']){const _0x5c004a=await _0x5cbbd3['json']()['catch'](()=>({}));throw new Error(_0x5c004a['message']||_0x5c004a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5cbbd3['statusText']);}return await _0x5cbbd3['json']();},async 'getTask'(_0x5d599a,_0x40dc7c={}){const _0x187bfb=new URLSearchParams();if(_0x40dc7c['include']){const _0x2adef7=Array['isArray'](_0x40dc7c['include'])?_0x40dc7c['include']['join'](','):String(_0x40dc7c['include']);if(_0x2adef7)_0x187bfb['set']('include',_0x2adef7);}const _0x39b1c3=await fetch(API_BASE+'/tasks/'+_0x5d599a+(_0x187bfb['toString']()?'?'+_0x187bfb['toString']():''));if(!_0x39b1c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39b1c3['statusText']);return await _0x39b1c3['json']();},async 'getTaskResults'(_0x47268b){const _0x4af2e7=await fetch(API_BASE+'/tasks/'+_0x47268b+'/results');if(!_0x4af2e7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4af2e7['statusText']);return await _0x4af2e7['json']();},async 'getTaskPatches'(_0x2332e8){const _0x833c3a=await fetch(API_BASE+'/tasks/'+_0x2332e8+'/patches');if(!_0x833c3a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x833c3a['statusText']);return await _0x833c3a['json']();},async 'getTaskAttachments'(_0x44218b){const _0x241683=await fetch(API_BASE+'/tasks/'+_0x44218b+'/attachments');if(!_0x241683['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x241683['statusText']);return await _0x241683['json']();},async 'uploadAttachments'(_0x57d105,_0x3cd3c9){const _0x1e2d84=new FormData();for(const _0x31c505 of _0x3cd3c9){_0x1e2d84['append']('attachments',_0x31c505);}const _0x1bd0d0=await fetch(API_BASE+'/tasks/'+_0x57d105+'/attachments',{'method':'POST','body':_0x1e2d84});if(!_0x1bd0d0['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1bd0d0['statusText']);return await _0x1bd0d0['json']();},async 'isAINameGenerationAvailable'(){try{const _0x102192=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x102192['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x102192['json']();}catch(_0x424296){return{'available':![],'reason':_0x424296['message']};}},async 'generateTaskName'(_0x41406a){try{const _0x197bb5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x41406a})});return await _0x197bb5['json']();}catch(_0x2f5643){return{'success':![],'error':_0x2f5643['message']};}},async 'createTask'(_0x507fc2){let _0x149dc2,_0x14a113={};if(_0x507fc2['files']&&_0x507fc2['files']['length']>0x0){const _0x243c40=new FormData();for(const [_0x5844d8,_0x306da0]of Object['entries'](_0x507fc2)){if(_0x5844d8!=='files'){if(_0x306da0==null)continue;typeof _0x306da0==='object'?_0x243c40['append'](_0x5844d8,JSON['stringify'](_0x306da0)):_0x243c40['append'](_0x5844d8,String(_0x306da0));}}for(const _0x2e90fc of _0x507fc2['files']){_0x243c40['append']('attachments',_0x2e90fc);}_0x149dc2=_0x243c40;}else _0x14a113['Content-Type']='application/json',_0x149dc2=JSON['stringify'](_0x507fc2);const _0x4aee42=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x14a113,'body':_0x149dc2});if(!_0x4aee42['ok']){const _0x154b75=await _0x4aee42['json'](),_0xeaefba=new Error(_0x154b75['error']||'Failed\x20to\x20create\x20task:\x20'+_0x4aee42['statusText']),{message:_0x3882cd,..._0x42d185}=_0x154b75;Object['assign'](_0xeaefba,_0x42d185);throw _0xeaefba;}return await _0x4aee42['json']();},async 'createTestTask'(_0x55758a){const _0xf7e1e3=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55758a)});if(!_0xf7e1e3['ok']){const _0x222c35=await _0xf7e1e3['json']();throw new Error(_0x222c35['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xf7e1e3['statusText']);}return await _0xf7e1e3['json']();},async 'createEphemeralTest'(_0x3adca3){const _0x31b14e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3adca3)});if(!_0x31b14e['ok']){const _0x400f20=await _0x31b14e['json']();throw new Error(_0x400f20['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x31b14e['statusText']);}return await _0x31b14e['json']();},async 'createDeployTask'(_0xe54a85){const _0x2bfd99=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe54a85)});if(!_0x2bfd99['ok']){const _0x14dba9=await _0x2bfd99['json']();throw new Error(_0x14dba9['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2bfd99['statusText']);}return await _0x2bfd99['json']();},async 'getEnvironments'(){const _0x227c4e=await fetch(API_BASE+'/environments');if(!_0x227c4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x227c4e['statusText']);return await _0x227c4e['json']();},async 'getEnvironment'(_0x4f6c1f){const _0x462327=await fetch(API_BASE+'/environments/'+_0x4f6c1f);if(!_0x462327['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x462327['statusText']);return await _0x462327['json']();},async 'getEnvironmentRepoHistory'(_0x3b3a35,_0x58cc79,_0x228cad={}){if(!_0x3b3a35||!_0x58cc79)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x8d9089=new URLSearchParams();if(_0x228cad['limit'])_0x8d9089['set']('limit',String(_0x228cad['limit']));if(_0x228cad['offset'])_0x8d9089['set']('offset',String(_0x228cad['offset']));if(_0x228cad['search'])_0x8d9089['set']('search',String(_0x228cad['search']));if(_0x228cad['branch'])_0x8d9089['set']('branch',String(_0x228cad['branch']));const _0x56c47a=API_BASE+'/environments/'+encodeURIComponent(_0x3b3a35)+'/repos/'+encodeURIComponent(_0x58cc79)+'/git/history',_0x25b399=await fetch(''+_0x56c47a+(_0x8d9089['toString']()?'?'+_0x8d9089['toString']():''));if(!_0x25b399['ok']){const _0x82d95f=await _0x25b399['json']()['catch'](()=>({}));throw new Error(_0x82d95f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x25b399['statusText']);}return await _0x25b399['json']();},async 'getEnvironmentRepoCommit'(_0x27ab5b,_0x1cee47,_0x50d100){if(!_0x27ab5b||!_0x1cee47||!_0x50d100)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4c74c8=API_BASE+'/environments/'+encodeURIComponent(_0x27ab5b)+'/repos/'+encodeURIComponent(_0x1cee47)+'/git/commits/'+encodeURIComponent(_0x50d100),_0x273ad4=await fetch(_0x4c74c8);if(!_0x273ad4['ok']){const _0x4b81b9=await _0x273ad4['json']()['catch'](()=>({}));throw new Error(_0x4b81b9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x273ad4['statusText']);}return await _0x273ad4['json']();},async 'getEnvironmentRepoBranches'(_0x3763d6,_0x4674ab){if(!_0x3763d6||!_0x4674ab)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a1378=API_BASE+'/environments/'+encodeURIComponent(_0x3763d6)+'/repos/'+encodeURIComponent(_0x4674ab)+'/git/branches',_0x51040d=await fetch(_0x3a1378);if(!_0x51040d['ok']){const _0x558c54=await _0x51040d['json']()['catch'](()=>({}));throw new Error(_0x558c54['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x51040d['statusText']);}return await _0x51040d['json']();},async 'revertEnvironmentRepoCommit'(_0x62487,_0x14cc89,_0x40d5df,_0xfc9fec={}){if(!_0x62487||!_0x14cc89||!_0x40d5df)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4e1099=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x62487)+'/repos/'+encodeURIComponent(_0x14cc89)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x40d5df,..._0xfc9fec})});if(!_0x4e1099['ok']){const _0x2ee149=await _0x4e1099['json']()['catch'](()=>({}));throw new Error(_0x2ee149['message']||_0x2ee149['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4e1099['statusText']);}return await _0x4e1099['json']();},async 'getTemplates'(_0x21a608={}){const _0x480d7e=new URLSearchParams();if(_0x21a608['include']){const _0x528cce=Array['isArray'](_0x21a608['include'])?_0x21a608['include']['join'](','):String(_0x21a608['include']);if(_0x528cce)_0x480d7e['set']('include',_0x528cce);}const _0x3b2e36=await fetch(API_BASE+'/templates'+(_0x480d7e['toString']()?'?'+_0x480d7e['toString']():''));if(!_0x3b2e36['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3b2e36['statusText']);return await _0x3b2e36['json']();},async 'getTemplatesForEnvironment'(_0x21843a,_0x39bdc1={}){if(!_0x21843a)throw new Error('Environment\x20name\x20is\x20required');const _0x157094=new URLSearchParams();if(_0x39bdc1['include']){const _0x15bd24=Array['isArray'](_0x39bdc1['include'])?_0x39bdc1['include']['join'](','):String(_0x39bdc1['include']);if(_0x15bd24)_0x157094['set']('include',_0x15bd24);}const _0x771b78=await fetch(API_BASE+'/templates/'+_0x21843a+(_0x157094['toString']()?'?'+_0x157094['toString']():''));if(!_0x771b78['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x21843a+':\x20'+_0x771b78['statusText']);return await _0x771b78['json']();},async 'getTemplate'(_0x56760e,_0x207dce,_0x3356f0={}){if(!_0x56760e||!_0x207dce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4cba66=new URLSearchParams();if(_0x3356f0['include']){const _0x50a5e7=Array['isArray'](_0x3356f0['include'])?_0x3356f0['include']['join'](','):String(_0x3356f0['include']);if(_0x50a5e7)_0x4cba66['set']('include',_0x50a5e7);}const _0x940645=await fetch(API_BASE+'/templates/'+_0x56760e+'/'+_0x207dce+(_0x4cba66['toString']()?'?'+_0x4cba66['toString']():''));if(!_0x940645['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x940645['statusText']);return await _0x940645['json']();},async 'getTaskLogs'(_0x33c9ba,_0x3dbdc4={}){if(!_0x33c9ba)throw new Error('Task\x20ID\x20is\x20required');const _0xfe3a8b=new URLSearchParams();_0x3dbdc4['tail']&&_0xfe3a8b['set']('tail',String(_0x3dbdc4['tail']));const _0x49f4b4=await fetch(API_BASE+'/tasks/'+_0x33c9ba+'/logs'+(_0xfe3a8b['toString']()?'?'+_0xfe3a8b['toString']():''));if(!_0x49f4b4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x49f4b4['statusText']);return await _0x49f4b4['text']();},async 'getContainers'(){const _0x1b43ae=await fetch(API_BASE+'/containers');if(!_0x1b43ae['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1b43ae['statusText']);return await _0x1b43ae['json']();},async 'getContainer'(_0x3ece04){const _0x5ea67b=await fetch(API_BASE+'/containers/'+_0x3ece04);if(!_0x5ea67b['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ea67b['statusText']);return await _0x5ea67b['json']();},async 'startInteractiveContainer'(_0x3ae865){const _0x1bf748=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ae865)});if(!_0x1bf748['ok']){const _0x298881=await _0x1bf748['json']()['catch'](()=>({}));throw new Error(_0x298881['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1bf748['statusText']);}return await _0x1bf748['json']();},async 'stopContainer'(_0x3f5861){const _0x3a3c7f=await fetch(API_BASE+'/containers/'+_0x3f5861,{'method':'DELETE'});if(!_0x3a3c7f['ok']){const _0xc359ff=await _0x3a3c7f['json']()['catch'](()=>({}));throw new Error(_0xc359ff['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3a3c7f['statusText']);}return await _0x3a3c7f['json']();},async 'stopTask'(_0x45a5b8){if(!_0x45a5b8)throw new Error('Task\x20ID\x20is\x20required');const _0x11f746=await fetch(API_BASE+'/tasks/'+_0x45a5b8+'/stop',{'method':'POST'});if(!_0x11f746['ok']){const _0x1f76e8=await _0x11f746['json']()['catch'](()=>({}));throw new Error(_0x1f76e8['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x11f746['statusText']);}return await _0x11f746['json']();},async 'interruptTask'(_0x4bf36b){if(!_0x4bf36b)throw new Error('Task\x20ID\x20is\x20required');const _0x40cc74=await fetch(API_BASE+'/tasks/'+_0x4bf36b+'/interrupt',{'method':'POST'});if(!_0x40cc74['ok']){const _0xd5edfc=await _0x40cc74['json']()['catch'](()=>({}));throw new Error(_0xd5edfc['error']||_0xd5edfc['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x40cc74['statusText']);}return await _0x40cc74['json']();},async 'startTask'(_0x5b15a5){if(!_0x5b15a5)throw new Error('Task\x20ID\x20is\x20required');const _0x4e261f=await fetch(API_BASE+'/tasks/'+_0x5b15a5+'/start',{'method':'POST'});if(!_0x4e261f['ok']){const _0x138eb2=await _0x4e261f['json']()['catch'](()=>({}));throw new Error(_0x138eb2['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4e261f['statusText']);}return await _0x4e261f['json']();},async 'deleteTask'(_0x1804d1){if(!_0x1804d1)throw new Error('Task\x20ID\x20is\x20required');const _0x23fc56=await fetch(API_BASE+'/tasks/'+_0x1804d1,{'method':'DELETE'});if(!_0x23fc56['ok']){const _0x11866b=await _0x23fc56['json']()['catch'](()=>({}));throw new Error(_0x11866b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23fc56['statusText']);}return await _0x23fc56['json']();},async 'refreshTasksFromDisk'(){const _0x1f02d9=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f02d9['ok']){const _0x11038c=await _0x1f02d9['json']()['catch'](()=>({}));throw new Error(_0x11038c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f02d9['statusText']);}return await _0x1f02d9['json']();},async 'approveTask'(_0x388316,_0x4652b8={}){if(!_0x388316)throw new Error('Task\x20ID\x20is\x20required');const _0x512a4c={'commit_message':_0x4652b8['commit_message']||'','pull':_0x4652b8['pull']??![],'push':_0x4652b8['push']??![]};_0x4652b8['new_branch']&&(_0x512a4c['new_branch']=_0x4652b8['new_branch']);const _0x1411e7=await fetch(API_BASE+'/tasks/'+_0x388316+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512a4c)});if(!_0x1411e7['ok']){const _0x49c7ba=await _0x1411e7['json']()['catch'](()=>({}));let _0xfe6d92=_0x49c7ba['error']||_0x49c7ba['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1411e7['statusText'];if(_0x49c7ba['results']&&Array['isArray'](_0x49c7ba['results'])){const _0x44ea70=_0x49c7ba['results']['filter'](_0x5e6f0f=>!_0x5e6f0f['success']&&_0x5e6f0f['error']);_0x44ea70['length']>0x0&&(_0xfe6d92=_0x44ea70[0x0]['error']);}throw new Error(_0xfe6d92);}return await _0x1411e7['json']();},async 'getPullRequestInfo'(_0x550a89){if(!_0x550a89)throw new Error('Task\x20ID\x20is\x20required');const _0x4fbdae=await fetch(API_BASE+'/tasks/'+_0x550a89+'/pull-request-info');if(!_0x4fbdae['ok']){const _0x42916b=await _0x4fbdae['json']()['catch'](()=>({}));throw new Error(_0x42916b['error']||_0x42916b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4fbdae['statusText']);}return await _0x4fbdae['json']();},async 'createPullRequests'(_0x32ebe2,_0x1a1262){if(!_0x32ebe2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1262||!Array['isArray'](_0x1a1262))throw new Error('repos\x20array\x20is\x20required');const _0x33772e=await fetch(API_BASE+'/tasks/'+_0x32ebe2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1a1262})});if(!_0x33772e['ok']){const _0x1c2cf3=await _0x33772e['json']()['catch'](()=>({}));let _0x397e4f=_0x1c2cf3['error']||_0x1c2cf3['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x33772e['statusText'];if(_0x1c2cf3['results']&&Array['isArray'](_0x1c2cf3['results'])){const _0x5044f3=_0x1c2cf3['results']['filter'](_0x2d9cb7=>!_0x2d9cb7['success']&&_0x2d9cb7['error']);_0x5044f3['length']>0x0&&(_0x397e4f=_0x5044f3[0x0]['error']);}throw new Error(_0x397e4f);}return await _0x33772e['json']();},async 'syncRepos'(_0x5b8e57){if(!_0x5b8e57)throw new Error('Task\x20ID\x20is\x20required');const _0x102493=await fetch(API_BASE+'/tasks/'+_0x5b8e57+'/sync-repos',{'method':'POST'});if(!_0x102493['ok']){const _0x38c2b5=await _0x102493['json']()['catch'](()=>({}));throw new Error(_0x38c2b5['error']||_0x38c2b5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x102493['statusText']);}return await _0x102493['json']();},async 'getIbmiSyncInfo'(_0x4e702d){if(!_0x4e702d)throw new Error('Task\x20ID\x20is\x20required');const _0x328ec3=await fetch(API_BASE+'/tasks/'+_0x4e702d+'/ibmi-sync-info');if(!_0x328ec3['ok']){const _0x3ebb49=await _0x328ec3['json']()['catch'](()=>({}));throw new Error(_0x3ebb49['error']||_0x3ebb49['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x328ec3['json']();},async 'getSyncFiles'(_0x44c55e){if(!_0x44c55e)throw new Error('Task\x20ID\x20is\x20required');const _0x5368f9=await fetch(API_BASE+'/tasks/'+_0x44c55e+'/sync-to-ibmi/files');if(!_0x5368f9['ok']){const _0x533ccc=await _0x5368f9['json']()['catch'](()=>({}));throw new Error(_0x533ccc['error']||_0x533ccc['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5368f9['json']();},async 'syncToIbmi'(_0x14f191,_0x27ee64,_0x53319f=null,_0x252fa2=null,_0x28f3a4=null){if(!_0x14f191)throw new Error('Task\x20ID\x20is\x20required');const _0x106abb={'library':_0x27ee64};if(_0x53319f)_0x106abb['user']=_0x53319f;if(_0x252fa2)_0x106abb['password']=_0x252fa2;if(_0x28f3a4)_0x106abb['files']=_0x28f3a4;const _0x13cb17=await fetch(API_BASE+'/tasks/'+_0x14f191+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x106abb)});if(!_0x13cb17['ok']){const _0x146f83=await _0x13cb17['json']()['catch'](()=>({}));throw new Error(_0x146f83['error']||_0x146f83['message']||'Sync\x20failed');}return await _0x13cb17['json']();},async 'getIbmiSyncLog'(_0x7894f9){if(!_0x7894f9)throw new Error('Task\x20ID\x20is\x20required');const _0x3d813c=await fetch(API_BASE+'/tasks/'+_0x7894f9+'/ibmi-sync-log');if(!_0x3d813c['ok']){const _0xf1373c=await _0x3d813c['json']()['catch'](()=>({}));throw new Error(_0xf1373c['error']||_0xf1373c['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3d813c['json']();},async 'pullChanges'(_0x40265e){if(!_0x40265e)throw new Error('Task\x20ID\x20is\x20required');const _0x3685aa=await fetch(API_BASE+'/tasks/'+_0x40265e+'/pull-changes',{'method':'POST'});if(!_0x3685aa['ok']){const _0x567a1b=await _0x3685aa['json']()['catch'](()=>({}));throw new Error(_0x567a1b['error']||_0x567a1b['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x3685aa['statusText']);}return await _0x3685aa['json']();},async 'readFile'(_0x14152c,_0x41264c){if(!_0x14152c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41264c)throw new Error('File\x20path\x20is\x20required');const _0x31ff5d=await fetch(API_BASE+'/tasks/'+_0x14152c+'/files?path='+encodeURIComponent(_0x41264c));if(!_0x31ff5d['ok']){const _0xe3b6d2=await _0x31ff5d['json']()['catch'](()=>({}));throw new Error(_0xe3b6d2['error']||_0xe3b6d2['message']||'Failed\x20to\x20read\x20file:\x20'+_0x31ff5d['statusText']);}return await _0x31ff5d['json']();},'getTaskFileDownloadUrl'(_0x53c797,_0x3fc7a4){if(!_0x53c797)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3fc7a4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x53c797+'/files/download?path='+encodeURIComponent(_0x3fc7a4);},async 'writeFile'(_0x196fad,_0x5668d9,_0x3dc05c){if(!_0x196fad)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5668d9)throw new Error('File\x20path\x20is\x20required');if(_0x3dc05c===undefined)throw new Error('Content\x20is\x20required');const _0x2ec565=await fetch(API_BASE+'/tasks/'+_0x196fad+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5668d9,'content':_0x3dc05c})});if(!_0x2ec565['ok']){const _0x48f841=await _0x2ec565['json']()['catch'](()=>({}));throw new Error(_0x48f841['error']||_0x48f841['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2ec565['statusText']);}return await _0x2ec565['json']();},async 'uploadTaskFiles'(_0x261279,_0x4292b8,_0x557588){if(!_0x261279)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4292b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x557588||_0x557588['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4fd1a9=new FormData();_0x4fd1a9['append']('targetDir',_0x4292b8);for(const _0x3d9f49 of _0x557588){_0x4fd1a9['append']('files',_0x3d9f49,_0x3d9f49['name']);}const _0x4d9563=await fetch(API_BASE+'/tasks/'+_0x261279+'/files/upload',{'method':'POST','body':_0x4fd1a9});if(!_0x4d9563['ok']){const _0x628efd=await _0x4d9563['json']()['catch'](()=>({}));throw new Error(_0x628efd['error']||_0x628efd['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4d9563['statusText']);}return await _0x4d9563['json']();},async 'deleteFile'(_0x31668f,_0x336777){if(!_0x31668f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x336777)throw new Error('File\x20path\x20is\x20required');const _0x2ed69f=await fetch(API_BASE+'/tasks/'+_0x31668f+'/files?path='+encodeURIComponent(_0x336777),{'method':'DELETE'});if(!_0x2ed69f['ok']){const _0x45efe8=await _0x2ed69f['json']()['catch'](()=>({}));throw new Error(_0x45efe8['error']||_0x45efe8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2ed69f['statusText']);}return await _0x2ed69f['json']();},async 'discardFile'(_0x5a5548,_0x5d871e,_0xf17b6e){if(!_0x5a5548)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d871e)throw new Error('File\x20path\x20is\x20required');if(!_0xf17b6e)throw new Error('Repository\x20path\x20is\x20required');const _0x2fad69=await fetch(API_BASE+'/tasks/'+_0x5a5548+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d871e,'repoPath':_0xf17b6e})});if(!_0x2fad69['ok']){const _0x15c8ce=await _0x2fad69['json']()['catch'](()=>({}));throw new Error(_0x15c8ce['error']||_0x15c8ce['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2fad69['statusText']);}return await _0x2fad69['json']();},async 'followUpTask'(_0xb73778,_0x59d33d={}){if(!_0xb73778)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59d33d['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x50f9ed,_0x448a27={};if(_0x59d33d['files']&&_0x59d33d['files']['length']>0x0){const _0xa2540=new FormData();_0xa2540['append']('instructions',_0x59d33d['instructions']);for(const _0xd99d5 of _0x59d33d['files']){_0xa2540['append']('attachments',_0xd99d5);}_0x50f9ed=_0xa2540;}else _0x448a27['Content-Type']='application/json',_0x50f9ed=JSON['stringify']({'instructions':_0x59d33d['instructions']});const _0xa6a7e7=await fetch(API_BASE+'/tasks/'+_0xb73778+'/follow-up',{'method':'POST','headers':_0x448a27,'body':_0x50f9ed});if(!_0xa6a7e7['ok']){const _0x306711=await _0xa6a7e7['json']()['catch'](()=>({}));throw new Error(_0x306711['error']||_0x306711['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xa6a7e7['statusText']);}return await _0xa6a7e7['json']();},async 'getTaskRewindPoints'(_0x4449cb){if(!_0x4449cb)throw new Error('Task\x20ID\x20is\x20required');const _0x8b7d2d=await fetch(API_BASE+'/tasks/'+_0x4449cb+'/rewind-points');if(!_0x8b7d2d['ok']){const _0x32b5a6=await _0x8b7d2d['json']()['catch'](()=>({}));throw new Error(_0x32b5a6['error']||_0x32b5a6['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x8b7d2d['statusText']);}return await _0x8b7d2d['json']();},async 'rewindTask'(_0x3c582e,_0x3e648d={}){if(!_0x3c582e)throw new Error('Task\x20ID\x20is\x20required');const _0x222d55=Number['isInteger'](_0x3e648d['targetFollowUpCount'])?_0x3e648d['targetFollowUpCount']:0x0,_0x5ecc1e={'targetFollowUpCount':_0x222d55};typeof _0x3e648d['instructions']==='string'&&_0x3e648d['instructions']['trim']()&&(_0x5ecc1e['instructions']=_0x3e648d['instructions']['trim']());typeof _0x3e648d['rewindFiles']==='boolean'&&(_0x5ecc1e['rewindFiles']=_0x3e648d['rewindFiles']);const _0x409255=await fetch(API_BASE+'/tasks/'+_0x3c582e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ecc1e)});if(!_0x409255['ok']){const _0x16c682=await _0x409255['json']()['catch'](()=>({}));throw new Error(_0x16c682['error']||_0x16c682['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x409255['statusText']);}return await _0x409255['json']();},async 'login'(_0x1282aa,_0x12309c){const _0x120204=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1282aa,'password':_0x12309c})});if(!_0x120204['ok']){const _0x353846=await _0x120204['json']();throw new Error(_0x353846['message']||'Login\x20failed');}return await _0x120204['json']();},async 'logout'(){const _0x4b66a2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4b66a2['ok']){const _0x18f285=await _0x4b66a2['json']();throw new Error(_0x18f285['message']||'Logout\x20failed');}return await _0x4b66a2['json']();},async 'getCurrentUser'(){const _0x4687f1=await fetch(API_BASE+'/auth/me');if(!_0x4687f1['ok'])throw new Error('Not\x20authenticated');const _0x362de1=await _0x4687f1['json']();return _0x362de1['user'];},async 'getRolesInfo'(){const _0x42b66f=await fetch(API_BASE+'/users/roles');if(!_0x42b66f['ok']){const _0x132c3b=await _0x42b66f['json']();throw new Error(_0x132c3b['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42b66f['json']();},async 'getUsers'(){const _0x5c87b8=await fetch(API_BASE+'/users');if(!_0x5c87b8['ok']){const _0x5d19cb=await _0x5c87b8['json']();throw new Error(_0x5d19cb['message']||'Failed\x20to\x20get\x20users');}return await _0x5c87b8['json']();},async 'getUser'(_0x51cfd9){const _0x3b4068=await fetch(API_BASE+'/users/'+_0x51cfd9);if(!_0x3b4068['ok']){const _0x1cf0ed=await _0x3b4068['json']();throw new Error(_0x1cf0ed['message']||'Failed\x20to\x20get\x20user');}return await _0x3b4068['json']();},async 'createUser'(_0x37e4f5){const _0x46d3d3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37e4f5)});if(!_0x46d3d3['ok']){const _0x3e8c09=await _0x46d3d3['json']();throw new Error(_0x3e8c09['message']||'Failed\x20to\x20create\x20user');}return await _0x46d3d3['json']();},async 'updateUser'(_0x3524c7,_0x3f2f06){const _0x1ff7ff=await fetch(API_BASE+'/users/'+_0x3524c7,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f2f06)});if(!_0x1ff7ff['ok']){const _0x3f6581=await _0x1ff7ff['json']();throw new Error(_0x3f6581['message']||'Failed\x20to\x20update\x20user');}return await _0x1ff7ff['json']();},async 'deleteUser'(_0x388463){const _0x32c54d=await fetch(API_BASE+'/users/'+_0x388463,{'method':'DELETE'});if(!_0x32c54d['ok']){const _0x491413=await _0x32c54d['json']();throw new Error(_0x491413['message']||'Failed\x20to\x20delete\x20user');}return await _0x32c54d['json']();},async 'stopAllContainers'(){const _0x10ce30=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x344f5c=await _0x10ce30['json']()['catch'](()=>({}));if(!_0x10ce30['ok'])throw new Error(_0x344f5c['message']||_0x344f5c['error']||'Failed\x20to\x20stop\x20containers');return _0x344f5c;},async 'removeStoppedContainers'(){const _0x2e2e45=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x56180d=await _0x2e2e45['json']()['catch'](()=>({}));if(!_0x2e2e45['ok'])throw new Error(_0x56180d['message']||_0x56180d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x56180d;},async 'pruneDockerResources'(){const _0x326b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2f868c=await _0x326b22['json']()['catch'](()=>({}));if(!_0x326b22['ok'])throw new Error(_0x2f868c['message']||_0x2f868c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2f868c;},async 'createPasswordToken'(_0x55af5f,_0x2a6570='setup',_0x199008=![]){const _0x33bb5f=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x55af5f,'type':_0x2a6570,'sendEmail':_0x199008})});if(!_0x33bb5f['ok']){const _0x3b8911=await _0x33bb5f['json']();throw new Error(_0x3b8911['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x33bb5f['json']();},async 'getEmailConfig'(){const _0x265ec1=await fetch(API_BASE+'/password/email-config');if(!_0x265ec1['ok']){const _0x1ba1f2=await _0x265ec1['json']();throw new Error(_0x1ba1f2['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x265ec1['json']();},async 'updateTaskName'(_0x4ed290,_0x4defd9){const _0x5bd402=await fetch(API_BASE+'/tasks/'+_0x4ed290,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4defd9})});if(!_0x5bd402['ok']){const _0x47cfeb=await _0x5bd402['json']();throw new Error(_0x47cfeb['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5bd402['json']();},async 'pinTask'(_0x32901b,_0x34943d,_0x439880=null){if(!_0x32901b)throw new Error('Task\x20ID\x20is\x20required');const _0x2aeb38={'pinned':_0x34943d};_0x439880&&_0x439880['length']>0x0&&(_0x2aeb38['additionalTaskIds']=_0x439880);const _0x1b40b1=await fetch(API_BASE+'/tasks/'+_0x32901b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2aeb38)});if(!_0x1b40b1['ok']){const _0xf80518=await _0x1b40b1['json']();throw new Error(_0xf80518['error']||'Failed\x20to\x20pin\x20task');}return await _0x1b40b1['json']();},async 'setTaskWinner'(_0x599f72,_0x771bde,_0x85571=[]){if(!_0x599f72)throw new Error('Task\x20ID\x20is\x20required');const _0x1a1352=await fetch(API_BASE+'/tasks/'+_0x599f72+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x771bde,'siblings':_0x85571})});if(!_0x1a1352['ok']){const _0x2560e3=await _0x1a1352['json']();throw new Error(_0x2560e3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1a1352['json']();},async 'setTaskLoser'(_0x1237c2,_0x570e49){if(!_0x1237c2)throw new Error('Task\x20ID\x20is\x20required');const _0x2c89c0=await fetch(API_BASE+'/tasks/'+_0x1237c2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x570e49})});if(!_0x2c89c0['ok']){const _0x22c4da=await _0x2c89c0['json']();throw new Error(_0x22c4da['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2c89c0['json']();},async 'createTaskGroup'(_0x4b8468){const _0xe6a20c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b8468)});if(!_0xe6a20c['ok']){const _0x12be75=await _0xe6a20c['json']();throw new Error(_0x12be75['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xe6a20c['json']();},async 'getTaskGroups'(_0x224168={}){const _0x373637=new URLSearchParams();if(_0x224168['userId'])_0x373637['set']('userId',String(_0x224168['userId']));if(_0x224168['status'])_0x373637['set']('status',String(_0x224168['status']));if(_0x224168['limit'])_0x373637['set']('limit',String(_0x224168['limit']));const _0x48e606=API_BASE+'/tasks/groups'+(_0x373637['toString']()?'?'+_0x373637['toString']():''),_0x2a0f05=await fetch(_0x48e606);if(!_0x2a0f05['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2a0f05['json']();},async 'getTaskGroup'(_0x3f6028){const _0x448032=await fetch(API_BASE+'/tasks/groups/'+_0x3f6028);if(!_0x448032['ok']){const _0x1213fc=await _0x448032['json']();throw new Error(_0x1213fc['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x448032['json']();},async 'updateTaskGroup'(_0x4991ea,_0x2f943b,_0x38b937){const _0x2a1ecc=await fetch(API_BASE+'/tasks/'+_0x4991ea+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x2f943b,'groupIndex':_0x38b937})});if(!_0x2a1ecc['ok']){const _0x2344f9=await _0x2a1ecc['json']();throw new Error(_0x2344f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2a1ecc['json']();},async 'removeTaskFromGroup'(_0x1b6eab){return this['updateTaskGroup'](_0x1b6eab,null,null);},async 'deleteTaskGroup'(_0x22de05,_0x1f8f32=![]){const _0x4d18fd=_0x1f8f32?'?deleteTasks=true':'',_0x563c09=await fetch(API_BASE+'/tasks/groups/'+_0x22de05+_0x4d18fd,{'method':'DELETE'});if(!_0x563c09['ok']){const _0x63c96a=await _0x563c09['json']();throw new Error(_0x63c96a['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xb93960,_0x22a8f5){const _0x29bdd2=await fetch(API_BASE+'/tasks/groups/'+_0xb93960+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x22a8f5})});if(!_0x29bdd2['ok']){const _0x128778=await _0x29bdd2['json']();throw new Error(_0x128778['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x29bdd2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a55cf){if(!_0x1a55cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4b1c2f=await fetch(API_BASE+'/tasks/'+_0x1a55cf+'/comments');if(!_0x4b1c2f['ok']){const _0x8bca60=await _0x4b1c2f['json']()['catch'](()=>({}));throw new Error(_0x8bca60['error']||'Failed\x20to\x20get\x20comments');}return await _0x4b1c2f['json']();},async 'addComment'(_0x3bc104,_0x45fa70){if(!_0x3bc104)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45fa70)throw new Error('Comment\x20content\x20is\x20required');const _0x542e4a=await fetch(API_BASE+'/tasks/'+_0x3bc104+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45fa70})});if(!_0x542e4a['ok']){const _0xf4ca22=await _0x542e4a['json']()['catch'](()=>({}));throw new Error(_0xf4ca22['error']||'Failed\x20to\x20add\x20comment');}return await _0x542e4a['json']();},async 'updateComment'(_0x2d2277,_0x429515,_0x25a90a){if(!_0x2d2277)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429515)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x25a90a)throw new Error('Comment\x20content\x20is\x20required');const _0x4940ca=await fetch(API_BASE+'/tasks/'+_0x2d2277+'/comments/'+_0x429515,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25a90a})});if(!_0x4940ca['ok']){const _0x4c04f1=await _0x4940ca['json']()['catch'](()=>({}));throw new Error(_0x4c04f1['error']||'Failed\x20to\x20update\x20comment');}return await _0x4940ca['json']();},async 'deleteComment'(_0x59ec5f,_0x2ababe){if(!_0x59ec5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ababe)throw new Error('Comment\x20ID\x20is\x20required');const _0x371d68=await fetch(API_BASE+'/tasks/'+_0x59ec5f+'/comments/'+_0x2ababe,{'method':'DELETE'});if(!_0x371d68['ok']){const _0x393a29=await _0x371d68['json']()['catch'](()=>({}));throw new Error(_0x393a29['error']||'Failed\x20to\x20delete\x20comment');}return await _0x371d68['json']();},async 'createObjective'(_0x112975){const _0x70ac76={'objective':!![],'name':_0x112975['name']||'','environment':_0x112975['environment']||null,'agents':_0x112975['agents']||[],'branches':_0x112975['branches']||{},'isPinned':_0x112975['isPinned']||![],'parentObjectiveId':_0x112975['parentObjectiveId']||null,'env_vars':_0x112975['envVars']||{},'parameters':{'instructions':_0x112975['instructions']||''},'files':_0x112975['files']||[],'jira':_0x112975['jira']||null};return this['createTask'](_0x70ac76);},async 'updateObjective'(_0x33afe8,_0x25fc71,_0x435aed=[],_0x382922=[]){let _0x216e9c,_0x51979c={};const _0x3c2eb2={..._0x25fc71};_0x382922&&_0x382922['length']>0x0&&(_0x3c2eb2['removeAttachments']=_0x382922);if(_0x435aed&&_0x435aed['length']>0x0){const _0x1da3a2=new FormData();for(const [_0x1517df,_0x2ac6b0]of Object['entries'](_0x3c2eb2)){if(_0x2ac6b0==null)continue;typeof _0x2ac6b0==='object'?_0x1da3a2['append'](_0x1517df,JSON['stringify'](_0x2ac6b0)):_0x1da3a2['append'](_0x1517df,String(_0x2ac6b0));}for(const _0x16e12f of _0x435aed){_0x1da3a2['append']('attachments',_0x16e12f);}_0x216e9c=_0x1da3a2;}else _0x51979c['Content-Type']='application/json',_0x216e9c=JSON['stringify'](_0x3c2eb2);const _0x1a0f15=await fetch(API_BASE+'/tasks/'+_0x33afe8,{'method':'PATCH','headers':_0x51979c,'body':_0x216e9c});if(!_0x1a0f15['ok']){const _0x37785e=await _0x1a0f15['json']();throw new Error(_0x37785e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1a0f15['json']();},async 'deleteObjective'(_0x172d63){return this['deleteTask'](_0x172d63);},async 'launchObjective'(_0x1c54d7,_0x19a519={}){const _0x37053d=await fetch(API_BASE+'/tasks/'+_0x1c54d7+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19a519)});if(!_0x37053d['ok']){const _0x1e9b00=await _0x37053d['json']();throw new Error(_0x1e9b00['error']||'Failed\x20to\x20launch\x20objective');}return await _0x37053d['json']();},async 'getObjectiveAttachments'(_0xecd05a){return this['getTaskAttachments'](_0xecd05a);},async 'createJudgeTask'({environment:_0x15a809,judgeAgent:_0x183d8e,groupId:_0xd86d3a,taskIds:_0x4c97b2,judgeCustomInstructions:_0x556405,isPinned:_0x1144ab}){const _0x159ac0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x15a809,'judgeAgent':_0x183d8e,'groupId':_0xd86d3a,'taskIds':_0x4c97b2,'judgeCustomInstructions':_0x556405,'isPinned':_0x1144ab})});if(!_0x159ac0['ok']){const _0x54a30a=await _0x159ac0['json']();throw new Error(_0x54a30a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x159ac0['json']();},async 'getJudgeTasks'(_0x120bbb){const _0x460e65=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x120bbb));if(!_0x460e65['ok']){const _0xb03103=await _0x460e65['json']();throw new Error(_0xb03103['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x460e65['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x578006,_0x30dbf0,_0x67a9b3=''){const _0x12e187=await fetch(API_BASE+'/tasks/'+_0x578006+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x30dbf0,'customPreamble':_0x67a9b3})});if(!_0x12e187['ok']){const _0x54f8ce=await _0x12e187['json']();throw new Error(_0x54f8ce['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x12e187['json']();},async 'getJiraConfig'(){const _0x7c1243=await fetch(API_BASE+'/jira/config');if(!_0x7c1243['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7c1243['json']();},async 'getJiraIssue'(_0x1decd1){const _0x1fd023=await fetch(API_BASE+'/jira/issues/'+_0x1decd1);if(!_0x1fd023['ok']){const _0x20a8c8=await _0x1fd023['json']()['catch'](()=>({}));throw new Error(_0x20a8c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1fd023['statusText']);}return await _0x1fd023['json']();},async 'searchJiraIssues'(_0x57206c,_0x2aea51=0x14){const _0x46651f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x57206c,'maxResults':_0x2aea51})});if(!_0x46651f['ok']){const _0xe3359e=await _0x46651f['json']()['catch'](()=>({}));throw new Error(_0xe3359e['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x46651f['statusText']);}return await _0x46651f['json']();},async 'postJiraComment'(_0x116920,_0x584dbb){const _0x980f41=await fetch(API_BASE+'/jira/issues/'+_0x116920+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x584dbb})});if(!_0x980f41['ok']){const _0x280041=await _0x980f41['json']()['catch'](()=>({}));throw new Error(_0x280041['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x980f41['statusText']);}return await _0x980f41['json']();},async 'getJiraComments'(_0x922dba){const _0x4e5a7a=await fetch(API_BASE+'/jira/issues/'+_0x922dba+'/comments');if(!_0x4e5a7a['ok']){const _0xc35359=await _0x4e5a7a['json']()['catch'](()=>({}));throw new Error(_0xc35359['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4e5a7a['statusText']);}return await _0x4e5a7a['json']();},async 'promptParameter'({environment:_0xbea5a2,command:_0x172554,parser:parser='json'}){const _0x310551=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xbea5a2,'command':_0x172554,'parser':parser})});if(!_0x310551['ok']){const _0xeb14e2=await _0x310551['json']()['catch'](()=>({}));throw new Error(_0xeb14e2['message']||_0xeb14e2['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x310551['statusText']);}return await _0x310551['json']();},async 'promptParameterStream'(_0x1abee0,_0x5f10a6){const _0x251005=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abee0)});if(!_0x251005['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x251005['statusText']);const _0x242da5=_0x251005['body']['getReader'](),_0x4d3b34=new TextDecoder();let _0x22af1d='';return new Promise((_0x19568c,_0x367abc)=>{const _0x461f58=async()=>{try{const {done:_0x44cdfe,value:_0x4164b3}=await _0x242da5['read']();if(_0x44cdfe)return;_0x22af1d+=_0x4d3b34['decode'](_0x4164b3,{'stream':!![]});const _0x3dfb79=_0x22af1d['split']('\x0a\x0a');_0x22af1d=_0x3dfb79['pop']()||'';for(const _0x36a639 of _0x3dfb79){if(!_0x36a639['trim']())continue;const _0x5daa9f=_0x36a639['split']('\x0a');let _0x156131='message',_0x114808='';for(const _0x1307a2 of _0x5daa9f){if(_0x1307a2['startsWith']('event:'))_0x156131=_0x1307a2['substring'](0x6)['trim']();else _0x1307a2['startsWith']('data:')&&(_0x114808=_0x1307a2['substring'](0x5)['trim']());}if(!_0x114808)continue;try{const _0x2bca7c=JSON['parse'](_0x114808);if(_0x156131==='progress'&&_0x5f10a6)_0x5f10a6(_0x2bca7c['stage'],_0x2bca7c['message']);else{if(_0x156131==='result'){_0x19568c(_0x2bca7c);return;}else{if(_0x156131==='error'){let _0x506802=_0x2bca7c['message']||_0x2bca7c['error']||'Prompt\x20command\x20failed';_0x2bca7c['rawOutput']&&(_0x506802+='\x0a\x0aRaw\x20output:\x0a'+_0x2bca7c['rawOutput']);_0x367abc(new Error(_0x506802));return;}}}}catch(_0x5c7eb3){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5c7eb3),console['error']('Event\x20type:',_0x156131),console['error']('Event\x20data:',_0x114808),console['error']('First\x20200\x20chars:',_0x114808['substring'](0x0,0xc8)),_0x367abc(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5c7eb3['message']+'\x0a\x0aData:\x20'+_0x114808['substring'](0x0,0x1f4)));return;}}_0x461f58();}catch(_0x29235a){_0x367abc(_0x29235a);}};_0x461f58();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x1673ae){const _0x58082f=await fetch(''+API_BASE+_0x1673ae);if(!_0x58082f['ok']){const _0xb1a72e=await _0x58082f['json']()['catch'](()=>({'error':_0x58082f['statusText']})),_0x4f8acf=new Error(_0xb1a72e['error']||_0xb1a72e['message']||_0x58082f['statusText']);if(_0xb1a72e['detail']!==undefined)_0x4f8acf['detail']=_0xb1a72e['detail'];throw _0x4f8acf;}return await _0x58082f['json']();},async 'post'(_0x510ea6,_0x5bb817){const _0x5aabb1=await fetch(''+API_BASE+_0x510ea6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bb817)});if(!_0x5aabb1['ok']){const _0x5a3a85=await _0x5aabb1['json']()['catch'](()=>({'error':_0x5aabb1['statusText']})),_0x37bc97=new Error(_0x5a3a85['error']||_0x5a3a85['message']||_0x5aabb1['statusText']);if(_0x5a3a85['detail']!==undefined)_0x37bc97['detail']=_0x5a3a85['detail'];throw _0x37bc97;}return await _0x5aabb1['json']();},async 'put'(_0x7a594c,_0x413681){const _0x40c66a=await fetch(''+API_BASE+_0x7a594c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x413681)});if(!_0x40c66a['ok']){const _0x5a8ae7=await _0x40c66a['json']()['catch'](()=>({'error':_0x40c66a['statusText']})),_0x516a44=new Error(_0x5a8ae7['error']||_0x5a8ae7['message']||_0x40c66a['statusText']);if(_0x5a8ae7['detail']!==undefined)_0x516a44['detail']=_0x5a8ae7['detail'];throw _0x516a44;}return await _0x40c66a['json']();},async 'delete'(_0x2ec75f,_0x3aee42){const _0x6019d8={'method':'DELETE'};_0x3aee42&&(_0x6019d8['headers']={'Content-Type':'application/json'},_0x6019d8['body']=JSON['stringify'](_0x3aee42));const _0x1df987=await fetch(''+API_BASE+_0x2ec75f,_0x6019d8);if(!_0x1df987['ok']){const _0x1a88bd=await _0x1df987['json']()['catch'](()=>({'error':_0x1df987['statusText']})),_0x216189=new Error(_0x1a88bd['error']||_0x1a88bd['message']||_0x1df987['statusText']);if(_0x1a88bd['detail']!==undefined)_0x216189['detail']=_0x1a88bd['detail'];throw _0x216189;}return await _0x1df987['json']();},async 'getSkills'(){const _0x2b8603=await fetch(API_BASE+'/skills');if(!_0x2b8603['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b8603['statusText']);return await _0x2b8603['json']();},async 'getSkill'(_0x36e7c9){const _0x11faff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36e7c9));if(!_0x11faff['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x11faff['statusText']);return await _0x11faff['json']();},async 'createSkill'(_0x241aac){const _0x511d69=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x241aac)});if(!_0x511d69['ok']){const _0x4ec2e6=await _0x511d69['json']()['catch'](()=>({'error':_0x511d69['statusText']})),_0x2b5b7a=new Error(_0x4ec2e6['error']||_0x4ec2e6['message']||_0x511d69['statusText']);if(_0x4ec2e6['detail']!==undefined)_0x2b5b7a['detail']=_0x4ec2e6['detail'];throw _0x2b5b7a;}return await _0x511d69['json']();},async 'updateSkill'(_0x1b8136,_0x498246){const _0x746197=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b8136),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498246)});if(!_0x746197['ok']){const _0x517806=await _0x746197['json']()['catch'](()=>({'error':_0x746197['statusText']})),_0x6ffc56=new Error(_0x517806['error']||_0x517806['message']||_0x746197['statusText']);if(_0x517806['detail']!==undefined)_0x6ffc56['detail']=_0x517806['detail'];throw _0x6ffc56;}return await _0x746197['json']();},async 'deleteSkill'(_0x5d8ecf){const _0x2859cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5d8ecf),{'method':'DELETE'});if(!_0x2859cc['ok']){const _0x2948cb=await _0x2859cc['json']()['catch'](()=>({'error':_0x2859cc['statusText']})),_0x21f66e=new Error(_0x2948cb['error']||_0x2948cb['message']||_0x2859cc['statusText']);if(_0x2948cb['detail']!==undefined)_0x21f66e['detail']=_0x2948cb['detail'];throw _0x21f66e;}return await _0x2859cc['json']();},async 'getSkillFile'(_0x2c9e0f,_0x4cf69d){const _0x2818f9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2c9e0f)+'/files/'+_0x4cf69d);if(!_0x2818f9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2818f9['statusText']);return await _0x2818f9['json']();},async 'saveSkillFile'(_0xd461c7,_0x485430,_0x54a846){const _0x42aea0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd461c7)+'/files/'+_0x485430,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x54a846})});if(!_0x42aea0['ok']){const _0x1c3837=await _0x42aea0['json']()['catch'](()=>({'error':_0x42aea0['statusText']})),_0x19f50e=new Error(_0x1c3837['error']||_0x1c3837['message']||_0x42aea0['statusText']);if(_0x1c3837['detail']!==undefined)_0x19f50e['detail']=_0x1c3837['detail'];throw _0x19f50e;}return await _0x42aea0['json']();},async 'deleteSkillFile'(_0x3d5712,_0x262c8b){const _0x112a6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3d5712)+'/files/'+_0x262c8b,{'method':'DELETE'});if(!_0x112a6f['ok']){const _0x409863=await _0x112a6f['json']()['catch'](()=>({'error':_0x112a6f['statusText']})),_0x2fa625=new Error(_0x409863['error']||_0x409863['message']||_0x112a6f['statusText']);if(_0x409863['detail']!==undefined)_0x2fa625['detail']=_0x409863['detail'];throw _0x2fa625;}return await _0x112a6f['json']();},async 'pullSkills'(){const _0x5a8e77=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5a8e77['ok']){const _0x2b42fe=await _0x5a8e77['json']()['catch'](()=>({'error':_0x5a8e77['statusText']})),_0x17b8db=new Error(_0x2b42fe['error']||_0x2b42fe['message']||_0x5a8e77['statusText']);if(_0x2b42fe['detail']!==undefined)_0x17b8db['detail']=_0x2b42fe['detail'];throw _0x17b8db;}return await _0x5a8e77['json']();},async 'commitSkills'(_0x1ae3bf,_0x6e2275={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x6e2275,_0x1e210d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1ae3bf,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x1e210d['ok']){const _0x48e66e=await _0x1e210d['json']()['catch'](()=>({'error':_0x1e210d['statusText']})),_0x4b5b64=new Error(_0x48e66e['error']||_0x48e66e['message']||_0x1e210d['statusText']);if(_0x48e66e['detail']!==undefined)_0x4b5b64['detail']=_0x48e66e['detail'];throw _0x4b5b64;}return await _0x1e210d['json']();},async 'discardSkillsChanges'(){const _0x495e50=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x495e50['ok']){const _0x141f96=await _0x495e50['json']()['catch'](()=>({'error':_0x495e50['statusText']})),_0x448eab=new Error(_0x141f96['error']||_0x141f96['message']||_0x495e50['statusText']);if(_0x141f96['detail']!==undefined)_0x448eab['detail']=_0x141f96['detail'];throw _0x448eab;}return await _0x495e50['json']();},async 'getSkillCatalog'(){const _0x1b4f86=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1b4f86['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1b4f86['statusText']);return await _0x1b4f86['json']();},async 'getImportedSkillsRegistry'(){const _0x51b350=await fetch(API_BASE+'/external-skills/registry');if(!_0x51b350['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x51b350['statusText']);return await _0x51b350['json']();},async 'importCatalogSkill'(_0x562ef1){const _0x3ec80d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x562ef1})});if(!_0x3ec80d['ok']){const _0x2493fb=await _0x3ec80d['json']()['catch'](()=>({'error':_0x3ec80d['statusText']})),_0x17a4e8=new Error(_0x2493fb['error']||_0x2493fb['message']||_0x3ec80d['statusText']);if(_0x2493fb['detail']!==undefined)_0x17a4e8['detail']=_0x2493fb['detail'];throw _0x17a4e8;}return await _0x3ec80d['json']();},async 'importSkillFromGit'(_0x26fb8a,_0x254f35,_0x1d04ef='main',_0x5e6671=null){const _0x264d73=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x26fb8a,'skillPath':_0x254f35,'branch':_0x1d04ef,'skillId':_0x5e6671})});if(!_0x264d73['ok']){const _0x5235d1=await _0x264d73['json']()['catch'](()=>({'error':_0x264d73['statusText']})),_0x2a1f76=new Error(_0x5235d1['error']||_0x5235d1['message']||_0x264d73['statusText']);if(_0x5235d1['detail']!==undefined)_0x2a1f76['detail']=_0x5235d1['detail'];throw _0x2a1f76;}return await _0x264d73['json']();},async 'probeMarketplace'(_0x384a9d,_0x36e3c6='main'){const _0x2561bc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x384a9d,'branch':_0x36e3c6})});if(!_0x2561bc['ok']){const _0x3b1bb3=await _0x2561bc['json']()['catch'](()=>({'error':_0x2561bc['statusText']})),_0x5bdf7a=new Error(_0x3b1bb3['error']||_0x3b1bb3['message']||_0x2561bc['statusText']);if(_0x3b1bb3['detail']!==undefined)_0x5bdf7a['detail']=_0x3b1bb3['detail'];throw _0x5bdf7a;}return await _0x2561bc['json']();},async 'importMarketplaceBundle'(_0x4dd592,_0x29234f,_0x4960dd,_0x6cd29c=null){const _0x5069c4=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dd592,'branch':_0x29234f,'bundleId':_0x4960dd,'selectedSkills':_0x6cd29c})});if(!_0x5069c4['ok']){const _0xd93c66=await _0x5069c4['json']()['catch'](()=>({'error':_0x5069c4['statusText']})),_0x1ceabb=new Error(_0xd93c66['error']||_0xd93c66['message']||_0x5069c4['statusText']);if(_0xd93c66['detail']!==undefined)_0x1ceabb['detail']=_0xd93c66['detail'];throw _0x1ceabb;}return await _0x5069c4['json']();},async 'importSkillFromFolder'(_0x44b1a1,_0x58f937=null){const _0x1dd59a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44b1a1,'skillId':_0x58f937})});if(!_0x1dd59a['ok']){const _0x4a65ca=await _0x1dd59a['json']()['catch'](()=>({'error':_0x1dd59a['statusText']})),_0xf5444=new Error(_0x4a65ca['error']||_0x4a65ca['message']||_0x1dd59a['statusText']);if(_0x4a65ca['detail']!==undefined)_0xf5444['detail']=_0x4a65ca['detail'];throw _0xf5444;}return await _0x1dd59a['json']();},async 'importSkillFromNpm'(_0x75588d,_0x2385dd='latest',_0x548244=null,_0x5da076=null){const _0x2fa580=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x75588d,'version':_0x2385dd,'skillId':_0x548244,'registry':_0x5da076})});if(!_0x2fa580['ok']){const _0x1041dc=await _0x2fa580['json']()['catch'](()=>({'error':_0x2fa580['statusText']})),_0x17cb4e=new Error(_0x1041dc['error']||_0x1041dc['message']||_0x2fa580['statusText']);if(_0x1041dc['detail']!==undefined)_0x17cb4e['detail']=_0x1041dc['detail'];throw _0x17cb4e;}return await _0x2fa580['json']();},async 'checkSkillUpdates'(_0xfea491){const _0x347aeb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfea491)+'/check-updates',{'method':'POST'});if(!_0x347aeb['ok']){const _0x29a941=await _0x347aeb['json']()['catch'](()=>({'error':_0x347aeb['statusText']})),_0x274148=new Error(_0x29a941['error']||_0x29a941['message']||_0x347aeb['statusText']);if(_0x29a941['detail']!==undefined)_0x274148['detail']=_0x29a941['detail'];throw _0x274148;}return await _0x347aeb['json']();},async 'updateExternalSkill'(_0x399983){const _0xbf3477=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x399983)+'/update',{'method':'POST'});if(!_0xbf3477['ok']){const _0x1777f1=await _0xbf3477['json']()['catch'](()=>({'error':_0xbf3477['statusText']})),_0x3fddca=new Error(_0x1777f1['error']||_0x1777f1['message']||_0xbf3477['statusText']);if(_0x1777f1['detail']!==undefined)_0x3fddca['detail']=_0x1777f1['detail'];throw _0x3fddca;}return await _0xbf3477['json']();},async 'updateSkillFlags'(_0xf2d9e,_0x34fe8a){const _0x3631fe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xf2d9e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x34fe8a})});if(!_0x3631fe['ok']){const _0x1ea90c=await _0x3631fe['json']()['catch'](()=>({'error':_0x3631fe['statusText']})),_0x4b13ff=new Error(_0x1ea90c['error']||_0x1ea90c['message']||_0x3631fe['statusText']);if(_0x1ea90c['detail']!==undefined)_0x4b13ff['detail']=_0x1ea90c['detail'];throw _0x4b13ff;}return await _0x3631fe['json']();},async 'removeFromImportedRegistry'(_0x22afe1){const _0x349a20=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x22afe1)+'/registry',{'method':'DELETE'});if(!_0x349a20['ok']){const _0x7a509=await _0x349a20['json']()['catch'](()=>({'error':_0x349a20['statusText']})),_0x5c2113=new Error(_0x7a509['error']||_0x7a509['message']||_0x349a20['statusText']);if(_0x7a509['detail']!==undefined)_0x5c2113['detail']=_0x7a509['detail'];throw _0x5c2113;}return await _0x349a20['json']();},async 'getTeams'(){const _0x4532fd=await fetch(API_BASE+'/teams');if(!_0x4532fd['ok']){const _0x58cffe=await _0x4532fd['json']()['catch'](()=>({'message':_0x4532fd['statusText']}));throw new Error(_0x58cffe['message']||'Failed\x20to\x20get\x20teams');}return await _0x4532fd['json']();},async 'getTeam'(_0x101a1c){const _0x25d435=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x101a1c));if(!_0x25d435['ok']){const _0x51966d=await _0x25d435['json']()['catch'](()=>({'message':_0x25d435['statusText']}));throw new Error(_0x51966d['message']||'Failed\x20to\x20get\x20team');}return await _0x25d435['json']();},async 'createTeam'(_0x18ea8d){const _0x2e22bb=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ea8d)});if(!_0x2e22bb['ok']){const _0x3d93d8=await _0x2e22bb['json']()['catch'](()=>({'message':_0x2e22bb['statusText']}));throw new Error(_0x3d93d8['message']||'Failed\x20to\x20create\x20team');}return await _0x2e22bb['json']();},async 'updateTeam'(_0x30006c,_0x452dc2){const _0x64b631=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x30006c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452dc2)});if(!_0x64b631['ok']){const _0x4ccc6c=await _0x64b631['json']()['catch'](()=>({'message':_0x64b631['statusText']}));throw new Error(_0x4ccc6c['message']||'Failed\x20to\x20update\x20team');}return await _0x64b631['json']();},async 'deleteTeam'(_0x5f3ead){const _0x63792b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5f3ead),{'method':'DELETE'});if(!_0x63792b['ok']){const _0x53fe4d=await _0x63792b['json']()['catch'](()=>({'message':_0x63792b['statusText']}));throw new Error(_0x53fe4d['message']||'Failed\x20to\x20delete\x20team');}return await _0x63792b['json']();},async 'addTeamMember'(_0xf47a21,_0x4ef7f8){const _0x2dc554=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xf47a21)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ef7f8})});if(!_0x2dc554['ok']){const _0x49fe8e=await _0x2dc554['json']()['catch'](()=>({'message':_0x2dc554['statusText']}));throw new Error(_0x49fe8e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2dc554['json']();},async 'removeTeamMember'(_0x397080,_0x33efb6){const _0x1c2df5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397080)+'/members/'+encodeURIComponent(_0x33efb6),{'method':'DELETE'});if(!_0x1c2df5['ok']){const _0x1ac12e=await _0x1c2df5['json']()['catch'](()=>({'message':_0x1c2df5['statusText']}));throw new Error(_0x1ac12e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1c2df5['json']();},async 'getBindings'(_0x4e544c={}){const _0x4c328e=new URLSearchParams();if(_0x4e544c['resource_type'])_0x4c328e['set']('resource_type',_0x4e544c['resource_type']);if(_0x4e544c['resource_id'])_0x4c328e['set']('resource_id',_0x4e544c['resource_id']);if(_0x4e544c['subject_type'])_0x4c328e['set']('subject_type',_0x4e544c['subject_type']);if(_0x4e544c['subject_id'])_0x4c328e['set']('subject_id',_0x4e544c['subject_id']);const _0x19dcb9=_0x4c328e['toString'](),_0x72a4b4=await fetch(API_BASE+'/bindings'+(_0x19dcb9?'?'+_0x19dcb9:''));if(!_0x72a4b4['ok']){const _0x217fee=await _0x72a4b4['json']()['catch'](()=>({'message':_0x72a4b4['statusText']}));throw new Error(_0x217fee['message']||'Failed\x20to\x20get\x20bindings');}return await _0x72a4b4['json']();},async 'createBinding'(_0x365128){const _0x563c31=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x365128)});if(!_0x563c31['ok']){const _0x5387a6=await _0x563c31['json']()['catch'](()=>({'message':_0x563c31['statusText']}));throw new Error(_0x5387a6['message']||'Failed\x20to\x20create\x20binding');}return await _0x563c31['json']();},async 'updateBinding'(_0x35530f,_0x118eae){const _0xf1ec49=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x35530f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x118eae)});if(!_0xf1ec49['ok']){const _0xa33993=await _0xf1ec49['json']()['catch'](()=>({'message':_0xf1ec49['statusText']}));throw new Error(_0xa33993['message']||'Failed\x20to\x20update\x20binding');}return await _0xf1ec49['json']();},async 'deleteBinding'(_0x14c553){const _0x4e3998=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x14c553),{'method':'DELETE'});if(!_0x4e3998['ok']){const _0x579f22=await _0x4e3998['json']()['catch'](()=>({'message':_0x4e3998['statusText']}));throw new Error(_0x579f22['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4e3998['json']();},async 'getRoleDefinitions'(){const _0x1ec491=await fetch(API_BASE+'/roles');if(!_0x1ec491['ok']){const _0x1edf4e=await _0x1ec491['json']()['catch'](()=>({'message':_0x1ec491['statusText']}));throw new Error(_0x1edf4e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1ec491['json']();},async 'getRoleDefinition'(_0x178d7b){const _0x1395bd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x178d7b));if(!_0x1395bd['ok']){const _0x39376c=await _0x1395bd['json']()['catch'](()=>({'message':_0x1395bd['statusText']}));throw new Error(_0x39376c['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1395bd['json']();},async 'createRoleDefinition'(_0x5ac8ff){const _0x1e80c3=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac8ff)});if(!_0x1e80c3['ok']){const _0x3d4868=await _0x1e80c3['json']()['catch'](()=>({'message':_0x1e80c3['statusText']}));throw new Error(_0x3d4868['message']||_0x3d4868['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e80c3['json']();},async 'updateRoleDefinition'(_0x2797ba,_0x33b5b5){const _0x343199=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2797ba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33b5b5)});if(!_0x343199['ok']){const _0x1dc135=await _0x343199['json']()['catch'](()=>({'message':_0x343199['statusText']}));throw new Error(_0x1dc135['message']||_0x1dc135['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x343199['json']();},async 'deleteRoleDefinition'(_0x11d47b){const _0x241294=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x11d47b),{'method':'DELETE'});if(!_0x241294['ok']){const _0x2a0995=await _0x241294['json']()['catch'](()=>({'message':_0x241294['statusText']}));throw new Error(_0x2a0995['message']||_0x2a0995['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x241294['json']();},async 'getAvailablePermissions'(){const _0x5b7259=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b7259['ok']){const _0x2618c0=await _0x5b7259['json']()['catch'](()=>({'message':_0x5b7259['statusText']}));throw new Error(_0x2618c0['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b7259['json']();},async 'getGitProviderAllowedTeams'(_0x8acf7a){const _0x13e573=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x8acf7a)+'/allowed-teams');if(!_0x13e573['ok']){const _0x3e0909=await _0x13e573['json']()['catch'](()=>({'message':_0x13e573['statusText']}));throw new Error(_0x3e0909['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x13e573['json']();},async 'setGitProviderAllowedTeams'(_0x130592,_0x783c2e){const _0x3cacf3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x130592)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x783c2e})});if(!_0x3cacf3['ok']){const _0x1f829b=await _0x3cacf3['json']()['catch'](()=>({'message':_0x3cacf3['statusText']}));throw new Error(_0x1f829b['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3cacf3['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 _0x7a1c3b=toastState['baseBottom'];toastState['toasts']['forEach'](_0x555fa5=>{_0x555fa5['el']['style']['bottom']=_0x7a1c3b+'px';const _0x366e53=_0x555fa5['el']['offsetHeight']||toastState['defaultHeight'];_0x7a1c3b+=_0x366e53+toastState['gap'];});});}function removeToastById(_0x5be30f){const _0x4f3ebb=toastState['toasts']['findIndex'](_0x37bcd3=>_0x37bcd3['id']===_0x5be30f);if(_0x4f3ebb===-0x1)return;const _0x3df90f=toastState['toasts'][_0x4f3ebb];if(_0x3df90f['timeoutId'])clearTimeout(_0x3df90f['timeoutId']);_0x3df90f['el']['classList']['remove']('show'),setTimeout(()=>_0x3df90f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f3ebb,0x1),repositionAllToasts();}function registerToast(_0x22a844){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x22a844),repositionAllToasts(),_0x22a844['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(_0x5f2afe){if(_0x5f2afe===null||_0x5f2afe===undefined)return'';return String(_0x5f2afe)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2349c4,_0x235733){if(_0x2349c4&&typeof _0x2349c4==='object'&&!Array['isArray'](_0x2349c4))return{'code':typeof _0x2349c4['text']==='string'?_0x2349c4['text']:'','language':typeof _0x2349c4['lang']==='string'?_0x2349c4['lang']:''};return{'code':typeof _0x2349c4==='string'?_0x2349c4:'','language':typeof _0x235733==='string'?_0x235733:''};}function buildMermaidBlock(_0x13488c){const _0x1c385f=String(_0x13488c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1c385f))+'\x22>'+escapeHtmlValue(_0x1c385f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x36843b=new marked['Renderer'](),_0x471606=_0x36843b['code']['bind'](_0x36843b);return _0x36843b['code']=function(_0x3f8c17,_0x14f3f4,..._0x4972af){const {code:_0x4cd2c8,language:_0x52ba1b}=getMarkdownCodeBlockPayload(_0x3f8c17,_0x14f3f4),_0x4b1da9=String(_0x52ba1b||'')['trim']()['toLowerCase']();if(_0x4b1da9==='mermaid')return buildMermaidBlock(_0x4cd2c8);const _0x24f09a=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x24f09a&&_0x4b1da9)try{const _0x529c0b=_0x24f09a['getLanguage'](_0x4b1da9)?_0x4b1da9:'plaintext',_0x50b472=_0x24f09a['highlight'](_0x4cd2c8,{'language':_0x529c0b})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4b1da9)+'\x22>'+_0x50b472+'</code></pre>';}catch(_0x2f6889){console['error']('Syntax\x20highlighting\x20error:',_0x2f6889);}return _0x471606(_0x3f8c17,_0x14f3f4,..._0x4972af);},sharedMarkedRenderer=_0x36843b,_0x36843b;}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 _0x5a70ed=window['mermaid'];if(!_0x5a70ed||typeof _0x5a70ed['initialize']!=='function')return _0x5a70ed||null;return _0x5a70ed['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5a70ed;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7667,_0x5d540b)=>{const _0x4172b9=()=>_0x4c7667(configureMermaidInstance()),_0xcff783=()=>{mermaidLoadPromise=null,_0x5d540b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x5cde29=document['getElementById'](MERMAID_SCRIPT_ID);!_0x5cde29&&(_0x5cde29=document['createElement']('script'),_0x5cde29['id']=MERMAID_SCRIPT_ID,_0x5cde29['src']=MERMAID_SCRIPT_SRC,_0x5cde29['async']=!![],document['head']['appendChild'](_0x5cde29));if(window['mermaid']){_0x4172b9();return;}_0x5cde29['addEventListener']('load',_0x4172b9,{'once':!![]}),_0x5cde29['addEventListener']('error',_0xcff783,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x57da33){const _0x19825b=_0x57da33['getAttribute']('data-mermaid-source');if(!_0x19825b)return null;let _0x1cd5ca=_0x19825b;try{_0x1cd5ca=decodeURIComponent(_0x19825b);}catch{}return _0x57da33['textContent']=_0x1cd5ca,_0x57da33['removeAttribute']('data-processed'),_0x57da33['removeAttribute']('aria-roledescription'),_0x57da33['removeAttribute']('role'),_0x57da33['removeAttribute']('aria-label'),_0x1cd5ca;}function collectMermaidNodes(_0x2277b7,_0x1dde4d){if(!(_0x2277b7 instanceof Element))return;_0x2277b7['matches']('.mermaid[data-mermaid-source]')&&_0x1dde4d['add'](_0x2277b7),_0x2277b7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x361a8d=>{_0x1dde4d['add'](_0x361a8d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x58855a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2c41f6=>setTimeout(_0x2c41f6,0x0);_0x58855a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5d06c2=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5d06c2);});});}function queueMermaidRender(_0x178706){const _0x4b5044=new Set();_0x178706 instanceof Document||_0x178706 instanceof DocumentFragment?_0x178706['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x26865c=>_0x4b5044['add'](_0x26865c)):collectMermaidNodes(_0x178706,_0x4b5044);if(_0x4b5044['size']===0x0)return;_0x4b5044['forEach'](_0x7a9fb8=>pendingMermaidNodes['add'](_0x7a9fb8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5130f3=Array['from'](pendingMermaidNodes)['filter'](_0x5e9c7a=>_0x5e9c7a['isConnected']);pendingMermaidNodes['clear']();if(_0x5130f3['length']===0x0)return;const _0x11b6f4=await loadMermaid();if(!_0x11b6f4)return;configureMermaidInstance();const _0x5271b7=getMermaidTheme();for(const _0x58c4f8 of _0x5130f3){const _0x1c011d=_0x58c4f8['getAttribute']('data-mermaid-source');if(!_0x1c011d)continue;const _0x5d13a9=_0x58c4f8['getAttribute']('data-processed')==='true';if(_0x5d13a9&&_0x58c4f8['dataset']['mermaidTheme']===_0x5271b7)continue;restoreMermaidSource(_0x58c4f8);try{if(typeof _0x11b6f4['run']==='function')await _0x11b6f4['run']({'nodes':[_0x58c4f8]});else typeof _0x11b6f4['init']==='function'&&_0x11b6f4['init'](undefined,[_0x58c4f8]);_0x58c4f8['dataset']['mermaidTheme']=_0x5271b7,delete _0x58c4f8['dataset']['mermaidError'];}catch(_0xa54d46){console['error']('Mermaid\x20render\x20failed:',_0xa54d46),restoreMermaidSource(_0x58c4f8),_0x58c4f8['dataset']['mermaidError']='true',delete _0x58c4f8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1c3fce=>{_0x1c3fce['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1c3fce);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4d4c6f=>{_0x4d4c6f['forEach'](_0x5ee531=>{_0x5ee531['addedNodes']['forEach'](_0x2e7972=>{_0x2e7972['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e7972);});});}),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'(_0x548f61){const _0x3ebbba=new Date(_0x548f61),_0xf2393d=new Date(),_0x348018=_0xf2393d-_0x3ebbba,_0x3194c1=Math['floor'](_0x348018/0x3e8),_0x4b470a=Math['floor'](_0x3194c1/0x3c),_0x5a3303=Math['floor'](_0x4b470a/0x3c),_0x40b7a6=Math['floor'](_0x5a3303/0x18);if(_0x3194c1<0x3c)return'now';if(_0x4b470a<0x3c)return _0x4b470a+'m\x20ago';if(_0x5a3303<0x18)return _0x5a3303+'h\x20ago';return _0x40b7a6+'d\x20ago';},'getStatusIcon'(_0x18b265){switch(_0x18b265){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x125a19){switch(_0x125a19){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'(_0x3e825d,_0xba4590=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x53ef66={};_0x53ef66['text/plain']=new Blob([_0x3e825d],{'type':'text/plain'});_0xba4590&&(_0x53ef66['text/html']=new Blob([_0xba4590],{'type':'text/html'}));const _0xd2ae8a=new ClipboardItem(_0x53ef66);return await navigator['clipboard']['write']([_0xd2ae8a]),!![];}catch(_0x2d8979){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2d8979);}try{const _0x56fc7d=_0x1aff03=>{_0x1aff03['preventDefault'](),_0x1aff03['clipboardData']['setData']('text/plain',_0x3e825d),_0xba4590&&_0x1aff03['clipboardData']['setData']('text/html',_0xba4590);};document['addEventListener']('copy',_0x56fc7d);const _0x5e24b9=document['execCommand']('copy');document['removeEventListener']('copy',_0x56fc7d);if(_0x5e24b9)return!![];}catch(_0xa4c177){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xa4c177);}try{const _0x3faf32=document['createElement']('textarea');_0x3faf32['value']=_0x3e825d,_0x3faf32['style']['position']='fixed',_0x3faf32['style']['opacity']='0',_0x3faf32['style']['pointerEvents']='none',document['body']['appendChild'](_0x3faf32),_0x3faf32['select']();const _0x15be56=document['execCommand']('copy');return document['body']['removeChild'](_0x3faf32),_0x15be56;}catch(_0x972297){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x972297),![];}},'showToast'(_0x2af2d7,_0x221ce9='info'){const _0x3fe74d=getNextToastId(),_0x255a57=document['createElement']('div');_0x255a57['className']='toast\x20toast-'+_0x221ce9,_0x255a57['textContent']=_0x2af2d7,_0x255a57['dataset']['toastId']=_0x3fe74d,document['body']['appendChild'](_0x255a57);const _0xc884ec=_0x221ce9==='error'?0x2710:0xbb8,_0x50bd68=setTimeout(()=>{removeToastById(_0x3fe74d);},_0xc884ec),_0x42f6ad={'id':_0x3fe74d,'el':_0x255a57,'timeoutId':_0x50bd68};return registerToast(_0x42f6ad),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x255a57['classList']['add']('show');});}),_0x3fe74d;},'showError'(_0x1dec0c){console['error'](_0x1dec0c);const _0x44b3c3=typeof _0x1dec0c==='string'?_0x1dec0c:_0x1dec0c['message']||'An\x20error\x20occurred';this['showToast'](_0x44b3c3,'error');},'showSuccess'(_0x2686b3){this['showToast'](_0x2686b3,'success');},'capitalize'(_0x1850b0){if(!_0x1850b0)return'';return _0x1850b0['charAt'](0x0)['toUpperCase']()+_0x1850b0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4940c2){return escapeHtmlValue(_0x4940c2);},'ansiToHtml'(_0x46ced4){if(_0x46ced4===null||_0x46ced4===undefined)return'';let _0xd6af58=this['escapeHtml'](_0x46ced4);const _0xf7ccb9={'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'},_0x543aa6={'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 _0x57bdc8=0x0;return _0xd6af58=_0xd6af58['replace'](/\x1b\[([0-9;]*)m/g,(_0x388f20,_0x4658b8)=>{if(!_0x4658b8||_0x4658b8==='0'){const _0x346ed1='</span>'['repeat'](_0x57bdc8);return _0x57bdc8=0x0,_0x346ed1;}const _0x316369=_0x4658b8['split'](';'),_0xd6523d=[];for(const _0x3f3633 of _0x316369){if(_0x3f3633==='1')_0xd6523d['push']('font-weight:bold');else{if(_0x3f3633==='2')_0xd6523d['push']('opacity:0.7');else{if(_0x3f3633==='3')_0xd6523d['push']('font-style:italic');else{if(_0x3f3633==='4')_0xd6523d['push']('text-decoration:underline');else{if(_0x3f3633==='9')_0xd6523d['push']('text-decoration:line-through');else{if(_0xf7ccb9[_0x3f3633])_0xd6523d['push']('color:'+_0xf7ccb9[_0x3f3633]);else{if(_0x543aa6[_0x3f3633])_0xd6523d['push']('background-color:'+_0x543aa6[_0x3f3633]);}}}}}}}if(_0xd6523d['length']>0x0)return _0x57bdc8++,'<span\x20style=\x22'+_0xd6523d['join'](';')+'\x22>';return'';}),_0xd6af58+='</span>'['repeat'](_0x57bdc8),_0xd6af58=_0xd6af58['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3403de,_0x53ab58)=>{if(!_0x53ab58||_0x53ab58==='0')return'';const _0x1cae68=_0x53ab58['split'](';'),_0x480f73=[];for(const _0x2c4818 of _0x1cae68){if(_0x2c4818==='1')_0x480f73['push']('font-weight:bold');else{if(_0xf7ccb9[_0x2c4818])_0x480f73['push']('color:'+_0xf7ccb9[_0x2c4818]);else{if(_0x543aa6[_0x2c4818])_0x480f73['push']('background-color:'+_0x543aa6[_0x2c4818]);}}}if(_0x480f73['length']>0x0)return'<span\x20style=\x22'+_0x480f73['join'](';')+'\x22>';return'';}),_0xd6af58;},'showModal'({title:_0x389c33,content:_0x53d1e5,buttons:buttons=[]}){const _0x3427a1='\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'](_0x389c33)+'</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'+_0x53d1e5+'\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']((_0x2ff8ba,_0x5abd55)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2ff8ba['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5abd55+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2ff8ba['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',_0x499532=document['createElement']('div');_0x499532['id']='utils-modal',_0x499532['className']='modal',_0x499532['innerHTML']=_0x3427a1,document['body']['appendChild'](_0x499532);const _0x2db970=document['getElementById']('utils-modal-close');_0x2db970&&_0x2db970['addEventListener']('click',()=>this['hideModal']());const _0x5f1330=_0x499532['querySelectorAll']('[data-btn-index]');_0x5f1330['forEach'](_0xb70f83=>{const _0x3700e7=parseInt(_0xb70f83['dataset']['btnIndex']);buttons[_0x3700e7]?.['onClick']&&_0xb70f83['addEventListener']('click',buttons[_0x3700e7]['onClick']);});const _0x2686cf=document['getElementById']('utils-modal-overlay');_0x2686cf&&_0x2686cf['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x23d67e=document['getElementById']('utils-modal');_0x23d67e&&_0x23d67e['remove']();},'parseKeyValuePairs'(_0x41d021){const _0x13b074={};if(!_0x41d021)return _0x13b074;return _0x41d021['split'](/\r?\n/)['map'](_0x25bc0c=>_0x25bc0c['trim']())['filter'](Boolean)['forEach'](_0x294828=>{const _0x354cdf=_0x294828['indexOf']('=');if(_0x354cdf>0x0){const _0x57c15b=_0x294828['slice'](0x0,_0x354cdf)['trim'](),_0x296b58=_0x294828['slice'](_0x354cdf+0x1)['trim']();if(_0x57c15b)_0x13b074[_0x57c15b]=_0x296b58;}}),_0x13b074;},'debounce'(_0x21638d,_0x35c825=0xfa){let _0x4b290c=null;return(..._0x388e6d)=>{clearTimeout(_0x4b290c),_0x4b290c=setTimeout(()=>_0x21638d['apply'](this,_0x388e6d),_0x35c825);};},'formatTimestamp'(_0x1ad2c8){if(!_0x1ad2c8)return'N/A';const _0x4689f3=new Date(_0x1ad2c8);return _0x4689f3['toLocaleDateString']()+'\x20'+_0x4689f3['toLocaleTimeString']();},'getQueryParams'(){const _0x6ee5=new URLSearchParams(window['location']['search']),_0x44c070={};for(const [_0x33dcde,_0x1de0b3]of _0x6ee5){_0x44c070[_0x33dcde]=_0x1de0b3;}return _0x44c070;},'formatDuration'(_0x14e51b,_0x21d8df){if(!_0x14e51b)return'N/A';const _0x1cfe10=new Date(_0x14e51b),_0x2df19d=_0x21d8df?new Date(_0x21d8df):new Date(),_0x3a7203=_0x2df19d-_0x1cfe10;if(_0x3a7203<0x0)return'0s';const _0x5564ab=Math['floor'](_0x3a7203/0x3e8),_0x4b541d=Math['floor'](_0x5564ab/0x3c),_0x2803ab=Math['floor'](_0x4b541d/0x3c),_0x21f8dd=Math['floor'](_0x2803ab/0x18);if(_0x5564ab<0x3c)return _0x5564ab+'s';if(_0x4b541d<0x3c)return _0x4b541d+'m\x20'+_0x5564ab%0x3c+'s';if(_0x2803ab<0x18)return _0x2803ab+'h\x20'+_0x4b541d%0x3c+'m\x20'+_0x5564ab%0x3c+'s';return _0x21f8dd+'d\x20'+_0x2803ab%0x18+'h\x20'+_0x4b541d%0x3c+'m';},'renderMarkdown'(_0x55aaef,_0x5a715d={}){if(!_0x55aaef)return'';_0x55aaef=this['rewriteAttachmentLinks'](_0x55aaef,_0x5a715d),_0x55aaef=this['rewriteColorSyntax'](_0x55aaef);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x55aaef);}catch(_0x32f21f){return console['error']('Markdown\x20parsing\x20error:',_0x32f21f),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);}},'rewriteAttachmentLinks'(_0x50ee4d,_0x5afe69={}){const _0x930fd9=typeof _0x5afe69['resolveAttachmentUrl']==='function'?_0x5afe69['resolveAttachmentUrl']:_0x5afe69['taskId']?_0x6c93f6=>API_BASE+'/tasks/'+_0x5afe69['taskId']+'/attachments/'+encodeURIComponent(_0x6c93f6):null;if(!_0x930fd9)return _0x50ee4d;return String(_0x50ee4d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3f14b3,_0x2d745f)=>{const _0x8645c8=String(_0x2d745f||'')['trim']();if(!_0x8645c8)return _0x3f14b3;let _0x427c56=_0x8645c8;try{_0x427c56=decodeURIComponent(_0x8645c8);}catch{}const _0x1380d1=_0x930fd9(_0x427c56);if(!_0x1380d1)return _0x3f14b3;return']('+_0x1380d1+')';});},'rewriteColorSyntax'(_0x5511ca){if(!_0x5511ca)return _0x5511ca;return String(_0x5511ca)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x44a01f,_0x1fcf87,_0x5ce656)=>{const _0x18f92f=this['rewriteColorSyntax'](_0x5ce656);return'<span\x20style=\x22color:\x20'+_0x1fcf87+'\x22>'+_0x18f92f+'</span>';});},'renderMarkdownFallback'(_0x1ed004,_0x42fad2={}){if(!_0x1ed004)return'';_0x1ed004=_0x1ed004['replace'](/\r\n/g,'\x0a'),_0x1ed004=_0x1ed004['replace'](/\r/g,'\x0a'),_0x1ed004=this['rewriteAttachmentLinks'](_0x1ed004,_0x42fad2);let _0x58f3bd=this['escapeHtml'](_0x1ed004);return _0x58f3bd=_0x58f3bd['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x58f3bd=_0x58f3bd['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x58f3bd=_0x58f3bd['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x58f3bd=_0x58f3bd['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x58f3bd=_0x58f3bd['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x58f3bd=_0x58f3bd['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x58f3bd=_0x58f3bd['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x58f3bd=_0x58f3bd['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x58f3bd=_0x58f3bd['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x58f3bd=_0x58f3bd['replace'](/\n\n/g,'</p><p>'),_0x58f3bd=_0x58f3bd['replace'](/\n/g,'<br>'),'<p>'+_0x58f3bd+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5b1d94=new Uint8Array(0x10);crypto['getRandomValues'](_0x5b1d94),_0x5b1d94[0x6]=_0x5b1d94[0x6]&0xf|0x40,_0x5b1d94[0x8]=_0x5b1d94[0x8]&0x3f|0x80;const _0x3c86d7=Array['from'](_0x5b1d94,_0x15e178=>_0x15e178['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3c86d7['slice'](0x0,0x8)+'-'+_0x3c86d7['slice'](0x8,0xc)+'-'+_0x3c86d7['slice'](0xc,0x10)+'-'+_0x3c86d7['slice'](0x10,0x14)+'-'+_0x3c86d7['slice'](0x14);}};export class CustomSelect{constructor(_0x1e4e6f,_0x373c81={}){this['nativeSelect']=_0x1e4e6f,this['options']=_0x373c81,this['isOpen']=![],this['selectedValue']=_0x1e4e6f['value']||'',this['searchable']=_0x373c81['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x42474d=document['createElement']('div');_0x42474d['className']='custom-select';const _0x3641ad=document['createElement']('div');_0x3641ad['className']='custom-select-trigger',_0x3641ad['setAttribute']('tabindex','0'),_0x3641ad['setAttribute']('role','button'),_0x3641ad['setAttribute']('aria-haspopup','listbox');const _0x13ff34=document['createElement']('span');_0x13ff34['className']='custom-select-trigger-text';const _0x4494a1=document['createElement']('span');_0x4494a1['className']='custom-select-arrow',_0x4494a1['textContent']='▼',_0x3641ad['appendChild'](_0x13ff34),_0x3641ad['appendChild'](_0x4494a1);const _0x4133c3=document['createElement']('div');_0x4133c3['className']='custom-select-dropdown',_0x4133c3['setAttribute']('role','listbox');if(this['searchable']){const _0x35c108=document['createElement']('div');_0x35c108['className']='custom-select-search';const _0x35dff4=document['createElement']('input');_0x35dff4['type']='text',_0x35dff4['className']='custom-select-search-input',_0x35dff4['placeholder']='Type\x20to\x20search...',_0x35dff4['setAttribute']('aria-label','Search\x20options'),_0x35dff4['addEventListener']('input',_0x234998=>{this['searchQuery']=_0x234998['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x35dff4['addEventListener']('keydown',_0x494899=>{if(_0x494899['key']==='Escape')_0x494899['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x494899['key']==='Enter'){_0x494899['preventDefault'](),_0x494899['stopPropagation']();const _0x511acc=_0x4133c3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x511acc){const _0x3a5abf=_0x511acc['getAttribute']('data-value');this['select'](_0x3a5abf);}}}}),_0x35c108['appendChild'](_0x35dff4),_0x4133c3['appendChild'](_0x35c108),this['searchInput']=_0x35dff4;}const _0x464965=document['createElement']('div');_0x464965['className']='custom-select-options',_0x4133c3['appendChild'](_0x464965),_0x42474d['appendChild'](_0x3641ad),_0x42474d['appendChild'](_0x4133c3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x42474d,this['nativeSelect']),this['wrapper']=_0x42474d,this['trigger']=_0x3641ad,this['triggerText']=_0x13ff34,this['dropdown']=_0x4133c3,this['optionsContainer']=_0x464965,_0x3641ad['addEventListener']('click',()=>this['toggle']()),_0x3641ad['addEventListener']('keydown',_0x40e039=>this['handleKeydown'](_0x40e039)),document['addEventListener']('click',_0xa32bc2=>{!_0x42474d['contains'](_0xa32bc2['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x180dcf=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x180dcf['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4cc9a4=new MutationObserver(()=>{this['updateDisabledState']();});_0x4cc9a4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5be427=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5be427['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x25673d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x25673d),this['trigger']['setAttribute']('aria-disabled',_0x25673d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x25673d?'-1':'0'),_0x25673d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xd9a5be=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x578085=_0xd9a5be['filter'](_0x3b51ef=>!_0x3b51ef['disabled']&&!_0x3b51ef['hidden']);_0xd9a5be['forEach']((_0x1fe3ce,_0x282349)=>{const _0x1ef1b8=document['createElement']('div');_0x1ef1b8['className']='custom-select-option',_0x1ef1b8['textContent']=_0x1fe3ce['textContent'],_0x1ef1b8['setAttribute']('data-value',_0x1fe3ce['value']),_0x1ef1b8['setAttribute']('data-index',_0x282349),_0x1ef1b8['setAttribute']('role','option'),_0x1fe3ce['disabled']?_0x1ef1b8['classList']['add']('disabled'):_0x1ef1b8['addEventListener']('click',()=>this['select'](_0x1fe3ce['value'])),_0x1fe3ce['value']===this['selectedValue']&&_0x1ef1b8['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1ef1b8),this['allOptions']['push']({'element':_0x1ef1b8,'text':_0x1fe3ce['textContent']['toLowerCase'](),'value':_0x1fe3ce['value'],'disabled':_0x1fe3ce['disabled']});});if(this['searchable']&&this['searchInput']){const _0x146f02=this['searchInput']['parentElement'];_0x578085['length']>0x3?_0x146f02['style']['display']='':_0x146f02['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4836ac=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x709f14=>{if(!_0x4836ac||_0x709f14['disabled'])_0x709f14['element']['style']['display']='';else{const _0xa7c42=_0x709f14['text']['includes'](_0x4836ac);_0x709f14['element']['style']['display']=_0xa7c42?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2f201b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2f201b,this['nativeSelect']['value']=_0x2f201b;const _0x2ab19d=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2ab19d),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x45183f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x45183f&&(this['triggerText']['textContent']=_0x45183f['textContent'],_0x45183f['disabled']||_0x45183f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x818e09=>{_0x818e09['getAttribute']('data-value')===this['selectedValue']?_0x818e09['classList']['add']('selected'):_0x818e09['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 _0x136a40=window['getComputedStyle'](this['dropdown']);if(_0x136a40['position']==='fixed'){const _0x3ab68f=this['trigger']['getBoundingClientRect'](),_0x258f2f=parseInt(_0x136a40['maxHeight'])||0xc8,_0x4abde6=window['innerHeight'],_0x4aa5b3=_0x4abde6-_0x3ab68f['bottom'],_0x7606d=_0x3ab68f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14aa70;_0x4aa5b3<_0x258f2f&&_0x7606d>_0x4aa5b3?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4abde6-_0x3ab68f['top']+'px',_0x14aa70=Math['min'](_0x258f2f,_0x7606d-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3ab68f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14aa70=Math['min'](_0x258f2f,_0x4aa5b3-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px');if(this['optionsContainer']){let _0x4d4c69=_0x14aa70;if(this['searchInput']){const _0x5cdd14=this['searchInput']['parentElement'];_0x5cdd14&&(_0x4d4c69-=_0x5cdd14['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4d4c69)+'px';}this['dropdown']['style']['left']=_0x3ab68f['left']+'px',this['dropdown']['style']['width']=_0x3ab68f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x57366c=this['searchInput']['parentElement'];_0x57366c&&_0x57366c['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'](_0x44b2c4){if(this['nativeSelect']['disabled'])return;if(_0x44b2c4['key']==='Enter'||_0x44b2c4['key']==='\x20')_0x44b2c4['preventDefault'](),this['toggle']();else _0x44b2c4['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ba6a8='\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',_0x4ba6a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x53d5c5=document['getElementById']('confirm-dialog-close'),_0x1cae21=document['getElementById']('confirm-dialog-cancel'),_0x3536fe=document['getElementById']('confirm-dialog-confirm'),_0x1f260e=this['_modal']['querySelector']('.modal-overlay');_0x53d5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1cae21['addEventListener']('click',()=>this['_resolve'](![])),_0x3536fe['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f260e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2dd6b9=>{if(_0x2dd6b9['key']==='Escape')_0x2dd6b9['preventDefault'](),this['_resolve'](![]);else _0x2dd6b9['key']==='Enter'&&(_0x2dd6b9['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x573a17,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x103de4=>{this['_resolvePromise']=_0x103de4,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x573a17;const _0x5d6354=document['getElementById']('confirm-dialog-cancel'),_0x399a63=document['getElementById']('confirm-dialog-confirm');_0x5d6354['textContent']=cancelText,_0x399a63['textContent']=confirmText,_0x399a63['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x399a63['focus']();});},'_resolve'(_0x3745c8){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3745c8),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1ddbba,_0x340ee1={}){this['container']=_0x1ddbba,this['options']={'placeholder':_0x340ee1['placeholder']||'Type\x20to\x20search...','maxItems':_0x340ee1['maxItems']||0x64,'loadItems':_0x340ee1['loadItems']||(async()=>[]),'renderItem':_0x340ee1['renderItem']||(_0x18305c=>({'primary':String(_0x18305c),'secondary':''})),'onSelect':_0x340ee1['onSelect']||(()=>{}),'filterItems':_0x340ee1['filterItems']||null,'getItemValue':_0x340ee1['getItemValue']||(_0x50738c=>_0x50738c),'sortItems':_0x340ee1['sortItems']||null,'debounceMs':_0x340ee1['debounceMs']||0xc8,'minCharsForSearch':_0x340ee1['minCharsForSearch']||0x0,'emptyMessage':_0x340ee1['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x340ee1['loadingMessage']||'Loading...','preload':_0x340ee1['preload']!==![],'searchMode':_0x340ee1['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',_0x16c916=>this['onBlur'](_0x16c916)),this['input']['addEventListener']('input',_0x1fd27f=>this['onInput'](_0x1fd27f)),this['input']['addEventListener']('keydown',_0x32a027=>this['onKeydown'](_0x32a027)),this['clearBtn']['addEventListener']('mousedown',_0x3dbcad=>{_0x3dbcad['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x284089=>{_0x284089['preventDefault']();}),document['addEventListener']('click',_0x3bec39=>{!this['wrapper']['contains'](_0x3bec39['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(_0x1bc683){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1bc683);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5d657e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xbf5646){const _0x3c00cd=_0xbf5646['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c00cd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c00cd):this['loadAndShow'](_0x3c00cd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x38d972){switch(_0x38d972['key']){case'ArrowDown':_0x38d972['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x38d972['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x38d972['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x38d972['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37e433){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x339df1=this['selectedIndex']+_0x37e433;if(_0x339df1>=0x0&&_0x339df1<this['filteredItems']['length']){this['selectedIndex']=_0x339df1,this['updateSelectionHighlight']();const _0x4a98a9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a98a9[this['selectedIndex']]&&_0x4a98a9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2fdb33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2fdb33['forEach']((_0x55d357,_0x3e783e)=>{_0x55d357['classList']['toggle']('keyboard-selected',_0x3e783e===this['selectedIndex']);});}async['loadAndShow'](_0x5cae49){this['showLoading']();try{const _0x11683f=await this['options']['loadItems'](_0x5cae49);if(this['options']['searchMode']==='server'){let _0x529812=_0x11683f;this['options']['sortItems']&&(_0x529812=this['options']['sortItems']([..._0x11683f]));this['filteredItems']=_0x529812;const _0x579e6b=this['filteredItems']['length']>=this['options']['maxItems'];_0x579e6b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x579e6b),this['open']();}else this['allItems']=_0x11683f,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5cae49);}catch(_0x2b9288){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2b9288),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x107061){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x107061):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5b863c=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b863c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b863c),this['open']();}['renderItems'](_0x49db64){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']((_0x24d2af,_0x55a7c3)=>{const _0x3c514c=document['createElement']('div');_0x3c514c['className']='autocomplete-select-item',_0x3c514c['setAttribute']('role','option'),_0x3c514c['setAttribute']('data-index',_0x55a7c3);const _0x4b100c=this['options']['renderItem'](_0x24d2af);let _0x48907e='';_0x4b100c['icon']&&(_0x48907e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4b100c['iconClass']||'')+'\x22>'+_0x4b100c['icon']+'</span>'),_0x3c514c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x48907e+'\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'](_0x4b100c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4b100c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4b100c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3c514c['addEventListener']('click',()=>{this['selectItem'](_0x24d2af);}),_0x3c514c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55a7c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3c514c);}),_0x49db64?(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'](_0x5257aa){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5257aa)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4aadaf){this['selectedItem']=_0x4aadaf;const _0x12cd69=this['options']['renderItem'](_0x4aadaf);this['input']['value']=_0x12cd69['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4aadaf);}['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'](_0x37a814){if(_0x37a814){this['selectedItem']=_0x37a814;const _0x3f3fac=this['options']['renderItem'](_0x37a814);this['input']['value']=_0x3f3fac['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5515f0){this['allItems']=_0x5515f0,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'](_0x40bf0c){this['input']['placeholder']=_0x40bf0c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x23e488=null){const _0x156c00=document['getElementById']('admin-menu-container'),_0x2788be=document['getElementById']('admin-menu-btn'),_0x423cbf=document['getElementById']('admin-menu');if(!_0x156c00||!_0x2788be||!_0x423cbf)return;try{!_0x23e488&&(_0x23e488=await API['getCurrentUser']());if(_0x23e488){const _0x4e1260=window['Permissions'],_0x3ff697=_0x4e1260['hasServerPermission'](_0x23e488,'*')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:manage')||_0x4e1260['hasServerPermission'](_0x23e488,'users:create')||_0x4e1260['hasTeamPermission'](_0x23e488,'teams:manage')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:view_details');if(!_0x3ff697)return;_0x156c00['hidden']=![];if(!_0x4e1260['hasServerPermission'](_0x23e488,'*')){const _0x54253a=_0x423cbf['querySelectorAll']('.admin-menu-item');_0x54253a['forEach'](_0xd4c05c=>{const _0x5763c9=_0xd4c05c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5763c9==='Users'&&!_0x4e1260['hasServerPermission'](_0x23e488,'users:create')&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Skills'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Settings'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Health'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Git\x20History'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Roles'&&(_0xd4c05c['hidden']=!![]);});}_0x2788be['addEventListener']('click',_0x23deae=>{_0x23deae['stopPropagation']();const _0x19a98c=document['getElementById']('actions-menu');if(_0x19a98c)_0x19a98c['hidden']=!![];_0x423cbf['hidden']=!_0x423cbf['hidden'];}),document['addEventListener']('click',_0x7e4b9d=>{!_0x423cbf['hidden']&&!_0x2788be['contains'](_0x7e4b9d['target'])&&!_0x423cbf['contains'](_0x7e4b9d['target'])&&(_0x423cbf['hidden']=!![]);}),document['addEventListener']('keydown',_0x58e410=>{_0x58e410['key']==='Escape'&&!_0x423cbf['hidden']&&(_0x423cbf['hidden']=!![]);});const _0x59e427=document['getElementById']('server-health-btn');_0x59e427&&_0x59e427['addEventListener']('click',async()=>{_0x423cbf['hidden']=!![];const {openServerHealthModal:_0x5d58d8}=await import('./server-health.js');_0x5d58d8();});}}catch(_0x5ccaf2){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ccaf2['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};
|