@profoundlogic/coderflow-server 0.5.6 → 0.5.7
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/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-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/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.css +6 -4
- package/dist/web-ui/public/feedback-widget.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/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/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +34 -4
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x580988=window['location']['pathname'],_0x2582ba=_0x580988['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x2582ba)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x2582ba[0x1]),_0x2582ba[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x5cd922={}){const _0xeb270=new URLSearchParams();_0x5cd922['userId']&&_0xeb270['set']('userId',String(_0x5cd922['userId']));_0x5cd922['automation']&&_0xeb270['set']('automation',String(_0x5cd922['automation']));const _0x4852a2=API_BASE+'/tasks/stats'+(_0xeb270['toString']()?'?'+_0xeb270['toString']():''),_0x42472b=await fetch(_0x4852a2);if(!_0x42472b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42472b['statusText']);return await _0x42472b['json']();},async 'getTasks'(_0x2562bf={}){const _0x132ebb=new URLSearchParams();_0x2562bf['status']&&_0x132ebb['set']('status',String(_0x2562bf['status']));_0x2562bf['environment']&&_0x132ebb['set']('environment',String(_0x2562bf['environment']));_0x2562bf['automation']&&_0x132ebb['set']('automation',String(_0x2562bf['automation']));if(_0x2562bf['include']){const _0x31ba88=Array['isArray'](_0x2562bf['include'])?_0x2562bf['include']['join'](','):String(_0x2562bf['include']);_0x31ba88&&_0x132ebb['set']('include',_0x31ba88);}_0x2562bf['filter']&&_0x132ebb['set']('filter',String(_0x2562bf['filter']));_0x2562bf['page']&&_0x132ebb['set']('page',String(_0x2562bf['page']));_0x2562bf['limit']&&_0x132ebb['set']('limit',String(_0x2562bf['limit']));_0x2562bf['userId']&&_0x132ebb['set']('userId',String(_0x2562bf['userId']));_0x2562bf['search']&&_0x132ebb['set']('search',String(_0x2562bf['search']));_0x2562bf['includeChildTasks']&&_0x132ebb['set']('includeChildTasks','true');const _0x39ba67=API_BASE+'/tasks'+(_0x132ebb['toString']()?'?'+_0x132ebb['toString']():''),_0xd2c242=await fetch(_0x39ba67);if(!_0xd2c242['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xd2c242['statusText']);return await _0xd2c242['json']();},async 'getAutomations'(_0x1e5e4d={}){const _0x2f9637=new URLSearchParams();_0x1e5e4d['environment']&&_0x2f9637['set']('environment',String(_0x1e5e4d['environment']));const _0x54a561=await fetch(API_BASE+'/api/automations'+(_0x2f9637['toString']()?'?'+_0x2f9637['toString']():''));if(!_0x54a561['ok']){const _0x908d3=await _0x54a561['json']()['catch'](()=>({}));throw new Error(_0x908d3['message']||_0x908d3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x54a561['statusText']);}return await _0x54a561['json']();},async 'getAutomation'(_0x48664a){const _0x42e623=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48664a));if(!_0x42e623['ok']){const _0x4806c3=await _0x42e623['json']()['catch'](()=>({}));throw new Error(_0x4806c3['message']||_0x4806c3['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x42e623['statusText']);}return await _0x42e623['json']();},async 'createAutomation'(_0x5e1c36){const _0xd88e6e=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e1c36||{})});if(!_0xd88e6e['ok']){const _0x51ce5d=await _0xd88e6e['json']()['catch'](()=>({}));throw new Error(_0x51ce5d['message']||_0x51ce5d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xd88e6e['statusText']);}return await _0xd88e6e['json']();},async 'updateAutomation'(_0x456ab3,_0x10c3a3){const _0x12641b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x456ab3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c3a3||{})});if(!_0x12641b['ok']){const _0x7a31f8=await _0x12641b['json']()['catch'](()=>({}));throw new Error(_0x7a31f8['message']||_0x7a31f8['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x12641b['statusText']);}return await _0x12641b['json']();},async 'deleteAutomation'(_0x467ab8){const _0x266113=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x467ab8),{'method':'DELETE'});if(!_0x266113['ok']){const _0xc01345=await _0x266113['json']()['catch'](()=>({}));throw new Error(_0xc01345['message']||_0xc01345['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x266113['statusText']);}return await _0x266113['json']();},async 'triggerAutomation'(_0x336061){const _0x204bb8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x336061)+'/trigger',{'method':'POST'});if(!_0x204bb8['ok']){const _0x46e9a6=await _0x204bb8['json']()['catch'](()=>({}));throw new Error(_0x46e9a6['message']||_0x46e9a6['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x204bb8['statusText']);}return await _0x204bb8['json']();},async 'setAutomationEnabled'(_0x311be0,_0xbd1c72){const _0x8e15c9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x311be0)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xbd1c72})});if(!_0x8e15c9['ok']){const _0x109b34=await _0x8e15c9['json']()['catch'](()=>({}));throw new Error(_0x109b34['message']||_0x109b34['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x8e15c9['statusText']);}return await _0x8e15c9['json']();},async 'getAutomationHistory'(_0x5c615b,_0x32a61f=0x32){const _0x59e492=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c615b)+'/history?limit='+encodeURIComponent(String(_0x32a61f)));if(!_0x59e492['ok']){const _0x54eb4b=await _0x59e492['json']()['catch'](()=>({}));throw new Error(_0x54eb4b['message']||_0x54eb4b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59e492['statusText']);}return await _0x59e492['json']();},async 'getTask'(_0x150d2a,_0x2619b3={}){const _0x39a355=new URLSearchParams();if(_0x2619b3['include']){const _0x454fa1=Array['isArray'](_0x2619b3['include'])?_0x2619b3['include']['join'](','):String(_0x2619b3['include']);if(_0x454fa1)_0x39a355['set']('include',_0x454fa1);}const _0xec17a7=await fetch(API_BASE+'/tasks/'+_0x150d2a+(_0x39a355['toString']()?'?'+_0x39a355['toString']():''));if(!_0xec17a7['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xec17a7['statusText']);return await _0xec17a7['json']();},async 'getTaskResults'(_0x56afc8){const _0x473aca=await fetch(API_BASE+'/tasks/'+_0x56afc8+'/results');if(!_0x473aca['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x473aca['statusText']);return await _0x473aca['json']();},async 'getTaskPatches'(_0x3c14bc){const _0x296e5b=await fetch(API_BASE+'/tasks/'+_0x3c14bc+'/patches');if(!_0x296e5b['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x296e5b['statusText']);return await _0x296e5b['json']();},async 'getTaskAttachments'(_0x2afb06){const _0x2bb50d=await fetch(API_BASE+'/tasks/'+_0x2afb06+'/attachments');if(!_0x2bb50d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2bb50d['statusText']);return await _0x2bb50d['json']();},async 'uploadAttachments'(_0xbcaa1b,_0x1c490a){const _0x125535=new FormData();for(const _0x29e983 of _0x1c490a){_0x125535['append']('attachments',_0x29e983);}const _0x3ec7fb=await fetch(API_BASE+'/tasks/'+_0xbcaa1b+'/attachments',{'method':'POST','body':_0x125535});if(!_0x3ec7fb['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3ec7fb['statusText']);return await _0x3ec7fb['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1e2f9a=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1e2f9a['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1e2f9a['json']();}catch(_0x30da53){return{'available':![],'reason':_0x30da53['message']};}},async 'generateTaskName'(_0x13618e){try{const _0x37c94b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x13618e})});return await _0x37c94b['json']();}catch(_0x4df798){return{'success':![],'error':_0x4df798['message']};}},async 'createTask'(_0x1d5315){let _0x562b0a,_0xb02f1e={};if(_0x1d5315['files']&&_0x1d5315['files']['length']>0x0){const _0x4446e8=new FormData();for(const [_0x137001,_0x4d0a85]of Object['entries'](_0x1d5315)){if(_0x137001!=='files'){if(_0x4d0a85==null)continue;typeof _0x4d0a85==='object'?_0x4446e8['append'](_0x137001,JSON['stringify'](_0x4d0a85)):_0x4446e8['append'](_0x137001,String(_0x4d0a85));}}for(const _0x1a490f of _0x1d5315['files']){_0x4446e8['append']('attachments',_0x1a490f);}_0x562b0a=_0x4446e8;}else _0xb02f1e['Content-Type']='application/json',_0x562b0a=JSON['stringify'](_0x1d5315);const _0x59ec7a=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0xb02f1e,'body':_0x562b0a});if(!_0x59ec7a['ok']){const _0x296926=await _0x59ec7a['json'](),_0x1154fb=new Error(_0x296926['error']||'Failed\x20to\x20create\x20task:\x20'+_0x59ec7a['statusText']),{message:_0x4b47eb,..._0x3d5679}=_0x296926;Object['assign'](_0x1154fb,_0x3d5679);throw _0x1154fb;}return await _0x59ec7a['json']();},async 'createTestTask'(_0x1439fe){const _0x560e85=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1439fe)});if(!_0x560e85['ok']){const _0x322276=await _0x560e85['json']();throw new Error(_0x322276['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x560e85['statusText']);}return await _0x560e85['json']();},async 'createEphemeralTest'(_0x3705ae){const _0x5d0070=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3705ae)});if(!_0x5d0070['ok']){const _0x17ed79=await _0x5d0070['json']();throw new Error(_0x17ed79['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5d0070['statusText']);}return await _0x5d0070['json']();},async 'createDeployTask'(_0x38c04c){const _0x202fbc=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38c04c)});if(!_0x202fbc['ok']){const _0xd5f926=await _0x202fbc['json']();throw new Error(_0xd5f926['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x202fbc['statusText']);}return await _0x202fbc['json']();},async 'getEnvironments'(){const _0x4ca6ca=await fetch(API_BASE+'/environments');if(!_0x4ca6ca['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4ca6ca['statusText']);return await _0x4ca6ca['json']();},async 'getEnvironment'(_0x57c74c){const _0x3d8634=await fetch(API_BASE+'/environments/'+_0x57c74c);if(!_0x3d8634['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x3d8634['statusText']);return await _0x3d8634['json']();},async 'getEnvironmentRepoHistory'(_0x39231d,_0x1c1e77,_0x3af9a2={}){if(!_0x39231d||!_0x1c1e77)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x663fa7=new URLSearchParams();if(_0x3af9a2['limit'])_0x663fa7['set']('limit',String(_0x3af9a2['limit']));if(_0x3af9a2['offset'])_0x663fa7['set']('offset',String(_0x3af9a2['offset']));if(_0x3af9a2['search'])_0x663fa7['set']('search',String(_0x3af9a2['search']));if(_0x3af9a2['branch'])_0x663fa7['set']('branch',String(_0x3af9a2['branch']));const _0x128f92=API_BASE+'/environments/'+encodeURIComponent(_0x39231d)+'/repos/'+encodeURIComponent(_0x1c1e77)+'/git/history',_0x5a24bb=await fetch(''+_0x128f92+(_0x663fa7['toString']()?'?'+_0x663fa7['toString']():''));if(!_0x5a24bb['ok']){const _0x56e7ff=await _0x5a24bb['json']()['catch'](()=>({}));throw new Error(_0x56e7ff['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5a24bb['statusText']);}return await _0x5a24bb['json']();},async 'getEnvironmentRepoCommit'(_0x44b641,_0x3e35ff,_0x1855aa){if(!_0x44b641||!_0x3e35ff||!_0x1855aa)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xcfe2af=API_BASE+'/environments/'+encodeURIComponent(_0x44b641)+'/repos/'+encodeURIComponent(_0x3e35ff)+'/git/commits/'+encodeURIComponent(_0x1855aa),_0x2d86a1=await fetch(_0xcfe2af);if(!_0x2d86a1['ok']){const _0x4e2929=await _0x2d86a1['json']()['catch'](()=>({}));throw new Error(_0x4e2929['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2d86a1['statusText']);}return await _0x2d86a1['json']();},async 'getEnvironmentRepoBranches'(_0x25a071,_0x3c3739){if(!_0x25a071||!_0x3c3739)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3ca37f=API_BASE+'/environments/'+encodeURIComponent(_0x25a071)+'/repos/'+encodeURIComponent(_0x3c3739)+'/git/branches',_0x121bc3=await fetch(_0x3ca37f);if(!_0x121bc3['ok']){const _0x28a650=await _0x121bc3['json']()['catch'](()=>({}));throw new Error(_0x28a650['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x121bc3['statusText']);}return await _0x121bc3['json']();},async 'revertEnvironmentRepoCommit'(_0xadad5,_0x1642fa,_0x21f0cf,_0x1d0288={}){if(!_0xadad5||!_0x1642fa||!_0x21f0cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1bba4b=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0xadad5)+'/repos/'+encodeURIComponent(_0x1642fa)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x21f0cf,..._0x1d0288})});if(!_0x1bba4b['ok']){const _0x148eee=await _0x1bba4b['json']()['catch'](()=>({}));throw new Error(_0x148eee['message']||_0x148eee['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1bba4b['statusText']);}return await _0x1bba4b['json']();},async 'getTemplates'(_0xf57d07={}){const _0x5c9bf1=new URLSearchParams();if(_0xf57d07['include']){const _0x46560d=Array['isArray'](_0xf57d07['include'])?_0xf57d07['include']['join'](','):String(_0xf57d07['include']);if(_0x46560d)_0x5c9bf1['set']('include',_0x46560d);}const _0x33f099=await fetch(API_BASE+'/templates'+(_0x5c9bf1['toString']()?'?'+_0x5c9bf1['toString']():''));if(!_0x33f099['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x33f099['statusText']);return await _0x33f099['json']();},async 'getTemplatesForEnvironment'(_0x3d36d0,_0x123089={}){if(!_0x3d36d0)throw new Error('Environment\x20name\x20is\x20required');const _0x3a6753=new URLSearchParams();if(_0x123089['include']){const _0x397c67=Array['isArray'](_0x123089['include'])?_0x123089['include']['join'](','):String(_0x123089['include']);if(_0x397c67)_0x3a6753['set']('include',_0x397c67);}const _0x5c871a=await fetch(API_BASE+'/templates/'+_0x3d36d0+(_0x3a6753['toString']()?'?'+_0x3a6753['toString']():''));if(!_0x5c871a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3d36d0+':\x20'+_0x5c871a['statusText']);return await _0x5c871a['json']();},async 'getTemplate'(_0x3a5d30,_0x3e9852,_0x420dda={}){if(!_0x3a5d30||!_0x3e9852)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x15e9cf=new URLSearchParams();if(_0x420dda['include']){const _0x1a4f62=Array['isArray'](_0x420dda['include'])?_0x420dda['include']['join'](','):String(_0x420dda['include']);if(_0x1a4f62)_0x15e9cf['set']('include',_0x1a4f62);}const _0x5837ea=await fetch(API_BASE+'/templates/'+_0x3a5d30+'/'+_0x3e9852+(_0x15e9cf['toString']()?'?'+_0x15e9cf['toString']():''));if(!_0x5837ea['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x5837ea['statusText']);return await _0x5837ea['json']();},async 'getTaskLogs'(_0x4f016b,_0x25d7ef={}){if(!_0x4f016b)throw new Error('Task\x20ID\x20is\x20required');const _0x3b6775=new URLSearchParams();_0x25d7ef['tail']&&_0x3b6775['set']('tail',String(_0x25d7ef['tail']));const _0x495a87=await fetch(API_BASE+'/tasks/'+_0x4f016b+'/logs'+(_0x3b6775['toString']()?'?'+_0x3b6775['toString']():''));if(!_0x495a87['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x495a87['statusText']);return await _0x495a87['text']();},async 'getContainers'(){const _0x138d9b=await fetch(API_BASE+'/containers');if(!_0x138d9b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x138d9b['statusText']);return await _0x138d9b['json']();},async 'getContainer'(_0x210627){const _0x5a63f8=await fetch(API_BASE+'/containers/'+_0x210627);if(!_0x5a63f8['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5a63f8['statusText']);return await _0x5a63f8['json']();},async 'startInteractiveContainer'(_0x2a380e){const _0x343f6c=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a380e)});if(!_0x343f6c['ok']){const _0x206e04=await _0x343f6c['json']()['catch'](()=>({}));throw new Error(_0x206e04['message']||'Failed\x20to\x20start\x20container:\x20'+_0x343f6c['statusText']);}return await _0x343f6c['json']();},async 'stopContainer'(_0x305279){const _0x186c17=await fetch(API_BASE+'/containers/'+_0x305279,{'method':'DELETE'});if(!_0x186c17['ok']){const _0x2742f4=await _0x186c17['json']()['catch'](()=>({}));throw new Error(_0x2742f4['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x186c17['statusText']);}return await _0x186c17['json']();},async 'stopTask'(_0x22f05c){if(!_0x22f05c)throw new Error('Task\x20ID\x20is\x20required');const _0x26c080=await fetch(API_BASE+'/tasks/'+_0x22f05c+'/stop',{'method':'POST'});if(!_0x26c080['ok']){const _0x5e3b8d=await _0x26c080['json']()['catch'](()=>({}));throw new Error(_0x5e3b8d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x26c080['statusText']);}return await _0x26c080['json']();},async 'interruptTask'(_0x405d80){if(!_0x405d80)throw new Error('Task\x20ID\x20is\x20required');const _0xe27a5c=await fetch(API_BASE+'/tasks/'+_0x405d80+'/interrupt',{'method':'POST'});if(!_0xe27a5c['ok']){const _0x2f4920=await _0xe27a5c['json']()['catch'](()=>({}));throw new Error(_0x2f4920['error']||_0x2f4920['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0xe27a5c['statusText']);}return await _0xe27a5c['json']();},async 'startTask'(_0x4699c8){if(!_0x4699c8)throw new Error('Task\x20ID\x20is\x20required');const _0x4ed432=await fetch(API_BASE+'/tasks/'+_0x4699c8+'/start',{'method':'POST'});if(!_0x4ed432['ok']){const _0x57f229=await _0x4ed432['json']()['catch'](()=>({}));throw new Error(_0x57f229['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4ed432['statusText']);}return await _0x4ed432['json']();},async 'deleteTask'(_0x18ab57){if(!_0x18ab57)throw new Error('Task\x20ID\x20is\x20required');const _0x1225de=await fetch(API_BASE+'/tasks/'+_0x18ab57,{'method':'DELETE'});if(!_0x1225de['ok']){const _0xae8753=await _0x1225de['json']()['catch'](()=>({}));throw new Error(_0xae8753['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x1225de['statusText']);}return await _0x1225de['json']();},async 'refreshTasksFromDisk'(){const _0x1f5e30=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f5e30['ok']){const _0x375ccc=await _0x1f5e30['json']()['catch'](()=>({}));throw new Error(_0x375ccc['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f5e30['statusText']);}return await _0x1f5e30['json']();},async 'approveTask'(_0x5721b1,_0x5d8ce8={}){if(!_0x5721b1)throw new Error('Task\x20ID\x20is\x20required');const _0x361c45={'commit_message':_0x5d8ce8['commit_message']||'','pull':_0x5d8ce8['pull']??![],'push':_0x5d8ce8['push']??![]};_0x5d8ce8['new_branch']&&(_0x361c45['new_branch']=_0x5d8ce8['new_branch']);const _0x3f52b8=await fetch(API_BASE+'/tasks/'+_0x5721b1+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x361c45)});if(!_0x3f52b8['ok']){const _0x2dfdfb=await _0x3f52b8['json']()['catch'](()=>({}));let _0x525f0b=_0x2dfdfb['error']||_0x2dfdfb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3f52b8['statusText'];if(_0x2dfdfb['results']&&Array['isArray'](_0x2dfdfb['results'])){const _0xdecaac=_0x2dfdfb['results']['filter'](_0x4c6382=>!_0x4c6382['success']&&_0x4c6382['error']);_0xdecaac['length']>0x0&&(_0x525f0b=_0xdecaac[0x0]['error']);}throw new Error(_0x525f0b);}return await _0x3f52b8['json']();},async 'getPullRequestInfo'(_0x2f17c7){if(!_0x2f17c7)throw new Error('Task\x20ID\x20is\x20required');const _0x3d9892=await fetch(API_BASE+'/tasks/'+_0x2f17c7+'/pull-request-info');if(!_0x3d9892['ok']){const _0x4a75c0=await _0x3d9892['json']()['catch'](()=>({}));throw new Error(_0x4a75c0['error']||_0x4a75c0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d9892['statusText']);}return await _0x3d9892['json']();},async 'createPullRequests'(_0x3f979d,_0x573317){if(!_0x3f979d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x573317||!Array['isArray'](_0x573317))throw new Error('repos\x20array\x20is\x20required');const _0x4e9962=await fetch(API_BASE+'/tasks/'+_0x3f979d+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x573317})});if(!_0x4e9962['ok']){const _0x4bd8ca=await _0x4e9962['json']()['catch'](()=>({}));let _0x15d1fc=_0x4bd8ca['error']||_0x4bd8ca['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4e9962['statusText'];if(_0x4bd8ca['results']&&Array['isArray'](_0x4bd8ca['results'])){const _0xeb5c8b=_0x4bd8ca['results']['filter'](_0x1b32f3=>!_0x1b32f3['success']&&_0x1b32f3['error']);_0xeb5c8b['length']>0x0&&(_0x15d1fc=_0xeb5c8b[0x0]['error']);}throw new Error(_0x15d1fc);}return await _0x4e9962['json']();},async 'syncRepos'(_0x5903fb){if(!_0x5903fb)throw new Error('Task\x20ID\x20is\x20required');const _0x4d77d5=await fetch(API_BASE+'/tasks/'+_0x5903fb+'/sync-repos',{'method':'POST'});if(!_0x4d77d5['ok']){const _0x121029=await _0x4d77d5['json']()['catch'](()=>({}));throw new Error(_0x121029['error']||_0x121029['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4d77d5['statusText']);}return await _0x4d77d5['json']();},async 'getIbmiSyncInfo'(_0x1a0684){if(!_0x1a0684)throw new Error('Task\x20ID\x20is\x20required');const _0x5200e2=await fetch(API_BASE+'/tasks/'+_0x1a0684+'/ibmi-sync-info');if(!_0x5200e2['ok']){const _0x4413c4=await _0x5200e2['json']()['catch'](()=>({}));throw new Error(_0x4413c4['error']||_0x4413c4['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5200e2['json']();},async 'syncToIbmi'(_0x53f081,_0x10666c){if(!_0x53f081)throw new Error('Task\x20ID\x20is\x20required');const _0xd77bf5=await fetch(API_BASE+'/tasks/'+_0x53f081+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x10666c})});if(!_0xd77bf5['ok']){const _0x1abc4a=await _0xd77bf5['json']()['catch'](()=>({}));throw new Error(_0x1abc4a['error']||_0x1abc4a['message']||'Sync\x20failed');}return await _0xd77bf5['json']();},async 'getIbmiSyncLog'(_0xec5bd5){if(!_0xec5bd5)throw new Error('Task\x20ID\x20is\x20required');const _0x5f17df=await fetch(API_BASE+'/tasks/'+_0xec5bd5+'/ibmi-sync-log');if(!_0x5f17df['ok']){const _0x15f7cb=await _0x5f17df['json']()['catch'](()=>({}));throw new Error(_0x15f7cb['error']||_0x15f7cb['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5f17df['json']();},async 'pullChanges'(_0x3915fa){if(!_0x3915fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5228fa=await fetch(API_BASE+'/tasks/'+_0x3915fa+'/pull-changes',{'method':'POST'});if(!_0x5228fa['ok']){const _0x4621c3=await _0x5228fa['json']()['catch'](()=>({}));throw new Error(_0x4621c3['error']||_0x4621c3['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5228fa['statusText']);}return await _0x5228fa['json']();},async 'readFile'(_0x4965cb,_0x32c5bc){if(!_0x4965cb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x32c5bc)throw new Error('File\x20path\x20is\x20required');const _0x1a0ab2=await fetch(API_BASE+'/tasks/'+_0x4965cb+'/files?path='+encodeURIComponent(_0x32c5bc));if(!_0x1a0ab2['ok']){const _0xe6ffbc=await _0x1a0ab2['json']()['catch'](()=>({}));throw new Error(_0xe6ffbc['error']||_0xe6ffbc['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1a0ab2['statusText']);}return await _0x1a0ab2['json']();},async 'writeFile'(_0x2b294e,_0x545fee,_0xa07389){if(!_0x2b294e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x545fee)throw new Error('File\x20path\x20is\x20required');if(_0xa07389===undefined)throw new Error('Content\x20is\x20required');const _0x2d95bb=await fetch(API_BASE+'/tasks/'+_0x2b294e+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x545fee,'content':_0xa07389})});if(!_0x2d95bb['ok']){const _0x21e895=await _0x2d95bb['json']()['catch'](()=>({}));throw new Error(_0x21e895['error']||_0x21e895['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2d95bb['statusText']);}return await _0x2d95bb['json']();},async 'deleteFile'(_0x277a22,_0x229471){if(!_0x277a22)throw new Error('Task\x20ID\x20is\x20required');if(!_0x229471)throw new Error('File\x20path\x20is\x20required');const _0x3786a3=await fetch(API_BASE+'/tasks/'+_0x277a22+'/files?path='+encodeURIComponent(_0x229471),{'method':'DELETE'});if(!_0x3786a3['ok']){const _0x47e898=await _0x3786a3['json']()['catch'](()=>({}));throw new Error(_0x47e898['error']||_0x47e898['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x3786a3['statusText']);}return await _0x3786a3['json']();},async 'discardFile'(_0x3e4fa9,_0x5c8119,_0x34a69b){if(!_0x3e4fa9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5c8119)throw new Error('File\x20path\x20is\x20required');if(!_0x34a69b)throw new Error('Repository\x20path\x20is\x20required');const _0x481c18=await fetch(API_BASE+'/tasks/'+_0x3e4fa9+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5c8119,'repoPath':_0x34a69b})});if(!_0x481c18['ok']){const _0x25718f=await _0x481c18['json']()['catch'](()=>({}));throw new Error(_0x25718f['error']||_0x25718f['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x481c18['statusText']);}return await _0x481c18['json']();},async 'followUpTask'(_0x1ce75d,_0x580b5f={}){if(!_0x1ce75d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x580b5f['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3ea782,_0x4f0052={};if(_0x580b5f['files']&&_0x580b5f['files']['length']>0x0){const _0x49509=new FormData();_0x49509['append']('instructions',_0x580b5f['instructions']);for(const _0x536e99 of _0x580b5f['files']){_0x49509['append']('attachments',_0x536e99);}_0x3ea782=_0x49509;}else _0x4f0052['Content-Type']='application/json',_0x3ea782=JSON['stringify']({'instructions':_0x580b5f['instructions']});const _0x1917de=await fetch(API_BASE+'/tasks/'+_0x1ce75d+'/follow-up',{'method':'POST','headers':_0x4f0052,'body':_0x3ea782});if(!_0x1917de['ok']){const _0x1c24ed=await _0x1917de['json']()['catch'](()=>({}));throw new Error(_0x1c24ed['error']||_0x1c24ed['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1917de['statusText']);}return await _0x1917de['json']();},async 'getTaskRewindPoints'(_0x2ab5ab){if(!_0x2ab5ab)throw new Error('Task\x20ID\x20is\x20required');const _0x5cb5ec=await fetch(API_BASE+'/tasks/'+_0x2ab5ab+'/rewind-points');if(!_0x5cb5ec['ok']){const _0x50d04d=await _0x5cb5ec['json']()['catch'](()=>({}));throw new Error(_0x50d04d['error']||_0x50d04d['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x5cb5ec['statusText']);}return await _0x5cb5ec['json']();},async 'rewindTask'(_0x3a831b,_0x5828ec={}){if(!_0x3a831b)throw new Error('Task\x20ID\x20is\x20required');const _0x2574a0=Number['isInteger'](_0x5828ec['targetFollowUpCount'])?_0x5828ec['targetFollowUpCount']:0x0,_0x121668={'targetFollowUpCount':_0x2574a0};typeof _0x5828ec['instructions']==='string'&&_0x5828ec['instructions']['trim']()&&(_0x121668['instructions']=_0x5828ec['instructions']['trim']());typeof _0x5828ec['rewindFiles']==='boolean'&&(_0x121668['rewindFiles']=_0x5828ec['rewindFiles']);const _0x5f025c=await fetch(API_BASE+'/tasks/'+_0x3a831b+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x121668)});if(!_0x5f025c['ok']){const _0xa1f3fa=await _0x5f025c['json']()['catch'](()=>({}));throw new Error(_0xa1f3fa['error']||_0xa1f3fa['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5f025c['statusText']);}return await _0x5f025c['json']();},async 'login'(_0x16eb58,_0x4a4054){const _0x5ca7c5=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x16eb58,'password':_0x4a4054})});if(!_0x5ca7c5['ok']){const _0x4f90ef=await _0x5ca7c5['json']();throw new Error(_0x4f90ef['message']||'Login\x20failed');}return await _0x5ca7c5['json']();},async 'logout'(){const _0x579d68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x579d68['ok']){const _0x4749ff=await _0x579d68['json']();throw new Error(_0x4749ff['message']||'Logout\x20failed');}return await _0x579d68['json']();},async 'getCurrentUser'(){const _0x434ed4=await fetch(API_BASE+'/auth/me');if(!_0x434ed4['ok'])throw new Error('Not\x20authenticated');const _0x3997e9=await _0x434ed4['json']();return _0x3997e9['user'];},async 'getRolesInfo'(){const _0xbe942e=await fetch(API_BASE+'/users/roles');if(!_0xbe942e['ok']){const _0xccc48e=await _0xbe942e['json']();throw new Error(_0xccc48e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0xbe942e['json']();},async 'getUsers'(){const _0x132ce0=await fetch(API_BASE+'/users');if(!_0x132ce0['ok']){const _0x546f93=await _0x132ce0['json']();throw new Error(_0x546f93['message']||'Failed\x20to\x20get\x20users');}return await _0x132ce0['json']();},async 'getUser'(_0x3d7080){const _0xb84c01=await fetch(API_BASE+'/users/'+_0x3d7080);if(!_0xb84c01['ok']){const _0xe5ed3f=await _0xb84c01['json']();throw new Error(_0xe5ed3f['message']||'Failed\x20to\x20get\x20user');}return await _0xb84c01['json']();},async 'createUser'(_0x3b96c4){const _0x93383a=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b96c4)});if(!_0x93383a['ok']){const _0x23739f=await _0x93383a['json']();throw new Error(_0x23739f['message']||'Failed\x20to\x20create\x20user');}return await _0x93383a['json']();},async 'updateUser'(_0x30ed95,_0x23c096){const _0x30d6fc=await fetch(API_BASE+'/users/'+_0x30ed95,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23c096)});if(!_0x30d6fc['ok']){const _0x4d676a=await _0x30d6fc['json']();throw new Error(_0x4d676a['message']||'Failed\x20to\x20update\x20user');}return await _0x30d6fc['json']();},async 'deleteUser'(_0xabd125){const _0x54e4ff=await fetch(API_BASE+'/users/'+_0xabd125,{'method':'DELETE'});if(!_0x54e4ff['ok']){const _0x26ed75=await _0x54e4ff['json']();throw new Error(_0x26ed75['message']||'Failed\x20to\x20delete\x20user');}return await _0x54e4ff['json']();},async 'stopAllContainers'(){const _0x3c965f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x36c2b9=await _0x3c965f['json']()['catch'](()=>({}));if(!_0x3c965f['ok'])throw new Error(_0x36c2b9['message']||_0x36c2b9['error']||'Failed\x20to\x20stop\x20containers');return _0x36c2b9;},async 'removeStoppedContainers'(){const _0x3d6a0e=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x52dcaa=await _0x3d6a0e['json']()['catch'](()=>({}));if(!_0x3d6a0e['ok'])throw new Error(_0x52dcaa['message']||_0x52dcaa['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x52dcaa;},async 'pruneDockerResources'(){const _0x3e8af9=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xa6d03=await _0x3e8af9['json']()['catch'](()=>({}));if(!_0x3e8af9['ok'])throw new Error(_0xa6d03['message']||_0xa6d03['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xa6d03;},async 'createPasswordToken'(_0xc8aa2a,_0x258e33='setup',_0x25f69b=![]){const _0x1e72a5=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xc8aa2a,'type':_0x258e33,'sendEmail':_0x25f69b})});if(!_0x1e72a5['ok']){const _0x472551=await _0x1e72a5['json']();throw new Error(_0x472551['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1e72a5['json']();},async 'getEmailConfig'(){const _0x41d254=await fetch(API_BASE+'/password/email-config');if(!_0x41d254['ok']){const _0x3583e8=await _0x41d254['json']();throw new Error(_0x3583e8['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x41d254['json']();},async 'updateTaskName'(_0xc3c0e4,_0x38001e){const _0x5492d2=await fetch(API_BASE+'/tasks/'+_0xc3c0e4,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x38001e})});if(!_0x5492d2['ok']){const _0x84e43=await _0x5492d2['json']();throw new Error(_0x84e43['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5492d2['json']();},async 'pinTask'(_0x2a23a5,_0x488158,_0x22f49d=null){if(!_0x2a23a5)throw new Error('Task\x20ID\x20is\x20required');const _0x486274={'pinned':_0x488158};_0x22f49d&&_0x22f49d['length']>0x0&&(_0x486274['additionalTaskIds']=_0x22f49d);const _0x1d3d90=await fetch(API_BASE+'/tasks/'+_0x2a23a5+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486274)});if(!_0x1d3d90['ok']){const _0x5dc0d8=await _0x1d3d90['json']();throw new Error(_0x5dc0d8['error']||'Failed\x20to\x20pin\x20task');}return await _0x1d3d90['json']();},async 'setTaskWinner'(_0x2d06bf,_0x1c7141,_0x387213=[]){if(!_0x2d06bf)throw new Error('Task\x20ID\x20is\x20required');const _0x53606c=await fetch(API_BASE+'/tasks/'+_0x2d06bf+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1c7141,'siblings':_0x387213})});if(!_0x53606c['ok']){const _0xbcb587=await _0x53606c['json']();throw new Error(_0xbcb587['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x53606c['json']();},async 'setTaskLoser'(_0x16e265,_0x4909af){if(!_0x16e265)throw new Error('Task\x20ID\x20is\x20required');const _0x3fe6cf=await fetch(API_BASE+'/tasks/'+_0x16e265+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4909af})});if(!_0x3fe6cf['ok']){const _0x15eece=await _0x3fe6cf['json']();throw new Error(_0x15eece['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3fe6cf['json']();},async 'createTaskGroup'(_0x2e72fd){const _0x40483c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e72fd)});if(!_0x40483c['ok']){const _0x3cf933=await _0x40483c['json']();throw new Error(_0x3cf933['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x40483c['json']();},async 'getTaskGroups'(_0x46e7ab={}){const _0x21829f=new URLSearchParams();if(_0x46e7ab['userId'])_0x21829f['set']('userId',String(_0x46e7ab['userId']));if(_0x46e7ab['status'])_0x21829f['set']('status',String(_0x46e7ab['status']));if(_0x46e7ab['limit'])_0x21829f['set']('limit',String(_0x46e7ab['limit']));const _0xbf4c00=API_BASE+'/tasks/groups'+(_0x21829f['toString']()?'?'+_0x21829f['toString']():''),_0x435f32=await fetch(_0xbf4c00);if(!_0x435f32['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x435f32['json']();},async 'getTaskGroup'(_0x13bed5){const _0x4f8b4b=await fetch(API_BASE+'/tasks/groups/'+_0x13bed5);if(!_0x4f8b4b['ok']){const _0x4963d5=await _0x4f8b4b['json']();throw new Error(_0x4963d5['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f8b4b['json']();},async 'updateTaskGroup'(_0x2b4752,_0x312419,_0x14551b){const _0x2ec16f=await fetch(API_BASE+'/tasks/'+_0x2b4752+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x312419,'groupIndex':_0x14551b})});if(!_0x2ec16f['ok']){const _0xb1ae6c=await _0x2ec16f['json']();throw new Error(_0xb1ae6c['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2ec16f['json']();},async 'removeTaskFromGroup'(_0x1dfbe4){return this['updateTaskGroup'](_0x1dfbe4,null,null);},async 'deleteTaskGroup'(_0x592260,_0xe5abcf=![]){const _0x39b40e=_0xe5abcf?'?deleteTasks=true':'',_0x2bfaca=await fetch(API_BASE+'/tasks/groups/'+_0x592260+_0x39b40e,{'method':'DELETE'});if(!_0x2bfaca['ok']){const _0x3c08e0=await _0x2bfaca['json']();throw new Error(_0x3c08e0['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x2a0980,_0x129800){const _0x4d1da9=await fetch(API_BASE+'/tasks/groups/'+_0x2a0980+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x129800})});if(!_0x4d1da9['ok']){const _0x30ff5a=await _0x4d1da9['json']();throw new Error(_0x30ff5a['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4d1da9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0xabd956){if(!_0xabd956)throw new Error('Task\x20ID\x20is\x20required');const _0x4a50df=await fetch(API_BASE+'/tasks/'+_0xabd956+'/comments');if(!_0x4a50df['ok']){const _0x2a4b0e=await _0x4a50df['json']()['catch'](()=>({}));throw new Error(_0x2a4b0e['error']||'Failed\x20to\x20get\x20comments');}return await _0x4a50df['json']();},async 'addComment'(_0x532c5f,_0x40c276){if(!_0x532c5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40c276)throw new Error('Comment\x20content\x20is\x20required');const _0x463360=await fetch(API_BASE+'/tasks/'+_0x532c5f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x40c276})});if(!_0x463360['ok']){const _0x542b71=await _0x463360['json']()['catch'](()=>({}));throw new Error(_0x542b71['error']||'Failed\x20to\x20add\x20comment');}return await _0x463360['json']();},async 'updateComment'(_0x32ed09,_0x45af88,_0x4eda7f){if(!_0x32ed09)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45af88)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4eda7f)throw new Error('Comment\x20content\x20is\x20required');const _0x226bfe=await fetch(API_BASE+'/tasks/'+_0x32ed09+'/comments/'+_0x45af88,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4eda7f})});if(!_0x226bfe['ok']){const _0x23a5e6=await _0x226bfe['json']()['catch'](()=>({}));throw new Error(_0x23a5e6['error']||'Failed\x20to\x20update\x20comment');}return await _0x226bfe['json']();},async 'deleteComment'(_0x2ed8e7,_0x1df9ef){if(!_0x2ed8e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1df9ef)throw new Error('Comment\x20ID\x20is\x20required');const _0x4da8a5=await fetch(API_BASE+'/tasks/'+_0x2ed8e7+'/comments/'+_0x1df9ef,{'method':'DELETE'});if(!_0x4da8a5['ok']){const _0x5dedf6=await _0x4da8a5['json']()['catch'](()=>({}));throw new Error(_0x5dedf6['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4da8a5['json']();},async 'createObjective'(_0x440f1d){const _0x4093e9={'objective':!![],'name':_0x440f1d['name']||'','environment':_0x440f1d['environment']||null,'agents':_0x440f1d['agents']||[],'branches':_0x440f1d['branches']||{},'isPinned':_0x440f1d['isPinned']||![],'parentObjectiveId':_0x440f1d['parentObjectiveId']||null,'env_vars':_0x440f1d['envVars']||{},'parameters':{'instructions':_0x440f1d['instructions']||''},'files':_0x440f1d['files']||[],'jira':_0x440f1d['jira']||null};return this['createTask'](_0x4093e9);},async 'updateObjective'(_0x5409cb,_0x16400c,_0x2455bf=[],_0x3eef1d=[]){let _0x554200,_0x589b19={};const _0x1364e9={..._0x16400c};_0x3eef1d&&_0x3eef1d['length']>0x0&&(_0x1364e9['removeAttachments']=_0x3eef1d);if(_0x2455bf&&_0x2455bf['length']>0x0){const _0xeeab0e=new FormData();for(const [_0x3408a1,_0x44a4d1]of Object['entries'](_0x1364e9)){if(_0x44a4d1==null)continue;typeof _0x44a4d1==='object'?_0xeeab0e['append'](_0x3408a1,JSON['stringify'](_0x44a4d1)):_0xeeab0e['append'](_0x3408a1,String(_0x44a4d1));}for(const _0x37f202 of _0x2455bf){_0xeeab0e['append']('attachments',_0x37f202);}_0x554200=_0xeeab0e;}else _0x589b19['Content-Type']='application/json',_0x554200=JSON['stringify'](_0x1364e9);const _0x1d7f4f=await fetch(API_BASE+'/tasks/'+_0x5409cb,{'method':'PATCH','headers':_0x589b19,'body':_0x554200});if(!_0x1d7f4f['ok']){const _0x388565=await _0x1d7f4f['json']();throw new Error(_0x388565['error']||'Failed\x20to\x20update\x20objective');}return await _0x1d7f4f['json']();},async 'deleteObjective'(_0x5ab45f){return this['deleteTask'](_0x5ab45f);},async 'launchObjective'(_0x137c88,_0x426f08={}){const _0x2705e6=await fetch(API_BASE+'/tasks/'+_0x137c88+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x426f08)});if(!_0x2705e6['ok']){const _0x3d331a=await _0x2705e6['json']();throw new Error(_0x3d331a['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2705e6['json']();},async 'getObjectiveAttachments'(_0x1e8642){return this['getTaskAttachments'](_0x1e8642);},async 'createJudgeTask'({environment:_0x64216f,judgeAgent:_0x487aa8,groupId:_0x59275d,taskIds:_0x1e96d0,judgeCustomInstructions:_0x19a58f,isPinned:_0x5d483}){const _0x3924b5=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x64216f,'judgeAgent':_0x487aa8,'groupId':_0x59275d,'taskIds':_0x1e96d0,'judgeCustomInstructions':_0x19a58f,'isPinned':_0x5d483})});if(!_0x3924b5['ok']){const _0x4bfdc6=await _0x3924b5['json']();throw new Error(_0x4bfdc6['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3924b5['json']();},async 'getJudgeTasks'(_0x196283){const _0xe208b6=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x196283));if(!_0xe208b6['ok']){const _0xb8324e=await _0xe208b6['json']();throw new Error(_0xb8324e['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xe208b6['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xbe2f1c,_0x453899,_0x3bf31d=''){const _0x2a8f3c=await fetch(API_BASE+'/tasks/'+_0xbe2f1c+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x453899,'customPreamble':_0x3bf31d})});if(!_0x2a8f3c['ok']){const _0x377361=await _0x2a8f3c['json']();throw new Error(_0x377361['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2a8f3c['json']();},async 'getJiraConfig'(){const _0x35c53c=await fetch(API_BASE+'/jira/config');if(!_0x35c53c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x35c53c['json']();},async 'getJiraIssue'(_0x4b4be6){const _0x4fec22=await fetch(API_BASE+'/jira/issues/'+_0x4b4be6);if(!_0x4fec22['ok']){const _0x11f0b8=await _0x4fec22['json']()['catch'](()=>({}));throw new Error(_0x11f0b8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4fec22['statusText']);}return await _0x4fec22['json']();},async 'searchJiraIssues'(_0x2467f1,_0x2e0b6d=0x14){const _0x3808fe=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2467f1,'maxResults':_0x2e0b6d})});if(!_0x3808fe['ok']){const _0x253d82=await _0x3808fe['json']()['catch'](()=>({}));throw new Error(_0x253d82['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x3808fe['statusText']);}return await _0x3808fe['json']();},async 'postJiraComment'(_0x2dd47a,_0x203b95){const _0x4ff2e4=await fetch(API_BASE+'/jira/issues/'+_0x2dd47a+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x203b95})});if(!_0x4ff2e4['ok']){const _0x175819=await _0x4ff2e4['json']()['catch'](()=>({}));throw new Error(_0x175819['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4ff2e4['statusText']);}return await _0x4ff2e4['json']();},async 'getJiraComments'(_0x312529){const _0x84b448=await fetch(API_BASE+'/jira/issues/'+_0x312529+'/comments');if(!_0x84b448['ok']){const _0x52a5be=await _0x84b448['json']()['catch'](()=>({}));throw new Error(_0x52a5be['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x84b448['statusText']);}return await _0x84b448['json']();},async 'promptParameter'({environment:_0x4c13de,command:_0x4e67f8,parser:parser='json'}){const _0x521cfd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4c13de,'command':_0x4e67f8,'parser':parser})});if(!_0x521cfd['ok']){const _0x4567c6=await _0x521cfd['json']()['catch'](()=>({}));throw new Error(_0x4567c6['message']||_0x4567c6['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x521cfd['statusText']);}return await _0x521cfd['json']();},async 'promptParameterStream'(_0x172c63,_0x1f79e9){const _0x1bb538=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x172c63)});if(!_0x1bb538['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1bb538['statusText']);const _0x456589=_0x1bb538['body']['getReader'](),_0x1d6b2a=new TextDecoder();let _0x4073a3='';return new Promise((_0x464927,_0x52c700)=>{const _0x4774de=async()=>{try{const {done:_0x8e5a74,value:_0x24b5a7}=await _0x456589['read']();if(_0x8e5a74)return;_0x4073a3+=_0x1d6b2a['decode'](_0x24b5a7,{'stream':!![]});const _0x1d414b=_0x4073a3['split']('\x0a\x0a');_0x4073a3=_0x1d414b['pop']()||'';for(const _0x1040e9 of _0x1d414b){if(!_0x1040e9['trim']())continue;const _0x8b1743=_0x1040e9['split']('\x0a');let _0x552cae='message',_0x299406='';for(const _0x25a21f of _0x8b1743){if(_0x25a21f['startsWith']('event:'))_0x552cae=_0x25a21f['substring'](0x6)['trim']();else _0x25a21f['startsWith']('data:')&&(_0x299406=_0x25a21f['substring'](0x5)['trim']());}if(!_0x299406)continue;try{const _0x2258b8=JSON['parse'](_0x299406);if(_0x552cae==='progress'&&_0x1f79e9)_0x1f79e9(_0x2258b8['stage'],_0x2258b8['message']);else{if(_0x552cae==='result'){_0x464927(_0x2258b8);return;}else{if(_0x552cae==='error'){let _0x352561=_0x2258b8['message']||_0x2258b8['error']||'Prompt\x20command\x20failed';_0x2258b8['rawOutput']&&(_0x352561+='\x0a\x0aRaw\x20output:\x0a'+_0x2258b8['rawOutput']);_0x52c700(new Error(_0x352561));return;}}}}catch(_0x185ccf){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x185ccf),console['error']('Event\x20type:',_0x552cae),console['error']('Event\x20data:',_0x299406),console['error']('First\x20200\x20chars:',_0x299406['substring'](0x0,0xc8)),_0x52c700(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x185ccf['message']+'\x0a\x0aData:\x20'+_0x299406['substring'](0x0,0x1f4)));return;}}_0x4774de();}catch(_0x3f7755){_0x52c700(_0x3f7755);}};_0x4774de();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2d968a){const _0x5aa535=await fetch(''+API_BASE+_0x2d968a);if(!_0x5aa535['ok']){const _0xbde2bd=await _0x5aa535['json']()['catch'](()=>({'error':_0x5aa535['statusText']})),_0x5f082e=new Error(_0xbde2bd['error']||_0xbde2bd['message']||_0x5aa535['statusText']);if(_0xbde2bd['detail']!==undefined)_0x5f082e['detail']=_0xbde2bd['detail'];throw _0x5f082e;}return await _0x5aa535['json']();},async 'post'(_0x401f53,_0x1e9700){const _0x191d90=await fetch(''+API_BASE+_0x401f53,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e9700)});if(!_0x191d90['ok']){const _0x40e240=await _0x191d90['json']()['catch'](()=>({'error':_0x191d90['statusText']})),_0x3ef704=new Error(_0x40e240['error']||_0x40e240['message']||_0x191d90['statusText']);if(_0x40e240['detail']!==undefined)_0x3ef704['detail']=_0x40e240['detail'];throw _0x3ef704;}return await _0x191d90['json']();},async 'put'(_0x4338bf,_0x1004e9){const _0x3cc524=await fetch(''+API_BASE+_0x4338bf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1004e9)});if(!_0x3cc524['ok']){const _0x2270bf=await _0x3cc524['json']()['catch'](()=>({'error':_0x3cc524['statusText']})),_0x12fd92=new Error(_0x2270bf['error']||_0x2270bf['message']||_0x3cc524['statusText']);if(_0x2270bf['detail']!==undefined)_0x12fd92['detail']=_0x2270bf['detail'];throw _0x12fd92;}return await _0x3cc524['json']();},async 'delete'(_0x28b343,_0x1e6c19){const _0x327335={'method':'DELETE'};_0x1e6c19&&(_0x327335['headers']={'Content-Type':'application/json'},_0x327335['body']=JSON['stringify'](_0x1e6c19));const _0x50934d=await fetch(''+API_BASE+_0x28b343,_0x327335);if(!_0x50934d['ok']){const _0x138c21=await _0x50934d['json']()['catch'](()=>({'error':_0x50934d['statusText']})),_0x536007=new Error(_0x138c21['error']||_0x138c21['message']||_0x50934d['statusText']);if(_0x138c21['detail']!==undefined)_0x536007['detail']=_0x138c21['detail'];throw _0x536007;}return await _0x50934d['json']();},async 'getSkills'(){const _0x3e225d=await fetch(API_BASE+'/skills');if(!_0x3e225d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3e225d['statusText']);return await _0x3e225d['json']();},async 'getSkill'(_0x52d5bb){const _0x3dbd82=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52d5bb));if(!_0x3dbd82['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3dbd82['statusText']);return await _0x3dbd82['json']();},async 'createSkill'(_0x3e30e5){const _0x555148=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e30e5)});if(!_0x555148['ok']){const _0xda6714=await _0x555148['json']()['catch'](()=>({'error':_0x555148['statusText']})),_0x3fa290=new Error(_0xda6714['error']||_0xda6714['message']||_0x555148['statusText']);if(_0xda6714['detail']!==undefined)_0x3fa290['detail']=_0xda6714['detail'];throw _0x3fa290;}return await _0x555148['json']();},async 'updateSkill'(_0x259c59,_0x22cf3a){const _0x1644cb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x259c59),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22cf3a)});if(!_0x1644cb['ok']){const _0x22da97=await _0x1644cb['json']()['catch'](()=>({'error':_0x1644cb['statusText']})),_0x2a868f=new Error(_0x22da97['error']||_0x22da97['message']||_0x1644cb['statusText']);if(_0x22da97['detail']!==undefined)_0x2a868f['detail']=_0x22da97['detail'];throw _0x2a868f;}return await _0x1644cb['json']();},async 'deleteSkill'(_0x2e5bbe){const _0x4b0036=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2e5bbe),{'method':'DELETE'});if(!_0x4b0036['ok']){const _0x1fd698=await _0x4b0036['json']()['catch'](()=>({'error':_0x4b0036['statusText']})),_0x57e87d=new Error(_0x1fd698['error']||_0x1fd698['message']||_0x4b0036['statusText']);if(_0x1fd698['detail']!==undefined)_0x57e87d['detail']=_0x1fd698['detail'];throw _0x57e87d;}return await _0x4b0036['json']();},async 'getSkillFile'(_0x5f0a82,_0x28afcd){const _0x551cc3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f0a82)+'/files/'+_0x28afcd);if(!_0x551cc3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x551cc3['statusText']);return await _0x551cc3['json']();},async 'saveSkillFile'(_0x51e3b2,_0xd2aa9c,_0x57da26){const _0x182e6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x51e3b2)+'/files/'+_0xd2aa9c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x57da26})});if(!_0x182e6f['ok']){const _0x44dcc3=await _0x182e6f['json']()['catch'](()=>({'error':_0x182e6f['statusText']})),_0x466a0b=new Error(_0x44dcc3['error']||_0x44dcc3['message']||_0x182e6f['statusText']);if(_0x44dcc3['detail']!==undefined)_0x466a0b['detail']=_0x44dcc3['detail'];throw _0x466a0b;}return await _0x182e6f['json']();},async 'deleteSkillFile'(_0x3f3a74,_0xf15a2a){const _0x51c5c5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f3a74)+'/files/'+_0xf15a2a,{'method':'DELETE'});if(!_0x51c5c5['ok']){const _0x19c631=await _0x51c5c5['json']()['catch'](()=>({'error':_0x51c5c5['statusText']})),_0x1a005c=new Error(_0x19c631['error']||_0x19c631['message']||_0x51c5c5['statusText']);if(_0x19c631['detail']!==undefined)_0x1a005c['detail']=_0x19c631['detail'];throw _0x1a005c;}return await _0x51c5c5['json']();},async 'pullSkills'(){const _0x1657bc=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x1657bc['ok']){const _0x2b8d6c=await _0x1657bc['json']()['catch'](()=>({'error':_0x1657bc['statusText']})),_0x40b937=new Error(_0x2b8d6c['error']||_0x2b8d6c['message']||_0x1657bc['statusText']);if(_0x2b8d6c['detail']!==undefined)_0x40b937['detail']=_0x2b8d6c['detail'];throw _0x40b937;}return await _0x1657bc['json']();},async 'commitSkills'(_0x4e8b5c,_0x50817d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x50817d,_0x2cb18b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x4e8b5c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2cb18b['ok']){const _0x41c9d4=await _0x2cb18b['json']()['catch'](()=>({'error':_0x2cb18b['statusText']})),_0x3eb4d5=new Error(_0x41c9d4['error']||_0x41c9d4['message']||_0x2cb18b['statusText']);if(_0x41c9d4['detail']!==undefined)_0x3eb4d5['detail']=_0x41c9d4['detail'];throw _0x3eb4d5;}return await _0x2cb18b['json']();},async 'discardSkillsChanges'(){const _0x3678fb=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3678fb['ok']){const _0x1fd337=await _0x3678fb['json']()['catch'](()=>({'error':_0x3678fb['statusText']})),_0x382c39=new Error(_0x1fd337['error']||_0x1fd337['message']||_0x3678fb['statusText']);if(_0x1fd337['detail']!==undefined)_0x382c39['detail']=_0x1fd337['detail'];throw _0x382c39;}return await _0x3678fb['json']();},async 'getSkillCatalog'(){const _0x4c6344=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4c6344['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4c6344['statusText']);return await _0x4c6344['json']();},async 'getImportedSkillsRegistry'(){const _0x4cd184=await fetch(API_BASE+'/external-skills/registry');if(!_0x4cd184['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4cd184['statusText']);return await _0x4cd184['json']();},async 'importCatalogSkill'(_0x3595fb){const _0x90a29a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3595fb})});if(!_0x90a29a['ok']){const _0x15496f=await _0x90a29a['json']()['catch'](()=>({'error':_0x90a29a['statusText']})),_0x48d36b=new Error(_0x15496f['error']||_0x15496f['message']||_0x90a29a['statusText']);if(_0x15496f['detail']!==undefined)_0x48d36b['detail']=_0x15496f['detail'];throw _0x48d36b;}return await _0x90a29a['json']();},async 'importSkillFromGit'(_0x39d34c,_0xbd2f51,_0x4a4a42='main',_0x18e312=null){const _0x3f4b2f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x39d34c,'skillPath':_0xbd2f51,'branch':_0x4a4a42,'skillId':_0x18e312})});if(!_0x3f4b2f['ok']){const _0x4cf885=await _0x3f4b2f['json']()['catch'](()=>({'error':_0x3f4b2f['statusText']})),_0x8c9381=new Error(_0x4cf885['error']||_0x4cf885['message']||_0x3f4b2f['statusText']);if(_0x4cf885['detail']!==undefined)_0x8c9381['detail']=_0x4cf885['detail'];throw _0x8c9381;}return await _0x3f4b2f['json']();},async 'probeMarketplace'(_0x460b16,_0x1b398d='main'){const _0x53218a=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x460b16,'branch':_0x1b398d})});if(!_0x53218a['ok']){const _0x2d3663=await _0x53218a['json']()['catch'](()=>({'error':_0x53218a['statusText']})),_0x3a5720=new Error(_0x2d3663['error']||_0x2d3663['message']||_0x53218a['statusText']);if(_0x2d3663['detail']!==undefined)_0x3a5720['detail']=_0x2d3663['detail'];throw _0x3a5720;}return await _0x53218a['json']();},async 'importMarketplaceBundle'(_0x1ab3cf,_0x23d072,_0x38eeaa,_0x23c3ce=null){const _0x49f3d1=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1ab3cf,'branch':_0x23d072,'bundleId':_0x38eeaa,'selectedSkills':_0x23c3ce})});if(!_0x49f3d1['ok']){const _0x5419a2=await _0x49f3d1['json']()['catch'](()=>({'error':_0x49f3d1['statusText']})),_0x4db367=new Error(_0x5419a2['error']||_0x5419a2['message']||_0x49f3d1['statusText']);if(_0x5419a2['detail']!==undefined)_0x4db367['detail']=_0x5419a2['detail'];throw _0x4db367;}return await _0x49f3d1['json']();},async 'importSkillFromFolder'(_0x42843b,_0x295eb5=null){const _0x57528b=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x42843b,'skillId':_0x295eb5})});if(!_0x57528b['ok']){const _0x36b044=await _0x57528b['json']()['catch'](()=>({'error':_0x57528b['statusText']})),_0x17ee63=new Error(_0x36b044['error']||_0x36b044['message']||_0x57528b['statusText']);if(_0x36b044['detail']!==undefined)_0x17ee63['detail']=_0x36b044['detail'];throw _0x17ee63;}return await _0x57528b['json']();},async 'importSkillFromNpm'(_0x30ffbc,_0x22464a='latest',_0x1b7452=null,_0x46efcc=null){const _0x404fe0=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x30ffbc,'version':_0x22464a,'skillId':_0x1b7452,'registry':_0x46efcc})});if(!_0x404fe0['ok']){const _0x35c6f3=await _0x404fe0['json']()['catch'](()=>({'error':_0x404fe0['statusText']})),_0x20fbc6=new Error(_0x35c6f3['error']||_0x35c6f3['message']||_0x404fe0['statusText']);if(_0x35c6f3['detail']!==undefined)_0x20fbc6['detail']=_0x35c6f3['detail'];throw _0x20fbc6;}return await _0x404fe0['json']();},async 'checkSkillUpdates'(_0x1a7d16){const _0x4553e4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a7d16)+'/check-updates',{'method':'POST'});if(!_0x4553e4['ok']){const _0xe4dac9=await _0x4553e4['json']()['catch'](()=>({'error':_0x4553e4['statusText']})),_0x581081=new Error(_0xe4dac9['error']||_0xe4dac9['message']||_0x4553e4['statusText']);if(_0xe4dac9['detail']!==undefined)_0x581081['detail']=_0xe4dac9['detail'];throw _0x581081;}return await _0x4553e4['json']();},async 'updateExternalSkill'(_0x1bb09c){const _0x4d0c5a=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1bb09c)+'/update',{'method':'POST'});if(!_0x4d0c5a['ok']){const _0x53157e=await _0x4d0c5a['json']()['catch'](()=>({'error':_0x4d0c5a['statusText']})),_0x5b9ccd=new Error(_0x53157e['error']||_0x53157e['message']||_0x4d0c5a['statusText']);if(_0x53157e['detail']!==undefined)_0x5b9ccd['detail']=_0x53157e['detail'];throw _0x5b9ccd;}return await _0x4d0c5a['json']();},async 'updateSkillFlags'(_0x101bce,_0x4982a2){const _0x5a8264=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x101bce)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4982a2})});if(!_0x5a8264['ok']){const _0x1e033c=await _0x5a8264['json']()['catch'](()=>({'error':_0x5a8264['statusText']})),_0x59656f=new Error(_0x1e033c['error']||_0x1e033c['message']||_0x5a8264['statusText']);if(_0x1e033c['detail']!==undefined)_0x59656f['detail']=_0x1e033c['detail'];throw _0x59656f;}return await _0x5a8264['json']();},async 'removeFromImportedRegistry'(_0x5c1750){const _0xffc897=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5c1750)+'/registry',{'method':'DELETE'});if(!_0xffc897['ok']){const _0x544c74=await _0xffc897['json']()['catch'](()=>({'error':_0xffc897['statusText']})),_0x4576e0=new Error(_0x544c74['error']||_0x544c74['message']||_0xffc897['statusText']);if(_0x544c74['detail']!==undefined)_0x4576e0['detail']=_0x544c74['detail'];throw _0x4576e0;}return await _0xffc897['json']();},async 'getTeams'(){const _0x2117ce=await fetch(API_BASE+'/teams');if(!_0x2117ce['ok']){const _0x47deb2=await _0x2117ce['json']()['catch'](()=>({'message':_0x2117ce['statusText']}));throw new Error(_0x47deb2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2117ce['json']();},async 'getTeam'(_0x414971){const _0xab1e3c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x414971));if(!_0xab1e3c['ok']){const _0x11d3f2=await _0xab1e3c['json']()['catch'](()=>({'message':_0xab1e3c['statusText']}));throw new Error(_0x11d3f2['message']||'Failed\x20to\x20get\x20team');}return await _0xab1e3c['json']();},async 'createTeam'(_0x1b3517){const _0x3df5e5=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b3517)});if(!_0x3df5e5['ok']){const _0x821d07=await _0x3df5e5['json']()['catch'](()=>({'message':_0x3df5e5['statusText']}));throw new Error(_0x821d07['message']||'Failed\x20to\x20create\x20team');}return await _0x3df5e5['json']();},async 'updateTeam'(_0x453c72,_0x1c4ba2){const _0x5ddf1c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x453c72),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c4ba2)});if(!_0x5ddf1c['ok']){const _0x464053=await _0x5ddf1c['json']()['catch'](()=>({'message':_0x5ddf1c['statusText']}));throw new Error(_0x464053['message']||'Failed\x20to\x20update\x20team');}return await _0x5ddf1c['json']();},async 'deleteTeam'(_0xefac6){const _0x5f0845=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xefac6),{'method':'DELETE'});if(!_0x5f0845['ok']){const _0x4a8516=await _0x5f0845['json']()['catch'](()=>({'message':_0x5f0845['statusText']}));throw new Error(_0x4a8516['message']||'Failed\x20to\x20delete\x20team');}return await _0x5f0845['json']();},async 'addTeamMember'(_0x5e2c4a,_0x27e3dc){const _0x2d653e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5e2c4a)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x27e3dc})});if(!_0x2d653e['ok']){const _0x167077=await _0x2d653e['json']()['catch'](()=>({'message':_0x2d653e['statusText']}));throw new Error(_0x167077['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2d653e['json']();},async 'removeTeamMember'(_0x3014b6,_0x17b3af){const _0xc0edb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3014b6)+'/members/'+encodeURIComponent(_0x17b3af),{'method':'DELETE'});if(!_0xc0edb3['ok']){const _0x19f7c6=await _0xc0edb3['json']()['catch'](()=>({'message':_0xc0edb3['statusText']}));throw new Error(_0x19f7c6['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xc0edb3['json']();},async 'getBindings'(_0x352335={}){const _0x2e4ef4=new URLSearchParams();if(_0x352335['resource_type'])_0x2e4ef4['set']('resource_type',_0x352335['resource_type']);if(_0x352335['resource_id'])_0x2e4ef4['set']('resource_id',_0x352335['resource_id']);if(_0x352335['subject_type'])_0x2e4ef4['set']('subject_type',_0x352335['subject_type']);if(_0x352335['subject_id'])_0x2e4ef4['set']('subject_id',_0x352335['subject_id']);const _0x500248=_0x2e4ef4['toString'](),_0x23fa6e=await fetch(API_BASE+'/bindings'+(_0x500248?'?'+_0x500248:''));if(!_0x23fa6e['ok']){const _0x2c2931=await _0x23fa6e['json']()['catch'](()=>({'message':_0x23fa6e['statusText']}));throw new Error(_0x2c2931['message']||'Failed\x20to\x20get\x20bindings');}return await _0x23fa6e['json']();},async 'createBinding'(_0x4e8d63){const _0x4e3158=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e8d63)});if(!_0x4e3158['ok']){const _0x582e81=await _0x4e3158['json']()['catch'](()=>({'message':_0x4e3158['statusText']}));throw new Error(_0x582e81['message']||'Failed\x20to\x20create\x20binding');}return await _0x4e3158['json']();},async 'updateBinding'(_0x4997d7,_0x4df774){const _0x102d83=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4997d7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4df774)});if(!_0x102d83['ok']){const _0x4b6275=await _0x102d83['json']()['catch'](()=>({'message':_0x102d83['statusText']}));throw new Error(_0x4b6275['message']||'Failed\x20to\x20update\x20binding');}return await _0x102d83['json']();},async 'deleteBinding'(_0x10dbb3){const _0x50b88e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x10dbb3),{'method':'DELETE'});if(!_0x50b88e['ok']){const _0x1b1787=await _0x50b88e['json']()['catch'](()=>({'message':_0x50b88e['statusText']}));throw new Error(_0x1b1787['message']||'Failed\x20to\x20delete\x20binding');}return await _0x50b88e['json']();},async 'getRoleDefinitions'(){const _0x1e4de6=await fetch(API_BASE+'/roles');if(!_0x1e4de6['ok']){const _0x12587d=await _0x1e4de6['json']()['catch'](()=>({'message':_0x1e4de6['statusText']}));throw new Error(_0x12587d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e4de6['json']();},async 'getRoleDefinition'(_0x54b6e7){const _0x464820=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x54b6e7));if(!_0x464820['ok']){const _0x597440=await _0x464820['json']()['catch'](()=>({'message':_0x464820['statusText']}));throw new Error(_0x597440['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x464820['json']();},async 'createRoleDefinition'(_0x32855c){const _0x2a700b=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32855c)});if(!_0x2a700b['ok']){const _0x32e857=await _0x2a700b['json']()['catch'](()=>({'message':_0x2a700b['statusText']}));throw new Error(_0x32e857['message']||_0x32e857['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2a700b['json']();},async 'updateRoleDefinition'(_0x50b24d,_0x992e4){const _0x527ac8=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x50b24d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x992e4)});if(!_0x527ac8['ok']){const _0x4061d9=await _0x527ac8['json']()['catch'](()=>({'message':_0x527ac8['statusText']}));throw new Error(_0x4061d9['message']||_0x4061d9['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x527ac8['json']();},async 'deleteRoleDefinition'(_0x448128){const _0x4de710=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x448128),{'method':'DELETE'});if(!_0x4de710['ok']){const _0x438751=await _0x4de710['json']()['catch'](()=>({'message':_0x4de710['statusText']}));throw new Error(_0x438751['message']||_0x438751['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4de710['json']();},async 'getAvailablePermissions'(){const _0x5b2ff9=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b2ff9['ok']){const _0x5130de=await _0x5b2ff9['json']()['catch'](()=>({'message':_0x5b2ff9['statusText']}));throw new Error(_0x5130de['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b2ff9['json']();},async 'getGitProviderAllowedTeams'(_0x19ce08){const _0x33dc86=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x19ce08)+'/allowed-teams');if(!_0x33dc86['ok']){const _0x5e98ba=await _0x33dc86['json']()['catch'](()=>({'message':_0x33dc86['statusText']}));throw new Error(_0x5e98ba['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x33dc86['json']();},async 'setGitProviderAllowedTeams'(_0x5d2e42,_0x59303a){const _0x383c37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d2e42)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x59303a})});if(!_0x383c37['ok']){const _0x41e070=await _0x383c37['json']()['catch'](()=>({'message':_0x383c37['statusText']}));throw new Error(_0x41e070['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x383c37['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 _0x2dcefb=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3978e4=>{_0x3978e4['el']['style']['bottom']=_0x2dcefb+'px';const _0x2757aa=_0x3978e4['el']['offsetHeight']||toastState['defaultHeight'];_0x2dcefb+=_0x2757aa+toastState['gap'];});});}function removeToastById(_0x30b577){const _0x4f40fe=toastState['toasts']['findIndex'](_0x5e5a49=>_0x5e5a49['id']===_0x30b577);if(_0x4f40fe===-0x1)return;const _0x53c816=toastState['toasts'][_0x4f40fe];if(_0x53c816['timeoutId'])clearTimeout(_0x53c816['timeoutId']);_0x53c816['el']['classList']['remove']('show'),setTimeout(()=>_0x53c816['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f40fe,0x1),repositionAllToasts();}function registerToast(_0x23abed){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23abed),repositionAllToasts(),_0x23abed['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x289246){const _0x3ac00a=new Date(_0x289246),_0x5536ac=new Date(),_0x4f886a=_0x5536ac-_0x3ac00a,_0x3f6894=Math['floor'](_0x4f886a/0x3e8),_0x4ea027=Math['floor'](_0x3f6894/0x3c),_0x3cce89=Math['floor'](_0x4ea027/0x3c),_0x3deb48=Math['floor'](_0x3cce89/0x18);if(_0x3f6894<0x3c)return'now';if(_0x4ea027<0x3c)return _0x4ea027+'m\x20ago';if(_0x3cce89<0x18)return _0x3cce89+'h\x20ago';return _0x3deb48+'d\x20ago';},'getStatusIcon'(_0x4a5aec){switch(_0x4a5aec){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a2abe){switch(_0x4a2abe){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'(_0x3c9723,_0x5878e8=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1e76f8={};_0x1e76f8['text/plain']=new Blob([_0x3c9723],{'type':'text/plain'});_0x5878e8&&(_0x1e76f8['text/html']=new Blob([_0x5878e8],{'type':'text/html'}));const _0xd4a461=new ClipboardItem(_0x1e76f8);return await navigator['clipboard']['write']([_0xd4a461]),!![];}catch(_0x1610e8){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1610e8);}try{const _0x1831ac=_0x241b7c=>{_0x241b7c['preventDefault'](),_0x241b7c['clipboardData']['setData']('text/plain',_0x3c9723),_0x5878e8&&_0x241b7c['clipboardData']['setData']('text/html',_0x5878e8);};document['addEventListener']('copy',_0x1831ac);const _0x353693=document['execCommand']('copy');document['removeEventListener']('copy',_0x1831ac);if(_0x353693)return!![];}catch(_0x226b3b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x226b3b);}try{const _0x279156=document['createElement']('textarea');_0x279156['value']=_0x3c9723,_0x279156['style']['position']='fixed',_0x279156['style']['opacity']='0',_0x279156['style']['pointerEvents']='none',document['body']['appendChild'](_0x279156),_0x279156['select']();const _0x2ed095=document['execCommand']('copy');return document['body']['removeChild'](_0x279156),_0x2ed095;}catch(_0x498d33){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x498d33),![];}},'showToast'(_0x30d17d,_0x4a001b='info'){const _0x4d6ae7=getNextToastId(),_0xe13f68=document['createElement']('div');_0xe13f68['className']='toast\x20toast-'+_0x4a001b,_0xe13f68['textContent']=_0x30d17d,_0xe13f68['dataset']['toastId']=_0x4d6ae7,document['body']['appendChild'](_0xe13f68);const _0x17663c=_0x4a001b==='error'?0x2710:0xbb8,_0x3baf3f=setTimeout(()=>{removeToastById(_0x4d6ae7);},_0x17663c),_0x504d12={'id':_0x4d6ae7,'el':_0xe13f68,'timeoutId':_0x3baf3f};return registerToast(_0x504d12),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xe13f68['classList']['add']('show');});}),_0x4d6ae7;},'showError'(_0x2be7f1){console['error'](_0x2be7f1);const _0x1af866=typeof _0x2be7f1==='string'?_0x2be7f1:_0x2be7f1['message']||'An\x20error\x20occurred';this['showToast'](_0x1af866,'error');},'showSuccess'(_0x1dc874){this['showToast'](_0x1dc874,'success');},'capitalize'(_0x2a5750){if(!_0x2a5750)return'';return _0x2a5750['charAt'](0x0)['toUpperCase']()+_0x2a5750['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x545d6d){if(_0x545d6d===null||_0x545d6d===undefined)return'';return String(_0x545d6d)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x3bd5e5){if(_0x3bd5e5===null||_0x3bd5e5===undefined)return'';let _0x4bf9fc=this['escapeHtml'](_0x3bd5e5);const _0x565316={'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'},_0x125ae8={'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 _0x1a42b4=0x0;return _0x4bf9fc=_0x4bf9fc['replace'](/\x1b\[([0-9;]*)m/g,(_0x51e7cd,_0x203575)=>{if(!_0x203575||_0x203575==='0'){const _0x494285='</span>'['repeat'](_0x1a42b4);return _0x1a42b4=0x0,_0x494285;}const _0x4f2be5=_0x203575['split'](';'),_0x2076bc=[];for(const _0x3d403d of _0x4f2be5){if(_0x3d403d==='1')_0x2076bc['push']('font-weight:bold');else{if(_0x3d403d==='2')_0x2076bc['push']('opacity:0.7');else{if(_0x3d403d==='3')_0x2076bc['push']('font-style:italic');else{if(_0x3d403d==='4')_0x2076bc['push']('text-decoration:underline');else{if(_0x3d403d==='9')_0x2076bc['push']('text-decoration:line-through');else{if(_0x565316[_0x3d403d])_0x2076bc['push']('color:'+_0x565316[_0x3d403d]);else{if(_0x125ae8[_0x3d403d])_0x2076bc['push']('background-color:'+_0x125ae8[_0x3d403d]);}}}}}}}if(_0x2076bc['length']>0x0)return _0x1a42b4++,'<span\x20style=\x22'+_0x2076bc['join'](';')+'\x22>';return'';}),_0x4bf9fc+='</span>'['repeat'](_0x1a42b4),_0x4bf9fc=_0x4bf9fc['replace'](/\\u001b\[([0-9;]*)m/g,(_0x52ca91,_0x8704bd)=>{if(!_0x8704bd||_0x8704bd==='0')return'';const _0x3c6036=_0x8704bd['split'](';'),_0x273e2f=[];for(const _0xa98c02 of _0x3c6036){if(_0xa98c02==='1')_0x273e2f['push']('font-weight:bold');else{if(_0x565316[_0xa98c02])_0x273e2f['push']('color:'+_0x565316[_0xa98c02]);else{if(_0x125ae8[_0xa98c02])_0x273e2f['push']('background-color:'+_0x125ae8[_0xa98c02]);}}}if(_0x273e2f['length']>0x0)return'<span\x20style=\x22'+_0x273e2f['join'](';')+'\x22>';return'';}),_0x4bf9fc;},'showModal'({title:_0x3f2787,content:_0x56cdc4,buttons:buttons=[]}){const _0x4798d0='\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'](_0x3f2787)+'</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'+_0x56cdc4+'\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']((_0x3853a1,_0x46008c)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x3853a1['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x46008c+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x3853a1['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',_0x5223a8=document['createElement']('div');_0x5223a8['id']='utils-modal',_0x5223a8['className']='modal',_0x5223a8['innerHTML']=_0x4798d0,document['body']['appendChild'](_0x5223a8);const _0x3ff214=document['getElementById']('utils-modal-close');_0x3ff214&&_0x3ff214['addEventListener']('click',()=>this['hideModal']());const _0x4abd54=_0x5223a8['querySelectorAll']('[data-btn-index]');_0x4abd54['forEach'](_0x1cf4dd=>{const _0x3811a8=parseInt(_0x1cf4dd['dataset']['btnIndex']);buttons[_0x3811a8]?.['onClick']&&_0x1cf4dd['addEventListener']('click',buttons[_0x3811a8]['onClick']);});const _0x5c361f=document['getElementById']('utils-modal-overlay');_0x5c361f&&_0x5c361f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1963e2=document['getElementById']('utils-modal');_0x1963e2&&_0x1963e2['remove']();},'parseKeyValuePairs'(_0xb111c9){const _0x330f99={};if(!_0xb111c9)return _0x330f99;return _0xb111c9['split'](/\r?\n/)['map'](_0x18dd35=>_0x18dd35['trim']())['filter'](Boolean)['forEach'](_0xe512ea=>{const _0x3a359e=_0xe512ea['indexOf']('=');if(_0x3a359e>0x0){const _0x309a02=_0xe512ea['slice'](0x0,_0x3a359e)['trim'](),_0x45dc3c=_0xe512ea['slice'](_0x3a359e+0x1)['trim']();if(_0x309a02)_0x330f99[_0x309a02]=_0x45dc3c;}}),_0x330f99;},'debounce'(_0x59f692,_0xa57aad=0xfa){let _0xf2efc6=null;return(..._0x732892)=>{clearTimeout(_0xf2efc6),_0xf2efc6=setTimeout(()=>_0x59f692['apply'](this,_0x732892),_0xa57aad);};},'formatTimestamp'(_0x386a92){if(!_0x386a92)return'N/A';const _0x33f46e=new Date(_0x386a92);return _0x33f46e['toLocaleDateString']()+'\x20'+_0x33f46e['toLocaleTimeString']();},'getQueryParams'(){const _0x37fd6c=new URLSearchParams(window['location']['search']),_0x2d5ce6={};for(const [_0xb3e44f,_0x5e934f]of _0x37fd6c){_0x2d5ce6[_0xb3e44f]=_0x5e934f;}return _0x2d5ce6;},'formatDuration'(_0x381018,_0x11f06f){if(!_0x381018)return'N/A';const _0x5cc257=new Date(_0x381018),_0x3a54c8=_0x11f06f?new Date(_0x11f06f):new Date(),_0xed8371=_0x3a54c8-_0x5cc257;if(_0xed8371<0x0)return'0s';const _0x15a462=Math['floor'](_0xed8371/0x3e8),_0x5b82b8=Math['floor'](_0x15a462/0x3c),_0x36b88=Math['floor'](_0x5b82b8/0x3c),_0x318e2c=Math['floor'](_0x36b88/0x18);if(_0x15a462<0x3c)return _0x15a462+'s';if(_0x5b82b8<0x3c)return _0x5b82b8+'m\x20'+_0x15a462%0x3c+'s';if(_0x36b88<0x18)return _0x36b88+'h\x20'+_0x5b82b8%0x3c+'m\x20'+_0x15a462%0x3c+'s';return _0x318e2c+'d\x20'+_0x36b88%0x18+'h\x20'+_0x5b82b8%0x3c+'m';},'renderMarkdown'(_0x39be57,_0x337889={}){if(!_0x39be57)return'';_0x39be57=this['rewriteAttachmentLinks'](_0x39be57,_0x337889),_0x39be57=this['rewriteColorSyntax'](_0x39be57);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x39be57,_0x337889);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x3f8686=new marked['Renderer'](),_0x272f13=_0x3f8686['code']['bind'](_0x3f8686);_0x3f8686['code']=function(_0x19fada,_0x5bf3c8){const _0x4901ec=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4901ec&&_0x5bf3c8)try{const _0x5ffb44=_0x4901ec['getLanguage'](_0x5bf3c8)?_0x5bf3c8:'plaintext',_0x5e7f04=_0x4901ec['highlight'](_0x19fada,{'language':_0x5ffb44})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x5bf3c8+'\x22>'+_0x5e7f04+'</code></pre>';}catch(_0x24d3f1){console['error']('Syntax\x20highlighting\x20error:',_0x24d3f1);}return _0x272f13(_0x19fada,_0x5bf3c8);};try{return marked['parse'](_0x39be57,{'renderer':_0x3f8686});}catch(_0x408d7f){return console['error']('Markdown\x20parsing\x20error:',_0x408d7f),this['renderMarkdownFallback'](_0x39be57,_0x337889);}},'rewriteAttachmentLinks'(_0xb68aa1,_0x37db9a={}){const _0x53258f=typeof _0x37db9a['resolveAttachmentUrl']==='function'?_0x37db9a['resolveAttachmentUrl']:_0x37db9a['taskId']?_0x1ddd01=>API_BASE+'/tasks/'+_0x37db9a['taskId']+'/attachments/'+encodeURIComponent(_0x1ddd01):null;if(!_0x53258f)return _0xb68aa1;return String(_0xb68aa1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5eaa5d,_0x3c5c3b)=>{const _0x11a3e5=String(_0x3c5c3b||'')['trim']();if(!_0x11a3e5)return _0x5eaa5d;let _0x345a48=_0x11a3e5;try{_0x345a48=decodeURIComponent(_0x11a3e5);}catch{}const _0x1dbd2c=_0x53258f(_0x345a48);if(!_0x1dbd2c)return _0x5eaa5d;return']('+_0x1dbd2c+')';});},'rewriteColorSyntax'(_0x37ee24){if(!_0x37ee24)return _0x37ee24;return String(_0x37ee24)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x35c879,_0x2a3657,_0x3706cd)=>{const _0x5792e0=this['rewriteColorSyntax'](_0x3706cd);return'<span\x20style=\x22color:\x20'+_0x2a3657+'\x22>'+_0x5792e0+'</span>';});},'renderMarkdownFallback'(_0x564971,_0x1d9ebf={}){if(!_0x564971)return'';_0x564971=_0x564971['replace'](/\r\n/g,'\x0a'),_0x564971=_0x564971['replace'](/\r/g,'\x0a'),_0x564971=this['rewriteAttachmentLinks'](_0x564971,_0x1d9ebf);let _0x554ea6=this['escapeHtml'](_0x564971);return _0x554ea6=_0x554ea6['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x554ea6=_0x554ea6['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x554ea6=_0x554ea6['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x554ea6=_0x554ea6['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x554ea6=_0x554ea6['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x554ea6=_0x554ea6['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x554ea6=_0x554ea6['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x554ea6=_0x554ea6['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x554ea6=_0x554ea6['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x554ea6=_0x554ea6['replace'](/\n\n/g,'</p><p>'),_0x554ea6=_0x554ea6['replace'](/\n/g,'<br>'),'<p>'+_0x554ea6+'</p>';}};export class CustomSelect{constructor(_0x6c5329,_0xd63681={}){this['nativeSelect']=_0x6c5329,this['options']=_0xd63681,this['isOpen']=![],this['selectedValue']=_0x6c5329['value']||'',this['searchable']=_0xd63681['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3f728a=document['createElement']('div');_0x3f728a['className']='custom-select';const _0x21b914=document['createElement']('div');_0x21b914['className']='custom-select-trigger',_0x21b914['setAttribute']('tabindex','0'),_0x21b914['setAttribute']('role','button'),_0x21b914['setAttribute']('aria-haspopup','listbox');const _0x3d0acc=document['createElement']('span');_0x3d0acc['className']='custom-select-trigger-text';const _0xaaef3c=document['createElement']('span');_0xaaef3c['className']='custom-select-arrow',_0xaaef3c['textContent']='▼',_0x21b914['appendChild'](_0x3d0acc),_0x21b914['appendChild'](_0xaaef3c);const _0x2c75d3=document['createElement']('div');_0x2c75d3['className']='custom-select-dropdown',_0x2c75d3['setAttribute']('role','listbox');if(this['searchable']){const _0x5bb1cc=document['createElement']('div');_0x5bb1cc['className']='custom-select-search';const _0x263f6c=document['createElement']('input');_0x263f6c['type']='text',_0x263f6c['className']='custom-select-search-input',_0x263f6c['placeholder']='Type\x20to\x20search...',_0x263f6c['setAttribute']('aria-label','Search\x20options'),_0x263f6c['addEventListener']('input',_0x34012e=>{this['searchQuery']=_0x34012e['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x263f6c['addEventListener']('keydown',_0x5d9b35=>{if(_0x5d9b35['key']==='Escape')_0x5d9b35['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x5d9b35['key']==='Enter'){_0x5d9b35['preventDefault'](),_0x5d9b35['stopPropagation']();const _0x157950=_0x2c75d3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x157950){const _0x454d95=_0x157950['getAttribute']('data-value');this['select'](_0x454d95);}}}}),_0x5bb1cc['appendChild'](_0x263f6c),_0x2c75d3['appendChild'](_0x5bb1cc),this['searchInput']=_0x263f6c;}const _0x41aa5b=document['createElement']('div');_0x41aa5b['className']='custom-select-options',_0x2c75d3['appendChild'](_0x41aa5b),_0x3f728a['appendChild'](_0x21b914),_0x3f728a['appendChild'](_0x2c75d3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3f728a,this['nativeSelect']),this['wrapper']=_0x3f728a,this['trigger']=_0x21b914,this['triggerText']=_0x3d0acc,this['dropdown']=_0x2c75d3,this['optionsContainer']=_0x41aa5b,_0x21b914['addEventListener']('click',()=>this['toggle']()),_0x21b914['addEventListener']('keydown',_0x32d8c0=>this['handleKeydown'](_0x32d8c0)),document['addEventListener']('click',_0x2fb6c9=>{!_0x3f728a['contains'](_0x2fb6c9['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3cb8ef=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3cb8ef['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x58c214=new MutationObserver(()=>{this['updateDisabledState']();});_0x58c214['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2a63d8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2a63d8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x2e0d38=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x2e0d38),this['trigger']['setAttribute']('aria-disabled',_0x2e0d38?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x2e0d38?'-1':'0'),_0x2e0d38&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x504db9=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0xf05824=_0x504db9['filter'](_0x520d7e=>!_0x520d7e['disabled']&&!_0x520d7e['hidden']);_0x504db9['forEach']((_0x2e69fa,_0x282876)=>{const _0x4a190f=document['createElement']('div');_0x4a190f['className']='custom-select-option',_0x4a190f['textContent']=_0x2e69fa['textContent'],_0x4a190f['setAttribute']('data-value',_0x2e69fa['value']),_0x4a190f['setAttribute']('data-index',_0x282876),_0x4a190f['setAttribute']('role','option'),_0x2e69fa['disabled']?_0x4a190f['classList']['add']('disabled'):_0x4a190f['addEventListener']('click',()=>this['select'](_0x2e69fa['value'])),_0x2e69fa['value']===this['selectedValue']&&_0x4a190f['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4a190f),this['allOptions']['push']({'element':_0x4a190f,'text':_0x2e69fa['textContent']['toLowerCase'](),'value':_0x2e69fa['value'],'disabled':_0x2e69fa['disabled']});});if(this['searchable']&&this['searchInput']){const _0x1d47de=this['searchInput']['parentElement'];_0xf05824['length']>0x3?_0x1d47de['style']['display']='':_0x1d47de['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x13af08=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3dfe46=>{if(!_0x13af08||_0x3dfe46['disabled'])_0x3dfe46['element']['style']['display']='';else{const _0x12dfc4=_0x3dfe46['text']['includes'](_0x13af08);_0x3dfe46['element']['style']['display']=_0x12dfc4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x423ea8){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x423ea8,this['nativeSelect']['value']=_0x423ea8;const _0x360fff=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x360fff),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x41a397=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x41a397&&(this['triggerText']['textContent']=_0x41a397['textContent'],_0x41a397['disabled']||_0x41a397['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2a44ba=>{_0x2a44ba['getAttribute']('data-value')===this['selectedValue']?_0x2a44ba['classList']['add']('selected'):_0x2a44ba['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 _0x2d293f=window['getComputedStyle'](this['dropdown']);if(_0x2d293f['position']==='fixed'){const _0x3b708a=this['trigger']['getBoundingClientRect'](),_0x1240cd=parseInt(_0x2d293f['maxHeight'])||0xc8,_0x2a9237=window['innerHeight'],_0x3b3275=_0x2a9237-_0x3b708a['bottom'],_0x4dd89d=_0x3b708a['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x5a0715;_0x3b3275<_0x1240cd&&_0x4dd89d>_0x3b3275?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2a9237-_0x3b708a['top']+'px',_0x5a0715=Math['min'](_0x1240cd,_0x4dd89d-0xa),this['dropdown']['style']['maxHeight']=_0x5a0715+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3b708a['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x5a0715=Math['min'](_0x1240cd,_0x3b3275-0xa),this['dropdown']['style']['maxHeight']=_0x5a0715+'px');if(this['optionsContainer']){let _0x2066bb=_0x5a0715;if(this['searchInput']){const _0x495930=this['searchInput']['parentElement'];_0x495930&&(_0x2066bb-=_0x495930['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x2066bb)+'px';}this['dropdown']['style']['left']=_0x3b708a['left']+'px',this['dropdown']['style']['width']=_0x3b708a['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x1d49c3=this['searchInput']['parentElement'];_0x1d49c3&&_0x1d49c3['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'](_0x3985d2){if(this['nativeSelect']['disabled'])return;if(_0x3985d2['key']==='Enter'||_0x3985d2['key']==='\x20')_0x3985d2['preventDefault'](),this['toggle']();else _0x3985d2['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x583d19='\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',_0x583d19),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x49e430=document['getElementById']('confirm-dialog-close'),_0x296994=document['getElementById']('confirm-dialog-cancel'),_0x2e25bc=document['getElementById']('confirm-dialog-confirm'),_0x2553b1=this['_modal']['querySelector']('.modal-overlay');_0x49e430['addEventListener']('click',()=>this['_resolve'](![])),_0x296994['addEventListener']('click',()=>this['_resolve'](![])),_0x2e25bc['addEventListener']('click',()=>this['_resolve'](!![])),_0x2553b1['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x554fe6=>{if(_0x554fe6['key']==='Escape')_0x554fe6['preventDefault'](),this['_resolve'](![]);else _0x554fe6['key']==='Enter'&&(_0x554fe6['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x504e53,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1e2216=>{this['_resolvePromise']=_0x1e2216,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x504e53;const _0x1a78fe=document['getElementById']('confirm-dialog-cancel'),_0x2d1e13=document['getElementById']('confirm-dialog-confirm');_0x1a78fe['textContent']=cancelText,_0x2d1e13['textContent']=confirmText,_0x2d1e13['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x2d1e13['focus']();});},'_resolve'(_0x4c9c28){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4c9c28),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x49c944,_0x403cf9={}){this['container']=_0x49c944,this['options']={'placeholder':_0x403cf9['placeholder']||'Type\x20to\x20search...','maxItems':_0x403cf9['maxItems']||0x64,'loadItems':_0x403cf9['loadItems']||(async()=>[]),'renderItem':_0x403cf9['renderItem']||(_0x19d543=>({'primary':String(_0x19d543),'secondary':''})),'onSelect':_0x403cf9['onSelect']||(()=>{}),'filterItems':_0x403cf9['filterItems']||null,'getItemValue':_0x403cf9['getItemValue']||(_0x26357b=>_0x26357b),'sortItems':_0x403cf9['sortItems']||null,'debounceMs':_0x403cf9['debounceMs']||0xc8,'minCharsForSearch':_0x403cf9['minCharsForSearch']||0x0,'emptyMessage':_0x403cf9['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x403cf9['loadingMessage']||'Loading...','preload':_0x403cf9['preload']!==![],'searchMode':_0x403cf9['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',_0x1affb6=>this['onBlur'](_0x1affb6)),this['input']['addEventListener']('input',_0xd58cb1=>this['onInput'](_0xd58cb1)),this['input']['addEventListener']('keydown',_0xf4e5c0=>this['onKeydown'](_0xf4e5c0)),this['clearBtn']['addEventListener']('mousedown',_0x10b027=>{_0x10b027['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x29b174=>{_0x29b174['preventDefault']();}),document['addEventListener']('click',_0x4f2d3e=>{!this['wrapper']['contains'](_0x4f2d3e['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(_0x55e7a6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x55e7a6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2303d9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5d1e8b){const _0x111ec3=_0x5d1e8b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x111ec3);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x111ec3):this['loadAndShow'](_0x111ec3);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x55eebc){switch(_0x55eebc['key']){case'ArrowDown':_0x55eebc['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x55eebc['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x55eebc['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x55eebc['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x18b3e4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x23bab1=this['selectedIndex']+_0x18b3e4;if(_0x23bab1>=0x0&&_0x23bab1<this['filteredItems']['length']){this['selectedIndex']=_0x23bab1,this['updateSelectionHighlight']();const _0x3931a5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3931a5[this['selectedIndex']]&&_0x3931a5[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1fd37d=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1fd37d['forEach']((_0x2f7912,_0x34a5f1)=>{_0x2f7912['classList']['toggle']('keyboard-selected',_0x34a5f1===this['selectedIndex']);});}async['loadAndShow'](_0xb7fdd){this['showLoading']();try{const _0x59c47c=await this['options']['loadItems'](_0xb7fdd);if(this['options']['searchMode']==='server'){let _0x43fb55=_0x59c47c;this['options']['sortItems']&&(_0x43fb55=this['options']['sortItems']([..._0x59c47c]));this['filteredItems']=_0x43fb55;const _0x5ad813=this['filteredItems']['length']>=this['options']['maxItems'];_0x5ad813&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5ad813),this['open']();}else this['allItems']=_0x59c47c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0xb7fdd);}catch(_0x51ec03){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x51ec03),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5ad5b2){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5ad5b2):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xa470b8=this['filteredItems']['length']>=this['options']['maxItems'];_0xa470b8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xa470b8),this['open']();}['renderItems'](_0x29604e){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']((_0x2813af,_0x3fc5d4)=>{const _0x583646=document['createElement']('div');_0x583646['className']='autocomplete-select-item',_0x583646['setAttribute']('role','option'),_0x583646['setAttribute']('data-index',_0x3fc5d4);const _0x55ffa0=this['options']['renderItem'](_0x2813af);let _0x5026fc='';_0x55ffa0['icon']&&(_0x5026fc='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x55ffa0['iconClass']||'')+'\x22>'+_0x55ffa0['icon']+'</span>'),_0x583646['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5026fc+'\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'](_0x55ffa0['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x55ffa0['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x55ffa0['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x583646['addEventListener']('click',()=>{this['selectItem'](_0x2813af);}),_0x583646['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3fc5d4,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x583646);}),_0x29604e?(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'](_0x3cb0fb){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x3cb0fb)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1061bf){this['selectedItem']=_0x1061bf;const _0x18db42=this['options']['renderItem'](_0x1061bf);this['input']['value']=_0x18db42['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1061bf);}['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'](_0x296e71){if(_0x296e71){this['selectedItem']=_0x296e71;const _0x472d17=this['options']['renderItem'](_0x296e71);this['input']['value']=_0x472d17['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x3a3e2c){this['allItems']=_0x3a3e2c,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'](_0x40ee3d){this['input']['placeholder']=_0x40ee3d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x33ad1a=null){const _0x3dfa18=document['getElementById']('admin-menu-container'),_0x52cd89=document['getElementById']('admin-menu-btn'),_0x34f8e1=document['getElementById']('admin-menu');if(!_0x3dfa18||!_0x52cd89||!_0x34f8e1)return;try{!_0x33ad1a&&(_0x33ad1a=await API['getCurrentUser']());if(_0x33ad1a){const _0x36aa50=_0x33ad1a['hasAllPermissions']||_0x33ad1a['hasEnvironmentsManage']||_0x33ad1a['canCreateUsers']||_0x33ad1a['canManageTeams']||_0x33ad1a['hasEnvironmentBindings'];if(!_0x36aa50)return;_0x3dfa18['hidden']=![];if(!_0x33ad1a['hasAllPermissions']){const _0x383a63=_0x34f8e1['querySelectorAll']('.admin-menu-item');_0x383a63['forEach'](_0x3de424=>{const _0x35c1ab=_0x3de424['querySelector']('.option-text')?.['textContent']?.['trim']();_0x35c1ab==='Users'&&!_0x33ad1a['canCreateUsers']&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Skills'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Server\x20Settings'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Server\x20Health'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Git\x20History'&&(_0x3de424['hidden']=!![]);});}_0x52cd89['addEventListener']('click',_0x44ddfd=>{_0x44ddfd['stopPropagation']();const _0x131fdc=document['getElementById']('actions-menu');if(_0x131fdc)_0x131fdc['hidden']=!![];_0x34f8e1['hidden']=!_0x34f8e1['hidden'];}),document['addEventListener']('click',_0x59d740=>{!_0x34f8e1['hidden']&&!_0x52cd89['contains'](_0x59d740['target'])&&!_0x34f8e1['contains'](_0x59d740['target'])&&(_0x34f8e1['hidden']=!![]);}),document['addEventListener']('keydown',_0x59783d=>{_0x59783d['key']==='Escape'&&!_0x34f8e1['hidden']&&(_0x34f8e1['hidden']=!![]);});const _0x357235=document['getElementById']('server-health-btn');_0x357235&&_0x357235['addEventListener']('click',async()=>{_0x34f8e1['hidden']=!![];const {openServerHealthModal:_0x4e7404}=await import('./server-health.js');_0x4e7404();});}}catch(_0x153cbb){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x153cbb['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 _0xe36739=window['location']['pathname'],_0x543df3=_0xe36739['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x543df3)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x543df3[0x1]),_0x543df3[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xe7e7cf={}){const _0x3bd74a=new URLSearchParams();_0xe7e7cf['userId']&&_0x3bd74a['set']('userId',String(_0xe7e7cf['userId']));_0xe7e7cf['automation']&&_0x3bd74a['set']('automation',String(_0xe7e7cf['automation']));const _0x25923a=API_BASE+'/tasks/stats'+(_0x3bd74a['toString']()?'?'+_0x3bd74a['toString']():''),_0x12b319=await fetch(_0x25923a);if(!_0x12b319['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x12b319['statusText']);return await _0x12b319['json']();},async 'getTasks'(_0x4813eb={}){const _0x183964=new URLSearchParams();_0x4813eb['status']&&_0x183964['set']('status',String(_0x4813eb['status']));_0x4813eb['environment']&&_0x183964['set']('environment',String(_0x4813eb['environment']));_0x4813eb['automation']&&_0x183964['set']('automation',String(_0x4813eb['automation']));if(_0x4813eb['include']){const _0x11cff0=Array['isArray'](_0x4813eb['include'])?_0x4813eb['include']['join'](','):String(_0x4813eb['include']);_0x11cff0&&_0x183964['set']('include',_0x11cff0);}_0x4813eb['filter']&&_0x183964['set']('filter',String(_0x4813eb['filter']));_0x4813eb['page']&&_0x183964['set']('page',String(_0x4813eb['page']));_0x4813eb['limit']&&_0x183964['set']('limit',String(_0x4813eb['limit']));_0x4813eb['userId']&&_0x183964['set']('userId',String(_0x4813eb['userId']));_0x4813eb['search']&&_0x183964['set']('search',String(_0x4813eb['search']));_0x4813eb['includeChildTasks']&&_0x183964['set']('includeChildTasks','true');const _0x10da20=API_BASE+'/tasks'+(_0x183964['toString']()?'?'+_0x183964['toString']():''),_0x227b71=await fetch(_0x10da20);if(!_0x227b71['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x227b71['statusText']);return await _0x227b71['json']();},async 'getAutomations'(_0x5c24d5={}){const _0x2681d3=new URLSearchParams();_0x5c24d5['environment']&&_0x2681d3['set']('environment',String(_0x5c24d5['environment']));const _0x4e1676=await fetch(API_BASE+'/api/automations'+(_0x2681d3['toString']()?'?'+_0x2681d3['toString']():''));if(!_0x4e1676['ok']){const _0x4202d9=await _0x4e1676['json']()['catch'](()=>({}));throw new Error(_0x4202d9['message']||_0x4202d9['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4e1676['statusText']);}return await _0x4e1676['json']();},async 'getAutomation'(_0x40172a){const _0x51ef6a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x40172a));if(!_0x51ef6a['ok']){const _0x3bade4=await _0x51ef6a['json']()['catch'](()=>({}));throw new Error(_0x3bade4['message']||_0x3bade4['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x51ef6a['statusText']);}return await _0x51ef6a['json']();},async 'createAutomation'(_0x1e72b5){const _0xfbd854=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e72b5||{})});if(!_0xfbd854['ok']){const _0x5fa5a=await _0xfbd854['json']()['catch'](()=>({}));throw new Error(_0x5fa5a['message']||_0x5fa5a['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xfbd854['statusText']);}return await _0xfbd854['json']();},async 'updateAutomation'(_0x4703d3,_0x50563b){const _0xa62d91=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4703d3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50563b||{})});if(!_0xa62d91['ok']){const _0x4685d4=await _0xa62d91['json']()['catch'](()=>({}));throw new Error(_0x4685d4['message']||_0x4685d4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xa62d91['statusText']);}return await _0xa62d91['json']();},async 'deleteAutomation'(_0x33ca11){const _0x1c8646=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x33ca11),{'method':'DELETE'});if(!_0x1c8646['ok']){const _0x3aa836=await _0x1c8646['json']()['catch'](()=>({}));throw new Error(_0x3aa836['message']||_0x3aa836['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1c8646['statusText']);}return await _0x1c8646['json']();},async 'triggerAutomation'(_0x70d9e9){const _0x2bc2c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x70d9e9)+'/trigger',{'method':'POST'});if(!_0x2bc2c3['ok']){const _0x2fc68f=await _0x2bc2c3['json']()['catch'](()=>({}));throw new Error(_0x2fc68f['message']||_0x2fc68f['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x2bc2c3['statusText']);}return await _0x2bc2c3['json']();},async 'setAutomationEnabled'(_0x27e760,_0x410f12){const _0x568fcf=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27e760)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x410f12})});if(!_0x568fcf['ok']){const _0x77ba41=await _0x568fcf['json']()['catch'](()=>({}));throw new Error(_0x77ba41['message']||_0x77ba41['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x568fcf['statusText']);}return await _0x568fcf['json']();},async 'getAutomationHistory'(_0x2fd477,_0x465e08=0x32){const _0x291a43=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2fd477)+'/history?limit='+encodeURIComponent(String(_0x465e08)));if(!_0x291a43['ok']){const _0x3b6ca2=await _0x291a43['json']()['catch'](()=>({}));throw new Error(_0x3b6ca2['message']||_0x3b6ca2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x291a43['statusText']);}return await _0x291a43['json']();},async 'getTask'(_0x509579,_0x2d5337={}){const _0x5d13c8=new URLSearchParams();if(_0x2d5337['include']){const _0x536e73=Array['isArray'](_0x2d5337['include'])?_0x2d5337['include']['join'](','):String(_0x2d5337['include']);if(_0x536e73)_0x5d13c8['set']('include',_0x536e73);}const _0x169dff=await fetch(API_BASE+'/tasks/'+_0x509579+(_0x5d13c8['toString']()?'?'+_0x5d13c8['toString']():''));if(!_0x169dff['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x169dff['statusText']);return await _0x169dff['json']();},async 'getTaskResults'(_0x102bff){const _0x4fc692=await fetch(API_BASE+'/tasks/'+_0x102bff+'/results');if(!_0x4fc692['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4fc692['statusText']);return await _0x4fc692['json']();},async 'getTaskPatches'(_0x2e25cc){const _0x561365=await fetch(API_BASE+'/tasks/'+_0x2e25cc+'/patches');if(!_0x561365['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x561365['statusText']);return await _0x561365['json']();},async 'getTaskAttachments'(_0x17e298){const _0x1c38ae=await fetch(API_BASE+'/tasks/'+_0x17e298+'/attachments');if(!_0x1c38ae['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1c38ae['statusText']);return await _0x1c38ae['json']();},async 'uploadAttachments'(_0x17dfda,_0xe54b58){const _0x35fc3d=new FormData();for(const _0x3c2c42 of _0xe54b58){_0x35fc3d['append']('attachments',_0x3c2c42);}const _0x2f9727=await fetch(API_BASE+'/tasks/'+_0x17dfda+'/attachments',{'method':'POST','body':_0x35fc3d});if(!_0x2f9727['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2f9727['statusText']);return await _0x2f9727['json']();},async 'isAINameGenerationAvailable'(){try{const _0x25bd06=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x25bd06['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x25bd06['json']();}catch(_0x36d23b){return{'available':![],'reason':_0x36d23b['message']};}},async 'generateTaskName'(_0x2e2a8c){try{const _0x5438d6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2e2a8c})});return await _0x5438d6['json']();}catch(_0x264d7e){return{'success':![],'error':_0x264d7e['message']};}},async 'createTask'(_0x4482e0){let _0x3452f9,_0x5e16bc={};if(_0x4482e0['files']&&_0x4482e0['files']['length']>0x0){const _0x2f06a1=new FormData();for(const [_0x18cd8a,_0x58c09d]of Object['entries'](_0x4482e0)){if(_0x18cd8a!=='files'){if(_0x58c09d==null)continue;typeof _0x58c09d==='object'?_0x2f06a1['append'](_0x18cd8a,JSON['stringify'](_0x58c09d)):_0x2f06a1['append'](_0x18cd8a,String(_0x58c09d));}}for(const _0x3b2319 of _0x4482e0['files']){_0x2f06a1['append']('attachments',_0x3b2319);}_0x3452f9=_0x2f06a1;}else _0x5e16bc['Content-Type']='application/json',_0x3452f9=JSON['stringify'](_0x4482e0);const _0x53f8e5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5e16bc,'body':_0x3452f9});if(!_0x53f8e5['ok']){const _0x5d9a22=await _0x53f8e5['json'](),_0x327802=new Error(_0x5d9a22['error']||'Failed\x20to\x20create\x20task:\x20'+_0x53f8e5['statusText']),{message:_0x2d4236,..._0x182e0e}=_0x5d9a22;Object['assign'](_0x327802,_0x182e0e);throw _0x327802;}return await _0x53f8e5['json']();},async 'createTestTask'(_0x47fb0c){const _0x4600ec=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x47fb0c)});if(!_0x4600ec['ok']){const _0x30b8a0=await _0x4600ec['json']();throw new Error(_0x30b8a0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x4600ec['statusText']);}return await _0x4600ec['json']();},async 'createEphemeralTest'(_0x4a59ba){const _0x514c7d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a59ba)});if(!_0x514c7d['ok']){const _0x528ebe=await _0x514c7d['json']();throw new Error(_0x528ebe['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x514c7d['statusText']);}return await _0x514c7d['json']();},async 'createDeployTask'(_0x438ffe){const _0x4b1621=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x438ffe)});if(!_0x4b1621['ok']){const _0x7f3328=await _0x4b1621['json']();throw new Error(_0x7f3328['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4b1621['statusText']);}return await _0x4b1621['json']();},async 'getEnvironments'(){const _0x176fb9=await fetch(API_BASE+'/environments');if(!_0x176fb9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x176fb9['statusText']);return await _0x176fb9['json']();},async 'getEnvironment'(_0x11a310){const _0x4cfa8e=await fetch(API_BASE+'/environments/'+_0x11a310);if(!_0x4cfa8e['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4cfa8e['statusText']);return await _0x4cfa8e['json']();},async 'getEnvironmentRepoHistory'(_0x378b83,_0x295827,_0x57c3c5={}){if(!_0x378b83||!_0x295827)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x149310=new URLSearchParams();if(_0x57c3c5['limit'])_0x149310['set']('limit',String(_0x57c3c5['limit']));if(_0x57c3c5['offset'])_0x149310['set']('offset',String(_0x57c3c5['offset']));if(_0x57c3c5['search'])_0x149310['set']('search',String(_0x57c3c5['search']));if(_0x57c3c5['branch'])_0x149310['set']('branch',String(_0x57c3c5['branch']));const _0x457a49=API_BASE+'/environments/'+encodeURIComponent(_0x378b83)+'/repos/'+encodeURIComponent(_0x295827)+'/git/history',_0x2c02e0=await fetch(''+_0x457a49+(_0x149310['toString']()?'?'+_0x149310['toString']():''));if(!_0x2c02e0['ok']){const _0x381d2f=await _0x2c02e0['json']()['catch'](()=>({}));throw new Error(_0x381d2f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x2c02e0['statusText']);}return await _0x2c02e0['json']();},async 'getEnvironmentRepoCommit'(_0x2a315f,_0x13af56,_0x5c4180){if(!_0x2a315f||!_0x13af56||!_0x5c4180)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x55459b=API_BASE+'/environments/'+encodeURIComponent(_0x2a315f)+'/repos/'+encodeURIComponent(_0x13af56)+'/git/commits/'+encodeURIComponent(_0x5c4180),_0x1f3980=await fetch(_0x55459b);if(!_0x1f3980['ok']){const _0x30dbe2=await _0x1f3980['json']()['catch'](()=>({}));throw new Error(_0x30dbe2['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1f3980['statusText']);}return await _0x1f3980['json']();},async 'getEnvironmentRepoBranches'(_0x33dbcf,_0x3ac9a1){if(!_0x33dbcf||!_0x3ac9a1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x32a029=API_BASE+'/environments/'+encodeURIComponent(_0x33dbcf)+'/repos/'+encodeURIComponent(_0x3ac9a1)+'/git/branches',_0x33ff79=await fetch(_0x32a029);if(!_0x33ff79['ok']){const _0x424f4d=await _0x33ff79['json']()['catch'](()=>({}));throw new Error(_0x424f4d['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x33ff79['statusText']);}return await _0x33ff79['json']();},async 'revertEnvironmentRepoCommit'(_0x4d481a,_0x321f8e,_0x4c8864,_0x535789={}){if(!_0x4d481a||!_0x321f8e||!_0x4c8864)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x56f540=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4d481a)+'/repos/'+encodeURIComponent(_0x321f8e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4c8864,..._0x535789})});if(!_0x56f540['ok']){const _0x253e1c=await _0x56f540['json']()['catch'](()=>({}));throw new Error(_0x253e1c['message']||_0x253e1c['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x56f540['statusText']);}return await _0x56f540['json']();},async 'getTemplates'(_0x25cdb8={}){const _0x507694=new URLSearchParams();if(_0x25cdb8['include']){const _0x276a59=Array['isArray'](_0x25cdb8['include'])?_0x25cdb8['include']['join'](','):String(_0x25cdb8['include']);if(_0x276a59)_0x507694['set']('include',_0x276a59);}const _0x221795=await fetch(API_BASE+'/templates'+(_0x507694['toString']()?'?'+_0x507694['toString']():''));if(!_0x221795['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x221795['statusText']);return await _0x221795['json']();},async 'getTemplatesForEnvironment'(_0x106e21,_0xa4fa48={}){if(!_0x106e21)throw new Error('Environment\x20name\x20is\x20required');const _0x392ddf=new URLSearchParams();if(_0xa4fa48['include']){const _0x1ca881=Array['isArray'](_0xa4fa48['include'])?_0xa4fa48['include']['join'](','):String(_0xa4fa48['include']);if(_0x1ca881)_0x392ddf['set']('include',_0x1ca881);}const _0x20e075=await fetch(API_BASE+'/templates/'+_0x106e21+(_0x392ddf['toString']()?'?'+_0x392ddf['toString']():''));if(!_0x20e075['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x106e21+':\x20'+_0x20e075['statusText']);return await _0x20e075['json']();},async 'getTemplate'(_0x294513,_0x40ee2c,_0x4afd83={}){if(!_0x294513||!_0x40ee2c)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x27354b=new URLSearchParams();if(_0x4afd83['include']){const _0x44f35c=Array['isArray'](_0x4afd83['include'])?_0x4afd83['include']['join'](','):String(_0x4afd83['include']);if(_0x44f35c)_0x27354b['set']('include',_0x44f35c);}const _0x53f676=await fetch(API_BASE+'/templates/'+_0x294513+'/'+_0x40ee2c+(_0x27354b['toString']()?'?'+_0x27354b['toString']():''));if(!_0x53f676['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x53f676['statusText']);return await _0x53f676['json']();},async 'getTaskLogs'(_0x2391ef,_0x4719c1={}){if(!_0x2391ef)throw new Error('Task\x20ID\x20is\x20required');const _0x20fd0f=new URLSearchParams();_0x4719c1['tail']&&_0x20fd0f['set']('tail',String(_0x4719c1['tail']));const _0x1e2f60=await fetch(API_BASE+'/tasks/'+_0x2391ef+'/logs'+(_0x20fd0f['toString']()?'?'+_0x20fd0f['toString']():''));if(!_0x1e2f60['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1e2f60['statusText']);return await _0x1e2f60['text']();},async 'getContainers'(){const _0xb44f80=await fetch(API_BASE+'/containers');if(!_0xb44f80['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xb44f80['statusText']);return await _0xb44f80['json']();},async 'getContainer'(_0x4130e3){const _0x5a0f28=await fetch(API_BASE+'/containers/'+_0x4130e3);if(!_0x5a0f28['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5a0f28['statusText']);return await _0x5a0f28['json']();},async 'startInteractiveContainer'(_0x34030e){const _0x582055=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x34030e)});if(!_0x582055['ok']){const _0x4ee006=await _0x582055['json']()['catch'](()=>({}));throw new Error(_0x4ee006['message']||'Failed\x20to\x20start\x20container:\x20'+_0x582055['statusText']);}return await _0x582055['json']();},async 'stopContainer'(_0x51fb53){const _0x17d233=await fetch(API_BASE+'/containers/'+_0x51fb53,{'method':'DELETE'});if(!_0x17d233['ok']){const _0x4c09d0=await _0x17d233['json']()['catch'](()=>({}));throw new Error(_0x4c09d0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x17d233['statusText']);}return await _0x17d233['json']();},async 'stopTask'(_0x50d3b2){if(!_0x50d3b2)throw new Error('Task\x20ID\x20is\x20required');const _0x43d7a3=await fetch(API_BASE+'/tasks/'+_0x50d3b2+'/stop',{'method':'POST'});if(!_0x43d7a3['ok']){const _0x3e92de=await _0x43d7a3['json']()['catch'](()=>({}));throw new Error(_0x3e92de['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x43d7a3['statusText']);}return await _0x43d7a3['json']();},async 'interruptTask'(_0x3bd9ae){if(!_0x3bd9ae)throw new Error('Task\x20ID\x20is\x20required');const _0x3c4a05=await fetch(API_BASE+'/tasks/'+_0x3bd9ae+'/interrupt',{'method':'POST'});if(!_0x3c4a05['ok']){const _0x23e2b6=await _0x3c4a05['json']()['catch'](()=>({}));throw new Error(_0x23e2b6['error']||_0x23e2b6['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3c4a05['statusText']);}return await _0x3c4a05['json']();},async 'startTask'(_0x50dae1){if(!_0x50dae1)throw new Error('Task\x20ID\x20is\x20required');const _0x41f7f4=await fetch(API_BASE+'/tasks/'+_0x50dae1+'/start',{'method':'POST'});if(!_0x41f7f4['ok']){const _0x389d62=await _0x41f7f4['json']()['catch'](()=>({}));throw new Error(_0x389d62['error']||'Failed\x20to\x20start\x20task:\x20'+_0x41f7f4['statusText']);}return await _0x41f7f4['json']();},async 'deleteTask'(_0x343f57){if(!_0x343f57)throw new Error('Task\x20ID\x20is\x20required');const _0x703f53=await fetch(API_BASE+'/tasks/'+_0x343f57,{'method':'DELETE'});if(!_0x703f53['ok']){const _0x5124e4=await _0x703f53['json']()['catch'](()=>({}));throw new Error(_0x5124e4['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x703f53['statusText']);}return await _0x703f53['json']();},async 'refreshTasksFromDisk'(){const _0x202870=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x202870['ok']){const _0x230f3b=await _0x202870['json']()['catch'](()=>({}));throw new Error(_0x230f3b['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x202870['statusText']);}return await _0x202870['json']();},async 'approveTask'(_0x723fe8,_0x3d1086={}){if(!_0x723fe8)throw new Error('Task\x20ID\x20is\x20required');const _0x52e0e1={'commit_message':_0x3d1086['commit_message']||'','pull':_0x3d1086['pull']??![],'push':_0x3d1086['push']??![]};_0x3d1086['new_branch']&&(_0x52e0e1['new_branch']=_0x3d1086['new_branch']);const _0x40ed93=await fetch(API_BASE+'/tasks/'+_0x723fe8+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52e0e1)});if(!_0x40ed93['ok']){const _0x371ff7=await _0x40ed93['json']()['catch'](()=>({}));let _0x55f907=_0x371ff7['error']||_0x371ff7['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x40ed93['statusText'];if(_0x371ff7['results']&&Array['isArray'](_0x371ff7['results'])){const _0x5129cd=_0x371ff7['results']['filter'](_0x529ede=>!_0x529ede['success']&&_0x529ede['error']);_0x5129cd['length']>0x0&&(_0x55f907=_0x5129cd[0x0]['error']);}throw new Error(_0x55f907);}return await _0x40ed93['json']();},async 'getPullRequestInfo'(_0x40a550){if(!_0x40a550)throw new Error('Task\x20ID\x20is\x20required');const _0x3d62d9=await fetch(API_BASE+'/tasks/'+_0x40a550+'/pull-request-info');if(!_0x3d62d9['ok']){const _0x1cbad3=await _0x3d62d9['json']()['catch'](()=>({}));throw new Error(_0x1cbad3['error']||_0x1cbad3['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d62d9['statusText']);}return await _0x3d62d9['json']();},async 'createPullRequests'(_0x46173f,_0x49b7c1){if(!_0x46173f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49b7c1||!Array['isArray'](_0x49b7c1))throw new Error('repos\x20array\x20is\x20required');const _0x31964f=await fetch(API_BASE+'/tasks/'+_0x46173f+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x49b7c1})});if(!_0x31964f['ok']){const _0xb051bb=await _0x31964f['json']()['catch'](()=>({}));let _0x3c65ee=_0xb051bb['error']||_0xb051bb['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x31964f['statusText'];if(_0xb051bb['results']&&Array['isArray'](_0xb051bb['results'])){const _0xca7556=_0xb051bb['results']['filter'](_0x16a2d3=>!_0x16a2d3['success']&&_0x16a2d3['error']);_0xca7556['length']>0x0&&(_0x3c65ee=_0xca7556[0x0]['error']);}throw new Error(_0x3c65ee);}return await _0x31964f['json']();},async 'syncRepos'(_0x5dea06){if(!_0x5dea06)throw new Error('Task\x20ID\x20is\x20required');const _0x113a2e=await fetch(API_BASE+'/tasks/'+_0x5dea06+'/sync-repos',{'method':'POST'});if(!_0x113a2e['ok']){const _0x30eae2=await _0x113a2e['json']()['catch'](()=>({}));throw new Error(_0x30eae2['error']||_0x30eae2['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x113a2e['statusText']);}return await _0x113a2e['json']();},async 'getIbmiSyncInfo'(_0x49d21a){if(!_0x49d21a)throw new Error('Task\x20ID\x20is\x20required');const _0x70c9d7=await fetch(API_BASE+'/tasks/'+_0x49d21a+'/ibmi-sync-info');if(!_0x70c9d7['ok']){const _0x701abf=await _0x70c9d7['json']()['catch'](()=>({}));throw new Error(_0x701abf['error']||_0x701abf['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x70c9d7['json']();},async 'syncToIbmi'(_0x41c1cd,_0x499fc7){if(!_0x41c1cd)throw new Error('Task\x20ID\x20is\x20required');const _0x3a485f=await fetch(API_BASE+'/tasks/'+_0x41c1cd+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x499fc7})});if(!_0x3a485f['ok']){const _0x5dbb1b=await _0x3a485f['json']()['catch'](()=>({}));throw new Error(_0x5dbb1b['error']||_0x5dbb1b['message']||'Sync\x20failed');}return await _0x3a485f['json']();},async 'getIbmiSyncLog'(_0x28597a){if(!_0x28597a)throw new Error('Task\x20ID\x20is\x20required');const _0x3125a7=await fetch(API_BASE+'/tasks/'+_0x28597a+'/ibmi-sync-log');if(!_0x3125a7['ok']){const _0x226d9f=await _0x3125a7['json']()['catch'](()=>({}));throw new Error(_0x226d9f['error']||_0x226d9f['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3125a7['json']();},async 'pullChanges'(_0x57c0b5){if(!_0x57c0b5)throw new Error('Task\x20ID\x20is\x20required');const _0x32df2e=await fetch(API_BASE+'/tasks/'+_0x57c0b5+'/pull-changes',{'method':'POST'});if(!_0x32df2e['ok']){const _0x4ad3d7=await _0x32df2e['json']()['catch'](()=>({}));throw new Error(_0x4ad3d7['error']||_0x4ad3d7['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x32df2e['statusText']);}return await _0x32df2e['json']();},async 'readFile'(_0x4cae23,_0x177b0a){if(!_0x4cae23)throw new Error('Task\x20ID\x20is\x20required');if(!_0x177b0a)throw new Error('File\x20path\x20is\x20required');const _0x27e6af=await fetch(API_BASE+'/tasks/'+_0x4cae23+'/files?path='+encodeURIComponent(_0x177b0a));if(!_0x27e6af['ok']){const _0x3ec31c=await _0x27e6af['json']()['catch'](()=>({}));throw new Error(_0x3ec31c['error']||_0x3ec31c['message']||'Failed\x20to\x20read\x20file:\x20'+_0x27e6af['statusText']);}return await _0x27e6af['json']();},async 'writeFile'(_0xb0e4e6,_0x38fc62,_0x5879a5){if(!_0xb0e4e6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38fc62)throw new Error('File\x20path\x20is\x20required');if(_0x5879a5===undefined)throw new Error('Content\x20is\x20required');const _0x245c52=await fetch(API_BASE+'/tasks/'+_0xb0e4e6+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x38fc62,'content':_0x5879a5})});if(!_0x245c52['ok']){const _0x475afe=await _0x245c52['json']()['catch'](()=>({}));throw new Error(_0x475afe['error']||_0x475afe['message']||'Failed\x20to\x20write\x20file:\x20'+_0x245c52['statusText']);}return await _0x245c52['json']();},async 'deleteFile'(_0xb5192,_0x119e7f){if(!_0xb5192)throw new Error('Task\x20ID\x20is\x20required');if(!_0x119e7f)throw new Error('File\x20path\x20is\x20required');const _0x2de673=await fetch(API_BASE+'/tasks/'+_0xb5192+'/files?path='+encodeURIComponent(_0x119e7f),{'method':'DELETE'});if(!_0x2de673['ok']){const _0x50ab10=await _0x2de673['json']()['catch'](()=>({}));throw new Error(_0x50ab10['error']||_0x50ab10['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2de673['statusText']);}return await _0x2de673['json']();},async 'discardFile'(_0x11bbe6,_0x4b9455,_0x1c0841){if(!_0x11bbe6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4b9455)throw new Error('File\x20path\x20is\x20required');if(!_0x1c0841)throw new Error('Repository\x20path\x20is\x20required');const _0x33cbf5=await fetch(API_BASE+'/tasks/'+_0x11bbe6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4b9455,'repoPath':_0x1c0841})});if(!_0x33cbf5['ok']){const _0x1ade84=await _0x33cbf5['json']()['catch'](()=>({}));throw new Error(_0x1ade84['error']||_0x1ade84['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x33cbf5['statusText']);}return await _0x33cbf5['json']();},async 'followUpTask'(_0x152b16,_0xd53fc4={}){if(!_0x152b16)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd53fc4['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1cc6c7,_0x37c7ab={};if(_0xd53fc4['files']&&_0xd53fc4['files']['length']>0x0){const _0x56b7db=new FormData();_0x56b7db['append']('instructions',_0xd53fc4['instructions']);for(const _0x1bbd7e of _0xd53fc4['files']){_0x56b7db['append']('attachments',_0x1bbd7e);}_0x1cc6c7=_0x56b7db;}else _0x37c7ab['Content-Type']='application/json',_0x1cc6c7=JSON['stringify']({'instructions':_0xd53fc4['instructions']});const _0x27d979=await fetch(API_BASE+'/tasks/'+_0x152b16+'/follow-up',{'method':'POST','headers':_0x37c7ab,'body':_0x1cc6c7});if(!_0x27d979['ok']){const _0x36180a=await _0x27d979['json']()['catch'](()=>({}));throw new Error(_0x36180a['error']||_0x36180a['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x27d979['statusText']);}return await _0x27d979['json']();},async 'getTaskRewindPoints'(_0x3595a3){if(!_0x3595a3)throw new Error('Task\x20ID\x20is\x20required');const _0x77227f=await fetch(API_BASE+'/tasks/'+_0x3595a3+'/rewind-points');if(!_0x77227f['ok']){const _0x5b6065=await _0x77227f['json']()['catch'](()=>({}));throw new Error(_0x5b6065['error']||_0x5b6065['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x77227f['statusText']);}return await _0x77227f['json']();},async 'rewindTask'(_0x48329c,_0x46e249={}){if(!_0x48329c)throw new Error('Task\x20ID\x20is\x20required');const _0x34331c=Number['isInteger'](_0x46e249['targetFollowUpCount'])?_0x46e249['targetFollowUpCount']:0x0,_0x5b5ccf={'targetFollowUpCount':_0x34331c};typeof _0x46e249['instructions']==='string'&&_0x46e249['instructions']['trim']()&&(_0x5b5ccf['instructions']=_0x46e249['instructions']['trim']());typeof _0x46e249['rewindFiles']==='boolean'&&(_0x5b5ccf['rewindFiles']=_0x46e249['rewindFiles']);const _0x58c34f=await fetch(API_BASE+'/tasks/'+_0x48329c+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b5ccf)});if(!_0x58c34f['ok']){const _0x93a830=await _0x58c34f['json']()['catch'](()=>({}));throw new Error(_0x93a830['error']||_0x93a830['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x58c34f['statusText']);}return await _0x58c34f['json']();},async 'login'(_0x2b2498,_0x3b21a5){const _0x28bf71=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2b2498,'password':_0x3b21a5})});if(!_0x28bf71['ok']){const _0xad49a7=await _0x28bf71['json']();throw new Error(_0xad49a7['message']||'Login\x20failed');}return await _0x28bf71['json']();},async 'logout'(){const _0x1d05cc=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1d05cc['ok']){const _0x304487=await _0x1d05cc['json']();throw new Error(_0x304487['message']||'Logout\x20failed');}return await _0x1d05cc['json']();},async 'getCurrentUser'(){const _0x347193=await fetch(API_BASE+'/auth/me');if(!_0x347193['ok'])throw new Error('Not\x20authenticated');const _0xb52494=await _0x347193['json']();return _0xb52494['user'];},async 'getRolesInfo'(){const _0x2d8698=await fetch(API_BASE+'/users/roles');if(!_0x2d8698['ok']){const _0x3b0d9d=await _0x2d8698['json']();throw new Error(_0x3b0d9d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2d8698['json']();},async 'getUsers'(){const _0x559a7e=await fetch(API_BASE+'/users');if(!_0x559a7e['ok']){const _0x49fcac=await _0x559a7e['json']();throw new Error(_0x49fcac['message']||'Failed\x20to\x20get\x20users');}return await _0x559a7e['json']();},async 'getUser'(_0x2092a6){const _0x3b58dd=await fetch(API_BASE+'/users/'+_0x2092a6);if(!_0x3b58dd['ok']){const _0x30895f=await _0x3b58dd['json']();throw new Error(_0x30895f['message']||'Failed\x20to\x20get\x20user');}return await _0x3b58dd['json']();},async 'createUser'(_0x2c1d6d){const _0x39c61c=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2c1d6d)});if(!_0x39c61c['ok']){const _0x1ae147=await _0x39c61c['json']();throw new Error(_0x1ae147['message']||'Failed\x20to\x20create\x20user');}return await _0x39c61c['json']();},async 'updateUser'(_0x3209e5,_0x5191a2){const _0x44ff92=await fetch(API_BASE+'/users/'+_0x3209e5,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5191a2)});if(!_0x44ff92['ok']){const _0x6782e6=await _0x44ff92['json']();throw new Error(_0x6782e6['message']||'Failed\x20to\x20update\x20user');}return await _0x44ff92['json']();},async 'deleteUser'(_0x127a13){const _0x730354=await fetch(API_BASE+'/users/'+_0x127a13,{'method':'DELETE'});if(!_0x730354['ok']){const _0x368fe5=await _0x730354['json']();throw new Error(_0x368fe5['message']||'Failed\x20to\x20delete\x20user');}return await _0x730354['json']();},async 'stopAllContainers'(){const _0x5170d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x492a1f=await _0x5170d1['json']()['catch'](()=>({}));if(!_0x5170d1['ok'])throw new Error(_0x492a1f['message']||_0x492a1f['error']||'Failed\x20to\x20stop\x20containers');return _0x492a1f;},async 'removeStoppedContainers'(){const _0x167033=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1a7a6d=await _0x167033['json']()['catch'](()=>({}));if(!_0x167033['ok'])throw new Error(_0x1a7a6d['message']||_0x1a7a6d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1a7a6d;},async 'pruneDockerResources'(){const _0x3e1f5f=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x57e0e0=await _0x3e1f5f['json']()['catch'](()=>({}));if(!_0x3e1f5f['ok'])throw new Error(_0x57e0e0['message']||_0x57e0e0['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x57e0e0;},async 'createPasswordToken'(_0x3fa2f4,_0x2a030b='setup',_0xdc6056=![]){const _0x16b8ac=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3fa2f4,'type':_0x2a030b,'sendEmail':_0xdc6056})});if(!_0x16b8ac['ok']){const _0x43b77c=await _0x16b8ac['json']();throw new Error(_0x43b77c['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x16b8ac['json']();},async 'getEmailConfig'(){const _0x5ba923=await fetch(API_BASE+'/password/email-config');if(!_0x5ba923['ok']){const _0x4e7343=await _0x5ba923['json']();throw new Error(_0x4e7343['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5ba923['json']();},async 'updateTaskName'(_0x498dff,_0x5e59eb){const _0x58bce7=await fetch(API_BASE+'/tasks/'+_0x498dff,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5e59eb})});if(!_0x58bce7['ok']){const _0x44c751=await _0x58bce7['json']();throw new Error(_0x44c751['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x58bce7['json']();},async 'pinTask'(_0x5a821b,_0x4943f9,_0x2391bd=null){if(!_0x5a821b)throw new Error('Task\x20ID\x20is\x20required');const _0x1ef2c9={'pinned':_0x4943f9};_0x2391bd&&_0x2391bd['length']>0x0&&(_0x1ef2c9['additionalTaskIds']=_0x2391bd);const _0x24c9df=await fetch(API_BASE+'/tasks/'+_0x5a821b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ef2c9)});if(!_0x24c9df['ok']){const _0x4ac1d3=await _0x24c9df['json']();throw new Error(_0x4ac1d3['error']||'Failed\x20to\x20pin\x20task');}return await _0x24c9df['json']();},async 'setTaskWinner'(_0x17a284,_0x4c037a,_0x402ca9=[]){if(!_0x17a284)throw new Error('Task\x20ID\x20is\x20required');const _0x3fa58a=await fetch(API_BASE+'/tasks/'+_0x17a284+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4c037a,'siblings':_0x402ca9})});if(!_0x3fa58a['ok']){const _0x38f404=await _0x3fa58a['json']();throw new Error(_0x38f404['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3fa58a['json']();},async 'setTaskLoser'(_0x15b3c0,_0x13025a){if(!_0x15b3c0)throw new Error('Task\x20ID\x20is\x20required');const _0x36b92e=await fetch(API_BASE+'/tasks/'+_0x15b3c0+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x13025a})});if(!_0x36b92e['ok']){const _0x461084=await _0x36b92e['json']();throw new Error(_0x461084['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x36b92e['json']();},async 'createTaskGroup'(_0x5ac695){const _0xf76252=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac695)});if(!_0xf76252['ok']){const _0x52c5a3=await _0xf76252['json']();throw new Error(_0x52c5a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xf76252['json']();},async 'getTaskGroups'(_0x5d03dd={}){const _0x267b26=new URLSearchParams();if(_0x5d03dd['userId'])_0x267b26['set']('userId',String(_0x5d03dd['userId']));if(_0x5d03dd['status'])_0x267b26['set']('status',String(_0x5d03dd['status']));if(_0x5d03dd['limit'])_0x267b26['set']('limit',String(_0x5d03dd['limit']));const _0xe064a7=API_BASE+'/tasks/groups'+(_0x267b26['toString']()?'?'+_0x267b26['toString']():''),_0x468e9d=await fetch(_0xe064a7);if(!_0x468e9d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x468e9d['json']();},async 'getTaskGroup'(_0x59c226){const _0x3507b4=await fetch(API_BASE+'/tasks/groups/'+_0x59c226);if(!_0x3507b4['ok']){const _0x44a7ef=await _0x3507b4['json']();throw new Error(_0x44a7ef['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3507b4['json']();},async 'updateTaskGroup'(_0x3b36b,_0x3c87af,_0xc08e50){const _0x11e81e=await fetch(API_BASE+'/tasks/'+_0x3b36b+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3c87af,'groupIndex':_0xc08e50})});if(!_0x11e81e['ok']){const _0x4ef38c=await _0x11e81e['json']();throw new Error(_0x4ef38c['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x11e81e['json']();},async 'removeTaskFromGroup'(_0xb1e503){return this['updateTaskGroup'](_0xb1e503,null,null);},async 'deleteTaskGroup'(_0x344e01,_0x3429ab=![]){const _0x21f391=_0x3429ab?'?deleteTasks=true':'',_0x4302c0=await fetch(API_BASE+'/tasks/groups/'+_0x344e01+_0x21f391,{'method':'DELETE'});if(!_0x4302c0['ok']){const _0x311d41=await _0x4302c0['json']();throw new Error(_0x311d41['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x284a00,_0x5733cc){const _0x689cd9=await fetch(API_BASE+'/tasks/groups/'+_0x284a00+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5733cc})});if(!_0x689cd9['ok']){const _0x3cd650=await _0x689cd9['json']();throw new Error(_0x3cd650['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x689cd9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x374851){if(!_0x374851)throw new Error('Task\x20ID\x20is\x20required');const _0x4edc83=await fetch(API_BASE+'/tasks/'+_0x374851+'/comments');if(!_0x4edc83['ok']){const _0xb3a000=await _0x4edc83['json']()['catch'](()=>({}));throw new Error(_0xb3a000['error']||'Failed\x20to\x20get\x20comments');}return await _0x4edc83['json']();},async 'addComment'(_0x429ebf,_0x13a3e5){if(!_0x429ebf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x13a3e5)throw new Error('Comment\x20content\x20is\x20required');const _0x36417d=await fetch(API_BASE+'/tasks/'+_0x429ebf+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x13a3e5})});if(!_0x36417d['ok']){const _0x4837d5=await _0x36417d['json']()['catch'](()=>({}));throw new Error(_0x4837d5['error']||'Failed\x20to\x20add\x20comment');}return await _0x36417d['json']();},async 'updateComment'(_0x252389,_0x22267c,_0x1b3e10){if(!_0x252389)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22267c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1b3e10)throw new Error('Comment\x20content\x20is\x20required');const _0x373429=await fetch(API_BASE+'/tasks/'+_0x252389+'/comments/'+_0x22267c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b3e10})});if(!_0x373429['ok']){const _0xb8558d=await _0x373429['json']()['catch'](()=>({}));throw new Error(_0xb8558d['error']||'Failed\x20to\x20update\x20comment');}return await _0x373429['json']();},async 'deleteComment'(_0x4cf70f,_0x4f4eb5){if(!_0x4cf70f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f4eb5)throw new Error('Comment\x20ID\x20is\x20required');const _0x2a9ba4=await fetch(API_BASE+'/tasks/'+_0x4cf70f+'/comments/'+_0x4f4eb5,{'method':'DELETE'});if(!_0x2a9ba4['ok']){const _0x245e30=await _0x2a9ba4['json']()['catch'](()=>({}));throw new Error(_0x245e30['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2a9ba4['json']();},async 'createObjective'(_0x3db758){const _0xd829f3={'objective':!![],'name':_0x3db758['name']||'','environment':_0x3db758['environment']||null,'agents':_0x3db758['agents']||[],'branches':_0x3db758['branches']||{},'isPinned':_0x3db758['isPinned']||![],'parentObjectiveId':_0x3db758['parentObjectiveId']||null,'env_vars':_0x3db758['envVars']||{},'parameters':{'instructions':_0x3db758['instructions']||''},'files':_0x3db758['files']||[],'jira':_0x3db758['jira']||null};return this['createTask'](_0xd829f3);},async 'updateObjective'(_0x485ff6,_0x51f958,_0x21ec51=[],_0x24dc4b=[]){let _0xfa99f9,_0x4854a3={};const _0x1fc001={..._0x51f958};_0x24dc4b&&_0x24dc4b['length']>0x0&&(_0x1fc001['removeAttachments']=_0x24dc4b);if(_0x21ec51&&_0x21ec51['length']>0x0){const _0x2fa696=new FormData();for(const [_0x23cff2,_0x26ec3c]of Object['entries'](_0x1fc001)){if(_0x26ec3c==null)continue;typeof _0x26ec3c==='object'?_0x2fa696['append'](_0x23cff2,JSON['stringify'](_0x26ec3c)):_0x2fa696['append'](_0x23cff2,String(_0x26ec3c));}for(const _0x9f29e of _0x21ec51){_0x2fa696['append']('attachments',_0x9f29e);}_0xfa99f9=_0x2fa696;}else _0x4854a3['Content-Type']='application/json',_0xfa99f9=JSON['stringify'](_0x1fc001);const _0x132fff=await fetch(API_BASE+'/tasks/'+_0x485ff6,{'method':'PATCH','headers':_0x4854a3,'body':_0xfa99f9});if(!_0x132fff['ok']){const _0x2c0872=await _0x132fff['json']();throw new Error(_0x2c0872['error']||'Failed\x20to\x20update\x20objective');}return await _0x132fff['json']();},async 'deleteObjective'(_0x15ab7e){return this['deleteTask'](_0x15ab7e);},async 'launchObjective'(_0x5abfe1,_0x301a4a={}){const _0x495d92=await fetch(API_BASE+'/tasks/'+_0x5abfe1+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x301a4a)});if(!_0x495d92['ok']){const _0x1e1191=await _0x495d92['json']();throw new Error(_0x1e1191['error']||'Failed\x20to\x20launch\x20objective');}return await _0x495d92['json']();},async 'getObjectiveAttachments'(_0x2661db){return this['getTaskAttachments'](_0x2661db);},async 'createJudgeTask'({environment:_0x343e60,judgeAgent:_0x258247,groupId:_0x2a205a,taskIds:_0xe125bd,judgeCustomInstructions:_0x40297a,isPinned:_0x4fd51f}){const _0xfdbc19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x343e60,'judgeAgent':_0x258247,'groupId':_0x2a205a,'taskIds':_0xe125bd,'judgeCustomInstructions':_0x40297a,'isPinned':_0x4fd51f})});if(!_0xfdbc19['ok']){const _0x47aea8=await _0xfdbc19['json']();throw new Error(_0x47aea8['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xfdbc19['json']();},async 'getJudgeTasks'(_0x525174){const _0x3eaae3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x525174));if(!_0x3eaae3['ok']){const _0x2585d4=await _0x3eaae3['json']();throw new Error(_0x2585d4['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x3eaae3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4fea02,_0x290269,_0x15b609=''){const _0x3f2550=await fetch(API_BASE+'/tasks/'+_0x4fea02+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x290269,'customPreamble':_0x15b609})});if(!_0x3f2550['ok']){const _0x8b38e9=await _0x3f2550['json']();throw new Error(_0x8b38e9['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x3f2550['json']();},async 'getJiraConfig'(){const _0x4c663c=await fetch(API_BASE+'/jira/config');if(!_0x4c663c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c663c['json']();},async 'getJiraIssue'(_0xb44476){const _0x5d7b03=await fetch(API_BASE+'/jira/issues/'+_0xb44476);if(!_0x5d7b03['ok']){const _0x59a0ff=await _0x5d7b03['json']()['catch'](()=>({}));throw new Error(_0x59a0ff['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x5d7b03['statusText']);}return await _0x5d7b03['json']();},async 'searchJiraIssues'(_0x567776,_0x291e72=0x14){const _0x55b132=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x567776,'maxResults':_0x291e72})});if(!_0x55b132['ok']){const _0x2978a3=await _0x55b132['json']()['catch'](()=>({}));throw new Error(_0x2978a3['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x55b132['statusText']);}return await _0x55b132['json']();},async 'postJiraComment'(_0x35d036,_0x2ed328){const _0x14afe6=await fetch(API_BASE+'/jira/issues/'+_0x35d036+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x2ed328})});if(!_0x14afe6['ok']){const _0x3f1a7c=await _0x14afe6['json']()['catch'](()=>({}));throw new Error(_0x3f1a7c['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x14afe6['statusText']);}return await _0x14afe6['json']();},async 'getJiraComments'(_0xe5709c){const _0x2e2d30=await fetch(API_BASE+'/jira/issues/'+_0xe5709c+'/comments');if(!_0x2e2d30['ok']){const _0x507cf1=await _0x2e2d30['json']()['catch'](()=>({}));throw new Error(_0x507cf1['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2e2d30['statusText']);}return await _0x2e2d30['json']();},async 'promptParameter'({environment:_0x137e4e,command:_0x17f099,parser:parser='json'}){const _0x2bb77d=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x137e4e,'command':_0x17f099,'parser':parser})});if(!_0x2bb77d['ok']){const _0x13de66=await _0x2bb77d['json']()['catch'](()=>({}));throw new Error(_0x13de66['message']||_0x13de66['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2bb77d['statusText']);}return await _0x2bb77d['json']();},async 'promptParameterStream'(_0x445bf4,_0xa707be){const _0xf88ff7=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x445bf4)});if(!_0xf88ff7['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xf88ff7['statusText']);const _0x4dacf7=_0xf88ff7['body']['getReader'](),_0x42edd5=new TextDecoder();let _0xb1caa1='';return new Promise((_0x567931,_0x26c021)=>{const _0x338785=async()=>{try{const {done:_0x3c5eb8,value:_0x309aa6}=await _0x4dacf7['read']();if(_0x3c5eb8)return;_0xb1caa1+=_0x42edd5['decode'](_0x309aa6,{'stream':!![]});const _0x5e243e=_0xb1caa1['split']('\x0a\x0a');_0xb1caa1=_0x5e243e['pop']()||'';for(const _0x24852e of _0x5e243e){if(!_0x24852e['trim']())continue;const _0x440ead=_0x24852e['split']('\x0a');let _0x478fd0='message',_0x440889='';for(const _0x4a42bb of _0x440ead){if(_0x4a42bb['startsWith']('event:'))_0x478fd0=_0x4a42bb['substring'](0x6)['trim']();else _0x4a42bb['startsWith']('data:')&&(_0x440889=_0x4a42bb['substring'](0x5)['trim']());}if(!_0x440889)continue;try{const _0x1da0f8=JSON['parse'](_0x440889);if(_0x478fd0==='progress'&&_0xa707be)_0xa707be(_0x1da0f8['stage'],_0x1da0f8['message']);else{if(_0x478fd0==='result'){_0x567931(_0x1da0f8);return;}else{if(_0x478fd0==='error'){let _0x3b2e9b=_0x1da0f8['message']||_0x1da0f8['error']||'Prompt\x20command\x20failed';_0x1da0f8['rawOutput']&&(_0x3b2e9b+='\x0a\x0aRaw\x20output:\x0a'+_0x1da0f8['rawOutput']);_0x26c021(new Error(_0x3b2e9b));return;}}}}catch(_0x54d7b5){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x54d7b5),console['error']('Event\x20type:',_0x478fd0),console['error']('Event\x20data:',_0x440889),console['error']('First\x20200\x20chars:',_0x440889['substring'](0x0,0xc8)),_0x26c021(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x54d7b5['message']+'\x0a\x0aData:\x20'+_0x440889['substring'](0x0,0x1f4)));return;}}_0x338785();}catch(_0x33f82d){_0x26c021(_0x33f82d);}};_0x338785();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x7df965){const _0x38ce7c=await fetch(''+API_BASE+_0x7df965);if(!_0x38ce7c['ok']){const _0x15c164=await _0x38ce7c['json']()['catch'](()=>({'error':_0x38ce7c['statusText']})),_0x411d45=new Error(_0x15c164['error']||_0x15c164['message']||_0x38ce7c['statusText']);if(_0x15c164['detail']!==undefined)_0x411d45['detail']=_0x15c164['detail'];throw _0x411d45;}return await _0x38ce7c['json']();},async 'post'(_0x223e1b,_0x3ad1f0){const _0x1b12e9=await fetch(''+API_BASE+_0x223e1b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ad1f0)});if(!_0x1b12e9['ok']){const _0x35e1f0=await _0x1b12e9['json']()['catch'](()=>({'error':_0x1b12e9['statusText']})),_0x9cdcab=new Error(_0x35e1f0['error']||_0x35e1f0['message']||_0x1b12e9['statusText']);if(_0x35e1f0['detail']!==undefined)_0x9cdcab['detail']=_0x35e1f0['detail'];throw _0x9cdcab;}return await _0x1b12e9['json']();},async 'put'(_0xac2ca9,_0x572993){const _0x4adc5b=await fetch(''+API_BASE+_0xac2ca9,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572993)});if(!_0x4adc5b['ok']){const _0xbb93ad=await _0x4adc5b['json']()['catch'](()=>({'error':_0x4adc5b['statusText']})),_0x207dcf=new Error(_0xbb93ad['error']||_0xbb93ad['message']||_0x4adc5b['statusText']);if(_0xbb93ad['detail']!==undefined)_0x207dcf['detail']=_0xbb93ad['detail'];throw _0x207dcf;}return await _0x4adc5b['json']();},async 'delete'(_0x834272,_0x47b7c5){const _0x4ae3f3={'method':'DELETE'};_0x47b7c5&&(_0x4ae3f3['headers']={'Content-Type':'application/json'},_0x4ae3f3['body']=JSON['stringify'](_0x47b7c5));const _0x145f53=await fetch(''+API_BASE+_0x834272,_0x4ae3f3);if(!_0x145f53['ok']){const _0xf8a606=await _0x145f53['json']()['catch'](()=>({'error':_0x145f53['statusText']})),_0x51642d=new Error(_0xf8a606['error']||_0xf8a606['message']||_0x145f53['statusText']);if(_0xf8a606['detail']!==undefined)_0x51642d['detail']=_0xf8a606['detail'];throw _0x51642d;}return await _0x145f53['json']();},async 'getSkills'(){const _0x217076=await fetch(API_BASE+'/skills');if(!_0x217076['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x217076['statusText']);return await _0x217076['json']();},async 'getSkill'(_0x4be507){const _0x15bda9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4be507));if(!_0x15bda9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x15bda9['statusText']);return await _0x15bda9['json']();},async 'createSkill'(_0x3ed7f3){const _0x1565c3=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ed7f3)});if(!_0x1565c3['ok']){const _0x38732c=await _0x1565c3['json']()['catch'](()=>({'error':_0x1565c3['statusText']})),_0x580f82=new Error(_0x38732c['error']||_0x38732c['message']||_0x1565c3['statusText']);if(_0x38732c['detail']!==undefined)_0x580f82['detail']=_0x38732c['detail'];throw _0x580f82;}return await _0x1565c3['json']();},async 'updateSkill'(_0x4993f2,_0x1d273a){const _0x13efb4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4993f2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d273a)});if(!_0x13efb4['ok']){const _0x49963a=await _0x13efb4['json']()['catch'](()=>({'error':_0x13efb4['statusText']})),_0x353198=new Error(_0x49963a['error']||_0x49963a['message']||_0x13efb4['statusText']);if(_0x49963a['detail']!==undefined)_0x353198['detail']=_0x49963a['detail'];throw _0x353198;}return await _0x13efb4['json']();},async 'deleteSkill'(_0x36b5e7){const _0x672ae0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36b5e7),{'method':'DELETE'});if(!_0x672ae0['ok']){const _0x4a1fa6=await _0x672ae0['json']()['catch'](()=>({'error':_0x672ae0['statusText']})),_0xd7572e=new Error(_0x4a1fa6['error']||_0x4a1fa6['message']||_0x672ae0['statusText']);if(_0x4a1fa6['detail']!==undefined)_0xd7572e['detail']=_0x4a1fa6['detail'];throw _0xd7572e;}return await _0x672ae0['json']();},async 'getSkillFile'(_0x2e9b0d,_0x45359e){const _0x284ddb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2e9b0d)+'/files/'+_0x45359e);if(!_0x284ddb['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x284ddb['statusText']);return await _0x284ddb['json']();},async 'saveSkillFile'(_0x3028eb,_0x416ae9,_0x3c5c12){const _0x5dd022=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3028eb)+'/files/'+_0x416ae9,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3c5c12})});if(!_0x5dd022['ok']){const _0x18af8e=await _0x5dd022['json']()['catch'](()=>({'error':_0x5dd022['statusText']})),_0x3c10c2=new Error(_0x18af8e['error']||_0x18af8e['message']||_0x5dd022['statusText']);if(_0x18af8e['detail']!==undefined)_0x3c10c2['detail']=_0x18af8e['detail'];throw _0x3c10c2;}return await _0x5dd022['json']();},async 'deleteSkillFile'(_0x41131b,_0x522df5){const _0x28a1ea=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x41131b)+'/files/'+_0x522df5,{'method':'DELETE'});if(!_0x28a1ea['ok']){const _0x1d700e=await _0x28a1ea['json']()['catch'](()=>({'error':_0x28a1ea['statusText']})),_0x400299=new Error(_0x1d700e['error']||_0x1d700e['message']||_0x28a1ea['statusText']);if(_0x1d700e['detail']!==undefined)_0x400299['detail']=_0x1d700e['detail'];throw _0x400299;}return await _0x28a1ea['json']();},async 'pullSkills'(){const _0x3eb594=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x3eb594['ok']){const _0x4309d2=await _0x3eb594['json']()['catch'](()=>({'error':_0x3eb594['statusText']})),_0x30fe7d=new Error(_0x4309d2['error']||_0x4309d2['message']||_0x3eb594['statusText']);if(_0x4309d2['detail']!==undefined)_0x30fe7d['detail']=_0x4309d2['detail'];throw _0x30fe7d;}return await _0x3eb594['json']();},async 'commitSkills'(_0x5e3c02,_0x18274b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x18274b,_0x5c5c7e=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5e3c02,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5c5c7e['ok']){const _0x15b640=await _0x5c5c7e['json']()['catch'](()=>({'error':_0x5c5c7e['statusText']})),_0x3f1492=new Error(_0x15b640['error']||_0x15b640['message']||_0x5c5c7e['statusText']);if(_0x15b640['detail']!==undefined)_0x3f1492['detail']=_0x15b640['detail'];throw _0x3f1492;}return await _0x5c5c7e['json']();},async 'discardSkillsChanges'(){const _0x58fa99=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x58fa99['ok']){const _0x1c3727=await _0x58fa99['json']()['catch'](()=>({'error':_0x58fa99['statusText']})),_0x4f0a85=new Error(_0x1c3727['error']||_0x1c3727['message']||_0x58fa99['statusText']);if(_0x1c3727['detail']!==undefined)_0x4f0a85['detail']=_0x1c3727['detail'];throw _0x4f0a85;}return await _0x58fa99['json']();},async 'getSkillCatalog'(){const _0x1607a6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1607a6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1607a6['statusText']);return await _0x1607a6['json']();},async 'getImportedSkillsRegistry'(){const _0x1d30e3=await fetch(API_BASE+'/external-skills/registry');if(!_0x1d30e3['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x1d30e3['statusText']);return await _0x1d30e3['json']();},async 'importCatalogSkill'(_0x251633){const _0x53facc=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x251633})});if(!_0x53facc['ok']){const _0x54d49f=await _0x53facc['json']()['catch'](()=>({'error':_0x53facc['statusText']})),_0x3b8519=new Error(_0x54d49f['error']||_0x54d49f['message']||_0x53facc['statusText']);if(_0x54d49f['detail']!==undefined)_0x3b8519['detail']=_0x54d49f['detail'];throw _0x3b8519;}return await _0x53facc['json']();},async 'importSkillFromGit'(_0x13eed6,_0x107eff,_0xedb603='main',_0x5aba78=null){const _0x72ac66=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13eed6,'skillPath':_0x107eff,'branch':_0xedb603,'skillId':_0x5aba78})});if(!_0x72ac66['ok']){const _0x5030bb=await _0x72ac66['json']()['catch'](()=>({'error':_0x72ac66['statusText']})),_0x37bea3=new Error(_0x5030bb['error']||_0x5030bb['message']||_0x72ac66['statusText']);if(_0x5030bb['detail']!==undefined)_0x37bea3['detail']=_0x5030bb['detail'];throw _0x37bea3;}return await _0x72ac66['json']();},async 'probeMarketplace'(_0x4dbfce,_0x13d472='main'){const _0x48f2d8=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dbfce,'branch':_0x13d472})});if(!_0x48f2d8['ok']){const _0x44ad50=await _0x48f2d8['json']()['catch'](()=>({'error':_0x48f2d8['statusText']})),_0x143afb=new Error(_0x44ad50['error']||_0x44ad50['message']||_0x48f2d8['statusText']);if(_0x44ad50['detail']!==undefined)_0x143afb['detail']=_0x44ad50['detail'];throw _0x143afb;}return await _0x48f2d8['json']();},async 'importMarketplaceBundle'(_0x5adf05,_0x59ce37,_0xd15f90,_0x281aad=null){const _0x501cf0=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5adf05,'branch':_0x59ce37,'bundleId':_0xd15f90,'selectedSkills':_0x281aad})});if(!_0x501cf0['ok']){const _0x26b77a=await _0x501cf0['json']()['catch'](()=>({'error':_0x501cf0['statusText']})),_0xd58eb0=new Error(_0x26b77a['error']||_0x26b77a['message']||_0x501cf0['statusText']);if(_0x26b77a['detail']!==undefined)_0xd58eb0['detail']=_0x26b77a['detail'];throw _0xd58eb0;}return await _0x501cf0['json']();},async 'importSkillFromFolder'(_0x4fce9c,_0x47f3a1=null){const _0x389d06=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4fce9c,'skillId':_0x47f3a1})});if(!_0x389d06['ok']){const _0x471aac=await _0x389d06['json']()['catch'](()=>({'error':_0x389d06['statusText']})),_0x17d6ad=new Error(_0x471aac['error']||_0x471aac['message']||_0x389d06['statusText']);if(_0x471aac['detail']!==undefined)_0x17d6ad['detail']=_0x471aac['detail'];throw _0x17d6ad;}return await _0x389d06['json']();},async 'importSkillFromNpm'(_0x575889,_0x2e9bb8='latest',_0x11e874=null,_0x3ebd2f=null){const _0x4908da=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x575889,'version':_0x2e9bb8,'skillId':_0x11e874,'registry':_0x3ebd2f})});if(!_0x4908da['ok']){const _0x307ee2=await _0x4908da['json']()['catch'](()=>({'error':_0x4908da['statusText']})),_0x498540=new Error(_0x307ee2['error']||_0x307ee2['message']||_0x4908da['statusText']);if(_0x307ee2['detail']!==undefined)_0x498540['detail']=_0x307ee2['detail'];throw _0x498540;}return await _0x4908da['json']();},async 'checkSkillUpdates'(_0x100a28){const _0x3c2b00=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x100a28)+'/check-updates',{'method':'POST'});if(!_0x3c2b00['ok']){const _0x205288=await _0x3c2b00['json']()['catch'](()=>({'error':_0x3c2b00['statusText']})),_0x29c6cb=new Error(_0x205288['error']||_0x205288['message']||_0x3c2b00['statusText']);if(_0x205288['detail']!==undefined)_0x29c6cb['detail']=_0x205288['detail'];throw _0x29c6cb;}return await _0x3c2b00['json']();},async 'updateExternalSkill'(_0xeb883c){const _0xd26135=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xeb883c)+'/update',{'method':'POST'});if(!_0xd26135['ok']){const _0x47e68c=await _0xd26135['json']()['catch'](()=>({'error':_0xd26135['statusText']})),_0x185def=new Error(_0x47e68c['error']||_0x47e68c['message']||_0xd26135['statusText']);if(_0x47e68c['detail']!==undefined)_0x185def['detail']=_0x47e68c['detail'];throw _0x185def;}return await _0xd26135['json']();},async 'updateSkillFlags'(_0x53127c,_0x250196){const _0x492aa0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x53127c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x250196})});if(!_0x492aa0['ok']){const _0x25376b=await _0x492aa0['json']()['catch'](()=>({'error':_0x492aa0['statusText']})),_0x5c6892=new Error(_0x25376b['error']||_0x25376b['message']||_0x492aa0['statusText']);if(_0x25376b['detail']!==undefined)_0x5c6892['detail']=_0x25376b['detail'];throw _0x5c6892;}return await _0x492aa0['json']();},async 'removeFromImportedRegistry'(_0x35b91f){const _0x514769=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x35b91f)+'/registry',{'method':'DELETE'});if(!_0x514769['ok']){const _0x1e13a2=await _0x514769['json']()['catch'](()=>({'error':_0x514769['statusText']})),_0x2c5456=new Error(_0x1e13a2['error']||_0x1e13a2['message']||_0x514769['statusText']);if(_0x1e13a2['detail']!==undefined)_0x2c5456['detail']=_0x1e13a2['detail'];throw _0x2c5456;}return await _0x514769['json']();},async 'getTeams'(){const _0x5d5d2c=await fetch(API_BASE+'/teams');if(!_0x5d5d2c['ok']){const _0x858478=await _0x5d5d2c['json']()['catch'](()=>({'message':_0x5d5d2c['statusText']}));throw new Error(_0x858478['message']||'Failed\x20to\x20get\x20teams');}return await _0x5d5d2c['json']();},async 'getTeam'(_0x59ab72){const _0x5a3ea7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x59ab72));if(!_0x5a3ea7['ok']){const _0xff99ed=await _0x5a3ea7['json']()['catch'](()=>({'message':_0x5a3ea7['statusText']}));throw new Error(_0xff99ed['message']||'Failed\x20to\x20get\x20team');}return await _0x5a3ea7['json']();},async 'createTeam'(_0x56c83d){const _0x30b2cd=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56c83d)});if(!_0x30b2cd['ok']){const _0x27e59a=await _0x30b2cd['json']()['catch'](()=>({'message':_0x30b2cd['statusText']}));throw new Error(_0x27e59a['message']||'Failed\x20to\x20create\x20team');}return await _0x30b2cd['json']();},async 'updateTeam'(_0x389461,_0x488a0e){const _0x3f1a0c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x389461),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x488a0e)});if(!_0x3f1a0c['ok']){const _0xe243c5=await _0x3f1a0c['json']()['catch'](()=>({'message':_0x3f1a0c['statusText']}));throw new Error(_0xe243c5['message']||'Failed\x20to\x20update\x20team');}return await _0x3f1a0c['json']();},async 'deleteTeam'(_0x34953a){const _0x578b93=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x34953a),{'method':'DELETE'});if(!_0x578b93['ok']){const _0x6ca825=await _0x578b93['json']()['catch'](()=>({'message':_0x578b93['statusText']}));throw new Error(_0x6ca825['message']||'Failed\x20to\x20delete\x20team');}return await _0x578b93['json']();},async 'addTeamMember'(_0x233d29,_0x15973d){const _0x4fb933=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x233d29)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x15973d})});if(!_0x4fb933['ok']){const _0x1370ac=await _0x4fb933['json']()['catch'](()=>({'message':_0x4fb933['statusText']}));throw new Error(_0x1370ac['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4fb933['json']();},async 'removeTeamMember'(_0x5217c5,_0x39af25){const _0x2c6b4a=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5217c5)+'/members/'+encodeURIComponent(_0x39af25),{'method':'DELETE'});if(!_0x2c6b4a['ok']){const _0x49555a=await _0x2c6b4a['json']()['catch'](()=>({'message':_0x2c6b4a['statusText']}));throw new Error(_0x49555a['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2c6b4a['json']();},async 'getBindings'(_0x3d923e={}){const _0x21d745=new URLSearchParams();if(_0x3d923e['resource_type'])_0x21d745['set']('resource_type',_0x3d923e['resource_type']);if(_0x3d923e['resource_id'])_0x21d745['set']('resource_id',_0x3d923e['resource_id']);if(_0x3d923e['subject_type'])_0x21d745['set']('subject_type',_0x3d923e['subject_type']);if(_0x3d923e['subject_id'])_0x21d745['set']('subject_id',_0x3d923e['subject_id']);const _0x5b9782=_0x21d745['toString'](),_0x31d2f1=await fetch(API_BASE+'/bindings'+(_0x5b9782?'?'+_0x5b9782:''));if(!_0x31d2f1['ok']){const _0x2ac507=await _0x31d2f1['json']()['catch'](()=>({'message':_0x31d2f1['statusText']}));throw new Error(_0x2ac507['message']||'Failed\x20to\x20get\x20bindings');}return await _0x31d2f1['json']();},async 'createBinding'(_0x402a05){const _0x316dad=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x402a05)});if(!_0x316dad['ok']){const _0xb69b53=await _0x316dad['json']()['catch'](()=>({'message':_0x316dad['statusText']}));throw new Error(_0xb69b53['message']||'Failed\x20to\x20create\x20binding');}return await _0x316dad['json']();},async 'updateBinding'(_0x50e802,_0x4443c0){const _0x322d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x50e802),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4443c0)});if(!_0x322d7e['ok']){const _0x4ebab0=await _0x322d7e['json']()['catch'](()=>({'message':_0x322d7e['statusText']}));throw new Error(_0x4ebab0['message']||'Failed\x20to\x20update\x20binding');}return await _0x322d7e['json']();},async 'deleteBinding'(_0x480327){const _0xbfe060=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x480327),{'method':'DELETE'});if(!_0xbfe060['ok']){const _0x2d84b4=await _0xbfe060['json']()['catch'](()=>({'message':_0xbfe060['statusText']}));throw new Error(_0x2d84b4['message']||'Failed\x20to\x20delete\x20binding');}return await _0xbfe060['json']();},async 'getRoleDefinitions'(){const _0x4ee9d1=await fetch(API_BASE+'/roles');if(!_0x4ee9d1['ok']){const _0x1476b0=await _0x4ee9d1['json']()['catch'](()=>({'message':_0x4ee9d1['statusText']}));throw new Error(_0x1476b0['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4ee9d1['json']();},async 'getRoleDefinition'(_0x22b56d){const _0x390899=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x22b56d));if(!_0x390899['ok']){const _0x283e45=await _0x390899['json']()['catch'](()=>({'message':_0x390899['statusText']}));throw new Error(_0x283e45['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x390899['json']();},async 'createRoleDefinition'(_0x1124f3){const _0xa5138a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1124f3)});if(!_0xa5138a['ok']){const _0x22eba3=await _0xa5138a['json']()['catch'](()=>({'message':_0xa5138a['statusText']}));throw new Error(_0x22eba3['message']||_0x22eba3['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0xa5138a['json']();},async 'updateRoleDefinition'(_0x5be21d,_0x2191ae){const _0x5aca7a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5be21d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2191ae)});if(!_0x5aca7a['ok']){const _0x2215b8=await _0x5aca7a['json']()['catch'](()=>({'message':_0x5aca7a['statusText']}));throw new Error(_0x2215b8['message']||_0x2215b8['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x5aca7a['json']();},async 'deleteRoleDefinition'(_0x255bc2){const _0x4b3a08=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x255bc2),{'method':'DELETE'});if(!_0x4b3a08['ok']){const _0x3cd3fb=await _0x4b3a08['json']()['catch'](()=>({'message':_0x4b3a08['statusText']}));throw new Error(_0x3cd3fb['message']||_0x3cd3fb['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4b3a08['json']();},async 'getAvailablePermissions'(){const _0xe9e002=await fetch(API_BASE+'/roles/available-permissions');if(!_0xe9e002['ok']){const _0x2c3e14=await _0xe9e002['json']()['catch'](()=>({'message':_0xe9e002['statusText']}));throw new Error(_0x2c3e14['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xe9e002['json']();},async 'getGitProviderAllowedTeams'(_0x5e6443){const _0x22f3af=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5e6443)+'/allowed-teams');if(!_0x22f3af['ok']){const _0x2fbbdd=await _0x22f3af['json']()['catch'](()=>({'message':_0x22f3af['statusText']}));throw new Error(_0x2fbbdd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x22f3af['json']();},async 'setGitProviderAllowedTeams'(_0x2e7489,_0x59b691){const _0x1d5324=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2e7489)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x59b691})});if(!_0x1d5324['ok']){const _0x8b7fb3=await _0x1d5324['json']()['catch'](()=>({'message':_0x1d5324['statusText']}));throw new Error(_0x8b7fb3['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1d5324['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 _0xf3a60d=toastState['baseBottom'];toastState['toasts']['forEach'](_0x43d68d=>{_0x43d68d['el']['style']['bottom']=_0xf3a60d+'px';const _0x447a89=_0x43d68d['el']['offsetHeight']||toastState['defaultHeight'];_0xf3a60d+=_0x447a89+toastState['gap'];});});}function removeToastById(_0x42a1a9){const _0x1ec0a0=toastState['toasts']['findIndex'](_0xd599e=>_0xd599e['id']===_0x42a1a9);if(_0x1ec0a0===-0x1)return;const _0x199f3f=toastState['toasts'][_0x1ec0a0];if(_0x199f3f['timeoutId'])clearTimeout(_0x199f3f['timeoutId']);_0x199f3f['el']['classList']['remove']('show'),setTimeout(()=>_0x199f3f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x1ec0a0,0x1),repositionAllToasts();}function registerToast(_0x43ecf0){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x43ecf0),repositionAllToasts(),_0x43ecf0['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x481310){if(_0x481310===null||_0x481310===undefined)return'';return String(_0x481310)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x5d4a5f,_0x35f8aa){if(_0x5d4a5f&&typeof _0x5d4a5f==='object'&&!Array['isArray'](_0x5d4a5f))return{'code':typeof _0x5d4a5f['text']==='string'?_0x5d4a5f['text']:'','language':typeof _0x5d4a5f['lang']==='string'?_0x5d4a5f['lang']:''};return{'code':typeof _0x5d4a5f==='string'?_0x5d4a5f:'','language':typeof _0x35f8aa==='string'?_0x35f8aa:''};}function buildMermaidBlock(_0x16880b){const _0x1344aa=String(_0x16880b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1344aa))+'\x22>'+escapeHtmlValue(_0x1344aa)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x17325a=new marked['Renderer'](),_0x80bc2d=_0x17325a['code']['bind'](_0x17325a);return _0x17325a['code']=function(_0x933291,_0x1318e3,..._0x302b24){const {code:_0x1217ec,language:_0xe77aaa}=getMarkdownCodeBlockPayload(_0x933291,_0x1318e3),_0x2a7d9d=String(_0xe77aaa||'')['trim']()['toLowerCase']();if(_0x2a7d9d==='mermaid')return buildMermaidBlock(_0x1217ec);const _0x13b3a4=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x13b3a4&&_0x2a7d9d)try{const _0x4816ad=_0x13b3a4['getLanguage'](_0x2a7d9d)?_0x2a7d9d:'plaintext',_0x72417c=_0x13b3a4['highlight'](_0x1217ec,{'language':_0x4816ad})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2a7d9d)+'\x22>'+_0x72417c+'</code></pre>';}catch(_0x17970d){console['error']('Syntax\x20highlighting\x20error:',_0x17970d);}return _0x80bc2d(_0x933291,_0x1318e3,..._0x302b24);},sharedMarkedRenderer=_0x17325a,_0x17325a;}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 _0x4d9cfb=window['mermaid'];if(!_0x4d9cfb||typeof _0x4d9cfb['initialize']!=='function')return _0x4d9cfb||null;return _0x4d9cfb['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4d9cfb;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4aee18,_0x7bb9f3)=>{const _0x8ecec4=()=>_0x4aee18(configureMermaidInstance()),_0x5e3d72=()=>{mermaidLoadPromise=null,_0x7bb9f3(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x3d8168=document['getElementById'](MERMAID_SCRIPT_ID);!_0x3d8168&&(_0x3d8168=document['createElement']('script'),_0x3d8168['id']=MERMAID_SCRIPT_ID,_0x3d8168['src']=MERMAID_SCRIPT_SRC,_0x3d8168['async']=!![],document['head']['appendChild'](_0x3d8168));if(window['mermaid']){_0x8ecec4();return;}_0x3d8168['addEventListener']('load',_0x8ecec4,{'once':!![]}),_0x3d8168['addEventListener']('error',_0x5e3d72,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x15b0eb){const _0x59cf22=_0x15b0eb['getAttribute']('data-mermaid-source');if(!_0x59cf22)return null;let _0x3345bf=_0x59cf22;try{_0x3345bf=decodeURIComponent(_0x59cf22);}catch{}return _0x15b0eb['textContent']=_0x3345bf,_0x15b0eb['removeAttribute']('data-processed'),_0x15b0eb['removeAttribute']('aria-roledescription'),_0x15b0eb['removeAttribute']('role'),_0x15b0eb['removeAttribute']('aria-label'),_0x3345bf;}function collectMermaidNodes(_0x545ef9,_0xa3feb0){if(!(_0x545ef9 instanceof Element))return;_0x545ef9['matches']('.mermaid[data-mermaid-source]')&&_0xa3feb0['add'](_0x545ef9),_0x545ef9['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4a5b7b=>{_0xa3feb0['add'](_0x4a5b7b);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x28750a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x3ec8e3=>setTimeout(_0x3ec8e3,0x0);_0x28750a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x28d031=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x28d031);});});}function queueMermaidRender(_0x27720e){const _0x35a477=new Set();_0x27720e instanceof Document||_0x27720e instanceof DocumentFragment?_0x27720e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5da4d6=>_0x35a477['add'](_0x5da4d6)):collectMermaidNodes(_0x27720e,_0x35a477);if(_0x35a477['size']===0x0)return;_0x35a477['forEach'](_0x536286=>pendingMermaidNodes['add'](_0x536286)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x222149=Array['from'](pendingMermaidNodes)['filter'](_0x58378c=>_0x58378c['isConnected']);pendingMermaidNodes['clear']();if(_0x222149['length']===0x0)return;const _0x296cc5=await loadMermaid();if(!_0x296cc5)return;configureMermaidInstance();const _0x472526=getMermaidTheme();for(const _0x222dad of _0x222149){const _0x11be9b=_0x222dad['getAttribute']('data-mermaid-source');if(!_0x11be9b)continue;const _0x31cb80=_0x222dad['getAttribute']('data-processed')==='true';if(_0x31cb80&&_0x222dad['dataset']['mermaidTheme']===_0x472526)continue;restoreMermaidSource(_0x222dad);try{if(typeof _0x296cc5['run']==='function')await _0x296cc5['run']({'nodes':[_0x222dad]});else typeof _0x296cc5['init']==='function'&&_0x296cc5['init'](undefined,[_0x222dad]);_0x222dad['dataset']['mermaidTheme']=_0x472526,delete _0x222dad['dataset']['mermaidError'];}catch(_0x2e4003){console['error']('Mermaid\x20render\x20failed:',_0x2e4003),restoreMermaidSource(_0x222dad),_0x222dad['dataset']['mermaidError']='true',delete _0x222dad['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x112ed3=>{_0x112ed3['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x112ed3);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x253eb2=>{_0x253eb2['forEach'](_0x29f5f9=>{_0x29f5f9['addedNodes']['forEach'](_0x577d7e=>{_0x577d7e['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x577d7e);});});}),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'(_0xbf3ecb){const _0x5b0f05=new Date(_0xbf3ecb),_0x3eb63c=new Date(),_0x3b9a39=_0x3eb63c-_0x5b0f05,_0x51b2bb=Math['floor'](_0x3b9a39/0x3e8),_0x4ad4f9=Math['floor'](_0x51b2bb/0x3c),_0x1b6847=Math['floor'](_0x4ad4f9/0x3c),_0x202ea3=Math['floor'](_0x1b6847/0x18);if(_0x51b2bb<0x3c)return'now';if(_0x4ad4f9<0x3c)return _0x4ad4f9+'m\x20ago';if(_0x1b6847<0x18)return _0x1b6847+'h\x20ago';return _0x202ea3+'d\x20ago';},'getStatusIcon'(_0x2a3d5f){switch(_0x2a3d5f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x2b3959){switch(_0x2b3959){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'(_0x25d2a3,_0x52b009=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0xe0b3c0={};_0xe0b3c0['text/plain']=new Blob([_0x25d2a3],{'type':'text/plain'});_0x52b009&&(_0xe0b3c0['text/html']=new Blob([_0x52b009],{'type':'text/html'}));const _0x163c4f=new ClipboardItem(_0xe0b3c0);return await navigator['clipboard']['write']([_0x163c4f]),!![];}catch(_0x23c83a){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x23c83a);}try{const _0x423fe3=_0x111764=>{_0x111764['preventDefault'](),_0x111764['clipboardData']['setData']('text/plain',_0x25d2a3),_0x52b009&&_0x111764['clipboardData']['setData']('text/html',_0x52b009);};document['addEventListener']('copy',_0x423fe3);const _0x5ed2f5=document['execCommand']('copy');document['removeEventListener']('copy',_0x423fe3);if(_0x5ed2f5)return!![];}catch(_0x2b64d3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2b64d3);}try{const _0x3622e4=document['createElement']('textarea');_0x3622e4['value']=_0x25d2a3,_0x3622e4['style']['position']='fixed',_0x3622e4['style']['opacity']='0',_0x3622e4['style']['pointerEvents']='none',document['body']['appendChild'](_0x3622e4),_0x3622e4['select']();const _0x325eca=document['execCommand']('copy');return document['body']['removeChild'](_0x3622e4),_0x325eca;}catch(_0x20d951){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x20d951),![];}},'showToast'(_0x12da4e,_0x20c4cd='info'){const _0x64f394=getNextToastId(),_0x2220a4=document['createElement']('div');_0x2220a4['className']='toast\x20toast-'+_0x20c4cd,_0x2220a4['textContent']=_0x12da4e,_0x2220a4['dataset']['toastId']=_0x64f394,document['body']['appendChild'](_0x2220a4);const _0x679586=_0x20c4cd==='error'?0x2710:0xbb8,_0x506e2e=setTimeout(()=>{removeToastById(_0x64f394);},_0x679586),_0x148c5f={'id':_0x64f394,'el':_0x2220a4,'timeoutId':_0x506e2e};return registerToast(_0x148c5f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2220a4['classList']['add']('show');});}),_0x64f394;},'showError'(_0x409c21){console['error'](_0x409c21);const _0x24d05e=typeof _0x409c21==='string'?_0x409c21:_0x409c21['message']||'An\x20error\x20occurred';this['showToast'](_0x24d05e,'error');},'showSuccess'(_0x2589f5){this['showToast'](_0x2589f5,'success');},'capitalize'(_0x1fdcd1){if(!_0x1fdcd1)return'';return _0x1fdcd1['charAt'](0x0)['toUpperCase']()+_0x1fdcd1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4f7911){return escapeHtmlValue(_0x4f7911);},'ansiToHtml'(_0x11eba0){if(_0x11eba0===null||_0x11eba0===undefined)return'';let _0xb33bb7=this['escapeHtml'](_0x11eba0);const _0x2762dc={'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'},_0xa5fab3={'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 _0x21be70=0x0;return _0xb33bb7=_0xb33bb7['replace'](/\x1b\[([0-9;]*)m/g,(_0x531a8c,_0x1b4a4a)=>{if(!_0x1b4a4a||_0x1b4a4a==='0'){const _0x5b6e82='</span>'['repeat'](_0x21be70);return _0x21be70=0x0,_0x5b6e82;}const _0x4a96bc=_0x1b4a4a['split'](';'),_0x18b795=[];for(const _0x3e13c5 of _0x4a96bc){if(_0x3e13c5==='1')_0x18b795['push']('font-weight:bold');else{if(_0x3e13c5==='2')_0x18b795['push']('opacity:0.7');else{if(_0x3e13c5==='3')_0x18b795['push']('font-style:italic');else{if(_0x3e13c5==='4')_0x18b795['push']('text-decoration:underline');else{if(_0x3e13c5==='9')_0x18b795['push']('text-decoration:line-through');else{if(_0x2762dc[_0x3e13c5])_0x18b795['push']('color:'+_0x2762dc[_0x3e13c5]);else{if(_0xa5fab3[_0x3e13c5])_0x18b795['push']('background-color:'+_0xa5fab3[_0x3e13c5]);}}}}}}}if(_0x18b795['length']>0x0)return _0x21be70++,'<span\x20style=\x22'+_0x18b795['join'](';')+'\x22>';return'';}),_0xb33bb7+='</span>'['repeat'](_0x21be70),_0xb33bb7=_0xb33bb7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4c3fc0,_0x599765)=>{if(!_0x599765||_0x599765==='0')return'';const _0x32ef31=_0x599765['split'](';'),_0x48d2e6=[];for(const _0x5b9434 of _0x32ef31){if(_0x5b9434==='1')_0x48d2e6['push']('font-weight:bold');else{if(_0x2762dc[_0x5b9434])_0x48d2e6['push']('color:'+_0x2762dc[_0x5b9434]);else{if(_0xa5fab3[_0x5b9434])_0x48d2e6['push']('background-color:'+_0xa5fab3[_0x5b9434]);}}}if(_0x48d2e6['length']>0x0)return'<span\x20style=\x22'+_0x48d2e6['join'](';')+'\x22>';return'';}),_0xb33bb7;},'showModal'({title:_0x7414ee,content:_0x419191,buttons:buttons=[]}){const _0x168d2e='\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'](_0x7414ee)+'</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'+_0x419191+'\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']((_0x16c31d,_0x27c98e)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x16c31d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x27c98e+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x16c31d['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',_0x9ff255=document['createElement']('div');_0x9ff255['id']='utils-modal',_0x9ff255['className']='modal',_0x9ff255['innerHTML']=_0x168d2e,document['body']['appendChild'](_0x9ff255);const _0x280e90=document['getElementById']('utils-modal-close');_0x280e90&&_0x280e90['addEventListener']('click',()=>this['hideModal']());const _0x3c7150=_0x9ff255['querySelectorAll']('[data-btn-index]');_0x3c7150['forEach'](_0x1d3901=>{const _0x189c22=parseInt(_0x1d3901['dataset']['btnIndex']);buttons[_0x189c22]?.['onClick']&&_0x1d3901['addEventListener']('click',buttons[_0x189c22]['onClick']);});const _0x7fdf0a=document['getElementById']('utils-modal-overlay');_0x7fdf0a&&_0x7fdf0a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x705a35=document['getElementById']('utils-modal');_0x705a35&&_0x705a35['remove']();},'parseKeyValuePairs'(_0x5a3c5d){const _0x5cea1e={};if(!_0x5a3c5d)return _0x5cea1e;return _0x5a3c5d['split'](/\r?\n/)['map'](_0x542df3=>_0x542df3['trim']())['filter'](Boolean)['forEach'](_0x225e90=>{const _0x4655a3=_0x225e90['indexOf']('=');if(_0x4655a3>0x0){const _0x22ac7a=_0x225e90['slice'](0x0,_0x4655a3)['trim'](),_0x4f7763=_0x225e90['slice'](_0x4655a3+0x1)['trim']();if(_0x22ac7a)_0x5cea1e[_0x22ac7a]=_0x4f7763;}}),_0x5cea1e;},'debounce'(_0x581166,_0x4c3961=0xfa){let _0x5ac2fe=null;return(..._0xc0ff5c)=>{clearTimeout(_0x5ac2fe),_0x5ac2fe=setTimeout(()=>_0x581166['apply'](this,_0xc0ff5c),_0x4c3961);};},'formatTimestamp'(_0x1931a6){if(!_0x1931a6)return'N/A';const _0xa73a8e=new Date(_0x1931a6);return _0xa73a8e['toLocaleDateString']()+'\x20'+_0xa73a8e['toLocaleTimeString']();},'getQueryParams'(){const _0x70292d=new URLSearchParams(window['location']['search']),_0x5c5b37={};for(const [_0x313b1f,_0x4e68e7]of _0x70292d){_0x5c5b37[_0x313b1f]=_0x4e68e7;}return _0x5c5b37;},'formatDuration'(_0x590e22,_0x565f8c){if(!_0x590e22)return'N/A';const _0x15bf46=new Date(_0x590e22),_0x231da7=_0x565f8c?new Date(_0x565f8c):new Date(),_0x117434=_0x231da7-_0x15bf46;if(_0x117434<0x0)return'0s';const _0x2f2d35=Math['floor'](_0x117434/0x3e8),_0x1c0bca=Math['floor'](_0x2f2d35/0x3c),_0x15b8e6=Math['floor'](_0x1c0bca/0x3c),_0x105d24=Math['floor'](_0x15b8e6/0x18);if(_0x2f2d35<0x3c)return _0x2f2d35+'s';if(_0x1c0bca<0x3c)return _0x1c0bca+'m\x20'+_0x2f2d35%0x3c+'s';if(_0x15b8e6<0x18)return _0x15b8e6+'h\x20'+_0x1c0bca%0x3c+'m\x20'+_0x2f2d35%0x3c+'s';return _0x105d24+'d\x20'+_0x15b8e6%0x18+'h\x20'+_0x1c0bca%0x3c+'m';},'renderMarkdown'(_0x3478f4,_0x28c9f9={}){if(!_0x3478f4)return'';_0x3478f4=this['rewriteAttachmentLinks'](_0x3478f4,_0x28c9f9),_0x3478f4=this['rewriteColorSyntax'](_0x3478f4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3478f4,_0x28c9f9);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x3478f4);}catch(_0x3b5cd2){return console['error']('Markdown\x20parsing\x20error:',_0x3b5cd2),this['renderMarkdownFallback'](_0x3478f4,_0x28c9f9);}},'rewriteAttachmentLinks'(_0x5a49ce,_0x370fed={}){const _0x5b14db=typeof _0x370fed['resolveAttachmentUrl']==='function'?_0x370fed['resolveAttachmentUrl']:_0x370fed['taskId']?_0x31121d=>API_BASE+'/tasks/'+_0x370fed['taskId']+'/attachments/'+encodeURIComponent(_0x31121d):null;if(!_0x5b14db)return _0x5a49ce;return String(_0x5a49ce)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x329482,_0x30fe5f)=>{const _0x4b6a24=String(_0x30fe5f||'')['trim']();if(!_0x4b6a24)return _0x329482;let _0x570d7a=_0x4b6a24;try{_0x570d7a=decodeURIComponent(_0x4b6a24);}catch{}const _0x2f27cc=_0x5b14db(_0x570d7a);if(!_0x2f27cc)return _0x329482;return']('+_0x2f27cc+')';});},'rewriteColorSyntax'(_0x1342fd){if(!_0x1342fd)return _0x1342fd;return String(_0x1342fd)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x293b8c,_0x17f8e3,_0x3bfda2)=>{const _0x132e18=this['rewriteColorSyntax'](_0x3bfda2);return'<span\x20style=\x22color:\x20'+_0x17f8e3+'\x22>'+_0x132e18+'</span>';});},'renderMarkdownFallback'(_0x4a34df,_0x23a971={}){if(!_0x4a34df)return'';_0x4a34df=_0x4a34df['replace'](/\r\n/g,'\x0a'),_0x4a34df=_0x4a34df['replace'](/\r/g,'\x0a'),_0x4a34df=this['rewriteAttachmentLinks'](_0x4a34df,_0x23a971);let _0x15e52a=this['escapeHtml'](_0x4a34df);return _0x15e52a=_0x15e52a['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x15e52a=_0x15e52a['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x15e52a=_0x15e52a['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x15e52a=_0x15e52a['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x15e52a=_0x15e52a['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x15e52a=_0x15e52a['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x15e52a=_0x15e52a['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x15e52a=_0x15e52a['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x15e52a=_0x15e52a['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x15e52a=_0x15e52a['replace'](/\n\n/g,'</p><p>'),_0x15e52a=_0x15e52a['replace'](/\n/g,'<br>'),'<p>'+_0x15e52a+'</p>';}};export class CustomSelect{constructor(_0x398069,_0x1adb5a={}){this['nativeSelect']=_0x398069,this['options']=_0x1adb5a,this['isOpen']=![],this['selectedValue']=_0x398069['value']||'',this['searchable']=_0x1adb5a['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x857a21=document['createElement']('div');_0x857a21['className']='custom-select';const _0x42899e=document['createElement']('div');_0x42899e['className']='custom-select-trigger',_0x42899e['setAttribute']('tabindex','0'),_0x42899e['setAttribute']('role','button'),_0x42899e['setAttribute']('aria-haspopup','listbox');const _0x4b3cbd=document['createElement']('span');_0x4b3cbd['className']='custom-select-trigger-text';const _0x429374=document['createElement']('span');_0x429374['className']='custom-select-arrow',_0x429374['textContent']='▼',_0x42899e['appendChild'](_0x4b3cbd),_0x42899e['appendChild'](_0x429374);const _0x38f043=document['createElement']('div');_0x38f043['className']='custom-select-dropdown',_0x38f043['setAttribute']('role','listbox');if(this['searchable']){const _0x528a7f=document['createElement']('div');_0x528a7f['className']='custom-select-search';const _0x1affdc=document['createElement']('input');_0x1affdc['type']='text',_0x1affdc['className']='custom-select-search-input',_0x1affdc['placeholder']='Type\x20to\x20search...',_0x1affdc['setAttribute']('aria-label','Search\x20options'),_0x1affdc['addEventListener']('input',_0x303cbc=>{this['searchQuery']=_0x303cbc['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1affdc['addEventListener']('keydown',_0x40288e=>{if(_0x40288e['key']==='Escape')_0x40288e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x40288e['key']==='Enter'){_0x40288e['preventDefault'](),_0x40288e['stopPropagation']();const _0x4450dc=_0x38f043['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x4450dc){const _0x3db40b=_0x4450dc['getAttribute']('data-value');this['select'](_0x3db40b);}}}}),_0x528a7f['appendChild'](_0x1affdc),_0x38f043['appendChild'](_0x528a7f),this['searchInput']=_0x1affdc;}const _0x2066ba=document['createElement']('div');_0x2066ba['className']='custom-select-options',_0x38f043['appendChild'](_0x2066ba),_0x857a21['appendChild'](_0x42899e),_0x857a21['appendChild'](_0x38f043),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x857a21,this['nativeSelect']),this['wrapper']=_0x857a21,this['trigger']=_0x42899e,this['triggerText']=_0x4b3cbd,this['dropdown']=_0x38f043,this['optionsContainer']=_0x2066ba,_0x42899e['addEventListener']('click',()=>this['toggle']()),_0x42899e['addEventListener']('keydown',_0x100c60=>this['handleKeydown'](_0x100c60)),document['addEventListener']('click',_0x23d77b=>{!_0x857a21['contains'](_0x23d77b['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3f57f8=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3f57f8['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x22eed2=new MutationObserver(()=>{this['updateDisabledState']();});_0x22eed2['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5a9f15=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5a9f15['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x274599=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x274599),this['trigger']['setAttribute']('aria-disabled',_0x274599?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x274599?'-1':'0'),_0x274599&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x54a738=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5e4847=_0x54a738['filter'](_0x52442e=>!_0x52442e['disabled']&&!_0x52442e['hidden']);_0x54a738['forEach']((_0x5a52d,_0xc76d08)=>{const _0xbb7671=document['createElement']('div');_0xbb7671['className']='custom-select-option',_0xbb7671['textContent']=_0x5a52d['textContent'],_0xbb7671['setAttribute']('data-value',_0x5a52d['value']),_0xbb7671['setAttribute']('data-index',_0xc76d08),_0xbb7671['setAttribute']('role','option'),_0x5a52d['disabled']?_0xbb7671['classList']['add']('disabled'):_0xbb7671['addEventListener']('click',()=>this['select'](_0x5a52d['value'])),_0x5a52d['value']===this['selectedValue']&&_0xbb7671['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0xbb7671),this['allOptions']['push']({'element':_0xbb7671,'text':_0x5a52d['textContent']['toLowerCase'](),'value':_0x5a52d['value'],'disabled':_0x5a52d['disabled']});});if(this['searchable']&&this['searchInput']){const _0x54b85a=this['searchInput']['parentElement'];_0x5e4847['length']>0x3?_0x54b85a['style']['display']='':_0x54b85a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3717dd=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x46383e=>{if(!_0x3717dd||_0x46383e['disabled'])_0x46383e['element']['style']['display']='';else{const _0x438fda=_0x46383e['text']['includes'](_0x3717dd);_0x46383e['element']['style']['display']=_0x438fda?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1505b2){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1505b2,this['nativeSelect']['value']=_0x1505b2;const _0xbd8da2=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xbd8da2),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x285390=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x285390&&(this['triggerText']['textContent']=_0x285390['textContent'],_0x285390['disabled']||_0x285390['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2462c9=>{_0x2462c9['getAttribute']('data-value')===this['selectedValue']?_0x2462c9['classList']['add']('selected'):_0x2462c9['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 _0x552744=window['getComputedStyle'](this['dropdown']);if(_0x552744['position']==='fixed'){const _0x1a7063=this['trigger']['getBoundingClientRect'](),_0x3b03c5=parseInt(_0x552744['maxHeight'])||0xc8,_0x38d7d9=window['innerHeight'],_0x5a32b5=_0x38d7d9-_0x1a7063['bottom'],_0x4a2be8=_0x1a7063['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x137d98;_0x5a32b5<_0x3b03c5&&_0x4a2be8>_0x5a32b5?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x38d7d9-_0x1a7063['top']+'px',_0x137d98=Math['min'](_0x3b03c5,_0x4a2be8-0xa),this['dropdown']['style']['maxHeight']=_0x137d98+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1a7063['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x137d98=Math['min'](_0x3b03c5,_0x5a32b5-0xa),this['dropdown']['style']['maxHeight']=_0x137d98+'px');if(this['optionsContainer']){let _0x1a66a8=_0x137d98;if(this['searchInput']){const _0x46cf74=this['searchInput']['parentElement'];_0x46cf74&&(_0x1a66a8-=_0x46cf74['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1a66a8)+'px';}this['dropdown']['style']['left']=_0x1a7063['left']+'px',this['dropdown']['style']['width']=_0x1a7063['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x1dd9f3=this['searchInput']['parentElement'];_0x1dd9f3&&_0x1dd9f3['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'](_0x4df3b5){if(this['nativeSelect']['disabled'])return;if(_0x4df3b5['key']==='Enter'||_0x4df3b5['key']==='\x20')_0x4df3b5['preventDefault'](),this['toggle']();else _0x4df3b5['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x37a931='\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',_0x37a931),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x52a62b=document['getElementById']('confirm-dialog-close'),_0xa8395c=document['getElementById']('confirm-dialog-cancel'),_0x599dcf=document['getElementById']('confirm-dialog-confirm'),_0x3a7c6d=this['_modal']['querySelector']('.modal-overlay');_0x52a62b['addEventListener']('click',()=>this['_resolve'](![])),_0xa8395c['addEventListener']('click',()=>this['_resolve'](![])),_0x599dcf['addEventListener']('click',()=>this['_resolve'](!![])),_0x3a7c6d['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2eb43f=>{if(_0x2eb43f['key']==='Escape')_0x2eb43f['preventDefault'](),this['_resolve'](![]);else _0x2eb43f['key']==='Enter'&&(_0x2eb43f['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x226a6b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x37c61e=>{this['_resolvePromise']=_0x37c61e,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x226a6b;const _0x52d804=document['getElementById']('confirm-dialog-cancel'),_0x5c86a4=document['getElementById']('confirm-dialog-confirm');_0x52d804['textContent']=cancelText,_0x5c86a4['textContent']=confirmText,_0x5c86a4['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5c86a4['focus']();});},'_resolve'(_0x3cdad0){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3cdad0),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x20050b,_0x5a4700={}){this['container']=_0x20050b,this['options']={'placeholder':_0x5a4700['placeholder']||'Type\x20to\x20search...','maxItems':_0x5a4700['maxItems']||0x64,'loadItems':_0x5a4700['loadItems']||(async()=>[]),'renderItem':_0x5a4700['renderItem']||(_0x544f55=>({'primary':String(_0x544f55),'secondary':''})),'onSelect':_0x5a4700['onSelect']||(()=>{}),'filterItems':_0x5a4700['filterItems']||null,'getItemValue':_0x5a4700['getItemValue']||(_0x6f99d4=>_0x6f99d4),'sortItems':_0x5a4700['sortItems']||null,'debounceMs':_0x5a4700['debounceMs']||0xc8,'minCharsForSearch':_0x5a4700['minCharsForSearch']||0x0,'emptyMessage':_0x5a4700['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5a4700['loadingMessage']||'Loading...','preload':_0x5a4700['preload']!==![],'searchMode':_0x5a4700['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',_0x444705=>this['onBlur'](_0x444705)),this['input']['addEventListener']('input',_0x2b87c4=>this['onInput'](_0x2b87c4)),this['input']['addEventListener']('keydown',_0x5a8e9a=>this['onKeydown'](_0x5a8e9a)),this['clearBtn']['addEventListener']('mousedown',_0x5c7ed0=>{_0x5c7ed0['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x27d002=>{_0x27d002['preventDefault']();}),document['addEventListener']('click',_0x37d325=>{!this['wrapper']['contains'](_0x37d325['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(_0x4525c6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x4525c6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x3e61e9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x391840){const _0x3a9b6d=_0x391840['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3a9b6d);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3a9b6d):this['loadAndShow'](_0x3a9b6d);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x514514){switch(_0x514514['key']){case'ArrowDown':_0x514514['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x514514['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x514514['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x514514['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4cec3d){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x51eda9=this['selectedIndex']+_0x4cec3d;if(_0x51eda9>=0x0&&_0x51eda9<this['filteredItems']['length']){this['selectedIndex']=_0x51eda9,this['updateSelectionHighlight']();const _0x47d902=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x47d902[this['selectedIndex']]&&_0x47d902[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x13874b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x13874b['forEach']((_0x352804,_0x338b0e)=>{_0x352804['classList']['toggle']('keyboard-selected',_0x338b0e===this['selectedIndex']);});}async['loadAndShow'](_0x3f92f1){this['showLoading']();try{const _0x2f0908=await this['options']['loadItems'](_0x3f92f1);if(this['options']['searchMode']==='server'){let _0x24cd92=_0x2f0908;this['options']['sortItems']&&(_0x24cd92=this['options']['sortItems']([..._0x2f0908]));this['filteredItems']=_0x24cd92;const _0xd3479b=this['filteredItems']['length']>=this['options']['maxItems'];_0xd3479b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xd3479b),this['open']();}else this['allItems']=_0x2f0908,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x3f92f1);}catch(_0x35af65){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x35af65),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1a9eca){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1a9eca):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2be0c2=this['filteredItems']['length']>=this['options']['maxItems'];_0x2be0c2&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2be0c2),this['open']();}['renderItems'](_0x17a09f){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']((_0x4d6110,_0x278e69)=>{const _0x276d81=document['createElement']('div');_0x276d81['className']='autocomplete-select-item',_0x276d81['setAttribute']('role','option'),_0x276d81['setAttribute']('data-index',_0x278e69);const _0x33afdc=this['options']['renderItem'](_0x4d6110);let _0x1657d0='';_0x33afdc['icon']&&(_0x1657d0='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x33afdc['iconClass']||'')+'\x22>'+_0x33afdc['icon']+'</span>'),_0x276d81['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1657d0+'\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'](_0x33afdc['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x33afdc['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x33afdc['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x276d81['addEventListener']('click',()=>{this['selectItem'](_0x4d6110);}),_0x276d81['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x278e69,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x276d81);}),_0x17a09f?(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'](_0x160336){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x160336)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5ecc2d){this['selectedItem']=_0x5ecc2d;const _0x10e239=this['options']['renderItem'](_0x5ecc2d);this['input']['value']=_0x10e239['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5ecc2d);}['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'](_0x28530d){if(_0x28530d){this['selectedItem']=_0x28530d;const _0x5bb953=this['options']['renderItem'](_0x28530d);this['input']['value']=_0x5bb953['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4ba81b){this['allItems']=_0x4ba81b,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'](_0x1d583c){this['input']['placeholder']=_0x1d583c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1cbfdb=null){const _0x585b24=document['getElementById']('admin-menu-container'),_0x231fe1=document['getElementById']('admin-menu-btn'),_0x267588=document['getElementById']('admin-menu');if(!_0x585b24||!_0x231fe1||!_0x267588)return;try{!_0x1cbfdb&&(_0x1cbfdb=await API['getCurrentUser']());if(_0x1cbfdb){const _0x253235=_0x1cbfdb['hasAllPermissions']||_0x1cbfdb['hasEnvironmentsManage']||_0x1cbfdb['canCreateUsers']||_0x1cbfdb['canManageTeams']||_0x1cbfdb['hasEnvironmentBindings'];if(!_0x253235)return;_0x585b24['hidden']=![];if(!_0x1cbfdb['hasAllPermissions']){const _0x307677=_0x267588['querySelectorAll']('.admin-menu-item');_0x307677['forEach'](_0x3dbe30=>{const _0x366a64=_0x3dbe30['querySelector']('.option-text')?.['textContent']?.['trim']();_0x366a64==='Users'&&!_0x1cbfdb['canCreateUsers']&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Skills'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Server\x20Settings'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Server\x20Health'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Git\x20History'&&(_0x3dbe30['hidden']=!![]);});}_0x231fe1['addEventListener']('click',_0x163ed7=>{_0x163ed7['stopPropagation']();const _0x3c6593=document['getElementById']('actions-menu');if(_0x3c6593)_0x3c6593['hidden']=!![];_0x267588['hidden']=!_0x267588['hidden'];}),document['addEventListener']('click',_0x276d28=>{!_0x267588['hidden']&&!_0x231fe1['contains'](_0x276d28['target'])&&!_0x267588['contains'](_0x276d28['target'])&&(_0x267588['hidden']=!![]);}),document['addEventListener']('keydown',_0x2e2b50=>{_0x2e2b50['key']==='Escape'&&!_0x267588['hidden']&&(_0x267588['hidden']=!![]);});const _0x2a741f=document['getElementById']('server-health-btn');_0x2a741f&&_0x2a741f['addEventListener']('click',async()=>{_0x267588['hidden']=!![];const {openServerHealthModal:_0x4a7e08}=await import('./server-health.js');_0x4a7e08();});}}catch(_0x58cae9){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x58cae9['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|