@profoundlogic/coderflow-server 0.6.2 → 0.6.3
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 +4 -2
- package/dist/base-image/agent-wrapper.sh +32 -4
- package/dist/base-image/entrypoint.sh +3 -0
- package/dist/coder-server.js +1 -1
- package/dist/config/cli-models.json +12 -0
- 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-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.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.html +39 -0
- 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.html +23 -0
- 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 +101 -1
- package/dist/web-ui/public/task.html +46 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
- package/dist/.claude/settings.local.json +0 -20
- package/dist/playwright-test-results/.last-run.json +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x42476c=window['location']['pathname'],_0x558d68=_0x42476c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x558d68)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x558d68[0x1]),_0x558d68[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x43de9c={}){const _0x1dcaed=new URLSearchParams();_0x43de9c['userId']&&_0x1dcaed['set']('userId',String(_0x43de9c['userId']));_0x43de9c['automation']&&_0x1dcaed['set']('automation',String(_0x43de9c['automation']));const _0x59b5cf=API_BASE+'/tasks/stats'+(_0x1dcaed['toString']()?'?'+_0x1dcaed['toString']():''),_0x50f9fa=await fetch(_0x59b5cf);if(!_0x50f9fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x50f9fa['statusText']);return await _0x50f9fa['json']();},async 'getTasks'(_0x250da0={}){const _0x4f39c0=new URLSearchParams();_0x250da0['status']&&_0x4f39c0['set']('status',String(_0x250da0['status']));_0x250da0['environment']&&_0x4f39c0['set']('environment',String(_0x250da0['environment']));_0x250da0['automation']&&_0x4f39c0['set']('automation',String(_0x250da0['automation']));if(_0x250da0['include']){const _0x48ff97=Array['isArray'](_0x250da0['include'])?_0x250da0['include']['join'](','):String(_0x250da0['include']);_0x48ff97&&_0x4f39c0['set']('include',_0x48ff97);}_0x250da0['filter']&&_0x4f39c0['set']('filter',String(_0x250da0['filter']));_0x250da0['page']&&_0x4f39c0['set']('page',String(_0x250da0['page']));_0x250da0['limit']&&_0x4f39c0['set']('limit',String(_0x250da0['limit']));_0x250da0['userId']&&_0x4f39c0['set']('userId',String(_0x250da0['userId']));_0x250da0['search']&&_0x4f39c0['set']('search',String(_0x250da0['search']));_0x250da0['includeChildTasks']&&_0x4f39c0['set']('includeChildTasks','true');const _0x2de641=API_BASE+'/tasks'+(_0x4f39c0['toString']()?'?'+_0x4f39c0['toString']():''),_0x20bec9=await fetch(_0x2de641);if(!_0x20bec9['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x20bec9['statusText']);return await _0x20bec9['json']();},async 'getAutomations'(_0x1246fe={}){const _0x321b7e=new URLSearchParams();_0x1246fe['environment']&&_0x321b7e['set']('environment',String(_0x1246fe['environment']));const _0x404ecb=await fetch(API_BASE+'/api/automations'+(_0x321b7e['toString']()?'?'+_0x321b7e['toString']():''));if(!_0x404ecb['ok']){const _0x11d396=await _0x404ecb['json']()['catch'](()=>({}));throw new Error(_0x11d396['message']||_0x11d396['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x404ecb['statusText']);}return await _0x404ecb['json']();},async 'getAutomation'(_0x5370ca){const _0x341304=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5370ca));if(!_0x341304['ok']){const _0x289565=await _0x341304['json']()['catch'](()=>({}));throw new Error(_0x289565['message']||_0x289565['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x341304['statusText']);}return await _0x341304['json']();},async 'createAutomation'(_0x29c72c){const _0x365953=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29c72c||{})});if(!_0x365953['ok']){const _0x4768d5=await _0x365953['json']()['catch'](()=>({}));throw new Error(_0x4768d5['message']||_0x4768d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x365953['statusText']);}return await _0x365953['json']();},async 'updateAutomation'(_0x305c01,_0x19dbfa){const _0x4e593c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x305c01),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19dbfa||{})});if(!_0x4e593c['ok']){const _0x1a2f37=await _0x4e593c['json']()['catch'](()=>({}));throw new Error(_0x1a2f37['message']||_0x1a2f37['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e593c['statusText']);}return await _0x4e593c['json']();},async 'deleteAutomation'(_0x44ca89){const _0x5b73a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x44ca89),{'method':'DELETE'});if(!_0x5b73a['ok']){const _0x4674f6=await _0x5b73a['json']()['catch'](()=>({}));throw new Error(_0x4674f6['message']||_0x4674f6['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5b73a['statusText']);}return await _0x5b73a['json']();},async 'triggerAutomation'(_0x4d3daf){const _0x44fb3b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d3daf)+'/trigger',{'method':'POST'});if(!_0x44fb3b['ok']){const _0x561c44=await _0x44fb3b['json']()['catch'](()=>({}));throw new Error(_0x561c44['message']||_0x561c44['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x44fb3b['statusText']);}return await _0x44fb3b['json']();},async 'setAutomationEnabled'(_0x31c4b8,_0x569658){const _0x4e751a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31c4b8)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x569658})});if(!_0x4e751a['ok']){const _0x408971=await _0x4e751a['json']()['catch'](()=>({}));throw new Error(_0x408971['message']||_0x408971['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4e751a['statusText']);}return await _0x4e751a['json']();},async 'getAutomationHistory'(_0x16912d,_0x161393=0x32){const _0x40cc1b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16912d)+'/history?limit='+encodeURIComponent(String(_0x161393)));if(!_0x40cc1b['ok']){const _0x4fc767=await _0x40cc1b['json']()['catch'](()=>({}));throw new Error(_0x4fc767['message']||_0x4fc767['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40cc1b['statusText']);}return await _0x40cc1b['json']();},async 'getTask'(_0x498122,_0x52b715={}){const _0x103f4a=new URLSearchParams();if(_0x52b715['include']){const _0x2bdf9e=Array['isArray'](_0x52b715['include'])?_0x52b715['include']['join'](','):String(_0x52b715['include']);if(_0x2bdf9e)_0x103f4a['set']('include',_0x2bdf9e);}const _0xeaae=await fetch(API_BASE+'/tasks/'+_0x498122+(_0x103f4a['toString']()?'?'+_0x103f4a['toString']():''));if(!_0xeaae['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xeaae['statusText']);return await _0xeaae['json']();},async 'getTaskResults'(_0x42657f){const _0x2a2a91=await fetch(API_BASE+'/tasks/'+_0x42657f+'/results');if(!_0x2a2a91['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a2a91['statusText']);return await _0x2a2a91['json']();},async 'getTaskPatches'(_0x3a5009){const _0xcb2d04=await fetch(API_BASE+'/tasks/'+_0x3a5009+'/patches');if(!_0xcb2d04['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xcb2d04['statusText']);return await _0xcb2d04['json']();},async 'getTaskAttachments'(_0x5d9f86){const _0x777c45=await fetch(API_BASE+'/tasks/'+_0x5d9f86+'/attachments');if(!_0x777c45['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x777c45['statusText']);return await _0x777c45['json']();},async 'uploadAttachments'(_0x372826,_0x3eb7b9){const _0x236fdc=new FormData();for(const _0x4c417a of _0x3eb7b9){_0x236fdc['append']('attachments',_0x4c417a);}const _0x3e5746=await fetch(API_BASE+'/tasks/'+_0x372826+'/attachments',{'method':'POST','body':_0x236fdc});if(!_0x3e5746['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3e5746['statusText']);return await _0x3e5746['json']();},async 'isAINameGenerationAvailable'(){try{const _0x5c4a21=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x5c4a21['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x5c4a21['json']();}catch(_0x486119){return{'available':![],'reason':_0x486119['message']};}},async 'generateTaskName'(_0x4e445e){try{const _0x4a708c=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x4e445e})});return await _0x4a708c['json']();}catch(_0x135a72){return{'success':![],'error':_0x135a72['message']};}},async 'createTask'(_0x5a411f){let _0x822d50,_0x17ff5c={};if(_0x5a411f['files']&&_0x5a411f['files']['length']>0x0){const _0x324ef0=new FormData();for(const [_0x3d4553,_0x477af7]of Object['entries'](_0x5a411f)){if(_0x3d4553!=='files'){if(_0x477af7==null)continue;typeof _0x477af7==='object'?_0x324ef0['append'](_0x3d4553,JSON['stringify'](_0x477af7)):_0x324ef0['append'](_0x3d4553,String(_0x477af7));}}for(const _0x344553 of _0x5a411f['files']){_0x324ef0['append']('attachments',_0x344553);}_0x822d50=_0x324ef0;}else _0x17ff5c['Content-Type']='application/json',_0x822d50=JSON['stringify'](_0x5a411f);const _0x2f7600=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x17ff5c,'body':_0x822d50});if(!_0x2f7600['ok']){const _0x3b7770=await _0x2f7600['json'](),_0x5c5a25=new Error(_0x3b7770['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2f7600['statusText']),{message:_0x3c6d5e,..._0x192f98}=_0x3b7770;Object['assign'](_0x5c5a25,_0x192f98);throw _0x5c5a25;}return await _0x2f7600['json']();},async 'createTestTask'(_0x1a5069){const _0x52847e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a5069)});if(!_0x52847e['ok']){const _0x4eade0=await _0x52847e['json']();throw new Error(_0x4eade0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x52847e['statusText']);}return await _0x52847e['json']();},async 'createEphemeralTest'(_0x3f92f2){const _0xc67335=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f92f2)});if(!_0xc67335['ok']){const _0x61b045=await _0xc67335['json']();throw new Error(_0x61b045['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xc67335['statusText']);}return await _0xc67335['json']();},async 'createDeployTask'(_0x351295){const _0x25b9ff=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351295)});if(!_0x25b9ff['ok']){const _0x390dfd=await _0x25b9ff['json']();throw new Error(_0x390dfd['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x25b9ff['statusText']);}return await _0x25b9ff['json']();},async 'getEnvironments'(){const _0xb4c4e8=await fetch(API_BASE+'/environments');if(!_0xb4c4e8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xb4c4e8['statusText']);return await _0xb4c4e8['json']();},async 'getEnvironment'(_0x3cc28e){const _0x20af52=await fetch(API_BASE+'/environments/'+_0x3cc28e);if(!_0x20af52['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x20af52['statusText']);return await _0x20af52['json']();},async 'getEnvironmentRepoHistory'(_0x3985fd,_0x4da5f0,_0x41ccf1={}){if(!_0x3985fd||!_0x4da5f0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2ffa82=new URLSearchParams();if(_0x41ccf1['limit'])_0x2ffa82['set']('limit',String(_0x41ccf1['limit']));if(_0x41ccf1['offset'])_0x2ffa82['set']('offset',String(_0x41ccf1['offset']));if(_0x41ccf1['search'])_0x2ffa82['set']('search',String(_0x41ccf1['search']));if(_0x41ccf1['branch'])_0x2ffa82['set']('branch',String(_0x41ccf1['branch']));const _0x5a7f3f=API_BASE+'/environments/'+encodeURIComponent(_0x3985fd)+'/repos/'+encodeURIComponent(_0x4da5f0)+'/git/history',_0x229db6=await fetch(''+_0x5a7f3f+(_0x2ffa82['toString']()?'?'+_0x2ffa82['toString']():''));if(!_0x229db6['ok']){const _0x3a9f71=await _0x229db6['json']()['catch'](()=>({}));throw new Error(_0x3a9f71['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x229db6['statusText']);}return await _0x229db6['json']();},async 'getEnvironmentRepoCommit'(_0x451bef,_0x41e024,_0x112cbb){if(!_0x451bef||!_0x41e024||!_0x112cbb)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x161219=API_BASE+'/environments/'+encodeURIComponent(_0x451bef)+'/repos/'+encodeURIComponent(_0x41e024)+'/git/commits/'+encodeURIComponent(_0x112cbb),_0x425f42=await fetch(_0x161219);if(!_0x425f42['ok']){const _0x367791=await _0x425f42['json']()['catch'](()=>({}));throw new Error(_0x367791['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x425f42['statusText']);}return await _0x425f42['json']();},async 'getEnvironmentRepoBranches'(_0xe0cbf7,_0x1a24bd){if(!_0xe0cbf7||!_0x1a24bd)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a999f=API_BASE+'/environments/'+encodeURIComponent(_0xe0cbf7)+'/repos/'+encodeURIComponent(_0x1a24bd)+'/git/branches',_0xe4409e=await fetch(_0x2a999f);if(!_0xe4409e['ok']){const _0x566444=await _0xe4409e['json']()['catch'](()=>({}));throw new Error(_0x566444['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xe4409e['statusText']);}return await _0xe4409e['json']();},async 'revertEnvironmentRepoCommit'(_0x255ead,_0x23d32b,_0x9d8a3c,_0x54ddb2={}){if(!_0x255ead||!_0x23d32b||!_0x9d8a3c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x597b93=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x255ead)+'/repos/'+encodeURIComponent(_0x23d32b)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x9d8a3c,..._0x54ddb2})});if(!_0x597b93['ok']){const _0x31a053=await _0x597b93['json']()['catch'](()=>({}));throw new Error(_0x31a053['message']||_0x31a053['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x597b93['statusText']);}return await _0x597b93['json']();},async 'getTemplates'(_0x5caee4={}){const _0x16a05b=new URLSearchParams();if(_0x5caee4['include']){const _0x4a241e=Array['isArray'](_0x5caee4['include'])?_0x5caee4['include']['join'](','):String(_0x5caee4['include']);if(_0x4a241e)_0x16a05b['set']('include',_0x4a241e);}const _0x3d7a44=await fetch(API_BASE+'/templates'+(_0x16a05b['toString']()?'?'+_0x16a05b['toString']():''));if(!_0x3d7a44['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d7a44['statusText']);return await _0x3d7a44['json']();},async 'getTemplatesForEnvironment'(_0xc528e9,_0x35353a={}){if(!_0xc528e9)throw new Error('Environment\x20name\x20is\x20required');const _0x718a59=new URLSearchParams();if(_0x35353a['include']){const _0x2593c5=Array['isArray'](_0x35353a['include'])?_0x35353a['include']['join'](','):String(_0x35353a['include']);if(_0x2593c5)_0x718a59['set']('include',_0x2593c5);}const _0x4adac0=await fetch(API_BASE+'/templates/'+_0xc528e9+(_0x718a59['toString']()?'?'+_0x718a59['toString']():''));if(!_0x4adac0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0xc528e9+':\x20'+_0x4adac0['statusText']);return await _0x4adac0['json']();},async 'getTemplate'(_0x598d43,_0x2e0d94,_0x1f4e92={}){if(!_0x598d43||!_0x2e0d94)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x212bcf=new URLSearchParams();if(_0x1f4e92['include']){const _0x559a1b=Array['isArray'](_0x1f4e92['include'])?_0x1f4e92['include']['join'](','):String(_0x1f4e92['include']);if(_0x559a1b)_0x212bcf['set']('include',_0x559a1b);}const _0x218e30=await fetch(API_BASE+'/templates/'+_0x598d43+'/'+_0x2e0d94+(_0x212bcf['toString']()?'?'+_0x212bcf['toString']():''));if(!_0x218e30['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x218e30['statusText']);return await _0x218e30['json']();},async 'getTaskLogs'(_0x4699da,_0xa9739c={}){if(!_0x4699da)throw new Error('Task\x20ID\x20is\x20required');const _0x3287ed=new URLSearchParams();_0xa9739c['tail']&&_0x3287ed['set']('tail',String(_0xa9739c['tail']));const _0x2239c3=await fetch(API_BASE+'/tasks/'+_0x4699da+'/logs'+(_0x3287ed['toString']()?'?'+_0x3287ed['toString']():''));if(!_0x2239c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2239c3['statusText']);return await _0x2239c3['text']();},async 'getContainers'(){const _0x2ed2e4=await fetch(API_BASE+'/containers');if(!_0x2ed2e4['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ed2e4['statusText']);return await _0x2ed2e4['json']();},async 'getContainer'(_0x3d3281){const _0x529cbe=await fetch(API_BASE+'/containers/'+_0x3d3281);if(!_0x529cbe['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x529cbe['statusText']);return await _0x529cbe['json']();},async 'startInteractiveContainer'(_0x2d1f5c){const _0x478aca=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1f5c)});if(!_0x478aca['ok']){const _0x84aded=await _0x478aca['json']()['catch'](()=>({}));throw new Error(_0x84aded['message']||'Failed\x20to\x20start\x20container:\x20'+_0x478aca['statusText']);}return await _0x478aca['json']();},async 'stopContainer'(_0x1c7379){const _0x4dc06e=await fetch(API_BASE+'/containers/'+_0x1c7379,{'method':'DELETE'});if(!_0x4dc06e['ok']){const _0x315233=await _0x4dc06e['json']()['catch'](()=>({}));throw new Error(_0x315233['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4dc06e['statusText']);}return await _0x4dc06e['json']();},async 'stopTask'(_0x3e58f1){if(!_0x3e58f1)throw new Error('Task\x20ID\x20is\x20required');const _0x403311=await fetch(API_BASE+'/tasks/'+_0x3e58f1+'/stop',{'method':'POST'});if(!_0x403311['ok']){const _0x407205=await _0x403311['json']()['catch'](()=>({}));throw new Error(_0x407205['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x403311['statusText']);}return await _0x403311['json']();},async 'interruptTask'(_0x1d85d5){if(!_0x1d85d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4861b5=await fetch(API_BASE+'/tasks/'+_0x1d85d5+'/interrupt',{'method':'POST'});if(!_0x4861b5['ok']){const _0x39ff50=await _0x4861b5['json']()['catch'](()=>({}));throw new Error(_0x39ff50['error']||_0x39ff50['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4861b5['statusText']);}return await _0x4861b5['json']();},async 'startTask'(_0x23057f){if(!_0x23057f)throw new Error('Task\x20ID\x20is\x20required');const _0x290b07=await fetch(API_BASE+'/tasks/'+_0x23057f+'/start',{'method':'POST'});if(!_0x290b07['ok']){const _0x293c39=await _0x290b07['json']()['catch'](()=>({}));throw new Error(_0x293c39['error']||'Failed\x20to\x20start\x20task:\x20'+_0x290b07['statusText']);}return await _0x290b07['json']();},async 'deleteTask'(_0x57eb11){if(!_0x57eb11)throw new Error('Task\x20ID\x20is\x20required');const _0xe4f711=await fetch(API_BASE+'/tasks/'+_0x57eb11,{'method':'DELETE'});if(!_0xe4f711['ok']){const _0x2be710=await _0xe4f711['json']()['catch'](()=>({}));throw new Error(_0x2be710['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xe4f711['statusText']);}return await _0xe4f711['json']();},async 'refreshTasksFromDisk'(){const _0x3e961c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3e961c['ok']){const _0xb433f3=await _0x3e961c['json']()['catch'](()=>({}));throw new Error(_0xb433f3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3e961c['statusText']);}return await _0x3e961c['json']();},async 'approveTask'(_0x2b7f93,_0x11ae6e={}){if(!_0x2b7f93)throw new Error('Task\x20ID\x20is\x20required');const _0x4f0fc3={'commit_message':_0x11ae6e['commit_message']||'','pull':_0x11ae6e['pull']??![],'push':_0x11ae6e['push']??![]};_0x11ae6e['new_branch']&&(_0x4f0fc3['new_branch']=_0x11ae6e['new_branch']);const _0x1b2227=await fetch(API_BASE+'/tasks/'+_0x2b7f93+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f0fc3)});if(!_0x1b2227['ok']){const _0x2aa5fd=await _0x1b2227['json']()['catch'](()=>({}));let _0x17c73f=_0x2aa5fd['error']||_0x2aa5fd['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1b2227['statusText'];if(_0x2aa5fd['results']&&Array['isArray'](_0x2aa5fd['results'])){const _0x710d2a=_0x2aa5fd['results']['filter'](_0xa67d26=>!_0xa67d26['success']&&_0xa67d26['error']);_0x710d2a['length']>0x0&&(_0x17c73f=_0x710d2a[0x0]['error']);}throw new Error(_0x17c73f);}return await _0x1b2227['json']();},async 'getPullRequestInfo'(_0x3da47c){if(!_0x3da47c)throw new Error('Task\x20ID\x20is\x20required');const _0x38f305=await fetch(API_BASE+'/tasks/'+_0x3da47c+'/pull-request-info');if(!_0x38f305['ok']){const _0x1639e7=await _0x38f305['json']()['catch'](()=>({}));throw new Error(_0x1639e7['error']||_0x1639e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x38f305['statusText']);}return await _0x38f305['json']();},async 'createPullRequests'(_0x258f89,_0x429529){if(!_0x258f89)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429529||!Array['isArray'](_0x429529))throw new Error('repos\x20array\x20is\x20required');const _0x428464=await fetch(API_BASE+'/tasks/'+_0x258f89+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x429529})});if(!_0x428464['ok']){const _0x2611bc=await _0x428464['json']()['catch'](()=>({}));let _0x39f4a1=_0x2611bc['error']||_0x2611bc['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x428464['statusText'];if(_0x2611bc['results']&&Array['isArray'](_0x2611bc['results'])){const _0xc562ca=_0x2611bc['results']['filter'](_0x4d15c6=>!_0x4d15c6['success']&&_0x4d15c6['error']);_0xc562ca['length']>0x0&&(_0x39f4a1=_0xc562ca[0x0]['error']);}throw new Error(_0x39f4a1);}return await _0x428464['json']();},async 'syncRepos'(_0x1c30ec){if(!_0x1c30ec)throw new Error('Task\x20ID\x20is\x20required');const _0x576734=await fetch(API_BASE+'/tasks/'+_0x1c30ec+'/sync-repos',{'method':'POST'});if(!_0x576734['ok']){const _0x1f7d64=await _0x576734['json']()['catch'](()=>({}));throw new Error(_0x1f7d64['error']||_0x1f7d64['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x576734['statusText']);}return await _0x576734['json']();},async 'getIbmiSyncInfo'(_0x22a24a){if(!_0x22a24a)throw new Error('Task\x20ID\x20is\x20required');const _0x22cf62=await fetch(API_BASE+'/tasks/'+_0x22a24a+'/ibmi-sync-info');if(!_0x22cf62['ok']){const _0x3ca861=await _0x22cf62['json']()['catch'](()=>({}));throw new Error(_0x3ca861['error']||_0x3ca861['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x22cf62['json']();},async 'getSyncFiles'(_0xd6487f){if(!_0xd6487f)throw new Error('Task\x20ID\x20is\x20required');const _0x5ffc73=await fetch(API_BASE+'/tasks/'+_0xd6487f+'/sync-to-ibmi/files');if(!_0x5ffc73['ok']){const _0xcfcd8c=await _0x5ffc73['json']()['catch'](()=>({}));throw new Error(_0xcfcd8c['error']||_0xcfcd8c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5ffc73['json']();},async 'syncToIbmi'(_0x988772,_0x5f889e,_0x1be4db=null,_0x23293a=null,_0x14dc2e=null){if(!_0x988772)throw new Error('Task\x20ID\x20is\x20required');const _0x4bc0c9={'library':_0x5f889e};if(_0x1be4db)_0x4bc0c9['user']=_0x1be4db;if(_0x23293a)_0x4bc0c9['password']=_0x23293a;if(_0x14dc2e)_0x4bc0c9['files']=_0x14dc2e;const _0x52b87f=await fetch(API_BASE+'/tasks/'+_0x988772+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc0c9)});if(!_0x52b87f['ok']){const _0x49ff76=await _0x52b87f['json']()['catch'](()=>({}));throw new Error(_0x49ff76['error']||_0x49ff76['message']||'Sync\x20failed');}return await _0x52b87f['json']();},async 'getIbmiSyncLog'(_0xb9fc59){if(!_0xb9fc59)throw new Error('Task\x20ID\x20is\x20required');const _0x569cdf=await fetch(API_BASE+'/tasks/'+_0xb9fc59+'/ibmi-sync-log');if(!_0x569cdf['ok']){const _0x1c3d64=await _0x569cdf['json']()['catch'](()=>({}));throw new Error(_0x1c3d64['error']||_0x1c3d64['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x569cdf['json']();},async 'pullChanges'(_0x32bfe1){if(!_0x32bfe1)throw new Error('Task\x20ID\x20is\x20required');const _0x1f0fd8=await fetch(API_BASE+'/tasks/'+_0x32bfe1+'/pull-changes',{'method':'POST'});if(!_0x1f0fd8['ok']){const _0x27588a=await _0x1f0fd8['json']()['catch'](()=>({}));throw new Error(_0x27588a['error']||_0x27588a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1f0fd8['statusText']);}return await _0x1f0fd8['json']();},async 'readFile'(_0x5d3d82,_0xf724e4){if(!_0x5d3d82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf724e4)throw new Error('File\x20path\x20is\x20required');const _0x2d8e8e=await fetch(API_BASE+'/tasks/'+_0x5d3d82+'/files?path='+encodeURIComponent(_0xf724e4));if(!_0x2d8e8e['ok']){const _0x41ac1d=await _0x2d8e8e['json']()['catch'](()=>({}));throw new Error(_0x41ac1d['error']||_0x41ac1d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2d8e8e['statusText']);}return await _0x2d8e8e['json']();},'getTaskFileDownloadUrl'(_0x3bb483,_0x1852a6){if(!_0x3bb483)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1852a6)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3bb483+'/files/download?path='+encodeURIComponent(_0x1852a6);},async 'writeFile'(_0x1e285b,_0x4e8aa6,_0x22cb52){if(!_0x1e285b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e8aa6)throw new Error('File\x20path\x20is\x20required');if(_0x22cb52===undefined)throw new Error('Content\x20is\x20required');const _0x4cc7ae=await fetch(API_BASE+'/tasks/'+_0x1e285b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4e8aa6,'content':_0x22cb52})});if(!_0x4cc7ae['ok']){const _0x549006=await _0x4cc7ae['json']()['catch'](()=>({}));throw new Error(_0x549006['error']||_0x549006['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4cc7ae['statusText']);}return await _0x4cc7ae['json']();},async 'uploadTaskFiles'(_0x114294,_0x48eeb5,_0x528713){if(!_0x114294)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48eeb5)throw new Error('Target\x20directory\x20is\x20required');if(!_0x528713||_0x528713['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52d198=new FormData();_0x52d198['append']('targetDir',_0x48eeb5);for(const _0x1e9bbe of _0x528713){_0x52d198['append']('files',_0x1e9bbe,_0x1e9bbe['name']);}const _0x128072=await fetch(API_BASE+'/tasks/'+_0x114294+'/files/upload',{'method':'POST','body':_0x52d198});if(!_0x128072['ok']){const _0x4735e6=await _0x128072['json']()['catch'](()=>({}));throw new Error(_0x4735e6['error']||_0x4735e6['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x128072['statusText']);}return await _0x128072['json']();},async 'deleteFile'(_0x4db528,_0x559ccd){if(!_0x4db528)throw new Error('Task\x20ID\x20is\x20required');if(!_0x559ccd)throw new Error('File\x20path\x20is\x20required');const _0x476e73=await fetch(API_BASE+'/tasks/'+_0x4db528+'/files?path='+encodeURIComponent(_0x559ccd),{'method':'DELETE'});if(!_0x476e73['ok']){const _0x45370e=await _0x476e73['json']()['catch'](()=>({}));throw new Error(_0x45370e['error']||_0x45370e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x476e73['statusText']);}return await _0x476e73['json']();},async 'discardFile'(_0x5e66de,_0x1b02a4,_0x270edf){if(!_0x5e66de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b02a4)throw new Error('File\x20path\x20is\x20required');if(!_0x270edf)throw new Error('Repository\x20path\x20is\x20required');const _0x3c868c=await fetch(API_BASE+'/tasks/'+_0x5e66de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1b02a4,'repoPath':_0x270edf})});if(!_0x3c868c['ok']){const _0x508ee5=await _0x3c868c['json']()['catch'](()=>({}));throw new Error(_0x508ee5['error']||_0x508ee5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3c868c['statusText']);}return await _0x3c868c['json']();},async 'followUpTask'(_0x4cfe7f,_0x2067d7={}){if(!_0x4cfe7f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2067d7['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x45870e,_0x3c09f2={};if(_0x2067d7['files']&&_0x2067d7['files']['length']>0x0){const _0x40fe01=new FormData();_0x40fe01['append']('instructions',_0x2067d7['instructions']);for(const _0xde4dd1 of _0x2067d7['files']){_0x40fe01['append']('attachments',_0xde4dd1);}_0x45870e=_0x40fe01;}else _0x3c09f2['Content-Type']='application/json',_0x45870e=JSON['stringify']({'instructions':_0x2067d7['instructions']});const _0x523dbb=await fetch(API_BASE+'/tasks/'+_0x4cfe7f+'/follow-up',{'method':'POST','headers':_0x3c09f2,'body':_0x45870e});if(!_0x523dbb['ok']){const _0x3e7a64=await _0x523dbb['json']()['catch'](()=>({}));throw new Error(_0x3e7a64['error']||_0x3e7a64['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x523dbb['statusText']);}return await _0x523dbb['json']();},async 'getTaskRewindPoints'(_0x263d39){if(!_0x263d39)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed208=await fetch(API_BASE+'/tasks/'+_0x263d39+'/rewind-points');if(!_0x3ed208['ok']){const _0x48fef8=await _0x3ed208['json']()['catch'](()=>({}));throw new Error(_0x48fef8['error']||_0x48fef8['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x3ed208['statusText']);}return await _0x3ed208['json']();},async 'rewindTask'(_0x409d0c,_0x45dd31={}){if(!_0x409d0c)throw new Error('Task\x20ID\x20is\x20required');const _0x193e57=Number['isInteger'](_0x45dd31['targetFollowUpCount'])?_0x45dd31['targetFollowUpCount']:0x0,_0x2f9eae={'targetFollowUpCount':_0x193e57};typeof _0x45dd31['instructions']==='string'&&_0x45dd31['instructions']['trim']()&&(_0x2f9eae['instructions']=_0x45dd31['instructions']['trim']());typeof _0x45dd31['rewindFiles']==='boolean'&&(_0x2f9eae['rewindFiles']=_0x45dd31['rewindFiles']);const _0x4f9f3d=await fetch(API_BASE+'/tasks/'+_0x409d0c+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f9eae)});if(!_0x4f9f3d['ok']){const _0x56a4db=await _0x4f9f3d['json']()['catch'](()=>({}));throw new Error(_0x56a4db['error']||_0x56a4db['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x4f9f3d['statusText']);}return await _0x4f9f3d['json']();},async 'login'(_0x47164b,_0x1fdb3f){const _0x1b36a7=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47164b,'password':_0x1fdb3f})});if(!_0x1b36a7['ok']){const _0x502417=await _0x1b36a7['json']();throw new Error(_0x502417['message']||'Login\x20failed');}return await _0x1b36a7['json']();},async 'logout'(){const _0xafeed2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xafeed2['ok']){const _0x2a287b=await _0xafeed2['json']();throw new Error(_0x2a287b['message']||'Logout\x20failed');}return await _0xafeed2['json']();},async 'getCurrentUser'(){const _0x28c93a=await fetch(API_BASE+'/auth/me');if(!_0x28c93a['ok'])throw new Error('Not\x20authenticated');const _0x11eb18=await _0x28c93a['json']();return _0x11eb18['user'];},async 'getRolesInfo'(){const _0x3ad0e7=await fetch(API_BASE+'/users/roles');if(!_0x3ad0e7['ok']){const _0x3ee58a=await _0x3ad0e7['json']();throw new Error(_0x3ee58a['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3ad0e7['json']();},async 'getUsers'(){const _0x32c42f=await fetch(API_BASE+'/users');if(!_0x32c42f['ok']){const _0x7b104e=await _0x32c42f['json']();throw new Error(_0x7b104e['message']||'Failed\x20to\x20get\x20users');}return await _0x32c42f['json']();},async 'getUser'(_0xc1799f){const _0x8b2305=await fetch(API_BASE+'/users/'+_0xc1799f);if(!_0x8b2305['ok']){const _0x3c632d=await _0x8b2305['json']();throw new Error(_0x3c632d['message']||'Failed\x20to\x20get\x20user');}return await _0x8b2305['json']();},async 'createUser'(_0x257e2b){const _0x29064e=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x257e2b)});if(!_0x29064e['ok']){const _0x2d99d5=await _0x29064e['json']();throw new Error(_0x2d99d5['message']||'Failed\x20to\x20create\x20user');}return await _0x29064e['json']();},async 'updateUser'(_0x23ae54,_0x29e49b){const _0x33b06=await fetch(API_BASE+'/users/'+_0x23ae54,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e49b)});if(!_0x33b06['ok']){const _0x561a8f=await _0x33b06['json']();throw new Error(_0x561a8f['message']||'Failed\x20to\x20update\x20user');}return await _0x33b06['json']();},async 'deleteUser'(_0x2e1714){const _0x5ac332=await fetch(API_BASE+'/users/'+_0x2e1714,{'method':'DELETE'});if(!_0x5ac332['ok']){const _0x3ecd95=await _0x5ac332['json']();throw new Error(_0x3ecd95['message']||'Failed\x20to\x20delete\x20user');}return await _0x5ac332['json']();},async 'stopAllContainers'(){const _0x14163f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x16a727=await _0x14163f['json']()['catch'](()=>({}));if(!_0x14163f['ok'])throw new Error(_0x16a727['message']||_0x16a727['error']||'Failed\x20to\x20stop\x20containers');return _0x16a727;},async 'removeStoppedContainers'(){const _0x5205dd=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bf738=await _0x5205dd['json']()['catch'](()=>({}));if(!_0x5205dd['ok'])throw new Error(_0x2bf738['message']||_0x2bf738['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bf738;},async 'pruneDockerResources'(){const _0x37cdd2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2a395b=await _0x37cdd2['json']()['catch'](()=>({}));if(!_0x37cdd2['ok'])throw new Error(_0x2a395b['message']||_0x2a395b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2a395b;},async 'createPasswordToken'(_0x19c799,_0x50ec2d='setup',_0x549bdc=![]){const _0x5390a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x19c799,'type':_0x50ec2d,'sendEmail':_0x549bdc})});if(!_0x5390a8['ok']){const _0x10c112=await _0x5390a8['json']();throw new Error(_0x10c112['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5390a8['json']();},async 'getEmailConfig'(){const _0x228a12=await fetch(API_BASE+'/password/email-config');if(!_0x228a12['ok']){const _0x5708e1=await _0x228a12['json']();throw new Error(_0x5708e1['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x228a12['json']();},async 'updateTaskName'(_0x3357df,_0x20e80a){const _0x2a4d70=await fetch(API_BASE+'/tasks/'+_0x3357df,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x20e80a})});if(!_0x2a4d70['ok']){const _0x20760c=await _0x2a4d70['json']();throw new Error(_0x20760c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2a4d70['json']();},async 'pinTask'(_0x18e7c9,_0x52bd03,_0x374c4a=null){if(!_0x18e7c9)throw new Error('Task\x20ID\x20is\x20required');const _0x1c7fd4={'pinned':_0x52bd03};_0x374c4a&&_0x374c4a['length']>0x0&&(_0x1c7fd4['additionalTaskIds']=_0x374c4a);const _0x2defe7=await fetch(API_BASE+'/tasks/'+_0x18e7c9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c7fd4)});if(!_0x2defe7['ok']){const _0x573cd9=await _0x2defe7['json']();throw new Error(_0x573cd9['error']||'Failed\x20to\x20pin\x20task');}return await _0x2defe7['json']();},async 'setTaskWinner'(_0x50e37a,_0x13c258,_0x4bd746=[]){if(!_0x50e37a)throw new Error('Task\x20ID\x20is\x20required');const _0x2ee07b=await fetch(API_BASE+'/tasks/'+_0x50e37a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x13c258,'siblings':_0x4bd746})});if(!_0x2ee07b['ok']){const _0x95a63c=await _0x2ee07b['json']();throw new Error(_0x95a63c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2ee07b['json']();},async 'setTaskLoser'(_0x3cb566,_0xb22c02){if(!_0x3cb566)throw new Error('Task\x20ID\x20is\x20required');const _0x4016ff=await fetch(API_BASE+'/tasks/'+_0x3cb566+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xb22c02})});if(!_0x4016ff['ok']){const _0x41773c=await _0x4016ff['json']();throw new Error(_0x41773c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4016ff['json']();},async 'createTaskGroup'(_0x513382){const _0x478e2a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x513382)});if(!_0x478e2a['ok']){const _0x747db2=await _0x478e2a['json']();throw new Error(_0x747db2['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x478e2a['json']();},async 'getTaskGroups'(_0x348059={}){const _0x48aadc=new URLSearchParams();if(_0x348059['userId'])_0x48aadc['set']('userId',String(_0x348059['userId']));if(_0x348059['status'])_0x48aadc['set']('status',String(_0x348059['status']));if(_0x348059['limit'])_0x48aadc['set']('limit',String(_0x348059['limit']));const _0x58823f=API_BASE+'/tasks/groups'+(_0x48aadc['toString']()?'?'+_0x48aadc['toString']():''),_0x277e9d=await fetch(_0x58823f);if(!_0x277e9d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x277e9d['json']();},async 'getTaskGroup'(_0x129a28){const _0x191942=await fetch(API_BASE+'/tasks/groups/'+_0x129a28);if(!_0x191942['ok']){const _0x107485=await _0x191942['json']();throw new Error(_0x107485['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x191942['json']();},async 'updateTaskGroup'(_0x3a6133,_0x35cd9d,_0x3e0bd6){const _0x392fc6=await fetch(API_BASE+'/tasks/'+_0x3a6133+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x35cd9d,'groupIndex':_0x3e0bd6})});if(!_0x392fc6['ok']){const _0xbf9b83=await _0x392fc6['json']();throw new Error(_0xbf9b83['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x392fc6['json']();},async 'removeTaskFromGroup'(_0x54775a){return this['updateTaskGroup'](_0x54775a,null,null);},async 'deleteTaskGroup'(_0x1d069d,_0x5abb96=![]){const _0x4a091c=_0x5abb96?'?deleteTasks=true':'',_0x36b2b1=await fetch(API_BASE+'/tasks/groups/'+_0x1d069d+_0x4a091c,{'method':'DELETE'});if(!_0x36b2b1['ok']){const _0x4d51fc=await _0x36b2b1['json']();throw new Error(_0x4d51fc['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x52206f,_0x51a790){const _0x3b9f6a=await fetch(API_BASE+'/tasks/groups/'+_0x52206f+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x51a790})});if(!_0x3b9f6a['ok']){const _0xda0aca=await _0x3b9f6a['json']();throw new Error(_0xda0aca['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3b9f6a['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54e2e5){if(!_0x54e2e5)throw new Error('Task\x20ID\x20is\x20required');const _0x489e9c=await fetch(API_BASE+'/tasks/'+_0x54e2e5+'/comments');if(!_0x489e9c['ok']){const _0x213b7f=await _0x489e9c['json']()['catch'](()=>({}));throw new Error(_0x213b7f['error']||'Failed\x20to\x20get\x20comments');}return await _0x489e9c['json']();},async 'addComment'(_0x43763d,_0x5e455e){if(!_0x43763d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5e455e)throw new Error('Comment\x20content\x20is\x20required');const _0xa65c27=await fetch(API_BASE+'/tasks/'+_0x43763d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5e455e})});if(!_0xa65c27['ok']){const _0x4c85ba=await _0xa65c27['json']()['catch'](()=>({}));throw new Error(_0x4c85ba['error']||'Failed\x20to\x20add\x20comment');}return await _0xa65c27['json']();},async 'updateComment'(_0x453e1,_0xd2577c,_0x28e867){if(!_0x453e1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2577c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x28e867)throw new Error('Comment\x20content\x20is\x20required');const _0x3d08a8=await fetch(API_BASE+'/tasks/'+_0x453e1+'/comments/'+_0xd2577c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x28e867})});if(!_0x3d08a8['ok']){const _0x58558f=await _0x3d08a8['json']()['catch'](()=>({}));throw new Error(_0x58558f['error']||'Failed\x20to\x20update\x20comment');}return await _0x3d08a8['json']();},async 'deleteComment'(_0x4df4ce,_0x1f84a4){if(!_0x4df4ce)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f84a4)throw new Error('Comment\x20ID\x20is\x20required');const _0x555a01=await fetch(API_BASE+'/tasks/'+_0x4df4ce+'/comments/'+_0x1f84a4,{'method':'DELETE'});if(!_0x555a01['ok']){const _0x501499=await _0x555a01['json']()['catch'](()=>({}));throw new Error(_0x501499['error']||'Failed\x20to\x20delete\x20comment');}return await _0x555a01['json']();},async 'createObjective'(_0x3ab068){const _0x189cd2={'objective':!![],'name':_0x3ab068['name']||'','environment':_0x3ab068['environment']||null,'agents':_0x3ab068['agents']||[],'branches':_0x3ab068['branches']||{},'isPinned':_0x3ab068['isPinned']||![],'parentObjectiveId':_0x3ab068['parentObjectiveId']||null,'env_vars':_0x3ab068['envVars']||{},'parameters':{'instructions':_0x3ab068['instructions']||''},'files':_0x3ab068['files']||[],'jira':_0x3ab068['jira']||null};return this['createTask'](_0x189cd2);},async 'updateObjective'(_0x4217d4,_0x8490dc,_0x4d92ca=[],_0x25f963=[]){let _0x52efc2,_0x2e4e03={};const _0x1fbb48={..._0x8490dc};_0x25f963&&_0x25f963['length']>0x0&&(_0x1fbb48['removeAttachments']=_0x25f963);if(_0x4d92ca&&_0x4d92ca['length']>0x0){const _0x3318ed=new FormData();for(const [_0xf5dc50,_0x40fa02]of Object['entries'](_0x1fbb48)){if(_0x40fa02==null)continue;typeof _0x40fa02==='object'?_0x3318ed['append'](_0xf5dc50,JSON['stringify'](_0x40fa02)):_0x3318ed['append'](_0xf5dc50,String(_0x40fa02));}for(const _0x5cfadb of _0x4d92ca){_0x3318ed['append']('attachments',_0x5cfadb);}_0x52efc2=_0x3318ed;}else _0x2e4e03['Content-Type']='application/json',_0x52efc2=JSON['stringify'](_0x1fbb48);const _0x7958d7=await fetch(API_BASE+'/tasks/'+_0x4217d4,{'method':'PATCH','headers':_0x2e4e03,'body':_0x52efc2});if(!_0x7958d7['ok']){const _0x382abe=await _0x7958d7['json']();throw new Error(_0x382abe['error']||'Failed\x20to\x20update\x20objective');}return await _0x7958d7['json']();},async 'deleteObjective'(_0x216d92){return this['deleteTask'](_0x216d92);},async 'launchObjective'(_0x1d6967,_0x26b458={}){const _0x309255=await fetch(API_BASE+'/tasks/'+_0x1d6967+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26b458)});if(!_0x309255['ok']){const _0x1e50c1=await _0x309255['json']();throw new Error(_0x1e50c1['error']||'Failed\x20to\x20launch\x20objective');}return await _0x309255['json']();},async 'getObjectiveAttachments'(_0x3adcbb){return this['getTaskAttachments'](_0x3adcbb);},async 'createJudgeTask'({environment:_0x108d0e,judgeAgent:_0x4fab18,groupId:_0x1f8019,taskIds:_0x4cf49c,judgeCustomInstructions:_0x538e39,isPinned:_0x46f9cc}){const _0x382ecd=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x108d0e,'judgeAgent':_0x4fab18,'groupId':_0x1f8019,'taskIds':_0x4cf49c,'judgeCustomInstructions':_0x538e39,'isPinned':_0x46f9cc})});if(!_0x382ecd['ok']){const _0x144ea0=await _0x382ecd['json']();throw new Error(_0x144ea0['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x382ecd['json']();},async 'getJudgeTasks'(_0x4a145d){const _0x132c89=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x4a145d));if(!_0x132c89['ok']){const _0x4ace71=await _0x132c89['json']();throw new Error(_0x4ace71['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x132c89['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2a226e,_0x564e0a,_0x4fef3=''){const _0x1f01a7=await fetch(API_BASE+'/tasks/'+_0x2a226e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x564e0a,'customPreamble':_0x4fef3})});if(!_0x1f01a7['ok']){const _0xa0c8cc=await _0x1f01a7['json']();throw new Error(_0xa0c8cc['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1f01a7['json']();},async 'getJiraConfig'(){const _0x4e285c=await fetch(API_BASE+'/jira/config');if(!_0x4e285c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4e285c['json']();},async 'getJiraIssue'(_0x3b493a){const _0x179e6f=await fetch(API_BASE+'/jira/issues/'+_0x3b493a);if(!_0x179e6f['ok']){const _0x3ff39e=await _0x179e6f['json']()['catch'](()=>({}));throw new Error(_0x3ff39e['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x179e6f['statusText']);}return await _0x179e6f['json']();},async 'searchJiraIssues'(_0x423248,_0x488052=0x14){const _0x25b4ea=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x423248,'maxResults':_0x488052})});if(!_0x25b4ea['ok']){const _0x314af8=await _0x25b4ea['json']()['catch'](()=>({}));throw new Error(_0x314af8['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x25b4ea['statusText']);}return await _0x25b4ea['json']();},async 'postJiraComment'(_0x29f2c9,_0x3bc22e){const _0x4764f0=await fetch(API_BASE+'/jira/issues/'+_0x29f2c9+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3bc22e})});if(!_0x4764f0['ok']){const _0x4c2757=await _0x4764f0['json']()['catch'](()=>({}));throw new Error(_0x4c2757['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4764f0['statusText']);}return await _0x4764f0['json']();},async 'getJiraComments'(_0x582392){const _0x1f9d51=await fetch(API_BASE+'/jira/issues/'+_0x582392+'/comments');if(!_0x1f9d51['ok']){const _0x590929=await _0x1f9d51['json']()['catch'](()=>({}));throw new Error(_0x590929['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f9d51['statusText']);}return await _0x1f9d51['json']();},async 'promptParameter'({environment:_0x3d8fa8,command:_0x2e7e4d,parser:parser='json'}){const _0x37f201=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d8fa8,'command':_0x2e7e4d,'parser':parser})});if(!_0x37f201['ok']){const _0x1624c6=await _0x37f201['json']()['catch'](()=>({}));throw new Error(_0x1624c6['message']||_0x1624c6['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x37f201['statusText']);}return await _0x37f201['json']();},async 'promptParameterStream'(_0xb1905b,_0x33b90){const _0x55e68f=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb1905b)});if(!_0x55e68f['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x55e68f['statusText']);const _0x2ff7be=_0x55e68f['body']['getReader'](),_0x80d65=new TextDecoder();let _0x1d4e49='';return new Promise((_0xb4f896,_0x18ca82)=>{const _0x49440d=async()=>{try{const {done:_0x3b0972,value:_0x253294}=await _0x2ff7be['read']();if(_0x3b0972)return;_0x1d4e49+=_0x80d65['decode'](_0x253294,{'stream':!![]});const _0x3b3b5d=_0x1d4e49['split']('\x0a\x0a');_0x1d4e49=_0x3b3b5d['pop']()||'';for(const _0x5dfdf7 of _0x3b3b5d){if(!_0x5dfdf7['trim']())continue;const _0x163635=_0x5dfdf7['split']('\x0a');let _0x1864af='message',_0x468787='';for(const _0x4141a2 of _0x163635){if(_0x4141a2['startsWith']('event:'))_0x1864af=_0x4141a2['substring'](0x6)['trim']();else _0x4141a2['startsWith']('data:')&&(_0x468787=_0x4141a2['substring'](0x5)['trim']());}if(!_0x468787)continue;try{const _0x35f6bf=JSON['parse'](_0x468787);if(_0x1864af==='progress'&&_0x33b90)_0x33b90(_0x35f6bf['stage'],_0x35f6bf['message']);else{if(_0x1864af==='result'){_0xb4f896(_0x35f6bf);return;}else{if(_0x1864af==='error'){let _0x1e9a4e=_0x35f6bf['message']||_0x35f6bf['error']||'Prompt\x20command\x20failed';_0x35f6bf['rawOutput']&&(_0x1e9a4e+='\x0a\x0aRaw\x20output:\x0a'+_0x35f6bf['rawOutput']);_0x18ca82(new Error(_0x1e9a4e));return;}}}}catch(_0x30fe07){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x30fe07),console['error']('Event\x20type:',_0x1864af),console['error']('Event\x20data:',_0x468787),console['error']('First\x20200\x20chars:',_0x468787['substring'](0x0,0xc8)),_0x18ca82(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x30fe07['message']+'\x0a\x0aData:\x20'+_0x468787['substring'](0x0,0x1f4)));return;}}_0x49440d();}catch(_0x22827b){_0x18ca82(_0x22827b);}};_0x49440d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5bd063){const _0x236f97=await fetch(''+API_BASE+_0x5bd063);if(!_0x236f97['ok']){const _0x5b0c48=await _0x236f97['json']()['catch'](()=>({'error':_0x236f97['statusText']})),_0x1a7f71=new Error(_0x5b0c48['error']||_0x5b0c48['message']||_0x236f97['statusText']);if(_0x5b0c48['detail']!==undefined)_0x1a7f71['detail']=_0x5b0c48['detail'];throw _0x1a7f71;}return await _0x236f97['json']();},async 'post'(_0x1db669,_0x3430d2){const _0x2ada6d=await fetch(''+API_BASE+_0x1db669,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3430d2)});if(!_0x2ada6d['ok']){const _0x3ed745=await _0x2ada6d['json']()['catch'](()=>({'error':_0x2ada6d['statusText']})),_0x474272=new Error(_0x3ed745['error']||_0x3ed745['message']||_0x2ada6d['statusText']);if(_0x3ed745['detail']!==undefined)_0x474272['detail']=_0x3ed745['detail'];throw _0x474272;}return await _0x2ada6d['json']();},async 'put'(_0x49d644,_0x255baf){const _0x55a275=await fetch(''+API_BASE+_0x49d644,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x255baf)});if(!_0x55a275['ok']){const _0x4e5f57=await _0x55a275['json']()['catch'](()=>({'error':_0x55a275['statusText']})),_0x185994=new Error(_0x4e5f57['error']||_0x4e5f57['message']||_0x55a275['statusText']);if(_0x4e5f57['detail']!==undefined)_0x185994['detail']=_0x4e5f57['detail'];throw _0x185994;}return await _0x55a275['json']();},async 'delete'(_0x44980e,_0x37975d){const _0x505dcd={'method':'DELETE'};_0x37975d&&(_0x505dcd['headers']={'Content-Type':'application/json'},_0x505dcd['body']=JSON['stringify'](_0x37975d));const _0x3e999f=await fetch(''+API_BASE+_0x44980e,_0x505dcd);if(!_0x3e999f['ok']){const _0x608dbc=await _0x3e999f['json']()['catch'](()=>({'error':_0x3e999f['statusText']})),_0x22a1c3=new Error(_0x608dbc['error']||_0x608dbc['message']||_0x3e999f['statusText']);if(_0x608dbc['detail']!==undefined)_0x22a1c3['detail']=_0x608dbc['detail'];throw _0x22a1c3;}return await _0x3e999f['json']();},async 'getSkills'(){const _0x505399=await fetch(API_BASE+'/skills');if(!_0x505399['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x505399['statusText']);return await _0x505399['json']();},async 'getSkill'(_0x12951d){const _0x1867f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12951d));if(!_0x1867f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1867f4['statusText']);return await _0x1867f4['json']();},async 'createSkill'(_0x234c80){const _0x5883a5=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x234c80)});if(!_0x5883a5['ok']){const _0x38a232=await _0x5883a5['json']()['catch'](()=>({'error':_0x5883a5['statusText']})),_0x99c5be=new Error(_0x38a232['error']||_0x38a232['message']||_0x5883a5['statusText']);if(_0x38a232['detail']!==undefined)_0x99c5be['detail']=_0x38a232['detail'];throw _0x99c5be;}return await _0x5883a5['json']();},async 'updateSkill'(_0x3da565,_0xc2876d){const _0x2525f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3da565),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc2876d)});if(!_0x2525f0['ok']){const _0x425fce=await _0x2525f0['json']()['catch'](()=>({'error':_0x2525f0['statusText']})),_0x42252d=new Error(_0x425fce['error']||_0x425fce['message']||_0x2525f0['statusText']);if(_0x425fce['detail']!==undefined)_0x42252d['detail']=_0x425fce['detail'];throw _0x42252d;}return await _0x2525f0['json']();},async 'deleteSkill'(_0x27f2ab){const _0x15820e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27f2ab),{'method':'DELETE'});if(!_0x15820e['ok']){const _0x4c3237=await _0x15820e['json']()['catch'](()=>({'error':_0x15820e['statusText']})),_0x166acb=new Error(_0x4c3237['error']||_0x4c3237['message']||_0x15820e['statusText']);if(_0x4c3237['detail']!==undefined)_0x166acb['detail']=_0x4c3237['detail'];throw _0x166acb;}return await _0x15820e['json']();},async 'getSkillFile'(_0x3ebcc0,_0x250ca5){const _0x297d54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3ebcc0)+'/files/'+_0x250ca5);if(!_0x297d54['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x297d54['statusText']);return await _0x297d54['json']();},async 'saveSkillFile'(_0x176708,_0x1110ad,_0x3180b2){const _0x4778b3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x176708)+'/files/'+_0x1110ad,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3180b2})});if(!_0x4778b3['ok']){const _0x29f5a2=await _0x4778b3['json']()['catch'](()=>({'error':_0x4778b3['statusText']})),_0x591fd9=new Error(_0x29f5a2['error']||_0x29f5a2['message']||_0x4778b3['statusText']);if(_0x29f5a2['detail']!==undefined)_0x591fd9['detail']=_0x29f5a2['detail'];throw _0x591fd9;}return await _0x4778b3['json']();},async 'deleteSkillFile'(_0x329790,_0x20c81d){const _0x444a16=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x329790)+'/files/'+_0x20c81d,{'method':'DELETE'});if(!_0x444a16['ok']){const _0x7187a4=await _0x444a16['json']()['catch'](()=>({'error':_0x444a16['statusText']})),_0x18cd8d=new Error(_0x7187a4['error']||_0x7187a4['message']||_0x444a16['statusText']);if(_0x7187a4['detail']!==undefined)_0x18cd8d['detail']=_0x7187a4['detail'];throw _0x18cd8d;}return await _0x444a16['json']();},async 'pullSkills'(){const _0x1a0bcb=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x1a0bcb['ok']){const _0x6dccd9=await _0x1a0bcb['json']()['catch'](()=>({'error':_0x1a0bcb['statusText']})),_0x5cd070=new Error(_0x6dccd9['error']||_0x6dccd9['message']||_0x1a0bcb['statusText']);if(_0x6dccd9['detail']!==undefined)_0x5cd070['detail']=_0x6dccd9['detail'];throw _0x5cd070;}return await _0x1a0bcb['json']();},async 'commitSkills'(_0x5ebf17,_0x36226d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x36226d,_0xcd2eed=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5ebf17,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0xcd2eed['ok']){const _0x5d2aa2=await _0xcd2eed['json']()['catch'](()=>({'error':_0xcd2eed['statusText']})),_0x488c80=new Error(_0x5d2aa2['error']||_0x5d2aa2['message']||_0xcd2eed['statusText']);if(_0x5d2aa2['detail']!==undefined)_0x488c80['detail']=_0x5d2aa2['detail'];throw _0x488c80;}return await _0xcd2eed['json']();},async 'discardSkillsChanges'(){const _0x450e55=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x450e55['ok']){const _0x42c100=await _0x450e55['json']()['catch'](()=>({'error':_0x450e55['statusText']})),_0x3dec0b=new Error(_0x42c100['error']||_0x42c100['message']||_0x450e55['statusText']);if(_0x42c100['detail']!==undefined)_0x3dec0b['detail']=_0x42c100['detail'];throw _0x3dec0b;}return await _0x450e55['json']();},async 'getSkillCatalog'(){const _0x76844c=await fetch(API_BASE+'/external-skills/catalog');if(!_0x76844c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x76844c['statusText']);return await _0x76844c['json']();},async 'getImportedSkillsRegistry'(){const _0x3bb006=await fetch(API_BASE+'/external-skills/registry');if(!_0x3bb006['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3bb006['statusText']);return await _0x3bb006['json']();},async 'importCatalogSkill'(_0x375190){const _0x60d5bb=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x375190})});if(!_0x60d5bb['ok']){const _0x1abd76=await _0x60d5bb['json']()['catch'](()=>({'error':_0x60d5bb['statusText']})),_0x1b0419=new Error(_0x1abd76['error']||_0x1abd76['message']||_0x60d5bb['statusText']);if(_0x1abd76['detail']!==undefined)_0x1b0419['detail']=_0x1abd76['detail'];throw _0x1b0419;}return await _0x60d5bb['json']();},async 'importSkillFromGit'(_0x190a8a,_0x2919bf,_0x2af31f='main',_0x2da099=null){const _0x2b7792=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x190a8a,'skillPath':_0x2919bf,'branch':_0x2af31f,'skillId':_0x2da099})});if(!_0x2b7792['ok']){const _0x3bae0e=await _0x2b7792['json']()['catch'](()=>({'error':_0x2b7792['statusText']})),_0xaf6a98=new Error(_0x3bae0e['error']||_0x3bae0e['message']||_0x2b7792['statusText']);if(_0x3bae0e['detail']!==undefined)_0xaf6a98['detail']=_0x3bae0e['detail'];throw _0xaf6a98;}return await _0x2b7792['json']();},async 'probeMarketplace'(_0x28beeb,_0x59d750='main'){const _0x2288f7=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x28beeb,'branch':_0x59d750})});if(!_0x2288f7['ok']){const _0x44dce4=await _0x2288f7['json']()['catch'](()=>({'error':_0x2288f7['statusText']})),_0x27985c=new Error(_0x44dce4['error']||_0x44dce4['message']||_0x2288f7['statusText']);if(_0x44dce4['detail']!==undefined)_0x27985c['detail']=_0x44dce4['detail'];throw _0x27985c;}return await _0x2288f7['json']();},async 'importMarketplaceBundle'(_0x1b5fd5,_0x4f25b0,_0x46f256,_0x2da15b=null){const _0x524adb=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b5fd5,'branch':_0x4f25b0,'bundleId':_0x46f256,'selectedSkills':_0x2da15b})});if(!_0x524adb['ok']){const _0x163439=await _0x524adb['json']()['catch'](()=>({'error':_0x524adb['statusText']})),_0x494461=new Error(_0x163439['error']||_0x163439['message']||_0x524adb['statusText']);if(_0x163439['detail']!==undefined)_0x494461['detail']=_0x163439['detail'];throw _0x494461;}return await _0x524adb['json']();},async 'importSkillFromFolder'(_0x5c5901,_0x189550=null){const _0x1a2dc0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x5c5901,'skillId':_0x189550})});if(!_0x1a2dc0['ok']){const _0x562189=await _0x1a2dc0['json']()['catch'](()=>({'error':_0x1a2dc0['statusText']})),_0x36f4c8=new Error(_0x562189['error']||_0x562189['message']||_0x1a2dc0['statusText']);if(_0x562189['detail']!==undefined)_0x36f4c8['detail']=_0x562189['detail'];throw _0x36f4c8;}return await _0x1a2dc0['json']();},async 'importSkillFromNpm'(_0x407ef4,_0x167ecf='latest',_0x970b32=null,_0x25246c=null){const _0x268e70=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x407ef4,'version':_0x167ecf,'skillId':_0x970b32,'registry':_0x25246c})});if(!_0x268e70['ok']){const _0x295c8b=await _0x268e70['json']()['catch'](()=>({'error':_0x268e70['statusText']})),_0x127512=new Error(_0x295c8b['error']||_0x295c8b['message']||_0x268e70['statusText']);if(_0x295c8b['detail']!==undefined)_0x127512['detail']=_0x295c8b['detail'];throw _0x127512;}return await _0x268e70['json']();},async 'checkSkillUpdates'(_0x21cca5){const _0x36ec29=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x21cca5)+'/check-updates',{'method':'POST'});if(!_0x36ec29['ok']){const _0x35e5f2=await _0x36ec29['json']()['catch'](()=>({'error':_0x36ec29['statusText']})),_0x16a007=new Error(_0x35e5f2['error']||_0x35e5f2['message']||_0x36ec29['statusText']);if(_0x35e5f2['detail']!==undefined)_0x16a007['detail']=_0x35e5f2['detail'];throw _0x16a007;}return await _0x36ec29['json']();},async 'updateExternalSkill'(_0x40d700){const _0x3663e7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40d700)+'/update',{'method':'POST'});if(!_0x3663e7['ok']){const _0x2832d6=await _0x3663e7['json']()['catch'](()=>({'error':_0x3663e7['statusText']})),_0x4eeb36=new Error(_0x2832d6['error']||_0x2832d6['message']||_0x3663e7['statusText']);if(_0x2832d6['detail']!==undefined)_0x4eeb36['detail']=_0x2832d6['detail'];throw _0x4eeb36;}return await _0x3663e7['json']();},async 'updateSkillFlags'(_0x4f99fd,_0x291450){const _0x4e57f6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4f99fd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x291450})});if(!_0x4e57f6['ok']){const _0x5efcd0=await _0x4e57f6['json']()['catch'](()=>({'error':_0x4e57f6['statusText']})),_0x4ef618=new Error(_0x5efcd0['error']||_0x5efcd0['message']||_0x4e57f6['statusText']);if(_0x5efcd0['detail']!==undefined)_0x4ef618['detail']=_0x5efcd0['detail'];throw _0x4ef618;}return await _0x4e57f6['json']();},async 'removeFromImportedRegistry'(_0x1fe7fe){const _0x56d589=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1fe7fe)+'/registry',{'method':'DELETE'});if(!_0x56d589['ok']){const _0x291681=await _0x56d589['json']()['catch'](()=>({'error':_0x56d589['statusText']})),_0x43aaaa=new Error(_0x291681['error']||_0x291681['message']||_0x56d589['statusText']);if(_0x291681['detail']!==undefined)_0x43aaaa['detail']=_0x291681['detail'];throw _0x43aaaa;}return await _0x56d589['json']();},async 'getTeams'(){const _0x4fae50=await fetch(API_BASE+'/teams');if(!_0x4fae50['ok']){const _0x4c9fe9=await _0x4fae50['json']()['catch'](()=>({'message':_0x4fae50['statusText']}));throw new Error(_0x4c9fe9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4fae50['json']();},async 'getTeam'(_0x165b38){const _0x3bfde3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x165b38));if(!_0x3bfde3['ok']){const _0x2ab6d3=await _0x3bfde3['json']()['catch'](()=>({'message':_0x3bfde3['statusText']}));throw new Error(_0x2ab6d3['message']||'Failed\x20to\x20get\x20team');}return await _0x3bfde3['json']();},async 'createTeam'(_0x4dfac6){const _0xa9485a=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dfac6)});if(!_0xa9485a['ok']){const _0x502eeb=await _0xa9485a['json']()['catch'](()=>({'message':_0xa9485a['statusText']}));throw new Error(_0x502eeb['message']||'Failed\x20to\x20create\x20team');}return await _0xa9485a['json']();},async 'updateTeam'(_0x31c89b,_0x39ba42){const _0x94a367=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31c89b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39ba42)});if(!_0x94a367['ok']){const _0xc7232a=await _0x94a367['json']()['catch'](()=>({'message':_0x94a367['statusText']}));throw new Error(_0xc7232a['message']||'Failed\x20to\x20update\x20team');}return await _0x94a367['json']();},async 'deleteTeam'(_0x279e4e){const _0x8664c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x279e4e),{'method':'DELETE'});if(!_0x8664c['ok']){const _0x1de73=await _0x8664c['json']()['catch'](()=>({'message':_0x8664c['statusText']}));throw new Error(_0x1de73['message']||'Failed\x20to\x20delete\x20team');}return await _0x8664c['json']();},async 'addTeamMember'(_0x1c3242,_0x69851c){const _0x7c2563=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c3242)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x69851c})});if(!_0x7c2563['ok']){const _0x3a7c1b=await _0x7c2563['json']()['catch'](()=>({'message':_0x7c2563['statusText']}));throw new Error(_0x3a7c1b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x7c2563['json']();},async 'removeTeamMember'(_0xe83c61,_0x16dbe0){const _0xd465d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xe83c61)+'/members/'+encodeURIComponent(_0x16dbe0),{'method':'DELETE'});if(!_0xd465d1['ok']){const _0x3a3e9b=await _0xd465d1['json']()['catch'](()=>({'message':_0xd465d1['statusText']}));throw new Error(_0x3a3e9b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xd465d1['json']();},async 'getBindings'(_0x2444b9={}){const _0x248343=new URLSearchParams();if(_0x2444b9['resource_type'])_0x248343['set']('resource_type',_0x2444b9['resource_type']);if(_0x2444b9['resource_id'])_0x248343['set']('resource_id',_0x2444b9['resource_id']);if(_0x2444b9['subject_type'])_0x248343['set']('subject_type',_0x2444b9['subject_type']);if(_0x2444b9['subject_id'])_0x248343['set']('subject_id',_0x2444b9['subject_id']);const _0x137101=_0x248343['toString'](),_0x50833a=await fetch(API_BASE+'/bindings'+(_0x137101?'?'+_0x137101:''));if(!_0x50833a['ok']){const _0xb58eed=await _0x50833a['json']()['catch'](()=>({'message':_0x50833a['statusText']}));throw new Error(_0xb58eed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x50833a['json']();},async 'createBinding'(_0x2f6d0b){const _0x40fb18=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f6d0b)});if(!_0x40fb18['ok']){const _0x509928=await _0x40fb18['json']()['catch'](()=>({'message':_0x40fb18['statusText']}));throw new Error(_0x509928['message']||'Failed\x20to\x20create\x20binding');}return await _0x40fb18['json']();},async 'updateBinding'(_0xa4cde9,_0x49ad57){const _0x418974=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xa4cde9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x49ad57)});if(!_0x418974['ok']){const _0x5a9b67=await _0x418974['json']()['catch'](()=>({'message':_0x418974['statusText']}));throw new Error(_0x5a9b67['message']||'Failed\x20to\x20update\x20binding');}return await _0x418974['json']();},async 'deleteBinding'(_0x4ffd6d){const _0x23fb4c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4ffd6d),{'method':'DELETE'});if(!_0x23fb4c['ok']){const _0x824f=await _0x23fb4c['json']()['catch'](()=>({'message':_0x23fb4c['statusText']}));throw new Error(_0x824f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x23fb4c['json']();},async 'getRoleDefinitions'(){const _0x5a34d0=await fetch(API_BASE+'/roles');if(!_0x5a34d0['ok']){const _0x5c249c=await _0x5a34d0['json']()['catch'](()=>({'message':_0x5a34d0['statusText']}));throw new Error(_0x5c249c['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x5a34d0['json']();},async 'getRoleDefinition'(_0x31aca3){const _0x5d14ed=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31aca3));if(!_0x5d14ed['ok']){const _0x168362=await _0x5d14ed['json']()['catch'](()=>({'message':_0x5d14ed['statusText']}));throw new Error(_0x168362['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5d14ed['json']();},async 'createRoleDefinition'(_0x22f5dd){const _0x2ee1a0=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22f5dd)});if(!_0x2ee1a0['ok']){const _0x2249ed=await _0x2ee1a0['json']()['catch'](()=>({'message':_0x2ee1a0['statusText']}));throw new Error(_0x2249ed['message']||_0x2249ed['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2ee1a0['json']();},async 'updateRoleDefinition'(_0x5adb76,_0x3459ae){const _0x10fb16=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5adb76),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3459ae)});if(!_0x10fb16['ok']){const _0x58f317=await _0x10fb16['json']()['catch'](()=>({'message':_0x10fb16['statusText']}));throw new Error(_0x58f317['message']||_0x58f317['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x10fb16['json']();},async 'deleteRoleDefinition'(_0x115874){const _0x3d6bbd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x115874),{'method':'DELETE'});if(!_0x3d6bbd['ok']){const _0x4c3190=await _0x3d6bbd['json']()['catch'](()=>({'message':_0x3d6bbd['statusText']}));throw new Error(_0x4c3190['message']||_0x4c3190['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x3d6bbd['json']();},async 'getAvailablePermissions'(){const _0xdbf1d6=await fetch(API_BASE+'/roles/available-permissions');if(!_0xdbf1d6['ok']){const _0x2eebd1=await _0xdbf1d6['json']()['catch'](()=>({'message':_0xdbf1d6['statusText']}));throw new Error(_0x2eebd1['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xdbf1d6['json']();},async 'getGitProviderAllowedTeams'(_0x4e5abd){const _0x3f2dca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4e5abd)+'/allowed-teams');if(!_0x3f2dca['ok']){const _0x562ad9=await _0x3f2dca['json']()['catch'](()=>({'message':_0x3f2dca['statusText']}));throw new Error(_0x562ad9['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3f2dca['json']();},async 'setGitProviderAllowedTeams'(_0x58dc34,_0x30f03a){const _0x200e64=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x58dc34)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x30f03a})});if(!_0x200e64['ok']){const _0x507d32=await _0x200e64['json']()['catch'](()=>({'message':_0x200e64['statusText']}));throw new Error(_0x507d32['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x200e64['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 _0x3307c0=toastState['baseBottom'];toastState['toasts']['forEach'](_0x447151=>{_0x447151['el']['style']['bottom']=_0x3307c0+'px';const _0x32d995=_0x447151['el']['offsetHeight']||toastState['defaultHeight'];_0x3307c0+=_0x32d995+toastState['gap'];});});}function removeToastById(_0x5f3048){const _0x55eeaf=toastState['toasts']['findIndex'](_0x1862c8=>_0x1862c8['id']===_0x5f3048);if(_0x55eeaf===-0x1)return;const _0x5c415f=toastState['toasts'][_0x55eeaf];if(_0x5c415f['timeoutId'])clearTimeout(_0x5c415f['timeoutId']);_0x5c415f['el']['classList']['remove']('show'),setTimeout(()=>_0x5c415f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x55eeaf,0x1),repositionAllToasts();}function registerToast(_0x40fc0c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x40fc0c),repositionAllToasts(),_0x40fc0c['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(_0x20a126){if(_0x20a126===null||_0x20a126===undefined)return'';return String(_0x20a126)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x536407,_0x3b7480){if(_0x536407&&typeof _0x536407==='object'&&!Array['isArray'](_0x536407))return{'code':typeof _0x536407['text']==='string'?_0x536407['text']:'','language':typeof _0x536407['lang']==='string'?_0x536407['lang']:''};return{'code':typeof _0x536407==='string'?_0x536407:'','language':typeof _0x3b7480==='string'?_0x3b7480:''};}function buildMermaidBlock(_0x4ea6bf){const _0x4e0b0f=String(_0x4ea6bf||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4e0b0f))+'\x22>'+escapeHtmlValue(_0x4e0b0f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x182b1e=new marked['Renderer'](),_0x4f295f=_0x182b1e['code']['bind'](_0x182b1e);return _0x182b1e['code']=function(_0x1b0c14,_0x1a202d,..._0x406a22){const {code:_0x3e0ac1,language:_0x52938a}=getMarkdownCodeBlockPayload(_0x1b0c14,_0x1a202d),_0x1e9bc9=String(_0x52938a||'')['trim']()['toLowerCase']();if(_0x1e9bc9==='mermaid')return buildMermaidBlock(_0x3e0ac1);const _0x4c71a3=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4c71a3&&_0x1e9bc9)try{const _0x5c5f55=_0x4c71a3['getLanguage'](_0x1e9bc9)?_0x1e9bc9:'plaintext',_0x2dd074=_0x4c71a3['highlight'](_0x3e0ac1,{'language':_0x5c5f55})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1e9bc9)+'\x22>'+_0x2dd074+'</code></pre>';}catch(_0x39e55b){console['error']('Syntax\x20highlighting\x20error:',_0x39e55b);}return _0x4f295f(_0x1b0c14,_0x1a202d,..._0x406a22);},sharedMarkedRenderer=_0x182b1e,_0x182b1e;}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 _0x1f3ef9=window['mermaid'];if(!_0x1f3ef9||typeof _0x1f3ef9['initialize']!=='function')return _0x1f3ef9||null;return _0x1f3ef9['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f3ef9;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2d381d,_0x54e82e)=>{const _0x4df2d5=()=>_0x2d381d(configureMermaidInstance()),_0x1a2824=()=>{mermaidLoadPromise=null,_0x54e82e(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xe2ba29=document['getElementById'](MERMAID_SCRIPT_ID);!_0xe2ba29&&(_0xe2ba29=document['createElement']('script'),_0xe2ba29['id']=MERMAID_SCRIPT_ID,_0xe2ba29['src']=MERMAID_SCRIPT_SRC,_0xe2ba29['async']=!![],document['head']['appendChild'](_0xe2ba29));if(window['mermaid']){_0x4df2d5();return;}_0xe2ba29['addEventListener']('load',_0x4df2d5,{'once':!![]}),_0xe2ba29['addEventListener']('error',_0x1a2824,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x14f82d){const _0x2cd517=_0x14f82d['getAttribute']('data-mermaid-source');if(!_0x2cd517)return null;let _0x5953dd=_0x2cd517;try{_0x5953dd=decodeURIComponent(_0x2cd517);}catch{}return _0x14f82d['textContent']=_0x5953dd,_0x14f82d['removeAttribute']('data-processed'),_0x14f82d['removeAttribute']('aria-roledescription'),_0x14f82d['removeAttribute']('role'),_0x14f82d['removeAttribute']('aria-label'),_0x5953dd;}function collectMermaidNodes(_0x3afd22,_0x506205){if(!(_0x3afd22 instanceof Element))return;_0x3afd22['matches']('.mermaid[data-mermaid-source]')&&_0x506205['add'](_0x3afd22),_0x3afd22['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a8011=>{_0x506205['add'](_0x3a8011);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x14119c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x198554=>setTimeout(_0x198554,0x0);_0x14119c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x37431b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x37431b);});});}function queueMermaidRender(_0x37465d){const _0x4ad636=new Set();_0x37465d instanceof Document||_0x37465d instanceof DocumentFragment?_0x37465d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x480212=>_0x4ad636['add'](_0x480212)):collectMermaidNodes(_0x37465d,_0x4ad636);if(_0x4ad636['size']===0x0)return;_0x4ad636['forEach'](_0x3b1c99=>pendingMermaidNodes['add'](_0x3b1c99)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xa53688=Array['from'](pendingMermaidNodes)['filter'](_0x255e4a=>_0x255e4a['isConnected']);pendingMermaidNodes['clear']();if(_0xa53688['length']===0x0)return;const _0x1e53e3=await loadMermaid();if(!_0x1e53e3)return;configureMermaidInstance();const _0x4d426c=getMermaidTheme();for(const _0x59ef9e of _0xa53688){const _0x231787=_0x59ef9e['getAttribute']('data-mermaid-source');if(!_0x231787)continue;const _0x572088=_0x59ef9e['getAttribute']('data-processed')==='true';if(_0x572088&&_0x59ef9e['dataset']['mermaidTheme']===_0x4d426c)continue;restoreMermaidSource(_0x59ef9e);try{if(typeof _0x1e53e3['run']==='function')await _0x1e53e3['run']({'nodes':[_0x59ef9e]});else typeof _0x1e53e3['init']==='function'&&_0x1e53e3['init'](undefined,[_0x59ef9e]);_0x59ef9e['dataset']['mermaidTheme']=_0x4d426c,delete _0x59ef9e['dataset']['mermaidError'];}catch(_0x3a7485){console['error']('Mermaid\x20render\x20failed:',_0x3a7485),restoreMermaidSource(_0x59ef9e),_0x59ef9e['dataset']['mermaidError']='true',delete _0x59ef9e['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x97308=>{_0x97308['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x97308);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b3ca0=>{_0x5b3ca0['forEach'](_0x458441=>{_0x458441['addedNodes']['forEach'](_0x5b0c92=>{_0x5b0c92['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5b0c92);});});}),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'(_0x138b82){const _0x8cedfc=new Date(_0x138b82),_0xd82a86=new Date(),_0x45bdbe=_0xd82a86-_0x8cedfc,_0x5e0d77=Math['floor'](_0x45bdbe/0x3e8),_0xd03d54=Math['floor'](_0x5e0d77/0x3c),_0xb7fdf8=Math['floor'](_0xd03d54/0x3c),_0x36a856=Math['floor'](_0xb7fdf8/0x18);if(_0x5e0d77<0x3c)return'now';if(_0xd03d54<0x3c)return _0xd03d54+'m\x20ago';if(_0xb7fdf8<0x18)return _0xb7fdf8+'h\x20ago';return _0x36a856+'d\x20ago';},'getStatusIcon'(_0x4a8f51){switch(_0x4a8f51){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x38da31){switch(_0x38da31){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'(_0x210d73,_0x3b6f2c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x44c29b={};_0x44c29b['text/plain']=new Blob([_0x210d73],{'type':'text/plain'});_0x3b6f2c&&(_0x44c29b['text/html']=new Blob([_0x3b6f2c],{'type':'text/html'}));const _0xd30f31=new ClipboardItem(_0x44c29b);return await navigator['clipboard']['write']([_0xd30f31]),!![];}catch(_0x174390){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x174390);}try{const _0x1696af=_0x2d973a=>{_0x2d973a['preventDefault'](),_0x2d973a['clipboardData']['setData']('text/plain',_0x210d73),_0x3b6f2c&&_0x2d973a['clipboardData']['setData']('text/html',_0x3b6f2c);};document['addEventListener']('copy',_0x1696af);const _0x50be4b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1696af);if(_0x50be4b)return!![];}catch(_0x175005){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x175005);}try{const _0x4dc4d1=document['createElement']('textarea');_0x4dc4d1['value']=_0x210d73,_0x4dc4d1['style']['position']='fixed',_0x4dc4d1['style']['opacity']='0',_0x4dc4d1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4dc4d1),_0x4dc4d1['select']();const _0x32a5ff=document['execCommand']('copy');return document['body']['removeChild'](_0x4dc4d1),_0x32a5ff;}catch(_0x55c1dd){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x55c1dd),![];}},'showToast'(_0x5a113e,_0x4068d3='info'){const _0x1d88a7=getNextToastId(),_0xed22c3=document['createElement']('div');_0xed22c3['className']='toast\x20toast-'+_0x4068d3,_0xed22c3['textContent']=_0x5a113e,_0xed22c3['dataset']['toastId']=_0x1d88a7,document['body']['appendChild'](_0xed22c3);const _0x28259c=_0x4068d3==='error'?0x2710:0xbb8,_0xda34c2=setTimeout(()=>{removeToastById(_0x1d88a7);},_0x28259c),_0x46e9b1={'id':_0x1d88a7,'el':_0xed22c3,'timeoutId':_0xda34c2};return registerToast(_0x46e9b1),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xed22c3['classList']['add']('show');});}),_0x1d88a7;},'showError'(_0x59eb54){console['error'](_0x59eb54);const _0x1d2d34=typeof _0x59eb54==='string'?_0x59eb54:_0x59eb54['message']||'An\x20error\x20occurred';this['showToast'](_0x1d2d34,'error');},'showSuccess'(_0x5f1f4d){this['showToast'](_0x5f1f4d,'success');},'capitalize'(_0xaec8f1){if(!_0xaec8f1)return'';return _0xaec8f1['charAt'](0x0)['toUpperCase']()+_0xaec8f1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54b85a){return escapeHtmlValue(_0x54b85a);},'ansiToHtml'(_0x35848e){if(_0x35848e===null||_0x35848e===undefined)return'';let _0x498c61=this['escapeHtml'](_0x35848e);const _0x44606b={'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'},_0x2c3299={'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 _0x5073a3=0x0;return _0x498c61=_0x498c61['replace'](/\x1b\[([0-9;]*)m/g,(_0x306611,_0x4734dc)=>{if(!_0x4734dc||_0x4734dc==='0'){const _0x32e20b='</span>'['repeat'](_0x5073a3);return _0x5073a3=0x0,_0x32e20b;}const _0x1af24e=_0x4734dc['split'](';'),_0x564c72=[];for(const _0x4ccb29 of _0x1af24e){if(_0x4ccb29==='1')_0x564c72['push']('font-weight:bold');else{if(_0x4ccb29==='2')_0x564c72['push']('opacity:0.7');else{if(_0x4ccb29==='3')_0x564c72['push']('font-style:italic');else{if(_0x4ccb29==='4')_0x564c72['push']('text-decoration:underline');else{if(_0x4ccb29==='9')_0x564c72['push']('text-decoration:line-through');else{if(_0x44606b[_0x4ccb29])_0x564c72['push']('color:'+_0x44606b[_0x4ccb29]);else{if(_0x2c3299[_0x4ccb29])_0x564c72['push']('background-color:'+_0x2c3299[_0x4ccb29]);}}}}}}}if(_0x564c72['length']>0x0)return _0x5073a3++,'<span\x20style=\x22'+_0x564c72['join'](';')+'\x22>';return'';}),_0x498c61+='</span>'['repeat'](_0x5073a3),_0x498c61=_0x498c61['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4177f9,_0x1d98f0)=>{if(!_0x1d98f0||_0x1d98f0==='0')return'';const _0x2d0512=_0x1d98f0['split'](';'),_0x491be5=[];for(const _0x5c6810 of _0x2d0512){if(_0x5c6810==='1')_0x491be5['push']('font-weight:bold');else{if(_0x44606b[_0x5c6810])_0x491be5['push']('color:'+_0x44606b[_0x5c6810]);else{if(_0x2c3299[_0x5c6810])_0x491be5['push']('background-color:'+_0x2c3299[_0x5c6810]);}}}if(_0x491be5['length']>0x0)return'<span\x20style=\x22'+_0x491be5['join'](';')+'\x22>';return'';}),_0x498c61;},'showModal'({title:_0x507932,content:_0x200215,buttons:buttons=[]}){const _0x30450d='\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'](_0x507932)+'</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'+_0x200215+'\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']((_0x527b08,_0xb35d2c)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x527b08['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xb35d2c+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x527b08['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',_0x4bfeb5=document['createElement']('div');_0x4bfeb5['id']='utils-modal',_0x4bfeb5['className']='modal',_0x4bfeb5['innerHTML']=_0x30450d,document['body']['appendChild'](_0x4bfeb5);const _0x1e4974=document['getElementById']('utils-modal-close');_0x1e4974&&_0x1e4974['addEventListener']('click',()=>this['hideModal']());const _0x55c083=_0x4bfeb5['querySelectorAll']('[data-btn-index]');_0x55c083['forEach'](_0x3be19d=>{const _0x1975fd=parseInt(_0x3be19d['dataset']['btnIndex']);buttons[_0x1975fd]?.['onClick']&&_0x3be19d['addEventListener']('click',buttons[_0x1975fd]['onClick']);});const _0xf53d2f=document['getElementById']('utils-modal-overlay');_0xf53d2f&&_0xf53d2f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29466a=document['getElementById']('utils-modal');_0x29466a&&_0x29466a['remove']();},'parseKeyValuePairs'(_0x417782){const _0x246833={};if(!_0x417782)return _0x246833;return _0x417782['split'](/\r?\n/)['map'](_0x2eaa35=>_0x2eaa35['trim']())['filter'](Boolean)['forEach'](_0x509555=>{const _0x23f9d2=_0x509555['indexOf']('=');if(_0x23f9d2>0x0){const _0xead946=_0x509555['slice'](0x0,_0x23f9d2)['trim'](),_0x23f0f2=_0x509555['slice'](_0x23f9d2+0x1)['trim']();if(_0xead946)_0x246833[_0xead946]=_0x23f0f2;}}),_0x246833;},'debounce'(_0x473757,_0x3e745b=0xfa){let _0x2c3dfd=null;return(..._0x4bbb51)=>{clearTimeout(_0x2c3dfd),_0x2c3dfd=setTimeout(()=>_0x473757['apply'](this,_0x4bbb51),_0x3e745b);};},'formatTimestamp'(_0x8ebf7c){if(!_0x8ebf7c)return'N/A';const _0x1e6262=new Date(_0x8ebf7c);return _0x1e6262['toLocaleDateString']()+'\x20'+_0x1e6262['toLocaleTimeString']();},'getQueryParams'(){const _0x5a5d75=new URLSearchParams(window['location']['search']),_0x509acc={};for(const [_0x27f3fe,_0x3368f4]of _0x5a5d75){_0x509acc[_0x27f3fe]=_0x3368f4;}return _0x509acc;},'formatDuration'(_0x191dce,_0x5ddd74){if(!_0x191dce)return'N/A';const _0x97e268=new Date(_0x191dce),_0x1639d3=_0x5ddd74?new Date(_0x5ddd74):new Date(),_0x481ff6=_0x1639d3-_0x97e268;if(_0x481ff6<0x0)return'0s';const _0x4fdbc9=Math['floor'](_0x481ff6/0x3e8),_0x56a6aa=Math['floor'](_0x4fdbc9/0x3c),_0x3ec545=Math['floor'](_0x56a6aa/0x3c),_0x7042f3=Math['floor'](_0x3ec545/0x18);if(_0x4fdbc9<0x3c)return _0x4fdbc9+'s';if(_0x56a6aa<0x3c)return _0x56a6aa+'m\x20'+_0x4fdbc9%0x3c+'s';if(_0x3ec545<0x18)return _0x3ec545+'h\x20'+_0x56a6aa%0x3c+'m\x20'+_0x4fdbc9%0x3c+'s';return _0x7042f3+'d\x20'+_0x3ec545%0x18+'h\x20'+_0x56a6aa%0x3c+'m';},'renderMarkdown'(_0x18713b,_0x231108={}){if(!_0x18713b)return'';_0x18713b=this['rewriteAttachmentLinks'](_0x18713b,_0x231108),_0x18713b=this['rewriteColorSyntax'](_0x18713b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x18713b,_0x231108);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x18713b);}catch(_0x15c280){return console['error']('Markdown\x20parsing\x20error:',_0x15c280),this['renderMarkdownFallback'](_0x18713b,_0x231108);}},'rewriteAttachmentLinks'(_0x2323bb,_0x18b555={}){const _0x2f1010=typeof _0x18b555['resolveAttachmentUrl']==='function'?_0x18b555['resolveAttachmentUrl']:_0x18b555['taskId']?_0x1c0dd4=>API_BASE+'/tasks/'+_0x18b555['taskId']+'/attachments/'+encodeURIComponent(_0x1c0dd4):null;if(!_0x2f1010)return _0x2323bb;return String(_0x2323bb)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x230b2b,_0x131976)=>{const _0x1e8301=String(_0x131976||'')['trim']();if(!_0x1e8301)return _0x230b2b;let _0x3ad8cb=_0x1e8301;try{_0x3ad8cb=decodeURIComponent(_0x1e8301);}catch{}const _0x1c8296=_0x2f1010(_0x3ad8cb);if(!_0x1c8296)return _0x230b2b;return']('+_0x1c8296+')';});},'rewriteColorSyntax'(_0x13a351){if(!_0x13a351)return _0x13a351;return String(_0x13a351)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x356d65,_0x51a7cc,_0x377fa4)=>{const _0x3def5c=this['rewriteColorSyntax'](_0x377fa4);return'<span\x20style=\x22color:\x20'+_0x51a7cc+'\x22>'+_0x3def5c+'</span>';});},'renderMarkdownFallback'(_0x297afa,_0x2d8d3e={}){if(!_0x297afa)return'';_0x297afa=_0x297afa['replace'](/\r\n/g,'\x0a'),_0x297afa=_0x297afa['replace'](/\r/g,'\x0a'),_0x297afa=this['rewriteAttachmentLinks'](_0x297afa,_0x2d8d3e);let _0x21e7cc=this['escapeHtml'](_0x297afa);return _0x21e7cc=_0x21e7cc['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x21e7cc=_0x21e7cc['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x21e7cc=_0x21e7cc['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x21e7cc=_0x21e7cc['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x21e7cc=_0x21e7cc['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x21e7cc=_0x21e7cc['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x21e7cc=_0x21e7cc['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x21e7cc=_0x21e7cc['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x21e7cc=_0x21e7cc['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x21e7cc=_0x21e7cc['replace'](/\n\n/g,'</p><p>'),_0x21e7cc=_0x21e7cc['replace'](/\n/g,'<br>'),'<p>'+_0x21e7cc+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x205afd=new Uint8Array(0x10);crypto['getRandomValues'](_0x205afd),_0x205afd[0x6]=_0x205afd[0x6]&0xf|0x40,_0x205afd[0x8]=_0x205afd[0x8]&0x3f|0x80;const _0x43c18f=Array['from'](_0x205afd,_0x3bb9b2=>_0x3bb9b2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x43c18f['slice'](0x0,0x8)+'-'+_0x43c18f['slice'](0x8,0xc)+'-'+_0x43c18f['slice'](0xc,0x10)+'-'+_0x43c18f['slice'](0x10,0x14)+'-'+_0x43c18f['slice'](0x14);}};export class CustomSelect{constructor(_0x57d27b,_0x31d8fb={}){this['nativeSelect']=_0x57d27b,this['options']=_0x31d8fb,this['isOpen']=![],this['selectedValue']=_0x57d27b['value']||'',this['searchable']=_0x31d8fb['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4780a4=document['createElement']('div');_0x4780a4['className']='custom-select';const _0x4e0379=document['createElement']('div');_0x4e0379['className']='custom-select-trigger',_0x4e0379['setAttribute']('tabindex','0'),_0x4e0379['setAttribute']('role','button'),_0x4e0379['setAttribute']('aria-haspopup','listbox');const _0x59d7ae=document['createElement']('span');_0x59d7ae['className']='custom-select-trigger-text';const _0x1343d0=document['createElement']('span');_0x1343d0['className']='custom-select-arrow',_0x1343d0['textContent']='▼',_0x4e0379['appendChild'](_0x59d7ae),_0x4e0379['appendChild'](_0x1343d0);const _0x63410d=document['createElement']('div');_0x63410d['className']='custom-select-dropdown',_0x63410d['setAttribute']('role','listbox');if(this['searchable']){const _0x1f1d73=document['createElement']('div');_0x1f1d73['className']='custom-select-search';const _0x350eff=document['createElement']('input');_0x350eff['type']='text',_0x350eff['className']='custom-select-search-input',_0x350eff['placeholder']='Type\x20to\x20search...',_0x350eff['setAttribute']('aria-label','Search\x20options'),_0x350eff['addEventListener']('input',_0x15d3f1=>{this['searchQuery']=_0x15d3f1['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x350eff['addEventListener']('keydown',_0x2e3405=>{if(_0x2e3405['key']==='Escape')_0x2e3405['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e3405['key']==='Enter'){_0x2e3405['preventDefault'](),_0x2e3405['stopPropagation']();const _0x416ab2=_0x63410d['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x416ab2){const _0x407b52=_0x416ab2['getAttribute']('data-value');this['select'](_0x407b52);}}}}),_0x1f1d73['appendChild'](_0x350eff),_0x63410d['appendChild'](_0x1f1d73),this['searchInput']=_0x350eff;}const _0x233cf9=document['createElement']('div');_0x233cf9['className']='custom-select-options',_0x63410d['appendChild'](_0x233cf9),_0x4780a4['appendChild'](_0x4e0379),_0x4780a4['appendChild'](_0x63410d),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4780a4,this['nativeSelect']),this['wrapper']=_0x4780a4,this['trigger']=_0x4e0379,this['triggerText']=_0x59d7ae,this['dropdown']=_0x63410d,this['optionsContainer']=_0x233cf9,_0x4e0379['addEventListener']('click',()=>this['toggle']()),_0x4e0379['addEventListener']('keydown',_0x4b868f=>this['handleKeydown'](_0x4b868f)),document['addEventListener']('click',_0x25c90c=>{!_0x4780a4['contains'](_0x25c90c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x59518e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x59518e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1c9220=new MutationObserver(()=>{this['updateDisabledState']();});_0x1c9220['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x16a0f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x16a0f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xf79a29=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xf79a29),this['trigger']['setAttribute']('aria-disabled',_0xf79a29?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xf79a29?'-1':'0'),_0xf79a29&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x300157=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x279f6e=_0x300157['filter'](_0xaea9b8=>!_0xaea9b8['disabled']&&!_0xaea9b8['hidden']);_0x300157['forEach']((_0x142d4a,_0x5c1206)=>{const _0x1803ba=document['createElement']('div');_0x1803ba['className']='custom-select-option',_0x1803ba['textContent']=_0x142d4a['textContent'],_0x1803ba['setAttribute']('data-value',_0x142d4a['value']),_0x1803ba['setAttribute']('data-index',_0x5c1206),_0x1803ba['setAttribute']('role','option'),_0x142d4a['disabled']?_0x1803ba['classList']['add']('disabled'):_0x1803ba['addEventListener']('click',()=>this['select'](_0x142d4a['value'])),_0x142d4a['value']===this['selectedValue']&&_0x1803ba['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1803ba),this['allOptions']['push']({'element':_0x1803ba,'text':_0x142d4a['textContent']['toLowerCase'](),'value':_0x142d4a['value'],'disabled':_0x142d4a['disabled']});});if(this['searchable']&&this['searchInput']){const _0x418652=this['searchInput']['parentElement'];_0x279f6e['length']>0x3?_0x418652['style']['display']='':_0x418652['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b4da6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x13d781=>{if(!_0x2b4da6||_0x13d781['disabled'])_0x13d781['element']['style']['display']='';else{const _0x4634d7=_0x13d781['text']['includes'](_0x2b4da6);_0x13d781['element']['style']['display']=_0x4634d7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x42563f){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x42563f,this['nativeSelect']['value']=_0x42563f;const _0xd88095=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xd88095),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d5f1b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d5f1b&&(this['triggerText']['textContent']=_0x1d5f1b['textContent'],_0x1d5f1b['disabled']||_0x1d5f1b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x53b74b=>{_0x53b74b['getAttribute']('data-value')===this['selectedValue']?_0x53b74b['classList']['add']('selected'):_0x53b74b['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 _0x25e476=window['getComputedStyle'](this['dropdown']);if(_0x25e476['position']==='fixed'){const _0x4c6410=this['trigger']['getBoundingClientRect'](),_0x5850c1=parseInt(_0x25e476['maxHeight'])||0xc8,_0x3249dd=window['innerHeight'],_0x4f5e5e=_0x3249dd-_0x4c6410['bottom'],_0x3d7138=_0x4c6410['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1c9be6;_0x4f5e5e<_0x5850c1&&_0x3d7138>_0x4f5e5e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3249dd-_0x4c6410['top']+'px',_0x1c9be6=Math['min'](_0x5850c1,_0x3d7138-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c6410['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1c9be6=Math['min'](_0x5850c1,_0x4f5e5e-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px');if(this['optionsContainer']){let _0x59945b=_0x1c9be6;if(this['searchInput']){const _0x16e6c1=this['searchInput']['parentElement'];_0x16e6c1&&(_0x59945b-=_0x16e6c1['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x59945b)+'px';}this['dropdown']['style']['left']=_0x4c6410['left']+'px',this['dropdown']['style']['width']=_0x4c6410['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4848d6=this['searchInput']['parentElement'];_0x4848d6&&_0x4848d6['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'](_0x261709){if(this['nativeSelect']['disabled'])return;if(_0x261709['key']==='Enter'||_0x261709['key']==='\x20')_0x261709['preventDefault'](),this['toggle']();else _0x261709['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3a49fa='\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',_0x3a49fa),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x24b3ea=document['getElementById']('confirm-dialog-close'),_0x15e9ff=document['getElementById']('confirm-dialog-cancel'),_0x1f2f0e=document['getElementById']('confirm-dialog-confirm'),_0x2324be=this['_modal']['querySelector']('.modal-overlay');_0x24b3ea['addEventListener']('click',()=>this['_resolve'](![])),_0x15e9ff['addEventListener']('click',()=>this['_resolve'](![])),_0x1f2f0e['addEventListener']('click',()=>this['_resolve'](!![])),_0x2324be['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x286240=>{if(_0x286240['key']==='Escape')_0x286240['preventDefault'](),this['_resolve'](![]);else _0x286240['key']==='Enter'&&(_0x286240['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1deb22,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x255fdf=>{this['_resolvePromise']=_0x255fdf,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1deb22;const _0x52e0dc=document['getElementById']('confirm-dialog-cancel'),_0x17476a=document['getElementById']('confirm-dialog-confirm');_0x52e0dc['textContent']=cancelText,_0x17476a['textContent']=confirmText,_0x17476a['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x17476a['focus']();});},'_resolve'(_0x1b9d1b){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b9d1b),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x369a3e,_0x26a9e0={}){this['container']=_0x369a3e,this['options']={'placeholder':_0x26a9e0['placeholder']||'Type\x20to\x20search...','maxItems':_0x26a9e0['maxItems']||0x64,'loadItems':_0x26a9e0['loadItems']||(async()=>[]),'renderItem':_0x26a9e0['renderItem']||(_0x386177=>({'primary':String(_0x386177),'secondary':''})),'onSelect':_0x26a9e0['onSelect']||(()=>{}),'filterItems':_0x26a9e0['filterItems']||null,'getItemValue':_0x26a9e0['getItemValue']||(_0x58f63f=>_0x58f63f),'sortItems':_0x26a9e0['sortItems']||null,'debounceMs':_0x26a9e0['debounceMs']||0xc8,'minCharsForSearch':_0x26a9e0['minCharsForSearch']||0x0,'emptyMessage':_0x26a9e0['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x26a9e0['loadingMessage']||'Loading...','preload':_0x26a9e0['preload']!==![],'searchMode':_0x26a9e0['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',_0x3746d1=>this['onBlur'](_0x3746d1)),this['input']['addEventListener']('input',_0x54c01b=>this['onInput'](_0x54c01b)),this['input']['addEventListener']('keydown',_0x9ea724=>this['onKeydown'](_0x9ea724)),this['clearBtn']['addEventListener']('mousedown',_0x2bb166=>{_0x2bb166['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25361f=>{_0x25361f['preventDefault']();}),document['addEventListener']('click',_0x3786cf=>{!this['wrapper']['contains'](_0x3786cf['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(_0x38412e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x38412e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x20a060){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5e938e){const _0x18a280=_0x5e938e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x18a280);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x18a280):this['loadAndShow'](_0x18a280);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x35be46){switch(_0x35be46['key']){case'ArrowDown':_0x35be46['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x35be46['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x35be46['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x35be46['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x45f072){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x25c9f5=this['selectedIndex']+_0x45f072;if(_0x25c9f5>=0x0&&_0x25c9f5<this['filteredItems']['length']){this['selectedIndex']=_0x25c9f5,this['updateSelectionHighlight']();const _0x2cc322=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2cc322[this['selectedIndex']]&&_0x2cc322[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x138e33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x138e33['forEach']((_0x528cd7,_0x45221f)=>{_0x528cd7['classList']['toggle']('keyboard-selected',_0x45221f===this['selectedIndex']);});}async['loadAndShow'](_0xc7f594){this['showLoading']();try{const _0x52e810=await this['options']['loadItems'](_0xc7f594);if(this['options']['searchMode']==='server'){let _0x3fb20e=_0x52e810;this['options']['sortItems']&&(_0x3fb20e=this['options']['sortItems']([..._0x52e810]));this['filteredItems']=_0x3fb20e;const _0x2aa222=this['filteredItems']['length']>=this['options']['maxItems'];_0x2aa222&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2aa222),this['open']();}else this['allItems']=_0x52e810,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0xc7f594);}catch(_0xc8f0a3){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0xc8f0a3),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x424367){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x424367):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x31679b=this['filteredItems']['length']>=this['options']['maxItems'];_0x31679b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x31679b),this['open']();}['renderItems'](_0x32dce1){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']((_0x54dc00,_0x429d6a)=>{const _0x1b04e1=document['createElement']('div');_0x1b04e1['className']='autocomplete-select-item',_0x1b04e1['setAttribute']('role','option'),_0x1b04e1['setAttribute']('data-index',_0x429d6a);const _0x596f29=this['options']['renderItem'](_0x54dc00);let _0x148dd9='';_0x596f29['icon']&&(_0x148dd9='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x596f29['iconClass']||'')+'\x22>'+_0x596f29['icon']+'</span>'),_0x1b04e1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x148dd9+'\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'](_0x596f29['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x596f29['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x596f29['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1b04e1['addEventListener']('click',()=>{this['selectItem'](_0x54dc00);}),_0x1b04e1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x429d6a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1b04e1);}),_0x32dce1?(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'](_0x470dd2){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x470dd2)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x11a3ea){this['selectedItem']=_0x11a3ea;const _0x5d2e22=this['options']['renderItem'](_0x11a3ea);this['input']['value']=_0x5d2e22['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x11a3ea);}['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'](_0x482f44){if(_0x482f44){this['selectedItem']=_0x482f44;const _0x3737d8=this['options']['renderItem'](_0x482f44);this['input']['value']=_0x3737d8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4e9747){this['allItems']=_0x4e9747,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'](_0x9eb395){this['input']['placeholder']=_0x9eb395;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x404e93=null){const _0x9bedce=document['getElementById']('admin-menu-container'),_0x13efff=document['getElementById']('admin-menu-btn'),_0x1cb969=document['getElementById']('admin-menu');if(!_0x9bedce||!_0x13efff||!_0x1cb969)return;try{!_0x404e93&&(_0x404e93=await API['getCurrentUser']());if(_0x404e93){const _0x4cddeb=window['Permissions'],_0x54e846=_0x4cddeb['hasServerPermission'](_0x404e93,'*')||_0x4cddeb['hasEnvPermission'](_0x404e93,'environments:manage')||_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')||_0x4cddeb['hasTeamPermission'](_0x404e93,'teams:manage')||_0x4cddeb['hasAnyEnvironment'](_0x404e93);if(!_0x54e846)return;_0x9bedce['hidden']=![];if(!_0x4cddeb['hasServerPermission'](_0x404e93,'*')){const _0x51cc15=_0x1cb969['querySelectorAll']('.admin-menu-item');_0x51cc15['forEach'](_0x2396e7=>{const _0x65a0ed=_0x2396e7['querySelector']('.option-text')?.['textContent']?.['trim']();_0x65a0ed==='Users'&&!_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Skills'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Settings'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Health'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Git\x20History'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Roles'&&(_0x2396e7['hidden']=!![]);});}_0x13efff['addEventListener']('click',_0x35569c=>{_0x35569c['stopPropagation']();const _0x2830a9=document['getElementById']('actions-menu');if(_0x2830a9)_0x2830a9['hidden']=!![];_0x1cb969['hidden']=!_0x1cb969['hidden'];}),document['addEventListener']('click',_0x13ffa8=>{!_0x1cb969['hidden']&&!_0x13efff['contains'](_0x13ffa8['target'])&&!_0x1cb969['contains'](_0x13ffa8['target'])&&(_0x1cb969['hidden']=!![]);}),document['addEventListener']('keydown',_0x3ab3a5=>{_0x3ab3a5['key']==='Escape'&&!_0x1cb969['hidden']&&(_0x1cb969['hidden']=!![]);});const _0x571e4c=document['getElementById']('server-health-btn');_0x571e4c&&_0x571e4c['addEventListener']('click',async()=>{_0x1cb969['hidden']=!![];const {openServerHealthModal:_0x2e022e}=await import('./server-health.js');_0x2e022e();});}}catch(_0x1a0c69){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1a0c69['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 _0xd86007=window['location']['pathname'],_0x1e0ab6=_0xd86007['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1e0ab6)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1e0ab6[0x1]),_0x1e0ab6[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4eb96e={}){const _0x3889b0=new URLSearchParams();_0x4eb96e['userId']&&_0x3889b0['set']('userId',String(_0x4eb96e['userId']));_0x4eb96e['automation']&&_0x3889b0['set']('automation',String(_0x4eb96e['automation']));const _0x351746=API_BASE+'/tasks/stats'+(_0x3889b0['toString']()?'?'+_0x3889b0['toString']():''),_0x1fb0e9=await fetch(_0x351746);if(!_0x1fb0e9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1fb0e9['statusText']);return await _0x1fb0e9['json']();},async 'getTasks'(_0x23187f={}){const _0x2a6129=new URLSearchParams();_0x23187f['status']&&_0x2a6129['set']('status',String(_0x23187f['status']));_0x23187f['environment']&&_0x2a6129['set']('environment',String(_0x23187f['environment']));_0x23187f['automation']&&_0x2a6129['set']('automation',String(_0x23187f['automation']));if(_0x23187f['include']){const _0x407284=Array['isArray'](_0x23187f['include'])?_0x23187f['include']['join'](','):String(_0x23187f['include']);_0x407284&&_0x2a6129['set']('include',_0x407284);}_0x23187f['filter']&&_0x2a6129['set']('filter',String(_0x23187f['filter']));_0x23187f['page']&&_0x2a6129['set']('page',String(_0x23187f['page']));_0x23187f['limit']&&_0x2a6129['set']('limit',String(_0x23187f['limit']));_0x23187f['userId']&&_0x2a6129['set']('userId',String(_0x23187f['userId']));_0x23187f['search']&&_0x2a6129['set']('search',String(_0x23187f['search']));_0x23187f['includeChildTasks']&&_0x2a6129['set']('includeChildTasks','true');const _0x161e56=API_BASE+'/tasks'+(_0x2a6129['toString']()?'?'+_0x2a6129['toString']():''),_0x28a52a=await fetch(_0x161e56);if(!_0x28a52a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x28a52a['statusText']);return await _0x28a52a['json']();},async 'getAutomations'(_0x55de9a={}){const _0x27a6b5=new URLSearchParams();_0x55de9a['environment']&&_0x27a6b5['set']('environment',String(_0x55de9a['environment']));const _0x267204=await fetch(API_BASE+'/api/automations'+(_0x27a6b5['toString']()?'?'+_0x27a6b5['toString']():''));if(!_0x267204['ok']){const _0x2bc365=await _0x267204['json']()['catch'](()=>({}));throw new Error(_0x2bc365['message']||_0x2bc365['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x267204['statusText']);}return await _0x267204['json']();},async 'getAutomation'(_0x235f1d){const _0x239ee6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235f1d));if(!_0x239ee6['ok']){const _0x2e07c2=await _0x239ee6['json']()['catch'](()=>({}));throw new Error(_0x2e07c2['message']||_0x2e07c2['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x239ee6['statusText']);}return await _0x239ee6['json']();},async 'createAutomation'(_0x39b233){const _0x43332b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39b233||{})});if(!_0x43332b['ok']){const _0x19709b=await _0x43332b['json']()['catch'](()=>({}));throw new Error(_0x19709b['message']||_0x19709b['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x43332b['statusText']);}return await _0x43332b['json']();},async 'updateAutomation'(_0x3930bd,_0x29afa5){const _0x90f734=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3930bd),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29afa5||{})});if(!_0x90f734['ok']){const _0x56f6d3=await _0x90f734['json']()['catch'](()=>({}));throw new Error(_0x56f6d3['message']||_0x56f6d3['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x90f734['statusText']);}return await _0x90f734['json']();},async 'deleteAutomation'(_0x350957){const _0x12a6f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x350957),{'method':'DELETE'});if(!_0x12a6f1['ok']){const _0x3f86ce=await _0x12a6f1['json']()['catch'](()=>({}));throw new Error(_0x3f86ce['message']||_0x3f86ce['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12a6f1['statusText']);}return await _0x12a6f1['json']();},async 'triggerAutomation'(_0xa685a7){const _0x52e777=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa685a7)+'/trigger',{'method':'POST'});if(!_0x52e777['ok']){const _0x389214=await _0x52e777['json']()['catch'](()=>({}));throw new Error(_0x389214['message']||_0x389214['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x52e777['statusText']);}return await _0x52e777['json']();},async 'setAutomationEnabled'(_0x1498ef,_0x5f9694){const _0x2eb172=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1498ef)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5f9694})});if(!_0x2eb172['ok']){const _0x3bcad0=await _0x2eb172['json']()['catch'](()=>({}));throw new Error(_0x3bcad0['message']||_0x3bcad0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x2eb172['statusText']);}return await _0x2eb172['json']();},async 'getAutomationHistory'(_0x258817,_0x4e6728=0x32){const _0x545266=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x258817)+'/history?limit='+encodeURIComponent(String(_0x4e6728)));if(!_0x545266['ok']){const _0x1f5e9c=await _0x545266['json']()['catch'](()=>({}));throw new Error(_0x1f5e9c['message']||_0x1f5e9c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x545266['statusText']);}return await _0x545266['json']();},async 'getTask'(_0x3ca4f8,_0x906524={}){const _0x4d0baa=new URLSearchParams();if(_0x906524['include']){const _0x5e0d45=Array['isArray'](_0x906524['include'])?_0x906524['include']['join'](','):String(_0x906524['include']);if(_0x5e0d45)_0x4d0baa['set']('include',_0x5e0d45);}const _0x1cd076=await fetch(API_BASE+'/tasks/'+_0x3ca4f8+(_0x4d0baa['toString']()?'?'+_0x4d0baa['toString']():''));if(!_0x1cd076['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1cd076['statusText']);return await _0x1cd076['json']();},async 'getTaskResults'(_0x3bcb2d){const _0x2a11a2=await fetch(API_BASE+'/tasks/'+_0x3bcb2d+'/results');if(!_0x2a11a2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a11a2['statusText']);return await _0x2a11a2['json']();},async 'getTaskPatches'(_0x4eede9){const _0x1e7bda=await fetch(API_BASE+'/tasks/'+_0x4eede9+'/patches');if(!_0x1e7bda['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1e7bda['statusText']);return await _0x1e7bda['json']();},async 'getTaskAttachments'(_0x4db3cc){const _0x361a24=await fetch(API_BASE+'/tasks/'+_0x4db3cc+'/attachments');if(!_0x361a24['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x361a24['statusText']);return await _0x361a24['json']();},async 'uploadAttachments'(_0x59f4b3,_0x4c3265){const _0x374600=new FormData();for(const _0x4ca9b2 of _0x4c3265){_0x374600['append']('attachments',_0x4ca9b2);}const _0x331eee=await fetch(API_BASE+'/tasks/'+_0x59f4b3+'/attachments',{'method':'POST','body':_0x374600});if(!_0x331eee['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x331eee['statusText']);return await _0x331eee['json']();},async 'isAINameGenerationAvailable'(){try{const _0x77f736=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x77f736['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x77f736['json']();}catch(_0x49b0c6){return{'available':![],'reason':_0x49b0c6['message']};}},async 'generateTaskName'(_0x396759){try{const _0x2571ea=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x396759})});return await _0x2571ea['json']();}catch(_0x473e9e){return{'success':![],'error':_0x473e9e['message']};}},async 'createTask'(_0xcd3da1){let _0x52538d,_0x1331a9={};if(_0xcd3da1['files']&&_0xcd3da1['files']['length']>0x0){const _0x59728b=new FormData();for(const [_0x10b937,_0x7f35f6]of Object['entries'](_0xcd3da1)){if(_0x10b937!=='files'){if(_0x7f35f6==null)continue;typeof _0x7f35f6==='object'?_0x59728b['append'](_0x10b937,JSON['stringify'](_0x7f35f6)):_0x59728b['append'](_0x10b937,String(_0x7f35f6));}}for(const _0x298d96 of _0xcd3da1['files']){_0x59728b['append']('attachments',_0x298d96);}_0x52538d=_0x59728b;}else _0x1331a9['Content-Type']='application/json',_0x52538d=JSON['stringify'](_0xcd3da1);const _0x15e7d3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x1331a9,'body':_0x52538d});if(!_0x15e7d3['ok']){const _0xf2c2=await _0x15e7d3['json'](),_0x1ef7be=new Error(_0xf2c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x15e7d3['statusText']),{message:_0x5807ed,..._0x52e880}=_0xf2c2;Object['assign'](_0x1ef7be,_0x52e880);throw _0x1ef7be;}return await _0x15e7d3['json']();},async 'createTestTask'(_0x4bc59d){const _0x5ef106=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc59d)});if(!_0x5ef106['ok']){const _0x509251=await _0x5ef106['json']();throw new Error(_0x509251['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5ef106['statusText']);}return await _0x5ef106['json']();},async 'createEphemeralTest'(_0x285e4a){const _0x180b1c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285e4a)});if(!_0x180b1c['ok']){const _0x9d4199=await _0x180b1c['json']();throw new Error(_0x9d4199['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x180b1c['statusText']);}return await _0x180b1c['json']();},async 'createDeployTask'(_0x44f50b){const _0x12a5e3=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44f50b)});if(!_0x12a5e3['ok']){const _0x27e48d=await _0x12a5e3['json']();throw new Error(_0x27e48d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x12a5e3['statusText']);}return await _0x12a5e3['json']();},async 'getEnvironments'(){const _0x2641d8=await fetch(API_BASE+'/environments');if(!_0x2641d8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2641d8['statusText']);return await _0x2641d8['json']();},async 'getEnvironment'(_0x12295b){const _0x306e60=await fetch(API_BASE+'/environments/'+_0x12295b);if(!_0x306e60['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x306e60['statusText']);return await _0x306e60['json']();},async 'getEnvironmentRepoHistory'(_0x15c2d0,_0x5050b7,_0x203522={}){if(!_0x15c2d0||!_0x5050b7)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3bd83f=new URLSearchParams();if(_0x203522['limit'])_0x3bd83f['set']('limit',String(_0x203522['limit']));if(_0x203522['offset'])_0x3bd83f['set']('offset',String(_0x203522['offset']));if(_0x203522['search'])_0x3bd83f['set']('search',String(_0x203522['search']));if(_0x203522['branch'])_0x3bd83f['set']('branch',String(_0x203522['branch']));const _0x4b1ddf=API_BASE+'/environments/'+encodeURIComponent(_0x15c2d0)+'/repos/'+encodeURIComponent(_0x5050b7)+'/git/history',_0x3c9b6c=await fetch(''+_0x4b1ddf+(_0x3bd83f['toString']()?'?'+_0x3bd83f['toString']():''));if(!_0x3c9b6c['ok']){const _0x476105=await _0x3c9b6c['json']()['catch'](()=>({}));throw new Error(_0x476105['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3c9b6c['statusText']);}return await _0x3c9b6c['json']();},async 'getEnvironmentRepoCommit'(_0x212f31,_0x3e9529,_0x2ae462){if(!_0x212f31||!_0x3e9529||!_0x2ae462)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xb6d515=API_BASE+'/environments/'+encodeURIComponent(_0x212f31)+'/repos/'+encodeURIComponent(_0x3e9529)+'/git/commits/'+encodeURIComponent(_0x2ae462),_0x5288b1=await fetch(_0xb6d515);if(!_0x5288b1['ok']){const _0x181b1a=await _0x5288b1['json']()['catch'](()=>({}));throw new Error(_0x181b1a['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5288b1['statusText']);}return await _0x5288b1['json']();},async 'getEnvironmentRepoBranches'(_0x58757c,_0x4e8bed){if(!_0x58757c||!_0x4e8bed)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1352a1=API_BASE+'/environments/'+encodeURIComponent(_0x58757c)+'/repos/'+encodeURIComponent(_0x4e8bed)+'/git/branches',_0x5053c2=await fetch(_0x1352a1);if(!_0x5053c2['ok']){const _0x2d5285=await _0x5053c2['json']()['catch'](()=>({}));throw new Error(_0x2d5285['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x5053c2['statusText']);}return await _0x5053c2['json']();},async 'revertEnvironmentRepoCommit'(_0x241f26,_0xb95a51,_0xeb8648,_0x3920a2={}){if(!_0x241f26||!_0xb95a51||!_0xeb8648)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e9011=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x241f26)+'/repos/'+encodeURIComponent(_0xb95a51)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xeb8648,..._0x3920a2})});if(!_0x5e9011['ok']){const _0x443875=await _0x5e9011['json']()['catch'](()=>({}));throw new Error(_0x443875['message']||_0x443875['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e9011['statusText']);}return await _0x5e9011['json']();},async 'getTemplates'(_0x20fcb7={}){const _0xcd9c2f=new URLSearchParams();if(_0x20fcb7['include']){const _0x345e68=Array['isArray'](_0x20fcb7['include'])?_0x20fcb7['include']['join'](','):String(_0x20fcb7['include']);if(_0x345e68)_0xcd9c2f['set']('include',_0x345e68);}const _0x480439=await fetch(API_BASE+'/templates'+(_0xcd9c2f['toString']()?'?'+_0xcd9c2f['toString']():''));if(!_0x480439['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x480439['statusText']);return await _0x480439['json']();},async 'getTemplatesForEnvironment'(_0x19f7b5,_0x3eb534={}){if(!_0x19f7b5)throw new Error('Environment\x20name\x20is\x20required');const _0x528c7c=new URLSearchParams();if(_0x3eb534['include']){const _0xb2b8dc=Array['isArray'](_0x3eb534['include'])?_0x3eb534['include']['join'](','):String(_0x3eb534['include']);if(_0xb2b8dc)_0x528c7c['set']('include',_0xb2b8dc);}const _0x4bc96e=await fetch(API_BASE+'/templates/'+_0x19f7b5+(_0x528c7c['toString']()?'?'+_0x528c7c['toString']():''));if(!_0x4bc96e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x19f7b5+':\x20'+_0x4bc96e['statusText']);return await _0x4bc96e['json']();},async 'getTemplate'(_0x3ddf73,_0x4c331a,_0x3f446e={}){if(!_0x3ddf73||!_0x4c331a)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x46d0f7=new URLSearchParams();if(_0x3f446e['include']){const _0x51c450=Array['isArray'](_0x3f446e['include'])?_0x3f446e['include']['join'](','):String(_0x3f446e['include']);if(_0x51c450)_0x46d0f7['set']('include',_0x51c450);}const _0x4dd2bc=await fetch(API_BASE+'/templates/'+_0x3ddf73+'/'+_0x4c331a+(_0x46d0f7['toString']()?'?'+_0x46d0f7['toString']():''));if(!_0x4dd2bc['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4dd2bc['statusText']);return await _0x4dd2bc['json']();},async 'getTaskLogs'(_0x4a905c,_0x53a357={}){if(!_0x4a905c)throw new Error('Task\x20ID\x20is\x20required');const _0x48739d=new URLSearchParams();_0x53a357['tail']&&_0x48739d['set']('tail',String(_0x53a357['tail']));const _0x662b63=await fetch(API_BASE+'/tasks/'+_0x4a905c+'/logs'+(_0x48739d['toString']()?'?'+_0x48739d['toString']():''));if(!_0x662b63['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x662b63['statusText']);return await _0x662b63['text']();},async 'getContainers'(){const _0x1bab0f=await fetch(API_BASE+'/containers');if(!_0x1bab0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1bab0f['statusText']);return await _0x1bab0f['json']();},async 'getContainer'(_0x4d0e7b){const _0x588e27=await fetch(API_BASE+'/containers/'+_0x4d0e7b);if(!_0x588e27['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x588e27['statusText']);return await _0x588e27['json']();},async 'startInteractiveContainer'(_0x3e5ff1){const _0xa582bc=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e5ff1)});if(!_0xa582bc['ok']){const _0x524d74=await _0xa582bc['json']()['catch'](()=>({}));throw new Error(_0x524d74['message']||'Failed\x20to\x20start\x20container:\x20'+_0xa582bc['statusText']);}return await _0xa582bc['json']();},async 'stopContainer'(_0x340fad){const _0x5547b4=await fetch(API_BASE+'/containers/'+_0x340fad,{'method':'DELETE'});if(!_0x5547b4['ok']){const _0x16aa49=await _0x5547b4['json']()['catch'](()=>({}));throw new Error(_0x16aa49['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5547b4['statusText']);}return await _0x5547b4['json']();},async 'stopTask'(_0x29947d){if(!_0x29947d)throw new Error('Task\x20ID\x20is\x20required');const _0x3ca9ea=await fetch(API_BASE+'/tasks/'+_0x29947d+'/stop',{'method':'POST'});if(!_0x3ca9ea['ok']){const _0x4a2ff6=await _0x3ca9ea['json']()['catch'](()=>({}));throw new Error(_0x4a2ff6['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x3ca9ea['statusText']);}return await _0x3ca9ea['json']();},async 'interruptTask'(_0x2ba5af){if(!_0x2ba5af)throw new Error('Task\x20ID\x20is\x20required');const _0x2af139=await fetch(API_BASE+'/tasks/'+_0x2ba5af+'/interrupt',{'method':'POST'});if(!_0x2af139['ok']){const _0xf649df=await _0x2af139['json']()['catch'](()=>({}));throw new Error(_0xf649df['error']||_0xf649df['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2af139['statusText']);}return await _0x2af139['json']();},async 'startTask'(_0x4acd5c){if(!_0x4acd5c)throw new Error('Task\x20ID\x20is\x20required');const _0x567221=await fetch(API_BASE+'/tasks/'+_0x4acd5c+'/start',{'method':'POST'});if(!_0x567221['ok']){const _0x2a7826=await _0x567221['json']()['catch'](()=>({}));throw new Error(_0x2a7826['error']||'Failed\x20to\x20start\x20task:\x20'+_0x567221['statusText']);}return await _0x567221['json']();},async 'deleteTask'(_0xa166c2){if(!_0xa166c2)throw new Error('Task\x20ID\x20is\x20required');const _0x3dc35a=await fetch(API_BASE+'/tasks/'+_0xa166c2,{'method':'DELETE'});if(!_0x3dc35a['ok']){const _0x513861=await _0x3dc35a['json']()['catch'](()=>({}));throw new Error(_0x513861['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x3dc35a['statusText']);}return await _0x3dc35a['json']();},async 'refreshTasksFromDisk'(){const _0x552a98=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x552a98['ok']){const _0x3ed662=await _0x552a98['json']()['catch'](()=>({}));throw new Error(_0x3ed662['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x552a98['statusText']);}return await _0x552a98['json']();},async 'approveTask'(_0x2867ab,_0x4de840={}){if(!_0x2867ab)throw new Error('Task\x20ID\x20is\x20required');const _0x386879={'commit_message':_0x4de840['commit_message']||'','pull':_0x4de840['pull']??![],'push':_0x4de840['push']??![]};_0x4de840['new_branch']&&(_0x386879['new_branch']=_0x4de840['new_branch']);const _0x38cc83=await fetch(API_BASE+'/tasks/'+_0x2867ab+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x386879)});if(!_0x38cc83['ok']){const _0x1e0b3f=await _0x38cc83['json']()['catch'](()=>({}));let _0x45deb7=_0x1e0b3f['error']||_0x1e0b3f['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x38cc83['statusText'];if(_0x1e0b3f['results']&&Array['isArray'](_0x1e0b3f['results'])){const _0x13e7c1=_0x1e0b3f['results']['filter'](_0xd0f91b=>!_0xd0f91b['success']&&_0xd0f91b['error']);_0x13e7c1['length']>0x0&&(_0x45deb7=_0x13e7c1[0x0]['error']);}throw new Error(_0x45deb7);}return await _0x38cc83['json']();},async 'getPullRequestInfo'(_0x2553b6){if(!_0x2553b6)throw new Error('Task\x20ID\x20is\x20required');const _0x593826=await fetch(API_BASE+'/tasks/'+_0x2553b6+'/pull-request-info');if(!_0x593826['ok']){const _0x370ba3=await _0x593826['json']()['catch'](()=>({}));throw new Error(_0x370ba3['error']||_0x370ba3['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x593826['statusText']);}return await _0x593826['json']();},async 'createPullRequests'(_0xfa1a3f,_0x393d24){if(!_0xfa1a3f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x393d24||!Array['isArray'](_0x393d24))throw new Error('repos\x20array\x20is\x20required');const _0x18ab36=await fetch(API_BASE+'/tasks/'+_0xfa1a3f+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x393d24})});if(!_0x18ab36['ok']){const _0x5114ab=await _0x18ab36['json']()['catch'](()=>({}));let _0x18bb02=_0x5114ab['error']||_0x5114ab['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x18ab36['statusText'];if(_0x5114ab['results']&&Array['isArray'](_0x5114ab['results'])){const _0xd7c49b=_0x5114ab['results']['filter'](_0x3801e8=>!_0x3801e8['success']&&_0x3801e8['error']);_0xd7c49b['length']>0x0&&(_0x18bb02=_0xd7c49b[0x0]['error']);}throw new Error(_0x18bb02);}return await _0x18ab36['json']();},async 'syncRepos'(_0xb43c36){if(!_0xb43c36)throw new Error('Task\x20ID\x20is\x20required');const _0x4a76aa=await fetch(API_BASE+'/tasks/'+_0xb43c36+'/sync-repos',{'method':'POST'});if(!_0x4a76aa['ok']){const _0x4e0d7b=await _0x4a76aa['json']()['catch'](()=>({}));throw new Error(_0x4e0d7b['error']||_0x4e0d7b['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4a76aa['statusText']);}return await _0x4a76aa['json']();},async 'getIbmiSyncInfo'(_0x25ab83){if(!_0x25ab83)throw new Error('Task\x20ID\x20is\x20required');const _0x208e08=await fetch(API_BASE+'/tasks/'+_0x25ab83+'/ibmi-sync-info');if(!_0x208e08['ok']){const _0x362189=await _0x208e08['json']()['catch'](()=>({}));throw new Error(_0x362189['error']||_0x362189['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x208e08['json']();},async 'getSyncFiles'(_0x3df87c){if(!_0x3df87c)throw new Error('Task\x20ID\x20is\x20required');const _0x11cc09=await fetch(API_BASE+'/tasks/'+_0x3df87c+'/sync-to-ibmi/files');if(!_0x11cc09['ok']){const _0x36f434=await _0x11cc09['json']()['catch'](()=>({}));throw new Error(_0x36f434['error']||_0x36f434['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x11cc09['json']();},async 'syncToIbmi'(_0x433e1f,_0x218d16,_0xc26911=null,_0x57735f=null,_0x24ecd9=null){if(!_0x433e1f)throw new Error('Task\x20ID\x20is\x20required');const _0x21857a={'library':_0x218d16};if(_0xc26911)_0x21857a['user']=_0xc26911;if(_0x57735f)_0x21857a['password']=_0x57735f;if(_0x24ecd9)_0x21857a['files']=_0x24ecd9;const _0xcf8f20=await fetch(API_BASE+'/tasks/'+_0x433e1f+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21857a)});if(!_0xcf8f20['ok']){const _0x3a8072=await _0xcf8f20['json']()['catch'](()=>({}));throw new Error(_0x3a8072['error']||_0x3a8072['message']||'Sync\x20failed');}return await _0xcf8f20['json']();},async 'getIbmiSyncLog'(_0x321450){if(!_0x321450)throw new Error('Task\x20ID\x20is\x20required');const _0x57ebd3=await fetch(API_BASE+'/tasks/'+_0x321450+'/ibmi-sync-log');if(!_0x57ebd3['ok']){const _0x3347d9=await _0x57ebd3['json']()['catch'](()=>({}));throw new Error(_0x3347d9['error']||_0x3347d9['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x57ebd3['json']();},async 'pullChanges'(_0x3c483c){if(!_0x3c483c)throw new Error('Task\x20ID\x20is\x20required');const _0x54ffc7=await fetch(API_BASE+'/tasks/'+_0x3c483c+'/pull-changes',{'method':'POST'});if(!_0x54ffc7['ok']){const _0x34b22a=await _0x54ffc7['json']()['catch'](()=>({}));throw new Error(_0x34b22a['error']||_0x34b22a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x54ffc7['statusText']);}return await _0x54ffc7['json']();},async 'readFile'(_0x5301f8,_0x41449a){if(!_0x5301f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41449a)throw new Error('File\x20path\x20is\x20required');const _0xa3a73c=await fetch(API_BASE+'/tasks/'+_0x5301f8+'/files?path='+encodeURIComponent(_0x41449a));if(!_0xa3a73c['ok']){const _0x3fcc65=await _0xa3a73c['json']()['catch'](()=>({}));throw new Error(_0x3fcc65['error']||_0x3fcc65['message']||'Failed\x20to\x20read\x20file:\x20'+_0xa3a73c['statusText']);}return await _0xa3a73c['json']();},'getTaskFileDownloadUrl'(_0x262e72,_0x5b22cb){if(!_0x262e72)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b22cb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x262e72+'/files/download?path='+encodeURIComponent(_0x5b22cb);},async 'writeFile'(_0xd01df3,_0x3a558b,_0x24b22f){if(!_0xd01df3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a558b)throw new Error('File\x20path\x20is\x20required');if(_0x24b22f===undefined)throw new Error('Content\x20is\x20required');const _0x3b1733=await fetch(API_BASE+'/tasks/'+_0xd01df3+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a558b,'content':_0x24b22f})});if(!_0x3b1733['ok']){const _0x439b78=await _0x3b1733['json']()['catch'](()=>({}));throw new Error(_0x439b78['error']||_0x439b78['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3b1733['statusText']);}return await _0x3b1733['json']();},async 'uploadTaskFiles'(_0x43f838,_0x1409a0,_0x518534){if(!_0x43f838)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1409a0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x518534||_0x518534['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x561af4=new FormData();_0x561af4['append']('targetDir',_0x1409a0);for(const _0x35a8b5 of _0x518534){_0x561af4['append']('files',_0x35a8b5,_0x35a8b5['name']);}const _0x1b5daf=await fetch(API_BASE+'/tasks/'+_0x43f838+'/files/upload',{'method':'POST','body':_0x561af4});if(!_0x1b5daf['ok']){const _0x5688aa=await _0x1b5daf['json']()['catch'](()=>({}));throw new Error(_0x5688aa['error']||_0x5688aa['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1b5daf['statusText']);}return await _0x1b5daf['json']();},async 'deleteFile'(_0x2e134a,_0x452cef){if(!_0x2e134a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x452cef)throw new Error('File\x20path\x20is\x20required');const _0x434cd2=await fetch(API_BASE+'/tasks/'+_0x2e134a+'/files?path='+encodeURIComponent(_0x452cef),{'method':'DELETE'});if(!_0x434cd2['ok']){const _0x43a47b=await _0x434cd2['json']()['catch'](()=>({}));throw new Error(_0x43a47b['error']||_0x43a47b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x434cd2['statusText']);}return await _0x434cd2['json']();},async 'discardFile'(_0x1bfcf5,_0x551901,_0x377eb8){if(!_0x1bfcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x551901)throw new Error('File\x20path\x20is\x20required');if(!_0x377eb8)throw new Error('Repository\x20path\x20is\x20required');const _0x4d675d=await fetch(API_BASE+'/tasks/'+_0x1bfcf5+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x551901,'repoPath':_0x377eb8})});if(!_0x4d675d['ok']){const _0x446fc5=await _0x4d675d['json']()['catch'](()=>({}));throw new Error(_0x446fc5['error']||_0x446fc5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4d675d['statusText']);}return await _0x4d675d['json']();},async 'followUpTask'(_0x37b037,_0x3d0863={}){if(!_0x37b037)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d0863['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x27c219,_0x3b56c4={};if(_0x3d0863['files']&&_0x3d0863['files']['length']>0x0){const _0xcdd3d7=new FormData();_0xcdd3d7['append']('instructions',_0x3d0863['instructions']);for(const _0x5c6e2d of _0x3d0863['files']){_0xcdd3d7['append']('attachments',_0x5c6e2d);}_0x27c219=_0xcdd3d7;}else _0x3b56c4['Content-Type']='application/json',_0x27c219=JSON['stringify']({'instructions':_0x3d0863['instructions']});const _0x4191b7=await fetch(API_BASE+'/tasks/'+_0x37b037+'/follow-up',{'method':'POST','headers':_0x3b56c4,'body':_0x27c219});if(!_0x4191b7['ok']){const _0x4c0652=await _0x4191b7['json']()['catch'](()=>({}));throw new Error(_0x4c0652['error']||_0x4c0652['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4191b7['statusText']);}return await _0x4191b7['json']();},async 'getTaskRewindPoints'(_0x31c508){if(!_0x31c508)throw new Error('Task\x20ID\x20is\x20required');const _0x13b6c3=await fetch(API_BASE+'/tasks/'+_0x31c508+'/rewind-points');if(!_0x13b6c3['ok']){const _0x7690be=await _0x13b6c3['json']()['catch'](()=>({}));throw new Error(_0x7690be['error']||_0x7690be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13b6c3['statusText']);}return await _0x13b6c3['json']();},async 'rewindTask'(_0x580de6,_0x27f0f2={}){if(!_0x580de6)throw new Error('Task\x20ID\x20is\x20required');const _0x5668a2=Number['isInteger'](_0x27f0f2['targetFollowUpCount'])?_0x27f0f2['targetFollowUpCount']:0x0,_0x29bdba={'targetFollowUpCount':_0x5668a2};typeof _0x27f0f2['instructions']==='string'&&_0x27f0f2['instructions']['trim']()&&(_0x29bdba['instructions']=_0x27f0f2['instructions']['trim']());typeof _0x27f0f2['rewindFiles']==='boolean'&&(_0x29bdba['rewindFiles']=_0x27f0f2['rewindFiles']);const _0x2cfe35=await fetch(API_BASE+'/tasks/'+_0x580de6+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29bdba)});if(!_0x2cfe35['ok']){const _0x35c130=await _0x2cfe35['json']()['catch'](()=>({}));throw new Error(_0x35c130['error']||_0x35c130['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2cfe35['statusText']);}return await _0x2cfe35['json']();},async 'login'(_0x342677,_0x11a591){const _0x5ba07d=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x342677,'password':_0x11a591})});if(!_0x5ba07d['ok']){const _0x5ec1fa=await _0x5ba07d['json']();throw new Error(_0x5ec1fa['message']||'Login\x20failed');}return await _0x5ba07d['json']();},async 'logout'(){const _0x2d7a8f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x2d7a8f['ok']){const _0x473d20=await _0x2d7a8f['json']();throw new Error(_0x473d20['message']||'Logout\x20failed');}return await _0x2d7a8f['json']();},async 'getCurrentUser'(){const _0x4bab83=await fetch(API_BASE+'/auth/me');if(!_0x4bab83['ok'])throw new Error('Not\x20authenticated');const _0x51b2b9=await _0x4bab83['json']();return _0x51b2b9['user'];},async 'getRolesInfo'(){const _0x4b2dab=await fetch(API_BASE+'/users/roles');if(!_0x4b2dab['ok']){const _0x5c3527=await _0x4b2dab['json']();throw new Error(_0x5c3527['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4b2dab['json']();},async 'getUsers'(){const _0x387130=await fetch(API_BASE+'/users');if(!_0x387130['ok']){const _0x1ec85f=await _0x387130['json']();throw new Error(_0x1ec85f['message']||'Failed\x20to\x20get\x20users');}return await _0x387130['json']();},async 'getUser'(_0x212d08){const _0x44ddbe=await fetch(API_BASE+'/users/'+_0x212d08);if(!_0x44ddbe['ok']){const _0xfe7319=await _0x44ddbe['json']();throw new Error(_0xfe7319['message']||'Failed\x20to\x20get\x20user');}return await _0x44ddbe['json']();},async 'createUser'(_0x575dab){const _0x14964d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x575dab)});if(!_0x14964d['ok']){const _0x31c96c=await _0x14964d['json']();throw new Error(_0x31c96c['message']||'Failed\x20to\x20create\x20user');}return await _0x14964d['json']();},async 'updateUser'(_0x2387b0,_0xc8242a){const _0x25e341=await fetch(API_BASE+'/users/'+_0x2387b0,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc8242a)});if(!_0x25e341['ok']){const _0x53507a=await _0x25e341['json']();throw new Error(_0x53507a['message']||'Failed\x20to\x20update\x20user');}return await _0x25e341['json']();},async 'deleteUser'(_0x2defbe){const _0x25a481=await fetch(API_BASE+'/users/'+_0x2defbe,{'method':'DELETE'});if(!_0x25a481['ok']){const _0x1cf76a=await _0x25a481['json']();throw new Error(_0x1cf76a['message']||'Failed\x20to\x20delete\x20user');}return await _0x25a481['json']();},async 'stopAllContainers'(){const _0x1eef2e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x54a6ce=await _0x1eef2e['json']()['catch'](()=>({}));if(!_0x1eef2e['ok'])throw new Error(_0x54a6ce['message']||_0x54a6ce['error']||'Failed\x20to\x20stop\x20containers');return _0x54a6ce;},async 'removeStoppedContainers'(){const _0x17bd67=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4b5ab0=await _0x17bd67['json']()['catch'](()=>({}));if(!_0x17bd67['ok'])throw new Error(_0x4b5ab0['message']||_0x4b5ab0['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4b5ab0;},async 'pruneDockerResources'(){const _0x16516e=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x340711=await _0x16516e['json']()['catch'](()=>({}));if(!_0x16516e['ok'])throw new Error(_0x340711['message']||_0x340711['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x340711;},async 'createPasswordToken'(_0x3f081e,_0x4f899b='setup',_0x54ad7c=![]){const _0x582f2c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f081e,'type':_0x4f899b,'sendEmail':_0x54ad7c})});if(!_0x582f2c['ok']){const _0x2c61c2=await _0x582f2c['json']();throw new Error(_0x2c61c2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x582f2c['json']();},async 'getEmailConfig'(){const _0x39ef29=await fetch(API_BASE+'/password/email-config');if(!_0x39ef29['ok']){const _0x19c165=await _0x39ef29['json']();throw new Error(_0x19c165['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x39ef29['json']();},async 'updateTaskName'(_0x563601,_0x67c408){const _0xd90ea1=await fetch(API_BASE+'/tasks/'+_0x563601,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x67c408})});if(!_0xd90ea1['ok']){const _0x5f526e=await _0xd90ea1['json']();throw new Error(_0x5f526e['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xd90ea1['json']();},async 'pinTask'(_0xaa7d0d,_0x46c068,_0x46cf8d=null){if(!_0xaa7d0d)throw new Error('Task\x20ID\x20is\x20required');const _0x342dd0={'pinned':_0x46c068};_0x46cf8d&&_0x46cf8d['length']>0x0&&(_0x342dd0['additionalTaskIds']=_0x46cf8d);const _0x2b91b8=await fetch(API_BASE+'/tasks/'+_0xaa7d0d+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x342dd0)});if(!_0x2b91b8['ok']){const _0x32cd03=await _0x2b91b8['json']();throw new Error(_0x32cd03['error']||'Failed\x20to\x20pin\x20task');}return await _0x2b91b8['json']();},async 'setTaskWinner'(_0x2680ae,_0x22cdd4,_0x288915=[]){if(!_0x2680ae)throw new Error('Task\x20ID\x20is\x20required');const _0xa44c17=await fetch(API_BASE+'/tasks/'+_0x2680ae+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x22cdd4,'siblings':_0x288915})});if(!_0xa44c17['ok']){const _0x164f04=await _0xa44c17['json']();throw new Error(_0x164f04['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xa44c17['json']();},async 'setTaskLoser'(_0x3f428e,_0x103981){if(!_0x3f428e)throw new Error('Task\x20ID\x20is\x20required');const _0x2ffaf1=await fetch(API_BASE+'/tasks/'+_0x3f428e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x103981})});if(!_0x2ffaf1['ok']){const _0x8a4539=await _0x2ffaf1['json']();throw new Error(_0x8a4539['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2ffaf1['json']();},async 'createTaskGroup'(_0x1c2a87){const _0x397bcc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c2a87)});if(!_0x397bcc['ok']){const _0x1336a3=await _0x397bcc['json']();throw new Error(_0x1336a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x397bcc['json']();},async 'getTaskGroups'(_0x453955={}){const _0x46c06d=new URLSearchParams();if(_0x453955['userId'])_0x46c06d['set']('userId',String(_0x453955['userId']));if(_0x453955['status'])_0x46c06d['set']('status',String(_0x453955['status']));if(_0x453955['limit'])_0x46c06d['set']('limit',String(_0x453955['limit']));const _0x40a712=API_BASE+'/tasks/groups'+(_0x46c06d['toString']()?'?'+_0x46c06d['toString']():''),_0x2983ec=await fetch(_0x40a712);if(!_0x2983ec['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2983ec['json']();},async 'getTaskGroup'(_0x12cb77){const _0x28bd1c=await fetch(API_BASE+'/tasks/groups/'+_0x12cb77);if(!_0x28bd1c['ok']){const _0x31d33c=await _0x28bd1c['json']();throw new Error(_0x31d33c['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x28bd1c['json']();},async 'updateTaskGroup'(_0x430f13,_0x4d9e16,_0x248965){const _0x1bd9f3=await fetch(API_BASE+'/tasks/'+_0x430f13+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d9e16,'groupIndex':_0x248965})});if(!_0x1bd9f3['ok']){const _0x5708f0=await _0x1bd9f3['json']();throw new Error(_0x5708f0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x1bd9f3['json']();},async 'removeTaskFromGroup'(_0x2552b3){return this['updateTaskGroup'](_0x2552b3,null,null);},async 'deleteTaskGroup'(_0x554dbe,_0x498367=![]){const _0x45cbdd=_0x498367?'?deleteTasks=true':'',_0x1e9ee6=await fetch(API_BASE+'/tasks/groups/'+_0x554dbe+_0x45cbdd,{'method':'DELETE'});if(!_0x1e9ee6['ok']){const _0x4926cb=await _0x1e9ee6['json']();throw new Error(_0x4926cb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5df683,_0x10725b){const _0x1a92b3=await fetch(API_BASE+'/tasks/groups/'+_0x5df683+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x10725b})});if(!_0x1a92b3['ok']){const _0x5383ba=await _0x1a92b3['json']();throw new Error(_0x5383ba['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a92b3['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x50d49c){if(!_0x50d49c)throw new Error('Task\x20ID\x20is\x20required');const _0x50e0e4=await fetch(API_BASE+'/tasks/'+_0x50d49c+'/comments');if(!_0x50e0e4['ok']){const _0x37800b=await _0x50e0e4['json']()['catch'](()=>({}));throw new Error(_0x37800b['error']||'Failed\x20to\x20get\x20comments');}return await _0x50e0e4['json']();},async 'addComment'(_0x211a46,_0x282c64){if(!_0x211a46)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282c64)throw new Error('Comment\x20content\x20is\x20required');const _0x20a4b3=await fetch(API_BASE+'/tasks/'+_0x211a46+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x282c64})});if(!_0x20a4b3['ok']){const _0x393dbd=await _0x20a4b3['json']()['catch'](()=>({}));throw new Error(_0x393dbd['error']||'Failed\x20to\x20add\x20comment');}return await _0x20a4b3['json']();},async 'updateComment'(_0x113b97,_0x1d2f30,_0x3feba6){if(!_0x113b97)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d2f30)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3feba6)throw new Error('Comment\x20content\x20is\x20required');const _0x32c86a=await fetch(API_BASE+'/tasks/'+_0x113b97+'/comments/'+_0x1d2f30,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3feba6})});if(!_0x32c86a['ok']){const _0x5639c4=await _0x32c86a['json']()['catch'](()=>({}));throw new Error(_0x5639c4['error']||'Failed\x20to\x20update\x20comment');}return await _0x32c86a['json']();},async 'deleteComment'(_0x52ab4a,_0x54e311){if(!_0x52ab4a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54e311)throw new Error('Comment\x20ID\x20is\x20required');const _0x410f48=await fetch(API_BASE+'/tasks/'+_0x52ab4a+'/comments/'+_0x54e311,{'method':'DELETE'});if(!_0x410f48['ok']){const _0x512d24=await _0x410f48['json']()['catch'](()=>({}));throw new Error(_0x512d24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x410f48['json']();},async 'createObjective'(_0x418dea){const _0x75be1e={'objective':!![],'name':_0x418dea['name']||'','environment':_0x418dea['environment']||null,'agents':_0x418dea['agents']||[],'branches':_0x418dea['branches']||{},'isPinned':_0x418dea['isPinned']||![],'parentObjectiveId':_0x418dea['parentObjectiveId']||null,'env_vars':_0x418dea['envVars']||{},'parameters':{'instructions':_0x418dea['instructions']||''},'files':_0x418dea['files']||[],'jira':_0x418dea['jira']||null};return this['createTask'](_0x75be1e);},async 'updateObjective'(_0x196f62,_0x4e3ed6,_0x146bc4=[],_0x5d115d=[]){let _0x2dea8c,_0x5d2c71={};const _0x18badb={..._0x4e3ed6};_0x5d115d&&_0x5d115d['length']>0x0&&(_0x18badb['removeAttachments']=_0x5d115d);if(_0x146bc4&&_0x146bc4['length']>0x0){const _0x732231=new FormData();for(const [_0x50990f,_0x503da9]of Object['entries'](_0x18badb)){if(_0x503da9==null)continue;typeof _0x503da9==='object'?_0x732231['append'](_0x50990f,JSON['stringify'](_0x503da9)):_0x732231['append'](_0x50990f,String(_0x503da9));}for(const _0x7a6e05 of _0x146bc4){_0x732231['append']('attachments',_0x7a6e05);}_0x2dea8c=_0x732231;}else _0x5d2c71['Content-Type']='application/json',_0x2dea8c=JSON['stringify'](_0x18badb);const _0x1981ae=await fetch(API_BASE+'/tasks/'+_0x196f62,{'method':'PATCH','headers':_0x5d2c71,'body':_0x2dea8c});if(!_0x1981ae['ok']){const _0x2d7383=await _0x1981ae['json']();throw new Error(_0x2d7383['error']||'Failed\x20to\x20update\x20objective');}return await _0x1981ae['json']();},async 'deleteObjective'(_0x1a746c){return this['deleteTask'](_0x1a746c);},async 'launchObjective'(_0x475594,_0x56a2a0={}){const _0x69ad99=await fetch(API_BASE+'/tasks/'+_0x475594+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56a2a0)});if(!_0x69ad99['ok']){const _0x26a6b4=await _0x69ad99['json']();throw new Error(_0x26a6b4['error']||'Failed\x20to\x20launch\x20objective');}return await _0x69ad99['json']();},async 'getObjectiveAttachments'(_0x406276){return this['getTaskAttachments'](_0x406276);},async 'createJudgeTask'({environment:_0xde9de9,judgeAgent:_0x89b3a2,groupId:_0x4f971a,taskIds:_0xbb58ea,judgeCustomInstructions:_0xcddeea,isPinned:_0x3dca2f}){const _0x257636=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xde9de9,'judgeAgent':_0x89b3a2,'groupId':_0x4f971a,'taskIds':_0xbb58ea,'judgeCustomInstructions':_0xcddeea,'isPinned':_0x3dca2f})});if(!_0x257636['ok']){const _0x3afa8b=await _0x257636['json']();throw new Error(_0x3afa8b['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x257636['json']();},async 'getJudgeTasks'(_0x16a42f){const _0x2570d2=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x16a42f));if(!_0x2570d2['ok']){const _0x8e6c86=await _0x2570d2['json']();throw new Error(_0x8e6c86['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2570d2['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1548f7,_0x246906,_0x2b53b2=''){const _0x404ca9=await fetch(API_BASE+'/tasks/'+_0x1548f7+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x246906,'customPreamble':_0x2b53b2})});if(!_0x404ca9['ok']){const _0x2cb7a3=await _0x404ca9['json']();throw new Error(_0x2cb7a3['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x404ca9['json']();},async 'getJiraConfig'(){const _0x1b1882=await fetch(API_BASE+'/jira/config');if(!_0x1b1882['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1b1882['json']();},async 'getJiraIssue'(_0x23181c){const _0x20e622=await fetch(API_BASE+'/jira/issues/'+_0x23181c);if(!_0x20e622['ok']){const _0x2b2124=await _0x20e622['json']()['catch'](()=>({}));throw new Error(_0x2b2124['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20e622['statusText']);}return await _0x20e622['json']();},async 'searchJiraIssues'(_0xe37722,_0x13320c=0x14){const _0x177e1f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xe37722,'maxResults':_0x13320c})});if(!_0x177e1f['ok']){const _0x17b72a=await _0x177e1f['json']()['catch'](()=>({}));throw new Error(_0x17b72a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x177e1f['statusText']);}return await _0x177e1f['json']();},async 'postJiraComment'(_0x103ec6,_0x3fd359){const _0x5431f0=await fetch(API_BASE+'/jira/issues/'+_0x103ec6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fd359})});if(!_0x5431f0['ok']){const _0x12d9c1=await _0x5431f0['json']()['catch'](()=>({}));throw new Error(_0x12d9c1['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5431f0['statusText']);}return await _0x5431f0['json']();},async 'getJiraComments'(_0x506142){const _0x4149b9=await fetch(API_BASE+'/jira/issues/'+_0x506142+'/comments');if(!_0x4149b9['ok']){const _0x29d5c3=await _0x4149b9['json']()['catch'](()=>({}));throw new Error(_0x29d5c3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4149b9['statusText']);}return await _0x4149b9['json']();},async 'promptParameter'({environment:_0x3e5d93,command:_0x47ee65,parser:parser='json'}){const _0x32f20f=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3e5d93,'command':_0x47ee65,'parser':parser})});if(!_0x32f20f['ok']){const _0x5717d0=await _0x32f20f['json']()['catch'](()=>({}));throw new Error(_0x5717d0['message']||_0x5717d0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x32f20f['statusText']);}return await _0x32f20f['json']();},async 'promptParameterStream'(_0x5211df,_0x5de542){const _0x1c8250=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5211df)});if(!_0x1c8250['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1c8250['statusText']);const _0x3117bf=_0x1c8250['body']['getReader'](),_0x7a1387=new TextDecoder();let _0x65ae97='';return new Promise((_0x66c3d9,_0x2bd640)=>{const _0x454ff8=async()=>{try{const {done:_0x17d6c5,value:_0x1611e0}=await _0x3117bf['read']();if(_0x17d6c5)return;_0x65ae97+=_0x7a1387['decode'](_0x1611e0,{'stream':!![]});const _0x557b5f=_0x65ae97['split']('\x0a\x0a');_0x65ae97=_0x557b5f['pop']()||'';for(const _0x5dc447 of _0x557b5f){if(!_0x5dc447['trim']())continue;const _0x478d76=_0x5dc447['split']('\x0a');let _0x2bbcb3='message',_0x1c3e0d='';for(const _0x5b2d87 of _0x478d76){if(_0x5b2d87['startsWith']('event:'))_0x2bbcb3=_0x5b2d87['substring'](0x6)['trim']();else _0x5b2d87['startsWith']('data:')&&(_0x1c3e0d=_0x5b2d87['substring'](0x5)['trim']());}if(!_0x1c3e0d)continue;try{const _0x1a1177=JSON['parse'](_0x1c3e0d);if(_0x2bbcb3==='progress'&&_0x5de542)_0x5de542(_0x1a1177['stage'],_0x1a1177['message']);else{if(_0x2bbcb3==='result'){_0x66c3d9(_0x1a1177);return;}else{if(_0x2bbcb3==='error'){let _0x4d7b34=_0x1a1177['message']||_0x1a1177['error']||'Prompt\x20command\x20failed';_0x1a1177['rawOutput']&&(_0x4d7b34+='\x0a\x0aRaw\x20output:\x0a'+_0x1a1177['rawOutput']);_0x2bd640(new Error(_0x4d7b34));return;}}}}catch(_0x5dbf42){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5dbf42),console['error']('Event\x20type:',_0x2bbcb3),console['error']('Event\x20data:',_0x1c3e0d),console['error']('First\x20200\x20chars:',_0x1c3e0d['substring'](0x0,0xc8)),_0x2bd640(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5dbf42['message']+'\x0a\x0aData:\x20'+_0x1c3e0d['substring'](0x0,0x1f4)));return;}}_0x454ff8();}catch(_0x1dfa09){_0x2bd640(_0x1dfa09);}};_0x454ff8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xa04450){const _0x6392de=await fetch(''+API_BASE+_0xa04450);if(!_0x6392de['ok']){const _0x1bf07e=await _0x6392de['json']()['catch'](()=>({'error':_0x6392de['statusText']})),_0x58d3f9=new Error(_0x1bf07e['error']||_0x1bf07e['message']||_0x6392de['statusText']);if(_0x1bf07e['detail']!==undefined)_0x58d3f9['detail']=_0x1bf07e['detail'];throw _0x58d3f9;}return await _0x6392de['json']();},async 'post'(_0x4baeee,_0x1f2329){const _0x42f695=await fetch(''+API_BASE+_0x4baeee,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f2329)});if(!_0x42f695['ok']){const _0x16eac9=await _0x42f695['json']()['catch'](()=>({'error':_0x42f695['statusText']})),_0x5aba9b=new Error(_0x16eac9['error']||_0x16eac9['message']||_0x42f695['statusText']);if(_0x16eac9['detail']!==undefined)_0x5aba9b['detail']=_0x16eac9['detail'];throw _0x5aba9b;}return await _0x42f695['json']();},async 'put'(_0x1d1252,_0x2df8d8){const _0x28c933=await fetch(''+API_BASE+_0x1d1252,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2df8d8)});if(!_0x28c933['ok']){const _0x51fc61=await _0x28c933['json']()['catch'](()=>({'error':_0x28c933['statusText']})),_0x36f04e=new Error(_0x51fc61['error']||_0x51fc61['message']||_0x28c933['statusText']);if(_0x51fc61['detail']!==undefined)_0x36f04e['detail']=_0x51fc61['detail'];throw _0x36f04e;}return await _0x28c933['json']();},async 'delete'(_0x3fb029,_0x4a3cbd){const _0xe83584={'method':'DELETE'};_0x4a3cbd&&(_0xe83584['headers']={'Content-Type':'application/json'},_0xe83584['body']=JSON['stringify'](_0x4a3cbd));const _0x1ea12f=await fetch(''+API_BASE+_0x3fb029,_0xe83584);if(!_0x1ea12f['ok']){const _0x2193d2=await _0x1ea12f['json']()['catch'](()=>({'error':_0x1ea12f['statusText']})),_0x12cc35=new Error(_0x2193d2['error']||_0x2193d2['message']||_0x1ea12f['statusText']);if(_0x2193d2['detail']!==undefined)_0x12cc35['detail']=_0x2193d2['detail'];throw _0x12cc35;}return await _0x1ea12f['json']();},async 'getSkills'(){const _0x2bd82d=await fetch(API_BASE+'/skills');if(!_0x2bd82d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2bd82d['statusText']);return await _0x2bd82d['json']();},async 'getSkill'(_0x135aa1){const _0x330c60=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x135aa1));if(!_0x330c60['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x330c60['statusText']);return await _0x330c60['json']();},async 'createSkill'(_0x3148d3){const _0x5d9bda=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3148d3)});if(!_0x5d9bda['ok']){const _0x21e97f=await _0x5d9bda['json']()['catch'](()=>({'error':_0x5d9bda['statusText']})),_0x3821d0=new Error(_0x21e97f['error']||_0x21e97f['message']||_0x5d9bda['statusText']);if(_0x21e97f['detail']!==undefined)_0x3821d0['detail']=_0x21e97f['detail'];throw _0x3821d0;}return await _0x5d9bda['json']();},async 'updateSkill'(_0x17e2fe,_0x4480c1){const _0x47f3c7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e2fe),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4480c1)});if(!_0x47f3c7['ok']){const _0x4ae3ab=await _0x47f3c7['json']()['catch'](()=>({'error':_0x47f3c7['statusText']})),_0x2a812e=new Error(_0x4ae3ab['error']||_0x4ae3ab['message']||_0x47f3c7['statusText']);if(_0x4ae3ab['detail']!==undefined)_0x2a812e['detail']=_0x4ae3ab['detail'];throw _0x2a812e;}return await _0x47f3c7['json']();},async 'deleteSkill'(_0x8b087a){const _0x15f1e4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x8b087a),{'method':'DELETE'});if(!_0x15f1e4['ok']){const _0x461a2c=await _0x15f1e4['json']()['catch'](()=>({'error':_0x15f1e4['statusText']})),_0x1cdec4=new Error(_0x461a2c['error']||_0x461a2c['message']||_0x15f1e4['statusText']);if(_0x461a2c['detail']!==undefined)_0x1cdec4['detail']=_0x461a2c['detail'];throw _0x1cdec4;}return await _0x15f1e4['json']();},async 'getSkillFile'(_0x3f5494,_0x8293d1){const _0x82cc1b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5494)+'/files/'+_0x8293d1);if(!_0x82cc1b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x82cc1b['statusText']);return await _0x82cc1b['json']();},async 'saveSkillFile'(_0x5b3869,_0x2f8480,_0x4bc561){const _0x58d922=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b3869)+'/files/'+_0x2f8480,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4bc561})});if(!_0x58d922['ok']){const _0x4240c7=await _0x58d922['json']()['catch'](()=>({'error':_0x58d922['statusText']})),_0x44ce91=new Error(_0x4240c7['error']||_0x4240c7['message']||_0x58d922['statusText']);if(_0x4240c7['detail']!==undefined)_0x44ce91['detail']=_0x4240c7['detail'];throw _0x44ce91;}return await _0x58d922['json']();},async 'deleteSkillFile'(_0x425e97,_0x51bd45){const _0x2862b2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x425e97)+'/files/'+_0x51bd45,{'method':'DELETE'});if(!_0x2862b2['ok']){const _0x2ae6b8=await _0x2862b2['json']()['catch'](()=>({'error':_0x2862b2['statusText']})),_0x2fa3c0=new Error(_0x2ae6b8['error']||_0x2ae6b8['message']||_0x2862b2['statusText']);if(_0x2ae6b8['detail']!==undefined)_0x2fa3c0['detail']=_0x2ae6b8['detail'];throw _0x2fa3c0;}return await _0x2862b2['json']();},async 'pullSkills'(){const _0x5d0693=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5d0693['ok']){const _0x208642=await _0x5d0693['json']()['catch'](()=>({'error':_0x5d0693['statusText']})),_0x57eb71=new Error(_0x208642['error']||_0x208642['message']||_0x5d0693['statusText']);if(_0x208642['detail']!==undefined)_0x57eb71['detail']=_0x208642['detail'];throw _0x57eb71;}return await _0x5d0693['json']();},async 'commitSkills'(_0x33f03e,_0x2e4605={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2e4605,_0x5a9c2a=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x33f03e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5a9c2a['ok']){const _0x5e5645=await _0x5a9c2a['json']()['catch'](()=>({'error':_0x5a9c2a['statusText']})),_0x2b050e=new Error(_0x5e5645['error']||_0x5e5645['message']||_0x5a9c2a['statusText']);if(_0x5e5645['detail']!==undefined)_0x2b050e['detail']=_0x5e5645['detail'];throw _0x2b050e;}return await _0x5a9c2a['json']();},async 'discardSkillsChanges'(){const _0x379014=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x379014['ok']){const _0xdce7bf=await _0x379014['json']()['catch'](()=>({'error':_0x379014['statusText']})),_0x1b7291=new Error(_0xdce7bf['error']||_0xdce7bf['message']||_0x379014['statusText']);if(_0xdce7bf['detail']!==undefined)_0x1b7291['detail']=_0xdce7bf['detail'];throw _0x1b7291;}return await _0x379014['json']();},async 'getSkillCatalog'(){const _0x32da05=await fetch(API_BASE+'/external-skills/catalog');if(!_0x32da05['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x32da05['statusText']);return await _0x32da05['json']();},async 'getImportedSkillsRegistry'(){const _0x221f4a=await fetch(API_BASE+'/external-skills/registry');if(!_0x221f4a['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x221f4a['statusText']);return await _0x221f4a['json']();},async 'importCatalogSkill'(_0x451e52){const _0x1e5401=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x451e52})});if(!_0x1e5401['ok']){const _0x110053=await _0x1e5401['json']()['catch'](()=>({'error':_0x1e5401['statusText']})),_0x2eb1ca=new Error(_0x110053['error']||_0x110053['message']||_0x1e5401['statusText']);if(_0x110053['detail']!==undefined)_0x2eb1ca['detail']=_0x110053['detail'];throw _0x2eb1ca;}return await _0x1e5401['json']();},async 'importSkillFromGit'(_0x1095af,_0x5134a3,_0x1ab5b3='main',_0x4a52cc=null){const _0x3fbc69=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1095af,'skillPath':_0x5134a3,'branch':_0x1ab5b3,'skillId':_0x4a52cc})});if(!_0x3fbc69['ok']){const _0x755b7c=await _0x3fbc69['json']()['catch'](()=>({'error':_0x3fbc69['statusText']})),_0x263336=new Error(_0x755b7c['error']||_0x755b7c['message']||_0x3fbc69['statusText']);if(_0x755b7c['detail']!==undefined)_0x263336['detail']=_0x755b7c['detail'];throw _0x263336;}return await _0x3fbc69['json']();},async 'probeMarketplace'(_0x546057,_0x5a8ea2='main'){const _0x1c69bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x546057,'branch':_0x5a8ea2})});if(!_0x1c69bd['ok']){const _0x5f3672=await _0x1c69bd['json']()['catch'](()=>({'error':_0x1c69bd['statusText']})),_0x309376=new Error(_0x5f3672['error']||_0x5f3672['message']||_0x1c69bd['statusText']);if(_0x5f3672['detail']!==undefined)_0x309376['detail']=_0x5f3672['detail'];throw _0x309376;}return await _0x1c69bd['json']();},async 'importMarketplaceBundle'(_0xba0155,_0x2adddf,_0x34f1c5,_0x393d12=null){const _0x49a764=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xba0155,'branch':_0x2adddf,'bundleId':_0x34f1c5,'selectedSkills':_0x393d12})});if(!_0x49a764['ok']){const _0x21ab45=await _0x49a764['json']()['catch'](()=>({'error':_0x49a764['statusText']})),_0x5bf1c2=new Error(_0x21ab45['error']||_0x21ab45['message']||_0x49a764['statusText']);if(_0x21ab45['detail']!==undefined)_0x5bf1c2['detail']=_0x21ab45['detail'];throw _0x5bf1c2;}return await _0x49a764['json']();},async 'importSkillFromFolder'(_0x2a3c19,_0x131c4a=null){const _0x44f528=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2a3c19,'skillId':_0x131c4a})});if(!_0x44f528['ok']){const _0x51c1a8=await _0x44f528['json']()['catch'](()=>({'error':_0x44f528['statusText']})),_0x15e16b=new Error(_0x51c1a8['error']||_0x51c1a8['message']||_0x44f528['statusText']);if(_0x51c1a8['detail']!==undefined)_0x15e16b['detail']=_0x51c1a8['detail'];throw _0x15e16b;}return await _0x44f528['json']();},async 'importSkillFromNpm'(_0x2f82d1,_0x4bdbf8='latest',_0x24e3f2=null,_0x465243=null){const _0x317891=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f82d1,'version':_0x4bdbf8,'skillId':_0x24e3f2,'registry':_0x465243})});if(!_0x317891['ok']){const _0x13571a=await _0x317891['json']()['catch'](()=>({'error':_0x317891['statusText']})),_0x3abe38=new Error(_0x13571a['error']||_0x13571a['message']||_0x317891['statusText']);if(_0x13571a['detail']!==undefined)_0x3abe38['detail']=_0x13571a['detail'];throw _0x3abe38;}return await _0x317891['json']();},async 'checkSkillUpdates'(_0x131e48){const _0x3219f4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x131e48)+'/check-updates',{'method':'POST'});if(!_0x3219f4['ok']){const _0x286dc7=await _0x3219f4['json']()['catch'](()=>({'error':_0x3219f4['statusText']})),_0x594f0d=new Error(_0x286dc7['error']||_0x286dc7['message']||_0x3219f4['statusText']);if(_0x286dc7['detail']!==undefined)_0x594f0d['detail']=_0x286dc7['detail'];throw _0x594f0d;}return await _0x3219f4['json']();},async 'updateExternalSkill'(_0x3bd65c){const _0x4cfe26=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3bd65c)+'/update',{'method':'POST'});if(!_0x4cfe26['ok']){const _0x408f2c=await _0x4cfe26['json']()['catch'](()=>({'error':_0x4cfe26['statusText']})),_0x466f97=new Error(_0x408f2c['error']||_0x408f2c['message']||_0x4cfe26['statusText']);if(_0x408f2c['detail']!==undefined)_0x466f97['detail']=_0x408f2c['detail'];throw _0x466f97;}return await _0x4cfe26['json']();},async 'updateSkillFlags'(_0x359813,_0x577a14){const _0x147946=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x359813)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x577a14})});if(!_0x147946['ok']){const _0xa05079=await _0x147946['json']()['catch'](()=>({'error':_0x147946['statusText']})),_0x3898bd=new Error(_0xa05079['error']||_0xa05079['message']||_0x147946['statusText']);if(_0xa05079['detail']!==undefined)_0x3898bd['detail']=_0xa05079['detail'];throw _0x3898bd;}return await _0x147946['json']();},async 'removeFromImportedRegistry'(_0x477908){const _0x3c84e0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x477908)+'/registry',{'method':'DELETE'});if(!_0x3c84e0['ok']){const _0x802807=await _0x3c84e0['json']()['catch'](()=>({'error':_0x3c84e0['statusText']})),_0x947ad3=new Error(_0x802807['error']||_0x802807['message']||_0x3c84e0['statusText']);if(_0x802807['detail']!==undefined)_0x947ad3['detail']=_0x802807['detail'];throw _0x947ad3;}return await _0x3c84e0['json']();},async 'getTeams'(){const _0x28c1f4=await fetch(API_BASE+'/teams');if(!_0x28c1f4['ok']){const _0x1fb82d=await _0x28c1f4['json']()['catch'](()=>({'message':_0x28c1f4['statusText']}));throw new Error(_0x1fb82d['message']||'Failed\x20to\x20get\x20teams');}return await _0x28c1f4['json']();},async 'getTeam'(_0xaeaf96){const _0x42c0c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xaeaf96));if(!_0x42c0c1['ok']){const _0x607ff4=await _0x42c0c1['json']()['catch'](()=>({'message':_0x42c0c1['statusText']}));throw new Error(_0x607ff4['message']||'Failed\x20to\x20get\x20team');}return await _0x42c0c1['json']();},async 'createTeam'(_0x266029){const _0x1cf5e0=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x266029)});if(!_0x1cf5e0['ok']){const _0xda138b=await _0x1cf5e0['json']()['catch'](()=>({'message':_0x1cf5e0['statusText']}));throw new Error(_0xda138b['message']||'Failed\x20to\x20create\x20team');}return await _0x1cf5e0['json']();},async 'updateTeam'(_0x98634f,_0x1abda9){const _0x2298d9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x98634f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abda9)});if(!_0x2298d9['ok']){const _0x25d2fe=await _0x2298d9['json']()['catch'](()=>({'message':_0x2298d9['statusText']}));throw new Error(_0x25d2fe['message']||'Failed\x20to\x20update\x20team');}return await _0x2298d9['json']();},async 'deleteTeam'(_0x475268){const _0xb72a63=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x475268),{'method':'DELETE'});if(!_0xb72a63['ok']){const _0x264512=await _0xb72a63['json']()['catch'](()=>({'message':_0xb72a63['statusText']}));throw new Error(_0x264512['message']||'Failed\x20to\x20delete\x20team');}return await _0xb72a63['json']();},async 'addTeamMember'(_0x295e9b,_0x2221e5){const _0x2b1d2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x295e9b)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2221e5})});if(!_0x2b1d2e['ok']){const _0x568f6d=await _0x2b1d2e['json']()['catch'](()=>({'message':_0x2b1d2e['statusText']}));throw new Error(_0x568f6d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2b1d2e['json']();},async 'removeTeamMember'(_0x534b63,_0x2a4105){const _0x47dc13=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x534b63)+'/members/'+encodeURIComponent(_0x2a4105),{'method':'DELETE'});if(!_0x47dc13['ok']){const _0x461b63=await _0x47dc13['json']()['catch'](()=>({'message':_0x47dc13['statusText']}));throw new Error(_0x461b63['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x47dc13['json']();},async 'getBindings'(_0x48926b={}){const _0x56e91a=new URLSearchParams();if(_0x48926b['resource_type'])_0x56e91a['set']('resource_type',_0x48926b['resource_type']);if(_0x48926b['resource_id'])_0x56e91a['set']('resource_id',_0x48926b['resource_id']);if(_0x48926b['subject_type'])_0x56e91a['set']('subject_type',_0x48926b['subject_type']);if(_0x48926b['subject_id'])_0x56e91a['set']('subject_id',_0x48926b['subject_id']);const _0xd0cc62=_0x56e91a['toString'](),_0x86b4f0=await fetch(API_BASE+'/bindings'+(_0xd0cc62?'?'+_0xd0cc62:''));if(!_0x86b4f0['ok']){const _0x2eaba6=await _0x86b4f0['json']()['catch'](()=>({'message':_0x86b4f0['statusText']}));throw new Error(_0x2eaba6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x86b4f0['json']();},async 'createBinding'(_0x198cd3){const _0xe8a51=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x198cd3)});if(!_0xe8a51['ok']){const _0x54c7b7=await _0xe8a51['json']()['catch'](()=>({'message':_0xe8a51['statusText']}));throw new Error(_0x54c7b7['message']||'Failed\x20to\x20create\x20binding');}return await _0xe8a51['json']();},async 'updateBinding'(_0x3a6b39,_0x2e3352){const _0x1dbaae=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3a6b39),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3352)});if(!_0x1dbaae['ok']){const _0x572306=await _0x1dbaae['json']()['catch'](()=>({'message':_0x1dbaae['statusText']}));throw new Error(_0x572306['message']||'Failed\x20to\x20update\x20binding');}return await _0x1dbaae['json']();},async 'deleteBinding'(_0x467c3c){const _0x2b2e9a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x467c3c),{'method':'DELETE'});if(!_0x2b2e9a['ok']){const _0x5382aa=await _0x2b2e9a['json']()['catch'](()=>({'message':_0x2b2e9a['statusText']}));throw new Error(_0x5382aa['message']||'Failed\x20to\x20delete\x20binding');}return await _0x2b2e9a['json']();},async 'getRoleDefinitions'(){const _0x196145=await fetch(API_BASE+'/roles');if(!_0x196145['ok']){const _0x2425fb=await _0x196145['json']()['catch'](()=>({'message':_0x196145['statusText']}));throw new Error(_0x2425fb['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x196145['json']();},async 'getRoleDefinition'(_0x146546){const _0x4d9536=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x146546));if(!_0x4d9536['ok']){const _0x39f6c3=await _0x4d9536['json']()['catch'](()=>({'message':_0x4d9536['statusText']}));throw new Error(_0x39f6c3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4d9536['json']();},async 'createRoleDefinition'(_0x36c156){const _0x4a6c5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36c156)});if(!_0x4a6c5e['ok']){const _0x20bc9d=await _0x4a6c5e['json']()['catch'](()=>({'message':_0x4a6c5e['statusText']}));throw new Error(_0x20bc9d['message']||_0x20bc9d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4a6c5e['json']();},async 'updateRoleDefinition'(_0x3682fc,_0x285ea0){const _0x452379=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3682fc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285ea0)});if(!_0x452379['ok']){const _0x2b9bb4=await _0x452379['json']()['catch'](()=>({'message':_0x452379['statusText']}));throw new Error(_0x2b9bb4['message']||_0x2b9bb4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x452379['json']();},async 'deleteRoleDefinition'(_0x25cf2c){const _0x474d7b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x25cf2c),{'method':'DELETE'});if(!_0x474d7b['ok']){const _0x5efa38=await _0x474d7b['json']()['catch'](()=>({'message':_0x474d7b['statusText']}));throw new Error(_0x5efa38['message']||_0x5efa38['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x474d7b['json']();},async 'getAvailablePermissions'(){const _0x199b10=await fetch(API_BASE+'/roles/available-permissions');if(!_0x199b10['ok']){const _0x24ff63=await _0x199b10['json']()['catch'](()=>({'message':_0x199b10['statusText']}));throw new Error(_0x24ff63['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x199b10['json']();},async 'getGitProviderAllowedTeams'(_0x3848a0){const _0x4cdd93=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3848a0)+'/allowed-teams');if(!_0x4cdd93['ok']){const _0x412b49=await _0x4cdd93['json']()['catch'](()=>({'message':_0x4cdd93['statusText']}));throw new Error(_0x412b49['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4cdd93['json']();},async 'setGitProviderAllowedTeams'(_0xa63a70,_0x371d37){const _0x160c70=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa63a70)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x371d37})});if(!_0x160c70['ok']){const _0x168a80=await _0x160c70['json']()['catch'](()=>({'message':_0x160c70['statusText']}));throw new Error(_0x168a80['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x160c70['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 _0x15bd8f=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4bc283=>{_0x4bc283['el']['style']['bottom']=_0x15bd8f+'px';const _0x4ea52d=_0x4bc283['el']['offsetHeight']||toastState['defaultHeight'];_0x15bd8f+=_0x4ea52d+toastState['gap'];});});}function removeToastById(_0x4a7074){const _0x106c5d=toastState['toasts']['findIndex'](_0x561fa9=>_0x561fa9['id']===_0x4a7074);if(_0x106c5d===-0x1)return;const _0x2218cc=toastState['toasts'][_0x106c5d];if(_0x2218cc['timeoutId'])clearTimeout(_0x2218cc['timeoutId']);_0x2218cc['el']['classList']['remove']('show'),setTimeout(()=>_0x2218cc['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x106c5d,0x1),repositionAllToasts();}function registerToast(_0x1ef539){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1ef539),repositionAllToasts(),_0x1ef539['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(_0x3c7c72){if(_0x3c7c72===null||_0x3c7c72===undefined)return'';return String(_0x3c7c72)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x23b010,_0xa2693a){if(_0x23b010&&typeof _0x23b010==='object'&&!Array['isArray'](_0x23b010))return{'code':typeof _0x23b010['text']==='string'?_0x23b010['text']:'','language':typeof _0x23b010['lang']==='string'?_0x23b010['lang']:''};return{'code':typeof _0x23b010==='string'?_0x23b010:'','language':typeof _0xa2693a==='string'?_0xa2693a:''};}function buildMermaidBlock(_0x40c8a8){const _0x34f119=String(_0x40c8a8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x34f119))+'\x22>'+escapeHtmlValue(_0x34f119)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x267afb=new marked['Renderer'](),_0x42cd3e=_0x267afb['code']['bind'](_0x267afb);return _0x267afb['code']=function(_0xc20bd3,_0x182cb9,..._0x29b7cd){const {code:_0x578284,language:_0x2ec8dd}=getMarkdownCodeBlockPayload(_0xc20bd3,_0x182cb9),_0x7e0a41=String(_0x2ec8dd||'')['trim']()['toLowerCase']();if(_0x7e0a41==='mermaid')return buildMermaidBlock(_0x578284);const _0xd07e0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xd07e0&&_0x7e0a41)try{const _0x18c402=_0xd07e0['getLanguage'](_0x7e0a41)?_0x7e0a41:'plaintext',_0x569ecc=_0xd07e0['highlight'](_0x578284,{'language':_0x18c402})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x7e0a41)+'\x22>'+_0x569ecc+'</code></pre>';}catch(_0x5169b7){console['error']('Syntax\x20highlighting\x20error:',_0x5169b7);}return _0x42cd3e(_0xc20bd3,_0x182cb9,..._0x29b7cd);},sharedMarkedRenderer=_0x267afb,_0x267afb;}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 _0x136d38=window['mermaid'];if(!_0x136d38||typeof _0x136d38['initialize']!=='function')return _0x136d38||null;return _0x136d38['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x136d38;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44f723,_0x356c42)=>{const _0x5c3ae7=()=>_0x44f723(configureMermaidInstance()),_0x13ad33=()=>{mermaidLoadPromise=null,_0x356c42(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x368ebd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x368ebd&&(_0x368ebd=document['createElement']('script'),_0x368ebd['id']=MERMAID_SCRIPT_ID,_0x368ebd['src']=MERMAID_SCRIPT_SRC,_0x368ebd['async']=!![],document['head']['appendChild'](_0x368ebd));if(window['mermaid']){_0x5c3ae7();return;}_0x368ebd['addEventListener']('load',_0x5c3ae7,{'once':!![]}),_0x368ebd['addEventListener']('error',_0x13ad33,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0xa7ead9){const _0x4829d2=_0xa7ead9['getAttribute']('data-mermaid-source');if(!_0x4829d2)return null;let _0x2c9fa5=_0x4829d2;try{_0x2c9fa5=decodeURIComponent(_0x4829d2);}catch{}return _0xa7ead9['textContent']=_0x2c9fa5,_0xa7ead9['removeAttribute']('data-processed'),_0xa7ead9['removeAttribute']('aria-roledescription'),_0xa7ead9['removeAttribute']('role'),_0xa7ead9['removeAttribute']('aria-label'),_0x2c9fa5;}function collectMermaidNodes(_0x4e8de4,_0x36b65a){if(!(_0x4e8de4 instanceof Element))return;_0x4e8de4['matches']('.mermaid[data-mermaid-source]')&&_0x36b65a['add'](_0x4e8de4),_0x4e8de4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x54f9cf=>{_0x36b65a['add'](_0x54f9cf);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x24acdc=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x97bb4d=>setTimeout(_0x97bb4d,0x0);_0x24acdc(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3ae204=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3ae204);});});}function queueMermaidRender(_0x948937){const _0x4550b3=new Set();_0x948937 instanceof Document||_0x948937 instanceof DocumentFragment?_0x948937['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x699d8e=>_0x4550b3['add'](_0x699d8e)):collectMermaidNodes(_0x948937,_0x4550b3);if(_0x4550b3['size']===0x0)return;_0x4550b3['forEach'](_0x1565f0=>pendingMermaidNodes['add'](_0x1565f0)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd31262=Array['from'](pendingMermaidNodes)['filter'](_0x1a96fb=>_0x1a96fb['isConnected']);pendingMermaidNodes['clear']();if(_0xd31262['length']===0x0)return;const _0x5a0fbc=await loadMermaid();if(!_0x5a0fbc)return;configureMermaidInstance();const _0x1e0e58=getMermaidTheme();for(const _0x34b9f3 of _0xd31262){const _0x44bfb9=_0x34b9f3['getAttribute']('data-mermaid-source');if(!_0x44bfb9)continue;const _0x3e93c7=_0x34b9f3['getAttribute']('data-processed')==='true';if(_0x3e93c7&&_0x34b9f3['dataset']['mermaidTheme']===_0x1e0e58)continue;restoreMermaidSource(_0x34b9f3);try{if(typeof _0x5a0fbc['run']==='function')await _0x5a0fbc['run']({'nodes':[_0x34b9f3]});else typeof _0x5a0fbc['init']==='function'&&_0x5a0fbc['init'](undefined,[_0x34b9f3]);_0x34b9f3['dataset']['mermaidTheme']=_0x1e0e58,delete _0x34b9f3['dataset']['mermaidError'];}catch(_0xb9df39){console['error']('Mermaid\x20render\x20failed:',_0xb9df39),restoreMermaidSource(_0x34b9f3),_0x34b9f3['dataset']['mermaidError']='true',delete _0x34b9f3['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x317912=>{_0x317912['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x317912);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c413f=>{_0x4c413f['forEach'](_0x46df75=>{_0x46df75['addedNodes']['forEach'](_0x2eb852=>{_0x2eb852['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2eb852);});});}),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'(_0x2b0c61){const _0x36e6a9=new Date(_0x2b0c61),_0xdbbd26=new Date(),_0x1c2d72=_0xdbbd26-_0x36e6a9,_0x2b2e0e=Math['floor'](_0x1c2d72/0x3e8),_0x125ddd=Math['floor'](_0x2b2e0e/0x3c),_0x39a0ae=Math['floor'](_0x125ddd/0x3c),_0x3ad77d=Math['floor'](_0x39a0ae/0x18);if(_0x2b2e0e<0x3c)return'now';if(_0x125ddd<0x3c)return _0x125ddd+'m\x20ago';if(_0x39a0ae<0x18)return _0x39a0ae+'h\x20ago';return _0x3ad77d+'d\x20ago';},'getStatusIcon'(_0x6406){switch(_0x6406){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x19d628){switch(_0x19d628){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'(_0x3e75da,_0x582498=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x389510={};_0x389510['text/plain']=new Blob([_0x3e75da],{'type':'text/plain'});_0x582498&&(_0x389510['text/html']=new Blob([_0x582498],{'type':'text/html'}));const _0x1919cd=new ClipboardItem(_0x389510);return await navigator['clipboard']['write']([_0x1919cd]),!![];}catch(_0x39f77e){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x39f77e);}try{const _0x55361a=_0xea956d=>{_0xea956d['preventDefault'](),_0xea956d['clipboardData']['setData']('text/plain',_0x3e75da),_0x582498&&_0xea956d['clipboardData']['setData']('text/html',_0x582498);};document['addEventListener']('copy',_0x55361a);const _0x4e1579=document['execCommand']('copy');document['removeEventListener']('copy',_0x55361a);if(_0x4e1579)return!![];}catch(_0x241b35){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x241b35);}try{const _0xaa27c2=document['createElement']('textarea');_0xaa27c2['value']=_0x3e75da,_0xaa27c2['style']['position']='fixed',_0xaa27c2['style']['opacity']='0',_0xaa27c2['style']['pointerEvents']='none',document['body']['appendChild'](_0xaa27c2),_0xaa27c2['select']();const _0x306a50=document['execCommand']('copy');return document['body']['removeChild'](_0xaa27c2),_0x306a50;}catch(_0x219d69){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x219d69),![];}},'showToast'(_0x381f75,_0xf763a4='info'){const _0x4d816c=getNextToastId(),_0x4d739c=document['createElement']('div');_0x4d739c['className']='toast\x20toast-'+_0xf763a4,_0x4d739c['textContent']=_0x381f75,_0x4d739c['dataset']['toastId']=_0x4d816c,document['body']['appendChild'](_0x4d739c);const _0x367776=_0xf763a4==='error'?0x2710:0xbb8,_0x200642=setTimeout(()=>{removeToastById(_0x4d816c);},_0x367776),_0x504a8f={'id':_0x4d816c,'el':_0x4d739c,'timeoutId':_0x200642};return registerToast(_0x504a8f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x4d739c['classList']['add']('show');});}),_0x4d816c;},'showError'(_0x512abf){console['error'](_0x512abf);const _0x274155=typeof _0x512abf==='string'?_0x512abf:_0x512abf['message']||'An\x20error\x20occurred';this['showToast'](_0x274155,'error');},'showSuccess'(_0x56bd35){this['showToast'](_0x56bd35,'success');},'capitalize'(_0x1fca37){if(!_0x1fca37)return'';return _0x1fca37['charAt'](0x0)['toUpperCase']()+_0x1fca37['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c7f67){return escapeHtmlValue(_0x2c7f67);},'ansiToHtml'(_0x286f57){if(_0x286f57===null||_0x286f57===undefined)return'';let _0x5956f8=this['escapeHtml'](_0x286f57);const _0x5eb35f={'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'},_0x4aa4ab={'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 _0x3a3675=0x0;return _0x5956f8=_0x5956f8['replace'](/\x1b\[([0-9;]*)m/g,(_0xcc3a52,_0x68e9e9)=>{if(!_0x68e9e9||_0x68e9e9==='0'){const _0x328768='</span>'['repeat'](_0x3a3675);return _0x3a3675=0x0,_0x328768;}const _0x12b13f=_0x68e9e9['split'](';'),_0x5922be=[];for(const _0x5a5a66 of _0x12b13f){if(_0x5a5a66==='1')_0x5922be['push']('font-weight:bold');else{if(_0x5a5a66==='2')_0x5922be['push']('opacity:0.7');else{if(_0x5a5a66==='3')_0x5922be['push']('font-style:italic');else{if(_0x5a5a66==='4')_0x5922be['push']('text-decoration:underline');else{if(_0x5a5a66==='9')_0x5922be['push']('text-decoration:line-through');else{if(_0x5eb35f[_0x5a5a66])_0x5922be['push']('color:'+_0x5eb35f[_0x5a5a66]);else{if(_0x4aa4ab[_0x5a5a66])_0x5922be['push']('background-color:'+_0x4aa4ab[_0x5a5a66]);}}}}}}}if(_0x5922be['length']>0x0)return _0x3a3675++,'<span\x20style=\x22'+_0x5922be['join'](';')+'\x22>';return'';}),_0x5956f8+='</span>'['repeat'](_0x3a3675),_0x5956f8=_0x5956f8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3558c6,_0x30f1db)=>{if(!_0x30f1db||_0x30f1db==='0')return'';const _0x24993f=_0x30f1db['split'](';'),_0x4a15f0=[];for(const _0x4616a7 of _0x24993f){if(_0x4616a7==='1')_0x4a15f0['push']('font-weight:bold');else{if(_0x5eb35f[_0x4616a7])_0x4a15f0['push']('color:'+_0x5eb35f[_0x4616a7]);else{if(_0x4aa4ab[_0x4616a7])_0x4a15f0['push']('background-color:'+_0x4aa4ab[_0x4616a7]);}}}if(_0x4a15f0['length']>0x0)return'<span\x20style=\x22'+_0x4a15f0['join'](';')+'\x22>';return'';}),_0x5956f8;},'showModal'({title:_0x34032c,content:_0x566ecd,buttons:buttons=[]}){const _0x5a7719='\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'](_0x34032c)+'</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'+_0x566ecd+'\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']((_0x4b80e7,_0x4948ec)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4b80e7['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4948ec+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4b80e7['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',_0x37dc66=document['createElement']('div');_0x37dc66['id']='utils-modal',_0x37dc66['className']='modal',_0x37dc66['innerHTML']=_0x5a7719,document['body']['appendChild'](_0x37dc66);const _0x42d43a=document['getElementById']('utils-modal-close');_0x42d43a&&_0x42d43a['addEventListener']('click',()=>this['hideModal']());const _0x138d3f=_0x37dc66['querySelectorAll']('[data-btn-index]');_0x138d3f['forEach'](_0x5691f5=>{const _0x4b074d=parseInt(_0x5691f5['dataset']['btnIndex']);buttons[_0x4b074d]?.['onClick']&&_0x5691f5['addEventListener']('click',buttons[_0x4b074d]['onClick']);});const _0x5b2381=document['getElementById']('utils-modal-overlay');_0x5b2381&&_0x5b2381['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x5dbd9d=document['getElementById']('utils-modal');_0x5dbd9d&&_0x5dbd9d['remove']();},'parseKeyValuePairs'(_0x42efb7){const _0x3475ae={};if(!_0x42efb7)return _0x3475ae;return _0x42efb7['split'](/\r?\n/)['map'](_0xd152b5=>_0xd152b5['trim']())['filter'](Boolean)['forEach'](_0x41cab0=>{const _0x16f08f=_0x41cab0['indexOf']('=');if(_0x16f08f>0x0){const _0x1d0ef6=_0x41cab0['slice'](0x0,_0x16f08f)['trim'](),_0x1e0969=_0x41cab0['slice'](_0x16f08f+0x1)['trim']();if(_0x1d0ef6)_0x3475ae[_0x1d0ef6]=_0x1e0969;}}),_0x3475ae;},'debounce'(_0x2de72a,_0x399cc8=0xfa){let _0x27f963=null;return(..._0x19e8c0)=>{clearTimeout(_0x27f963),_0x27f963=setTimeout(()=>_0x2de72a['apply'](this,_0x19e8c0),_0x399cc8);};},'formatTimestamp'(_0x2b62c1){if(!_0x2b62c1)return'N/A';const _0x55c984=new Date(_0x2b62c1);return _0x55c984['toLocaleDateString']()+'\x20'+_0x55c984['toLocaleTimeString']();},'getQueryParams'(){const _0x4e41d6=new URLSearchParams(window['location']['search']),_0x491de4={};for(const [_0x21d7f4,_0x27b3a9]of _0x4e41d6){_0x491de4[_0x21d7f4]=_0x27b3a9;}return _0x491de4;},'formatDuration'(_0x5c629a,_0x26c498){if(!_0x5c629a)return'N/A';const _0x8fdd6b=new Date(_0x5c629a),_0x3b538c=_0x26c498?new Date(_0x26c498):new Date(),_0x9c5866=_0x3b538c-_0x8fdd6b;if(_0x9c5866<0x0)return'0s';const _0x4ee8f7=Math['floor'](_0x9c5866/0x3e8),_0x4e895c=Math['floor'](_0x4ee8f7/0x3c),_0x45450c=Math['floor'](_0x4e895c/0x3c),_0x36ced4=Math['floor'](_0x45450c/0x18);if(_0x4ee8f7<0x3c)return _0x4ee8f7+'s';if(_0x4e895c<0x3c)return _0x4e895c+'m\x20'+_0x4ee8f7%0x3c+'s';if(_0x45450c<0x18)return _0x45450c+'h\x20'+_0x4e895c%0x3c+'m\x20'+_0x4ee8f7%0x3c+'s';return _0x36ced4+'d\x20'+_0x45450c%0x18+'h\x20'+_0x4e895c%0x3c+'m';},'renderMarkdown'(_0x52f66b,_0x16aef8={}){if(!_0x52f66b)return'';_0x52f66b=this['rewriteAttachmentLinks'](_0x52f66b,_0x16aef8),_0x52f66b=this['rewriteColorSyntax'](_0x52f66b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x52f66b);}catch(_0x5e6205){return console['error']('Markdown\x20parsing\x20error:',_0x5e6205),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);}},'rewriteAttachmentLinks'(_0x82cae,_0x41feb4={}){const _0x2bed05=typeof _0x41feb4['resolveAttachmentUrl']==='function'?_0x41feb4['resolveAttachmentUrl']:_0x41feb4['taskId']?_0x20be8b=>API_BASE+'/tasks/'+_0x41feb4['taskId']+'/attachments/'+encodeURIComponent(_0x20be8b):null;if(!_0x2bed05)return _0x82cae;return String(_0x82cae)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x533ac9,_0x3cf6a4)=>{const _0x32093a=String(_0x3cf6a4||'')['trim']();if(!_0x32093a)return _0x533ac9;let _0x150dd0=_0x32093a;try{_0x150dd0=decodeURIComponent(_0x32093a);}catch{}const _0x13a8c6=_0x2bed05(_0x150dd0);if(!_0x13a8c6)return _0x533ac9;return']('+_0x13a8c6+')';});},'rewriteColorSyntax'(_0x1c1ee8){if(!_0x1c1ee8)return _0x1c1ee8;return String(_0x1c1ee8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e3b12,_0x241d0d,_0x3b106e)=>{const _0x4039a9=this['rewriteColorSyntax'](_0x3b106e);return'<span\x20style=\x22color:\x20'+_0x241d0d+'\x22>'+_0x4039a9+'</span>';});},'renderMarkdownFallback'(_0x1345b8,_0xc84885={}){if(!_0x1345b8)return'';_0x1345b8=_0x1345b8['replace'](/\r\n/g,'\x0a'),_0x1345b8=_0x1345b8['replace'](/\r/g,'\x0a'),_0x1345b8=this['rewriteAttachmentLinks'](_0x1345b8,_0xc84885);let _0x136ee3=this['escapeHtml'](_0x1345b8);return _0x136ee3=_0x136ee3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x136ee3=_0x136ee3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x136ee3=_0x136ee3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x136ee3=_0x136ee3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x136ee3=_0x136ee3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x136ee3=_0x136ee3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x136ee3=_0x136ee3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x136ee3=_0x136ee3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x136ee3=_0x136ee3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x136ee3=_0x136ee3['replace'](/\n\n/g,'</p><p>'),_0x136ee3=_0x136ee3['replace'](/\n/g,'<br>'),'<p>'+_0x136ee3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0xcfeb7=new Uint8Array(0x10);crypto['getRandomValues'](_0xcfeb7),_0xcfeb7[0x6]=_0xcfeb7[0x6]&0xf|0x40,_0xcfeb7[0x8]=_0xcfeb7[0x8]&0x3f|0x80;const _0x52b1b5=Array['from'](_0xcfeb7,_0x2d9210=>_0x2d9210['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x52b1b5['slice'](0x0,0x8)+'-'+_0x52b1b5['slice'](0x8,0xc)+'-'+_0x52b1b5['slice'](0xc,0x10)+'-'+_0x52b1b5['slice'](0x10,0x14)+'-'+_0x52b1b5['slice'](0x14);}};export class CustomSelect{constructor(_0x5c2252,_0x2547f1={}){this['nativeSelect']=_0x5c2252,this['options']=_0x2547f1,this['isOpen']=![],this['selectedValue']=_0x5c2252['value']||'',this['searchable']=_0x2547f1['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x135976=document['createElement']('div');_0x135976['className']='custom-select';const _0x1733b8=document['createElement']('div');_0x1733b8['className']='custom-select-trigger',_0x1733b8['setAttribute']('tabindex','0'),_0x1733b8['setAttribute']('role','button'),_0x1733b8['setAttribute']('aria-haspopup','listbox');const _0x5e5ab3=document['createElement']('span');_0x5e5ab3['className']='custom-select-trigger-text';const _0x52aea9=document['createElement']('span');_0x52aea9['className']='custom-select-arrow',_0x52aea9['textContent']='▼',_0x1733b8['appendChild'](_0x5e5ab3),_0x1733b8['appendChild'](_0x52aea9);const _0x2662b6=document['createElement']('div');_0x2662b6['className']='custom-select-dropdown',_0x2662b6['setAttribute']('role','listbox');if(this['searchable']){const _0x4aabdd=document['createElement']('div');_0x4aabdd['className']='custom-select-search';const _0x1cf08c=document['createElement']('input');_0x1cf08c['type']='text',_0x1cf08c['className']='custom-select-search-input',_0x1cf08c['placeholder']='Type\x20to\x20search...',_0x1cf08c['setAttribute']('aria-label','Search\x20options'),_0x1cf08c['addEventListener']('input',_0x1fbe86=>{this['searchQuery']=_0x1fbe86['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1cf08c['addEventListener']('keydown',_0x192bab=>{if(_0x192bab['key']==='Escape')_0x192bab['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x192bab['key']==='Enter'){_0x192bab['preventDefault'](),_0x192bab['stopPropagation']();const _0x28b16c=_0x2662b6['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x28b16c){const _0x426263=_0x28b16c['getAttribute']('data-value');this['select'](_0x426263);}}}}),_0x4aabdd['appendChild'](_0x1cf08c),_0x2662b6['appendChild'](_0x4aabdd),this['searchInput']=_0x1cf08c;}const _0x58913a=document['createElement']('div');_0x58913a['className']='custom-select-options',_0x2662b6['appendChild'](_0x58913a),_0x135976['appendChild'](_0x1733b8),_0x135976['appendChild'](_0x2662b6),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x135976,this['nativeSelect']),this['wrapper']=_0x135976,this['trigger']=_0x1733b8,this['triggerText']=_0x5e5ab3,this['dropdown']=_0x2662b6,this['optionsContainer']=_0x58913a,_0x1733b8['addEventListener']('click',()=>this['toggle']()),_0x1733b8['addEventListener']('keydown',_0x5e9431=>this['handleKeydown'](_0x5e9431)),document['addEventListener']('click',_0x570845=>{!_0x135976['contains'](_0x570845['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4576ba=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4576ba['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x767460=new MutationObserver(()=>{this['updateDisabledState']();});_0x767460['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x454934=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x454934['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4121d2=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4121d2),this['trigger']['setAttribute']('aria-disabled',_0x4121d2?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4121d2?'-1':'0'),_0x4121d2&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x518edb=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x40e9f7=_0x518edb['filter'](_0xa634d6=>!_0xa634d6['disabled']&&!_0xa634d6['hidden']);_0x518edb['forEach']((_0x104f88,_0x12deed)=>{const _0x17697a=document['createElement']('div');_0x17697a['className']='custom-select-option',_0x17697a['textContent']=_0x104f88['textContent'],_0x17697a['setAttribute']('data-value',_0x104f88['value']),_0x17697a['setAttribute']('data-index',_0x12deed),_0x17697a['setAttribute']('role','option'),_0x104f88['disabled']?_0x17697a['classList']['add']('disabled'):_0x17697a['addEventListener']('click',()=>this['select'](_0x104f88['value'])),_0x104f88['value']===this['selectedValue']&&_0x17697a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x17697a),this['allOptions']['push']({'element':_0x17697a,'text':_0x104f88['textContent']['toLowerCase'](),'value':_0x104f88['value'],'disabled':_0x104f88['disabled']});});if(this['searchable']&&this['searchInput']){const _0xb68b4a=this['searchInput']['parentElement'];_0x40e9f7['length']>0x3?_0xb68b4a['style']['display']='':_0xb68b4a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd5e8b2=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x391ca5=>{if(!_0xd5e8b2||_0x391ca5['disabled'])_0x391ca5['element']['style']['display']='';else{const _0x1feb34=_0x391ca5['text']['includes'](_0xd5e8b2);_0x391ca5['element']['style']['display']=_0x1feb34?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4ee515){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4ee515,this['nativeSelect']['value']=_0x4ee515;const _0xe437e1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xe437e1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x424201=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x424201&&(this['triggerText']['textContent']=_0x424201['textContent'],_0x424201['disabled']||_0x424201['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x235378=>{_0x235378['getAttribute']('data-value')===this['selectedValue']?_0x235378['classList']['add']('selected'):_0x235378['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 _0x103b80=window['getComputedStyle'](this['dropdown']);if(_0x103b80['position']==='fixed'){const _0xea013a=this['trigger']['getBoundingClientRect'](),_0x5794a2=parseInt(_0x103b80['maxHeight'])||0xc8,_0x533912=window['innerHeight'],_0x1dc07e=_0x533912-_0xea013a['bottom'],_0x119fbd=_0xea013a['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3612ee;_0x1dc07e<_0x5794a2&&_0x119fbd>_0x1dc07e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x533912-_0xea013a['top']+'px',_0x3612ee=Math['min'](_0x5794a2,_0x119fbd-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xea013a['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3612ee=Math['min'](_0x5794a2,_0x1dc07e-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px');if(this['optionsContainer']){let _0x38ded0=_0x3612ee;if(this['searchInput']){const _0x3b8a3e=this['searchInput']['parentElement'];_0x3b8a3e&&(_0x38ded0-=_0x3b8a3e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x38ded0)+'px';}this['dropdown']['style']['left']=_0xea013a['left']+'px',this['dropdown']['style']['width']=_0xea013a['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3553a7=this['searchInput']['parentElement'];_0x3553a7&&_0x3553a7['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'](_0x3e4399){if(this['nativeSelect']['disabled'])return;if(_0x3e4399['key']==='Enter'||_0x3e4399['key']==='\x20')_0x3e4399['preventDefault'](),this['toggle']();else _0x3e4399['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5c3772='\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',_0x5c3772),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5a15ed=document['getElementById']('confirm-dialog-close'),_0x209da6=document['getElementById']('confirm-dialog-cancel'),_0x1a5e8b=document['getElementById']('confirm-dialog-confirm'),_0x48eac4=this['_modal']['querySelector']('.modal-overlay');_0x5a15ed['addEventListener']('click',()=>this['_resolve'](![])),_0x209da6['addEventListener']('click',()=>this['_resolve'](![])),_0x1a5e8b['addEventListener']('click',()=>this['_resolve'](!![])),_0x48eac4['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5a80f0=>{if(_0x5a80f0['key']==='Escape')_0x5a80f0['preventDefault'](),this['_resolve'](![]);else _0x5a80f0['key']==='Enter'&&(_0x5a80f0['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x287433,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4a6c0b=>{this['_resolvePromise']=_0x4a6c0b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x287433;const _0x100ed9=document['getElementById']('confirm-dialog-cancel'),_0x5e406e=document['getElementById']('confirm-dialog-confirm');_0x100ed9['textContent']=cancelText,_0x5e406e['textContent']=confirmText,_0x5e406e['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5e406e['focus']();});},'_resolve'(_0x4f54f0){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4f54f0),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e71bc,_0x57d1d7={}){this['container']=_0x3e71bc,this['options']={'placeholder':_0x57d1d7['placeholder']||'Type\x20to\x20search...','maxItems':_0x57d1d7['maxItems']||0x64,'loadItems':_0x57d1d7['loadItems']||(async()=>[]),'renderItem':_0x57d1d7['renderItem']||(_0x3ee633=>({'primary':String(_0x3ee633),'secondary':''})),'onSelect':_0x57d1d7['onSelect']||(()=>{}),'filterItems':_0x57d1d7['filterItems']||null,'getItemValue':_0x57d1d7['getItemValue']||(_0x421a25=>_0x421a25),'sortItems':_0x57d1d7['sortItems']||null,'debounceMs':_0x57d1d7['debounceMs']||0xc8,'minCharsForSearch':_0x57d1d7['minCharsForSearch']||0x0,'emptyMessage':_0x57d1d7['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x57d1d7['loadingMessage']||'Loading...','preload':_0x57d1d7['preload']!==![],'searchMode':_0x57d1d7['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',_0x467c93=>this['onBlur'](_0x467c93)),this['input']['addEventListener']('input',_0x495382=>this['onInput'](_0x495382)),this['input']['addEventListener']('keydown',_0x1affc2=>this['onKeydown'](_0x1affc2)),this['clearBtn']['addEventListener']('mousedown',_0x5bb182=>{_0x5bb182['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x375470=>{_0x375470['preventDefault']();}),document['addEventListener']('click',_0xa82868=>{!this['wrapper']['contains'](_0xa82868['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(_0x558d2b){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x558d2b);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x435f3f){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x1f953f){const _0x4d2fbf=_0x1f953f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4d2fbf);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4d2fbf):this['loadAndShow'](_0x4d2fbf);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1e0db9){switch(_0x1e0db9['key']){case'ArrowDown':_0x1e0db9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1e0db9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1e0db9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1e0db9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2feb26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5ca786=this['selectedIndex']+_0x2feb26;if(_0x5ca786>=0x0&&_0x5ca786<this['filteredItems']['length']){this['selectedIndex']=_0x5ca786,this['updateSelectionHighlight']();const _0x116633=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x116633[this['selectedIndex']]&&_0x116633[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c26ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c26ce['forEach']((_0x1572ca,_0xaad1b6)=>{_0x1572ca['classList']['toggle']('keyboard-selected',_0xaad1b6===this['selectedIndex']);});}async['loadAndShow'](_0x432d5c){this['showLoading']();try{const _0x3f6f2e=await this['options']['loadItems'](_0x432d5c);if(this['options']['searchMode']==='server'){let _0x588b3b=_0x3f6f2e;this['options']['sortItems']&&(_0x588b3b=this['options']['sortItems']([..._0x3f6f2e]));this['filteredItems']=_0x588b3b;const _0x148ea6=this['filteredItems']['length']>=this['options']['maxItems'];_0x148ea6&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x148ea6),this['open']();}else this['allItems']=_0x3f6f2e,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x432d5c);}catch(_0x1a6dbe){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x1a6dbe),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x35935a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x35935a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x12f432=this['filteredItems']['length']>=this['options']['maxItems'];_0x12f432&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x12f432),this['open']();}['renderItems'](_0x5dccab){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']((_0x2d45a4,_0x33bc5a)=>{const _0xb86fc3=document['createElement']('div');_0xb86fc3['className']='autocomplete-select-item',_0xb86fc3['setAttribute']('role','option'),_0xb86fc3['setAttribute']('data-index',_0x33bc5a);const _0x17e8e2=this['options']['renderItem'](_0x2d45a4);let _0x31798d='';_0x17e8e2['icon']&&(_0x31798d='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x17e8e2['iconClass']||'')+'\x22>'+_0x17e8e2['icon']+'</span>'),_0xb86fc3['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x31798d+'\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'](_0x17e8e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x17e8e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x17e8e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xb86fc3['addEventListener']('click',()=>{this['selectItem'](_0x2d45a4);}),_0xb86fc3['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x33bc5a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xb86fc3);}),_0x5dccab?(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'](_0xcc4cc7){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0xcc4cc7)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x12c987){this['selectedItem']=_0x12c987;const _0x4834df=this['options']['renderItem'](_0x12c987);this['input']['value']=_0x4834df['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x12c987);}['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'](_0x2b864c){if(_0x2b864c){this['selectedItem']=_0x2b864c;const _0x31cdef=this['options']['renderItem'](_0x2b864c);this['input']['value']=_0x31cdef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x659fad){this['allItems']=_0x659fad,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'](_0x3d3d88){this['input']['placeholder']=_0x3d3d88;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3f75b8=null){const _0x4dc393=document['getElementById']('admin-menu-container'),_0x4a33d8=document['getElementById']('admin-menu-btn'),_0x5f4f89=document['getElementById']('admin-menu');if(!_0x4dc393||!_0x4a33d8||!_0x5f4f89)return;try{!_0x3f75b8&&(_0x3f75b8=await API['getCurrentUser']());if(_0x3f75b8){const _0x5f082b=window['Permissions'],_0x5ad8bb=_0x5f082b['hasServerPermission'](_0x3f75b8,'*')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:manage')||_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')||_0x5f082b['hasTeamPermission'](_0x3f75b8,'teams:manage')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:view_details');if(!_0x5ad8bb)return;_0x4dc393['hidden']=![];if(!_0x5f082b['hasServerPermission'](_0x3f75b8,'*')){const _0x4debb5=_0x5f4f89['querySelectorAll']('.admin-menu-item');_0x4debb5['forEach'](_0x567e3c=>{const _0x8c1288=_0x567e3c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x8c1288==='Users'&&!_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Skills'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Settings'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Health'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Git\x20History'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Roles'&&(_0x567e3c['hidden']=!![]);});}_0x4a33d8['addEventListener']('click',_0x4cae85=>{_0x4cae85['stopPropagation']();const _0x1b5b15=document['getElementById']('actions-menu');if(_0x1b5b15)_0x1b5b15['hidden']=!![];_0x5f4f89['hidden']=!_0x5f4f89['hidden'];}),document['addEventListener']('click',_0x7989d0=>{!_0x5f4f89['hidden']&&!_0x4a33d8['contains'](_0x7989d0['target'])&&!_0x5f4f89['contains'](_0x7989d0['target'])&&(_0x5f4f89['hidden']=!![]);}),document['addEventListener']('keydown',_0x3393b9=>{_0x3393b9['key']==='Escape'&&!_0x5f4f89['hidden']&&(_0x5f4f89['hidden']=!![]);});const _0x4b8069=document['getElementById']('server-health-btn');_0x4b8069&&_0x4b8069['addEventListener']('click',async()=>{_0x5f4f89['hidden']=!![];const {openServerHealthModal:_0x5b6cae}=await import('./server-health.js');_0x5b6cae();});}}catch(_0x1f99f8){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1f99f8['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|