@profoundlogic/coderflow-server 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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.html +6 -6
- package/dist/web-ui/public/environments.js +1 -1
- 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.html +4 -4
- 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.html +4 -4
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.html +2 -2
- 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.html +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.html +4 -4
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.html +2 -2
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.html +6 -6
- 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/task.html +5 -5
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.html +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.html +2 -2
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.html +2 -2
- 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 _0x66f208=window['location']['pathname'],_0x5f0388=_0x66f208['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5f0388)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5f0388[0x1]),_0x5f0388[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x300cdc={}){const _0x310474=new URLSearchParams();_0x300cdc['userId']&&_0x310474['set']('userId',String(_0x300cdc['userId']));_0x300cdc['automation']&&_0x310474['set']('automation',String(_0x300cdc['automation']));const _0x679974=API_BASE+'/tasks/stats'+(_0x310474['toString']()?'?'+_0x310474['toString']():''),_0x1890d3=await fetch(_0x679974);if(!_0x1890d3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1890d3['statusText']);return await _0x1890d3['json']();},async 'getTasks'(_0x2828de={}){const _0x445ef6=new URLSearchParams();_0x2828de['status']&&_0x445ef6['set']('status',String(_0x2828de['status']));_0x2828de['environment']&&_0x445ef6['set']('environment',String(_0x2828de['environment']));_0x2828de['automation']&&_0x445ef6['set']('automation',String(_0x2828de['automation']));if(_0x2828de['include']){const _0x1d9ac7=Array['isArray'](_0x2828de['include'])?_0x2828de['include']['join'](','):String(_0x2828de['include']);_0x1d9ac7&&_0x445ef6['set']('include',_0x1d9ac7);}_0x2828de['filter']&&_0x445ef6['set']('filter',String(_0x2828de['filter']));_0x2828de['page']&&_0x445ef6['set']('page',String(_0x2828de['page']));_0x2828de['limit']&&_0x445ef6['set']('limit',String(_0x2828de['limit']));_0x2828de['userId']&&_0x445ef6['set']('userId',String(_0x2828de['userId']));_0x2828de['search']&&_0x445ef6['set']('search',String(_0x2828de['search']));_0x2828de['includeChildTasks']&&_0x445ef6['set']('includeChildTasks','true');const _0x4cdad6=API_BASE+'/tasks'+(_0x445ef6['toString']()?'?'+_0x445ef6['toString']():''),_0x47955a=await fetch(_0x4cdad6);if(!_0x47955a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x47955a['statusText']);return await _0x47955a['json']();},async 'getAutomations'(_0x2bb3d5={}){const _0x21507c=new URLSearchParams();_0x2bb3d5['environment']&&_0x21507c['set']('environment',String(_0x2bb3d5['environment']));const _0x1652ca=await fetch(API_BASE+'/api/automations'+(_0x21507c['toString']()?'?'+_0x21507c['toString']():''));if(!_0x1652ca['ok']){const _0x555bbd=await _0x1652ca['json']()['catch'](()=>({}));throw new Error(_0x555bbd['message']||_0x555bbd['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1652ca['statusText']);}return await _0x1652ca['json']();},async 'getAutomation'(_0xf3a9dd){const _0x502c79=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf3a9dd));if(!_0x502c79['ok']){const _0x5d009a=await _0x502c79['json']()['catch'](()=>({}));throw new Error(_0x5d009a['message']||_0x5d009a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x502c79['statusText']);}return await _0x502c79['json']();},async 'createAutomation'(_0x18e88a){const _0x5496be=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18e88a||{})});if(!_0x5496be['ok']){const _0x403bb6=await _0x5496be['json']()['catch'](()=>({}));throw new Error(_0x403bb6['message']||_0x403bb6['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x5496be['statusText']);}return await _0x5496be['json']();},async 'updateAutomation'(_0x2de20d,_0x25e25b){const _0x512683=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2de20d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25e25b||{})});if(!_0x512683['ok']){const _0x2f2962=await _0x512683['json']()['catch'](()=>({}));throw new Error(_0x2f2962['message']||_0x2f2962['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x512683['statusText']);}return await _0x512683['json']();},async 'deleteAutomation'(_0x12a0f6){const _0x1e941e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x12a0f6),{'method':'DELETE'});if(!_0x1e941e['ok']){const _0x5de5d0=await _0x1e941e['json']()['catch'](()=>({}));throw new Error(_0x5de5d0['message']||_0x5de5d0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1e941e['statusText']);}return await _0x1e941e['json']();},async 'triggerAutomation'(_0x352b37){const _0x527394=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x352b37)+'/trigger',{'method':'POST'});if(!_0x527394['ok']){const _0x28107d=await _0x527394['json']()['catch'](()=>({}));throw new Error(_0x28107d['message']||_0x28107d['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x527394['statusText']);}return await _0x527394['json']();},async 'setAutomationEnabled'(_0x4f1777,_0xe9e68f){const _0x3d1cc6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f1777)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe9e68f})});if(!_0x3d1cc6['ok']){const _0x324506=await _0x3d1cc6['json']()['catch'](()=>({}));throw new Error(_0x324506['message']||_0x324506['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3d1cc6['statusText']);}return await _0x3d1cc6['json']();},async 'getAutomationHistory'(_0x55f6c7,_0x1199e8=0x32){const _0x444c62=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55f6c7)+'/history?limit='+encodeURIComponent(String(_0x1199e8)));if(!_0x444c62['ok']){const _0x57398c=await _0x444c62['json']()['catch'](()=>({}));throw new Error(_0x57398c['message']||_0x57398c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x444c62['statusText']);}return await _0x444c62['json']();},async 'getTask'(_0x2b0381,_0x5b32c1={}){const _0x101122=new URLSearchParams();if(_0x5b32c1['include']){const _0xeb321f=Array['isArray'](_0x5b32c1['include'])?_0x5b32c1['include']['join'](','):String(_0x5b32c1['include']);if(_0xeb321f)_0x101122['set']('include',_0xeb321f);}const _0x516dec=await fetch(API_BASE+'/tasks/'+_0x2b0381+(_0x101122['toString']()?'?'+_0x101122['toString']():''));if(!_0x516dec['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x516dec['statusText']);return await _0x516dec['json']();},async 'getTaskResults'(_0x452e0b){const _0xe611da=await fetch(API_BASE+'/tasks/'+_0x452e0b+'/results');if(!_0xe611da['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xe611da['statusText']);return await _0xe611da['json']();},async 'getTaskPatches'(_0x56fc51){const _0x2bfb5f=await fetch(API_BASE+'/tasks/'+_0x56fc51+'/patches');if(!_0x2bfb5f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2bfb5f['statusText']);return await _0x2bfb5f['json']();},async 'getTaskAttachments'(_0x4c3dd0){const _0x44ccd5=await fetch(API_BASE+'/tasks/'+_0x4c3dd0+'/attachments');if(!_0x44ccd5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x44ccd5['statusText']);return await _0x44ccd5['json']();},async 'uploadAttachments'(_0x5ec62f,_0x30fcb0){const _0x109c38=new FormData();for(const _0x47d48e of _0x30fcb0){_0x109c38['append']('attachments',_0x47d48e);}const _0x1e2c3c=await fetch(API_BASE+'/tasks/'+_0x5ec62f+'/attachments',{'method':'POST','body':_0x109c38});if(!_0x1e2c3c['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1e2c3c['statusText']);return await _0x1e2c3c['json']();},async 'isAINameGenerationAvailable'(){try{const _0xdb3886=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0xdb3886['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0xdb3886['json']();}catch(_0x4c117a){return{'available':![],'reason':_0x4c117a['message']};}},async 'generateTaskName'(_0x2d28e3){try{const _0x5782b3=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d28e3})});return await _0x5782b3['json']();}catch(_0x102119){return{'success':![],'error':_0x102119['message']};}},async 'createTask'(_0x571ed5){let _0x5d78ad,_0x215847={};if(_0x571ed5['files']&&_0x571ed5['files']['length']>0x0){const _0xe5071f=new FormData();for(const [_0x44bb70,_0x462e4c]of Object['entries'](_0x571ed5)){if(_0x44bb70!=='files'){if(_0x462e4c==null)continue;typeof _0x462e4c==='object'?_0xe5071f['append'](_0x44bb70,JSON['stringify'](_0x462e4c)):_0xe5071f['append'](_0x44bb70,String(_0x462e4c));}}for(const _0x1ca11a of _0x571ed5['files']){_0xe5071f['append']('attachments',_0x1ca11a);}_0x5d78ad=_0xe5071f;}else _0x215847['Content-Type']='application/json',_0x5d78ad=JSON['stringify'](_0x571ed5);const _0x3cb870=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x215847,'body':_0x5d78ad});if(!_0x3cb870['ok']){const _0x45bd9a=await _0x3cb870['json'](),_0x461942=new Error(_0x45bd9a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3cb870['statusText']),{message:_0x21d63f,..._0x55003f}=_0x45bd9a;Object['assign'](_0x461942,_0x55003f);throw _0x461942;}return await _0x3cb870['json']();},async 'createTestTask'(_0x4b67e6){const _0x12a7a6=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b67e6)});if(!_0x12a7a6['ok']){const _0x22b448=await _0x12a7a6['json']();throw new Error(_0x22b448['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x12a7a6['statusText']);}return await _0x12a7a6['json']();},async 'createEphemeralTest'(_0x437cd6){const _0x4ba7a1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x437cd6)});if(!_0x4ba7a1['ok']){const _0xbb8621=await _0x4ba7a1['json']();throw new Error(_0xbb8621['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4ba7a1['statusText']);}return await _0x4ba7a1['json']();},async 'createDeployTask'(_0x4b7f99){const _0x29cc90=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b7f99)});if(!_0x29cc90['ok']){const _0x8c47b5=await _0x29cc90['json']();throw new Error(_0x8c47b5['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x29cc90['statusText']);}return await _0x29cc90['json']();},async 'getEnvironments'(){const _0x186cfa=await fetch(API_BASE+'/environments');if(!_0x186cfa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x186cfa['statusText']);return await _0x186cfa['json']();},async 'getEnvironment'(_0x4c3def){const _0x34d0fb=await fetch(API_BASE+'/environments/'+_0x4c3def);if(!_0x34d0fb['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x34d0fb['statusText']);return await _0x34d0fb['json']();},async 'getEnvironmentRepoHistory'(_0xd265c5,_0x1e097b,_0x14016c={}){if(!_0xd265c5||!_0x1e097b)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5b2eeb=new URLSearchParams();if(_0x14016c['limit'])_0x5b2eeb['set']('limit',String(_0x14016c['limit']));if(_0x14016c['offset'])_0x5b2eeb['set']('offset',String(_0x14016c['offset']));if(_0x14016c['search'])_0x5b2eeb['set']('search',String(_0x14016c['search']));if(_0x14016c['branch'])_0x5b2eeb['set']('branch',String(_0x14016c['branch']));const _0x48d66d=API_BASE+'/environments/'+encodeURIComponent(_0xd265c5)+'/repos/'+encodeURIComponent(_0x1e097b)+'/git/history',_0x23454d=await fetch(''+_0x48d66d+(_0x5b2eeb['toString']()?'?'+_0x5b2eeb['toString']():''));if(!_0x23454d['ok']){const _0x5d3b0c=await _0x23454d['json']()['catch'](()=>({}));throw new Error(_0x5d3b0c['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x23454d['statusText']);}return await _0x23454d['json']();},async 'getEnvironmentRepoCommit'(_0xf05fef,_0x2c0aed,_0x57dc98){if(!_0xf05fef||!_0x2c0aed||!_0x57dc98)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2bac81=API_BASE+'/environments/'+encodeURIComponent(_0xf05fef)+'/repos/'+encodeURIComponent(_0x2c0aed)+'/git/commits/'+encodeURIComponent(_0x57dc98),_0x12b98d=await fetch(_0x2bac81);if(!_0x12b98d['ok']){const _0x3f92f8=await _0x12b98d['json']()['catch'](()=>({}));throw new Error(_0x3f92f8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x12b98d['statusText']);}return await _0x12b98d['json']();},async 'getEnvironmentRepoBranches'(_0x1878b0,_0x3b16af){if(!_0x1878b0||!_0x3b16af)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a754e=API_BASE+'/environments/'+encodeURIComponent(_0x1878b0)+'/repos/'+encodeURIComponent(_0x3b16af)+'/git/branches',_0x165c8d=await fetch(_0x3a754e);if(!_0x165c8d['ok']){const _0x3d8fb2=await _0x165c8d['json']()['catch'](()=>({}));throw new Error(_0x3d8fb2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x165c8d['statusText']);}return await _0x165c8d['json']();},async 'revertEnvironmentRepoCommit'(_0x1638cc,_0x921292,_0x359922,_0x3b0561={}){if(!_0x1638cc||!_0x921292||!_0x359922)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2848a8=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1638cc)+'/repos/'+encodeURIComponent(_0x921292)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x359922,..._0x3b0561})});if(!_0x2848a8['ok']){const _0x52493e=await _0x2848a8['json']()['catch'](()=>({}));throw new Error(_0x52493e['message']||_0x52493e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2848a8['statusText']);}return await _0x2848a8['json']();},async 'getTemplates'(_0x244185={}){const _0x144d6b=new URLSearchParams();if(_0x244185['include']){const _0x348d63=Array['isArray'](_0x244185['include'])?_0x244185['include']['join'](','):String(_0x244185['include']);if(_0x348d63)_0x144d6b['set']('include',_0x348d63);}const _0x43f848=await fetch(API_BASE+'/templates'+(_0x144d6b['toString']()?'?'+_0x144d6b['toString']():''));if(!_0x43f848['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x43f848['statusText']);return await _0x43f848['json']();},async 'getTemplatesForEnvironment'(_0x5bae6c,_0x7efdd0={}){if(!_0x5bae6c)throw new Error('Environment\x20name\x20is\x20required');const _0x540bf9=new URLSearchParams();if(_0x7efdd0['include']){const _0x2fbce9=Array['isArray'](_0x7efdd0['include'])?_0x7efdd0['include']['join'](','):String(_0x7efdd0['include']);if(_0x2fbce9)_0x540bf9['set']('include',_0x2fbce9);}const _0x3f06f1=await fetch(API_BASE+'/templates/'+_0x5bae6c+(_0x540bf9['toString']()?'?'+_0x540bf9['toString']():''));if(!_0x3f06f1['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5bae6c+':\x20'+_0x3f06f1['statusText']);return await _0x3f06f1['json']();},async 'getTemplate'(_0x2addd7,_0x69b1f4,_0x114704={}){if(!_0x2addd7||!_0x69b1f4)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x10b5ef=new URLSearchParams();if(_0x114704['include']){const _0x1d0dc5=Array['isArray'](_0x114704['include'])?_0x114704['include']['join'](','):String(_0x114704['include']);if(_0x1d0dc5)_0x10b5ef['set']('include',_0x1d0dc5);}const _0x48e765=await fetch(API_BASE+'/templates/'+_0x2addd7+'/'+_0x69b1f4+(_0x10b5ef['toString']()?'?'+_0x10b5ef['toString']():''));if(!_0x48e765['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x48e765['statusText']);return await _0x48e765['json']();},async 'getTaskLogs'(_0x307073,_0x8014c5={}){if(!_0x307073)throw new Error('Task\x20ID\x20is\x20required');const _0x595fab=new URLSearchParams();_0x8014c5['tail']&&_0x595fab['set']('tail',String(_0x8014c5['tail']));const _0x2adce1=await fetch(API_BASE+'/tasks/'+_0x307073+'/logs'+(_0x595fab['toString']()?'?'+_0x595fab['toString']():''));if(!_0x2adce1['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2adce1['statusText']);return await _0x2adce1['text']();},async 'getContainers'(){const _0x425dfd=await fetch(API_BASE+'/containers');if(!_0x425dfd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x425dfd['statusText']);return await _0x425dfd['json']();},async 'getContainer'(_0x27f765){const _0x29c417=await fetch(API_BASE+'/containers/'+_0x27f765);if(!_0x29c417['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x29c417['statusText']);return await _0x29c417['json']();},async 'startInteractiveContainer'(_0x2e8f4b){const _0x252a2f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e8f4b)});if(!_0x252a2f['ok']){const _0x1e569c=await _0x252a2f['json']()['catch'](()=>({}));throw new Error(_0x1e569c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x252a2f['statusText']);}return await _0x252a2f['json']();},async 'stopContainer'(_0x187f88){const _0x4f45ca=await fetch(API_BASE+'/containers/'+_0x187f88,{'method':'DELETE'});if(!_0x4f45ca['ok']){const _0x44b2cf=await _0x4f45ca['json']()['catch'](()=>({}));throw new Error(_0x44b2cf['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4f45ca['statusText']);}return await _0x4f45ca['json']();},async 'stopTask'(_0x306f69){if(!_0x306f69)throw new Error('Task\x20ID\x20is\x20required');const _0x363464=await fetch(API_BASE+'/tasks/'+_0x306f69+'/stop',{'method':'POST'});if(!_0x363464['ok']){const _0x184507=await _0x363464['json']()['catch'](()=>({}));throw new Error(_0x184507['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x363464['statusText']);}return await _0x363464['json']();},async 'interruptTask'(_0x1f7b46){if(!_0x1f7b46)throw new Error('Task\x20ID\x20is\x20required');const _0x26c7cb=await fetch(API_BASE+'/tasks/'+_0x1f7b46+'/interrupt',{'method':'POST'});if(!_0x26c7cb['ok']){const _0xb75f71=await _0x26c7cb['json']()['catch'](()=>({}));throw new Error(_0xb75f71['error']||_0xb75f71['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x26c7cb['statusText']);}return await _0x26c7cb['json']();},async 'startTask'(_0x290c9e){if(!_0x290c9e)throw new Error('Task\x20ID\x20is\x20required');const _0x28cda7=await fetch(API_BASE+'/tasks/'+_0x290c9e+'/start',{'method':'POST'});if(!_0x28cda7['ok']){const _0x8207dd=await _0x28cda7['json']()['catch'](()=>({}));throw new Error(_0x8207dd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x28cda7['statusText']);}return await _0x28cda7['json']();},async 'deleteTask'(_0x113837){if(!_0x113837)throw new Error('Task\x20ID\x20is\x20required');const _0x33034f=await fetch(API_BASE+'/tasks/'+_0x113837,{'method':'DELETE'});if(!_0x33034f['ok']){const _0x1f93be=await _0x33034f['json']()['catch'](()=>({}));throw new Error(_0x1f93be['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33034f['statusText']);}return await _0x33034f['json']();},async 'refreshTasksFromDisk'(){const _0x833d75=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x833d75['ok']){const _0xee47dc=await _0x833d75['json']()['catch'](()=>({}));throw new Error(_0xee47dc['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x833d75['statusText']);}return await _0x833d75['json']();},async 'approveTask'(_0x3b1eda,_0x209835={}){if(!_0x3b1eda)throw new Error('Task\x20ID\x20is\x20required');const _0x196537={'commit_message':_0x209835['commit_message']||'','pull':_0x209835['pull']??![],'push':_0x209835['push']??![]};_0x209835['new_branch']&&(_0x196537['new_branch']=_0x209835['new_branch']);const _0x1190cf=await fetch(API_BASE+'/tasks/'+_0x3b1eda+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x196537)});if(!_0x1190cf['ok']){const _0x5593c3=await _0x1190cf['json']()['catch'](()=>({}));let _0x171f17=_0x5593c3['error']||_0x5593c3['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1190cf['statusText'];if(_0x5593c3['results']&&Array['isArray'](_0x5593c3['results'])){const _0x5b08b3=_0x5593c3['results']['filter'](_0xb11eb5=>!_0xb11eb5['success']&&_0xb11eb5['error']);_0x5b08b3['length']>0x0&&(_0x171f17=_0x5b08b3[0x0]['error']);}throw new Error(_0x171f17);}return await _0x1190cf['json']();},async 'getPullRequestInfo'(_0xe0f7d9){if(!_0xe0f7d9)throw new Error('Task\x20ID\x20is\x20required');const _0x44af71=await fetch(API_BASE+'/tasks/'+_0xe0f7d9+'/pull-request-info');if(!_0x44af71['ok']){const _0x8f97e7=await _0x44af71['json']()['catch'](()=>({}));throw new Error(_0x8f97e7['error']||_0x8f97e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x44af71['statusText']);}return await _0x44af71['json']();},async 'createPullRequests'(_0x3aef5c,_0x1b4247){if(!_0x3aef5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b4247||!Array['isArray'](_0x1b4247))throw new Error('repos\x20array\x20is\x20required');const _0x5d3ec4=await fetch(API_BASE+'/tasks/'+_0x3aef5c+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1b4247})});if(!_0x5d3ec4['ok']){const _0x4d2a1d=await _0x5d3ec4['json']()['catch'](()=>({}));let _0x4f8b3d=_0x4d2a1d['error']||_0x4d2a1d['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5d3ec4['statusText'];if(_0x4d2a1d['results']&&Array['isArray'](_0x4d2a1d['results'])){const _0xab31a2=_0x4d2a1d['results']['filter'](_0x37ac37=>!_0x37ac37['success']&&_0x37ac37['error']);_0xab31a2['length']>0x0&&(_0x4f8b3d=_0xab31a2[0x0]['error']);}throw new Error(_0x4f8b3d);}return await _0x5d3ec4['json']();},async 'syncRepos'(_0x46d6c4){if(!_0x46d6c4)throw new Error('Task\x20ID\x20is\x20required');const _0x3c87d7=await fetch(API_BASE+'/tasks/'+_0x46d6c4+'/sync-repos',{'method':'POST'});if(!_0x3c87d7['ok']){const _0x1c3f2d=await _0x3c87d7['json']()['catch'](()=>({}));throw new Error(_0x1c3f2d['error']||_0x1c3f2d['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3c87d7['statusText']);}return await _0x3c87d7['json']();},async 'getIbmiSyncInfo'(_0x5ac157){if(!_0x5ac157)throw new Error('Task\x20ID\x20is\x20required');const _0x2a757c=await fetch(API_BASE+'/tasks/'+_0x5ac157+'/ibmi-sync-info');if(!_0x2a757c['ok']){const _0xc67cf2=await _0x2a757c['json']()['catch'](()=>({}));throw new Error(_0xc67cf2['error']||_0xc67cf2['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2a757c['json']();},async 'syncToIbmi'(_0x55e19d,_0x2c31c6){if(!_0x55e19d)throw new Error('Task\x20ID\x20is\x20required');const _0x131a49=await fetch(API_BASE+'/tasks/'+_0x55e19d+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x2c31c6})});if(!_0x131a49['ok']){const _0x2df42c=await _0x131a49['json']()['catch'](()=>({}));throw new Error(_0x2df42c['error']||_0x2df42c['message']||'Sync\x20failed');}return await _0x131a49['json']();},async 'getIbmiSyncLog'(_0x3c9322){if(!_0x3c9322)throw new Error('Task\x20ID\x20is\x20required');const _0x517558=await fetch(API_BASE+'/tasks/'+_0x3c9322+'/ibmi-sync-log');if(!_0x517558['ok']){const _0x110b22=await _0x517558['json']()['catch'](()=>({}));throw new Error(_0x110b22['error']||_0x110b22['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x517558['json']();},async 'pullChanges'(_0x34ee58){if(!_0x34ee58)throw new Error('Task\x20ID\x20is\x20required');const _0x2d15b4=await fetch(API_BASE+'/tasks/'+_0x34ee58+'/pull-changes',{'method':'POST'});if(!_0x2d15b4['ok']){const _0x19f7c7=await _0x2d15b4['json']()['catch'](()=>({}));throw new Error(_0x19f7c7['error']||_0x19f7c7['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2d15b4['statusText']);}return await _0x2d15b4['json']();},async 'readFile'(_0x5496b0,_0x2b8427){if(!_0x5496b0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2b8427)throw new Error('File\x20path\x20is\x20required');const _0x1ebe67=await fetch(API_BASE+'/tasks/'+_0x5496b0+'/files?path='+encodeURIComponent(_0x2b8427));if(!_0x1ebe67['ok']){const _0x4bd396=await _0x1ebe67['json']()['catch'](()=>({}));throw new Error(_0x4bd396['error']||_0x4bd396['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1ebe67['statusText']);}return await _0x1ebe67['json']();},async 'writeFile'(_0x156ea1,_0xd2aa7e,_0x283c8b){if(!_0x156ea1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2aa7e)throw new Error('File\x20path\x20is\x20required');if(_0x283c8b===undefined)throw new Error('Content\x20is\x20required');const _0x212681=await fetch(API_BASE+'/tasks/'+_0x156ea1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd2aa7e,'content':_0x283c8b})});if(!_0x212681['ok']){const _0x564566=await _0x212681['json']()['catch'](()=>({}));throw new Error(_0x564566['error']||_0x564566['message']||'Failed\x20to\x20write\x20file:\x20'+_0x212681['statusText']);}return await _0x212681['json']();},async 'discardFile'(_0x50a6e0,_0x4123c4,_0x1aaf9b){if(!_0x50a6e0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4123c4)throw new Error('File\x20path\x20is\x20required');if(!_0x1aaf9b)throw new Error('Repository\x20path\x20is\x20required');const _0xe5cd90=await fetch(API_BASE+'/tasks/'+_0x50a6e0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4123c4,'repoPath':_0x1aaf9b})});if(!_0xe5cd90['ok']){const _0x27579a=await _0xe5cd90['json']()['catch'](()=>({}));throw new Error(_0x27579a['error']||_0x27579a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xe5cd90['statusText']);}return await _0xe5cd90['json']();},async 'followUpTask'(_0x8b8d6d,_0x579975={}){if(!_0x8b8d6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x579975['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x576fdf,_0x338a44={};if(_0x579975['files']&&_0x579975['files']['length']>0x0){const _0x2421fd=new FormData();_0x2421fd['append']('instructions',_0x579975['instructions']);for(const _0x32a668 of _0x579975['files']){_0x2421fd['append']('attachments',_0x32a668);}_0x576fdf=_0x2421fd;}else _0x338a44['Content-Type']='application/json',_0x576fdf=JSON['stringify']({'instructions':_0x579975['instructions']});const _0xb7ed23=await fetch(API_BASE+'/tasks/'+_0x8b8d6d+'/follow-up',{'method':'POST','headers':_0x338a44,'body':_0x576fdf});if(!_0xb7ed23['ok']){const _0x401b88=await _0xb7ed23['json']()['catch'](()=>({}));throw new Error(_0x401b88['error']||_0x401b88['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xb7ed23['statusText']);}return await _0xb7ed23['json']();},async 'getTaskRewindPoints'(_0x261e65){if(!_0x261e65)throw new Error('Task\x20ID\x20is\x20required');const _0x177911=await fetch(API_BASE+'/tasks/'+_0x261e65+'/rewind-points');if(!_0x177911['ok']){const _0x771815=await _0x177911['json']()['catch'](()=>({}));throw new Error(_0x771815['error']||_0x771815['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x177911['statusText']);}return await _0x177911['json']();},async 'rewindTask'(_0x3e6582,_0x3a5756={}){if(!_0x3e6582)throw new Error('Task\x20ID\x20is\x20required');const _0x2a6e90=Number['isInteger'](_0x3a5756['targetFollowUpCount'])?_0x3a5756['targetFollowUpCount']:0x0,_0x188163={'targetFollowUpCount':_0x2a6e90};typeof _0x3a5756['instructions']==='string'&&_0x3a5756['instructions']['trim']()&&(_0x188163['instructions']=_0x3a5756['instructions']['trim']());typeof _0x3a5756['rewindFiles']==='boolean'&&(_0x188163['rewindFiles']=_0x3a5756['rewindFiles']);const _0x460ffd=await fetch(API_BASE+'/tasks/'+_0x3e6582+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x188163)});if(!_0x460ffd['ok']){const _0x10bf12=await _0x460ffd['json']()['catch'](()=>({}));throw new Error(_0x10bf12['error']||_0x10bf12['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x460ffd['statusText']);}return await _0x460ffd['json']();},async 'login'(_0x4465d7,_0x1fc215){const _0x5c59f9=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4465d7,'password':_0x1fc215})});if(!_0x5c59f9['ok']){const _0x3d607f=await _0x5c59f9['json']();throw new Error(_0x3d607f['message']||'Login\x20failed');}return await _0x5c59f9['json']();},async 'logout'(){const _0x3ef471=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3ef471['ok']){const _0x21bd23=await _0x3ef471['json']();throw new Error(_0x21bd23['message']||'Logout\x20failed');}return await _0x3ef471['json']();},async 'getCurrentUser'(){const _0x41a2c2=await fetch(API_BASE+'/auth/me');if(!_0x41a2c2['ok'])throw new Error('Not\x20authenticated');const _0x435404=await _0x41a2c2['json']();return _0x435404['user'];},async 'getRolesInfo'(){const _0x499895=await fetch(API_BASE+'/users/roles');if(!_0x499895['ok']){const _0x3a6b15=await _0x499895['json']();throw new Error(_0x3a6b15['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x499895['json']();},async 'getUsers'(){const _0x45a0c6=await fetch(API_BASE+'/users');if(!_0x45a0c6['ok']){const _0x1ca5ee=await _0x45a0c6['json']();throw new Error(_0x1ca5ee['message']||'Failed\x20to\x20get\x20users');}return await _0x45a0c6['json']();},async 'getUser'(_0x58fb5f){const _0x160921=await fetch(API_BASE+'/users/'+_0x58fb5f);if(!_0x160921['ok']){const _0x547289=await _0x160921['json']();throw new Error(_0x547289['message']||'Failed\x20to\x20get\x20user');}return await _0x160921['json']();},async 'createUser'(_0x2b1dfb){const _0x51ac60=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b1dfb)});if(!_0x51ac60['ok']){const _0x46e0f4=await _0x51ac60['json']();throw new Error(_0x46e0f4['message']||'Failed\x20to\x20create\x20user');}return await _0x51ac60['json']();},async 'updateUser'(_0x496115,_0x143106){const _0x5e8727=await fetch(API_BASE+'/users/'+_0x496115,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x143106)});if(!_0x5e8727['ok']){const _0x55b5bc=await _0x5e8727['json']();throw new Error(_0x55b5bc['message']||'Failed\x20to\x20update\x20user');}return await _0x5e8727['json']();},async 'deleteUser'(_0x1e887a){const _0x6a92b7=await fetch(API_BASE+'/users/'+_0x1e887a,{'method':'DELETE'});if(!_0x6a92b7['ok']){const _0x4a0dd5=await _0x6a92b7['json']();throw new Error(_0x4a0dd5['message']||'Failed\x20to\x20delete\x20user');}return await _0x6a92b7['json']();},async 'stopAllContainers'(){const _0x1e07c1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x121433=await _0x1e07c1['json']()['catch'](()=>({}));if(!_0x1e07c1['ok'])throw new Error(_0x121433['message']||_0x121433['error']||'Failed\x20to\x20stop\x20containers');return _0x121433;},async 'removeStoppedContainers'(){const _0xa325f9=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x321ac7=await _0xa325f9['json']()['catch'](()=>({}));if(!_0xa325f9['ok'])throw new Error(_0x321ac7['message']||_0x321ac7['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x321ac7;},async 'pruneDockerResources'(){const _0x504b49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x1e4e79=await _0x504b49['json']()['catch'](()=>({}));if(!_0x504b49['ok'])throw new Error(_0x1e4e79['message']||_0x1e4e79['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x1e4e79;},async 'createPasswordToken'(_0x34cdf9,_0x35f4b5='setup',_0xf9abee=![]){const _0x307d9a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x34cdf9,'type':_0x35f4b5,'sendEmail':_0xf9abee})});if(!_0x307d9a['ok']){const _0x3b5e25=await _0x307d9a['json']();throw new Error(_0x3b5e25['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x307d9a['json']();},async 'getEmailConfig'(){const _0x556ef5=await fetch(API_BASE+'/password/email-config');if(!_0x556ef5['ok']){const _0x441288=await _0x556ef5['json']();throw new Error(_0x441288['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x556ef5['json']();},async 'updateTaskName'(_0x507fda,_0x1c8bbb){const _0xe92308=await fetch(API_BASE+'/tasks/'+_0x507fda,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1c8bbb})});if(!_0xe92308['ok']){const _0x531e37=await _0xe92308['json']();throw new Error(_0x531e37['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xe92308['json']();},async 'pinTask'(_0xe51b0b,_0x15cf32,_0xa1dd61=null){if(!_0xe51b0b)throw new Error('Task\x20ID\x20is\x20required');const _0x51767f={'pinned':_0x15cf32};_0xa1dd61&&_0xa1dd61['length']>0x0&&(_0x51767f['additionalTaskIds']=_0xa1dd61);const _0x5a0015=await fetch(API_BASE+'/tasks/'+_0xe51b0b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51767f)});if(!_0x5a0015['ok']){const _0x4b4b51=await _0x5a0015['json']();throw new Error(_0x4b4b51['error']||'Failed\x20to\x20pin\x20task');}return await _0x5a0015['json']();},async 'setTaskWinner'(_0x401361,_0x5dc3ff,_0x19519a=[]){if(!_0x401361)throw new Error('Task\x20ID\x20is\x20required');const _0x111da1=await fetch(API_BASE+'/tasks/'+_0x401361+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5dc3ff,'siblings':_0x19519a})});if(!_0x111da1['ok']){const _0xa3254d=await _0x111da1['json']();throw new Error(_0xa3254d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x111da1['json']();},async 'setTaskLoser'(_0x419753,_0x5d07c9){if(!_0x419753)throw new Error('Task\x20ID\x20is\x20required');const _0x50c0d0=await fetch(API_BASE+'/tasks/'+_0x419753+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5d07c9})});if(!_0x50c0d0['ok']){const _0x3fac94=await _0x50c0d0['json']();throw new Error(_0x3fac94['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x50c0d0['json']();},async 'createTaskGroup'(_0x574e81){const _0x58598d=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x574e81)});if(!_0x58598d['ok']){const _0x3fcb11=await _0x58598d['json']();throw new Error(_0x3fcb11['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x58598d['json']();},async 'getTaskGroups'(_0x43f44d={}){const _0x679e5d=new URLSearchParams();if(_0x43f44d['userId'])_0x679e5d['set']('userId',String(_0x43f44d['userId']));if(_0x43f44d['status'])_0x679e5d['set']('status',String(_0x43f44d['status']));if(_0x43f44d['limit'])_0x679e5d['set']('limit',String(_0x43f44d['limit']));const _0x1cdfd7=API_BASE+'/tasks/groups'+(_0x679e5d['toString']()?'?'+_0x679e5d['toString']():''),_0x163e65=await fetch(_0x1cdfd7);if(!_0x163e65['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x163e65['json']();},async 'getTaskGroup'(_0x1a405e){const _0x51e46b=await fetch(API_BASE+'/tasks/groups/'+_0x1a405e);if(!_0x51e46b['ok']){const _0x41169b=await _0x51e46b['json']();throw new Error(_0x41169b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x51e46b['json']();},async 'updateTaskGroup'(_0x30b788,_0x4f3062,_0x3e87ed){const _0x52fe91=await fetch(API_BASE+'/tasks/'+_0x30b788+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4f3062,'groupIndex':_0x3e87ed})});if(!_0x52fe91['ok']){const _0x1581f5=await _0x52fe91['json']();throw new Error(_0x1581f5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x52fe91['json']();},async 'removeTaskFromGroup'(_0x1bf3cc){return this['updateTaskGroup'](_0x1bf3cc,null,null);},async 'deleteTaskGroup'(_0x409217,_0x46edd9=![]){const _0x404425=_0x46edd9?'?deleteTasks=true':'',_0x34bdeb=await fetch(API_BASE+'/tasks/groups/'+_0x409217+_0x404425,{'method':'DELETE'});if(!_0x34bdeb['ok']){const _0x24c940=await _0x34bdeb['json']();throw new Error(_0x24c940['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1ace7c,_0x4a92c6){const _0x5ee3bb=await fetch(API_BASE+'/tasks/groups/'+_0x1ace7c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4a92c6})});if(!_0x5ee3bb['ok']){const _0x47da47=await _0x5ee3bb['json']();throw new Error(_0x47da47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5ee3bb['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3f5090){if(!_0x3f5090)throw new Error('Task\x20ID\x20is\x20required');const _0x4827e7=await fetch(API_BASE+'/tasks/'+_0x3f5090+'/comments');if(!_0x4827e7['ok']){const _0x476f87=await _0x4827e7['json']()['catch'](()=>({}));throw new Error(_0x476f87['error']||'Failed\x20to\x20get\x20comments');}return await _0x4827e7['json']();},async 'addComment'(_0x54d1d8,_0x4ffabc){if(!_0x54d1d8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ffabc)throw new Error('Comment\x20content\x20is\x20required');const _0x111551=await fetch(API_BASE+'/tasks/'+_0x54d1d8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4ffabc})});if(!_0x111551['ok']){const _0x10dd06=await _0x111551['json']()['catch'](()=>({}));throw new Error(_0x10dd06['error']||'Failed\x20to\x20add\x20comment');}return await _0x111551['json']();},async 'updateComment'(_0x124739,_0x356c98,_0x4b8d63){if(!_0x124739)throw new Error('Task\x20ID\x20is\x20required');if(!_0x356c98)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4b8d63)throw new Error('Comment\x20content\x20is\x20required');const _0x367327=await fetch(API_BASE+'/tasks/'+_0x124739+'/comments/'+_0x356c98,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b8d63})});if(!_0x367327['ok']){const _0x3569ff=await _0x367327['json']()['catch'](()=>({}));throw new Error(_0x3569ff['error']||'Failed\x20to\x20update\x20comment');}return await _0x367327['json']();},async 'deleteComment'(_0x9f98b3,_0x2c9ef9){if(!_0x9f98b3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ef9)throw new Error('Comment\x20ID\x20is\x20required');const _0xb23cdf=await fetch(API_BASE+'/tasks/'+_0x9f98b3+'/comments/'+_0x2c9ef9,{'method':'DELETE'});if(!_0xb23cdf['ok']){const _0x3339e5=await _0xb23cdf['json']()['catch'](()=>({}));throw new Error(_0x3339e5['error']||'Failed\x20to\x20delete\x20comment');}return await _0xb23cdf['json']();},async 'createObjective'(_0x3168e7){const _0x18af8d={'objective':!![],'name':_0x3168e7['name']||'','environment':_0x3168e7['environment']||null,'agents':_0x3168e7['agents']||[],'branches':_0x3168e7['branches']||{},'isPinned':_0x3168e7['isPinned']||![],'parentObjectiveId':_0x3168e7['parentObjectiveId']||null,'env_vars':_0x3168e7['envVars']||{},'parameters':{'instructions':_0x3168e7['instructions']||''},'files':_0x3168e7['files']||[],'jira':_0x3168e7['jira']||null};return this['createTask'](_0x18af8d);},async 'updateObjective'(_0x64978d,_0x160e6d,_0x2c8f4f=[],_0x3d7cc9=[]){let _0x2e4ee7,_0x390736={};const _0x5698b8={..._0x160e6d};_0x3d7cc9&&_0x3d7cc9['length']>0x0&&(_0x5698b8['removeAttachments']=_0x3d7cc9);if(_0x2c8f4f&&_0x2c8f4f['length']>0x0){const _0x2cceec=new FormData();for(const [_0x151822,_0x5c3058]of Object['entries'](_0x5698b8)){if(_0x5c3058==null)continue;typeof _0x5c3058==='object'?_0x2cceec['append'](_0x151822,JSON['stringify'](_0x5c3058)):_0x2cceec['append'](_0x151822,String(_0x5c3058));}for(const _0x2b2679 of _0x2c8f4f){_0x2cceec['append']('attachments',_0x2b2679);}_0x2e4ee7=_0x2cceec;}else _0x390736['Content-Type']='application/json',_0x2e4ee7=JSON['stringify'](_0x5698b8);const _0x57dcef=await fetch(API_BASE+'/tasks/'+_0x64978d,{'method':'PATCH','headers':_0x390736,'body':_0x2e4ee7});if(!_0x57dcef['ok']){const _0x20102b=await _0x57dcef['json']();throw new Error(_0x20102b['error']||'Failed\x20to\x20update\x20objective');}return await _0x57dcef['json']();},async 'deleteObjective'(_0x3ad508){return this['deleteTask'](_0x3ad508);},async 'launchObjective'(_0x181319,_0xad8c6b={}){const _0x582886=await fetch(API_BASE+'/tasks/'+_0x181319+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xad8c6b)});if(!_0x582886['ok']){const _0x4cb814=await _0x582886['json']();throw new Error(_0x4cb814['error']||'Failed\x20to\x20launch\x20objective');}return await _0x582886['json']();},async 'getObjectiveAttachments'(_0x3d705d){return this['getTaskAttachments'](_0x3d705d);},async 'createJudgeTask'({environment:_0x59e9aa,judgeAgent:_0x7533b3,groupId:_0x1098a3,taskIds:_0x177fb4,judgeCustomInstructions:_0x19902c,isPinned:_0x9424ca}){const _0x27ecf0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59e9aa,'judgeAgent':_0x7533b3,'groupId':_0x1098a3,'taskIds':_0x177fb4,'judgeCustomInstructions':_0x19902c,'isPinned':_0x9424ca})});if(!_0x27ecf0['ok']){const _0x14930a=await _0x27ecf0['json']();throw new Error(_0x14930a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x27ecf0['json']();},async 'getJudgeTasks'(_0x30c894){const _0x373500=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x30c894));if(!_0x373500['ok']){const _0x341675=await _0x373500['json']();throw new Error(_0x341675['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x373500['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x170e83,_0x2356ae,_0xf380ff=''){const _0x227405=await fetch(API_BASE+'/tasks/'+_0x170e83+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2356ae,'customPreamble':_0xf380ff})});if(!_0x227405['ok']){const _0x1f4cef=await _0x227405['json']();throw new Error(_0x1f4cef['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x227405['json']();},async 'getJiraConfig'(){const _0x2f0262=await fetch(API_BASE+'/jira/config');if(!_0x2f0262['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2f0262['json']();},async 'getJiraIssue'(_0x2a45f5){const _0x1f36f6=await fetch(API_BASE+'/jira/issues/'+_0x2a45f5);if(!_0x1f36f6['ok']){const _0x39e31a=await _0x1f36f6['json']()['catch'](()=>({}));throw new Error(_0x39e31a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1f36f6['statusText']);}return await _0x1f36f6['json']();},async 'searchJiraIssues'(_0x4f6cb2,_0x160144=0x14){const _0x2026b3=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x4f6cb2,'maxResults':_0x160144})});if(!_0x2026b3['ok']){const _0x51438f=await _0x2026b3['json']()['catch'](()=>({}));throw new Error(_0x51438f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2026b3['statusText']);}return await _0x2026b3['json']();},async 'postJiraComment'(_0x4f069d,_0x5e3ce5){const _0x134443=await fetch(API_BASE+'/jira/issues/'+_0x4f069d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5e3ce5})});if(!_0x134443['ok']){const _0x19d8d7=await _0x134443['json']()['catch'](()=>({}));throw new Error(_0x19d8d7['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x134443['statusText']);}return await _0x134443['json']();},async 'getJiraComments'(_0x30070e){const _0x1f78e6=await fetch(API_BASE+'/jira/issues/'+_0x30070e+'/comments');if(!_0x1f78e6['ok']){const _0x4bc2e3=await _0x1f78e6['json']()['catch'](()=>({}));throw new Error(_0x4bc2e3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f78e6['statusText']);}return await _0x1f78e6['json']();},async 'promptParameter'({environment:_0x1acf72,command:_0x2b12d8,parser:parser='json'}){const _0x179922=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1acf72,'command':_0x2b12d8,'parser':parser})});if(!_0x179922['ok']){const _0x12bab5=await _0x179922['json']()['catch'](()=>({}));throw new Error(_0x12bab5['message']||_0x12bab5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x179922['statusText']);}return await _0x179922['json']();},async 'promptParameterStream'(_0x40e558,_0x1a9e59){const _0x492c35=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40e558)});if(!_0x492c35['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x492c35['statusText']);const _0x2fd8ea=_0x492c35['body']['getReader'](),_0x44fa66=new TextDecoder();let _0x2f1464='';return new Promise((_0x25a7f5,_0x16a7c4)=>{const _0x4ba1ea=async()=>{try{const {done:_0xcbcadd,value:_0x52f231}=await _0x2fd8ea['read']();if(_0xcbcadd)return;_0x2f1464+=_0x44fa66['decode'](_0x52f231,{'stream':!![]});const _0x2f7552=_0x2f1464['split']('\x0a\x0a');_0x2f1464=_0x2f7552['pop']()||'';for(const _0x246e11 of _0x2f7552){if(!_0x246e11['trim']())continue;const _0x55fda2=_0x246e11['split']('\x0a');let _0x259870='message',_0x5afc4f='';for(const _0x5d86d7 of _0x55fda2){if(_0x5d86d7['startsWith']('event:'))_0x259870=_0x5d86d7['substring'](0x6)['trim']();else _0x5d86d7['startsWith']('data:')&&(_0x5afc4f=_0x5d86d7['substring'](0x5)['trim']());}if(!_0x5afc4f)continue;try{const _0x2f4edb=JSON['parse'](_0x5afc4f);if(_0x259870==='progress'&&_0x1a9e59)_0x1a9e59(_0x2f4edb['stage'],_0x2f4edb['message']);else{if(_0x259870==='result'){_0x25a7f5(_0x2f4edb);return;}else{if(_0x259870==='error'){let _0x11d662=_0x2f4edb['message']||_0x2f4edb['error']||'Prompt\x20command\x20failed';_0x2f4edb['rawOutput']&&(_0x11d662+='\x0a\x0aRaw\x20output:\x0a'+_0x2f4edb['rawOutput']);_0x16a7c4(new Error(_0x11d662));return;}}}}catch(_0x81aaf7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x81aaf7),console['error']('Event\x20type:',_0x259870),console['error']('Event\x20data:',_0x5afc4f),console['error']('First\x20200\x20chars:',_0x5afc4f['substring'](0x0,0xc8)),_0x16a7c4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x81aaf7['message']+'\x0a\x0aData:\x20'+_0x5afc4f['substring'](0x0,0x1f4)));return;}}_0x4ba1ea();}catch(_0x46bd6d){_0x16a7c4(_0x46bd6d);}};_0x4ba1ea();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xe14c4e){const _0x3186f9=await fetch(''+API_BASE+_0xe14c4e);if(!_0x3186f9['ok']){const _0x7bf539=await _0x3186f9['json']()['catch'](()=>({'error':_0x3186f9['statusText']})),_0x39e05b=new Error(_0x7bf539['error']||_0x7bf539['message']||_0x3186f9['statusText']);if(_0x7bf539['detail']!==undefined)_0x39e05b['detail']=_0x7bf539['detail'];throw _0x39e05b;}return await _0x3186f9['json']();},async 'post'(_0x15d96e,_0xb5a306){const _0x55f00f=await fetch(''+API_BASE+_0x15d96e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb5a306)});if(!_0x55f00f['ok']){const _0x1c5735=await _0x55f00f['json']()['catch'](()=>({'error':_0x55f00f['statusText']})),_0x3672f1=new Error(_0x1c5735['error']||_0x1c5735['message']||_0x55f00f['statusText']);if(_0x1c5735['detail']!==undefined)_0x3672f1['detail']=_0x1c5735['detail'];throw _0x3672f1;}return await _0x55f00f['json']();},async 'put'(_0x30fb8e,_0x3cf1ab){const _0x229f6a=await fetch(''+API_BASE+_0x30fb8e,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3cf1ab)});if(!_0x229f6a['ok']){const _0x3da4ff=await _0x229f6a['json']()['catch'](()=>({'error':_0x229f6a['statusText']})),_0x1f5b38=new Error(_0x3da4ff['error']||_0x3da4ff['message']||_0x229f6a['statusText']);if(_0x3da4ff['detail']!==undefined)_0x1f5b38['detail']=_0x3da4ff['detail'];throw _0x1f5b38;}return await _0x229f6a['json']();},async 'delete'(_0x20bf8c,_0x463a07){const _0x4a23ba={'method':'DELETE'};_0x463a07&&(_0x4a23ba['headers']={'Content-Type':'application/json'},_0x4a23ba['body']=JSON['stringify'](_0x463a07));const _0x5141dc=await fetch(''+API_BASE+_0x20bf8c,_0x4a23ba);if(!_0x5141dc['ok']){const _0x499311=await _0x5141dc['json']()['catch'](()=>({'error':_0x5141dc['statusText']})),_0x149d09=new Error(_0x499311['error']||_0x499311['message']||_0x5141dc['statusText']);if(_0x499311['detail']!==undefined)_0x149d09['detail']=_0x499311['detail'];throw _0x149d09;}return await _0x5141dc['json']();},async 'getSkills'(){const _0x36156=await fetch(API_BASE+'/skills');if(!_0x36156['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36156['statusText']);return await _0x36156['json']();},async 'getSkill'(_0x4fdd84){const _0x152aea=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4fdd84));if(!_0x152aea['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x152aea['statusText']);return await _0x152aea['json']();},async 'createSkill'(_0x2317be){const _0x3d0a42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2317be)});if(!_0x3d0a42['ok']){const _0xfaaefb=await _0x3d0a42['json']()['catch'](()=>({'error':_0x3d0a42['statusText']})),_0x2b6d28=new Error(_0xfaaefb['error']||_0xfaaefb['message']||_0x3d0a42['statusText']);if(_0xfaaefb['detail']!==undefined)_0x2b6d28['detail']=_0xfaaefb['detail'];throw _0x2b6d28;}return await _0x3d0a42['json']();},async 'updateSkill'(_0x115d64,_0x24d9b0){const _0x18b6b9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x115d64),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24d9b0)});if(!_0x18b6b9['ok']){const _0x2fdd40=await _0x18b6b9['json']()['catch'](()=>({'error':_0x18b6b9['statusText']})),_0xbabca3=new Error(_0x2fdd40['error']||_0x2fdd40['message']||_0x18b6b9['statusText']);if(_0x2fdd40['detail']!==undefined)_0xbabca3['detail']=_0x2fdd40['detail'];throw _0xbabca3;}return await _0x18b6b9['json']();},async 'deleteSkill'(_0x208d96){const _0x58b7cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x208d96),{'method':'DELETE'});if(!_0x58b7cc['ok']){const _0x4edb97=await _0x58b7cc['json']()['catch'](()=>({'error':_0x58b7cc['statusText']})),_0x4f6730=new Error(_0x4edb97['error']||_0x4edb97['message']||_0x58b7cc['statusText']);if(_0x4edb97['detail']!==undefined)_0x4f6730['detail']=_0x4edb97['detail'];throw _0x4f6730;}return await _0x58b7cc['json']();},async 'getSkillFile'(_0x438f12,_0x4210c3){const _0x33877a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x438f12)+'/files/'+_0x4210c3);if(!_0x33877a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x33877a['statusText']);return await _0x33877a['json']();},async 'saveSkillFile'(_0x384262,_0xbd5330,_0x5b38be){const _0x3d64d2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x384262)+'/files/'+_0xbd5330,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5b38be})});if(!_0x3d64d2['ok']){const _0x52d5e5=await _0x3d64d2['json']()['catch'](()=>({'error':_0x3d64d2['statusText']})),_0x1e9953=new Error(_0x52d5e5['error']||_0x52d5e5['message']||_0x3d64d2['statusText']);if(_0x52d5e5['detail']!==undefined)_0x1e9953['detail']=_0x52d5e5['detail'];throw _0x1e9953;}return await _0x3d64d2['json']();},async 'deleteSkillFile'(_0x214043,_0x27932d){const _0x4e1168=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x214043)+'/files/'+_0x27932d,{'method':'DELETE'});if(!_0x4e1168['ok']){const _0x9b7116=await _0x4e1168['json']()['catch'](()=>({'error':_0x4e1168['statusText']})),_0x19d9c7=new Error(_0x9b7116['error']||_0x9b7116['message']||_0x4e1168['statusText']);if(_0x9b7116['detail']!==undefined)_0x19d9c7['detail']=_0x9b7116['detail'];throw _0x19d9c7;}return await _0x4e1168['json']();},async 'pullSkills'(){const _0x55c229=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x55c229['ok']){const _0x199265=await _0x55c229['json']()['catch'](()=>({'error':_0x55c229['statusText']})),_0x254f5d=new Error(_0x199265['error']||_0x199265['message']||_0x55c229['statusText']);if(_0x199265['detail']!==undefined)_0x254f5d['detail']=_0x199265['detail'];throw _0x254f5d;}return await _0x55c229['json']();},async 'commitSkills'(_0x2a65f0,_0x5abd5a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x5abd5a,_0x2ff51b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x2a65f0,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2ff51b['ok']){const _0x400cef=await _0x2ff51b['json']()['catch'](()=>({'error':_0x2ff51b['statusText']})),_0x3617b1=new Error(_0x400cef['error']||_0x400cef['message']||_0x2ff51b['statusText']);if(_0x400cef['detail']!==undefined)_0x3617b1['detail']=_0x400cef['detail'];throw _0x3617b1;}return await _0x2ff51b['json']();},async 'discardSkillsChanges'(){const _0x2cb581=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2cb581['ok']){const _0x15fe10=await _0x2cb581['json']()['catch'](()=>({'error':_0x2cb581['statusText']})),_0x2e0336=new Error(_0x15fe10['error']||_0x15fe10['message']||_0x2cb581['statusText']);if(_0x15fe10['detail']!==undefined)_0x2e0336['detail']=_0x15fe10['detail'];throw _0x2e0336;}return await _0x2cb581['json']();},async 'getSkillCatalog'(){const _0x2ae89d=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ae89d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ae89d['statusText']);return await _0x2ae89d['json']();},async 'getImportedSkillsRegistry'(){const _0x408d64=await fetch(API_BASE+'/external-skills/registry');if(!_0x408d64['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408d64['statusText']);return await _0x408d64['json']();},async 'importCatalogSkill'(_0x3bb913){const _0x187f2e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3bb913})});if(!_0x187f2e['ok']){const _0x1f8d86=await _0x187f2e['json']()['catch'](()=>({'error':_0x187f2e['statusText']})),_0x1db6ae=new Error(_0x1f8d86['error']||_0x1f8d86['message']||_0x187f2e['statusText']);if(_0x1f8d86['detail']!==undefined)_0x1db6ae['detail']=_0x1f8d86['detail'];throw _0x1db6ae;}return await _0x187f2e['json']();},async 'importSkillFromGit'(_0x31f80e,_0x356de5,_0x491d8b='main',_0x5a34ca=null){const _0x3f5941=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x31f80e,'skillPath':_0x356de5,'branch':_0x491d8b,'skillId':_0x5a34ca})});if(!_0x3f5941['ok']){const _0x664a78=await _0x3f5941['json']()['catch'](()=>({'error':_0x3f5941['statusText']})),_0x62c0a8=new Error(_0x664a78['error']||_0x664a78['message']||_0x3f5941['statusText']);if(_0x664a78['detail']!==undefined)_0x62c0a8['detail']=_0x664a78['detail'];throw _0x62c0a8;}return await _0x3f5941['json']();},async 'probeMarketplace'(_0x395495,_0x111ce2='main'){const _0xab5641=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x395495,'branch':_0x111ce2})});if(!_0xab5641['ok']){const _0x3a96c8=await _0xab5641['json']()['catch'](()=>({'error':_0xab5641['statusText']})),_0x53ceb5=new Error(_0x3a96c8['error']||_0x3a96c8['message']||_0xab5641['statusText']);if(_0x3a96c8['detail']!==undefined)_0x53ceb5['detail']=_0x3a96c8['detail'];throw _0x53ceb5;}return await _0xab5641['json']();},async 'importMarketplaceBundle'(_0x24b3ad,_0xddae8d,_0x321700,_0x28d0d0=null){const _0x5422d7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x24b3ad,'branch':_0xddae8d,'bundleId':_0x321700,'selectedSkills':_0x28d0d0})});if(!_0x5422d7['ok']){const _0x4dea6a=await _0x5422d7['json']()['catch'](()=>({'error':_0x5422d7['statusText']})),_0x2f88db=new Error(_0x4dea6a['error']||_0x4dea6a['message']||_0x5422d7['statusText']);if(_0x4dea6a['detail']!==undefined)_0x2f88db['detail']=_0x4dea6a['detail'];throw _0x2f88db;}return await _0x5422d7['json']();},async 'importSkillFromFolder'(_0x15f66e,_0x43cda5=null){const _0x4d4968=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x15f66e,'skillId':_0x43cda5})});if(!_0x4d4968['ok']){const _0x9035fe=await _0x4d4968['json']()['catch'](()=>({'error':_0x4d4968['statusText']})),_0x3a5b46=new Error(_0x9035fe['error']||_0x9035fe['message']||_0x4d4968['statusText']);if(_0x9035fe['detail']!==undefined)_0x3a5b46['detail']=_0x9035fe['detail'];throw _0x3a5b46;}return await _0x4d4968['json']();},async 'importSkillFromNpm'(_0x3713d6,_0x5c93cb='latest',_0x510a69=null,_0x39a3cb=null){const _0x37edc1=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3713d6,'version':_0x5c93cb,'skillId':_0x510a69,'registry':_0x39a3cb})});if(!_0x37edc1['ok']){const _0x53e47d=await _0x37edc1['json']()['catch'](()=>({'error':_0x37edc1['statusText']})),_0x13c3ba=new Error(_0x53e47d['error']||_0x53e47d['message']||_0x37edc1['statusText']);if(_0x53e47d['detail']!==undefined)_0x13c3ba['detail']=_0x53e47d['detail'];throw _0x13c3ba;}return await _0x37edc1['json']();},async 'checkSkillUpdates'(_0x57c361){const _0xa4a8fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57c361)+'/check-updates',{'method':'POST'});if(!_0xa4a8fd['ok']){const _0x55d25d=await _0xa4a8fd['json']()['catch'](()=>({'error':_0xa4a8fd['statusText']})),_0x19aff3=new Error(_0x55d25d['error']||_0x55d25d['message']||_0xa4a8fd['statusText']);if(_0x55d25d['detail']!==undefined)_0x19aff3['detail']=_0x55d25d['detail'];throw _0x19aff3;}return await _0xa4a8fd['json']();},async 'updateExternalSkill'(_0x48dd58){const _0x4661b9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48dd58)+'/update',{'method':'POST'});if(!_0x4661b9['ok']){const _0x1936d1=await _0x4661b9['json']()['catch'](()=>({'error':_0x4661b9['statusText']})),_0x141879=new Error(_0x1936d1['error']||_0x1936d1['message']||_0x4661b9['statusText']);if(_0x1936d1['detail']!==undefined)_0x141879['detail']=_0x1936d1['detail'];throw _0x141879;}return await _0x4661b9['json']();},async 'updateSkillFlags'(_0x2e3ed1,_0x32cbb9){const _0xe9958f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e3ed1)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x32cbb9})});if(!_0xe9958f['ok']){const _0x31c781=await _0xe9958f['json']()['catch'](()=>({'error':_0xe9958f['statusText']})),_0x10d234=new Error(_0x31c781['error']||_0x31c781['message']||_0xe9958f['statusText']);if(_0x31c781['detail']!==undefined)_0x10d234['detail']=_0x31c781['detail'];throw _0x10d234;}return await _0xe9958f['json']();},async 'removeFromImportedRegistry'(_0x45646e){const _0x10ad1e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x45646e)+'/registry',{'method':'DELETE'});if(!_0x10ad1e['ok']){const _0xf36b26=await _0x10ad1e['json']()['catch'](()=>({'error':_0x10ad1e['statusText']})),_0x38cd5a=new Error(_0xf36b26['error']||_0xf36b26['message']||_0x10ad1e['statusText']);if(_0xf36b26['detail']!==undefined)_0x38cd5a['detail']=_0xf36b26['detail'];throw _0x38cd5a;}return await _0x10ad1e['json']();},async 'getTeams'(){const _0x17227d=await fetch(API_BASE+'/teams');if(!_0x17227d['ok']){const _0x114b97=await _0x17227d['json']()['catch'](()=>({'message':_0x17227d['statusText']}));throw new Error(_0x114b97['message']||'Failed\x20to\x20get\x20teams');}return await _0x17227d['json']();},async 'getTeam'(_0x55c3f9){const _0x4448f7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55c3f9));if(!_0x4448f7['ok']){const _0x7c5293=await _0x4448f7['json']()['catch'](()=>({'message':_0x4448f7['statusText']}));throw new Error(_0x7c5293['message']||'Failed\x20to\x20get\x20team');}return await _0x4448f7['json']();},async 'createTeam'(_0x4d5cd1){const _0x2c1ce3=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4d5cd1)});if(!_0x2c1ce3['ok']){const _0x84e0f0=await _0x2c1ce3['json']()['catch'](()=>({'message':_0x2c1ce3['statusText']}));throw new Error(_0x84e0f0['message']||'Failed\x20to\x20create\x20team');}return await _0x2c1ce3['json']();},async 'updateTeam'(_0x6c8258,_0x59dc0b){const _0x36c4d4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x6c8258),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59dc0b)});if(!_0x36c4d4['ok']){const _0x9b1602=await _0x36c4d4['json']()['catch'](()=>({'message':_0x36c4d4['statusText']}));throw new Error(_0x9b1602['message']||'Failed\x20to\x20update\x20team');}return await _0x36c4d4['json']();},async 'deleteTeam'(_0x4f4e34){const _0x3d0b65=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4f4e34),{'method':'DELETE'});if(!_0x3d0b65['ok']){const _0x13a412=await _0x3d0b65['json']()['catch'](()=>({'message':_0x3d0b65['statusText']}));throw new Error(_0x13a412['message']||'Failed\x20to\x20delete\x20team');}return await _0x3d0b65['json']();},async 'addTeamMember'(_0x46fd88,_0x15e4d9){const _0xd4316=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46fd88)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x15e4d9})});if(!_0xd4316['ok']){const _0x56dec8=await _0xd4316['json']()['catch'](()=>({'message':_0xd4316['statusText']}));throw new Error(_0x56dec8['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xd4316['json']();},async 'removeTeamMember'(_0x5a4859,_0xc79b6c){const _0x4d1bd7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4859)+'/members/'+encodeURIComponent(_0xc79b6c),{'method':'DELETE'});if(!_0x4d1bd7['ok']){const _0x50ac20=await _0x4d1bd7['json']()['catch'](()=>({'message':_0x4d1bd7['statusText']}));throw new Error(_0x50ac20['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4d1bd7['json']();},async 'getBindings'(_0x1c6a8b={}){const _0x1ebed8=new URLSearchParams();if(_0x1c6a8b['resource_type'])_0x1ebed8['set']('resource_type',_0x1c6a8b['resource_type']);if(_0x1c6a8b['resource_id'])_0x1ebed8['set']('resource_id',_0x1c6a8b['resource_id']);if(_0x1c6a8b['subject_type'])_0x1ebed8['set']('subject_type',_0x1c6a8b['subject_type']);if(_0x1c6a8b['subject_id'])_0x1ebed8['set']('subject_id',_0x1c6a8b['subject_id']);const _0x30f54d=_0x1ebed8['toString'](),_0x31b597=await fetch(API_BASE+'/bindings'+(_0x30f54d?'?'+_0x30f54d:''));if(!_0x31b597['ok']){const _0x3c96c6=await _0x31b597['json']()['catch'](()=>({'message':_0x31b597['statusText']}));throw new Error(_0x3c96c6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x31b597['json']();},async 'createBinding'(_0x2ed525){const _0x425364=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ed525)});if(!_0x425364['ok']){const _0x40936a=await _0x425364['json']()['catch'](()=>({'message':_0x425364['statusText']}));throw new Error(_0x40936a['message']||'Failed\x20to\x20create\x20binding');}return await _0x425364['json']();},async 'updateBinding'(_0xe712dd,_0xd8d5cf){const _0x19f15e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe712dd),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd8d5cf)});if(!_0x19f15e['ok']){const _0x5196d2=await _0x19f15e['json']()['catch'](()=>({'message':_0x19f15e['statusText']}));throw new Error(_0x5196d2['message']||'Failed\x20to\x20update\x20binding');}return await _0x19f15e['json']();},async 'deleteBinding'(_0x1131a9){const _0xdae682=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1131a9),{'method':'DELETE'});if(!_0xdae682['ok']){const _0x414292=await _0xdae682['json']()['catch'](()=>({'message':_0xdae682['statusText']}));throw new Error(_0x414292['message']||'Failed\x20to\x20delete\x20binding');}return await _0xdae682['json']();},async 'getRoleDefinitions'(){const _0x4266bc=await fetch(API_BASE+'/roles');if(!_0x4266bc['ok']){const _0x1140bd=await _0x4266bc['json']()['catch'](()=>({'message':_0x4266bc['statusText']}));throw new Error(_0x1140bd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4266bc['json']();},async 'getRoleDefinition'(_0x4d8e0a){const _0x232f9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4d8e0a));if(!_0x232f9a['ok']){const _0x51fd4b=await _0x232f9a['json']()['catch'](()=>({'message':_0x232f9a['statusText']}));throw new Error(_0x51fd4b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x232f9a['json']();},async 'createRoleDefinition'(_0xca8078){const _0x2de0f7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xca8078)});if(!_0x2de0f7['ok']){const _0x26df8e=await _0x2de0f7['json']()['catch'](()=>({'message':_0x2de0f7['statusText']}));throw new Error(_0x26df8e['message']||_0x26df8e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2de0f7['json']();},async 'updateRoleDefinition'(_0x1b6b14,_0x11e0db){const _0x552739=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b6b14),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11e0db)});if(!_0x552739['ok']){const _0x2d466d=await _0x552739['json']()['catch'](()=>({'message':_0x552739['statusText']}));throw new Error(_0x2d466d['message']||_0x2d466d['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x552739['json']();},async 'deleteRoleDefinition'(_0x160638){const _0x47bc1d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x160638),{'method':'DELETE'});if(!_0x47bc1d['ok']){const _0x1e7541=await _0x47bc1d['json']()['catch'](()=>({'message':_0x47bc1d['statusText']}));throw new Error(_0x1e7541['message']||_0x1e7541['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x47bc1d['json']();},async 'getAvailablePermissions'(){const _0x6d7b7d=await fetch(API_BASE+'/roles/available-permissions');if(!_0x6d7b7d['ok']){const _0x49f1ff=await _0x6d7b7d['json']()['catch'](()=>({'message':_0x6d7b7d['statusText']}));throw new Error(_0x49f1ff['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x6d7b7d['json']();},async 'getGitProviderAllowedTeams'(_0x394952){const _0x4816e7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x394952)+'/allowed-teams');if(!_0x4816e7['ok']){const _0x37b8c8=await _0x4816e7['json']()['catch'](()=>({'message':_0x4816e7['statusText']}));throw new Error(_0x37b8c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4816e7['json']();},async 'setGitProviderAllowedTeams'(_0x207871,_0x340aff){const _0x33c986=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x207871)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x340aff})});if(!_0x33c986['ok']){const _0x11795f=await _0x33c986['json']()['catch'](()=>({'message':_0x33c986['statusText']}));throw new Error(_0x11795f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x33c986['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 _0x56806a=toastState['baseBottom'];toastState['toasts']['forEach'](_0x315cd9=>{_0x315cd9['el']['style']['bottom']=_0x56806a+'px';const _0x18ba1e=_0x315cd9['el']['offsetHeight']||toastState['defaultHeight'];_0x56806a+=_0x18ba1e+toastState['gap'];});});}function removeToastById(_0x267e84){const _0x2be903=toastState['toasts']['findIndex'](_0x5d7823=>_0x5d7823['id']===_0x267e84);if(_0x2be903===-0x1)return;const _0x473603=toastState['toasts'][_0x2be903];if(_0x473603['timeoutId'])clearTimeout(_0x473603['timeoutId']);_0x473603['el']['classList']['remove']('show'),setTimeout(()=>_0x473603['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2be903,0x1),repositionAllToasts();}function registerToast(_0x4b0b4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4b0b4e),repositionAllToasts(),_0x4b0b4e['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'(_0x4fbf5a){const _0x1d4f31=new Date(_0x4fbf5a),_0x3b9608=new Date(),_0x32511b=_0x3b9608-_0x1d4f31,_0x293b80=Math['floor'](_0x32511b/0x3e8),_0x20548a=Math['floor'](_0x293b80/0x3c),_0x4f5ea7=Math['floor'](_0x20548a/0x3c),_0x2c154a=Math['floor'](_0x4f5ea7/0x18);if(_0x293b80<0x3c)return'now';if(_0x20548a<0x3c)return _0x20548a+'m\x20ago';if(_0x4f5ea7<0x18)return _0x4f5ea7+'h\x20ago';return _0x2c154a+'d\x20ago';},'getStatusIcon'(_0x152fba){switch(_0x152fba){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3d0b04){switch(_0x3d0b04){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'(_0x1a5f16,_0x560015=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x336c99={};_0x336c99['text/plain']=new Blob([_0x1a5f16],{'type':'text/plain'});_0x560015&&(_0x336c99['text/html']=new Blob([_0x560015],{'type':'text/html'}));const _0x5a8b49=new ClipboardItem(_0x336c99);return await navigator['clipboard']['write']([_0x5a8b49]),!![];}catch(_0x1470e5){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1470e5);}try{const _0x1f7741=_0x360b25=>{_0x360b25['preventDefault'](),_0x360b25['clipboardData']['setData']('text/plain',_0x1a5f16),_0x560015&&_0x360b25['clipboardData']['setData']('text/html',_0x560015);};document['addEventListener']('copy',_0x1f7741);const _0x51a1e4=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f7741);if(_0x51a1e4)return!![];}catch(_0x66c571){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x66c571);}try{const _0x372f90=document['createElement']('textarea');_0x372f90['value']=_0x1a5f16,_0x372f90['style']['position']='fixed',_0x372f90['style']['opacity']='0',_0x372f90['style']['pointerEvents']='none',document['body']['appendChild'](_0x372f90),_0x372f90['select']();const _0x27652d=document['execCommand']('copy');return document['body']['removeChild'](_0x372f90),_0x27652d;}catch(_0x4c80ce){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c80ce),![];}},'showToast'(_0x3f0aad,_0x53c9ab='info'){const _0x393bdb=getNextToastId(),_0x330286=document['createElement']('div');_0x330286['className']='toast\x20toast-'+_0x53c9ab,_0x330286['textContent']=_0x3f0aad,_0x330286['dataset']['toastId']=_0x393bdb,document['body']['appendChild'](_0x330286);const _0x535c27=_0x53c9ab==='error'?0x2710:0xbb8,_0x4b64eb=setTimeout(()=>{removeToastById(_0x393bdb);},_0x535c27),_0x118026={'id':_0x393bdb,'el':_0x330286,'timeoutId':_0x4b64eb};return registerToast(_0x118026),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x330286['classList']['add']('show');});}),_0x393bdb;},'showError'(_0x50b0b6){console['error'](_0x50b0b6);const _0x1ffc41=typeof _0x50b0b6==='string'?_0x50b0b6:_0x50b0b6['message']||'An\x20error\x20occurred';this['showToast'](_0x1ffc41,'error');},'showSuccess'(_0x8686a1){this['showToast'](_0x8686a1,'success');},'capitalize'(_0x1704b3){if(!_0x1704b3)return'';return _0x1704b3['charAt'](0x0)['toUpperCase']()+_0x1704b3['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x19712b){if(_0x19712b===null||_0x19712b===undefined)return'';return String(_0x19712b)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x21f4d9){if(_0x21f4d9===null||_0x21f4d9===undefined)return'';let _0x360f67=this['escapeHtml'](_0x21f4d9);const _0x47c334={'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'},_0x12114c={'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 _0x4de110=0x0;return _0x360f67=_0x360f67['replace'](/\x1b\[([0-9;]*)m/g,(_0x149d14,_0x17236c)=>{if(!_0x17236c||_0x17236c==='0'){const _0x2426d9='</span>'['repeat'](_0x4de110);return _0x4de110=0x0,_0x2426d9;}const _0x40ddf3=_0x17236c['split'](';'),_0x481710=[];for(const _0x361367 of _0x40ddf3){if(_0x361367==='1')_0x481710['push']('font-weight:bold');else{if(_0x361367==='2')_0x481710['push']('opacity:0.7');else{if(_0x361367==='3')_0x481710['push']('font-style:italic');else{if(_0x361367==='4')_0x481710['push']('text-decoration:underline');else{if(_0x361367==='9')_0x481710['push']('text-decoration:line-through');else{if(_0x47c334[_0x361367])_0x481710['push']('color:'+_0x47c334[_0x361367]);else{if(_0x12114c[_0x361367])_0x481710['push']('background-color:'+_0x12114c[_0x361367]);}}}}}}}if(_0x481710['length']>0x0)return _0x4de110++,'<span\x20style=\x22'+_0x481710['join'](';')+'\x22>';return'';}),_0x360f67+='</span>'['repeat'](_0x4de110),_0x360f67=_0x360f67['replace'](/\\u001b\[([0-9;]*)m/g,(_0x36230e,_0x47e479)=>{if(!_0x47e479||_0x47e479==='0')return'';const _0x16f11c=_0x47e479['split'](';'),_0x309922=[];for(const _0x151287 of _0x16f11c){if(_0x151287==='1')_0x309922['push']('font-weight:bold');else{if(_0x47c334[_0x151287])_0x309922['push']('color:'+_0x47c334[_0x151287]);else{if(_0x12114c[_0x151287])_0x309922['push']('background-color:'+_0x12114c[_0x151287]);}}}if(_0x309922['length']>0x0)return'<span\x20style=\x22'+_0x309922['join'](';')+'\x22>';return'';}),_0x360f67;},'showModal'({title:_0x568150,content:_0x2c6eb2,buttons:buttons=[]}){const _0x279f30='\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'](_0x568150)+'</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'+_0x2c6eb2+'\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']((_0x592d6b,_0x2bdbb4)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x592d6b['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x2bdbb4+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x592d6b['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',_0x5f015a=document['createElement']('div');_0x5f015a['id']='utils-modal',_0x5f015a['className']='modal',_0x5f015a['innerHTML']=_0x279f30,document['body']['appendChild'](_0x5f015a);const _0x124b7c=document['getElementById']('utils-modal-close');_0x124b7c&&_0x124b7c['addEventListener']('click',()=>this['hideModal']());const _0x8452e=_0x5f015a['querySelectorAll']('[data-btn-index]');_0x8452e['forEach'](_0x4bb66b=>{const _0xe4cec3=parseInt(_0x4bb66b['dataset']['btnIndex']);buttons[_0xe4cec3]?.['onClick']&&_0x4bb66b['addEventListener']('click',buttons[_0xe4cec3]['onClick']);});const _0x17cfca=document['getElementById']('utils-modal-overlay');_0x17cfca&&_0x17cfca['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x539eed=document['getElementById']('utils-modal');_0x539eed&&_0x539eed['remove']();},'parseKeyValuePairs'(_0x4b74cc){const _0x3cc075={};if(!_0x4b74cc)return _0x3cc075;return _0x4b74cc['split'](/\r?\n/)['map'](_0x3dc8aa=>_0x3dc8aa['trim']())['filter'](Boolean)['forEach'](_0x21b32d=>{const _0x539e27=_0x21b32d['indexOf']('=');if(_0x539e27>0x0){const _0x256993=_0x21b32d['slice'](0x0,_0x539e27)['trim'](),_0x24346f=_0x21b32d['slice'](_0x539e27+0x1)['trim']();if(_0x256993)_0x3cc075[_0x256993]=_0x24346f;}}),_0x3cc075;},'debounce'(_0x3dcf01,_0x46a059=0xfa){let _0x32d49a=null;return(..._0x26fd03)=>{clearTimeout(_0x32d49a),_0x32d49a=setTimeout(()=>_0x3dcf01['apply'](this,_0x26fd03),_0x46a059);};},'formatTimestamp'(_0x12a772){if(!_0x12a772)return'N/A';const _0x32fc19=new Date(_0x12a772);return _0x32fc19['toLocaleDateString']()+'\x20'+_0x32fc19['toLocaleTimeString']();},'getQueryParams'(){const _0x3de2e7=new URLSearchParams(window['location']['search']),_0x4efa00={};for(const [_0x5597d4,_0x477073]of _0x3de2e7){_0x4efa00[_0x5597d4]=_0x477073;}return _0x4efa00;},'formatDuration'(_0x5b5a3d,_0x1105bb){if(!_0x5b5a3d)return'N/A';const _0x4ac1bd=new Date(_0x5b5a3d),_0x7cf79b=_0x1105bb?new Date(_0x1105bb):new Date(),_0x3a5998=_0x7cf79b-_0x4ac1bd;if(_0x3a5998<0x0)return'0s';const _0x43214e=Math['floor'](_0x3a5998/0x3e8),_0x470112=Math['floor'](_0x43214e/0x3c),_0x2d1af2=Math['floor'](_0x470112/0x3c),_0x2bf7b=Math['floor'](_0x2d1af2/0x18);if(_0x43214e<0x3c)return _0x43214e+'s';if(_0x470112<0x3c)return _0x470112+'m\x20'+_0x43214e%0x3c+'s';if(_0x2d1af2<0x18)return _0x2d1af2+'h\x20'+_0x470112%0x3c+'m\x20'+_0x43214e%0x3c+'s';return _0x2bf7b+'d\x20'+_0x2d1af2%0x18+'h\x20'+_0x470112%0x3c+'m';},'renderMarkdown'(_0x32c545,_0x1d2d01={}){if(!_0x32c545)return'';_0x32c545=this['rewriteAttachmentLinks'](_0x32c545,_0x1d2d01),_0x32c545=this['rewriteColorSyntax'](_0x32c545);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x51dcee=new marked['Renderer'](),_0x5e6d2f=_0x51dcee['code']['bind'](_0x51dcee);_0x51dcee['code']=function(_0x399052,_0x53eff8){const _0x184a25=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x184a25&&_0x53eff8)try{const _0xac39e8=_0x184a25['getLanguage'](_0x53eff8)?_0x53eff8:'plaintext',_0x41fe12=_0x184a25['highlight'](_0x399052,{'language':_0xac39e8})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x53eff8+'\x22>'+_0x41fe12+'</code></pre>';}catch(_0x56ac6d){console['error']('Syntax\x20highlighting\x20error:',_0x56ac6d);}return _0x5e6d2f(_0x399052,_0x53eff8);};try{return marked['parse'](_0x32c545,{'renderer':_0x51dcee});}catch(_0x36d323){return console['error']('Markdown\x20parsing\x20error:',_0x36d323),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);}},'rewriteAttachmentLinks'(_0x22b8b9,_0x38091b={}){const _0x242a7a=typeof _0x38091b['resolveAttachmentUrl']==='function'?_0x38091b['resolveAttachmentUrl']:_0x38091b['taskId']?_0x15f8e5=>API_BASE+'/tasks/'+_0x38091b['taskId']+'/attachments/'+encodeURIComponent(_0x15f8e5):null;if(!_0x242a7a)return _0x22b8b9;return String(_0x22b8b9)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3fc4a2,_0x3f62e4)=>{const _0x54815c=String(_0x3f62e4||'')['trim']();if(!_0x54815c)return _0x3fc4a2;let _0x291e4f=_0x54815c;try{_0x291e4f=decodeURIComponent(_0x54815c);}catch{}const _0x38a44b=_0x242a7a(_0x291e4f);if(!_0x38a44b)return _0x3fc4a2;return']('+_0x38a44b+')';});},'rewriteColorSyntax'(_0x15d645){if(!_0x15d645)return _0x15d645;return String(_0x15d645)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1299fa,_0x40ae4e,_0x13cbb1)=>{const _0x423990=this['rewriteColorSyntax'](_0x13cbb1);return'<span\x20style=\x22color:\x20'+_0x40ae4e+'\x22>'+_0x423990+'</span>';});},'renderMarkdownFallback'(_0x2673d7,_0x5f37cb={}){if(!_0x2673d7)return'';_0x2673d7=_0x2673d7['replace'](/\r\n/g,'\x0a'),_0x2673d7=_0x2673d7['replace'](/\r/g,'\x0a'),_0x2673d7=this['rewriteAttachmentLinks'](_0x2673d7,_0x5f37cb);let _0x50549d=this['escapeHtml'](_0x2673d7);return _0x50549d=_0x50549d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x50549d=_0x50549d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x50549d=_0x50549d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x50549d=_0x50549d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x50549d=_0x50549d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x50549d=_0x50549d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x50549d=_0x50549d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x50549d=_0x50549d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x50549d=_0x50549d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x50549d=_0x50549d['replace'](/\n\n/g,'</p><p>'),_0x50549d=_0x50549d['replace'](/\n/g,'<br>'),'<p>'+_0x50549d+'</p>';}};export class CustomSelect{constructor(_0x48ee6c,_0x59f10e={}){this['nativeSelect']=_0x48ee6c,this['options']=_0x59f10e,this['isOpen']=![],this['selectedValue']=_0x48ee6c['value']||'',this['searchable']=_0x59f10e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x619a1c=document['createElement']('div');_0x619a1c['className']='custom-select';const _0x22328a=document['createElement']('div');_0x22328a['className']='custom-select-trigger',_0x22328a['setAttribute']('tabindex','0'),_0x22328a['setAttribute']('role','button'),_0x22328a['setAttribute']('aria-haspopup','listbox');const _0xecde51=document['createElement']('span');_0xecde51['className']='custom-select-trigger-text';const _0x8c454f=document['createElement']('span');_0x8c454f['className']='custom-select-arrow',_0x8c454f['textContent']='▼',_0x22328a['appendChild'](_0xecde51),_0x22328a['appendChild'](_0x8c454f);const _0x296b51=document['createElement']('div');_0x296b51['className']='custom-select-dropdown',_0x296b51['setAttribute']('role','listbox');if(this['searchable']){const _0x3c6b61=document['createElement']('div');_0x3c6b61['className']='custom-select-search';const _0x5ccaff=document['createElement']('input');_0x5ccaff['type']='text',_0x5ccaff['className']='custom-select-search-input',_0x5ccaff['placeholder']='Type\x20to\x20search...',_0x5ccaff['setAttribute']('aria-label','Search\x20options'),_0x5ccaff['addEventListener']('input',_0x1ba500=>{this['searchQuery']=_0x1ba500['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x5ccaff['addEventListener']('keydown',_0x3fa750=>{if(_0x3fa750['key']==='Escape')_0x3fa750['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3fa750['key']==='Enter'){_0x3fa750['preventDefault'](),_0x3fa750['stopPropagation']();const _0xe4dd64=_0x296b51['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xe4dd64){const _0x29e27f=_0xe4dd64['getAttribute']('data-value');this['select'](_0x29e27f);}}}}),_0x3c6b61['appendChild'](_0x5ccaff),_0x296b51['appendChild'](_0x3c6b61),this['searchInput']=_0x5ccaff;}const _0x45c560=document['createElement']('div');_0x45c560['className']='custom-select-options',_0x296b51['appendChild'](_0x45c560),_0x619a1c['appendChild'](_0x22328a),_0x619a1c['appendChild'](_0x296b51),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x619a1c,this['nativeSelect']),this['wrapper']=_0x619a1c,this['trigger']=_0x22328a,this['triggerText']=_0xecde51,this['dropdown']=_0x296b51,this['optionsContainer']=_0x45c560,_0x22328a['addEventListener']('click',()=>this['toggle']()),_0x22328a['addEventListener']('keydown',_0x35958b=>this['handleKeydown'](_0x35958b)),document['addEventListener']('click',_0x48ebcb=>{!_0x619a1c['contains'](_0x48ebcb['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x447fce=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x447fce['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x40f978=new MutationObserver(()=>{this['updateDisabledState']();});_0x40f978['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5efd8a=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5efd8a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x17e506=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x17e506),this['trigger']['setAttribute']('aria-disabled',_0x17e506?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x17e506?'-1':'0'),_0x17e506&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x405981=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x506713=_0x405981['filter'](_0x4eed54=>!_0x4eed54['disabled']&&!_0x4eed54['hidden']);_0x405981['forEach']((_0x1571fc,_0x287dfb)=>{const _0x2ff793=document['createElement']('div');_0x2ff793['className']='custom-select-option',_0x2ff793['textContent']=_0x1571fc['textContent'],_0x2ff793['setAttribute']('data-value',_0x1571fc['value']),_0x2ff793['setAttribute']('data-index',_0x287dfb),_0x2ff793['setAttribute']('role','option'),_0x1571fc['disabled']?_0x2ff793['classList']['add']('disabled'):_0x2ff793['addEventListener']('click',()=>this['select'](_0x1571fc['value'])),_0x1571fc['value']===this['selectedValue']&&_0x2ff793['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ff793),this['allOptions']['push']({'element':_0x2ff793,'text':_0x1571fc['textContent']['toLowerCase'](),'value':_0x1571fc['value'],'disabled':_0x1571fc['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4bdd7f=this['searchInput']['parentElement'];_0x506713['length']>0x3?_0x4bdd7f['style']['display']='':_0x4bdd7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4c2ccd=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1341cc=>{if(!_0x4c2ccd||_0x1341cc['disabled'])_0x1341cc['element']['style']['display']='';else{const _0x269041=_0x1341cc['text']['includes'](_0x4c2ccd);_0x1341cc['element']['style']['display']=_0x269041?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x18142b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x18142b,this['nativeSelect']['value']=_0x18142b;const _0x3cbde6=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3cbde6),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x56b3f8=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x56b3f8&&(this['triggerText']['textContent']=_0x56b3f8['textContent'],_0x56b3f8['disabled']||_0x56b3f8['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3449f3=>{_0x3449f3['getAttribute']('data-value')===this['selectedValue']?_0x3449f3['classList']['add']('selected'):_0x3449f3['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 _0x15ee6f=window['getComputedStyle'](this['dropdown']);if(_0x15ee6f['position']==='fixed'){const _0x298d81=this['trigger']['getBoundingClientRect'](),_0x990ba6=parseInt(_0x15ee6f['maxHeight'])||0xc8,_0x1b3c32=window['innerHeight'],_0x2c4960=_0x1b3c32-_0x298d81['bottom'],_0x3cd32f=_0x298d81['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0xa167e0;_0x2c4960<_0x990ba6&&_0x3cd32f>_0x2c4960?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x1b3c32-_0x298d81['top']+'px',_0xa167e0=Math['min'](_0x990ba6,_0x3cd32f-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x298d81['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0xa167e0=Math['min'](_0x990ba6,_0x2c4960-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px');if(this['optionsContainer']){let _0x3854bd=_0xa167e0;if(this['searchInput']){const _0x3faf4e=this['searchInput']['parentElement'];_0x3faf4e&&(_0x3854bd-=_0x3faf4e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3854bd)+'px';}this['dropdown']['style']['left']=_0x298d81['left']+'px',this['dropdown']['style']['width']=_0x298d81['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x30145b=this['searchInput']['parentElement'];_0x30145b&&_0x30145b['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'](_0x5545c9){if(this['nativeSelect']['disabled'])return;if(_0x5545c9['key']==='Enter'||_0x5545c9['key']==='\x20')_0x5545c9['preventDefault'](),this['toggle']();else _0x5545c9['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x521455='\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',_0x521455),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1e7dc3=document['getElementById']('confirm-dialog-close'),_0x5e3baa=document['getElementById']('confirm-dialog-cancel'),_0x7dd75b=document['getElementById']('confirm-dialog-confirm'),_0x3340c1=this['_modal']['querySelector']('.modal-overlay');_0x1e7dc3['addEventListener']('click',()=>this['_resolve'](![])),_0x5e3baa['addEventListener']('click',()=>this['_resolve'](![])),_0x7dd75b['addEventListener']('click',()=>this['_resolve'](!![])),_0x3340c1['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x480088=>{if(_0x480088['key']==='Escape')_0x480088['preventDefault'](),this['_resolve'](![]);else _0x480088['key']==='Enter'&&(_0x480088['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x24d78f,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x95ca6=>{this['_resolvePromise']=_0x95ca6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x24d78f;const _0x31bb7b=document['getElementById']('confirm-dialog-cancel'),_0x57a6ad=document['getElementById']('confirm-dialog-confirm');_0x31bb7b['textContent']=cancelText,_0x57a6ad['textContent']=confirmText,_0x57a6ad['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x57a6ad['focus']();});},'_resolve'(_0x84acfe){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x84acfe),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x5b96be,_0x4fb385={}){this['container']=_0x5b96be,this['options']={'placeholder':_0x4fb385['placeholder']||'Type\x20to\x20search...','maxItems':_0x4fb385['maxItems']||0x64,'loadItems':_0x4fb385['loadItems']||(async()=>[]),'renderItem':_0x4fb385['renderItem']||(_0x1cfd17=>({'primary':String(_0x1cfd17),'secondary':''})),'onSelect':_0x4fb385['onSelect']||(()=>{}),'filterItems':_0x4fb385['filterItems']||null,'getItemValue':_0x4fb385['getItemValue']||(_0x17c371=>_0x17c371),'sortItems':_0x4fb385['sortItems']||null,'debounceMs':_0x4fb385['debounceMs']||0xc8,'minCharsForSearch':_0x4fb385['minCharsForSearch']||0x0,'emptyMessage':_0x4fb385['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4fb385['loadingMessage']||'Loading...','preload':_0x4fb385['preload']!==![],'searchMode':_0x4fb385['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',_0x23d698=>this['onBlur'](_0x23d698)),this['input']['addEventListener']('input',_0x41ec6e=>this['onInput'](_0x41ec6e)),this['input']['addEventListener']('keydown',_0x4d79e8=>this['onKeydown'](_0x4d79e8)),this['clearBtn']['addEventListener']('mousedown',_0x3c7e01=>{_0x3c7e01['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x237302=>{_0x237302['preventDefault']();}),document['addEventListener']('click',_0x5e5784=>{!this['wrapper']['contains'](_0x5e5784['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(_0x329e49){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x329e49);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x1c8f36){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x163037){const _0x275aee=_0x163037['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x275aee);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x275aee):this['loadAndShow'](_0x275aee);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x3019e0){switch(_0x3019e0['key']){case'ArrowDown':_0x3019e0['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x3019e0['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x3019e0['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x3019e0['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x58b974){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x39e16b=this['selectedIndex']+_0x58b974;if(_0x39e16b>=0x0&&_0x39e16b<this['filteredItems']['length']){this['selectedIndex']=_0x39e16b,this['updateSelectionHighlight']();const _0x5afc56=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5afc56[this['selectedIndex']]&&_0x5afc56[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4fc5ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4fc5ce['forEach']((_0x434062,_0x2a615d)=>{_0x434062['classList']['toggle']('keyboard-selected',_0x2a615d===this['selectedIndex']);});}async['loadAndShow'](_0x1a7185){this['showLoading']();try{const _0x5585a8=await this['options']['loadItems'](_0x1a7185);if(this['options']['searchMode']==='server'){let _0x1be257=_0x5585a8;this['options']['sortItems']&&(_0x1be257=this['options']['sortItems']([..._0x5585a8]));this['filteredItems']=_0x1be257;const _0x52734c=this['filteredItems']['length']>=this['options']['maxItems'];_0x52734c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x52734c),this['open']();}else this['allItems']=_0x5585a8,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x1a7185);}catch(_0x59550a){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x59550a),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x29af52){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x29af52):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2d41a8=this['filteredItems']['length']>=this['options']['maxItems'];_0x2d41a8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2d41a8),this['open']();}['renderItems'](_0x577eec){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']((_0x4e32ce,_0x257fee)=>{const _0x32dae5=document['createElement']('div');_0x32dae5['className']='autocomplete-select-item',_0x32dae5['setAttribute']('role','option'),_0x32dae5['setAttribute']('data-index',_0x257fee);const _0x5e374c=this['options']['renderItem'](_0x4e32ce);let _0x340316='';_0x5e374c['icon']&&(_0x340316='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5e374c['iconClass']||'')+'\x22>'+_0x5e374c['icon']+'</span>'),_0x32dae5['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x340316+'\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'](_0x5e374c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5e374c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5e374c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x32dae5['addEventListener']('click',()=>{this['selectItem'](_0x4e32ce);}),_0x32dae5['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x257fee,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x32dae5);}),_0x577eec?(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'](_0x232760){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x232760)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4a0e89){this['selectedItem']=_0x4a0e89;const _0x3d59e8=this['options']['renderItem'](_0x4a0e89);this['input']['value']=_0x3d59e8['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4a0e89);}['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'](_0x156c33){if(_0x156c33){this['selectedItem']=_0x156c33;const _0xbb7821=this['options']['renderItem'](_0x156c33);this['input']['value']=_0xbb7821['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x313e54){this['allItems']=_0x313e54,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'](_0x35ff8f){this['input']['placeholder']=_0x35ff8f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x2f6543=null){const _0x5e62b8=document['getElementById']('admin-menu-container'),_0x37422a=document['getElementById']('admin-menu-btn'),_0x2509ee=document['getElementById']('admin-menu');if(!_0x5e62b8||!_0x37422a||!_0x2509ee)return;try{!_0x2f6543&&(_0x2f6543=await API['getCurrentUser']());if(_0x2f6543){const _0x7538f2=_0x2f6543['hasAllPermissions']||_0x2f6543['hasEnvironmentsManage']||_0x2f6543['canCreateUsers']||_0x2f6543['canManageTeams']||_0x2f6543['hasEnvironmentBindings'];if(!_0x7538f2)return;_0x5e62b8['hidden']=![];if(!_0x2f6543['hasAllPermissions']){const _0xde7f8=_0x2509ee['querySelectorAll']('.admin-menu-item');_0xde7f8['forEach'](_0xebdb54=>{const _0x3ad07b=_0xebdb54['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3ad07b==='Users'&&!_0x2f6543['canCreateUsers']&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Skills'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Settings'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Health'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Git\x20History'&&(_0xebdb54['hidden']=!![]);});}_0x37422a['addEventListener']('click',_0x529fd7=>{_0x529fd7['stopPropagation']();const _0x4b3214=document['getElementById']('actions-menu');if(_0x4b3214)_0x4b3214['hidden']=!![];_0x2509ee['hidden']=!_0x2509ee['hidden'];}),document['addEventListener']('click',_0x481c19=>{!_0x2509ee['hidden']&&!_0x37422a['contains'](_0x481c19['target'])&&!_0x2509ee['contains'](_0x481c19['target'])&&(_0x2509ee['hidden']=!![]);}),document['addEventListener']('keydown',_0x6e5145=>{_0x6e5145['key']==='Escape'&&!_0x2509ee['hidden']&&(_0x2509ee['hidden']=!![]);});const _0x53fac5=document['getElementById']('server-health-btn');_0x53fac5&&_0x53fac5['addEventListener']('click',async()=>{_0x2509ee['hidden']=!![];const {openServerHealthModal:_0x103323}=await import('./server-health.js');_0x103323();});}}catch(_0x3275ca){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x3275ca['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 _0x401d74=window['location']['pathname'],_0x3331e7=_0x401d74['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3331e7)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3331e7[0x1]),_0x3331e7[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x30ecc9={}){const _0x3bbedc=new URLSearchParams();_0x30ecc9['userId']&&_0x3bbedc['set']('userId',String(_0x30ecc9['userId']));_0x30ecc9['automation']&&_0x3bbedc['set']('automation',String(_0x30ecc9['automation']));const _0x30b5bf=API_BASE+'/tasks/stats'+(_0x3bbedc['toString']()?'?'+_0x3bbedc['toString']():''),_0x43b6e5=await fetch(_0x30b5bf);if(!_0x43b6e5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x43b6e5['statusText']);return await _0x43b6e5['json']();},async 'getTasks'(_0x4d6877={}){const _0x4e5ed8=new URLSearchParams();_0x4d6877['status']&&_0x4e5ed8['set']('status',String(_0x4d6877['status']));_0x4d6877['environment']&&_0x4e5ed8['set']('environment',String(_0x4d6877['environment']));_0x4d6877['automation']&&_0x4e5ed8['set']('automation',String(_0x4d6877['automation']));if(_0x4d6877['include']){const _0x8c02a7=Array['isArray'](_0x4d6877['include'])?_0x4d6877['include']['join'](','):String(_0x4d6877['include']);_0x8c02a7&&_0x4e5ed8['set']('include',_0x8c02a7);}_0x4d6877['filter']&&_0x4e5ed8['set']('filter',String(_0x4d6877['filter']));_0x4d6877['page']&&_0x4e5ed8['set']('page',String(_0x4d6877['page']));_0x4d6877['limit']&&_0x4e5ed8['set']('limit',String(_0x4d6877['limit']));_0x4d6877['userId']&&_0x4e5ed8['set']('userId',String(_0x4d6877['userId']));_0x4d6877['search']&&_0x4e5ed8['set']('search',String(_0x4d6877['search']));_0x4d6877['includeChildTasks']&&_0x4e5ed8['set']('includeChildTasks','true');const _0x28b341=API_BASE+'/tasks'+(_0x4e5ed8['toString']()?'?'+_0x4e5ed8['toString']():''),_0x919856=await fetch(_0x28b341);if(!_0x919856['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x919856['statusText']);return await _0x919856['json']();},async 'getAutomations'(_0x5788f4={}){const _0x94d707=new URLSearchParams();_0x5788f4['environment']&&_0x94d707['set']('environment',String(_0x5788f4['environment']));const _0x40054b=await fetch(API_BASE+'/api/automations'+(_0x94d707['toString']()?'?'+_0x94d707['toString']():''));if(!_0x40054b['ok']){const _0x91f58e=await _0x40054b['json']()['catch'](()=>({}));throw new Error(_0x91f58e['message']||_0x91f58e['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x40054b['statusText']);}return await _0x40054b['json']();},async 'getAutomation'(_0xfd10a6){const _0x4b0b4a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xfd10a6));if(!_0x4b0b4a['ok']){const _0x4b532e=await _0x4b0b4a['json']()['catch'](()=>({}));throw new Error(_0x4b532e['message']||_0x4b532e['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4b0b4a['statusText']);}return await _0x4b0b4a['json']();},async 'createAutomation'(_0x19aec0){const _0x51d548=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19aec0||{})});if(!_0x51d548['ok']){const _0x14c73f=await _0x51d548['json']()['catch'](()=>({}));throw new Error(_0x14c73f['message']||_0x14c73f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x51d548['statusText']);}return await _0x51d548['json']();},async 'updateAutomation'(_0x22a80,_0x19893f){const _0x41930c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22a80),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19893f||{})});if(!_0x41930c['ok']){const _0x29afba=await _0x41930c['json']()['catch'](()=>({}));throw new Error(_0x29afba['message']||_0x29afba['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x41930c['statusText']);}return await _0x41930c['json']();},async 'deleteAutomation'(_0x22199f){const _0xed8919=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22199f),{'method':'DELETE'});if(!_0xed8919['ok']){const _0x3c05a3=await _0xed8919['json']()['catch'](()=>({}));throw new Error(_0x3c05a3['message']||_0x3c05a3['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xed8919['statusText']);}return await _0xed8919['json']();},async 'triggerAutomation'(_0x1244dc){const _0xa21a1e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1244dc)+'/trigger',{'method':'POST'});if(!_0xa21a1e['ok']){const _0x409359=await _0xa21a1e['json']()['catch'](()=>({}));throw new Error(_0x409359['message']||_0x409359['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa21a1e['statusText']);}return await _0xa21a1e['json']();},async 'setAutomationEnabled'(_0x33f183,_0x5c5bd4){const _0x14716e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x33f183)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5bd4})});if(!_0x14716e['ok']){const _0x5ab271=await _0x14716e['json']()['catch'](()=>({}));throw new Error(_0x5ab271['message']||_0x5ab271['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x14716e['statusText']);}return await _0x14716e['json']();},async 'getAutomationHistory'(_0x4c76f0,_0x2f7bc7=0x32){const _0x1c4476=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4c76f0)+'/history?limit='+encodeURIComponent(String(_0x2f7bc7)));if(!_0x1c4476['ok']){const _0x4957fc=await _0x1c4476['json']()['catch'](()=>({}));throw new Error(_0x4957fc['message']||_0x4957fc['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1c4476['statusText']);}return await _0x1c4476['json']();},async 'getTask'(_0x13cb28,_0x527dd9={}){const _0x183d92=new URLSearchParams();if(_0x527dd9['include']){const _0x5a8cf5=Array['isArray'](_0x527dd9['include'])?_0x527dd9['include']['join'](','):String(_0x527dd9['include']);if(_0x5a8cf5)_0x183d92['set']('include',_0x5a8cf5);}const _0xbe00a7=await fetch(API_BASE+'/tasks/'+_0x13cb28+(_0x183d92['toString']()?'?'+_0x183d92['toString']():''));if(!_0xbe00a7['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbe00a7['statusText']);return await _0xbe00a7['json']();},async 'getTaskResults'(_0xf95641){const _0x222cc7=await fetch(API_BASE+'/tasks/'+_0xf95641+'/results');if(!_0x222cc7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x222cc7['statusText']);return await _0x222cc7['json']();},async 'getTaskPatches'(_0x344153){const _0x45941e=await fetch(API_BASE+'/tasks/'+_0x344153+'/patches');if(!_0x45941e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x45941e['statusText']);return await _0x45941e['json']();},async 'getTaskAttachments'(_0x1c7209){const _0x52f293=await fetch(API_BASE+'/tasks/'+_0x1c7209+'/attachments');if(!_0x52f293['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x52f293['statusText']);return await _0x52f293['json']();},async 'uploadAttachments'(_0x3f436f,_0x161e9d){const _0x106cee=new FormData();for(const _0x14b118 of _0x161e9d){_0x106cee['append']('attachments',_0x14b118);}const _0x14b70d=await fetch(API_BASE+'/tasks/'+_0x3f436f+'/attachments',{'method':'POST','body':_0x106cee});if(!_0x14b70d['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x14b70d['statusText']);return await _0x14b70d['json']();},async 'isAINameGenerationAvailable'(){try{const _0x461b28=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x461b28['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x461b28['json']();}catch(_0x12f8ec){return{'available':![],'reason':_0x12f8ec['message']};}},async 'generateTaskName'(_0x48a98f){try{const _0x46cf9f=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x48a98f})});return await _0x46cf9f['json']();}catch(_0x1a55f2){return{'success':![],'error':_0x1a55f2['message']};}},async 'createTask'(_0x2e6382){let _0x2e591a,_0x43a000={};if(_0x2e6382['files']&&_0x2e6382['files']['length']>0x0){const _0x4d6c5f=new FormData();for(const [_0x4cb424,_0x3ee5d0]of Object['entries'](_0x2e6382)){if(_0x4cb424!=='files'){if(_0x3ee5d0==null)continue;typeof _0x3ee5d0==='object'?_0x4d6c5f['append'](_0x4cb424,JSON['stringify'](_0x3ee5d0)):_0x4d6c5f['append'](_0x4cb424,String(_0x3ee5d0));}}for(const _0x2204bb of _0x2e6382['files']){_0x4d6c5f['append']('attachments',_0x2204bb);}_0x2e591a=_0x4d6c5f;}else _0x43a000['Content-Type']='application/json',_0x2e591a=JSON['stringify'](_0x2e6382);const _0x2747ac=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x43a000,'body':_0x2e591a});if(!_0x2747ac['ok']){const _0x5d3f10=await _0x2747ac['json'](),_0x1fb22c=new Error(_0x5d3f10['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2747ac['statusText']),{message:_0x542f74,..._0x3f5e38}=_0x5d3f10;Object['assign'](_0x1fb22c,_0x3f5e38);throw _0x1fb22c;}return await _0x2747ac['json']();},async 'createTestTask'(_0x4711aa){const _0x370825=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4711aa)});if(!_0x370825['ok']){const _0x1165e3=await _0x370825['json']();throw new Error(_0x1165e3['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x370825['statusText']);}return await _0x370825['json']();},async 'createEphemeralTest'(_0xf4da41){const _0x190ae3=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf4da41)});if(!_0x190ae3['ok']){const _0x4e240e=await _0x190ae3['json']();throw new Error(_0x4e240e['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x190ae3['statusText']);}return await _0x190ae3['json']();},async 'createDeployTask'(_0x2780bc){const _0x274ece=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2780bc)});if(!_0x274ece['ok']){const _0xf2b3df=await _0x274ece['json']();throw new Error(_0xf2b3df['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x274ece['statusText']);}return await _0x274ece['json']();},async 'getEnvironments'(){const _0x511cec=await fetch(API_BASE+'/environments');if(!_0x511cec['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x511cec['statusText']);return await _0x511cec['json']();},async 'getEnvironment'(_0x43d7c7){const _0x58a095=await fetch(API_BASE+'/environments/'+_0x43d7c7);if(!_0x58a095['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x58a095['statusText']);return await _0x58a095['json']();},async 'getEnvironmentRepoHistory'(_0x3e812d,_0x342147,_0x5b1215={}){if(!_0x3e812d||!_0x342147)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x52a2b3=new URLSearchParams();if(_0x5b1215['limit'])_0x52a2b3['set']('limit',String(_0x5b1215['limit']));if(_0x5b1215['offset'])_0x52a2b3['set']('offset',String(_0x5b1215['offset']));if(_0x5b1215['search'])_0x52a2b3['set']('search',String(_0x5b1215['search']));if(_0x5b1215['branch'])_0x52a2b3['set']('branch',String(_0x5b1215['branch']));const _0x2eb33a=API_BASE+'/environments/'+encodeURIComponent(_0x3e812d)+'/repos/'+encodeURIComponent(_0x342147)+'/git/history',_0x35172b=await fetch(''+_0x2eb33a+(_0x52a2b3['toString']()?'?'+_0x52a2b3['toString']():''));if(!_0x35172b['ok']){const _0x2034ab=await _0x35172b['json']()['catch'](()=>({}));throw new Error(_0x2034ab['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x35172b['statusText']);}return await _0x35172b['json']();},async 'getEnvironmentRepoCommit'(_0x57728e,_0x2b6901,_0x38ba85){if(!_0x57728e||!_0x2b6901||!_0x38ba85)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35b0e2=API_BASE+'/environments/'+encodeURIComponent(_0x57728e)+'/repos/'+encodeURIComponent(_0x2b6901)+'/git/commits/'+encodeURIComponent(_0x38ba85),_0x2cba52=await fetch(_0x35b0e2);if(!_0x2cba52['ok']){const _0x32f8d9=await _0x2cba52['json']()['catch'](()=>({}));throw new Error(_0x32f8d9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2cba52['statusText']);}return await _0x2cba52['json']();},async 'getEnvironmentRepoBranches'(_0xa250a,_0x4de421){if(!_0xa250a||!_0x4de421)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9b10c7=API_BASE+'/environments/'+encodeURIComponent(_0xa250a)+'/repos/'+encodeURIComponent(_0x4de421)+'/git/branches',_0x428c18=await fetch(_0x9b10c7);if(!_0x428c18['ok']){const _0xd87e0b=await _0x428c18['json']()['catch'](()=>({}));throw new Error(_0xd87e0b['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x428c18['statusText']);}return await _0x428c18['json']();},async 'revertEnvironmentRepoCommit'(_0x1c86db,_0x1ca144,_0x254ac1,_0x437452={}){if(!_0x1c86db||!_0x1ca144||!_0x254ac1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x57da9d=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c86db)+'/repos/'+encodeURIComponent(_0x1ca144)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x254ac1,..._0x437452})});if(!_0x57da9d['ok']){const _0x8cd442=await _0x57da9d['json']()['catch'](()=>({}));throw new Error(_0x8cd442['message']||_0x8cd442['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x57da9d['statusText']);}return await _0x57da9d['json']();},async 'getTemplates'(_0x58adda={}){const _0x3eca3f=new URLSearchParams();if(_0x58adda['include']){const _0x5cde59=Array['isArray'](_0x58adda['include'])?_0x58adda['include']['join'](','):String(_0x58adda['include']);if(_0x5cde59)_0x3eca3f['set']('include',_0x5cde59);}const _0x46cc59=await fetch(API_BASE+'/templates'+(_0x3eca3f['toString']()?'?'+_0x3eca3f['toString']():''));if(!_0x46cc59['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x46cc59['statusText']);return await _0x46cc59['json']();},async 'getTemplatesForEnvironment'(_0x595fec,_0x47f113={}){if(!_0x595fec)throw new Error('Environment\x20name\x20is\x20required');const _0x1cd1d0=new URLSearchParams();if(_0x47f113['include']){const _0x510912=Array['isArray'](_0x47f113['include'])?_0x47f113['include']['join'](','):String(_0x47f113['include']);if(_0x510912)_0x1cd1d0['set']('include',_0x510912);}const _0x24fbcd=await fetch(API_BASE+'/templates/'+_0x595fec+(_0x1cd1d0['toString']()?'?'+_0x1cd1d0['toString']():''));if(!_0x24fbcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x595fec+':\x20'+_0x24fbcd['statusText']);return await _0x24fbcd['json']();},async 'getTemplate'(_0x5bdb9e,_0x2ba073,_0x28b03={}){if(!_0x5bdb9e||!_0x2ba073)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x177629=new URLSearchParams();if(_0x28b03['include']){const _0x35b51a=Array['isArray'](_0x28b03['include'])?_0x28b03['include']['join'](','):String(_0x28b03['include']);if(_0x35b51a)_0x177629['set']('include',_0x35b51a);}const _0x1ddf05=await fetch(API_BASE+'/templates/'+_0x5bdb9e+'/'+_0x2ba073+(_0x177629['toString']()?'?'+_0x177629['toString']():''));if(!_0x1ddf05['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x1ddf05['statusText']);return await _0x1ddf05['json']();},async 'getTaskLogs'(_0x4c7441,_0x3a546c={}){if(!_0x4c7441)throw new Error('Task\x20ID\x20is\x20required');const _0x4d18ef=new URLSearchParams();_0x3a546c['tail']&&_0x4d18ef['set']('tail',String(_0x3a546c['tail']));const _0x2a1765=await fetch(API_BASE+'/tasks/'+_0x4c7441+'/logs'+(_0x4d18ef['toString']()?'?'+_0x4d18ef['toString']():''));if(!_0x2a1765['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1765['statusText']);return await _0x2a1765['text']();},async 'getContainers'(){const _0x3faf24=await fetch(API_BASE+'/containers');if(!_0x3faf24['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3faf24['statusText']);return await _0x3faf24['json']();},async 'getContainer'(_0x47d6e5){const _0x51ff3e=await fetch(API_BASE+'/containers/'+_0x47d6e5);if(!_0x51ff3e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x51ff3e['statusText']);return await _0x51ff3e['json']();},async 'startInteractiveContainer'(_0x3de75f){const _0x3007db=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3de75f)});if(!_0x3007db['ok']){const _0x54cde1=await _0x3007db['json']()['catch'](()=>({}));throw new Error(_0x54cde1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x3007db['statusText']);}return await _0x3007db['json']();},async 'stopContainer'(_0x2461bb){const _0xfa3573=await fetch(API_BASE+'/containers/'+_0x2461bb,{'method':'DELETE'});if(!_0xfa3573['ok']){const _0x4d5c25=await _0xfa3573['json']()['catch'](()=>({}));throw new Error(_0x4d5c25['message']||'Failed\x20to\x20stop\x20container:\x20'+_0xfa3573['statusText']);}return await _0xfa3573['json']();},async 'stopTask'(_0x1e479e){if(!_0x1e479e)throw new Error('Task\x20ID\x20is\x20required');const _0x1c3aff=await fetch(API_BASE+'/tasks/'+_0x1e479e+'/stop',{'method':'POST'});if(!_0x1c3aff['ok']){const _0x541117=await _0x1c3aff['json']()['catch'](()=>({}));throw new Error(_0x541117['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1c3aff['statusText']);}return await _0x1c3aff['json']();},async 'interruptTask'(_0x7cb22){if(!_0x7cb22)throw new Error('Task\x20ID\x20is\x20required');const _0x5e0fbb=await fetch(API_BASE+'/tasks/'+_0x7cb22+'/interrupt',{'method':'POST'});if(!_0x5e0fbb['ok']){const _0x3ad308=await _0x5e0fbb['json']()['catch'](()=>({}));throw new Error(_0x3ad308['error']||_0x3ad308['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5e0fbb['statusText']);}return await _0x5e0fbb['json']();},async 'startTask'(_0xb6e905){if(!_0xb6e905)throw new Error('Task\x20ID\x20is\x20required');const _0x45ae19=await fetch(API_BASE+'/tasks/'+_0xb6e905+'/start',{'method':'POST'});if(!_0x45ae19['ok']){const _0x2e0686=await _0x45ae19['json']()['catch'](()=>({}));throw new Error(_0x2e0686['error']||'Failed\x20to\x20start\x20task:\x20'+_0x45ae19['statusText']);}return await _0x45ae19['json']();},async 'deleteTask'(_0x1cbabf){if(!_0x1cbabf)throw new Error('Task\x20ID\x20is\x20required');const _0x17bdba=await fetch(API_BASE+'/tasks/'+_0x1cbabf,{'method':'DELETE'});if(!_0x17bdba['ok']){const _0x21b7cd=await _0x17bdba['json']()['catch'](()=>({}));throw new Error(_0x21b7cd['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x17bdba['statusText']);}return await _0x17bdba['json']();},async 'refreshTasksFromDisk'(){const _0x2b5347=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b5347['ok']){const _0x2d24dd=await _0x2b5347['json']()['catch'](()=>({}));throw new Error(_0x2d24dd['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b5347['statusText']);}return await _0x2b5347['json']();},async 'approveTask'(_0x107678,_0x54323a={}){if(!_0x107678)throw new Error('Task\x20ID\x20is\x20required');const _0x571adc={'commit_message':_0x54323a['commit_message']||'','pull':_0x54323a['pull']??![],'push':_0x54323a['push']??![]};_0x54323a['new_branch']&&(_0x571adc['new_branch']=_0x54323a['new_branch']);const _0x545173=await fetch(API_BASE+'/tasks/'+_0x107678+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x571adc)});if(!_0x545173['ok']){const _0x3f92cc=await _0x545173['json']()['catch'](()=>({}));let _0x1770de=_0x3f92cc['error']||_0x3f92cc['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x545173['statusText'];if(_0x3f92cc['results']&&Array['isArray'](_0x3f92cc['results'])){const _0x4f3f32=_0x3f92cc['results']['filter'](_0x35fd45=>!_0x35fd45['success']&&_0x35fd45['error']);_0x4f3f32['length']>0x0&&(_0x1770de=_0x4f3f32[0x0]['error']);}throw new Error(_0x1770de);}return await _0x545173['json']();},async 'getPullRequestInfo'(_0x229322){if(!_0x229322)throw new Error('Task\x20ID\x20is\x20required');const _0x23facf=await fetch(API_BASE+'/tasks/'+_0x229322+'/pull-request-info');if(!_0x23facf['ok']){const _0x94113f=await _0x23facf['json']()['catch'](()=>({}));throw new Error(_0x94113f['error']||_0x94113f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x23facf['statusText']);}return await _0x23facf['json']();},async 'createPullRequests'(_0x193713,_0xeba1){if(!_0x193713)throw new Error('Task\x20ID\x20is\x20required');if(!_0xeba1||!Array['isArray'](_0xeba1))throw new Error('repos\x20array\x20is\x20required');const _0x253a3f=await fetch(API_BASE+'/tasks/'+_0x193713+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0xeba1})});if(!_0x253a3f['ok']){const _0xb4d4be=await _0x253a3f['json']()['catch'](()=>({}));let _0x25a0da=_0xb4d4be['error']||_0xb4d4be['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x253a3f['statusText'];if(_0xb4d4be['results']&&Array['isArray'](_0xb4d4be['results'])){const _0x59624d=_0xb4d4be['results']['filter'](_0x24bec4=>!_0x24bec4['success']&&_0x24bec4['error']);_0x59624d['length']>0x0&&(_0x25a0da=_0x59624d[0x0]['error']);}throw new Error(_0x25a0da);}return await _0x253a3f['json']();},async 'syncRepos'(_0xe06b87){if(!_0xe06b87)throw new Error('Task\x20ID\x20is\x20required');const _0x4b7bc6=await fetch(API_BASE+'/tasks/'+_0xe06b87+'/sync-repos',{'method':'POST'});if(!_0x4b7bc6['ok']){const _0x4a52de=await _0x4b7bc6['json']()['catch'](()=>({}));throw new Error(_0x4a52de['error']||_0x4a52de['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4b7bc6['statusText']);}return await _0x4b7bc6['json']();},async 'getIbmiSyncInfo'(_0x3dcdba){if(!_0x3dcdba)throw new Error('Task\x20ID\x20is\x20required');const _0x52c7a6=await fetch(API_BASE+'/tasks/'+_0x3dcdba+'/ibmi-sync-info');if(!_0x52c7a6['ok']){const _0x420d6a=await _0x52c7a6['json']()['catch'](()=>({}));throw new Error(_0x420d6a['error']||_0x420d6a['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x52c7a6['json']();},async 'syncToIbmi'(_0x19b282,_0x32c5f9){if(!_0x19b282)throw new Error('Task\x20ID\x20is\x20required');const _0x160d9c=await fetch(API_BASE+'/tasks/'+_0x19b282+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x32c5f9})});if(!_0x160d9c['ok']){const _0x2e0f70=await _0x160d9c['json']()['catch'](()=>({}));throw new Error(_0x2e0f70['error']||_0x2e0f70['message']||'Sync\x20failed');}return await _0x160d9c['json']();},async 'getIbmiSyncLog'(_0x5196b7){if(!_0x5196b7)throw new Error('Task\x20ID\x20is\x20required');const _0x140433=await fetch(API_BASE+'/tasks/'+_0x5196b7+'/ibmi-sync-log');if(!_0x140433['ok']){const _0xe26a66=await _0x140433['json']()['catch'](()=>({}));throw new Error(_0xe26a66['error']||_0xe26a66['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x140433['json']();},async 'pullChanges'(_0x4b0d5f){if(!_0x4b0d5f)throw new Error('Task\x20ID\x20is\x20required');const _0x4c6bb9=await fetch(API_BASE+'/tasks/'+_0x4b0d5f+'/pull-changes',{'method':'POST'});if(!_0x4c6bb9['ok']){const _0x9c4178=await _0x4c6bb9['json']()['catch'](()=>({}));throw new Error(_0x9c4178['error']||_0x9c4178['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4c6bb9['statusText']);}return await _0x4c6bb9['json']();},async 'readFile'(_0xba7c67,_0x235169){if(!_0xba7c67)throw new Error('Task\x20ID\x20is\x20required');if(!_0x235169)throw new Error('File\x20path\x20is\x20required');const _0x11c96b=await fetch(API_BASE+'/tasks/'+_0xba7c67+'/files?path='+encodeURIComponent(_0x235169));if(!_0x11c96b['ok']){const _0x3c2e24=await _0x11c96b['json']()['catch'](()=>({}));throw new Error(_0x3c2e24['error']||_0x3c2e24['message']||'Failed\x20to\x20read\x20file:\x20'+_0x11c96b['statusText']);}return await _0x11c96b['json']();},async 'writeFile'(_0x336fac,_0x3e3c62,_0x14fe83){if(!_0x336fac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e3c62)throw new Error('File\x20path\x20is\x20required');if(_0x14fe83===undefined)throw new Error('Content\x20is\x20required');const _0x307c13=await fetch(API_BASE+'/tasks/'+_0x336fac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3e3c62,'content':_0x14fe83})});if(!_0x307c13['ok']){const _0x2dbc77=await _0x307c13['json']()['catch'](()=>({}));throw new Error(_0x2dbc77['error']||_0x2dbc77['message']||'Failed\x20to\x20write\x20file:\x20'+_0x307c13['statusText']);}return await _0x307c13['json']();},async 'discardFile'(_0x4b54d,_0x256266,_0x59f8db){if(!_0x4b54d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x256266)throw new Error('File\x20path\x20is\x20required');if(!_0x59f8db)throw new Error('Repository\x20path\x20is\x20required');const _0x4c6847=await fetch(API_BASE+'/tasks/'+_0x4b54d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x256266,'repoPath':_0x59f8db})});if(!_0x4c6847['ok']){const _0x22fa5a=await _0x4c6847['json']()['catch'](()=>({}));throw new Error(_0x22fa5a['error']||_0x22fa5a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4c6847['statusText']);}return await _0x4c6847['json']();},async 'followUpTask'(_0x30e8d2,_0x502580={}){if(!_0x30e8d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x502580['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x593e71,_0xe85af4={};if(_0x502580['files']&&_0x502580['files']['length']>0x0){const _0x1b462f=new FormData();_0x1b462f['append']('instructions',_0x502580['instructions']);for(const _0x7634d9 of _0x502580['files']){_0x1b462f['append']('attachments',_0x7634d9);}_0x593e71=_0x1b462f;}else _0xe85af4['Content-Type']='application/json',_0x593e71=JSON['stringify']({'instructions':_0x502580['instructions']});const _0x17a994=await fetch(API_BASE+'/tasks/'+_0x30e8d2+'/follow-up',{'method':'POST','headers':_0xe85af4,'body':_0x593e71});if(!_0x17a994['ok']){const _0x559c3c=await _0x17a994['json']()['catch'](()=>({}));throw new Error(_0x559c3c['error']||_0x559c3c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x17a994['statusText']);}return await _0x17a994['json']();},async 'getTaskRewindPoints'(_0x2a48ba){if(!_0x2a48ba)throw new Error('Task\x20ID\x20is\x20required');const _0x4297fd=await fetch(API_BASE+'/tasks/'+_0x2a48ba+'/rewind-points');if(!_0x4297fd['ok']){const _0x493ca1=await _0x4297fd['json']()['catch'](()=>({}));throw new Error(_0x493ca1['error']||_0x493ca1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4297fd['statusText']);}return await _0x4297fd['json']();},async 'rewindTask'(_0x1dbef4,_0x250775={}){if(!_0x1dbef4)throw new Error('Task\x20ID\x20is\x20required');const _0x1e910d=Number['isInteger'](_0x250775['targetFollowUpCount'])?_0x250775['targetFollowUpCount']:0x0,_0x21dee5={'targetFollowUpCount':_0x1e910d};typeof _0x250775['instructions']==='string'&&_0x250775['instructions']['trim']()&&(_0x21dee5['instructions']=_0x250775['instructions']['trim']());typeof _0x250775['rewindFiles']==='boolean'&&(_0x21dee5['rewindFiles']=_0x250775['rewindFiles']);const _0x2b8741=await fetch(API_BASE+'/tasks/'+_0x1dbef4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21dee5)});if(!_0x2b8741['ok']){const _0x3ccfbf=await _0x2b8741['json']()['catch'](()=>({}));throw new Error(_0x3ccfbf['error']||_0x3ccfbf['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b8741['statusText']);}return await _0x2b8741['json']();},async 'login'(_0xc0b3d9,_0x5baa0b){const _0x56fed4=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc0b3d9,'password':_0x5baa0b})});if(!_0x56fed4['ok']){const _0x45e704=await _0x56fed4['json']();throw new Error(_0x45e704['message']||'Login\x20failed');}return await _0x56fed4['json']();},async 'logout'(){const _0x4ea8da=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ea8da['ok']){const _0xa5de1a=await _0x4ea8da['json']();throw new Error(_0xa5de1a['message']||'Logout\x20failed');}return await _0x4ea8da['json']();},async 'getCurrentUser'(){const _0x1cfaa5=await fetch(API_BASE+'/auth/me');if(!_0x1cfaa5['ok'])throw new Error('Not\x20authenticated');const _0x14bbf4=await _0x1cfaa5['json']();return _0x14bbf4['user'];},async 'getRolesInfo'(){const _0x34158d=await fetch(API_BASE+'/users/roles');if(!_0x34158d['ok']){const _0x589ecc=await _0x34158d['json']();throw new Error(_0x589ecc['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x34158d['json']();},async 'getUsers'(){const _0x2c8a0c=await fetch(API_BASE+'/users');if(!_0x2c8a0c['ok']){const _0x1baf98=await _0x2c8a0c['json']();throw new Error(_0x1baf98['message']||'Failed\x20to\x20get\x20users');}return await _0x2c8a0c['json']();},async 'getUser'(_0x498a78){const _0x2e9f4c=await fetch(API_BASE+'/users/'+_0x498a78);if(!_0x2e9f4c['ok']){const _0x548ca3=await _0x2e9f4c['json']();throw new Error(_0x548ca3['message']||'Failed\x20to\x20get\x20user');}return await _0x2e9f4c['json']();},async 'createUser'(_0x306cc2){const _0x121e36=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306cc2)});if(!_0x121e36['ok']){const _0x4c740a=await _0x121e36['json']();throw new Error(_0x4c740a['message']||'Failed\x20to\x20create\x20user');}return await _0x121e36['json']();},async 'updateUser'(_0x4bd271,_0x2d3cca){const _0x2b596f=await fetch(API_BASE+'/users/'+_0x4bd271,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3cca)});if(!_0x2b596f['ok']){const _0x304df9=await _0x2b596f['json']();throw new Error(_0x304df9['message']||'Failed\x20to\x20update\x20user');}return await _0x2b596f['json']();},async 'deleteUser'(_0x3f5138){const _0x29e747=await fetch(API_BASE+'/users/'+_0x3f5138,{'method':'DELETE'});if(!_0x29e747['ok']){const _0x43645d=await _0x29e747['json']();throw new Error(_0x43645d['message']||'Failed\x20to\x20delete\x20user');}return await _0x29e747['json']();},async 'stopAllContainers'(){const _0x20a7b5=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3f5697=await _0x20a7b5['json']()['catch'](()=>({}));if(!_0x20a7b5['ok'])throw new Error(_0x3f5697['message']||_0x3f5697['error']||'Failed\x20to\x20stop\x20containers');return _0x3f5697;},async 'removeStoppedContainers'(){const _0x4582ac=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x295d1b=await _0x4582ac['json']()['catch'](()=>({}));if(!_0x4582ac['ok'])throw new Error(_0x295d1b['message']||_0x295d1b['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x295d1b;},async 'pruneDockerResources'(){const _0xad02=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x20580b=await _0xad02['json']()['catch'](()=>({}));if(!_0xad02['ok'])throw new Error(_0x20580b['message']||_0x20580b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x20580b;},async 'createPasswordToken'(_0x36f395,_0x473ffb='setup',_0x1908e5=![]){const _0x28b6c8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x36f395,'type':_0x473ffb,'sendEmail':_0x1908e5})});if(!_0x28b6c8['ok']){const _0x5badcf=await _0x28b6c8['json']();throw new Error(_0x5badcf['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x28b6c8['json']();},async 'getEmailConfig'(){const _0x397a01=await fetch(API_BASE+'/password/email-config');if(!_0x397a01['ok']){const _0x288d92=await _0x397a01['json']();throw new Error(_0x288d92['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x397a01['json']();},async 'updateTaskName'(_0x3a78e7,_0x5d16f4){const _0x495416=await fetch(API_BASE+'/tasks/'+_0x3a78e7,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5d16f4})});if(!_0x495416['ok']){const _0x24e161=await _0x495416['json']();throw new Error(_0x24e161['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x495416['json']();},async 'pinTask'(_0x45ab9c,_0x45fc0d,_0x5cd3ca=null){if(!_0x45ab9c)throw new Error('Task\x20ID\x20is\x20required');const _0x667030={'pinned':_0x45fc0d};_0x5cd3ca&&_0x5cd3ca['length']>0x0&&(_0x667030['additionalTaskIds']=_0x5cd3ca);const _0x3889e8=await fetch(API_BASE+'/tasks/'+_0x45ab9c+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x667030)});if(!_0x3889e8['ok']){const _0x2fe44b=await _0x3889e8['json']();throw new Error(_0x2fe44b['error']||'Failed\x20to\x20pin\x20task');}return await _0x3889e8['json']();},async 'setTaskWinner'(_0xd61897,_0x1489d6,_0x1e8106=[]){if(!_0xd61897)throw new Error('Task\x20ID\x20is\x20required');const _0x2d2ed0=await fetch(API_BASE+'/tasks/'+_0xd61897+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1489d6,'siblings':_0x1e8106})});if(!_0x2d2ed0['ok']){const _0x38eaff=await _0x2d2ed0['json']();throw new Error(_0x38eaff['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2d2ed0['json']();},async 'setTaskLoser'(_0x3a83d9,_0x5a0445){if(!_0x3a83d9)throw new Error('Task\x20ID\x20is\x20required');const _0x1f7b4c=await fetch(API_BASE+'/tasks/'+_0x3a83d9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a0445})});if(!_0x1f7b4c['ok']){const _0x75e256=await _0x1f7b4c['json']();throw new Error(_0x75e256['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1f7b4c['json']();},async 'createTaskGroup'(_0x1ca620){const _0x43ef8c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ca620)});if(!_0x43ef8c['ok']){const _0x341388=await _0x43ef8c['json']();throw new Error(_0x341388['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x43ef8c['json']();},async 'getTaskGroups'(_0x4a14b2={}){const _0x3d73f3=new URLSearchParams();if(_0x4a14b2['userId'])_0x3d73f3['set']('userId',String(_0x4a14b2['userId']));if(_0x4a14b2['status'])_0x3d73f3['set']('status',String(_0x4a14b2['status']));if(_0x4a14b2['limit'])_0x3d73f3['set']('limit',String(_0x4a14b2['limit']));const _0x255da8=API_BASE+'/tasks/groups'+(_0x3d73f3['toString']()?'?'+_0x3d73f3['toString']():''),_0x1b65f3=await fetch(_0x255da8);if(!_0x1b65f3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x1b65f3['json']();},async 'getTaskGroup'(_0x120791){const _0x37a55c=await fetch(API_BASE+'/tasks/groups/'+_0x120791);if(!_0x37a55c['ok']){const _0x283f13=await _0x37a55c['json']();throw new Error(_0x283f13['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x37a55c['json']();},async 'updateTaskGroup'(_0x3c6903,_0xca4b4c,_0x5483fb){const _0x4a8c68=await fetch(API_BASE+'/tasks/'+_0x3c6903+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xca4b4c,'groupIndex':_0x5483fb})});if(!_0x4a8c68['ok']){const _0x2654ed=await _0x4a8c68['json']();throw new Error(_0x2654ed['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x4a8c68['json']();},async 'removeTaskFromGroup'(_0x24645a){return this['updateTaskGroup'](_0x24645a,null,null);},async 'deleteTaskGroup'(_0x3f4e06,_0x2c5402=![]){const _0x421aa6=_0x2c5402?'?deleteTasks=true':'',_0x333d7b=await fetch(API_BASE+'/tasks/groups/'+_0x3f4e06+_0x421aa6,{'method':'DELETE'});if(!_0x333d7b['ok']){const _0x3dca5b=await _0x333d7b['json']();throw new Error(_0x3dca5b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x21278e,_0x318f05){const _0x190ab9=await fetch(API_BASE+'/tasks/groups/'+_0x21278e+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x318f05})});if(!_0x190ab9['ok']){const _0x38881d=await _0x190ab9['json']();throw new Error(_0x38881d['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x190ab9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x236d2b){if(!_0x236d2b)throw new Error('Task\x20ID\x20is\x20required');const _0xab050a=await fetch(API_BASE+'/tasks/'+_0x236d2b+'/comments');if(!_0xab050a['ok']){const _0xfcabd3=await _0xab050a['json']()['catch'](()=>({}));throw new Error(_0xfcabd3['error']||'Failed\x20to\x20get\x20comments');}return await _0xab050a['json']();},async 'addComment'(_0x5d7557,_0x5c548b){if(!_0x5d7557)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5c548b)throw new Error('Comment\x20content\x20is\x20required');const _0x1b6ee7=await fetch(API_BASE+'/tasks/'+_0x5d7557+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5c548b})});if(!_0x1b6ee7['ok']){const _0x40437e=await _0x1b6ee7['json']()['catch'](()=>({}));throw new Error(_0x40437e['error']||'Failed\x20to\x20add\x20comment');}return await _0x1b6ee7['json']();},async 'updateComment'(_0x1d7412,_0x3b73f1,_0x1f1d5f){if(!_0x1d7412)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3b73f1)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1d5f)throw new Error('Comment\x20content\x20is\x20required');const _0x904fa3=await fetch(API_BASE+'/tasks/'+_0x1d7412+'/comments/'+_0x3b73f1,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1d5f})});if(!_0x904fa3['ok']){const _0x5a2994=await _0x904fa3['json']()['catch'](()=>({}));throw new Error(_0x5a2994['error']||'Failed\x20to\x20update\x20comment');}return await _0x904fa3['json']();},async 'deleteComment'(_0x272e15,_0x58135d){if(!_0x272e15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58135d)throw new Error('Comment\x20ID\x20is\x20required');const _0x2d2be8=await fetch(API_BASE+'/tasks/'+_0x272e15+'/comments/'+_0x58135d,{'method':'DELETE'});if(!_0x2d2be8['ok']){const _0x11de2d=await _0x2d2be8['json']()['catch'](()=>({}));throw new Error(_0x11de2d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2d2be8['json']();},async 'createObjective'(_0x1458ce){const _0x5ca8d9={'objective':!![],'name':_0x1458ce['name']||'','environment':_0x1458ce['environment']||null,'agents':_0x1458ce['agents']||[],'branches':_0x1458ce['branches']||{},'isPinned':_0x1458ce['isPinned']||![],'parentObjectiveId':_0x1458ce['parentObjectiveId']||null,'env_vars':_0x1458ce['envVars']||{},'parameters':{'instructions':_0x1458ce['instructions']||''},'files':_0x1458ce['files']||[],'jira':_0x1458ce['jira']||null};return this['createTask'](_0x5ca8d9);},async 'updateObjective'(_0xc1ba19,_0x302ed9,_0x89c69f=[],_0x4da93a=[]){let _0x58fbd9,_0x9ea3b1={};const _0x151afa={..._0x302ed9};_0x4da93a&&_0x4da93a['length']>0x0&&(_0x151afa['removeAttachments']=_0x4da93a);if(_0x89c69f&&_0x89c69f['length']>0x0){const _0x5e7d1e=new FormData();for(const [_0x47271c,_0x5126da]of Object['entries'](_0x151afa)){if(_0x5126da==null)continue;typeof _0x5126da==='object'?_0x5e7d1e['append'](_0x47271c,JSON['stringify'](_0x5126da)):_0x5e7d1e['append'](_0x47271c,String(_0x5126da));}for(const _0xfc1345 of _0x89c69f){_0x5e7d1e['append']('attachments',_0xfc1345);}_0x58fbd9=_0x5e7d1e;}else _0x9ea3b1['Content-Type']='application/json',_0x58fbd9=JSON['stringify'](_0x151afa);const _0x26a22f=await fetch(API_BASE+'/tasks/'+_0xc1ba19,{'method':'PATCH','headers':_0x9ea3b1,'body':_0x58fbd9});if(!_0x26a22f['ok']){const _0x2fb40b=await _0x26a22f['json']();throw new Error(_0x2fb40b['error']||'Failed\x20to\x20update\x20objective');}return await _0x26a22f['json']();},async 'deleteObjective'(_0xef74b6){return this['deleteTask'](_0xef74b6);},async 'launchObjective'(_0x15f4a5,_0x174005={}){const _0x13bb0f=await fetch(API_BASE+'/tasks/'+_0x15f4a5+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x174005)});if(!_0x13bb0f['ok']){const _0xc1259e=await _0x13bb0f['json']();throw new Error(_0xc1259e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x13bb0f['json']();},async 'getObjectiveAttachments'(_0x1306d){return this['getTaskAttachments'](_0x1306d);},async 'createJudgeTask'({environment:_0x50194f,judgeAgent:_0x4b1613,groupId:_0x1247d8,taskIds:_0x2ebffd,judgeCustomInstructions:_0x2a5916,isPinned:_0x259acf}){const _0x3d18f6=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x50194f,'judgeAgent':_0x4b1613,'groupId':_0x1247d8,'taskIds':_0x2ebffd,'judgeCustomInstructions':_0x2a5916,'isPinned':_0x259acf})});if(!_0x3d18f6['ok']){const _0x3fa384=await _0x3d18f6['json']();throw new Error(_0x3fa384['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3d18f6['json']();},async 'getJudgeTasks'(_0x3330ee){const _0x2717fb=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3330ee));if(!_0x2717fb['ok']){const _0x46ecd1=await _0x2717fb['json']();throw new Error(_0x46ecd1['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2717fb['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1de0be,_0x45b2f6,_0x3a3d66=''){const _0x120bcc=await fetch(API_BASE+'/tasks/'+_0x1de0be+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x45b2f6,'customPreamble':_0x3a3d66})});if(!_0x120bcc['ok']){const _0x22a9de=await _0x120bcc['json']();throw new Error(_0x22a9de['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x120bcc['json']();},async 'getJiraConfig'(){const _0x189883=await fetch(API_BASE+'/jira/config');if(!_0x189883['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x189883['json']();},async 'getJiraIssue'(_0x5e1490){const _0x24d459=await fetch(API_BASE+'/jira/issues/'+_0x5e1490);if(!_0x24d459['ok']){const _0x5f469a=await _0x24d459['json']()['catch'](()=>({}));throw new Error(_0x5f469a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x24d459['statusText']);}return await _0x24d459['json']();},async 'searchJiraIssues'(_0xd8d8f9,_0x5f04c2=0x14){const _0x27d9ce=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xd8d8f9,'maxResults':_0x5f04c2})});if(!_0x27d9ce['ok']){const _0x392c21=await _0x27d9ce['json']()['catch'](()=>({}));throw new Error(_0x392c21['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x27d9ce['statusText']);}return await _0x27d9ce['json']();},async 'postJiraComment'(_0xc3c754,_0x13515f){const _0x5ccad2=await fetch(API_BASE+'/jira/issues/'+_0xc3c754+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x13515f})});if(!_0x5ccad2['ok']){const _0x1f8604=await _0x5ccad2['json']()['catch'](()=>({}));throw new Error(_0x1f8604['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5ccad2['statusText']);}return await _0x5ccad2['json']();},async 'getJiraComments'(_0x39d58f){const _0x192e31=await fetch(API_BASE+'/jira/issues/'+_0x39d58f+'/comments');if(!_0x192e31['ok']){const _0x51394a=await _0x192e31['json']()['catch'](()=>({}));throw new Error(_0x51394a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x192e31['statusText']);}return await _0x192e31['json']();},async 'promptParameter'({environment:_0x5b2b45,command:_0x45b74d,parser:parser='json'}){const _0x202f0c=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5b2b45,'command':_0x45b74d,'parser':parser})});if(!_0x202f0c['ok']){const _0x28da7f=await _0x202f0c['json']()['catch'](()=>({}));throw new Error(_0x28da7f['message']||_0x28da7f['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x202f0c['statusText']);}return await _0x202f0c['json']();},async 'promptParameterStream'(_0x3b1708,_0x4500f7){const _0x295282=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1708)});if(!_0x295282['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x295282['statusText']);const _0x4f1e25=_0x295282['body']['getReader'](),_0x2610c8=new TextDecoder();let _0x175475='';return new Promise((_0x50f936,_0x1826e1)=>{const _0xa65dab=async()=>{try{const {done:_0x54d320,value:_0x3cc664}=await _0x4f1e25['read']();if(_0x54d320)return;_0x175475+=_0x2610c8['decode'](_0x3cc664,{'stream':!![]});const _0x2d7027=_0x175475['split']('\x0a\x0a');_0x175475=_0x2d7027['pop']()||'';for(const _0x236257 of _0x2d7027){if(!_0x236257['trim']())continue;const _0x1cdf1=_0x236257['split']('\x0a');let _0x44f5f6='message',_0x29269e='';for(const _0x302f07 of _0x1cdf1){if(_0x302f07['startsWith']('event:'))_0x44f5f6=_0x302f07['substring'](0x6)['trim']();else _0x302f07['startsWith']('data:')&&(_0x29269e=_0x302f07['substring'](0x5)['trim']());}if(!_0x29269e)continue;try{const _0x29084e=JSON['parse'](_0x29269e);if(_0x44f5f6==='progress'&&_0x4500f7)_0x4500f7(_0x29084e['stage'],_0x29084e['message']);else{if(_0x44f5f6==='result'){_0x50f936(_0x29084e);return;}else{if(_0x44f5f6==='error'){let _0x2828f3=_0x29084e['message']||_0x29084e['error']||'Prompt\x20command\x20failed';_0x29084e['rawOutput']&&(_0x2828f3+='\x0a\x0aRaw\x20output:\x0a'+_0x29084e['rawOutput']);_0x1826e1(new Error(_0x2828f3));return;}}}}catch(_0x1c7429){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1c7429),console['error']('Event\x20type:',_0x44f5f6),console['error']('Event\x20data:',_0x29269e),console['error']('First\x20200\x20chars:',_0x29269e['substring'](0x0,0xc8)),_0x1826e1(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1c7429['message']+'\x0a\x0aData:\x20'+_0x29269e['substring'](0x0,0x1f4)));return;}}_0xa65dab();}catch(_0xfa7a29){_0x1826e1(_0xfa7a29);}};_0xa65dab();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x53e726){const _0x56855a=await fetch(''+API_BASE+_0x53e726);if(!_0x56855a['ok']){const _0x1de4c1=await _0x56855a['json']()['catch'](()=>({'error':_0x56855a['statusText']})),_0x472898=new Error(_0x1de4c1['error']||_0x1de4c1['message']||_0x56855a['statusText']);if(_0x1de4c1['detail']!==undefined)_0x472898['detail']=_0x1de4c1['detail'];throw _0x472898;}return await _0x56855a['json']();},async 'post'(_0x40019f,_0x1a80d0){const _0x4d8fc5=await fetch(''+API_BASE+_0x40019f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a80d0)});if(!_0x4d8fc5['ok']){const _0x3f326e=await _0x4d8fc5['json']()['catch'](()=>({'error':_0x4d8fc5['statusText']})),_0x4bb8ab=new Error(_0x3f326e['error']||_0x3f326e['message']||_0x4d8fc5['statusText']);if(_0x3f326e['detail']!==undefined)_0x4bb8ab['detail']=_0x3f326e['detail'];throw _0x4bb8ab;}return await _0x4d8fc5['json']();},async 'put'(_0x4f367c,_0xe605f1){const _0x246815=await fetch(''+API_BASE+_0x4f367c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe605f1)});if(!_0x246815['ok']){const _0x5aefc6=await _0x246815['json']()['catch'](()=>({'error':_0x246815['statusText']})),_0x3c29e1=new Error(_0x5aefc6['error']||_0x5aefc6['message']||_0x246815['statusText']);if(_0x5aefc6['detail']!==undefined)_0x3c29e1['detail']=_0x5aefc6['detail'];throw _0x3c29e1;}return await _0x246815['json']();},async 'delete'(_0x2845c8,_0x981b04){const _0x3c5cee={'method':'DELETE'};_0x981b04&&(_0x3c5cee['headers']={'Content-Type':'application/json'},_0x3c5cee['body']=JSON['stringify'](_0x981b04));const _0x3afff2=await fetch(''+API_BASE+_0x2845c8,_0x3c5cee);if(!_0x3afff2['ok']){const _0x3e7359=await _0x3afff2['json']()['catch'](()=>({'error':_0x3afff2['statusText']})),_0x35ff9e=new Error(_0x3e7359['error']||_0x3e7359['message']||_0x3afff2['statusText']);if(_0x3e7359['detail']!==undefined)_0x35ff9e['detail']=_0x3e7359['detail'];throw _0x35ff9e;}return await _0x3afff2['json']();},async 'getSkills'(){const _0x3dbd45=await fetch(API_BASE+'/skills');if(!_0x3dbd45['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3dbd45['statusText']);return await _0x3dbd45['json']();},async 'getSkill'(_0x35d106){const _0x1c50fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35d106));if(!_0x1c50fa['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c50fa['statusText']);return await _0x1c50fa['json']();},async 'createSkill'(_0x36fd96){const _0xbabd42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36fd96)});if(!_0xbabd42['ok']){const _0x66d64f=await _0xbabd42['json']()['catch'](()=>({'error':_0xbabd42['statusText']})),_0x5db475=new Error(_0x66d64f['error']||_0x66d64f['message']||_0xbabd42['statusText']);if(_0x66d64f['detail']!==undefined)_0x5db475['detail']=_0x66d64f['detail'];throw _0x5db475;}return await _0xbabd42['json']();},async 'updateSkill'(_0x2926b7,_0x1ac343){const _0x39b593=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2926b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ac343)});if(!_0x39b593['ok']){const _0x5d6996=await _0x39b593['json']()['catch'](()=>({'error':_0x39b593['statusText']})),_0x2e4db9=new Error(_0x5d6996['error']||_0x5d6996['message']||_0x39b593['statusText']);if(_0x5d6996['detail']!==undefined)_0x2e4db9['detail']=_0x5d6996['detail'];throw _0x2e4db9;}return await _0x39b593['json']();},async 'deleteSkill'(_0x311f39){const _0x3bafb0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x311f39),{'method':'DELETE'});if(!_0x3bafb0['ok']){const _0x4a9879=await _0x3bafb0['json']()['catch'](()=>({'error':_0x3bafb0['statusText']})),_0x11162c=new Error(_0x4a9879['error']||_0x4a9879['message']||_0x3bafb0['statusText']);if(_0x4a9879['detail']!==undefined)_0x11162c['detail']=_0x4a9879['detail'];throw _0x11162c;}return await _0x3bafb0['json']();},async 'getSkillFile'(_0x5137ba,_0x5c56d1){const _0x5a5f53=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5137ba)+'/files/'+_0x5c56d1);if(!_0x5a5f53['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a5f53['statusText']);return await _0x5a5f53['json']();},async 'saveSkillFile'(_0x4389ee,_0x31cbfa,_0x5534c1){const _0x483eb9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4389ee)+'/files/'+_0x31cbfa,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5534c1})});if(!_0x483eb9['ok']){const _0x2b18d1=await _0x483eb9['json']()['catch'](()=>({'error':_0x483eb9['statusText']})),_0x2ca648=new Error(_0x2b18d1['error']||_0x2b18d1['message']||_0x483eb9['statusText']);if(_0x2b18d1['detail']!==undefined)_0x2ca648['detail']=_0x2b18d1['detail'];throw _0x2ca648;}return await _0x483eb9['json']();},async 'deleteSkillFile'(_0x1d5476,_0x3c7d20){const _0x4e3fe8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d5476)+'/files/'+_0x3c7d20,{'method':'DELETE'});if(!_0x4e3fe8['ok']){const _0x666d13=await _0x4e3fe8['json']()['catch'](()=>({'error':_0x4e3fe8['statusText']})),_0x1197a0=new Error(_0x666d13['error']||_0x666d13['message']||_0x4e3fe8['statusText']);if(_0x666d13['detail']!==undefined)_0x1197a0['detail']=_0x666d13['detail'];throw _0x1197a0;}return await _0x4e3fe8['json']();},async 'pullSkills'(){const _0x486e2f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x486e2f['ok']){const _0x3786d9=await _0x486e2f['json']()['catch'](()=>({'error':_0x486e2f['statusText']})),_0x52bcc1=new Error(_0x3786d9['error']||_0x3786d9['message']||_0x486e2f['statusText']);if(_0x3786d9['detail']!==undefined)_0x52bcc1['detail']=_0x3786d9['detail'];throw _0x52bcc1;}return await _0x486e2f['json']();},async 'commitSkills'(_0x29bb03,_0x1be5e4={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1be5e4,_0x3cef6c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x29bb03,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3cef6c['ok']){const _0x5e1615=await _0x3cef6c['json']()['catch'](()=>({'error':_0x3cef6c['statusText']})),_0x358d26=new Error(_0x5e1615['error']||_0x5e1615['message']||_0x3cef6c['statusText']);if(_0x5e1615['detail']!==undefined)_0x358d26['detail']=_0x5e1615['detail'];throw _0x358d26;}return await _0x3cef6c['json']();},async 'discardSkillsChanges'(){const _0x2283ff=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2283ff['ok']){const _0x556f7e=await _0x2283ff['json']()['catch'](()=>({'error':_0x2283ff['statusText']})),_0x152241=new Error(_0x556f7e['error']||_0x556f7e['message']||_0x2283ff['statusText']);if(_0x556f7e['detail']!==undefined)_0x152241['detail']=_0x556f7e['detail'];throw _0x152241;}return await _0x2283ff['json']();},async 'getSkillCatalog'(){const _0xffc12b=await fetch(API_BASE+'/external-skills/catalog');if(!_0xffc12b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xffc12b['statusText']);return await _0xffc12b['json']();},async 'getImportedSkillsRegistry'(){const _0xea8b23=await fetch(API_BASE+'/external-skills/registry');if(!_0xea8b23['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0xea8b23['statusText']);return await _0xea8b23['json']();},async 'importCatalogSkill'(_0x282a5e){const _0x3ff27b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x282a5e})});if(!_0x3ff27b['ok']){const _0x5bbe62=await _0x3ff27b['json']()['catch'](()=>({'error':_0x3ff27b['statusText']})),_0x2a694e=new Error(_0x5bbe62['error']||_0x5bbe62['message']||_0x3ff27b['statusText']);if(_0x5bbe62['detail']!==undefined)_0x2a694e['detail']=_0x5bbe62['detail'];throw _0x2a694e;}return await _0x3ff27b['json']();},async 'importSkillFromGit'(_0x839e88,_0x226980,_0xe8436='main',_0x47b53d=null){const _0x5430e4=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x839e88,'skillPath':_0x226980,'branch':_0xe8436,'skillId':_0x47b53d})});if(!_0x5430e4['ok']){const _0x538082=await _0x5430e4['json']()['catch'](()=>({'error':_0x5430e4['statusText']})),_0x7223e0=new Error(_0x538082['error']||_0x538082['message']||_0x5430e4['statusText']);if(_0x538082['detail']!==undefined)_0x7223e0['detail']=_0x538082['detail'];throw _0x7223e0;}return await _0x5430e4['json']();},async 'probeMarketplace'(_0x14e087,_0x5e151a='main'){const _0x275708=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14e087,'branch':_0x5e151a})});if(!_0x275708['ok']){const _0x45aeba=await _0x275708['json']()['catch'](()=>({'error':_0x275708['statusText']})),_0x122850=new Error(_0x45aeba['error']||_0x45aeba['message']||_0x275708['statusText']);if(_0x45aeba['detail']!==undefined)_0x122850['detail']=_0x45aeba['detail'];throw _0x122850;}return await _0x275708['json']();},async 'importMarketplaceBundle'(_0x3d68f1,_0x1fbb95,_0xaf2eaa,_0x301dd2=null){const _0xf076c1=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3d68f1,'branch':_0x1fbb95,'bundleId':_0xaf2eaa,'selectedSkills':_0x301dd2})});if(!_0xf076c1['ok']){const _0x1ae624=await _0xf076c1['json']()['catch'](()=>({'error':_0xf076c1['statusText']})),_0x5f06b4=new Error(_0x1ae624['error']||_0x1ae624['message']||_0xf076c1['statusText']);if(_0x1ae624['detail']!==undefined)_0x5f06b4['detail']=_0x1ae624['detail'];throw _0x5f06b4;}return await _0xf076c1['json']();},async 'importSkillFromFolder'(_0x3cac93,_0x43d726=null){const _0x494fce=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3cac93,'skillId':_0x43d726})});if(!_0x494fce['ok']){const _0x50c8f1=await _0x494fce['json']()['catch'](()=>({'error':_0x494fce['statusText']})),_0x2634fb=new Error(_0x50c8f1['error']||_0x50c8f1['message']||_0x494fce['statusText']);if(_0x50c8f1['detail']!==undefined)_0x2634fb['detail']=_0x50c8f1['detail'];throw _0x2634fb;}return await _0x494fce['json']();},async 'importSkillFromNpm'(_0x2f0610,_0x4621e9='latest',_0x15a074=null,_0x5b7808=null){const _0x4f55d9=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f0610,'version':_0x4621e9,'skillId':_0x15a074,'registry':_0x5b7808})});if(!_0x4f55d9['ok']){const _0x523496=await _0x4f55d9['json']()['catch'](()=>({'error':_0x4f55d9['statusText']})),_0x41321e=new Error(_0x523496['error']||_0x523496['message']||_0x4f55d9['statusText']);if(_0x523496['detail']!==undefined)_0x41321e['detail']=_0x523496['detail'];throw _0x41321e;}return await _0x4f55d9['json']();},async 'checkSkillUpdates'(_0x53c6bc){const _0x4bbfa3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x53c6bc)+'/check-updates',{'method':'POST'});if(!_0x4bbfa3['ok']){const _0x1a0739=await _0x4bbfa3['json']()['catch'](()=>({'error':_0x4bbfa3['statusText']})),_0x479d25=new Error(_0x1a0739['error']||_0x1a0739['message']||_0x4bbfa3['statusText']);if(_0x1a0739['detail']!==undefined)_0x479d25['detail']=_0x1a0739['detail'];throw _0x479d25;}return await _0x4bbfa3['json']();},async 'updateExternalSkill'(_0x1eaf09){const _0x279e31=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1eaf09)+'/update',{'method':'POST'});if(!_0x279e31['ok']){const _0xfe82ac=await _0x279e31['json']()['catch'](()=>({'error':_0x279e31['statusText']})),_0x319d4a=new Error(_0xfe82ac['error']||_0xfe82ac['message']||_0x279e31['statusText']);if(_0xfe82ac['detail']!==undefined)_0x319d4a['detail']=_0xfe82ac['detail'];throw _0x319d4a;}return await _0x279e31['json']();},async 'updateSkillFlags'(_0x3b5b40,_0x36ec51){const _0x1f4663=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3b5b40)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x36ec51})});if(!_0x1f4663['ok']){const _0x574219=await _0x1f4663['json']()['catch'](()=>({'error':_0x1f4663['statusText']})),_0x4fb1db=new Error(_0x574219['error']||_0x574219['message']||_0x1f4663['statusText']);if(_0x574219['detail']!==undefined)_0x4fb1db['detail']=_0x574219['detail'];throw _0x4fb1db;}return await _0x1f4663['json']();},async 'removeFromImportedRegistry'(_0x2b520e){const _0x27bc1b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2b520e)+'/registry',{'method':'DELETE'});if(!_0x27bc1b['ok']){const _0x42da98=await _0x27bc1b['json']()['catch'](()=>({'error':_0x27bc1b['statusText']})),_0x44a25d=new Error(_0x42da98['error']||_0x42da98['message']||_0x27bc1b['statusText']);if(_0x42da98['detail']!==undefined)_0x44a25d['detail']=_0x42da98['detail'];throw _0x44a25d;}return await _0x27bc1b['json']();},async 'getTeams'(){const _0x4787c1=await fetch(API_BASE+'/teams');if(!_0x4787c1['ok']){const _0x5833c1=await _0x4787c1['json']()['catch'](()=>({'message':_0x4787c1['statusText']}));throw new Error(_0x5833c1['message']||'Failed\x20to\x20get\x20teams');}return await _0x4787c1['json']();},async 'getTeam'(_0x598c05){const _0x585e5e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x598c05));if(!_0x585e5e['ok']){const _0x3e9762=await _0x585e5e['json']()['catch'](()=>({'message':_0x585e5e['statusText']}));throw new Error(_0x3e9762['message']||'Failed\x20to\x20get\x20team');}return await _0x585e5e['json']();},async 'createTeam'(_0x2b7d77){const _0x1386d6=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b7d77)});if(!_0x1386d6['ok']){const _0x520cd8=await _0x1386d6['json']()['catch'](()=>({'message':_0x1386d6['statusText']}));throw new Error(_0x520cd8['message']||'Failed\x20to\x20create\x20team');}return await _0x1386d6['json']();},async 'updateTeam'(_0x37e750,_0x37b62a){const _0x45b461=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x37e750),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37b62a)});if(!_0x45b461['ok']){const _0x392cbd=await _0x45b461['json']()['catch'](()=>({'message':_0x45b461['statusText']}));throw new Error(_0x392cbd['message']||'Failed\x20to\x20update\x20team');}return await _0x45b461['json']();},async 'deleteTeam'(_0x46e5f6){const _0x19add9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46e5f6),{'method':'DELETE'});if(!_0x19add9['ok']){const _0x241514=await _0x19add9['json']()['catch'](()=>({'message':_0x19add9['statusText']}));throw new Error(_0x241514['message']||'Failed\x20to\x20delete\x20team');}return await _0x19add9['json']();},async 'addTeamMember'(_0x15f1a9,_0x8b9a2d){const _0x1435b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15f1a9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x8b9a2d})});if(!_0x1435b6['ok']){const _0x15cbfa=await _0x1435b6['json']()['catch'](()=>({'message':_0x1435b6['statusText']}));throw new Error(_0x15cbfa['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1435b6['json']();},async 'removeTeamMember'(_0x4acfd2,_0x2c7a36){const _0x58e39c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4acfd2)+'/members/'+encodeURIComponent(_0x2c7a36),{'method':'DELETE'});if(!_0x58e39c['ok']){const _0x33530b=await _0x58e39c['json']()['catch'](()=>({'message':_0x58e39c['statusText']}));throw new Error(_0x33530b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x58e39c['json']();},async 'getBindings'(_0x1e0340={}){const _0x156146=new URLSearchParams();if(_0x1e0340['resource_type'])_0x156146['set']('resource_type',_0x1e0340['resource_type']);if(_0x1e0340['resource_id'])_0x156146['set']('resource_id',_0x1e0340['resource_id']);if(_0x1e0340['subject_type'])_0x156146['set']('subject_type',_0x1e0340['subject_type']);if(_0x1e0340['subject_id'])_0x156146['set']('subject_id',_0x1e0340['subject_id']);const _0x57beaf=_0x156146['toString'](),_0xd31c67=await fetch(API_BASE+'/bindings'+(_0x57beaf?'?'+_0x57beaf:''));if(!_0xd31c67['ok']){const _0x32760a=await _0xd31c67['json']()['catch'](()=>({'message':_0xd31c67['statusText']}));throw new Error(_0x32760a['message']||'Failed\x20to\x20get\x20bindings');}return await _0xd31c67['json']();},async 'createBinding'(_0x12a6f5){const _0x309bd8=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12a6f5)});if(!_0x309bd8['ok']){const _0x94f32=await _0x309bd8['json']()['catch'](()=>({'message':_0x309bd8['statusText']}));throw new Error(_0x94f32['message']||'Failed\x20to\x20create\x20binding');}return await _0x309bd8['json']();},async 'updateBinding'(_0xe60373,_0xd0e7cd){const _0x2c0d35=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe60373),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0e7cd)});if(!_0x2c0d35['ok']){const _0x450589=await _0x2c0d35['json']()['catch'](()=>({'message':_0x2c0d35['statusText']}));throw new Error(_0x450589['message']||'Failed\x20to\x20update\x20binding');}return await _0x2c0d35['json']();},async 'deleteBinding'(_0x31487a){const _0x3065a6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x31487a),{'method':'DELETE'});if(!_0x3065a6['ok']){const _0x1ff9d5=await _0x3065a6['json']()['catch'](()=>({'message':_0x3065a6['statusText']}));throw new Error(_0x1ff9d5['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3065a6['json']();},async 'getRoleDefinitions'(){const _0x432796=await fetch(API_BASE+'/roles');if(!_0x432796['ok']){const _0x1b392d=await _0x432796['json']()['catch'](()=>({'message':_0x432796['statusText']}));throw new Error(_0x1b392d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x432796['json']();},async 'getRoleDefinition'(_0xa8a9f7){const _0x364070=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xa8a9f7));if(!_0x364070['ok']){const _0x59b0d4=await _0x364070['json']()['catch'](()=>({'message':_0x364070['statusText']}));throw new Error(_0x59b0d4['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x364070['json']();},async 'createRoleDefinition'(_0x1722aa){const _0x16bbaa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1722aa)});if(!_0x16bbaa['ok']){const _0x97a97e=await _0x16bbaa['json']()['catch'](()=>({'message':_0x16bbaa['statusText']}));throw new Error(_0x97a97e['message']||_0x97a97e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x16bbaa['json']();},async 'updateRoleDefinition'(_0x5e5ce0,_0x2f52fb){const _0x1de4f1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5e5ce0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f52fb)});if(!_0x1de4f1['ok']){const _0x1a3fec=await _0x1de4f1['json']()['catch'](()=>({'message':_0x1de4f1['statusText']}));throw new Error(_0x1a3fec['message']||_0x1a3fec['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1de4f1['json']();},async 'deleteRoleDefinition'(_0xafa4c4){const _0x35a042=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xafa4c4),{'method':'DELETE'});if(!_0x35a042['ok']){const _0x16627e=await _0x35a042['json']()['catch'](()=>({'message':_0x35a042['statusText']}));throw new Error(_0x16627e['message']||_0x16627e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x35a042['json']();},async 'getAvailablePermissions'(){const _0x32fd4e=await fetch(API_BASE+'/roles/available-permissions');if(!_0x32fd4e['ok']){const _0x1bc55f=await _0x32fd4e['json']()['catch'](()=>({'message':_0x32fd4e['statusText']}));throw new Error(_0x1bc55f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x32fd4e['json']();},async 'getGitProviderAllowedTeams'(_0x12771c){const _0x56046a=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x12771c)+'/allowed-teams');if(!_0x56046a['ok']){const _0x14fe8a=await _0x56046a['json']()['catch'](()=>({'message':_0x56046a['statusText']}));throw new Error(_0x14fe8a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x56046a['json']();},async 'setGitProviderAllowedTeams'(_0xcce4f2,_0x25cf82){const _0x1246dd=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xcce4f2)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x25cf82})});if(!_0x1246dd['ok']){const _0x248500=await _0x1246dd['json']()['catch'](()=>({'message':_0x1246dd['statusText']}));throw new Error(_0x248500['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1246dd['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 _0x3183aa=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4eacd5=>{_0x4eacd5['el']['style']['bottom']=_0x3183aa+'px';const _0x500972=_0x4eacd5['el']['offsetHeight']||toastState['defaultHeight'];_0x3183aa+=_0x500972+toastState['gap'];});});}function removeToastById(_0x13fdbc){const _0x2e846b=toastState['toasts']['findIndex'](_0x57d18d=>_0x57d18d['id']===_0x13fdbc);if(_0x2e846b===-0x1)return;const _0x906674=toastState['toasts'][_0x2e846b];if(_0x906674['timeoutId'])clearTimeout(_0x906674['timeoutId']);_0x906674['el']['classList']['remove']('show'),setTimeout(()=>_0x906674['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2e846b,0x1),repositionAllToasts();}function registerToast(_0x5a6fb9){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5a6fb9),repositionAllToasts(),_0x5a6fb9['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'(_0x34468d){const _0x8397a1=new Date(_0x34468d),_0x1ad4f6=new Date(),_0x11469f=_0x1ad4f6-_0x8397a1,_0x2b50ba=Math['floor'](_0x11469f/0x3e8),_0x4cfb2f=Math['floor'](_0x2b50ba/0x3c),_0x2630b4=Math['floor'](_0x4cfb2f/0x3c),_0x5951ff=Math['floor'](_0x2630b4/0x18);if(_0x2b50ba<0x3c)return'now';if(_0x4cfb2f<0x3c)return _0x4cfb2f+'m\x20ago';if(_0x2630b4<0x18)return _0x2630b4+'h\x20ago';return _0x5951ff+'d\x20ago';},'getStatusIcon'(_0x2a0741){switch(_0x2a0741){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3625a7){switch(_0x3625a7){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'(_0x48b529,_0x57254a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x174380={};_0x174380['text/plain']=new Blob([_0x48b529],{'type':'text/plain'});_0x57254a&&(_0x174380['text/html']=new Blob([_0x57254a],{'type':'text/html'}));const _0x145db2=new ClipboardItem(_0x174380);return await navigator['clipboard']['write']([_0x145db2]),!![];}catch(_0x2e32aa){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2e32aa);}try{const _0x514204=_0x5ad832=>{_0x5ad832['preventDefault'](),_0x5ad832['clipboardData']['setData']('text/plain',_0x48b529),_0x57254a&&_0x5ad832['clipboardData']['setData']('text/html',_0x57254a);};document['addEventListener']('copy',_0x514204);const _0x4da9f2=document['execCommand']('copy');document['removeEventListener']('copy',_0x514204);if(_0x4da9f2)return!![];}catch(_0xecd51b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xecd51b);}try{const _0x257735=document['createElement']('textarea');_0x257735['value']=_0x48b529,_0x257735['style']['position']='fixed',_0x257735['style']['opacity']='0',_0x257735['style']['pointerEvents']='none',document['body']['appendChild'](_0x257735),_0x257735['select']();const _0x42089f=document['execCommand']('copy');return document['body']['removeChild'](_0x257735),_0x42089f;}catch(_0x862d40){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x862d40),![];}},'showToast'(_0x1bb8af,_0x4e6502='info'){const _0x122fce=getNextToastId(),_0x46a58a=document['createElement']('div');_0x46a58a['className']='toast\x20toast-'+_0x4e6502,_0x46a58a['textContent']=_0x1bb8af,_0x46a58a['dataset']['toastId']=_0x122fce,document['body']['appendChild'](_0x46a58a);const _0x3bf6e5=_0x4e6502==='error'?0x2710:0xbb8,_0x1adebd=setTimeout(()=>{removeToastById(_0x122fce);},_0x3bf6e5),_0x27bc8e={'id':_0x122fce,'el':_0x46a58a,'timeoutId':_0x1adebd};return registerToast(_0x27bc8e),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x46a58a['classList']['add']('show');});}),_0x122fce;},'showError'(_0x4e46d8){console['error'](_0x4e46d8);const _0x2cf8e0=typeof _0x4e46d8==='string'?_0x4e46d8:_0x4e46d8['message']||'An\x20error\x20occurred';this['showToast'](_0x2cf8e0,'error');},'showSuccess'(_0x1f7e9a){this['showToast'](_0x1f7e9a,'success');},'capitalize'(_0x131524){if(!_0x131524)return'';return _0x131524['charAt'](0x0)['toUpperCase']()+_0x131524['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4ddbae){if(_0x4ddbae===null||_0x4ddbae===undefined)return'';return String(_0x4ddbae)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x4adf56){if(_0x4adf56===null||_0x4adf56===undefined)return'';let _0x36306a=this['escapeHtml'](_0x4adf56);const _0x34085f={'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'},_0x3d5114={'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 _0x2aa77b=0x0;return _0x36306a=_0x36306a['replace'](/\x1b\[([0-9;]*)m/g,(_0x4babaa,_0x1773e0)=>{if(!_0x1773e0||_0x1773e0==='0'){const _0x341baa='</span>'['repeat'](_0x2aa77b);return _0x2aa77b=0x0,_0x341baa;}const _0x20a032=_0x1773e0['split'](';'),_0x4cf8e9=[];for(const _0x232840 of _0x20a032){if(_0x232840==='1')_0x4cf8e9['push']('font-weight:bold');else{if(_0x232840==='2')_0x4cf8e9['push']('opacity:0.7');else{if(_0x232840==='3')_0x4cf8e9['push']('font-style:italic');else{if(_0x232840==='4')_0x4cf8e9['push']('text-decoration:underline');else{if(_0x232840==='9')_0x4cf8e9['push']('text-decoration:line-through');else{if(_0x34085f[_0x232840])_0x4cf8e9['push']('color:'+_0x34085f[_0x232840]);else{if(_0x3d5114[_0x232840])_0x4cf8e9['push']('background-color:'+_0x3d5114[_0x232840]);}}}}}}}if(_0x4cf8e9['length']>0x0)return _0x2aa77b++,'<span\x20style=\x22'+_0x4cf8e9['join'](';')+'\x22>';return'';}),_0x36306a+='</span>'['repeat'](_0x2aa77b),_0x36306a=_0x36306a['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3fa7b3,_0x113790)=>{if(!_0x113790||_0x113790==='0')return'';const _0x4cea87=_0x113790['split'](';'),_0x467f9c=[];for(const _0x145c82 of _0x4cea87){if(_0x145c82==='1')_0x467f9c['push']('font-weight:bold');else{if(_0x34085f[_0x145c82])_0x467f9c['push']('color:'+_0x34085f[_0x145c82]);else{if(_0x3d5114[_0x145c82])_0x467f9c['push']('background-color:'+_0x3d5114[_0x145c82]);}}}if(_0x467f9c['length']>0x0)return'<span\x20style=\x22'+_0x467f9c['join'](';')+'\x22>';return'';}),_0x36306a;},'showModal'({title:_0x3e4972,content:_0x84477,buttons:buttons=[]}){const _0x50e881='\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'](_0x3e4972)+'</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'+_0x84477+'\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']((_0x1d5099,_0x410acf)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1d5099['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x410acf+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1d5099['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',_0x4ccba7=document['createElement']('div');_0x4ccba7['id']='utils-modal',_0x4ccba7['className']='modal',_0x4ccba7['innerHTML']=_0x50e881,document['body']['appendChild'](_0x4ccba7);const _0x3b4a74=document['getElementById']('utils-modal-close');_0x3b4a74&&_0x3b4a74['addEventListener']('click',()=>this['hideModal']());const _0x440159=_0x4ccba7['querySelectorAll']('[data-btn-index]');_0x440159['forEach'](_0x214006=>{const _0x16235e=parseInt(_0x214006['dataset']['btnIndex']);buttons[_0x16235e]?.['onClick']&&_0x214006['addEventListener']('click',buttons[_0x16235e]['onClick']);});const _0x37b449=document['getElementById']('utils-modal-overlay');_0x37b449&&_0x37b449['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x121e26=document['getElementById']('utils-modal');_0x121e26&&_0x121e26['remove']();},'parseKeyValuePairs'(_0x2f4eca){const _0xe9b13={};if(!_0x2f4eca)return _0xe9b13;return _0x2f4eca['split'](/\r?\n/)['map'](_0x860af6=>_0x860af6['trim']())['filter'](Boolean)['forEach'](_0x5955f9=>{const _0x46d0d3=_0x5955f9['indexOf']('=');if(_0x46d0d3>0x0){const _0x3a7df1=_0x5955f9['slice'](0x0,_0x46d0d3)['trim'](),_0x33d80c=_0x5955f9['slice'](_0x46d0d3+0x1)['trim']();if(_0x3a7df1)_0xe9b13[_0x3a7df1]=_0x33d80c;}}),_0xe9b13;},'debounce'(_0xa8a237,_0x172632=0xfa){let _0x476e6b=null;return(..._0x4bca4a)=>{clearTimeout(_0x476e6b),_0x476e6b=setTimeout(()=>_0xa8a237['apply'](this,_0x4bca4a),_0x172632);};},'formatTimestamp'(_0x557b58){if(!_0x557b58)return'N/A';const _0x4678c0=new Date(_0x557b58);return _0x4678c0['toLocaleDateString']()+'\x20'+_0x4678c0['toLocaleTimeString']();},'getQueryParams'(){const _0x3f165d=new URLSearchParams(window['location']['search']),_0x2d96c6={};for(const [_0x136492,_0x19c80b]of _0x3f165d){_0x2d96c6[_0x136492]=_0x19c80b;}return _0x2d96c6;},'formatDuration'(_0x16e257,_0x4f6656){if(!_0x16e257)return'N/A';const _0x2bf347=new Date(_0x16e257),_0x48d837=_0x4f6656?new Date(_0x4f6656):new Date(),_0x4e9acf=_0x48d837-_0x2bf347;if(_0x4e9acf<0x0)return'0s';const _0x1176aa=Math['floor'](_0x4e9acf/0x3e8),_0x3ecfe1=Math['floor'](_0x1176aa/0x3c),_0x46258f=Math['floor'](_0x3ecfe1/0x3c),_0x54cd36=Math['floor'](_0x46258f/0x18);if(_0x1176aa<0x3c)return _0x1176aa+'s';if(_0x3ecfe1<0x3c)return _0x3ecfe1+'m\x20'+_0x1176aa%0x3c+'s';if(_0x46258f<0x18)return _0x46258f+'h\x20'+_0x3ecfe1%0x3c+'m\x20'+_0x1176aa%0x3c+'s';return _0x54cd36+'d\x20'+_0x46258f%0x18+'h\x20'+_0x3ecfe1%0x3c+'m';},'renderMarkdown'(_0x15c8d3,_0x176142={}){if(!_0x15c8d3)return'';_0x15c8d3=this['rewriteAttachmentLinks'](_0x15c8d3,_0x176142),_0x15c8d3=this['rewriteColorSyntax'](_0x15c8d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x3432b3=new marked['Renderer'](),_0x9d0ee0=_0x3432b3['code']['bind'](_0x3432b3);_0x3432b3['code']=function(_0x2a5dd0,_0x54fd29){const _0x58da04=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x58da04&&_0x54fd29)try{const _0x345f90=_0x58da04['getLanguage'](_0x54fd29)?_0x54fd29:'plaintext',_0x223118=_0x58da04['highlight'](_0x2a5dd0,{'language':_0x345f90})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x54fd29+'\x22>'+_0x223118+'</code></pre>';}catch(_0x9a15c4){console['error']('Syntax\x20highlighting\x20error:',_0x9a15c4);}return _0x9d0ee0(_0x2a5dd0,_0x54fd29);};try{return marked['parse'](_0x15c8d3,{'renderer':_0x3432b3});}catch(_0x5048fd){return console['error']('Markdown\x20parsing\x20error:',_0x5048fd),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);}},'rewriteAttachmentLinks'(_0x2dc237,_0x2121fc={}){const _0x1feac1=typeof _0x2121fc['resolveAttachmentUrl']==='function'?_0x2121fc['resolveAttachmentUrl']:_0x2121fc['taskId']?_0x533ca4=>API_BASE+'/tasks/'+_0x2121fc['taskId']+'/attachments/'+encodeURIComponent(_0x533ca4):null;if(!_0x1feac1)return _0x2dc237;return String(_0x2dc237)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x12b168,_0x848fa5)=>{const _0x46381c=String(_0x848fa5||'')['trim']();if(!_0x46381c)return _0x12b168;let _0x118860=_0x46381c;try{_0x118860=decodeURIComponent(_0x46381c);}catch{}const _0x10770b=_0x1feac1(_0x118860);if(!_0x10770b)return _0x12b168;return']('+_0x10770b+')';});},'rewriteColorSyntax'(_0x385a3e){if(!_0x385a3e)return _0x385a3e;return String(_0x385a3e)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x163de2,_0x45df50,_0x26f753)=>{const _0x3374b9=this['rewriteColorSyntax'](_0x26f753);return'<span\x20style=\x22color:\x20'+_0x45df50+'\x22>'+_0x3374b9+'</span>';});},'renderMarkdownFallback'(_0x2e3918,_0x132ceb={}){if(!_0x2e3918)return'';_0x2e3918=_0x2e3918['replace'](/\r\n/g,'\x0a'),_0x2e3918=_0x2e3918['replace'](/\r/g,'\x0a'),_0x2e3918=this['rewriteAttachmentLinks'](_0x2e3918,_0x132ceb);let _0x3f2630=this['escapeHtml'](_0x2e3918);return _0x3f2630=_0x3f2630['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3f2630=_0x3f2630['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3f2630=_0x3f2630['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3f2630=_0x3f2630['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3f2630=_0x3f2630['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3f2630=_0x3f2630['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3f2630=_0x3f2630['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3f2630=_0x3f2630['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3f2630=_0x3f2630['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3f2630=_0x3f2630['replace'](/\n\n/g,'</p><p>'),_0x3f2630=_0x3f2630['replace'](/\n/g,'<br>'),'<p>'+_0x3f2630+'</p>';}};export class CustomSelect{constructor(_0x4e1680,_0x577f5c={}){this['nativeSelect']=_0x4e1680,this['options']=_0x577f5c,this['isOpen']=![],this['selectedValue']=_0x4e1680['value']||'',this['searchable']=_0x577f5c['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2bbb66=document['createElement']('div');_0x2bbb66['className']='custom-select';const _0x3a9980=document['createElement']('div');_0x3a9980['className']='custom-select-trigger',_0x3a9980['setAttribute']('tabindex','0'),_0x3a9980['setAttribute']('role','button'),_0x3a9980['setAttribute']('aria-haspopup','listbox');const _0x38bfbb=document['createElement']('span');_0x38bfbb['className']='custom-select-trigger-text';const _0x194151=document['createElement']('span');_0x194151['className']='custom-select-arrow',_0x194151['textContent']='▼',_0x3a9980['appendChild'](_0x38bfbb),_0x3a9980['appendChild'](_0x194151);const _0x40bd2a=document['createElement']('div');_0x40bd2a['className']='custom-select-dropdown',_0x40bd2a['setAttribute']('role','listbox');if(this['searchable']){const _0x5166a6=document['createElement']('div');_0x5166a6['className']='custom-select-search';const _0x451900=document['createElement']('input');_0x451900['type']='text',_0x451900['className']='custom-select-search-input',_0x451900['placeholder']='Type\x20to\x20search...',_0x451900['setAttribute']('aria-label','Search\x20options'),_0x451900['addEventListener']('input',_0xb6a9e4=>{this['searchQuery']=_0xb6a9e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x451900['addEventListener']('keydown',_0x2cc687=>{if(_0x2cc687['key']==='Escape')_0x2cc687['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2cc687['key']==='Enter'){_0x2cc687['preventDefault'](),_0x2cc687['stopPropagation']();const _0x1ecb33=_0x40bd2a['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1ecb33){const _0x1b643e=_0x1ecb33['getAttribute']('data-value');this['select'](_0x1b643e);}}}}),_0x5166a6['appendChild'](_0x451900),_0x40bd2a['appendChild'](_0x5166a6),this['searchInput']=_0x451900;}const _0x280130=document['createElement']('div');_0x280130['className']='custom-select-options',_0x40bd2a['appendChild'](_0x280130),_0x2bbb66['appendChild'](_0x3a9980),_0x2bbb66['appendChild'](_0x40bd2a),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2bbb66,this['nativeSelect']),this['wrapper']=_0x2bbb66,this['trigger']=_0x3a9980,this['triggerText']=_0x38bfbb,this['dropdown']=_0x40bd2a,this['optionsContainer']=_0x280130,_0x3a9980['addEventListener']('click',()=>this['toggle']()),_0x3a9980['addEventListener']('keydown',_0x2c8e57=>this['handleKeydown'](_0x2c8e57)),document['addEventListener']('click',_0x22075b=>{!_0x2bbb66['contains'](_0x22075b['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2f2f0b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2f2f0b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411a58=new MutationObserver(()=>{this['updateDisabledState']();});_0x411a58['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2b06a2=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2b06a2['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4bc2ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4bc2ab),this['trigger']['setAttribute']('aria-disabled',_0x4bc2ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4bc2ab?'-1':'0'),_0x4bc2ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x384c94=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x388a07=_0x384c94['filter'](_0x1d61b6=>!_0x1d61b6['disabled']&&!_0x1d61b6['hidden']);_0x384c94['forEach']((_0x26a817,_0x2c6f80)=>{const _0x15d2e9=document['createElement']('div');_0x15d2e9['className']='custom-select-option',_0x15d2e9['textContent']=_0x26a817['textContent'],_0x15d2e9['setAttribute']('data-value',_0x26a817['value']),_0x15d2e9['setAttribute']('data-index',_0x2c6f80),_0x15d2e9['setAttribute']('role','option'),_0x26a817['disabled']?_0x15d2e9['classList']['add']('disabled'):_0x15d2e9['addEventListener']('click',()=>this['select'](_0x26a817['value'])),_0x26a817['value']===this['selectedValue']&&_0x15d2e9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x15d2e9),this['allOptions']['push']({'element':_0x15d2e9,'text':_0x26a817['textContent']['toLowerCase'](),'value':_0x26a817['value'],'disabled':_0x26a817['disabled']});});if(this['searchable']&&this['searchInput']){const _0x43c6e4=this['searchInput']['parentElement'];_0x388a07['length']>0x3?_0x43c6e4['style']['display']='':_0x43c6e4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x164dcc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2aeccf=>{if(!_0x164dcc||_0x2aeccf['disabled'])_0x2aeccf['element']['style']['display']='';else{const _0x2e37c1=_0x2aeccf['text']['includes'](_0x164dcc);_0x2aeccf['element']['style']['display']=_0x2e37c1?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2feb4e){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2feb4e,this['nativeSelect']['value']=_0x2feb4e;const _0x3ffe85=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3ffe85),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4d96f4=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4d96f4&&(this['triggerText']['textContent']=_0x4d96f4['textContent'],_0x4d96f4['disabled']||_0x4d96f4['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x543630=>{_0x543630['getAttribute']('data-value')===this['selectedValue']?_0x543630['classList']['add']('selected'):_0x543630['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 _0x3f92dc=window['getComputedStyle'](this['dropdown']);if(_0x3f92dc['position']==='fixed'){const _0x453145=this['trigger']['getBoundingClientRect'](),_0x14bc01=parseInt(_0x3f92dc['maxHeight'])||0xc8,_0x4d0215=window['innerHeight'],_0x5214ba=_0x4d0215-_0x453145['bottom'],_0x186c7c=_0x453145['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3a7e1b;_0x5214ba<_0x14bc01&&_0x186c7c>_0x5214ba?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4d0215-_0x453145['top']+'px',_0x3a7e1b=Math['min'](_0x14bc01,_0x186c7c-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x453145['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3a7e1b=Math['min'](_0x14bc01,_0x5214ba-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px');if(this['optionsContainer']){let _0x1ac193=_0x3a7e1b;if(this['searchInput']){const _0x5127a9=this['searchInput']['parentElement'];_0x5127a9&&(_0x1ac193-=_0x5127a9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ac193)+'px';}this['dropdown']['style']['left']=_0x453145['left']+'px',this['dropdown']['style']['width']=_0x453145['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52687e=this['searchInput']['parentElement'];_0x52687e&&_0x52687e['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'](_0x2b715d){if(this['nativeSelect']['disabled'])return;if(_0x2b715d['key']==='Enter'||_0x2b715d['key']==='\x20')_0x2b715d['preventDefault'](),this['toggle']();else _0x2b715d['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3d951a='\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',_0x3d951a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4eb1f3=document['getElementById']('confirm-dialog-close'),_0x46a5c5=document['getElementById']('confirm-dialog-cancel'),_0x1f5bff=document['getElementById']('confirm-dialog-confirm'),_0x3f00a5=this['_modal']['querySelector']('.modal-overlay');_0x4eb1f3['addEventListener']('click',()=>this['_resolve'](![])),_0x46a5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1f5bff['addEventListener']('click',()=>this['_resolve'](!![])),_0x3f00a5['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x51935d=>{if(_0x51935d['key']==='Escape')_0x51935d['preventDefault'](),this['_resolve'](![]);else _0x51935d['key']==='Enter'&&(_0x51935d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x22a056,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x464525=>{this['_resolvePromise']=_0x464525,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x22a056;const _0x4b97f4=document['getElementById']('confirm-dialog-cancel'),_0x39419b=document['getElementById']('confirm-dialog-confirm');_0x4b97f4['textContent']=cancelText,_0x39419b['textContent']=confirmText,_0x39419b['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39419b['focus']();});},'_resolve'(_0x23b93a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x23b93a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2f392a,_0x4b26c3={}){this['container']=_0x2f392a,this['options']={'placeholder':_0x4b26c3['placeholder']||'Type\x20to\x20search...','maxItems':_0x4b26c3['maxItems']||0x64,'loadItems':_0x4b26c3['loadItems']||(async()=>[]),'renderItem':_0x4b26c3['renderItem']||(_0x5dd517=>({'primary':String(_0x5dd517),'secondary':''})),'onSelect':_0x4b26c3['onSelect']||(()=>{}),'filterItems':_0x4b26c3['filterItems']||null,'getItemValue':_0x4b26c3['getItemValue']||(_0x52d228=>_0x52d228),'sortItems':_0x4b26c3['sortItems']||null,'debounceMs':_0x4b26c3['debounceMs']||0xc8,'minCharsForSearch':_0x4b26c3['minCharsForSearch']||0x0,'emptyMessage':_0x4b26c3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4b26c3['loadingMessage']||'Loading...','preload':_0x4b26c3['preload']!==![],'searchMode':_0x4b26c3['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',_0xfe80e6=>this['onBlur'](_0xfe80e6)),this['input']['addEventListener']('input',_0x48313c=>this['onInput'](_0x48313c)),this['input']['addEventListener']('keydown',_0x4c873e=>this['onKeydown'](_0x4c873e)),this['clearBtn']['addEventListener']('mousedown',_0x4d8b37=>{_0x4d8b37['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x214268=>{_0x214268['preventDefault']();}),document['addEventListener']('click',_0x9c76b3=>{!this['wrapper']['contains'](_0x9c76b3['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(_0x30a6d0){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x30a6d0);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x14eb04){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5ec348){const _0x33cd73=_0x5ec348['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x33cd73);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x33cd73):this['loadAndShow'](_0x33cd73);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xdcffd2){switch(_0xdcffd2['key']){case'ArrowDown':_0xdcffd2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xdcffd2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xdcffd2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xdcffd2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4d0136){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5a1afb=this['selectedIndex']+_0x4d0136;if(_0x5a1afb>=0x0&&_0x5a1afb<this['filteredItems']['length']){this['selectedIndex']=_0x5a1afb,this['updateSelectionHighlight']();const _0x188575=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x188575[this['selectedIndex']]&&_0x188575[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x3885ee=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3885ee['forEach']((_0x27e972,_0x284777)=>{_0x27e972['classList']['toggle']('keyboard-selected',_0x284777===this['selectedIndex']);});}async['loadAndShow'](_0x14cd58){this['showLoading']();try{const _0x253fbc=await this['options']['loadItems'](_0x14cd58);if(this['options']['searchMode']==='server'){let _0x4e4fe2=_0x253fbc;this['options']['sortItems']&&(_0x4e4fe2=this['options']['sortItems']([..._0x253fbc]));this['filteredItems']=_0x4e4fe2;const _0x474e67=this['filteredItems']['length']>=this['options']['maxItems'];_0x474e67&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x474e67),this['open']();}else this['allItems']=_0x253fbc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14cd58);}catch(_0x4fb455){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4fb455),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x20b02a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x20b02a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5c8571=this['filteredItems']['length']>=this['options']['maxItems'];_0x5c8571&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5c8571),this['open']();}['renderItems'](_0x160d13){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']((_0x32822e,_0x3dfc72)=>{const _0x3dbaaf=document['createElement']('div');_0x3dbaaf['className']='autocomplete-select-item',_0x3dbaaf['setAttribute']('role','option'),_0x3dbaaf['setAttribute']('data-index',_0x3dfc72);const _0x3559fa=this['options']['renderItem'](_0x32822e);let _0x4e5831='';_0x3559fa['icon']&&(_0x4e5831='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x3559fa['iconClass']||'')+'\x22>'+_0x3559fa['icon']+'</span>'),_0x3dbaaf['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4e5831+'\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'](_0x3559fa['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3559fa['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x3559fa['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3dbaaf['addEventListener']('click',()=>{this['selectItem'](_0x32822e);}),_0x3dbaaf['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3dfc72,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3dbaaf);}),_0x160d13?(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'](_0x133b4b){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x133b4b)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x44ee04){this['selectedItem']=_0x44ee04;const _0x43e963=this['options']['renderItem'](_0x44ee04);this['input']['value']=_0x43e963['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x44ee04);}['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'](_0x8fb260){if(_0x8fb260){this['selectedItem']=_0x8fb260;const _0x5e7e19=this['options']['renderItem'](_0x8fb260);this['input']['value']=_0x5e7e19['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x146164){this['allItems']=_0x146164,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'](_0xe21dac){this['input']['placeholder']=_0xe21dac;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x106fb9=null){const _0x50c081=document['getElementById']('admin-menu-container'),_0x179e30=document['getElementById']('admin-menu-btn'),_0x12841a=document['getElementById']('admin-menu');if(!_0x50c081||!_0x179e30||!_0x12841a)return;try{!_0x106fb9&&(_0x106fb9=await API['getCurrentUser']());if(_0x106fb9){const _0x4ef41a=_0x106fb9['hasAllPermissions']||_0x106fb9['hasEnvironmentsManage']||_0x106fb9['canCreateUsers']||_0x106fb9['canManageTeams']||_0x106fb9['hasEnvironmentBindings'];if(!_0x4ef41a)return;_0x50c081['hidden']=![];if(!_0x106fb9['hasAllPermissions']){const _0x49432c=_0x12841a['querySelectorAll']('.admin-menu-item');_0x49432c['forEach'](_0x154f1e=>{const _0xf6c5a2=_0x154f1e['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c5a2==='Users'&&!_0x106fb9['canCreateUsers']&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Skills'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Settings'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Health'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Git\x20History'&&(_0x154f1e['hidden']=!![]);});}_0x179e30['addEventListener']('click',_0x3061fc=>{_0x3061fc['stopPropagation']();const _0x3d003f=document['getElementById']('actions-menu');if(_0x3d003f)_0x3d003f['hidden']=!![];_0x12841a['hidden']=!_0x12841a['hidden'];}),document['addEventListener']('click',_0xc0d334=>{!_0x12841a['hidden']&&!_0x179e30['contains'](_0xc0d334['target'])&&!_0x12841a['contains'](_0xc0d334['target'])&&(_0x12841a['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b83c2=>{_0x4b83c2['key']==='Escape'&&!_0x12841a['hidden']&&(_0x12841a['hidden']=!![]);});const _0x3c3888=document['getElementById']('server-health-btn');_0x3c3888&&_0x3c3888['addEventListener']('click',async()=>{_0x12841a['hidden']=!![];const {openServerHealthModal:_0x1d9246}=await import('./server-health.js');_0x1d9246();});}}catch(_0x490402){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x490402['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|