@profoundlogic/coderflow-server 0.6.2 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 _0x558bfe=window['location']['pathname'],_0x1a621b=_0x558bfe['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1a621b)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1a621b[0x1]),_0x1a621b[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x54768b={}){const _0x3ad123=new URLSearchParams();_0x54768b['userId']&&_0x3ad123['set']('userId',String(_0x54768b['userId']));_0x54768b['automation']&&_0x3ad123['set']('automation',String(_0x54768b['automation']));const _0x37b635=API_BASE+'/tasks/stats'+(_0x3ad123['toString']()?'?'+_0x3ad123['toString']():''),_0x44ebcc=await fetch(_0x37b635);if(!_0x44ebcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44ebcc['statusText']);return await _0x44ebcc['json']();},async 'getTasks'(_0x46df3f={}){const _0x4dd9ea=new URLSearchParams();_0x46df3f['status']&&_0x4dd9ea['set']('status',String(_0x46df3f['status']));_0x46df3f['environment']&&_0x4dd9ea['set']('environment',String(_0x46df3f['environment']));_0x46df3f['automation']&&_0x4dd9ea['set']('automation',String(_0x46df3f['automation']));if(_0x46df3f['include']){const _0x27d059=Array['isArray'](_0x46df3f['include'])?_0x46df3f['include']['join'](','):String(_0x46df3f['include']);_0x27d059&&_0x4dd9ea['set']('include',_0x27d059);}_0x46df3f['filter']&&_0x4dd9ea['set']('filter',String(_0x46df3f['filter']));_0x46df3f['page']&&_0x4dd9ea['set']('page',String(_0x46df3f['page']));_0x46df3f['limit']&&_0x4dd9ea['set']('limit',String(_0x46df3f['limit']));_0x46df3f['userId']&&_0x4dd9ea['set']('userId',String(_0x46df3f['userId']));_0x46df3f['search']&&_0x4dd9ea['set']('search',String(_0x46df3f['search']));_0x46df3f['includeChildTasks']&&_0x4dd9ea['set']('includeChildTasks','true');const _0x4d95a3=API_BASE+'/tasks'+(_0x4dd9ea['toString']()?'?'+_0x4dd9ea['toString']():''),_0x4600a0=await fetch(_0x4d95a3);if(!_0x4600a0['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4600a0['statusText']);return await _0x4600a0['json']();},async 'getAutomations'(_0xef3604={}){const _0x50fade=new URLSearchParams();_0xef3604['environment']&&_0x50fade['set']('environment',String(_0xef3604['environment']));const _0x585126=await fetch(API_BASE+'/api/automations'+(_0x50fade['toString']()?'?'+_0x50fade['toString']():''));if(!_0x585126['ok']){const _0x34f575=await _0x585126['json']()['catch'](()=>({}));throw new Error(_0x34f575['message']||_0x34f575['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x585126['statusText']);}return await _0x585126['json']();},async 'getAutomation'(_0x5d3f7b){const _0x4613fe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5d3f7b));if(!_0x4613fe['ok']){const _0x5a167a=await _0x4613fe['json']()['catch'](()=>({}));throw new Error(_0x5a167a['message']||_0x5a167a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4613fe['statusText']);}return await _0x4613fe['json']();},async 'createAutomation'(_0x1cf893){const _0x27fe61=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cf893||{})});if(!_0x27fe61['ok']){const _0x3b7add=await _0x27fe61['json']()['catch'](()=>({}));throw new Error(_0x3b7add['message']||_0x3b7add['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x27fe61['statusText']);}return await _0x27fe61['json']();},async 'updateAutomation'(_0x29a69a,_0x564f91){const _0x37ff5b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29a69a),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f91||{})});if(!_0x37ff5b['ok']){const _0x544675=await _0x37ff5b['json']()['catch'](()=>({}));throw new Error(_0x544675['message']||_0x544675['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x37ff5b['statusText']);}return await _0x37ff5b['json']();},async 'deleteAutomation'(_0x56c48){const _0x1b6ade=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56c48),{'method':'DELETE'});if(!_0x1b6ade['ok']){const _0x5d8955=await _0x1b6ade['json']()['catch'](()=>({}));throw new Error(_0x5d8955['message']||_0x5d8955['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1b6ade['statusText']);}return await _0x1b6ade['json']();},async 'triggerAutomation'(_0x43e54c){const _0x16aa3a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43e54c)+'/trigger',{'method':'POST'});if(!_0x16aa3a['ok']){const _0x54442a=await _0x16aa3a['json']()['catch'](()=>({}));throw new Error(_0x54442a['message']||_0x54442a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x16aa3a['statusText']);}return await _0x16aa3a['json']();},async 'setAutomationEnabled'(_0x3fb294,_0x212717){const _0x364d8b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3fb294)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x212717})});if(!_0x364d8b['ok']){const _0x3ce5a0=await _0x364d8b['json']()['catch'](()=>({}));throw new Error(_0x3ce5a0['message']||_0x3ce5a0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x364d8b['statusText']);}return await _0x364d8b['json']();},async 'getAutomationHistory'(_0x2892b0,_0x11f16e=0x32){const _0x1560e0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2892b0)+'/history?limit='+encodeURIComponent(String(_0x11f16e)));if(!_0x1560e0['ok']){const _0x2fd163=await _0x1560e0['json']()['catch'](()=>({}));throw new Error(_0x2fd163['message']||_0x2fd163['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1560e0['statusText']);}return await _0x1560e0['json']();},async 'getTask'(_0x370c2c,_0x3b5508={}){const _0x1d43f1=new URLSearchParams();if(_0x3b5508['include']){const _0x390f4b=Array['isArray'](_0x3b5508['include'])?_0x3b5508['include']['join'](','):String(_0x3b5508['include']);if(_0x390f4b)_0x1d43f1['set']('include',_0x390f4b);}const _0x3886f6=await fetch(API_BASE+'/tasks/'+_0x370c2c+(_0x1d43f1['toString']()?'?'+_0x1d43f1['toString']():''));if(!_0x3886f6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x3886f6['statusText']);return await _0x3886f6['json']();},async 'getTaskResults'(_0x11021b){const _0x582f67=await fetch(API_BASE+'/tasks/'+_0x11021b+'/results');if(!_0x582f67['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x582f67['statusText']);return await _0x582f67['json']();},async 'getTaskPatches'(_0x5afbaa){const _0x310495=await fetch(API_BASE+'/tasks/'+_0x5afbaa+'/patches');if(!_0x310495['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x310495['statusText']);return await _0x310495['json']();},async 'getTaskAttachments'(_0x10572a){const _0x23ae5f=await fetch(API_BASE+'/tasks/'+_0x10572a+'/attachments');if(!_0x23ae5f['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x23ae5f['statusText']);return await _0x23ae5f['json']();},async 'uploadAttachments'(_0x4c2a2d,_0x16f212){const _0x4dc101=new FormData();for(const _0x88053d of _0x16f212){_0x4dc101['append']('attachments',_0x88053d);}const _0x44f016=await fetch(API_BASE+'/tasks/'+_0x4c2a2d+'/attachments',{'method':'POST','body':_0x4dc101});if(!_0x44f016['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x44f016['statusText']);return await _0x44f016['json']();},async 'isAINameGenerationAvailable'(){try{const _0x21d0dd=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x21d0dd['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x21d0dd['json']();}catch(_0x3afa8a){return{'available':![],'reason':_0x3afa8a['message']};}},async 'generateTaskName'(_0x45c767){try{const _0x4a8bac=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x45c767})});return await _0x4a8bac['json']();}catch(_0x1be9b6){return{'success':![],'error':_0x1be9b6['message']};}},async 'createTask'(_0x11a4e6){let _0x592c93,_0x2c8606={};if(_0x11a4e6['files']&&_0x11a4e6['files']['length']>0x0){const _0x43b22c=new FormData();for(const [_0x4283ae,_0x1b84ea]of Object['entries'](_0x11a4e6)){if(_0x4283ae!=='files'){if(_0x1b84ea==null)continue;typeof _0x1b84ea==='object'?_0x43b22c['append'](_0x4283ae,JSON['stringify'](_0x1b84ea)):_0x43b22c['append'](_0x4283ae,String(_0x1b84ea));}}for(const _0x2494ab of _0x11a4e6['files']){_0x43b22c['append']('attachments',_0x2494ab);}_0x592c93=_0x43b22c;}else _0x2c8606['Content-Type']='application/json',_0x592c93=JSON['stringify'](_0x11a4e6);const _0x2add2d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x2c8606,'body':_0x592c93});if(!_0x2add2d['ok']){const _0x4fdbbe=await _0x2add2d['json'](),_0x460021=new Error(_0x4fdbbe['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2add2d['statusText']),{message:_0x21993c,..._0xa57a02}=_0x4fdbbe;Object['assign'](_0x460021,_0xa57a02);throw _0x460021;}return await _0x2add2d['json']();},async 'createTestTask'(_0x1cb1ae){const _0x3c8a1e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cb1ae)});if(!_0x3c8a1e['ok']){const _0x1772ae=await _0x3c8a1e['json']();throw new Error(_0x1772ae['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c8a1e['statusText']);}return await _0x3c8a1e['json']();},async 'createEphemeralTest'(_0x102f51){const _0x3120ad=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x102f51)});if(!_0x3120ad['ok']){const _0x4f17fa=await _0x3120ad['json']();throw new Error(_0x4f17fa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3120ad['statusText']);}return await _0x3120ad['json']();},async 'createDeployTask'(_0x41ae1c){const _0x3c9168=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41ae1c)});if(!_0x3c9168['ok']){const _0x50264e=await _0x3c9168['json']();throw new Error(_0x50264e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3c9168['statusText']);}return await _0x3c9168['json']();},async 'getEnvironments'(){const _0x372c30=await fetch(API_BASE+'/environments');if(!_0x372c30['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x372c30['statusText']);return await _0x372c30['json']();},async 'getEnvironment'(_0x53bcb8){const _0x16dfa2=await fetch(API_BASE+'/environments/'+_0x53bcb8);if(!_0x16dfa2['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x16dfa2['statusText']);return await _0x16dfa2['json']();},async 'getEnvironmentRepoHistory'(_0x4c7658,_0x40a561,_0x549aa9={}){if(!_0x4c7658||!_0x40a561)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1c4748=new URLSearchParams();if(_0x549aa9['limit'])_0x1c4748['set']('limit',String(_0x549aa9['limit']));if(_0x549aa9['offset'])_0x1c4748['set']('offset',String(_0x549aa9['offset']));if(_0x549aa9['search'])_0x1c4748['set']('search',String(_0x549aa9['search']));if(_0x549aa9['branch'])_0x1c4748['set']('branch',String(_0x549aa9['branch']));const _0x5ae376=API_BASE+'/environments/'+encodeURIComponent(_0x4c7658)+'/repos/'+encodeURIComponent(_0x40a561)+'/git/history',_0x119c75=await fetch(''+_0x5ae376+(_0x1c4748['toString']()?'?'+_0x1c4748['toString']():''));if(!_0x119c75['ok']){const _0xc73c08=await _0x119c75['json']()['catch'](()=>({}));throw new Error(_0xc73c08['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x119c75['statusText']);}return await _0x119c75['json']();},async 'getEnvironmentRepoCommit'(_0x3b4fe9,_0x4a18e3,_0x267af0){if(!_0x3b4fe9||!_0x4a18e3||!_0x267af0)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x262ded=API_BASE+'/environments/'+encodeURIComponent(_0x3b4fe9)+'/repos/'+encodeURIComponent(_0x4a18e3)+'/git/commits/'+encodeURIComponent(_0x267af0),_0x356f95=await fetch(_0x262ded);if(!_0x356f95['ok']){const _0x4cb4ce=await _0x356f95['json']()['catch'](()=>({}));throw new Error(_0x4cb4ce['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x356f95['statusText']);}return await _0x356f95['json']();},async 'getEnvironmentRepoBranches'(_0x145907,_0x2bf629){if(!_0x145907||!_0x2bf629)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x316dc1=API_BASE+'/environments/'+encodeURIComponent(_0x145907)+'/repos/'+encodeURIComponent(_0x2bf629)+'/git/branches',_0xb04567=await fetch(_0x316dc1);if(!_0xb04567['ok']){const _0x318dfe=await _0xb04567['json']()['catch'](()=>({}));throw new Error(_0x318dfe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xb04567['statusText']);}return await _0xb04567['json']();},async 'revertEnvironmentRepoCommit'(_0x1ad243,_0x12d720,_0x3c243d,_0x10698a={}){if(!_0x1ad243||!_0x12d720||!_0x3c243d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xa41b7a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1ad243)+'/repos/'+encodeURIComponent(_0x12d720)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3c243d,..._0x10698a})});if(!_0xa41b7a['ok']){const _0xd333a0=await _0xa41b7a['json']()['catch'](()=>({}));throw new Error(_0xd333a0['message']||_0xd333a0['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0xa41b7a['statusText']);}return await _0xa41b7a['json']();},async 'getTemplates'(_0x12dc59={}){const _0x4b5bcc=new URLSearchParams();if(_0x12dc59['include']){const _0x447c5e=Array['isArray'](_0x12dc59['include'])?_0x12dc59['include']['join'](','):String(_0x12dc59['include']);if(_0x447c5e)_0x4b5bcc['set']('include',_0x447c5e);}const _0x4889a2=await fetch(API_BASE+'/templates'+(_0x4b5bcc['toString']()?'?'+_0x4b5bcc['toString']():''));if(!_0x4889a2['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4889a2['statusText']);return await _0x4889a2['json']();},async 'getTemplatesForEnvironment'(_0x23cfd4,_0x4ed2b3={}){if(!_0x23cfd4)throw new Error('Environment\x20name\x20is\x20required');const _0x1adab5=new URLSearchParams();if(_0x4ed2b3['include']){const _0x3a51b7=Array['isArray'](_0x4ed2b3['include'])?_0x4ed2b3['include']['join'](','):String(_0x4ed2b3['include']);if(_0x3a51b7)_0x1adab5['set']('include',_0x3a51b7);}const _0xd9187e=await fetch(API_BASE+'/templates/'+_0x23cfd4+(_0x1adab5['toString']()?'?'+_0x1adab5['toString']():''));if(!_0xd9187e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x23cfd4+':\x20'+_0xd9187e['statusText']);return await _0xd9187e['json']();},async 'getTemplate'(_0x401727,_0x401e97,_0x35106b={}){if(!_0x401727||!_0x401e97)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x426764=new URLSearchParams();if(_0x35106b['include']){const _0x1993ed=Array['isArray'](_0x35106b['include'])?_0x35106b['include']['join'](','):String(_0x35106b['include']);if(_0x1993ed)_0x426764['set']('include',_0x1993ed);}const _0x503a1f=await fetch(API_BASE+'/templates/'+_0x401727+'/'+_0x401e97+(_0x426764['toString']()?'?'+_0x426764['toString']():''));if(!_0x503a1f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x503a1f['statusText']);return await _0x503a1f['json']();},async 'getTaskLogs'(_0x63639b,_0x225ffe={}){if(!_0x63639b)throw new Error('Task\x20ID\x20is\x20required');const _0x5082eb=new URLSearchParams();_0x225ffe['tail']&&_0x5082eb['set']('tail',String(_0x225ffe['tail']));const _0x34f739=await fetch(API_BASE+'/tasks/'+_0x63639b+'/logs'+(_0x5082eb['toString']()?'?'+_0x5082eb['toString']():''));if(!_0x34f739['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x34f739['statusText']);return await _0x34f739['text']();},async 'getContainers'(){const _0x416107=await fetch(API_BASE+'/containers');if(!_0x416107['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x416107['statusText']);return await _0x416107['json']();},async 'getContainer'(_0x48389e){const _0x5cdcaa=await fetch(API_BASE+'/containers/'+_0x48389e);if(!_0x5cdcaa['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5cdcaa['statusText']);return await _0x5cdcaa['json']();},async 'startInteractiveContainer'(_0x300f92){const _0x40ca32=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x300f92)});if(!_0x40ca32['ok']){const _0x271852=await _0x40ca32['json']()['catch'](()=>({}));throw new Error(_0x271852['message']||'Failed\x20to\x20start\x20container:\x20'+_0x40ca32['statusText']);}return await _0x40ca32['json']();},async 'stopContainer'(_0x32e44d){const _0x8dad81=await fetch(API_BASE+'/containers/'+_0x32e44d,{'method':'DELETE'});if(!_0x8dad81['ok']){const _0x352248=await _0x8dad81['json']()['catch'](()=>({}));throw new Error(_0x352248['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x8dad81['statusText']);}return await _0x8dad81['json']();},async 'stopTask'(_0x26ad68){if(!_0x26ad68)throw new Error('Task\x20ID\x20is\x20required');const _0x4508e3=await fetch(API_BASE+'/tasks/'+_0x26ad68+'/stop',{'method':'POST'});if(!_0x4508e3['ok']){const _0x1d2c9e=await _0x4508e3['json']()['catch'](()=>({}));throw new Error(_0x1d2c9e['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4508e3['statusText']);}return await _0x4508e3['json']();},async 'interruptTask'(_0x1da781){if(!_0x1da781)throw new Error('Task\x20ID\x20is\x20required');const _0x5bfd6c=await fetch(API_BASE+'/tasks/'+_0x1da781+'/interrupt',{'method':'POST'});if(!_0x5bfd6c['ok']){const _0x59cb1f=await _0x5bfd6c['json']()['catch'](()=>({}));throw new Error(_0x59cb1f['error']||_0x59cb1f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5bfd6c['statusText']);}return await _0x5bfd6c['json']();},async 'startTask'(_0x39cdb2){if(!_0x39cdb2)throw new Error('Task\x20ID\x20is\x20required');const _0xc2bccd=await fetch(API_BASE+'/tasks/'+_0x39cdb2+'/start',{'method':'POST'});if(!_0xc2bccd['ok']){const _0xc0a047=await _0xc2bccd['json']()['catch'](()=>({}));throw new Error(_0xc0a047['error']||'Failed\x20to\x20start\x20task:\x20'+_0xc2bccd['statusText']);}return await _0xc2bccd['json']();},async 'deleteTask'(_0x598615){if(!_0x598615)throw new Error('Task\x20ID\x20is\x20required');const _0x8ad427=await fetch(API_BASE+'/tasks/'+_0x598615,{'method':'DELETE'});if(!_0x8ad427['ok']){const _0x408ca6=await _0x8ad427['json']()['catch'](()=>({}));throw new Error(_0x408ca6['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x8ad427['statusText']);}return await _0x8ad427['json']();},async 'refreshTasksFromDisk'(){const _0x23eed2=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x23eed2['ok']){const _0x48095a=await _0x23eed2['json']()['catch'](()=>({}));throw new Error(_0x48095a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x23eed2['statusText']);}return await _0x23eed2['json']();},async 'approveTask'(_0x21e26e,_0x2daffc={}){if(!_0x21e26e)throw new Error('Task\x20ID\x20is\x20required');const _0x2f2182={'commit_message':_0x2daffc['commit_message']||'','pull':_0x2daffc['pull']??![],'push':_0x2daffc['push']??![]};_0x2daffc['new_branch']&&(_0x2f2182['new_branch']=_0x2daffc['new_branch']);const _0x98aee3=await fetch(API_BASE+'/tasks/'+_0x21e26e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f2182)});if(!_0x98aee3['ok']){const _0x425838=await _0x98aee3['json']()['catch'](()=>({}));let _0xaa81f9=_0x425838['error']||_0x425838['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x98aee3['statusText'];if(_0x425838['results']&&Array['isArray'](_0x425838['results'])){const _0x5cc6da=_0x425838['results']['filter'](_0x4989f4=>!_0x4989f4['success']&&_0x4989f4['error']);_0x5cc6da['length']>0x0&&(_0xaa81f9=_0x5cc6da[0x0]['error']);}throw new Error(_0xaa81f9);}return await _0x98aee3['json']();},async 'getPullRequestInfo'(_0x387d50){if(!_0x387d50)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8b11=await fetch(API_BASE+'/tasks/'+_0x387d50+'/pull-request-info');if(!_0x4f8b11['ok']){const _0x47ef77=await _0x4f8b11['json']()['catch'](()=>({}));throw new Error(_0x47ef77['error']||_0x47ef77['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4f8b11['statusText']);}return await _0x4f8b11['json']();},async 'createPullRequests'(_0x5c589a,_0x177f21){if(!_0x5c589a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x177f21||!Array['isArray'](_0x177f21))throw new Error('repos\x20array\x20is\x20required');const _0x28dcb3=await fetch(API_BASE+'/tasks/'+_0x5c589a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x177f21})});if(!_0x28dcb3['ok']){const _0x2db840=await _0x28dcb3['json']()['catch'](()=>({}));let _0x1dc302=_0x2db840['error']||_0x2db840['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x28dcb3['statusText'];if(_0x2db840['results']&&Array['isArray'](_0x2db840['results'])){const _0x5a3191=_0x2db840['results']['filter'](_0x1dd7a3=>!_0x1dd7a3['success']&&_0x1dd7a3['error']);_0x5a3191['length']>0x0&&(_0x1dc302=_0x5a3191[0x0]['error']);}throw new Error(_0x1dc302);}return await _0x28dcb3['json']();},async 'syncRepos'(_0x11456d){if(!_0x11456d)throw new Error('Task\x20ID\x20is\x20required');const _0x329278=await fetch(API_BASE+'/tasks/'+_0x11456d+'/sync-repos',{'method':'POST'});if(!_0x329278['ok']){const _0x16f771=await _0x329278['json']()['catch'](()=>({}));throw new Error(_0x16f771['error']||_0x16f771['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x329278['statusText']);}return await _0x329278['json']();},async 'getIbmiSyncInfo'(_0x43673f){if(!_0x43673f)throw new Error('Task\x20ID\x20is\x20required');const _0x1817c9=await fetch(API_BASE+'/tasks/'+_0x43673f+'/ibmi-sync-info');if(!_0x1817c9['ok']){const _0x36fe62=await _0x1817c9['json']()['catch'](()=>({}));throw new Error(_0x36fe62['error']||_0x36fe62['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1817c9['json']();},async 'getSyncFiles'(_0x152573){if(!_0x152573)throw new Error('Task\x20ID\x20is\x20required');const _0x53cf19=await fetch(API_BASE+'/tasks/'+_0x152573+'/sync-to-ibmi/files');if(!_0x53cf19['ok']){const _0x5119b9=await _0x53cf19['json']()['catch'](()=>({}));throw new Error(_0x5119b9['error']||_0x5119b9['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53cf19['json']();},async 'syncToIbmi'(_0x48916a,_0x2c1872,_0x5988ed=null,_0x1bbee7=null,_0x49ccdb=null){if(!_0x48916a)throw new Error('Task\x20ID\x20is\x20required');const _0x55651a={'library':_0x2c1872};if(_0x5988ed)_0x55651a['user']=_0x5988ed;if(_0x1bbee7)_0x55651a['password']=_0x1bbee7;if(_0x49ccdb)_0x55651a['files']=_0x49ccdb;const _0x280aec=await fetch(API_BASE+'/tasks/'+_0x48916a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55651a)});if(!_0x280aec['ok']){const _0x2c46b3=await _0x280aec['json']()['catch'](()=>({}));throw new Error(_0x2c46b3['error']||_0x2c46b3['message']||'Sync\x20failed');}return await _0x280aec['json']();},async 'getIbmiSyncLog'(_0x378669){if(!_0x378669)throw new Error('Task\x20ID\x20is\x20required');const _0x55b045=await fetch(API_BASE+'/tasks/'+_0x378669+'/ibmi-sync-log');if(!_0x55b045['ok']){const _0x23be01=await _0x55b045['json']()['catch'](()=>({}));throw new Error(_0x23be01['error']||_0x23be01['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x55b045['json']();},async 'pullChanges'(_0x526975){if(!_0x526975)throw new Error('Task\x20ID\x20is\x20required');const _0x45c4b5=await fetch(API_BASE+'/tasks/'+_0x526975+'/pull-changes',{'method':'POST'});if(!_0x45c4b5['ok']){const _0x12fd71=await _0x45c4b5['json']()['catch'](()=>({}));throw new Error(_0x12fd71['error']||_0x12fd71['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x45c4b5['statusText']);}return await _0x45c4b5['json']();},async 'readFile'(_0x4bba86,_0x53b60a){if(!_0x4bba86)throw new Error('Task\x20ID\x20is\x20required');if(!_0x53b60a)throw new Error('File\x20path\x20is\x20required');const _0x4b3aee=await fetch(API_BASE+'/tasks/'+_0x4bba86+'/files?path='+encodeURIComponent(_0x53b60a));if(!_0x4b3aee['ok']){const _0x4b9fca=await _0x4b3aee['json']()['catch'](()=>({}));throw new Error(_0x4b9fca['error']||_0x4b9fca['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4b3aee['statusText']);}return await _0x4b3aee['json']();},'getTaskFileDownloadUrl'(_0x2c1429,_0xac2afb){if(!_0x2c1429)throw new Error('Task\x20ID\x20is\x20required');if(!_0xac2afb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2c1429+'/files/download?path='+encodeURIComponent(_0xac2afb);},async 'writeFile'(_0x2cf831,_0x3c09b9,_0x48cb6d){if(!_0x2cf831)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c09b9)throw new Error('File\x20path\x20is\x20required');if(_0x48cb6d===undefined)throw new Error('Content\x20is\x20required');const _0x1c5294=await fetch(API_BASE+'/tasks/'+_0x2cf831+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3c09b9,'content':_0x48cb6d})});if(!_0x1c5294['ok']){const _0x1628f0=await _0x1c5294['json']()['catch'](()=>({}));throw new Error(_0x1628f0['error']||_0x1628f0['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1c5294['statusText']);}return await _0x1c5294['json']();},async 'uploadTaskFiles'(_0x734798,_0x27caac,_0xc6bc61){if(!_0x734798)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27caac)throw new Error('Target\x20directory\x20is\x20required');if(!_0xc6bc61||_0xc6bc61['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x1b6798=new FormData();_0x1b6798['append']('targetDir',_0x27caac);for(const _0x20ad26 of _0xc6bc61){_0x1b6798['append']('files',_0x20ad26,_0x20ad26['name']);}const _0xa702ee=await fetch(API_BASE+'/tasks/'+_0x734798+'/files/upload',{'method':'POST','body':_0x1b6798});if(!_0xa702ee['ok']){const _0x2c12cf=await _0xa702ee['json']()['catch'](()=>({}));throw new Error(_0x2c12cf['error']||_0x2c12cf['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa702ee['statusText']);}return await _0xa702ee['json']();},async 'deleteFile'(_0x4ade78,_0x351ad1){if(!_0x4ade78)throw new Error('Task\x20ID\x20is\x20required');if(!_0x351ad1)throw new Error('File\x20path\x20is\x20required');const _0x29faa4=await fetch(API_BASE+'/tasks/'+_0x4ade78+'/files?path='+encodeURIComponent(_0x351ad1),{'method':'DELETE'});if(!_0x29faa4['ok']){const _0x45aee3=await _0x29faa4['json']()['catch'](()=>({}));throw new Error(_0x45aee3['error']||_0x45aee3['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x29faa4['statusText']);}return await _0x29faa4['json']();},async 'discardFile'(_0x5ef92,_0x268b48,_0x206ab9){if(!_0x5ef92)throw new Error('Task\x20ID\x20is\x20required');if(!_0x268b48)throw new Error('File\x20path\x20is\x20required');if(!_0x206ab9)throw new Error('Repository\x20path\x20is\x20required');const _0x3793a6=await fetch(API_BASE+'/tasks/'+_0x5ef92+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x268b48,'repoPath':_0x206ab9})});if(!_0x3793a6['ok']){const _0x4f10a9=await _0x3793a6['json']()['catch'](()=>({}));throw new Error(_0x4f10a9['error']||_0x4f10a9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3793a6['statusText']);}return await _0x3793a6['json']();},async 'followUpTask'(_0x1483d4,_0x555b9c={}){if(!_0x1483d4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x555b9c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x594997,_0x5c5b6f={};if(_0x555b9c['files']&&_0x555b9c['files']['length']>0x0){const _0x4a83bd=new FormData();_0x4a83bd['append']('instructions',_0x555b9c['instructions']);for(const _0x325b65 of _0x555b9c['files']){_0x4a83bd['append']('attachments',_0x325b65);}_0x594997=_0x4a83bd;}else _0x5c5b6f['Content-Type']='application/json',_0x594997=JSON['stringify']({'instructions':_0x555b9c['instructions']});const _0x2b2fea=await fetch(API_BASE+'/tasks/'+_0x1483d4+'/follow-up',{'method':'POST','headers':_0x5c5b6f,'body':_0x594997});if(!_0x2b2fea['ok']){const _0x29b08a=await _0x2b2fea['json']()['catch'](()=>({}));throw new Error(_0x29b08a['error']||_0x29b08a['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x2b2fea['statusText']);}return await _0x2b2fea['json']();},async 'getTaskRewindPoints'(_0x1be989){if(!_0x1be989)throw new Error('Task\x20ID\x20is\x20required');const _0x39a915=await fetch(API_BASE+'/tasks/'+_0x1be989+'/rewind-points');if(!_0x39a915['ok']){const _0x460500=await _0x39a915['json']()['catch'](()=>({}));throw new Error(_0x460500['error']||_0x460500['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x39a915['statusText']);}return await _0x39a915['json']();},async 'rewindTask'(_0x35ecde,_0x359395={}){if(!_0x35ecde)throw new Error('Task\x20ID\x20is\x20required');const _0x66eaf1=Number['isInteger'](_0x359395['targetFollowUpCount'])?_0x359395['targetFollowUpCount']:0x0,_0x2507f5={'targetFollowUpCount':_0x66eaf1};typeof _0x359395['instructions']==='string'&&_0x359395['instructions']['trim']()&&(_0x2507f5['instructions']=_0x359395['instructions']['trim']());typeof _0x359395['rewindFiles']==='boolean'&&(_0x2507f5['rewindFiles']=_0x359395['rewindFiles']);const _0x217df5=await fetch(API_BASE+'/tasks/'+_0x35ecde+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2507f5)});if(!_0x217df5['ok']){const _0x22c95c=await _0x217df5['json']()['catch'](()=>({}));throw new Error(_0x22c95c['error']||_0x22c95c['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x217df5['statusText']);}return await _0x217df5['json']();},async 'login'(_0x2bc830,_0x4a98d3){const _0x7f24fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2bc830,'password':_0x4a98d3})});if(!_0x7f24fe['ok']){const _0x2c2bc8=await _0x7f24fe['json']();throw new Error(_0x2c2bc8['message']||'Login\x20failed');}return await _0x7f24fe['json']();},async 'logout'(){const _0xe82141=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xe82141['ok']){const _0x38248a=await _0xe82141['json']();throw new Error(_0x38248a['message']||'Logout\x20failed');}return await _0xe82141['json']();},async 'getCurrentUser'(){const _0x4c0ac2=await fetch(API_BASE+'/auth/me');if(!_0x4c0ac2['ok'])throw new Error('Not\x20authenticated');const _0x2ec907=await _0x4c0ac2['json']();return _0x2ec907['user'];},async 'getRolesInfo'(){const _0x5d718d=await fetch(API_BASE+'/users/roles');if(!_0x5d718d['ok']){const _0x41ed46=await _0x5d718d['json']();throw new Error(_0x41ed46['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x5d718d['json']();},async 'getUsers'(){const _0x582e5b=await fetch(API_BASE+'/users');if(!_0x582e5b['ok']){const _0x8b6aaa=await _0x582e5b['json']();throw new Error(_0x8b6aaa['message']||'Failed\x20to\x20get\x20users');}return await _0x582e5b['json']();},async 'getUser'(_0x14e744){const _0x4af1c2=await fetch(API_BASE+'/users/'+_0x14e744);if(!_0x4af1c2['ok']){const _0x66c734=await _0x4af1c2['json']();throw new Error(_0x66c734['message']||'Failed\x20to\x20get\x20user');}return await _0x4af1c2['json']();},async 'createUser'(_0x11b61a){const _0x57fb14=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11b61a)});if(!_0x57fb14['ok']){const _0x139799=await _0x57fb14['json']();throw new Error(_0x139799['message']||'Failed\x20to\x20create\x20user');}return await _0x57fb14['json']();},async 'updateUser'(_0x5baeb6,_0x4e6cd6){const _0xbada10=await fetch(API_BASE+'/users/'+_0x5baeb6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e6cd6)});if(!_0xbada10['ok']){const _0x3b8f70=await _0xbada10['json']();throw new Error(_0x3b8f70['message']||'Failed\x20to\x20update\x20user');}return await _0xbada10['json']();},async 'deleteUser'(_0x5b486d){const _0x47432e=await fetch(API_BASE+'/users/'+_0x5b486d,{'method':'DELETE'});if(!_0x47432e['ok']){const _0x30f626=await _0x47432e['json']();throw new Error(_0x30f626['message']||'Failed\x20to\x20delete\x20user');}return await _0x47432e['json']();},async 'stopAllContainers'(){const _0x4811c6=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1b0bf1=await _0x4811c6['json']()['catch'](()=>({}));if(!_0x4811c6['ok'])throw new Error(_0x1b0bf1['message']||_0x1b0bf1['error']||'Failed\x20to\x20stop\x20containers');return _0x1b0bf1;},async 'removeStoppedContainers'(){const _0x2ec3ff=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x351316=await _0x2ec3ff['json']()['catch'](()=>({}));if(!_0x2ec3ff['ok'])throw new Error(_0x351316['message']||_0x351316['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x351316;},async 'pruneDockerResources'(){const _0x55e702=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x395d14=await _0x55e702['json']()['catch'](()=>({}));if(!_0x55e702['ok'])throw new Error(_0x395d14['message']||_0x395d14['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x395d14;},async 'createPasswordToken'(_0x348513,_0x1dfbc5='setup',_0x589353=![]){const _0x5bbd1e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x348513,'type':_0x1dfbc5,'sendEmail':_0x589353})});if(!_0x5bbd1e['ok']){const _0x414261=await _0x5bbd1e['json']();throw new Error(_0x414261['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5bbd1e['json']();},async 'getEmailConfig'(){const _0x3a6ee2=await fetch(API_BASE+'/password/email-config');if(!_0x3a6ee2['ok']){const _0x1a76fc=await _0x3a6ee2['json']();throw new Error(_0x1a76fc['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3a6ee2['json']();},async 'updateTaskName'(_0xa306d,_0x2b8900){const _0x2130b6=await fetch(API_BASE+'/tasks/'+_0xa306d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x2b8900})});if(!_0x2130b6['ok']){const _0x3a5865=await _0x2130b6['json']();throw new Error(_0x3a5865['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2130b6['json']();},async 'pinTask'(_0x1428fa,_0x480bd5,_0xf41c10=null){if(!_0x1428fa)throw new Error('Task\x20ID\x20is\x20required');const _0xc7b15e={'pinned':_0x480bd5};_0xf41c10&&_0xf41c10['length']>0x0&&(_0xc7b15e['additionalTaskIds']=_0xf41c10);const _0x708a12=await fetch(API_BASE+'/tasks/'+_0x1428fa+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7b15e)});if(!_0x708a12['ok']){const _0x21d7f2=await _0x708a12['json']();throw new Error(_0x21d7f2['error']||'Failed\x20to\x20pin\x20task');}return await _0x708a12['json']();},async 'setTaskWinner'(_0x1d6dc8,_0x43b60e,_0x3a5adb=[]){if(!_0x1d6dc8)throw new Error('Task\x20ID\x20is\x20required');const _0x28dfd0=await fetch(API_BASE+'/tasks/'+_0x1d6dc8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43b60e,'siblings':_0x3a5adb})});if(!_0x28dfd0['ok']){const _0x272119=await _0x28dfd0['json']();throw new Error(_0x272119['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x28dfd0['json']();},async 'setTaskLoser'(_0x3a34b6,_0x2fcb85){if(!_0x3a34b6)throw new Error('Task\x20ID\x20is\x20required');const _0x1e95c6=await fetch(API_BASE+'/tasks/'+_0x3a34b6+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2fcb85})});if(!_0x1e95c6['ok']){const _0x51ce72=await _0x1e95c6['json']();throw new Error(_0x51ce72['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1e95c6['json']();},async 'createTaskGroup'(_0x1473a6){const _0x144392=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1473a6)});if(!_0x144392['ok']){const _0x224603=await _0x144392['json']();throw new Error(_0x224603['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x144392['json']();},async 'getTaskGroups'(_0xb34e3f={}){const _0x549bec=new URLSearchParams();if(_0xb34e3f['userId'])_0x549bec['set']('userId',String(_0xb34e3f['userId']));if(_0xb34e3f['status'])_0x549bec['set']('status',String(_0xb34e3f['status']));if(_0xb34e3f['limit'])_0x549bec['set']('limit',String(_0xb34e3f['limit']));const _0x4a15e3=API_BASE+'/tasks/groups'+(_0x549bec['toString']()?'?'+_0x549bec['toString']():''),_0x3769be=await fetch(_0x4a15e3);if(!_0x3769be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3769be['json']();},async 'getTaskGroup'(_0xbb155){const _0x5cc2cc=await fetch(API_BASE+'/tasks/groups/'+_0xbb155);if(!_0x5cc2cc['ok']){const _0x576aca=await _0x5cc2cc['json']();throw new Error(_0x576aca['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5cc2cc['json']();},async 'updateTaskGroup'(_0x1ad128,_0x32804b,_0x44eb7a){const _0x366d58=await fetch(API_BASE+'/tasks/'+_0x1ad128+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x32804b,'groupIndex':_0x44eb7a})});if(!_0x366d58['ok']){const _0x429c17=await _0x366d58['json']();throw new Error(_0x429c17['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x366d58['json']();},async 'removeTaskFromGroup'(_0x29cc77){return this['updateTaskGroup'](_0x29cc77,null,null);},async 'deleteTaskGroup'(_0x1646d9,_0xf6658=![]){const _0x38b06b=_0xf6658?'?deleteTasks=true':'',_0x5c7f95=await fetch(API_BASE+'/tasks/groups/'+_0x1646d9+_0x38b06b,{'method':'DELETE'});if(!_0x5c7f95['ok']){const _0x38e8c9=await _0x5c7f95['json']();throw new Error(_0x38e8c9['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x58107d,_0x29b880){const _0x362565=await fetch(API_BASE+'/tasks/groups/'+_0x58107d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29b880})});if(!_0x362565['ok']){const _0x538e40=await _0x362565['json']();throw new Error(_0x538e40['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x362565['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x57339d){if(!_0x57339d)throw new Error('Task\x20ID\x20is\x20required');const _0x24b153=await fetch(API_BASE+'/tasks/'+_0x57339d+'/comments');if(!_0x24b153['ok']){const _0x226c2b=await _0x24b153['json']()['catch'](()=>({}));throw new Error(_0x226c2b['error']||'Failed\x20to\x20get\x20comments');}return await _0x24b153['json']();},async 'addComment'(_0x519b34,_0x446a2f){if(!_0x519b34)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446a2f)throw new Error('Comment\x20content\x20is\x20required');const _0x481a5f=await fetch(API_BASE+'/tasks/'+_0x519b34+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x446a2f})});if(!_0x481a5f['ok']){const _0x3b1fec=await _0x481a5f['json']()['catch'](()=>({}));throw new Error(_0x3b1fec['error']||'Failed\x20to\x20add\x20comment');}return await _0x481a5f['json']();},async 'updateComment'(_0x2e4d88,_0x1a5bcb,_0xd556da){if(!_0x2e4d88)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5bcb)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xd556da)throw new Error('Comment\x20content\x20is\x20required');const _0x579261=await fetch(API_BASE+'/tasks/'+_0x2e4d88+'/comments/'+_0x1a5bcb,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xd556da})});if(!_0x579261['ok']){const _0x9b227a=await _0x579261['json']()['catch'](()=>({}));throw new Error(_0x9b227a['error']||'Failed\x20to\x20update\x20comment');}return await _0x579261['json']();},async 'deleteComment'(_0x164d08,_0x4869b6){if(!_0x164d08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4869b6)throw new Error('Comment\x20ID\x20is\x20required');const _0x413791=await fetch(API_BASE+'/tasks/'+_0x164d08+'/comments/'+_0x4869b6,{'method':'DELETE'});if(!_0x413791['ok']){const _0x250a39=await _0x413791['json']()['catch'](()=>({}));throw new Error(_0x250a39['error']||'Failed\x20to\x20delete\x20comment');}return await _0x413791['json']();},async 'createObjective'(_0x250546){const _0x287cad={'objective':!![],'name':_0x250546['name']||'','environment':_0x250546['environment']||null,'agents':_0x250546['agents']||[],'branches':_0x250546['branches']||{},'isPinned':_0x250546['isPinned']||![],'parentObjectiveId':_0x250546['parentObjectiveId']||null,'env_vars':_0x250546['envVars']||{},'parameters':{'instructions':_0x250546['instructions']||''},'files':_0x250546['files']||[],'jira':_0x250546['jira']||null};return this['createTask'](_0x287cad);},async 'updateObjective'(_0x336930,_0x381af7,_0x419f33=[],_0x5137e1=[]){let _0xc17e57,_0x164eb1={};const _0x2b2d1b={..._0x381af7};_0x5137e1&&_0x5137e1['length']>0x0&&(_0x2b2d1b['removeAttachments']=_0x5137e1);if(_0x419f33&&_0x419f33['length']>0x0){const _0x3b1408=new FormData();for(const [_0x38f8f4,_0x564e46]of Object['entries'](_0x2b2d1b)){if(_0x564e46==null)continue;typeof _0x564e46==='object'?_0x3b1408['append'](_0x38f8f4,JSON['stringify'](_0x564e46)):_0x3b1408['append'](_0x38f8f4,String(_0x564e46));}for(const _0x5a0c0b of _0x419f33){_0x3b1408['append']('attachments',_0x5a0c0b);}_0xc17e57=_0x3b1408;}else _0x164eb1['Content-Type']='application/json',_0xc17e57=JSON['stringify'](_0x2b2d1b);const _0xb8309c=await fetch(API_BASE+'/tasks/'+_0x336930,{'method':'PATCH','headers':_0x164eb1,'body':_0xc17e57});if(!_0xb8309c['ok']){const _0x56eef8=await _0xb8309c['json']();throw new Error(_0x56eef8['error']||'Failed\x20to\x20update\x20objective');}return await _0xb8309c['json']();},async 'deleteObjective'(_0x5e37d7){return this['deleteTask'](_0x5e37d7);},async 'launchObjective'(_0x3a84dd,_0x3d6fcb={}){const _0x4e5e8d=await fetch(API_BASE+'/tasks/'+_0x3a84dd+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d6fcb)});if(!_0x4e5e8d['ok']){const _0x58069d=await _0x4e5e8d['json']();throw new Error(_0x58069d['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4e5e8d['json']();},async 'getObjectiveAttachments'(_0x3ac773){return this['getTaskAttachments'](_0x3ac773);},async 'createJudgeTask'({environment:_0x5667eb,judgeAgent:_0x23e7e1,groupId:_0x3a151f,taskIds:_0x3e7573,judgeCustomInstructions:_0x297b6b,isPinned:_0x2722c1}){const _0x2106e1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5667eb,'judgeAgent':_0x23e7e1,'groupId':_0x3a151f,'taskIds':_0x3e7573,'judgeCustomInstructions':_0x297b6b,'isPinned':_0x2722c1})});if(!_0x2106e1['ok']){const _0x1c9b7d=await _0x2106e1['json']();throw new Error(_0x1c9b7d['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2106e1['json']();},async 'getJudgeTasks'(_0x3f4461){const _0x50c664=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f4461));if(!_0x50c664['ok']){const _0x3c6465=await _0x50c664['json']();throw new Error(_0x3c6465['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x50c664['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x232583,_0x3c2e0f,_0x3859d7=''){const _0x1aaa54=await fetch(API_BASE+'/tasks/'+_0x232583+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3c2e0f,'customPreamble':_0x3859d7})});if(!_0x1aaa54['ok']){const _0x597e3e=await _0x1aaa54['json']();throw new Error(_0x597e3e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1aaa54['json']();},async 'getJiraConfig'(){const _0x31dc2e=await fetch(API_BASE+'/jira/config');if(!_0x31dc2e['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x31dc2e['json']();},async 'getJiraIssue'(_0x1645b3){const _0x270e06=await fetch(API_BASE+'/jira/issues/'+_0x1645b3);if(!_0x270e06['ok']){const _0x8ba9ad=await _0x270e06['json']()['catch'](()=>({}));throw new Error(_0x8ba9ad['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x270e06['statusText']);}return await _0x270e06['json']();},async 'searchJiraIssues'(_0x2ad7cb,_0x2271fb=0x14){const _0x161d06=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2ad7cb,'maxResults':_0x2271fb})});if(!_0x161d06['ok']){const _0x34379d=await _0x161d06['json']()['catch'](()=>({}));throw new Error(_0x34379d['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x161d06['statusText']);}return await _0x161d06['json']();},async 'postJiraComment'(_0xe5ab53,_0x4ad2ec){const _0x46d971=await fetch(API_BASE+'/jira/issues/'+_0xe5ab53+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4ad2ec})});if(!_0x46d971['ok']){const _0x19b13f=await _0x46d971['json']()['catch'](()=>({}));throw new Error(_0x19b13f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x46d971['statusText']);}return await _0x46d971['json']();},async 'getJiraComments'(_0xcc4d7a){const _0x42cfb8=await fetch(API_BASE+'/jira/issues/'+_0xcc4d7a+'/comments');if(!_0x42cfb8['ok']){const _0x1f3f11=await _0x42cfb8['json']()['catch'](()=>({}));throw new Error(_0x1f3f11['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x42cfb8['statusText']);}return await _0x42cfb8['json']();},async 'promptParameter'({environment:_0x34a12f,command:_0x1b4179,parser:parser='json'}){const _0x1f49e6=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x34a12f,'command':_0x1b4179,'parser':parser})});if(!_0x1f49e6['ok']){const _0x37aef0=await _0x1f49e6['json']()['catch'](()=>({}));throw new Error(_0x37aef0['message']||_0x37aef0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1f49e6['statusText']);}return await _0x1f49e6['json']();},async 'promptParameterStream'(_0x555975,_0xeb6387){const _0x4ca344=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x555975)});if(!_0x4ca344['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4ca344['statusText']);const _0x1c2592=_0x4ca344['body']['getReader'](),_0x1b56c9=new TextDecoder();let _0x1ff70d='';return new Promise((_0x2dca22,_0x127fda)=>{const _0x41b032=async()=>{try{const {done:_0x176b27,value:_0x55fec5}=await _0x1c2592['read']();if(_0x176b27)return;_0x1ff70d+=_0x1b56c9['decode'](_0x55fec5,{'stream':!![]});const _0x151e01=_0x1ff70d['split']('\x0a\x0a');_0x1ff70d=_0x151e01['pop']()||'';for(const _0x4c80ea of _0x151e01){if(!_0x4c80ea['trim']())continue;const _0x341314=_0x4c80ea['split']('\x0a');let _0x700e35='message',_0x3ab34f='';for(const _0x12683b of _0x341314){if(_0x12683b['startsWith']('event:'))_0x700e35=_0x12683b['substring'](0x6)['trim']();else _0x12683b['startsWith']('data:')&&(_0x3ab34f=_0x12683b['substring'](0x5)['trim']());}if(!_0x3ab34f)continue;try{const _0x7e452=JSON['parse'](_0x3ab34f);if(_0x700e35==='progress'&&_0xeb6387)_0xeb6387(_0x7e452['stage'],_0x7e452['message']);else{if(_0x700e35==='result'){_0x2dca22(_0x7e452);return;}else{if(_0x700e35==='error'){let _0x2b68ef=_0x7e452['message']||_0x7e452['error']||'Prompt\x20command\x20failed';_0x7e452['rawOutput']&&(_0x2b68ef+='\x0a\x0aRaw\x20output:\x0a'+_0x7e452['rawOutput']);_0x127fda(new Error(_0x2b68ef));return;}}}}catch(_0x3eea2e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3eea2e),console['error']('Event\x20type:',_0x700e35),console['error']('Event\x20data:',_0x3ab34f),console['error']('First\x20200\x20chars:',_0x3ab34f['substring'](0x0,0xc8)),_0x127fda(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3eea2e['message']+'\x0a\x0aData:\x20'+_0x3ab34f['substring'](0x0,0x1f4)));return;}}_0x41b032();}catch(_0x16f500){_0x127fda(_0x16f500);}};_0x41b032();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x527cf4){const _0x1d7587=await fetch(''+API_BASE+_0x527cf4);if(!_0x1d7587['ok']){const _0x5a729b=await _0x1d7587['json']()['catch'](()=>({'error':_0x1d7587['statusText']})),_0x5c752a=new Error(_0x5a729b['error']||_0x5a729b['message']||_0x1d7587['statusText']);if(_0x5a729b['detail']!==undefined)_0x5c752a['detail']=_0x5a729b['detail'];throw _0x5c752a;}return await _0x1d7587['json']();},async 'post'(_0x50f56b,_0x1dd3d1){const _0x7d483b=await fetch(''+API_BASE+_0x50f56b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1dd3d1)});if(!_0x7d483b['ok']){const _0x28627a=await _0x7d483b['json']()['catch'](()=>({'error':_0x7d483b['statusText']})),_0x1fb2af=new Error(_0x28627a['error']||_0x28627a['message']||_0x7d483b['statusText']);if(_0x28627a['detail']!==undefined)_0x1fb2af['detail']=_0x28627a['detail'];throw _0x1fb2af;}return await _0x7d483b['json']();},async 'put'(_0x2d575f,_0x1d1ae7){const _0x13db45=await fetch(''+API_BASE+_0x2d575f,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d1ae7)});if(!_0x13db45['ok']){const _0x52ac51=await _0x13db45['json']()['catch'](()=>({'error':_0x13db45['statusText']})),_0xbff5c3=new Error(_0x52ac51['error']||_0x52ac51['message']||_0x13db45['statusText']);if(_0x52ac51['detail']!==undefined)_0xbff5c3['detail']=_0x52ac51['detail'];throw _0xbff5c3;}return await _0x13db45['json']();},async 'delete'(_0x2ffde6,_0x27dd36){const _0x2fe189={'method':'DELETE'};_0x27dd36&&(_0x2fe189['headers']={'Content-Type':'application/json'},_0x2fe189['body']=JSON['stringify'](_0x27dd36));const _0x1166a5=await fetch(''+API_BASE+_0x2ffde6,_0x2fe189);if(!_0x1166a5['ok']){const _0x2bfe2c=await _0x1166a5['json']()['catch'](()=>({'error':_0x1166a5['statusText']})),_0x1c2aba=new Error(_0x2bfe2c['error']||_0x2bfe2c['message']||_0x1166a5['statusText']);if(_0x2bfe2c['detail']!==undefined)_0x1c2aba['detail']=_0x2bfe2c['detail'];throw _0x1c2aba;}return await _0x1166a5['json']();},async 'getSkills'(){const _0xb35c36=await fetch(API_BASE+'/skills');if(!_0xb35c36['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0xb35c36['statusText']);return await _0xb35c36['json']();},async 'getSkill'(_0x56ed35){const _0x5f44e3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x56ed35));if(!_0x5f44e3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5f44e3['statusText']);return await _0x5f44e3['json']();},async 'createSkill'(_0x580821){const _0x5e5f05=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580821)});if(!_0x5e5f05['ok']){const _0x23dca1=await _0x5e5f05['json']()['catch'](()=>({'error':_0x5e5f05['statusText']})),_0x116be9=new Error(_0x23dca1['error']||_0x23dca1['message']||_0x5e5f05['statusText']);if(_0x23dca1['detail']!==undefined)_0x116be9['detail']=_0x23dca1['detail'];throw _0x116be9;}return await _0x5e5f05['json']();},async 'updateSkill'(_0x35262b,_0x26c0ce){const _0x267195=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35262b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26c0ce)});if(!_0x267195['ok']){const _0x3059ba=await _0x267195['json']()['catch'](()=>({'error':_0x267195['statusText']})),_0xf61abc=new Error(_0x3059ba['error']||_0x3059ba['message']||_0x267195['statusText']);if(_0x3059ba['detail']!==undefined)_0xf61abc['detail']=_0x3059ba['detail'];throw _0xf61abc;}return await _0x267195['json']();},async 'deleteSkill'(_0x3f7f06){const _0x284571=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f7f06),{'method':'DELETE'});if(!_0x284571['ok']){const _0x5580fc=await _0x284571['json']()['catch'](()=>({'error':_0x284571['statusText']})),_0x581673=new Error(_0x5580fc['error']||_0x5580fc['message']||_0x284571['statusText']);if(_0x5580fc['detail']!==undefined)_0x581673['detail']=_0x5580fc['detail'];throw _0x581673;}return await _0x284571['json']();},async 'getSkillFile'(_0xf53b25,_0x1fca5e){const _0x5ed941=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xf53b25)+'/files/'+_0x1fca5e);if(!_0x5ed941['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5ed941['statusText']);return await _0x5ed941['json']();},async 'saveSkillFile'(_0x53c0c2,_0x32a7a8,_0x37e214){const _0x529493=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c0c2)+'/files/'+_0x32a7a8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37e214})});if(!_0x529493['ok']){const _0x3c4bd8=await _0x529493['json']()['catch'](()=>({'error':_0x529493['statusText']})),_0x100ca5=new Error(_0x3c4bd8['error']||_0x3c4bd8['message']||_0x529493['statusText']);if(_0x3c4bd8['detail']!==undefined)_0x100ca5['detail']=_0x3c4bd8['detail'];throw _0x100ca5;}return await _0x529493['json']();},async 'deleteSkillFile'(_0x269481,_0x4a4d01){const _0xd94318=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269481)+'/files/'+_0x4a4d01,{'method':'DELETE'});if(!_0xd94318['ok']){const _0x2247a3=await _0xd94318['json']()['catch'](()=>({'error':_0xd94318['statusText']})),_0x237eb5=new Error(_0x2247a3['error']||_0x2247a3['message']||_0xd94318['statusText']);if(_0x2247a3['detail']!==undefined)_0x237eb5['detail']=_0x2247a3['detail'];throw _0x237eb5;}return await _0xd94318['json']();},async 'pullSkills'(){const _0x284bda=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x284bda['ok']){const _0x59973f=await _0x284bda['json']()['catch'](()=>({'error':_0x284bda['statusText']})),_0x1255ed=new Error(_0x59973f['error']||_0x59973f['message']||_0x284bda['statusText']);if(_0x59973f['detail']!==undefined)_0x1255ed['detail']=_0x59973f['detail'];throw _0x1255ed;}return await _0x284bda['json']();},async 'commitSkills'(_0xea081,_0x344a0d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x344a0d,_0x272e76=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0xea081,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x272e76['ok']){const _0x343383=await _0x272e76['json']()['catch'](()=>({'error':_0x272e76['statusText']})),_0x1052bf=new Error(_0x343383['error']||_0x343383['message']||_0x272e76['statusText']);if(_0x343383['detail']!==undefined)_0x1052bf['detail']=_0x343383['detail'];throw _0x1052bf;}return await _0x272e76['json']();},async 'discardSkillsChanges'(){const _0x47e053=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x47e053['ok']){const _0x301f13=await _0x47e053['json']()['catch'](()=>({'error':_0x47e053['statusText']})),_0x33357d=new Error(_0x301f13['error']||_0x301f13['message']||_0x47e053['statusText']);if(_0x301f13['detail']!==undefined)_0x33357d['detail']=_0x301f13['detail'];throw _0x33357d;}return await _0x47e053['json']();},async 'getSkillCatalog'(){const _0x2134b2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2134b2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2134b2['statusText']);return await _0x2134b2['json']();},async 'getImportedSkillsRegistry'(){const _0x192ef5=await fetch(API_BASE+'/external-skills/registry');if(!_0x192ef5['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x192ef5['statusText']);return await _0x192ef5['json']();},async 'importCatalogSkill'(_0x5dc864){const _0x2eb75a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5dc864})});if(!_0x2eb75a['ok']){const _0x1f14dd=await _0x2eb75a['json']()['catch'](()=>({'error':_0x2eb75a['statusText']})),_0x2479b1=new Error(_0x1f14dd['error']||_0x1f14dd['message']||_0x2eb75a['statusText']);if(_0x1f14dd['detail']!==undefined)_0x2479b1['detail']=_0x1f14dd['detail'];throw _0x2479b1;}return await _0x2eb75a['json']();},async 'importSkillFromGit'(_0x5217c1,_0x3a146c,_0x2971d7='main',_0x2c1d87=null){const _0x448454=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5217c1,'skillPath':_0x3a146c,'branch':_0x2971d7,'skillId':_0x2c1d87})});if(!_0x448454['ok']){const _0x442471=await _0x448454['json']()['catch'](()=>({'error':_0x448454['statusText']})),_0x238622=new Error(_0x442471['error']||_0x442471['message']||_0x448454['statusText']);if(_0x442471['detail']!==undefined)_0x238622['detail']=_0x442471['detail'];throw _0x238622;}return await _0x448454['json']();},async 'probeMarketplace'(_0x5f5524,_0x4c5d5e='main'){const _0xb140bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5f5524,'branch':_0x4c5d5e})});if(!_0xb140bd['ok']){const _0x16848d=await _0xb140bd['json']()['catch'](()=>({'error':_0xb140bd['statusText']})),_0x1ad425=new Error(_0x16848d['error']||_0x16848d['message']||_0xb140bd['statusText']);if(_0x16848d['detail']!==undefined)_0x1ad425['detail']=_0x16848d['detail'];throw _0x1ad425;}return await _0xb140bd['json']();},async 'importMarketplaceBundle'(_0x29a8dd,_0x1651f8,_0x2f3c9c,_0x4f6042=null){const _0xe828c7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29a8dd,'branch':_0x1651f8,'bundleId':_0x2f3c9c,'selectedSkills':_0x4f6042})});if(!_0xe828c7['ok']){const _0x576dd1=await _0xe828c7['json']()['catch'](()=>({'error':_0xe828c7['statusText']})),_0x116d41=new Error(_0x576dd1['error']||_0x576dd1['message']||_0xe828c7['statusText']);if(_0x576dd1['detail']!==undefined)_0x116d41['detail']=_0x576dd1['detail'];throw _0x116d41;}return await _0xe828c7['json']();},async 'importSkillFromFolder'(_0x35a84a,_0x1d12ce=null){const _0x493a3a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x35a84a,'skillId':_0x1d12ce})});if(!_0x493a3a['ok']){const _0x19f8ee=await _0x493a3a['json']()['catch'](()=>({'error':_0x493a3a['statusText']})),_0x7b4048=new Error(_0x19f8ee['error']||_0x19f8ee['message']||_0x493a3a['statusText']);if(_0x19f8ee['detail']!==undefined)_0x7b4048['detail']=_0x19f8ee['detail'];throw _0x7b4048;}return await _0x493a3a['json']();},async 'importSkillFromNpm'(_0x105657,_0x12ce67='latest',_0x402144=null,_0x2e1a6b=null){const _0x15c4be=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x105657,'version':_0x12ce67,'skillId':_0x402144,'registry':_0x2e1a6b})});if(!_0x15c4be['ok']){const _0x54974d=await _0x15c4be['json']()['catch'](()=>({'error':_0x15c4be['statusText']})),_0x291464=new Error(_0x54974d['error']||_0x54974d['message']||_0x15c4be['statusText']);if(_0x54974d['detail']!==undefined)_0x291464['detail']=_0x54974d['detail'];throw _0x291464;}return await _0x15c4be['json']();},async 'checkSkillUpdates'(_0x451e1f){const _0x2d3535=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x451e1f)+'/check-updates',{'method':'POST'});if(!_0x2d3535['ok']){const _0xd33bed=await _0x2d3535['json']()['catch'](()=>({'error':_0x2d3535['statusText']})),_0x23f348=new Error(_0xd33bed['error']||_0xd33bed['message']||_0x2d3535['statusText']);if(_0xd33bed['detail']!==undefined)_0x23f348['detail']=_0xd33bed['detail'];throw _0x23f348;}return await _0x2d3535['json']();},async 'updateExternalSkill'(_0x4b47fb){const _0xbafea0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4b47fb)+'/update',{'method':'POST'});if(!_0xbafea0['ok']){const _0x1aeabc=await _0xbafea0['json']()['catch'](()=>({'error':_0xbafea0['statusText']})),_0xe6b817=new Error(_0x1aeabc['error']||_0x1aeabc['message']||_0xbafea0['statusText']);if(_0x1aeabc['detail']!==undefined)_0xe6b817['detail']=_0x1aeabc['detail'];throw _0xe6b817;}return await _0xbafea0['json']();},async 'updateSkillFlags'(_0x4efb03,_0x135dd1){const _0x248374=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4efb03)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x135dd1})});if(!_0x248374['ok']){const _0x494149=await _0x248374['json']()['catch'](()=>({'error':_0x248374['statusText']})),_0x477a98=new Error(_0x494149['error']||_0x494149['message']||_0x248374['statusText']);if(_0x494149['detail']!==undefined)_0x477a98['detail']=_0x494149['detail'];throw _0x477a98;}return await _0x248374['json']();},async 'removeFromImportedRegistry'(_0x140b14){const _0x1e0abd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x140b14)+'/registry',{'method':'DELETE'});if(!_0x1e0abd['ok']){const _0x1a2295=await _0x1e0abd['json']()['catch'](()=>({'error':_0x1e0abd['statusText']})),_0x565da4=new Error(_0x1a2295['error']||_0x1a2295['message']||_0x1e0abd['statusText']);if(_0x1a2295['detail']!==undefined)_0x565da4['detail']=_0x1a2295['detail'];throw _0x565da4;}return await _0x1e0abd['json']();},async 'getTeams'(){const _0x26d917=await fetch(API_BASE+'/teams');if(!_0x26d917['ok']){const _0x2047f9=await _0x26d917['json']()['catch'](()=>({'message':_0x26d917['statusText']}));throw new Error(_0x2047f9['message']||'Failed\x20to\x20get\x20teams');}return await _0x26d917['json']();},async 'getTeam'(_0x4cfdd9){const _0xf5b59=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cfdd9));if(!_0xf5b59['ok']){const _0x2a5af1=await _0xf5b59['json']()['catch'](()=>({'message':_0xf5b59['statusText']}));throw new Error(_0x2a5af1['message']||'Failed\x20to\x20get\x20team');}return await _0xf5b59['json']();},async 'createTeam'(_0x21f13){const _0x1bb835=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21f13)});if(!_0x1bb835['ok']){const _0x385eed=await _0x1bb835['json']()['catch'](()=>({'message':_0x1bb835['statusText']}));throw new Error(_0x385eed['message']||'Failed\x20to\x20create\x20team');}return await _0x1bb835['json']();},async 'updateTeam'(_0x4066e2,_0x5a24b9){const _0x5b517b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4066e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a24b9)});if(!_0x5b517b['ok']){const _0x231e5c=await _0x5b517b['json']()['catch'](()=>({'message':_0x5b517b['statusText']}));throw new Error(_0x231e5c['message']||'Failed\x20to\x20update\x20team');}return await _0x5b517b['json']();},async 'deleteTeam'(_0x2e34f7){const _0x206201=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2e34f7),{'method':'DELETE'});if(!_0x206201['ok']){const _0x4a04fd=await _0x206201['json']()['catch'](()=>({'message':_0x206201['statusText']}));throw new Error(_0x4a04fd['message']||'Failed\x20to\x20delete\x20team');}return await _0x206201['json']();},async 'addTeamMember'(_0x3a4d86,_0x3b0376){const _0x3773e9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3a4d86)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3b0376})});if(!_0x3773e9['ok']){const _0x662a3c=await _0x3773e9['json']()['catch'](()=>({'message':_0x3773e9['statusText']}));throw new Error(_0x662a3c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x3773e9['json']();},async 'removeTeamMember'(_0x596b1b,_0x277929){const _0x39949f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x596b1b)+'/members/'+encodeURIComponent(_0x277929),{'method':'DELETE'});if(!_0x39949f['ok']){const _0x4bb1a2=await _0x39949f['json']()['catch'](()=>({'message':_0x39949f['statusText']}));throw new Error(_0x4bb1a2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x39949f['json']();},async 'getBindings'(_0x5772ce={}){const _0x3d4af6=new URLSearchParams();if(_0x5772ce['resource_type'])_0x3d4af6['set']('resource_type',_0x5772ce['resource_type']);if(_0x5772ce['resource_id'])_0x3d4af6['set']('resource_id',_0x5772ce['resource_id']);if(_0x5772ce['subject_type'])_0x3d4af6['set']('subject_type',_0x5772ce['subject_type']);if(_0x5772ce['subject_id'])_0x3d4af6['set']('subject_id',_0x5772ce['subject_id']);const _0x5c4d97=_0x3d4af6['toString'](),_0x47f5de=await fetch(API_BASE+'/bindings'+(_0x5c4d97?'?'+_0x5c4d97:''));if(!_0x47f5de['ok']){const _0x422492=await _0x47f5de['json']()['catch'](()=>({'message':_0x47f5de['statusText']}));throw new Error(_0x422492['message']||'Failed\x20to\x20get\x20bindings');}return await _0x47f5de['json']();},async 'createBinding'(_0x6e7e96){const _0x606c3d=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6e7e96)});if(!_0x606c3d['ok']){const _0x4787a3=await _0x606c3d['json']()['catch'](()=>({'message':_0x606c3d['statusText']}));throw new Error(_0x4787a3['message']||'Failed\x20to\x20create\x20binding');}return await _0x606c3d['json']();},async 'updateBinding'(_0x41d760,_0x1e9a20){const _0x2fae38=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x41d760),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e9a20)});if(!_0x2fae38['ok']){const _0x4012b0=await _0x2fae38['json']()['catch'](()=>({'message':_0x2fae38['statusText']}));throw new Error(_0x4012b0['message']||'Failed\x20to\x20update\x20binding');}return await _0x2fae38['json']();},async 'deleteBinding'(_0x2e9bbe){const _0x1fecb5=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2e9bbe),{'method':'DELETE'});if(!_0x1fecb5['ok']){const _0x3f12e0=await _0x1fecb5['json']()['catch'](()=>({'message':_0x1fecb5['statusText']}));throw new Error(_0x3f12e0['message']||'Failed\x20to\x20delete\x20binding');}return await _0x1fecb5['json']();},async 'getRoleDefinitions'(){const _0xc5e418=await fetch(API_BASE+'/roles');if(!_0xc5e418['ok']){const _0x3ed57d=await _0xc5e418['json']()['catch'](()=>({'message':_0xc5e418['statusText']}));throw new Error(_0x3ed57d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xc5e418['json']();},async 'getRoleDefinition'(_0x2e2885){const _0x160333=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e2885));if(!_0x160333['ok']){const _0x74b6dd=await _0x160333['json']()['catch'](()=>({'message':_0x160333['statusText']}));throw new Error(_0x74b6dd['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x160333['json']();},async 'createRoleDefinition'(_0x264216){const _0x565039=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x264216)});if(!_0x565039['ok']){const _0x27112c=await _0x565039['json']()['catch'](()=>({'message':_0x565039['statusText']}));throw new Error(_0x27112c['message']||_0x27112c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x565039['json']();},async 'updateRoleDefinition'(_0x579866,_0x20909b){const _0x53a165=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x579866),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20909b)});if(!_0x53a165['ok']){const _0x59f7b3=await _0x53a165['json']()['catch'](()=>({'message':_0x53a165['statusText']}));throw new Error(_0x59f7b3['message']||_0x59f7b3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53a165['json']();},async 'deleteRoleDefinition'(_0x1743bd){const _0x4612c1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1743bd),{'method':'DELETE'});if(!_0x4612c1['ok']){const _0x4595ea=await _0x4612c1['json']()['catch'](()=>({'message':_0x4612c1['statusText']}));throw new Error(_0x4595ea['message']||_0x4595ea['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4612c1['json']();},async 'getAvailablePermissions'(){const _0xb0e895=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb0e895['ok']){const _0x357a3e=await _0xb0e895['json']()['catch'](()=>({'message':_0xb0e895['statusText']}));throw new Error(_0x357a3e['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb0e895['json']();},async 'getGitProviderAllowedTeams'(_0x26feac){const _0x427707=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x26feac)+'/allowed-teams');if(!_0x427707['ok']){const _0x553eb8=await _0x427707['json']()['catch'](()=>({'message':_0x427707['statusText']}));throw new Error(_0x553eb8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x427707['json']();},async 'setGitProviderAllowedTeams'(_0x53a7df,_0x128727){const _0x23eec1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x53a7df)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x128727})});if(!_0x23eec1['ok']){const _0x16f3a7=await _0x23eec1['json']()['catch'](()=>({'message':_0x23eec1['statusText']}));throw new Error(_0x16f3a7['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23eec1['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 _0x31d284=toastState['baseBottom'];toastState['toasts']['forEach'](_0x569f1a=>{_0x569f1a['el']['style']['bottom']=_0x31d284+'px';const _0x167d89=_0x569f1a['el']['offsetHeight']||toastState['defaultHeight'];_0x31d284+=_0x167d89+toastState['gap'];});});}function removeToastById(_0x5cd6fc){const _0x3c0eaf=toastState['toasts']['findIndex'](_0x54a476=>_0x54a476['id']===_0x5cd6fc);if(_0x3c0eaf===-0x1)return;const _0x1dc22f=toastState['toasts'][_0x3c0eaf];if(_0x1dc22f['timeoutId'])clearTimeout(_0x1dc22f['timeoutId']);_0x1dc22f['el']['classList']['remove']('show'),setTimeout(()=>_0x1dc22f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3c0eaf,0x1),repositionAllToasts();}function registerToast(_0x53a68c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x53a68c),repositionAllToasts(),_0x53a68c['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(_0x1c066e){if(_0x1c066e===null||_0x1c066e===undefined)return'';return String(_0x1c066e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x64bae3,_0x587c7f){if(_0x64bae3&&typeof _0x64bae3==='object'&&!Array['isArray'](_0x64bae3))return{'code':typeof _0x64bae3['text']==='string'?_0x64bae3['text']:'','language':typeof _0x64bae3['lang']==='string'?_0x64bae3['lang']:''};return{'code':typeof _0x64bae3==='string'?_0x64bae3:'','language':typeof _0x587c7f==='string'?_0x587c7f:''};}function buildMermaidBlock(_0x14540d){const _0x8c3470=String(_0x14540d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x8c3470))+'\x22>'+escapeHtmlValue(_0x8c3470)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x225f4f=new marked['Renderer'](),_0x476435=_0x225f4f['code']['bind'](_0x225f4f);return _0x225f4f['code']=function(_0x129a09,_0x1247b1,..._0x554666){const {code:_0x3351ab,language:_0x15a77b}=getMarkdownCodeBlockPayload(_0x129a09,_0x1247b1),_0x4d27c1=String(_0x15a77b||'')['trim']()['toLowerCase']();if(_0x4d27c1==='mermaid')return buildMermaidBlock(_0x3351ab);const _0x508da9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x508da9&&_0x4d27c1)try{const _0x3f1c72=_0x508da9['getLanguage'](_0x4d27c1)?_0x4d27c1:'plaintext',_0x37f60a=_0x508da9['highlight'](_0x3351ab,{'language':_0x3f1c72})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4d27c1)+'\x22>'+_0x37f60a+'</code></pre>';}catch(_0x3e71ff){console['error']('Syntax\x20highlighting\x20error:',_0x3e71ff);}return _0x476435(_0x129a09,_0x1247b1,..._0x554666);},sharedMarkedRenderer=_0x225f4f,_0x225f4f;}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 _0x3c6ebc=window['mermaid'];if(!_0x3c6ebc||typeof _0x3c6ebc['initialize']!=='function')return _0x3c6ebc||null;return _0x3c6ebc['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3c6ebc;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5241a5,_0xfd67c6)=>{const _0x100185=()=>_0x5241a5(configureMermaidInstance()),_0x1a5d4f=()=>{mermaidLoadPromise=null,_0xfd67c6(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7db1ab=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7db1ab&&(_0x7db1ab=document['createElement']('script'),_0x7db1ab['id']=MERMAID_SCRIPT_ID,_0x7db1ab['src']=MERMAID_SCRIPT_SRC,_0x7db1ab['async']=!![],document['head']['appendChild'](_0x7db1ab));if(window['mermaid']){_0x100185();return;}_0x7db1ab['addEventListener']('load',_0x100185,{'once':!![]}),_0x7db1ab['addEventListener']('error',_0x1a5d4f,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x588bb0){const _0x1a516a=_0x588bb0['getAttribute']('data-mermaid-source');if(!_0x1a516a)return null;let _0x3ffb4a=_0x1a516a;try{_0x3ffb4a=decodeURIComponent(_0x1a516a);}catch{}return _0x588bb0['textContent']=_0x3ffb4a,_0x588bb0['removeAttribute']('data-processed'),_0x588bb0['removeAttribute']('aria-roledescription'),_0x588bb0['removeAttribute']('role'),_0x588bb0['removeAttribute']('aria-label'),_0x3ffb4a;}function collectMermaidNodes(_0xbdfd95,_0xc3f09){if(!(_0xbdfd95 instanceof Element))return;_0xbdfd95['matches']('.mermaid[data-mermaid-source]')&&_0xc3f09['add'](_0xbdfd95),_0xbdfd95['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f07fd=>{_0xc3f09['add'](_0x5f07fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3693bf=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x50adc6=>setTimeout(_0x50adc6,0x0);_0x3693bf(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x49642d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x49642d);});});}function queueMermaidRender(_0x5eb7ea){const _0x4d480e=new Set();_0x5eb7ea instanceof Document||_0x5eb7ea instanceof DocumentFragment?_0x5eb7ea['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27613a=>_0x4d480e['add'](_0x27613a)):collectMermaidNodes(_0x5eb7ea,_0x4d480e);if(_0x4d480e['size']===0x0)return;_0x4d480e['forEach'](_0x44dc1d=>pendingMermaidNodes['add'](_0x44dc1d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x34cc07=Array['from'](pendingMermaidNodes)['filter'](_0x225ced=>_0x225ced['isConnected']);pendingMermaidNodes['clear']();if(_0x34cc07['length']===0x0)return;const _0x7ea092=await loadMermaid();if(!_0x7ea092)return;configureMermaidInstance();const _0x531be0=getMermaidTheme();for(const _0x3a154a of _0x34cc07){const _0x4535ad=_0x3a154a['getAttribute']('data-mermaid-source');if(!_0x4535ad)continue;const _0x5d17d1=_0x3a154a['getAttribute']('data-processed')==='true';if(_0x5d17d1&&_0x3a154a['dataset']['mermaidTheme']===_0x531be0)continue;restoreMermaidSource(_0x3a154a);try{if(typeof _0x7ea092['run']==='function')await _0x7ea092['run']({'nodes':[_0x3a154a]});else typeof _0x7ea092['init']==='function'&&_0x7ea092['init'](undefined,[_0x3a154a]);_0x3a154a['dataset']['mermaidTheme']=_0x531be0,delete _0x3a154a['dataset']['mermaidError'];}catch(_0x2feb34){console['error']('Mermaid\x20render\x20failed:',_0x2feb34),restoreMermaidSource(_0x3a154a),_0x3a154a['dataset']['mermaidError']='true',delete _0x3a154a['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3278ff=>{_0x3278ff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3278ff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2e227d=>{_0x2e227d['forEach'](_0x32c572=>{_0x32c572['addedNodes']['forEach'](_0x54fd93=>{_0x54fd93['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x54fd93);});});}),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'(_0x302283){const _0x393c5e=new Date(_0x302283),_0x1b0cf1=new Date(),_0x5d7a57=_0x1b0cf1-_0x393c5e,_0x1c6e16=Math['floor'](_0x5d7a57/0x3e8),_0x5a6d83=Math['floor'](_0x1c6e16/0x3c),_0x4ea138=Math['floor'](_0x5a6d83/0x3c),_0x146f9b=Math['floor'](_0x4ea138/0x18);if(_0x1c6e16<0x3c)return'now';if(_0x5a6d83<0x3c)return _0x5a6d83+'m\x20ago';if(_0x4ea138<0x18)return _0x4ea138+'h\x20ago';return _0x146f9b+'d\x20ago';},'getStatusIcon'(_0x3a8dec){switch(_0x3a8dec){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x408e06){switch(_0x408e06){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'(_0x33e6c7,_0x4dfcb9=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x21c2c6={};_0x21c2c6['text/plain']=new Blob([_0x33e6c7],{'type':'text/plain'});_0x4dfcb9&&(_0x21c2c6['text/html']=new Blob([_0x4dfcb9],{'type':'text/html'}));const _0x114145=new ClipboardItem(_0x21c2c6);return await navigator['clipboard']['write']([_0x114145]),!![];}catch(_0x1dce73){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1dce73);}try{const _0x5e3990=_0x392101=>{_0x392101['preventDefault'](),_0x392101['clipboardData']['setData']('text/plain',_0x33e6c7),_0x4dfcb9&&_0x392101['clipboardData']['setData']('text/html',_0x4dfcb9);};document['addEventListener']('copy',_0x5e3990);const _0x11a761=document['execCommand']('copy');document['removeEventListener']('copy',_0x5e3990);if(_0x11a761)return!![];}catch(_0xbd53b6){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xbd53b6);}try{const _0x5022c7=document['createElement']('textarea');_0x5022c7['value']=_0x33e6c7,_0x5022c7['style']['position']='fixed',_0x5022c7['style']['opacity']='0',_0x5022c7['style']['pointerEvents']='none',document['body']['appendChild'](_0x5022c7),_0x5022c7['select']();const _0x3d1636=document['execCommand']('copy');return document['body']['removeChild'](_0x5022c7),_0x3d1636;}catch(_0x373351){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x373351),![];}},'showToast'(_0x523a47,_0x533531='info'){const _0x1d44c8=getNextToastId(),_0x27c04f=document['createElement']('div');_0x27c04f['className']='toast\x20toast-'+_0x533531,_0x27c04f['textContent']=_0x523a47,_0x27c04f['dataset']['toastId']=_0x1d44c8,document['body']['appendChild'](_0x27c04f);const _0x12ac43=_0x533531==='error'?0x2710:0xbb8,_0x1850d1=setTimeout(()=>{removeToastById(_0x1d44c8);},_0x12ac43),_0x5a2e9f={'id':_0x1d44c8,'el':_0x27c04f,'timeoutId':_0x1850d1};return registerToast(_0x5a2e9f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x27c04f['classList']['add']('show');});}),_0x1d44c8;},'showError'(_0x11ff59){console['error'](_0x11ff59);const _0x54ef53=typeof _0x11ff59==='string'?_0x11ff59:_0x11ff59['message']||'An\x20error\x20occurred';this['showToast'](_0x54ef53,'error');},'showSuccess'(_0x294326){this['showToast'](_0x294326,'success');},'capitalize'(_0x4d3265){if(!_0x4d3265)return'';return _0x4d3265['charAt'](0x0)['toUpperCase']()+_0x4d3265['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x168289){return escapeHtmlValue(_0x168289);},'ansiToHtml'(_0x2e1baf){if(_0x2e1baf===null||_0x2e1baf===undefined)return'';let _0x1f65d2=this['escapeHtml'](_0x2e1baf);const _0x2b9137={'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'},_0x45af36={'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 _0x11f463=0x0;return _0x1f65d2=_0x1f65d2['replace'](/\x1b\[([0-9;]*)m/g,(_0x3a3b3e,_0x351aa0)=>{if(!_0x351aa0||_0x351aa0==='0'){const _0x588b40='</span>'['repeat'](_0x11f463);return _0x11f463=0x0,_0x588b40;}const _0x1abd65=_0x351aa0['split'](';'),_0x546f28=[];for(const _0xaad550 of _0x1abd65){if(_0xaad550==='1')_0x546f28['push']('font-weight:bold');else{if(_0xaad550==='2')_0x546f28['push']('opacity:0.7');else{if(_0xaad550==='3')_0x546f28['push']('font-style:italic');else{if(_0xaad550==='4')_0x546f28['push']('text-decoration:underline');else{if(_0xaad550==='9')_0x546f28['push']('text-decoration:line-through');else{if(_0x2b9137[_0xaad550])_0x546f28['push']('color:'+_0x2b9137[_0xaad550]);else{if(_0x45af36[_0xaad550])_0x546f28['push']('background-color:'+_0x45af36[_0xaad550]);}}}}}}}if(_0x546f28['length']>0x0)return _0x11f463++,'<span\x20style=\x22'+_0x546f28['join'](';')+'\x22>';return'';}),_0x1f65d2+='</span>'['repeat'](_0x11f463),_0x1f65d2=_0x1f65d2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x569579,_0x16bb4d)=>{if(!_0x16bb4d||_0x16bb4d==='0')return'';const _0x4ee087=_0x16bb4d['split'](';'),_0x1c4a69=[];for(const _0x6e9c77 of _0x4ee087){if(_0x6e9c77==='1')_0x1c4a69['push']('font-weight:bold');else{if(_0x2b9137[_0x6e9c77])_0x1c4a69['push']('color:'+_0x2b9137[_0x6e9c77]);else{if(_0x45af36[_0x6e9c77])_0x1c4a69['push']('background-color:'+_0x45af36[_0x6e9c77]);}}}if(_0x1c4a69['length']>0x0)return'<span\x20style=\x22'+_0x1c4a69['join'](';')+'\x22>';return'';}),_0x1f65d2;},'showModal'({title:_0x40a829,content:_0x25ae0c,buttons:buttons=[]}){const _0x55420a='\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'](_0x40a829)+'</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'+_0x25ae0c+'\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']((_0x129bf2,_0x589292)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x129bf2['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x589292+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x129bf2['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',_0xa1ec72=document['createElement']('div');_0xa1ec72['id']='utils-modal',_0xa1ec72['className']='modal',_0xa1ec72['innerHTML']=_0x55420a,document['body']['appendChild'](_0xa1ec72);const _0x45b5ef=document['getElementById']('utils-modal-close');_0x45b5ef&&_0x45b5ef['addEventListener']('click',()=>this['hideModal']());const _0x427570=_0xa1ec72['querySelectorAll']('[data-btn-index]');_0x427570['forEach'](_0x3c9b8d=>{const _0x1d52d9=parseInt(_0x3c9b8d['dataset']['btnIndex']);buttons[_0x1d52d9]?.['onClick']&&_0x3c9b8d['addEventListener']('click',buttons[_0x1d52d9]['onClick']);});const _0xf6466f=document['getElementById']('utils-modal-overlay');_0xf6466f&&_0xf6466f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x602cd8=document['getElementById']('utils-modal');_0x602cd8&&_0x602cd8['remove']();},'parseKeyValuePairs'(_0x3ca8c6){const _0xfc7b9d={};if(!_0x3ca8c6)return _0xfc7b9d;return _0x3ca8c6['split'](/\r?\n/)['map'](_0x2f3ea6=>_0x2f3ea6['trim']())['filter'](Boolean)['forEach'](_0x10f489=>{const _0x4d92d3=_0x10f489['indexOf']('=');if(_0x4d92d3>0x0){const _0x3565a0=_0x10f489['slice'](0x0,_0x4d92d3)['trim'](),_0x6556c7=_0x10f489['slice'](_0x4d92d3+0x1)['trim']();if(_0x3565a0)_0xfc7b9d[_0x3565a0]=_0x6556c7;}}),_0xfc7b9d;},'debounce'(_0xaac3cc,_0x1298a1=0xfa){let _0x4ade1d=null;return(..._0x5ce7a1)=>{clearTimeout(_0x4ade1d),_0x4ade1d=setTimeout(()=>_0xaac3cc['apply'](this,_0x5ce7a1),_0x1298a1);};},'formatTimestamp'(_0x15979f){if(!_0x15979f)return'N/A';const _0x4e62f2=new Date(_0x15979f);return _0x4e62f2['toLocaleDateString']()+'\x20'+_0x4e62f2['toLocaleTimeString']();},'getQueryParams'(){const _0x2dcd0c=new URLSearchParams(window['location']['search']),_0x525c37={};for(const [_0x99a533,_0x2655e3]of _0x2dcd0c){_0x525c37[_0x99a533]=_0x2655e3;}return _0x525c37;},'formatDuration'(_0x4a4f56,_0x46900c){if(!_0x4a4f56)return'N/A';const _0x28d4bd=new Date(_0x4a4f56),_0x96d078=_0x46900c?new Date(_0x46900c):new Date(),_0x461f70=_0x96d078-_0x28d4bd;if(_0x461f70<0x0)return'0s';const _0x1b1f73=Math['floor'](_0x461f70/0x3e8),_0x341f20=Math['floor'](_0x1b1f73/0x3c),_0xebf4d3=Math['floor'](_0x341f20/0x3c),_0x2f17c8=Math['floor'](_0xebf4d3/0x18);if(_0x1b1f73<0x3c)return _0x1b1f73+'s';if(_0x341f20<0x3c)return _0x341f20+'m\x20'+_0x1b1f73%0x3c+'s';if(_0xebf4d3<0x18)return _0xebf4d3+'h\x20'+_0x341f20%0x3c+'m\x20'+_0x1b1f73%0x3c+'s';return _0x2f17c8+'d\x20'+_0xebf4d3%0x18+'h\x20'+_0x341f20%0x3c+'m';},'renderMarkdown'(_0x4e8942,_0x180861={}){if(!_0x4e8942)return'';_0x4e8942=this['rewriteAttachmentLinks'](_0x4e8942,_0x180861),_0x4e8942=this['rewriteColorSyntax'](_0x4e8942);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4e8942,_0x180861);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x4e8942);}catch(_0x3e148c){return console['error']('Markdown\x20parsing\x20error:',_0x3e148c),this['renderMarkdownFallback'](_0x4e8942,_0x180861);}},'rewriteAttachmentLinks'(_0x47a58b,_0x17dc08={}){const _0x545db6=typeof _0x17dc08['resolveAttachmentUrl']==='function'?_0x17dc08['resolveAttachmentUrl']:_0x17dc08['taskId']?_0x15b45e=>API_BASE+'/tasks/'+_0x17dc08['taskId']+'/attachments/'+encodeURIComponent(_0x15b45e):null;if(!_0x545db6)return _0x47a58b;return String(_0x47a58b)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3bdc69,_0x17d07a)=>{const _0x21a29a=String(_0x17d07a||'')['trim']();if(!_0x21a29a)return _0x3bdc69;let _0x14784e=_0x21a29a;try{_0x14784e=decodeURIComponent(_0x21a29a);}catch{}const _0x5e693b=_0x545db6(_0x14784e);if(!_0x5e693b)return _0x3bdc69;return']('+_0x5e693b+')';});},'rewriteColorSyntax'(_0x514932){if(!_0x514932)return _0x514932;return String(_0x514932)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x406cc6,_0xd4ee65,_0x437d0e)=>{const _0x3047d4=this['rewriteColorSyntax'](_0x437d0e);return'<span\x20style=\x22color:\x20'+_0xd4ee65+'\x22>'+_0x3047d4+'</span>';});},'renderMarkdownFallback'(_0x28d9e2,_0x260c8f={}){if(!_0x28d9e2)return'';_0x28d9e2=_0x28d9e2['replace'](/\r\n/g,'\x0a'),_0x28d9e2=_0x28d9e2['replace'](/\r/g,'\x0a'),_0x28d9e2=this['rewriteAttachmentLinks'](_0x28d9e2,_0x260c8f);let _0x536ab1=this['escapeHtml'](_0x28d9e2);return _0x536ab1=_0x536ab1['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x536ab1=_0x536ab1['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x536ab1=_0x536ab1['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x536ab1=_0x536ab1['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x536ab1=_0x536ab1['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x536ab1=_0x536ab1['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x536ab1=_0x536ab1['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x536ab1=_0x536ab1['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x536ab1=_0x536ab1['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x536ab1=_0x536ab1['replace'](/\n\n/g,'</p><p>'),_0x536ab1=_0x536ab1['replace'](/\n/g,'<br>'),'<p>'+_0x536ab1+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x456807=new Uint8Array(0x10);crypto['getRandomValues'](_0x456807),_0x456807[0x6]=_0x456807[0x6]&0xf|0x40,_0x456807[0x8]=_0x456807[0x8]&0x3f|0x80;const _0x5581e0=Array['from'](_0x456807,_0x37c459=>_0x37c459['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5581e0['slice'](0x0,0x8)+'-'+_0x5581e0['slice'](0x8,0xc)+'-'+_0x5581e0['slice'](0xc,0x10)+'-'+_0x5581e0['slice'](0x10,0x14)+'-'+_0x5581e0['slice'](0x14);}};export class CustomSelect{constructor(_0x2f06cb,_0x3afb34={}){this['nativeSelect']=_0x2f06cb,this['options']=_0x3afb34,this['isOpen']=![],this['selectedValue']=_0x2f06cb['value']||'',this['searchable']=_0x3afb34['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5ee939=document['createElement']('div');_0x5ee939['className']='custom-select';const _0xda7444=document['createElement']('div');_0xda7444['className']='custom-select-trigger',_0xda7444['setAttribute']('tabindex','0'),_0xda7444['setAttribute']('role','button'),_0xda7444['setAttribute']('aria-haspopup','listbox');const _0x7b9d7f=document['createElement']('span');_0x7b9d7f['className']='custom-select-trigger-text';const _0x396d5f=document['createElement']('span');_0x396d5f['className']='custom-select-arrow',_0x396d5f['textContent']='▼',_0xda7444['appendChild'](_0x7b9d7f),_0xda7444['appendChild'](_0x396d5f);const _0x2d7cb0=document['createElement']('div');_0x2d7cb0['className']='custom-select-dropdown',_0x2d7cb0['setAttribute']('role','listbox');if(this['searchable']){const _0x2d44ee=document['createElement']('div');_0x2d44ee['className']='custom-select-search';const _0xac3e0b=document['createElement']('input');_0xac3e0b['type']='text',_0xac3e0b['className']='custom-select-search-input',_0xac3e0b['placeholder']='Type\x20to\x20search...',_0xac3e0b['setAttribute']('aria-label','Search\x20options'),_0xac3e0b['addEventListener']('input',_0x3fe270=>{this['searchQuery']=_0x3fe270['target']['value']['toLowerCase'](),this['filterOptions']();}),_0xac3e0b['addEventListener']('keydown',_0xf64154=>{if(_0xf64154['key']==='Escape')_0xf64154['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xf64154['key']==='Enter'){_0xf64154['preventDefault'](),_0xf64154['stopPropagation']();const _0x1e6350=_0x2d7cb0['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1e6350){const _0x379154=_0x1e6350['getAttribute']('data-value');this['select'](_0x379154);}}}}),_0x2d44ee['appendChild'](_0xac3e0b),_0x2d7cb0['appendChild'](_0x2d44ee),this['searchInput']=_0xac3e0b;}const _0x346634=document['createElement']('div');_0x346634['className']='custom-select-options',_0x2d7cb0['appendChild'](_0x346634),_0x5ee939['appendChild'](_0xda7444),_0x5ee939['appendChild'](_0x2d7cb0),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5ee939,this['nativeSelect']),this['wrapper']=_0x5ee939,this['trigger']=_0xda7444,this['triggerText']=_0x7b9d7f,this['dropdown']=_0x2d7cb0,this['optionsContainer']=_0x346634,_0xda7444['addEventListener']('click',()=>this['toggle']()),_0xda7444['addEventListener']('keydown',_0x295b51=>this['handleKeydown'](_0x295b51)),document['addEventListener']('click',_0x5bcb71=>{!_0x5ee939['contains'](_0x5bcb71['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x31810f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x31810f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x397bb0=new MutationObserver(()=>{this['updateDisabledState']();});_0x397bb0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x58195c=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x58195c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3217ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3217ab),this['trigger']['setAttribute']('aria-disabled',_0x3217ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3217ab?'-1':'0'),_0x3217ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x25bf92=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x23d308=_0x25bf92['filter'](_0xfb4b3f=>!_0xfb4b3f['disabled']&&!_0xfb4b3f['hidden']);_0x25bf92['forEach']((_0x209b7b,_0x32aeb5)=>{const _0x4d7681=document['createElement']('div');_0x4d7681['className']='custom-select-option',_0x4d7681['textContent']=_0x209b7b['textContent'],_0x4d7681['setAttribute']('data-value',_0x209b7b['value']),_0x4d7681['setAttribute']('data-index',_0x32aeb5),_0x4d7681['setAttribute']('role','option'),_0x209b7b['disabled']?_0x4d7681['classList']['add']('disabled'):_0x4d7681['addEventListener']('click',()=>this['select'](_0x209b7b['value'])),_0x209b7b['value']===this['selectedValue']&&_0x4d7681['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4d7681),this['allOptions']['push']({'element':_0x4d7681,'text':_0x209b7b['textContent']['toLowerCase'](),'value':_0x209b7b['value'],'disabled':_0x209b7b['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32ca7f=this['searchInput']['parentElement'];_0x23d308['length']>0x3?_0x32ca7f['style']['display']='':_0x32ca7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd680a6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x10d15a=>{if(!_0xd680a6||_0x10d15a['disabled'])_0x10d15a['element']['style']['display']='';else{const _0x435071=_0x10d15a['text']['includes'](_0xd680a6);_0x10d15a['element']['style']['display']=_0x435071?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x59f0a7){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x59f0a7,this['nativeSelect']['value']=_0x59f0a7;const _0x5de539=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x5de539),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d9ecd=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d9ecd&&(this['triggerText']['textContent']=_0x1d9ecd['textContent'],_0x1d9ecd['disabled']||_0x1d9ecd['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x284b73=>{_0x284b73['getAttribute']('data-value')===this['selectedValue']?_0x284b73['classList']['add']('selected'):_0x284b73['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 _0x13e452=window['getComputedStyle'](this['dropdown']);if(_0x13e452['position']==='fixed'){const _0x4b6a5c=this['trigger']['getBoundingClientRect'](),_0x272328=parseInt(_0x13e452['maxHeight'])||0xc8,_0x274a68=window['innerHeight'],_0xf60f0c=_0x274a68-_0x4b6a5c['bottom'],_0x4b7cdf=_0x4b6a5c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x21d58d;_0xf60f0c<_0x272328&&_0x4b7cdf>_0xf60f0c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x274a68-_0x4b6a5c['top']+'px',_0x21d58d=Math['min'](_0x272328,_0x4b7cdf-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4b6a5c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x21d58d=Math['min'](_0x272328,_0xf60f0c-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px');if(this['optionsContainer']){let _0x1a1b82=_0x21d58d;if(this['searchInput']){const _0x5d0b74=this['searchInput']['parentElement'];_0x5d0b74&&(_0x1a1b82-=_0x5d0b74['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1a1b82)+'px';}this['dropdown']['style']['left']=_0x4b6a5c['left']+'px',this['dropdown']['style']['width']=_0x4b6a5c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3de21d=this['searchInput']['parentElement'];_0x3de21d&&_0x3de21d['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'](_0xa0b8eb){if(this['nativeSelect']['disabled'])return;if(_0xa0b8eb['key']==='Enter'||_0xa0b8eb['key']==='\x20')_0xa0b8eb['preventDefault'](),this['toggle']();else _0xa0b8eb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x169778='\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',_0x169778),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4bbce2=document['getElementById']('confirm-dialog-close'),_0x493180=document['getElementById']('confirm-dialog-cancel'),_0x50a0f9=document['getElementById']('confirm-dialog-confirm'),_0x1f2517=this['_modal']['querySelector']('.modal-overlay');_0x4bbce2['addEventListener']('click',()=>this['_resolve'](![])),_0x493180['addEventListener']('click',()=>this['_resolve'](![])),_0x50a0f9['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x104e9c=>{if(_0x104e9c['key']==='Escape')_0x104e9c['preventDefault'](),this['_resolve'](![]);else _0x104e9c['key']==='Enter'&&(_0x104e9c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4a70f8,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x185c43=>{this['_resolvePromise']=_0x185c43,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4a70f8;const _0x3d99be=document['getElementById']('confirm-dialog-cancel'),_0x8f4ab9=document['getElementById']('confirm-dialog-confirm');_0x3d99be['textContent']=cancelText,_0x8f4ab9['textContent']=confirmText,_0x8f4ab9['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x8f4ab9['focus']();});},'_resolve'(_0x18ba77){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x18ba77),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1313b1,_0x443699={}){this['container']=_0x1313b1,this['options']={'placeholder':_0x443699['placeholder']||'Type\x20to\x20search...','maxItems':_0x443699['maxItems']||0x64,'loadItems':_0x443699['loadItems']||(async()=>[]),'renderItem':_0x443699['renderItem']||(_0x3fe1a9=>({'primary':String(_0x3fe1a9),'secondary':''})),'onSelect':_0x443699['onSelect']||(()=>{}),'filterItems':_0x443699['filterItems']||null,'getItemValue':_0x443699['getItemValue']||(_0x562983=>_0x562983),'sortItems':_0x443699['sortItems']||null,'debounceMs':_0x443699['debounceMs']||0xc8,'minCharsForSearch':_0x443699['minCharsForSearch']||0x0,'emptyMessage':_0x443699['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x443699['loadingMessage']||'Loading...','preload':_0x443699['preload']!==![],'searchMode':_0x443699['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',_0x215421=>this['onBlur'](_0x215421)),this['input']['addEventListener']('input',_0x3548ea=>this['onInput'](_0x3548ea)),this['input']['addEventListener']('keydown',_0xefbf10=>this['onKeydown'](_0xefbf10)),this['clearBtn']['addEventListener']('mousedown',_0x1321ff=>{_0x1321ff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4e34fa=>{_0x4e34fa['preventDefault']();}),document['addEventListener']('click',_0x1b8ee8=>{!this['wrapper']['contains'](_0x1b8ee8['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(_0x409203){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x409203);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2b3ab2){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x544beb){const _0x28c53b=_0x544beb['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x28c53b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x28c53b):this['loadAndShow'](_0x28c53b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xb401c9){switch(_0xb401c9['key']){case'ArrowDown':_0xb401c9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xb401c9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xb401c9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xb401c9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x18c7d3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2226af=this['selectedIndex']+_0x18c7d3;if(_0x2226af>=0x0&&_0x2226af<this['filteredItems']['length']){this['selectedIndex']=_0x2226af,this['updateSelectionHighlight']();const _0x2450fd=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2450fd[this['selectedIndex']]&&_0x2450fd[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x44c3ff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x44c3ff['forEach']((_0x3b530b,_0x533ec8)=>{_0x3b530b['classList']['toggle']('keyboard-selected',_0x533ec8===this['selectedIndex']);});}async['loadAndShow'](_0x343e97){this['showLoading']();try{const _0x4a69eb=await this['options']['loadItems'](_0x343e97);if(this['options']['searchMode']==='server'){let _0x3a6389=_0x4a69eb;this['options']['sortItems']&&(_0x3a6389=this['options']['sortItems']([..._0x4a69eb]));this['filteredItems']=_0x3a6389;const _0x5b6846=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b6846&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b6846),this['open']();}else this['allItems']=_0x4a69eb,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x343e97);}catch(_0x38d1ff){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x38d1ff),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x55a744){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x55a744):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2ca873=this['filteredItems']['length']>=this['options']['maxItems'];_0x2ca873&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2ca873),this['open']();}['renderItems'](_0x37e452){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']((_0x7977e7,_0x2a77c3)=>{const _0x85cce0=document['createElement']('div');_0x85cce0['className']='autocomplete-select-item',_0x85cce0['setAttribute']('role','option'),_0x85cce0['setAttribute']('data-index',_0x2a77c3);const _0x14f56c=this['options']['renderItem'](_0x7977e7);let _0xbb2ac1='';_0x14f56c['icon']&&(_0xbb2ac1='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x14f56c['iconClass']||'')+'\x22>'+_0x14f56c['icon']+'</span>'),_0x85cce0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xbb2ac1+'\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'](_0x14f56c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x14f56c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x14f56c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x85cce0['addEventListener']('click',()=>{this['selectItem'](_0x7977e7);}),_0x85cce0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x2a77c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x85cce0);}),_0x37e452?(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'](_0x982c7f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x982c7f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e6985){this['selectedItem']=_0x2e6985;const _0x2816f6=this['options']['renderItem'](_0x2e6985);this['input']['value']=_0x2816f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e6985);}['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'](_0x3ced21){if(_0x3ced21){this['selectedItem']=_0x3ced21;const _0x27e227=this['options']['renderItem'](_0x3ced21);this['input']['value']=_0x27e227['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4bafe7){this['allItems']=_0x4bafe7,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'](_0x132dc3){this['input']['placeholder']=_0x132dc3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1d6b08=null){const _0x53a60b=document['getElementById']('admin-menu-container'),_0x1482b6=document['getElementById']('admin-menu-btn'),_0x209e14=document['getElementById']('admin-menu');if(!_0x53a60b||!_0x1482b6||!_0x209e14)return;try{!_0x1d6b08&&(_0x1d6b08=await API['getCurrentUser']());if(_0x1d6b08){const _0x5e3baa=window['Permissions'],_0x395aca=_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:manage')||_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')||_0x5e3baa['hasTeamPermission'](_0x1d6b08,'teams:manage')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:view_details');if(!_0x395aca)return;_0x53a60b['hidden']=![];if(!_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')){const _0x36a349=_0x209e14['querySelectorAll']('.admin-menu-item');_0x36a349['forEach'](_0x18f6f6=>{const _0x28054f=_0x18f6f6['querySelector']('.option-text')?.['textContent']?.['trim']();_0x28054f==='Users'&&!_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Skills'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Settings'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Health'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Git\x20History'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Roles'&&(_0x18f6f6['hidden']=!![]);});}_0x1482b6['addEventListener']('click',_0x27ebf6=>{_0x27ebf6['stopPropagation']();const _0x1f10b1=document['getElementById']('actions-menu');if(_0x1f10b1)_0x1f10b1['hidden']=!![];_0x209e14['hidden']=!_0x209e14['hidden'];}),document['addEventListener']('click',_0x52caf7=>{!_0x209e14['hidden']&&!_0x1482b6['contains'](_0x52caf7['target'])&&!_0x209e14['contains'](_0x52caf7['target'])&&(_0x209e14['hidden']=!![]);}),document['addEventListener']('keydown',_0x5c0718=>{_0x5c0718['key']==='Escape'&&!_0x209e14['hidden']&&(_0x209e14['hidden']=!![]);});const _0xcd6129=document['getElementById']('server-health-btn');_0xcd6129&&_0xcd6129['addEventListener']('click',async()=>{_0x209e14['hidden']=!![];const {openServerHealthModal:_0x3418b7}=await import('./server-health.js');_0x3418b7();});}}catch(_0x18bb55){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x18bb55['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|