@profoundlogic/coderflow-server 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.css +6 -4
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +34 -4
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x22d0b5=window['location']['pathname'],_0x49277c=_0x22d0b5['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x49277c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x49277c[0x1]),_0x49277c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x53d9ab={}){const _0x261d18=new URLSearchParams();_0x53d9ab['userId']&&_0x261d18['set']('userId',String(_0x53d9ab['userId']));_0x53d9ab['automation']&&_0x261d18['set']('automation',String(_0x53d9ab['automation']));const _0x212f27=API_BASE+'/tasks/stats'+(_0x261d18['toString']()?'?'+_0x261d18['toString']():''),_0x380737=await fetch(_0x212f27);if(!_0x380737['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x380737['statusText']);return await _0x380737['json']();},async 'getTasks'(_0x574b5e={}){const _0x48fd23=new URLSearchParams();_0x574b5e['status']&&_0x48fd23['set']('status',String(_0x574b5e['status']));_0x574b5e['environment']&&_0x48fd23['set']('environment',String(_0x574b5e['environment']));_0x574b5e['automation']&&_0x48fd23['set']('automation',String(_0x574b5e['automation']));if(_0x574b5e['include']){const _0x33f5b2=Array['isArray'](_0x574b5e['include'])?_0x574b5e['include']['join'](','):String(_0x574b5e['include']);_0x33f5b2&&_0x48fd23['set']('include',_0x33f5b2);}_0x574b5e['filter']&&_0x48fd23['set']('filter',String(_0x574b5e['filter']));_0x574b5e['page']&&_0x48fd23['set']('page',String(_0x574b5e['page']));_0x574b5e['limit']&&_0x48fd23['set']('limit',String(_0x574b5e['limit']));_0x574b5e['userId']&&_0x48fd23['set']('userId',String(_0x574b5e['userId']));_0x574b5e['search']&&_0x48fd23['set']('search',String(_0x574b5e['search']));_0x574b5e['includeChildTasks']&&_0x48fd23['set']('includeChildTasks','true');const _0xe3883b=API_BASE+'/tasks'+(_0x48fd23['toString']()?'?'+_0x48fd23['toString']():''),_0x9980c1=await fetch(_0xe3883b);if(!_0x9980c1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x9980c1['statusText']);return await _0x9980c1['json']();},async 'getAutomations'(_0x14c30f={}){const _0x4880f8=new URLSearchParams();_0x14c30f['environment']&&_0x4880f8['set']('environment',String(_0x14c30f['environment']));const _0x45f59b=await fetch(API_BASE+'/api/automations'+(_0x4880f8['toString']()?'?'+_0x4880f8['toString']():''));if(!_0x45f59b['ok']){const _0x53bf7c=await _0x45f59b['json']()['catch'](()=>({}));throw new Error(_0x53bf7c['message']||_0x53bf7c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x45f59b['statusText']);}return await _0x45f59b['json']();},async 'getAutomation'(_0x43c97d){const _0x58b9ab=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43c97d));if(!_0x58b9ab['ok']){const _0x4cc6d7=await _0x58b9ab['json']()['catch'](()=>({}));throw new Error(_0x4cc6d7['message']||_0x4cc6d7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x58b9ab['statusText']);}return await _0x58b9ab['json']();},async 'createAutomation'(_0x2d2c00){const _0x957c2c=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2c00||{})});if(!_0x957c2c['ok']){const _0x5d6763=await _0x957c2c['json']()['catch'](()=>({}));throw new Error(_0x5d6763['message']||_0x5d6763['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x957c2c['statusText']);}return await _0x957c2c['json']();},async 'updateAutomation'(_0x2d22b6,_0x35b652){const _0x4e1d54=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2d22b6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x35b652||{})});if(!_0x4e1d54['ok']){const _0x3a5478=await _0x4e1d54['json']()['catch'](()=>({}));throw new Error(_0x3a5478['message']||_0x3a5478['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e1d54['statusText']);}return await _0x4e1d54['json']();},async 'deleteAutomation'(_0x3317e3){const _0x560f6c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3317e3),{'method':'DELETE'});if(!_0x560f6c['ok']){const _0x3ee3c0=await _0x560f6c['json']()['catch'](()=>({}));throw new Error(_0x3ee3c0['message']||_0x3ee3c0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x560f6c['statusText']);}return await _0x560f6c['json']();},async 'triggerAutomation'(_0x50fa0c){const _0x528adf=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x50fa0c)+'/trigger',{'method':'POST'});if(!_0x528adf['ok']){const _0x28f672=await _0x528adf['json']()['catch'](()=>({}));throw new Error(_0x28f672['message']||_0x28f672['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x528adf['statusText']);}return await _0x528adf['json']();},async 'setAutomationEnabled'(_0x52bd78,_0x2ab1b2){const _0x237f1f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x52bd78)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x2ab1b2})});if(!_0x237f1f['ok']){const _0x5a3f47=await _0x237f1f['json']()['catch'](()=>({}));throw new Error(_0x5a3f47['message']||_0x5a3f47['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x237f1f['statusText']);}return await _0x237f1f['json']();},async 'getAutomationHistory'(_0x1a7af1,_0x528182=0x32){const _0x43873e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a7af1)+'/history?limit='+encodeURIComponent(String(_0x528182)));if(!_0x43873e['ok']){const _0x2ce39a=await _0x43873e['json']()['catch'](()=>({}));throw new Error(_0x2ce39a['message']||_0x2ce39a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x43873e['statusText']);}return await _0x43873e['json']();},async 'getTask'(_0x2c199d,_0x737118={}){const _0x816159=new URLSearchParams();if(_0x737118['include']){const _0x5053af=Array['isArray'](_0x737118['include'])?_0x737118['include']['join'](','):String(_0x737118['include']);if(_0x5053af)_0x816159['set']('include',_0x5053af);}const _0x56cee2=await fetch(API_BASE+'/tasks/'+_0x2c199d+(_0x816159['toString']()?'?'+_0x816159['toString']():''));if(!_0x56cee2['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56cee2['statusText']);return await _0x56cee2['json']();},async 'getTaskResults'(_0x46535e){const _0x45b027=await fetch(API_BASE+'/tasks/'+_0x46535e+'/results');if(!_0x45b027['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x45b027['statusText']);return await _0x45b027['json']();},async 'getTaskPatches'(_0x172441){const _0x1a8005=await fetch(API_BASE+'/tasks/'+_0x172441+'/patches');if(!_0x1a8005['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1a8005['statusText']);return await _0x1a8005['json']();},async 'getTaskAttachments'(_0xe0c9ab){const _0x458dc2=await fetch(API_BASE+'/tasks/'+_0xe0c9ab+'/attachments');if(!_0x458dc2['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x458dc2['statusText']);return await _0x458dc2['json']();},async 'uploadAttachments'(_0x5bd735,_0x3682c6){const _0x366605=new FormData();for(const _0x432480 of _0x3682c6){_0x366605['append']('attachments',_0x432480);}const _0x3b27be=await fetch(API_BASE+'/tasks/'+_0x5bd735+'/attachments',{'method':'POST','body':_0x366605});if(!_0x3b27be['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3b27be['statusText']);return await _0x3b27be['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3bd9f1=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3bd9f1['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3bd9f1['json']();}catch(_0x5acec8){return{'available':![],'reason':_0x5acec8['message']};}},async 'generateTaskName'(_0x2fac83){try{const _0x14f3ed=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fac83})});return await _0x14f3ed['json']();}catch(_0x208e1e){return{'success':![],'error':_0x208e1e['message']};}},async 'createTask'(_0x5669f6){let _0x30be55,_0xeea803={};if(_0x5669f6['files']&&_0x5669f6['files']['length']>0x0){const _0x1b865f=new FormData();for(const [_0xf28d91,_0x24b40f]of Object['entries'](_0x5669f6)){if(_0xf28d91!=='files'){if(_0x24b40f==null)continue;typeof _0x24b40f==='object'?_0x1b865f['append'](_0xf28d91,JSON['stringify'](_0x24b40f)):_0x1b865f['append'](_0xf28d91,String(_0x24b40f));}}for(const _0x23d367 of _0x5669f6['files']){_0x1b865f['append']('attachments',_0x23d367);}_0x30be55=_0x1b865f;}else _0xeea803['Content-Type']='application/json',_0x30be55=JSON['stringify'](_0x5669f6);const _0x17b4ca=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0xeea803,'body':_0x30be55});if(!_0x17b4ca['ok']){const _0x4da397=await _0x17b4ca['json'](),_0x3964c6=new Error(_0x4da397['error']||'Failed\x20to\x20create\x20task:\x20'+_0x17b4ca['statusText']),{message:_0x2e0c5f,..._0x30ece7}=_0x4da397;Object['assign'](_0x3964c6,_0x30ece7);throw _0x3964c6;}return await _0x17b4ca['json']();},async 'createTestTask'(_0x70074c){const _0x23ba5e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70074c)});if(!_0x23ba5e['ok']){const _0x10fbf4=await _0x23ba5e['json']();throw new Error(_0x10fbf4['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x23ba5e['statusText']);}return await _0x23ba5e['json']();},async 'createEphemeralTest'(_0x29f337){const _0x42575e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f337)});if(!_0x42575e['ok']){const _0x2da270=await _0x42575e['json']();throw new Error(_0x2da270['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x42575e['statusText']);}return await _0x42575e['json']();},async 'createDeployTask'(_0x1ebb70){const _0x1fb004=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ebb70)});if(!_0x1fb004['ok']){const _0x47b5e2=await _0x1fb004['json']();throw new Error(_0x47b5e2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1fb004['statusText']);}return await _0x1fb004['json']();},async 'getEnvironments'(){const _0x460414=await fetch(API_BASE+'/environments');if(!_0x460414['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x460414['statusText']);return await _0x460414['json']();},async 'getEnvironment'(_0x55325c){const _0x1e2c68=await fetch(API_BASE+'/environments/'+_0x55325c);if(!_0x1e2c68['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1e2c68['statusText']);return await _0x1e2c68['json']();},async 'getEnvironmentRepoHistory'(_0x2b5ed2,_0x645006,_0x175a4e={}){if(!_0x2b5ed2||!_0x645006)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a665b=new URLSearchParams();if(_0x175a4e['limit'])_0x2a665b['set']('limit',String(_0x175a4e['limit']));if(_0x175a4e['offset'])_0x2a665b['set']('offset',String(_0x175a4e['offset']));if(_0x175a4e['search'])_0x2a665b['set']('search',String(_0x175a4e['search']));if(_0x175a4e['branch'])_0x2a665b['set']('branch',String(_0x175a4e['branch']));const _0x1c4b75=API_BASE+'/environments/'+encodeURIComponent(_0x2b5ed2)+'/repos/'+encodeURIComponent(_0x645006)+'/git/history',_0x267709=await fetch(''+_0x1c4b75+(_0x2a665b['toString']()?'?'+_0x2a665b['toString']():''));if(!_0x267709['ok']){const _0x8b8cad=await _0x267709['json']()['catch'](()=>({}));throw new Error(_0x8b8cad['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x267709['statusText']);}return await _0x267709['json']();},async 'getEnvironmentRepoCommit'(_0x83c03a,_0x3ba032,_0x20e461){if(!_0x83c03a||!_0x3ba032||!_0x20e461)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x839cce=API_BASE+'/environments/'+encodeURIComponent(_0x83c03a)+'/repos/'+encodeURIComponent(_0x3ba032)+'/git/commits/'+encodeURIComponent(_0x20e461),_0x3e5435=await fetch(_0x839cce);if(!_0x3e5435['ok']){const _0x387f51=await _0x3e5435['json']()['catch'](()=>({}));throw new Error(_0x387f51['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3e5435['statusText']);}return await _0x3e5435['json']();},async 'getEnvironmentRepoBranches'(_0x117568,_0x24e188){if(!_0x117568||!_0x24e188)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b2856=API_BASE+'/environments/'+encodeURIComponent(_0x117568)+'/repos/'+encodeURIComponent(_0x24e188)+'/git/branches',_0x1b1c69=await fetch(_0x1b2856);if(!_0x1b1c69['ok']){const _0x4e7e33=await _0x1b1c69['json']()['catch'](()=>({}));throw new Error(_0x4e7e33['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b1c69['statusText']);}return await _0x1b1c69['json']();},async 'revertEnvironmentRepoCommit'(_0x79e4e0,_0x2d0af3,_0x3dde45,_0x11310f={}){if(!_0x79e4e0||!_0x2d0af3||!_0x3dde45)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x116b07=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x79e4e0)+'/repos/'+encodeURIComponent(_0x2d0af3)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3dde45,..._0x11310f})});if(!_0x116b07['ok']){const _0xd63741=await _0x116b07['json']()['catch'](()=>({}));throw new Error(_0xd63741['message']||_0xd63741['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x116b07['statusText']);}return await _0x116b07['json']();},async 'getTemplates'(_0x227c7d={}){const _0x2e6dc6=new URLSearchParams();if(_0x227c7d['include']){const _0x1b5b13=Array['isArray'](_0x227c7d['include'])?_0x227c7d['include']['join'](','):String(_0x227c7d['include']);if(_0x1b5b13)_0x2e6dc6['set']('include',_0x1b5b13);}const _0x5e65b4=await fetch(API_BASE+'/templates'+(_0x2e6dc6['toString']()?'?'+_0x2e6dc6['toString']():''));if(!_0x5e65b4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x5e65b4['statusText']);return await _0x5e65b4['json']();},async 'getTemplatesForEnvironment'(_0x3ee1f7,_0x2cb487={}){if(!_0x3ee1f7)throw new Error('Environment\x20name\x20is\x20required');const _0x35dd5a=new URLSearchParams();if(_0x2cb487['include']){const _0x4c1add=Array['isArray'](_0x2cb487['include'])?_0x2cb487['include']['join'](','):String(_0x2cb487['include']);if(_0x4c1add)_0x35dd5a['set']('include',_0x4c1add);}const _0x5269dd=await fetch(API_BASE+'/templates/'+_0x3ee1f7+(_0x35dd5a['toString']()?'?'+_0x35dd5a['toString']():''));if(!_0x5269dd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3ee1f7+':\x20'+_0x5269dd['statusText']);return await _0x5269dd['json']();},async 'getTemplate'(_0x500977,_0x4ed0e3,_0x4255d4={}){if(!_0x500977||!_0x4ed0e3)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x357507=new URLSearchParams();if(_0x4255d4['include']){const _0x260ae6=Array['isArray'](_0x4255d4['include'])?_0x4255d4['include']['join'](','):String(_0x4255d4['include']);if(_0x260ae6)_0x357507['set']('include',_0x260ae6);}const _0x413217=await fetch(API_BASE+'/templates/'+_0x500977+'/'+_0x4ed0e3+(_0x357507['toString']()?'?'+_0x357507['toString']():''));if(!_0x413217['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x413217['statusText']);return await _0x413217['json']();},async 'getTaskLogs'(_0x127322,_0x435814={}){if(!_0x127322)throw new Error('Task\x20ID\x20is\x20required');const _0x57a0aa=new URLSearchParams();_0x435814['tail']&&_0x57a0aa['set']('tail',String(_0x435814['tail']));const _0x36a0e4=await fetch(API_BASE+'/tasks/'+_0x127322+'/logs'+(_0x57a0aa['toString']()?'?'+_0x57a0aa['toString']():''));if(!_0x36a0e4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x36a0e4['statusText']);return await _0x36a0e4['text']();},async 'getContainers'(){const _0xa18acf=await fetch(API_BASE+'/containers');if(!_0xa18acf['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa18acf['statusText']);return await _0xa18acf['json']();},async 'getContainer'(_0x51b912){const _0x892444=await fetch(API_BASE+'/containers/'+_0x51b912);if(!_0x892444['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x892444['statusText']);return await _0x892444['json']();},async 'startInteractiveContainer'(_0x40dd54){const _0xffe24b=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40dd54)});if(!_0xffe24b['ok']){const _0x44f448=await _0xffe24b['json']()['catch'](()=>({}));throw new Error(_0x44f448['message']||'Failed\x20to\x20start\x20container:\x20'+_0xffe24b['statusText']);}return await _0xffe24b['json']();},async 'stopContainer'(_0x586a6a){const _0x12be08=await fetch(API_BASE+'/containers/'+_0x586a6a,{'method':'DELETE'});if(!_0x12be08['ok']){const _0x427dfb=await _0x12be08['json']()['catch'](()=>({}));throw new Error(_0x427dfb['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x12be08['statusText']);}return await _0x12be08['json']();},async 'stopTask'(_0x1238bb){if(!_0x1238bb)throw new Error('Task\x20ID\x20is\x20required');const _0x2f0da9=await fetch(API_BASE+'/tasks/'+_0x1238bb+'/stop',{'method':'POST'});if(!_0x2f0da9['ok']){const _0x117914=await _0x2f0da9['json']()['catch'](()=>({}));throw new Error(_0x117914['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2f0da9['statusText']);}return await _0x2f0da9['json']();},async 'interruptTask'(_0x5abf7e){if(!_0x5abf7e)throw new Error('Task\x20ID\x20is\x20required');const _0x36cd48=await fetch(API_BASE+'/tasks/'+_0x5abf7e+'/interrupt',{'method':'POST'});if(!_0x36cd48['ok']){const _0x21d53c=await _0x36cd48['json']()['catch'](()=>({}));throw new Error(_0x21d53c['error']||_0x21d53c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x36cd48['statusText']);}return await _0x36cd48['json']();},async 'startTask'(_0x3a484e){if(!_0x3a484e)throw new Error('Task\x20ID\x20is\x20required');const _0x520920=await fetch(API_BASE+'/tasks/'+_0x3a484e+'/start',{'method':'POST'});if(!_0x520920['ok']){const _0x4637d8=await _0x520920['json']()['catch'](()=>({}));throw new Error(_0x4637d8['error']||'Failed\x20to\x20start\x20task:\x20'+_0x520920['statusText']);}return await _0x520920['json']();},async 'deleteTask'(_0x5b20ec){if(!_0x5b20ec)throw new Error('Task\x20ID\x20is\x20required');const _0x189c60=await fetch(API_BASE+'/tasks/'+_0x5b20ec,{'method':'DELETE'});if(!_0x189c60['ok']){const _0x5191c5=await _0x189c60['json']()['catch'](()=>({}));throw new Error(_0x5191c5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x189c60['statusText']);}return await _0x189c60['json']();},async 'refreshTasksFromDisk'(){const _0x21bb56=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x21bb56['ok']){const _0x23ee22=await _0x21bb56['json']()['catch'](()=>({}));throw new Error(_0x23ee22['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x21bb56['statusText']);}return await _0x21bb56['json']();},async 'approveTask'(_0x3cabc2,_0x5dacf8={}){if(!_0x3cabc2)throw new Error('Task\x20ID\x20is\x20required');const _0x51a417={'commit_message':_0x5dacf8['commit_message']||'','pull':_0x5dacf8['pull']??![],'push':_0x5dacf8['push']??![]};_0x5dacf8['new_branch']&&(_0x51a417['new_branch']=_0x5dacf8['new_branch']);const _0xafe19d=await fetch(API_BASE+'/tasks/'+_0x3cabc2+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51a417)});if(!_0xafe19d['ok']){const _0x5646c2=await _0xafe19d['json']()['catch'](()=>({}));let _0x4dec01=_0x5646c2['error']||_0x5646c2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xafe19d['statusText'];if(_0x5646c2['results']&&Array['isArray'](_0x5646c2['results'])){const _0x527321=_0x5646c2['results']['filter'](_0x10716a=>!_0x10716a['success']&&_0x10716a['error']);_0x527321['length']>0x0&&(_0x4dec01=_0x527321[0x0]['error']);}throw new Error(_0x4dec01);}return await _0xafe19d['json']();},async 'getPullRequestInfo'(_0x189cf0){if(!_0x189cf0)throw new Error('Task\x20ID\x20is\x20required');const _0x111992=await fetch(API_BASE+'/tasks/'+_0x189cf0+'/pull-request-info');if(!_0x111992['ok']){const _0x25fea0=await _0x111992['json']()['catch'](()=>({}));throw new Error(_0x25fea0['error']||_0x25fea0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x111992['statusText']);}return await _0x111992['json']();},async 'createPullRequests'(_0x5afc8e,_0x3698cf){if(!_0x5afc8e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3698cf||!Array['isArray'](_0x3698cf))throw new Error('repos\x20array\x20is\x20required');const _0x51bbb9=await fetch(API_BASE+'/tasks/'+_0x5afc8e+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3698cf})});if(!_0x51bbb9['ok']){const _0x1df656=await _0x51bbb9['json']()['catch'](()=>({}));let _0x25847d=_0x1df656['error']||_0x1df656['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x51bbb9['statusText'];if(_0x1df656['results']&&Array['isArray'](_0x1df656['results'])){const _0x2e294b=_0x1df656['results']['filter'](_0x2e6360=>!_0x2e6360['success']&&_0x2e6360['error']);_0x2e294b['length']>0x0&&(_0x25847d=_0x2e294b[0x0]['error']);}throw new Error(_0x25847d);}return await _0x51bbb9['json']();},async 'syncRepos'(_0x54a20e){if(!_0x54a20e)throw new Error('Task\x20ID\x20is\x20required');const _0x35870e=await fetch(API_BASE+'/tasks/'+_0x54a20e+'/sync-repos',{'method':'POST'});if(!_0x35870e['ok']){const _0x29a815=await _0x35870e['json']()['catch'](()=>({}));throw new Error(_0x29a815['error']||_0x29a815['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x35870e['statusText']);}return await _0x35870e['json']();},async 'getIbmiSyncInfo'(_0x3f9a07){if(!_0x3f9a07)throw new Error('Task\x20ID\x20is\x20required');const _0x480579=await fetch(API_BASE+'/tasks/'+_0x3f9a07+'/ibmi-sync-info');if(!_0x480579['ok']){const _0x5447da=await _0x480579['json']()['catch'](()=>({}));throw new Error(_0x5447da['error']||_0x5447da['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x480579['json']();},async 'syncToIbmi'(_0x34c46e,_0x4d0e36){if(!_0x34c46e)throw new Error('Task\x20ID\x20is\x20required');const _0x2df91e=await fetch(API_BASE+'/tasks/'+_0x34c46e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x4d0e36})});if(!_0x2df91e['ok']){const _0x1627f0=await _0x2df91e['json']()['catch'](()=>({}));throw new Error(_0x1627f0['error']||_0x1627f0['message']||'Sync\x20failed');}return await _0x2df91e['json']();},async 'getIbmiSyncLog'(_0x1bc973){if(!_0x1bc973)throw new Error('Task\x20ID\x20is\x20required');const _0x5166da=await fetch(API_BASE+'/tasks/'+_0x1bc973+'/ibmi-sync-log');if(!_0x5166da['ok']){const _0x2a82dd=await _0x5166da['json']()['catch'](()=>({}));throw new Error(_0x2a82dd['error']||_0x2a82dd['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5166da['json']();},async 'pullChanges'(_0x18b00c){if(!_0x18b00c)throw new Error('Task\x20ID\x20is\x20required');const _0x59965e=await fetch(API_BASE+'/tasks/'+_0x18b00c+'/pull-changes',{'method':'POST'});if(!_0x59965e['ok']){const _0x208dee=await _0x59965e['json']()['catch'](()=>({}));throw new Error(_0x208dee['error']||_0x208dee['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x59965e['statusText']);}return await _0x59965e['json']();},async 'readFile'(_0x4615f5,_0x3c60d8){if(!_0x4615f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c60d8)throw new Error('File\x20path\x20is\x20required');const _0x4adc65=await fetch(API_BASE+'/tasks/'+_0x4615f5+'/files?path='+encodeURIComponent(_0x3c60d8));if(!_0x4adc65['ok']){const _0x97aa9e=await _0x4adc65['json']()['catch'](()=>({}));throw new Error(_0x97aa9e['error']||_0x97aa9e['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4adc65['statusText']);}return await _0x4adc65['json']();},async 'writeFile'(_0x1064ac,_0x16fac4,_0x1db5c8){if(!_0x1064ac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16fac4)throw new Error('File\x20path\x20is\x20required');if(_0x1db5c8===undefined)throw new Error('Content\x20is\x20required');const _0x760924=await fetch(API_BASE+'/tasks/'+_0x1064ac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x16fac4,'content':_0x1db5c8})});if(!_0x760924['ok']){const _0x47aeae=await _0x760924['json']()['catch'](()=>({}));throw new Error(_0x47aeae['error']||_0x47aeae['message']||'Failed\x20to\x20write\x20file:\x20'+_0x760924['statusText']);}return await _0x760924['json']();},async 'deleteFile'(_0x15f2fb,_0x88fdf6){if(!_0x15f2fb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x88fdf6)throw new Error('File\x20path\x20is\x20required');const _0x30e974=await fetch(API_BASE+'/tasks/'+_0x15f2fb+'/files?path='+encodeURIComponent(_0x88fdf6),{'method':'DELETE'});if(!_0x30e974['ok']){const _0x169ac8=await _0x30e974['json']()['catch'](()=>({}));throw new Error(_0x169ac8['error']||_0x169ac8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x30e974['statusText']);}return await _0x30e974['json']();},async 'discardFile'(_0x14194c,_0x1e3b3b,_0x59fb22){if(!_0x14194c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3b3b)throw new Error('File\x20path\x20is\x20required');if(!_0x59fb22)throw new Error('Repository\x20path\x20is\x20required');const _0x448955=await fetch(API_BASE+'/tasks/'+_0x14194c+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1e3b3b,'repoPath':_0x59fb22})});if(!_0x448955['ok']){const _0x5010cc=await _0x448955['json']()['catch'](()=>({}));throw new Error(_0x5010cc['error']||_0x5010cc['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x448955['statusText']);}return await _0x448955['json']();},async 'followUpTask'(_0x3efe77,_0x154c7c={}){if(!_0x3efe77)throw new Error('Task\x20ID\x20is\x20required');if(!_0x154c7c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x557e34,_0x51d72a={};if(_0x154c7c['files']&&_0x154c7c['files']['length']>0x0){const _0x263a22=new FormData();_0x263a22['append']('instructions',_0x154c7c['instructions']);for(const _0x128b3c of _0x154c7c['files']){_0x263a22['append']('attachments',_0x128b3c);}_0x557e34=_0x263a22;}else _0x51d72a['Content-Type']='application/json',_0x557e34=JSON['stringify']({'instructions':_0x154c7c['instructions']});const _0x196f03=await fetch(API_BASE+'/tasks/'+_0x3efe77+'/follow-up',{'method':'POST','headers':_0x51d72a,'body':_0x557e34});if(!_0x196f03['ok']){const _0x5eeefa=await _0x196f03['json']()['catch'](()=>({}));throw new Error(_0x5eeefa['error']||_0x5eeefa['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x196f03['statusText']);}return await _0x196f03['json']();},async 'getTaskRewindPoints'(_0x4b1c8f){if(!_0x4b1c8f)throw new Error('Task\x20ID\x20is\x20required');const _0x6c6439=await fetch(API_BASE+'/tasks/'+_0x4b1c8f+'/rewind-points');if(!_0x6c6439['ok']){const _0x34fce7=await _0x6c6439['json']()['catch'](()=>({}));throw new Error(_0x34fce7['error']||_0x34fce7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x6c6439['statusText']);}return await _0x6c6439['json']();},async 'rewindTask'(_0x253278,_0x18e4b2={}){if(!_0x253278)throw new Error('Task\x20ID\x20is\x20required');const _0x367b4a=Number['isInteger'](_0x18e4b2['targetFollowUpCount'])?_0x18e4b2['targetFollowUpCount']:0x0,_0x38d7f3={'targetFollowUpCount':_0x367b4a};typeof _0x18e4b2['instructions']==='string'&&_0x18e4b2['instructions']['trim']()&&(_0x38d7f3['instructions']=_0x18e4b2['instructions']['trim']());typeof _0x18e4b2['rewindFiles']==='boolean'&&(_0x38d7f3['rewindFiles']=_0x18e4b2['rewindFiles']);const _0x3d2ce3=await fetch(API_BASE+'/tasks/'+_0x253278+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38d7f3)});if(!_0x3d2ce3['ok']){const _0x2dbd83=await _0x3d2ce3['json']()['catch'](()=>({}));throw new Error(_0x2dbd83['error']||_0x2dbd83['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d2ce3['statusText']);}return await _0x3d2ce3['json']();},async 'login'(_0x58f23d,_0x349ca9){const _0x3be184=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x58f23d,'password':_0x349ca9})});if(!_0x3be184['ok']){const _0xb4ece2=await _0x3be184['json']();throw new Error(_0xb4ece2['message']||'Login\x20failed');}return await _0x3be184['json']();},async 'logout'(){const _0x971e9f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x971e9f['ok']){const _0x228c70=await _0x971e9f['json']();throw new Error(_0x228c70['message']||'Logout\x20failed');}return await _0x971e9f['json']();},async 'getCurrentUser'(){const _0x5124ae=await fetch(API_BASE+'/auth/me');if(!_0x5124ae['ok'])throw new Error('Not\x20authenticated');const _0x322bca=await _0x5124ae['json']();return _0x322bca['user'];},async 'getRolesInfo'(){const _0x411139=await fetch(API_BASE+'/users/roles');if(!_0x411139['ok']){const _0x47f5e9=await _0x411139['json']();throw new Error(_0x47f5e9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x411139['json']();},async 'getUsers'(){const _0x38246f=await fetch(API_BASE+'/users');if(!_0x38246f['ok']){const _0x2fb357=await _0x38246f['json']();throw new Error(_0x2fb357['message']||'Failed\x20to\x20get\x20users');}return await _0x38246f['json']();},async 'getUser'(_0x36f403){const _0x55f686=await fetch(API_BASE+'/users/'+_0x36f403);if(!_0x55f686['ok']){const _0x596ddf=await _0x55f686['json']();throw new Error(_0x596ddf['message']||'Failed\x20to\x20get\x20user');}return await _0x55f686['json']();},async 'createUser'(_0x767695){const _0x2226a3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x767695)});if(!_0x2226a3['ok']){const _0x167bd5=await _0x2226a3['json']();throw new Error(_0x167bd5['message']||'Failed\x20to\x20create\x20user');}return await _0x2226a3['json']();},async 'updateUser'(_0xb013ac,_0x88c1fa){const _0x356076=await fetch(API_BASE+'/users/'+_0xb013ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x88c1fa)});if(!_0x356076['ok']){const _0x2c7b98=await _0x356076['json']();throw new Error(_0x2c7b98['message']||'Failed\x20to\x20update\x20user');}return await _0x356076['json']();},async 'deleteUser'(_0x10e3ae){const _0x29bc31=await fetch(API_BASE+'/users/'+_0x10e3ae,{'method':'DELETE'});if(!_0x29bc31['ok']){const _0x39e447=await _0x29bc31['json']();throw new Error(_0x39e447['message']||'Failed\x20to\x20delete\x20user');}return await _0x29bc31['json']();},async 'stopAllContainers'(){const _0x19b243=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2c0f22=await _0x19b243['json']()['catch'](()=>({}));if(!_0x19b243['ok'])throw new Error(_0x2c0f22['message']||_0x2c0f22['error']||'Failed\x20to\x20stop\x20containers');return _0x2c0f22;},async 'removeStoppedContainers'(){const _0xdf14bb=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x59a6df=await _0xdf14bb['json']()['catch'](()=>({}));if(!_0xdf14bb['ok'])throw new Error(_0x59a6df['message']||_0x59a6df['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x59a6df;},async 'pruneDockerResources'(){const _0x122290=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x51f2f6=await _0x122290['json']()['catch'](()=>({}));if(!_0x122290['ok'])throw new Error(_0x51f2f6['message']||_0x51f2f6['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x51f2f6;},async 'createPasswordToken'(_0x23fde9,_0x34e61e='setup',_0x3e26db=![]){const _0x205779=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x23fde9,'type':_0x34e61e,'sendEmail':_0x3e26db})});if(!_0x205779['ok']){const _0x6c1d7f=await _0x205779['json']();throw new Error(_0x6c1d7f['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x205779['json']();},async 'getEmailConfig'(){const _0x1ef3da=await fetch(API_BASE+'/password/email-config');if(!_0x1ef3da['ok']){const _0x26461b=await _0x1ef3da['json']();throw new Error(_0x26461b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x1ef3da['json']();},async 'updateTaskName'(_0x1ba7c4,_0x27f7e0){const _0x30f594=await fetch(API_BASE+'/tasks/'+_0x1ba7c4,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x27f7e0})});if(!_0x30f594['ok']){const _0x31387d=await _0x30f594['json']();throw new Error(_0x31387d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30f594['json']();},async 'pinTask'(_0x51d780,_0x5e2d07,_0x3c4f57=null){if(!_0x51d780)throw new Error('Task\x20ID\x20is\x20required');const _0x4e69b2={'pinned':_0x5e2d07};_0x3c4f57&&_0x3c4f57['length']>0x0&&(_0x4e69b2['additionalTaskIds']=_0x3c4f57);const _0xd76895=await fetch(API_BASE+'/tasks/'+_0x51d780+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e69b2)});if(!_0xd76895['ok']){const _0x776a55=await _0xd76895['json']();throw new Error(_0x776a55['error']||'Failed\x20to\x20pin\x20task');}return await _0xd76895['json']();},async 'setTaskWinner'(_0x2dfc50,_0x7b9f9,_0x3d861c=[]){if(!_0x2dfc50)throw new Error('Task\x20ID\x20is\x20required');const _0x86092f=await fetch(API_BASE+'/tasks/'+_0x2dfc50+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x7b9f9,'siblings':_0x3d861c})});if(!_0x86092f['ok']){const _0x1461d9=await _0x86092f['json']();throw new Error(_0x1461d9['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x86092f['json']();},async 'setTaskLoser'(_0x5e4595,_0x2266ee){if(!_0x5e4595)throw new Error('Task\x20ID\x20is\x20required');const _0x2e9b5a=await fetch(API_BASE+'/tasks/'+_0x5e4595+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2266ee})});if(!_0x2e9b5a['ok']){const _0x3c7415=await _0x2e9b5a['json']();throw new Error(_0x3c7415['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2e9b5a['json']();},async 'createTaskGroup'(_0x1ec8ae){const _0x27be4a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ec8ae)});if(!_0x27be4a['ok']){const _0x5ebad6=await _0x27be4a['json']();throw new Error(_0x5ebad6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x27be4a['json']();},async 'getTaskGroups'(_0x106c7f={}){const _0x171469=new URLSearchParams();if(_0x106c7f['userId'])_0x171469['set']('userId',String(_0x106c7f['userId']));if(_0x106c7f['status'])_0x171469['set']('status',String(_0x106c7f['status']));if(_0x106c7f['limit'])_0x171469['set']('limit',String(_0x106c7f['limit']));const _0xfff19a=API_BASE+'/tasks/groups'+(_0x171469['toString']()?'?'+_0x171469['toString']():''),_0x4c8865=await fetch(_0xfff19a);if(!_0x4c8865['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4c8865['json']();},async 'getTaskGroup'(_0x583e79){const _0x44cf03=await fetch(API_BASE+'/tasks/groups/'+_0x583e79);if(!_0x44cf03['ok']){const _0x7c066d=await _0x44cf03['json']();throw new Error(_0x7c066d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x44cf03['json']();},async 'updateTaskGroup'(_0x3b56b6,_0x3c14dc,_0x53486d){const _0x227ffb=await fetch(API_BASE+'/tasks/'+_0x3b56b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3c14dc,'groupIndex':_0x53486d})});if(!_0x227ffb['ok']){const _0x9ab8e2=await _0x227ffb['json']();throw new Error(_0x9ab8e2['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x227ffb['json']();},async 'removeTaskFromGroup'(_0x508db5){return this['updateTaskGroup'](_0x508db5,null,null);},async 'deleteTaskGroup'(_0x40cb99,_0x54f411=![]){const _0x559abc=_0x54f411?'?deleteTasks=true':'',_0x401018=await fetch(API_BASE+'/tasks/groups/'+_0x40cb99+_0x559abc,{'method':'DELETE'});if(!_0x401018['ok']){const _0x48575f=await _0x401018['json']();throw new Error(_0x48575f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x422106,_0x24093a){const _0x49ea93=await fetch(API_BASE+'/tasks/groups/'+_0x422106+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x24093a})});if(!_0x49ea93['ok']){const _0x247483=await _0x49ea93['json']();throw new Error(_0x247483['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x49ea93['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a0da1){if(!_0x1a0da1)throw new Error('Task\x20ID\x20is\x20required');const _0x4f4f54=await fetch(API_BASE+'/tasks/'+_0x1a0da1+'/comments');if(!_0x4f4f54['ok']){const _0x2260b5=await _0x4f4f54['json']()['catch'](()=>({}));throw new Error(_0x2260b5['error']||'Failed\x20to\x20get\x20comments');}return await _0x4f4f54['json']();},async 'addComment'(_0x584e09,_0x1b6db4){if(!_0x584e09)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b6db4)throw new Error('Comment\x20content\x20is\x20required');const _0x5968b2=await fetch(API_BASE+'/tasks/'+_0x584e09+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b6db4})});if(!_0x5968b2['ok']){const _0x5d4977=await _0x5968b2['json']()['catch'](()=>({}));throw new Error(_0x5d4977['error']||'Failed\x20to\x20add\x20comment');}return await _0x5968b2['json']();},async 'updateComment'(_0x42b38f,_0x498c8d,_0x3dea9f){if(!_0x42b38f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x498c8d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3dea9f)throw new Error('Comment\x20content\x20is\x20required');const _0x25dc65=await fetch(API_BASE+'/tasks/'+_0x42b38f+'/comments/'+_0x498c8d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3dea9f})});if(!_0x25dc65['ok']){const _0x489e82=await _0x25dc65['json']()['catch'](()=>({}));throw new Error(_0x489e82['error']||'Failed\x20to\x20update\x20comment');}return await _0x25dc65['json']();},async 'deleteComment'(_0x47cdb0,_0x32e0fe){if(!_0x47cdb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x32e0fe)throw new Error('Comment\x20ID\x20is\x20required');const _0x1b46aa=await fetch(API_BASE+'/tasks/'+_0x47cdb0+'/comments/'+_0x32e0fe,{'method':'DELETE'});if(!_0x1b46aa['ok']){const _0x57671a=await _0x1b46aa['json']()['catch'](()=>({}));throw new Error(_0x57671a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x1b46aa['json']();},async 'createObjective'(_0x599500){const _0x11610b={'objective':!![],'name':_0x599500['name']||'','environment':_0x599500['environment']||null,'agents':_0x599500['agents']||[],'branches':_0x599500['branches']||{},'isPinned':_0x599500['isPinned']||![],'parentObjectiveId':_0x599500['parentObjectiveId']||null,'env_vars':_0x599500['envVars']||{},'parameters':{'instructions':_0x599500['instructions']||''},'files':_0x599500['files']||[],'jira':_0x599500['jira']||null};return this['createTask'](_0x11610b);},async 'updateObjective'(_0x42c56d,_0x52fbb7,_0xf799b1=[],_0x41da19=[]){let _0x1406bb,_0x5c3596={};const _0x175431={..._0x52fbb7};_0x41da19&&_0x41da19['length']>0x0&&(_0x175431['removeAttachments']=_0x41da19);if(_0xf799b1&&_0xf799b1['length']>0x0){const _0x16c6c1=new FormData();for(const [_0x157f13,_0x3fc782]of Object['entries'](_0x175431)){if(_0x3fc782==null)continue;typeof _0x3fc782==='object'?_0x16c6c1['append'](_0x157f13,JSON['stringify'](_0x3fc782)):_0x16c6c1['append'](_0x157f13,String(_0x3fc782));}for(const _0x3b0b8b of _0xf799b1){_0x16c6c1['append']('attachments',_0x3b0b8b);}_0x1406bb=_0x16c6c1;}else _0x5c3596['Content-Type']='application/json',_0x1406bb=JSON['stringify'](_0x175431);const _0x5aa64d=await fetch(API_BASE+'/tasks/'+_0x42c56d,{'method':'PATCH','headers':_0x5c3596,'body':_0x1406bb});if(!_0x5aa64d['ok']){const _0x1527f3=await _0x5aa64d['json']();throw new Error(_0x1527f3['error']||'Failed\x20to\x20update\x20objective');}return await _0x5aa64d['json']();},async 'deleteObjective'(_0x4ad2aa){return this['deleteTask'](_0x4ad2aa);},async 'launchObjective'(_0x5b999,_0x24207d={}){const _0x1bab3a=await fetch(API_BASE+'/tasks/'+_0x5b999+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24207d)});if(!_0x1bab3a['ok']){const _0x54be60=await _0x1bab3a['json']();throw new Error(_0x54be60['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1bab3a['json']();},async 'getObjectiveAttachments'(_0x371f90){return this['getTaskAttachments'](_0x371f90);},async 'createJudgeTask'({environment:_0x3f321a,judgeAgent:_0x5d651b,groupId:_0x12e43b,taskIds:_0x276113,judgeCustomInstructions:_0xbd33b6,isPinned:_0x542e93}){const _0xf39a7=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3f321a,'judgeAgent':_0x5d651b,'groupId':_0x12e43b,'taskIds':_0x276113,'judgeCustomInstructions':_0xbd33b6,'isPinned':_0x542e93})});if(!_0xf39a7['ok']){const _0x29dbef=await _0xf39a7['json']();throw new Error(_0x29dbef['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xf39a7['json']();},async 'getJudgeTasks'(_0x3d27c9){const _0x23d583=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3d27c9));if(!_0x23d583['ok']){const _0x4671f4=await _0x23d583['json']();throw new Error(_0x4671f4['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x23d583['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x32f7b1,_0x319c76,_0xaa00c9=''){const _0x3fcf7a=await fetch(API_BASE+'/tasks/'+_0x32f7b1+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x319c76,'customPreamble':_0xaa00c9})});if(!_0x3fcf7a['ok']){const _0x2ab308=await _0x3fcf7a['json']();throw new Error(_0x2ab308['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x3fcf7a['json']();},async 'getJiraConfig'(){const _0x15f174=await fetch(API_BASE+'/jira/config');if(!_0x15f174['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x15f174['json']();},async 'getJiraIssue'(_0x1a8059){const _0x3d820c=await fetch(API_BASE+'/jira/issues/'+_0x1a8059);if(!_0x3d820c['ok']){const _0x47c365=await _0x3d820c['json']()['catch'](()=>({}));throw new Error(_0x47c365['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3d820c['statusText']);}return await _0x3d820c['json']();},async 'searchJiraIssues'(_0x283400,_0x9dbd25=0x14){const _0x2d6986=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x283400,'maxResults':_0x9dbd25})});if(!_0x2d6986['ok']){const _0x242f07=await _0x2d6986['json']()['catch'](()=>({}));throw new Error(_0x242f07['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2d6986['statusText']);}return await _0x2d6986['json']();},async 'postJiraComment'(_0x2a40a5,_0x17a9ae){const _0x4e3564=await fetch(API_BASE+'/jira/issues/'+_0x2a40a5+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x17a9ae})});if(!_0x4e3564['ok']){const _0x7f51a3=await _0x4e3564['json']()['catch'](()=>({}));throw new Error(_0x7f51a3['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4e3564['statusText']);}return await _0x4e3564['json']();},async 'getJiraComments'(_0x16891d){const _0x1e31f6=await fetch(API_BASE+'/jira/issues/'+_0x16891d+'/comments');if(!_0x1e31f6['ok']){const _0x2d0378=await _0x1e31f6['json']()['catch'](()=>({}));throw new Error(_0x2d0378['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1e31f6['statusText']);}return await _0x1e31f6['json']();},async 'promptParameter'({environment:_0x4ddb47,command:_0x5899bf,parser:parser='json'}){const _0xe34122=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4ddb47,'command':_0x5899bf,'parser':parser})});if(!_0xe34122['ok']){const _0x58ab2b=await _0xe34122['json']()['catch'](()=>({}));throw new Error(_0x58ab2b['message']||_0x58ab2b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xe34122['statusText']);}return await _0xe34122['json']();},async 'promptParameterStream'(_0x42dd0d,_0x3b7555){const _0x2d5927=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dd0d)});if(!_0x2d5927['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2d5927['statusText']);const _0x4ae719=_0x2d5927['body']['getReader'](),_0x57c5cc=new TextDecoder();let _0x5d6399='';return new Promise((_0x4e1573,_0x12828d)=>{const _0x3a2ddd=async()=>{try{const {done:_0x49c7c7,value:_0x57f075}=await _0x4ae719['read']();if(_0x49c7c7)return;_0x5d6399+=_0x57c5cc['decode'](_0x57f075,{'stream':!![]});const _0xfb1f75=_0x5d6399['split']('\x0a\x0a');_0x5d6399=_0xfb1f75['pop']()||'';for(const _0x339742 of _0xfb1f75){if(!_0x339742['trim']())continue;const _0x23e156=_0x339742['split']('\x0a');let _0x388eb8='message',_0x100687='';for(const _0x164d1f of _0x23e156){if(_0x164d1f['startsWith']('event:'))_0x388eb8=_0x164d1f['substring'](0x6)['trim']();else _0x164d1f['startsWith']('data:')&&(_0x100687=_0x164d1f['substring'](0x5)['trim']());}if(!_0x100687)continue;try{const _0x2f0d36=JSON['parse'](_0x100687);if(_0x388eb8==='progress'&&_0x3b7555)_0x3b7555(_0x2f0d36['stage'],_0x2f0d36['message']);else{if(_0x388eb8==='result'){_0x4e1573(_0x2f0d36);return;}else{if(_0x388eb8==='error'){let _0x37f542=_0x2f0d36['message']||_0x2f0d36['error']||'Prompt\x20command\x20failed';_0x2f0d36['rawOutput']&&(_0x37f542+='\x0a\x0aRaw\x20output:\x0a'+_0x2f0d36['rawOutput']);_0x12828d(new Error(_0x37f542));return;}}}}catch(_0x3ca1dd){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3ca1dd),console['error']('Event\x20type:',_0x388eb8),console['error']('Event\x20data:',_0x100687),console['error']('First\x20200\x20chars:',_0x100687['substring'](0x0,0xc8)),_0x12828d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3ca1dd['message']+'\x0a\x0aData:\x20'+_0x100687['substring'](0x0,0x1f4)));return;}}_0x3a2ddd();}catch(_0xb11f98){_0x12828d(_0xb11f98);}};_0x3a2ddd();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x228a57){const _0x27aebd=await fetch(''+API_BASE+_0x228a57);if(!_0x27aebd['ok']){const _0x31235e=await _0x27aebd['json']()['catch'](()=>({'error':_0x27aebd['statusText']})),_0x198d66=new Error(_0x31235e['error']||_0x31235e['message']||_0x27aebd['statusText']);if(_0x31235e['detail']!==undefined)_0x198d66['detail']=_0x31235e['detail'];throw _0x198d66;}return await _0x27aebd['json']();},async 'post'(_0x2e47a0,_0x5d4f75){const _0xac1655=await fetch(''+API_BASE+_0x2e47a0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d4f75)});if(!_0xac1655['ok']){const _0x1cd886=await _0xac1655['json']()['catch'](()=>({'error':_0xac1655['statusText']})),_0xdfc0de=new Error(_0x1cd886['error']||_0x1cd886['message']||_0xac1655['statusText']);if(_0x1cd886['detail']!==undefined)_0xdfc0de['detail']=_0x1cd886['detail'];throw _0xdfc0de;}return await _0xac1655['json']();},async 'put'(_0x45c291,_0x363503){const _0x12049e=await fetch(''+API_BASE+_0x45c291,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x363503)});if(!_0x12049e['ok']){const _0x378b3e=await _0x12049e['json']()['catch'](()=>({'error':_0x12049e['statusText']})),_0x5e4c5=new Error(_0x378b3e['error']||_0x378b3e['message']||_0x12049e['statusText']);if(_0x378b3e['detail']!==undefined)_0x5e4c5['detail']=_0x378b3e['detail'];throw _0x5e4c5;}return await _0x12049e['json']();},async 'delete'(_0x33f346,_0x5c399a){const _0x49f777={'method':'DELETE'};_0x5c399a&&(_0x49f777['headers']={'Content-Type':'application/json'},_0x49f777['body']=JSON['stringify'](_0x5c399a));const _0x3a43cd=await fetch(''+API_BASE+_0x33f346,_0x49f777);if(!_0x3a43cd['ok']){const _0x39ab94=await _0x3a43cd['json']()['catch'](()=>({'error':_0x3a43cd['statusText']})),_0x4596b7=new Error(_0x39ab94['error']||_0x39ab94['message']||_0x3a43cd['statusText']);if(_0x39ab94['detail']!==undefined)_0x4596b7['detail']=_0x39ab94['detail'];throw _0x4596b7;}return await _0x3a43cd['json']();},async 'getSkills'(){const _0x583aad=await fetch(API_BASE+'/skills');if(!_0x583aad['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x583aad['statusText']);return await _0x583aad['json']();},async 'getSkill'(_0x61cb57){const _0x5e60cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x61cb57));if(!_0x5e60cc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5e60cc['statusText']);return await _0x5e60cc['json']();},async 'createSkill'(_0x503280){const _0x17ae51=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x503280)});if(!_0x17ae51['ok']){const _0xa7eda8=await _0x17ae51['json']()['catch'](()=>({'error':_0x17ae51['statusText']})),_0x1183c2=new Error(_0xa7eda8['error']||_0xa7eda8['message']||_0x17ae51['statusText']);if(_0xa7eda8['detail']!==undefined)_0x1183c2['detail']=_0xa7eda8['detail'];throw _0x1183c2;}return await _0x17ae51['json']();},async 'updateSkill'(_0x12ac6c,_0x564f3e){const _0x3c60fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12ac6c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f3e)});if(!_0x3c60fa['ok']){const _0x31f5cc=await _0x3c60fa['json']()['catch'](()=>({'error':_0x3c60fa['statusText']})),_0x3829d0=new Error(_0x31f5cc['error']||_0x31f5cc['message']||_0x3c60fa['statusText']);if(_0x31f5cc['detail']!==undefined)_0x3829d0['detail']=_0x31f5cc['detail'];throw _0x3829d0;}return await _0x3c60fa['json']();},async 'deleteSkill'(_0x2fa002){const _0x32f45e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2fa002),{'method':'DELETE'});if(!_0x32f45e['ok']){const _0x5dbcf2=await _0x32f45e['json']()['catch'](()=>({'error':_0x32f45e['statusText']})),_0x2305a8=new Error(_0x5dbcf2['error']||_0x5dbcf2['message']||_0x32f45e['statusText']);if(_0x5dbcf2['detail']!==undefined)_0x2305a8['detail']=_0x5dbcf2['detail'];throw _0x2305a8;}return await _0x32f45e['json']();},async 'getSkillFile'(_0x1dfe2c,_0x230c77){const _0x37fc1f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1dfe2c)+'/files/'+_0x230c77);if(!_0x37fc1f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x37fc1f['statusText']);return await _0x37fc1f['json']();},async 'saveSkillFile'(_0x2bceac,_0x55b4d4,_0x1d4ca3){const _0x167da4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2bceac)+'/files/'+_0x55b4d4,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4ca3})});if(!_0x167da4['ok']){const _0x21839f=await _0x167da4['json']()['catch'](()=>({'error':_0x167da4['statusText']})),_0x562abb=new Error(_0x21839f['error']||_0x21839f['message']||_0x167da4['statusText']);if(_0x21839f['detail']!==undefined)_0x562abb['detail']=_0x21839f['detail'];throw _0x562abb;}return await _0x167da4['json']();},async 'deleteSkillFile'(_0x2aa230,_0x11b1a){const _0x29bb31=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2aa230)+'/files/'+_0x11b1a,{'method':'DELETE'});if(!_0x29bb31['ok']){const _0x3ae048=await _0x29bb31['json']()['catch'](()=>({'error':_0x29bb31['statusText']})),_0x434002=new Error(_0x3ae048['error']||_0x3ae048['message']||_0x29bb31['statusText']);if(_0x3ae048['detail']!==undefined)_0x434002['detail']=_0x3ae048['detail'];throw _0x434002;}return await _0x29bb31['json']();},async 'pullSkills'(){const _0x175661=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x175661['ok']){const _0x1848b8=await _0x175661['json']()['catch'](()=>({'error':_0x175661['statusText']})),_0x232780=new Error(_0x1848b8['error']||_0x1848b8['message']||_0x175661['statusText']);if(_0x1848b8['detail']!==undefined)_0x232780['detail']=_0x1848b8['detail'];throw _0x232780;}return await _0x175661['json']();},async 'commitSkills'(_0x1e4478,_0x3a574e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3a574e,_0x111c54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1e4478,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x111c54['ok']){const _0xd04d39=await _0x111c54['json']()['catch'](()=>({'error':_0x111c54['statusText']})),_0x15e851=new Error(_0xd04d39['error']||_0xd04d39['message']||_0x111c54['statusText']);if(_0xd04d39['detail']!==undefined)_0x15e851['detail']=_0xd04d39['detail'];throw _0x15e851;}return await _0x111c54['json']();},async 'discardSkillsChanges'(){const _0x1a22bd=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1a22bd['ok']){const _0x217e6d=await _0x1a22bd['json']()['catch'](()=>({'error':_0x1a22bd['statusText']})),_0x53f22c=new Error(_0x217e6d['error']||_0x217e6d['message']||_0x1a22bd['statusText']);if(_0x217e6d['detail']!==undefined)_0x53f22c['detail']=_0x217e6d['detail'];throw _0x53f22c;}return await _0x1a22bd['json']();},async 'getSkillCatalog'(){const _0x10934b=await fetch(API_BASE+'/external-skills/catalog');if(!_0x10934b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x10934b['statusText']);return await _0x10934b['json']();},async 'getImportedSkillsRegistry'(){const _0x3d5c2c=await fetch(API_BASE+'/external-skills/registry');if(!_0x3d5c2c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3d5c2c['statusText']);return await _0x3d5c2c['json']();},async 'importCatalogSkill'(_0xc79c1d){const _0x37b83b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0xc79c1d})});if(!_0x37b83b['ok']){const _0x155496=await _0x37b83b['json']()['catch'](()=>({'error':_0x37b83b['statusText']})),_0x379dce=new Error(_0x155496['error']||_0x155496['message']||_0x37b83b['statusText']);if(_0x155496['detail']!==undefined)_0x379dce['detail']=_0x155496['detail'];throw _0x379dce;}return await _0x37b83b['json']();},async 'importSkillFromGit'(_0x340512,_0x291480,_0xdb219b='main',_0x44cd40=null){const _0x423358=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x340512,'skillPath':_0x291480,'branch':_0xdb219b,'skillId':_0x44cd40})});if(!_0x423358['ok']){const _0x4405e5=await _0x423358['json']()['catch'](()=>({'error':_0x423358['statusText']})),_0x5b26c3=new Error(_0x4405e5['error']||_0x4405e5['message']||_0x423358['statusText']);if(_0x4405e5['detail']!==undefined)_0x5b26c3['detail']=_0x4405e5['detail'];throw _0x5b26c3;}return await _0x423358['json']();},async 'probeMarketplace'(_0x3b0bda,_0x365c79='main'){const _0xe3ab2e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3b0bda,'branch':_0x365c79})});if(!_0xe3ab2e['ok']){const _0x3a7a03=await _0xe3ab2e['json']()['catch'](()=>({'error':_0xe3ab2e['statusText']})),_0xf70b5b=new Error(_0x3a7a03['error']||_0x3a7a03['message']||_0xe3ab2e['statusText']);if(_0x3a7a03['detail']!==undefined)_0xf70b5b['detail']=_0x3a7a03['detail'];throw _0xf70b5b;}return await _0xe3ab2e['json']();},async 'importMarketplaceBundle'(_0x42d48d,_0x14cce7,_0x4b126d,_0x550af9=null){const _0x546695=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x42d48d,'branch':_0x14cce7,'bundleId':_0x4b126d,'selectedSkills':_0x550af9})});if(!_0x546695['ok']){const _0x36e089=await _0x546695['json']()['catch'](()=>({'error':_0x546695['statusText']})),_0x2dee83=new Error(_0x36e089['error']||_0x36e089['message']||_0x546695['statusText']);if(_0x36e089['detail']!==undefined)_0x2dee83['detail']=_0x36e089['detail'];throw _0x2dee83;}return await _0x546695['json']();},async 'importSkillFromFolder'(_0x42b112,_0x4bc7af=null){const _0x5c0448=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x42b112,'skillId':_0x4bc7af})});if(!_0x5c0448['ok']){const _0x7076f2=await _0x5c0448['json']()['catch'](()=>({'error':_0x5c0448['statusText']})),_0x3652a1=new Error(_0x7076f2['error']||_0x7076f2['message']||_0x5c0448['statusText']);if(_0x7076f2['detail']!==undefined)_0x3652a1['detail']=_0x7076f2['detail'];throw _0x3652a1;}return await _0x5c0448['json']();},async 'importSkillFromNpm'(_0x23d541,_0x3c8320='latest',_0x1676bc=null,_0x18c096=null){const _0x45398b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x23d541,'version':_0x3c8320,'skillId':_0x1676bc,'registry':_0x18c096})});if(!_0x45398b['ok']){const _0x593a12=await _0x45398b['json']()['catch'](()=>({'error':_0x45398b['statusText']})),_0xc6a97e=new Error(_0x593a12['error']||_0x593a12['message']||_0x45398b['statusText']);if(_0x593a12['detail']!==undefined)_0xc6a97e['detail']=_0x593a12['detail'];throw _0xc6a97e;}return await _0x45398b['json']();},async 'checkSkillUpdates'(_0x15d3dc){const _0x2c1113=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x15d3dc)+'/check-updates',{'method':'POST'});if(!_0x2c1113['ok']){const _0x6c2e3=await _0x2c1113['json']()['catch'](()=>({'error':_0x2c1113['statusText']})),_0x58dd15=new Error(_0x6c2e3['error']||_0x6c2e3['message']||_0x2c1113['statusText']);if(_0x6c2e3['detail']!==undefined)_0x58dd15['detail']=_0x6c2e3['detail'];throw _0x58dd15;}return await _0x2c1113['json']();},async 'updateExternalSkill'(_0x354591){const _0xd990b7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x354591)+'/update',{'method':'POST'});if(!_0xd990b7['ok']){const _0x36cb90=await _0xd990b7['json']()['catch'](()=>({'error':_0xd990b7['statusText']})),_0xff76cc=new Error(_0x36cb90['error']||_0x36cb90['message']||_0xd990b7['statusText']);if(_0x36cb90['detail']!==undefined)_0xff76cc['detail']=_0x36cb90['detail'];throw _0xff76cc;}return await _0xd990b7['json']();},async 'updateSkillFlags'(_0x5076cc,_0x4c2456){const _0x5015fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5076cc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4c2456})});if(!_0x5015fd['ok']){const _0x57081b=await _0x5015fd['json']()['catch'](()=>({'error':_0x5015fd['statusText']})),_0x21b5ef=new Error(_0x57081b['error']||_0x57081b['message']||_0x5015fd['statusText']);if(_0x57081b['detail']!==undefined)_0x21b5ef['detail']=_0x57081b['detail'];throw _0x21b5ef;}return await _0x5015fd['json']();},async 'removeFromImportedRegistry'(_0x38a80c){const _0x463a22=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x38a80c)+'/registry',{'method':'DELETE'});if(!_0x463a22['ok']){const _0x55aa42=await _0x463a22['json']()['catch'](()=>({'error':_0x463a22['statusText']})),_0x1c71d2=new Error(_0x55aa42['error']||_0x55aa42['message']||_0x463a22['statusText']);if(_0x55aa42['detail']!==undefined)_0x1c71d2['detail']=_0x55aa42['detail'];throw _0x1c71d2;}return await _0x463a22['json']();},async 'getTeams'(){const _0x180f26=await fetch(API_BASE+'/teams');if(!_0x180f26['ok']){const _0x2ddc37=await _0x180f26['json']()['catch'](()=>({'message':_0x180f26['statusText']}));throw new Error(_0x2ddc37['message']||'Failed\x20to\x20get\x20teams');}return await _0x180f26['json']();},async 'getTeam'(_0x5a4303){const _0x4f474d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4303));if(!_0x4f474d['ok']){const _0x323210=await _0x4f474d['json']()['catch'](()=>({'message':_0x4f474d['statusText']}));throw new Error(_0x323210['message']||'Failed\x20to\x20get\x20team');}return await _0x4f474d['json']();},async 'createTeam'(_0x1d3e6d){const _0x10ab13=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d3e6d)});if(!_0x10ab13['ok']){const _0x2d30b0=await _0x10ab13['json']()['catch'](()=>({'message':_0x10ab13['statusText']}));throw new Error(_0x2d30b0['message']||'Failed\x20to\x20create\x20team');}return await _0x10ab13['json']();},async 'updateTeam'(_0x397200,_0x43325){const _0x1223a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397200),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43325)});if(!_0x1223a2['ok']){const _0x49cb8e=await _0x1223a2['json']()['catch'](()=>({'message':_0x1223a2['statusText']}));throw new Error(_0x49cb8e['message']||'Failed\x20to\x20update\x20team');}return await _0x1223a2['json']();},async 'deleteTeam'(_0x5c5fb3){const _0x15c494=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5c5fb3),{'method':'DELETE'});if(!_0x15c494['ok']){const _0x248363=await _0x15c494['json']()['catch'](()=>({'message':_0x15c494['statusText']}));throw new Error(_0x248363['message']||'Failed\x20to\x20delete\x20team');}return await _0x15c494['json']();},async 'addTeamMember'(_0x216296,_0x3593e9){const _0x115550=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x216296)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3593e9})});if(!_0x115550['ok']){const _0x2184f4=await _0x115550['json']()['catch'](()=>({'message':_0x115550['statusText']}));throw new Error(_0x2184f4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x115550['json']();},async 'removeTeamMember'(_0x3ef945,_0x140824){const _0x4171d6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3ef945)+'/members/'+encodeURIComponent(_0x140824),{'method':'DELETE'});if(!_0x4171d6['ok']){const _0x5c8ac0=await _0x4171d6['json']()['catch'](()=>({'message':_0x4171d6['statusText']}));throw new Error(_0x5c8ac0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4171d6['json']();},async 'getBindings'(_0xefdd4f={}){const _0x477a9f=new URLSearchParams();if(_0xefdd4f['resource_type'])_0x477a9f['set']('resource_type',_0xefdd4f['resource_type']);if(_0xefdd4f['resource_id'])_0x477a9f['set']('resource_id',_0xefdd4f['resource_id']);if(_0xefdd4f['subject_type'])_0x477a9f['set']('subject_type',_0xefdd4f['subject_type']);if(_0xefdd4f['subject_id'])_0x477a9f['set']('subject_id',_0xefdd4f['subject_id']);const _0x438447=_0x477a9f['toString'](),_0x4ce436=await fetch(API_BASE+'/bindings'+(_0x438447?'?'+_0x438447:''));if(!_0x4ce436['ok']){const _0x3723ed=await _0x4ce436['json']()['catch'](()=>({'message':_0x4ce436['statusText']}));throw new Error(_0x3723ed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x4ce436['json']();},async 'createBinding'(_0x3afb6b){const _0x5d6455=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afb6b)});if(!_0x5d6455['ok']){const _0x1622c1=await _0x5d6455['json']()['catch'](()=>({'message':_0x5d6455['statusText']}));throw new Error(_0x1622c1['message']||'Failed\x20to\x20create\x20binding');}return await _0x5d6455['json']();},async 'updateBinding'(_0x1e73e2,_0x59ddcb){const _0x48287b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1e73e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59ddcb)});if(!_0x48287b['ok']){const _0x1890cd=await _0x48287b['json']()['catch'](()=>({'message':_0x48287b['statusText']}));throw new Error(_0x1890cd['message']||'Failed\x20to\x20update\x20binding');}return await _0x48287b['json']();},async 'deleteBinding'(_0x22de82){const _0x46dd19=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x22de82),{'method':'DELETE'});if(!_0x46dd19['ok']){const _0x5b06ac=await _0x46dd19['json']()['catch'](()=>({'message':_0x46dd19['statusText']}));throw new Error(_0x5b06ac['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46dd19['json']();},async 'getRoleDefinitions'(){const _0x38768b=await fetch(API_BASE+'/roles');if(!_0x38768b['ok']){const _0x57d5b3=await _0x38768b['json']()['catch'](()=>({'message':_0x38768b['statusText']}));throw new Error(_0x57d5b3['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x38768b['json']();},async 'getRoleDefinition'(_0x31d11b){const _0x23ee38=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31d11b));if(!_0x23ee38['ok']){const _0x5e017f=await _0x23ee38['json']()['catch'](()=>({'message':_0x23ee38['statusText']}));throw new Error(_0x5e017f['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x23ee38['json']();},async 'createRoleDefinition'(_0x2ec901){const _0x55d52d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ec901)});if(!_0x55d52d['ok']){const _0x4462db=await _0x55d52d['json']()['catch'](()=>({'message':_0x55d52d['statusText']}));throw new Error(_0x4462db['message']||_0x4462db['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x55d52d['json']();},async 'updateRoleDefinition'(_0x28beac,_0x105096){const _0x281ce3=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x28beac),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x105096)});if(!_0x281ce3['ok']){const _0x3b7214=await _0x281ce3['json']()['catch'](()=>({'message':_0x281ce3['statusText']}));throw new Error(_0x3b7214['message']||_0x3b7214['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x281ce3['json']();},async 'deleteRoleDefinition'(_0x4be677){const _0x53e99c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4be677),{'method':'DELETE'});if(!_0x53e99c['ok']){const _0x5c84ee=await _0x53e99c['json']()['catch'](()=>({'message':_0x53e99c['statusText']}));throw new Error(_0x5c84ee['message']||_0x5c84ee['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x53e99c['json']();},async 'getAvailablePermissions'(){const _0x12ceb3=await fetch(API_BASE+'/roles/available-permissions');if(!_0x12ceb3['ok']){const _0x266d4f=await _0x12ceb3['json']()['catch'](()=>({'message':_0x12ceb3['statusText']}));throw new Error(_0x266d4f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x12ceb3['json']();},async 'getGitProviderAllowedTeams'(_0x15b1a0){const _0x28676c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x15b1a0)+'/allowed-teams');if(!_0x28676c['ok']){const _0x28dcc2=await _0x28676c['json']()['catch'](()=>({'message':_0x28676c['statusText']}));throw new Error(_0x28dcc2['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x28676c['json']();},async 'setGitProviderAllowedTeams'(_0x433703,_0x4ab385){const _0x478329=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x433703)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x4ab385})});if(!_0x478329['ok']){const _0x1af74f=await _0x478329['json']()['catch'](()=>({'message':_0x478329['statusText']}));throw new Error(_0x1af74f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x478329['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 _0x473eff=toastState['baseBottom'];toastState['toasts']['forEach'](_0xc8b511=>{_0xc8b511['el']['style']['bottom']=_0x473eff+'px';const _0x4b9091=_0xc8b511['el']['offsetHeight']||toastState['defaultHeight'];_0x473eff+=_0x4b9091+toastState['gap'];});});}function removeToastById(_0x257adf){const _0x4b171e=toastState['toasts']['findIndex'](_0x1bc1a2=>_0x1bc1a2['id']===_0x257adf);if(_0x4b171e===-0x1)return;const _0x12e253=toastState['toasts'][_0x4b171e];if(_0x12e253['timeoutId'])clearTimeout(_0x12e253['timeoutId']);_0x12e253['el']['classList']['remove']('show'),setTimeout(()=>_0x12e253['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4b171e,0x1),repositionAllToasts();}function registerToast(_0x52f7e7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x52f7e7),repositionAllToasts(),_0x52f7e7['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'(_0x360b23){const _0x48deea=new Date(_0x360b23),_0x4b3552=new Date(),_0x5dfb7d=_0x4b3552-_0x48deea,_0x511432=Math['floor'](_0x5dfb7d/0x3e8),_0xeeb92d=Math['floor'](_0x511432/0x3c),_0x2286f0=Math['floor'](_0xeeb92d/0x3c),_0x1ed5b4=Math['floor'](_0x2286f0/0x18);if(_0x511432<0x3c)return'now';if(_0xeeb92d<0x3c)return _0xeeb92d+'m\x20ago';if(_0x2286f0<0x18)return _0x2286f0+'h\x20ago';return _0x1ed5b4+'d\x20ago';},'getStatusIcon'(_0x27d8d3){switch(_0x27d8d3){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x227730){switch(_0x227730){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'(_0x4edc0b,_0x3efa44=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x266155={};_0x266155['text/plain']=new Blob([_0x4edc0b],{'type':'text/plain'});_0x3efa44&&(_0x266155['text/html']=new Blob([_0x3efa44],{'type':'text/html'}));const _0x1d6af5=new ClipboardItem(_0x266155);return await navigator['clipboard']['write']([_0x1d6af5]),!![];}catch(_0x374618){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x374618);}try{const _0x19bc4f=_0x8d9de8=>{_0x8d9de8['preventDefault'](),_0x8d9de8['clipboardData']['setData']('text/plain',_0x4edc0b),_0x3efa44&&_0x8d9de8['clipboardData']['setData']('text/html',_0x3efa44);};document['addEventListener']('copy',_0x19bc4f);const _0x47909c=document['execCommand']('copy');document['removeEventListener']('copy',_0x19bc4f);if(_0x47909c)return!![];}catch(_0x5b8ff1){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x5b8ff1);}try{const _0x11f15c=document['createElement']('textarea');_0x11f15c['value']=_0x4edc0b,_0x11f15c['style']['position']='fixed',_0x11f15c['style']['opacity']='0',_0x11f15c['style']['pointerEvents']='none',document['body']['appendChild'](_0x11f15c),_0x11f15c['select']();const _0x439c26=document['execCommand']('copy');return document['body']['removeChild'](_0x11f15c),_0x439c26;}catch(_0x1de342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1de342),![];}},'showToast'(_0x4d101d,_0x516447='info'){const _0x21b7ab=getNextToastId(),_0x282527=document['createElement']('div');_0x282527['className']='toast\x20toast-'+_0x516447,_0x282527['textContent']=_0x4d101d,_0x282527['dataset']['toastId']=_0x21b7ab,document['body']['appendChild'](_0x282527);const _0x1932e2=_0x516447==='error'?0x2710:0xbb8,_0x1b80c2=setTimeout(()=>{removeToastById(_0x21b7ab);},_0x1932e2),_0x3e1471={'id':_0x21b7ab,'el':_0x282527,'timeoutId':_0x1b80c2};return registerToast(_0x3e1471),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x282527['classList']['add']('show');});}),_0x21b7ab;},'showError'(_0x100aa0){console['error'](_0x100aa0);const _0x4770cf=typeof _0x100aa0==='string'?_0x100aa0:_0x100aa0['message']||'An\x20error\x20occurred';this['showToast'](_0x4770cf,'error');},'showSuccess'(_0x76384b){this['showToast'](_0x76384b,'success');},'capitalize'(_0x5653cd){if(!_0x5653cd)return'';return _0x5653cd['charAt'](0x0)['toUpperCase']()+_0x5653cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x146bcd){if(_0x146bcd===null||_0x146bcd===undefined)return'';return String(_0x146bcd)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');},'ansiToHtml'(_0x5b00bf){if(_0x5b00bf===null||_0x5b00bf===undefined)return'';let _0x3ac0b5=this['escapeHtml'](_0x5b00bf);const _0x45b046={'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'},_0x1af33d={'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 _0x1370fb=0x0;return _0x3ac0b5=_0x3ac0b5['replace'](/\x1b\[([0-9;]*)m/g,(_0x3680d6,_0x36f69e)=>{if(!_0x36f69e||_0x36f69e==='0'){const _0x15aad9='</span>'['repeat'](_0x1370fb);return _0x1370fb=0x0,_0x15aad9;}const _0x213bc0=_0x36f69e['split'](';'),_0x3dbb40=[];for(const _0x8c7c72 of _0x213bc0){if(_0x8c7c72==='1')_0x3dbb40['push']('font-weight:bold');else{if(_0x8c7c72==='2')_0x3dbb40['push']('opacity:0.7');else{if(_0x8c7c72==='3')_0x3dbb40['push']('font-style:italic');else{if(_0x8c7c72==='4')_0x3dbb40['push']('text-decoration:underline');else{if(_0x8c7c72==='9')_0x3dbb40['push']('text-decoration:line-through');else{if(_0x45b046[_0x8c7c72])_0x3dbb40['push']('color:'+_0x45b046[_0x8c7c72]);else{if(_0x1af33d[_0x8c7c72])_0x3dbb40['push']('background-color:'+_0x1af33d[_0x8c7c72]);}}}}}}}if(_0x3dbb40['length']>0x0)return _0x1370fb++,'<span\x20style=\x22'+_0x3dbb40['join'](';')+'\x22>';return'';}),_0x3ac0b5+='</span>'['repeat'](_0x1370fb),_0x3ac0b5=_0x3ac0b5['replace'](/\\u001b\[([0-9;]*)m/g,(_0x6eb13c,_0x251a4a)=>{if(!_0x251a4a||_0x251a4a==='0')return'';const _0x43d945=_0x251a4a['split'](';'),_0x3d6435=[];for(const _0x5931a4 of _0x43d945){if(_0x5931a4==='1')_0x3d6435['push']('font-weight:bold');else{if(_0x45b046[_0x5931a4])_0x3d6435['push']('color:'+_0x45b046[_0x5931a4]);else{if(_0x1af33d[_0x5931a4])_0x3d6435['push']('background-color:'+_0x1af33d[_0x5931a4]);}}}if(_0x3d6435['length']>0x0)return'<span\x20style=\x22'+_0x3d6435['join'](';')+'\x22>';return'';}),_0x3ac0b5;},'showModal'({title:_0xb9fcd5,content:_0x46d4cf,buttons:buttons=[]}){const _0x196253='\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'](_0xb9fcd5)+'</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'+_0x46d4cf+'\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']((_0x334ecb,_0x4320d0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x334ecb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4320d0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x334ecb['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',_0x45400c=document['createElement']('div');_0x45400c['id']='utils-modal',_0x45400c['className']='modal',_0x45400c['innerHTML']=_0x196253,document['body']['appendChild'](_0x45400c);const _0x3b916a=document['getElementById']('utils-modal-close');_0x3b916a&&_0x3b916a['addEventListener']('click',()=>this['hideModal']());const _0x2f15ca=_0x45400c['querySelectorAll']('[data-btn-index]');_0x2f15ca['forEach'](_0x161146=>{const _0x2dfa07=parseInt(_0x161146['dataset']['btnIndex']);buttons[_0x2dfa07]?.['onClick']&&_0x161146['addEventListener']('click',buttons[_0x2dfa07]['onClick']);});const _0x36e025=document['getElementById']('utils-modal-overlay');_0x36e025&&_0x36e025['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3182a1=document['getElementById']('utils-modal');_0x3182a1&&_0x3182a1['remove']();},'parseKeyValuePairs'(_0x5bae83){const _0x5adf00={};if(!_0x5bae83)return _0x5adf00;return _0x5bae83['split'](/\r?\n/)['map'](_0x1d0e9a=>_0x1d0e9a['trim']())['filter'](Boolean)['forEach'](_0x8c5879=>{const _0x3a4075=_0x8c5879['indexOf']('=');if(_0x3a4075>0x0){const _0x1556bc=_0x8c5879['slice'](0x0,_0x3a4075)['trim'](),_0x4e7f6b=_0x8c5879['slice'](_0x3a4075+0x1)['trim']();if(_0x1556bc)_0x5adf00[_0x1556bc]=_0x4e7f6b;}}),_0x5adf00;},'debounce'(_0x319e30,_0x274262=0xfa){let _0x3f96db=null;return(..._0x810cc5)=>{clearTimeout(_0x3f96db),_0x3f96db=setTimeout(()=>_0x319e30['apply'](this,_0x810cc5),_0x274262);};},'formatTimestamp'(_0x1f0e4a){if(!_0x1f0e4a)return'N/A';const _0x5efcf0=new Date(_0x1f0e4a);return _0x5efcf0['toLocaleDateString']()+'\x20'+_0x5efcf0['toLocaleTimeString']();},'getQueryParams'(){const _0xdcbc5d=new URLSearchParams(window['location']['search']),_0x296a36={};for(const [_0x276459,_0x1e240d]of _0xdcbc5d){_0x296a36[_0x276459]=_0x1e240d;}return _0x296a36;},'formatDuration'(_0x78c5a,_0x42568e){if(!_0x78c5a)return'N/A';const _0xd4032b=new Date(_0x78c5a),_0x6ba020=_0x42568e?new Date(_0x42568e):new Date(),_0x5ac7ae=_0x6ba020-_0xd4032b;if(_0x5ac7ae<0x0)return'0s';const _0x79973c=Math['floor'](_0x5ac7ae/0x3e8),_0x18cf37=Math['floor'](_0x79973c/0x3c),_0x9ad4e4=Math['floor'](_0x18cf37/0x3c),_0xe46095=Math['floor'](_0x9ad4e4/0x18);if(_0x79973c<0x3c)return _0x79973c+'s';if(_0x18cf37<0x3c)return _0x18cf37+'m\x20'+_0x79973c%0x3c+'s';if(_0x9ad4e4<0x18)return _0x9ad4e4+'h\x20'+_0x18cf37%0x3c+'m\x20'+_0x79973c%0x3c+'s';return _0xe46095+'d\x20'+_0x9ad4e4%0x18+'h\x20'+_0x18cf37%0x3c+'m';},'renderMarkdown'(_0x4c34f4,_0x5ea4a0={}){if(!_0x4c34f4)return'';_0x4c34f4=this['rewriteAttachmentLinks'](_0x4c34f4,_0x5ea4a0),_0x4c34f4=this['rewriteColorSyntax'](_0x4c34f4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x59b1a6=new marked['Renderer'](),_0x345b18=_0x59b1a6['code']['bind'](_0x59b1a6);_0x59b1a6['code']=function(_0x485549,_0x3a7539){const _0x48587f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x48587f&&_0x3a7539)try{const _0xef2e4f=_0x48587f['getLanguage'](_0x3a7539)?_0x3a7539:'plaintext',_0x289bc0=_0x48587f['highlight'](_0x485549,{'language':_0xef2e4f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x3a7539+'\x22>'+_0x289bc0+'</code></pre>';}catch(_0x3765b4){console['error']('Syntax\x20highlighting\x20error:',_0x3765b4);}return _0x345b18(_0x485549,_0x3a7539);};try{return marked['parse'](_0x4c34f4,{'renderer':_0x59b1a6});}catch(_0x296813){return console['error']('Markdown\x20parsing\x20error:',_0x296813),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);}},'rewriteAttachmentLinks'(_0x67b6c1,_0xfa6fff={}){const _0xad4b60=typeof _0xfa6fff['resolveAttachmentUrl']==='function'?_0xfa6fff['resolveAttachmentUrl']:_0xfa6fff['taskId']?_0x22bbf0=>API_BASE+'/tasks/'+_0xfa6fff['taskId']+'/attachments/'+encodeURIComponent(_0x22bbf0):null;if(!_0xad4b60)return _0x67b6c1;return String(_0x67b6c1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x21d152,_0x2d9867)=>{const _0x2eabd4=String(_0x2d9867||'')['trim']();if(!_0x2eabd4)return _0x21d152;let _0x316e08=_0x2eabd4;try{_0x316e08=decodeURIComponent(_0x2eabd4);}catch{}const _0x157316=_0xad4b60(_0x316e08);if(!_0x157316)return _0x21d152;return']('+_0x157316+')';});},'rewriteColorSyntax'(_0x5ed622){if(!_0x5ed622)return _0x5ed622;return String(_0x5ed622)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x123e05,_0x5dbfe9,_0x11fb6a)=>{const _0x1b360c=this['rewriteColorSyntax'](_0x11fb6a);return'<span\x20style=\x22color:\x20'+_0x5dbfe9+'\x22>'+_0x1b360c+'</span>';});},'renderMarkdownFallback'(_0x3fba0a,_0x4b9b29={}){if(!_0x3fba0a)return'';_0x3fba0a=_0x3fba0a['replace'](/\r\n/g,'\x0a'),_0x3fba0a=_0x3fba0a['replace'](/\r/g,'\x0a'),_0x3fba0a=this['rewriteAttachmentLinks'](_0x3fba0a,_0x4b9b29);let _0xbd1488=this['escapeHtml'](_0x3fba0a);return _0xbd1488=_0xbd1488['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xbd1488=_0xbd1488['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xbd1488=_0xbd1488['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xbd1488=_0xbd1488['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xbd1488=_0xbd1488['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xbd1488=_0xbd1488['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xbd1488=_0xbd1488['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xbd1488=_0xbd1488['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xbd1488=_0xbd1488['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xbd1488=_0xbd1488['replace'](/\n\n/g,'</p><p>'),_0xbd1488=_0xbd1488['replace'](/\n/g,'<br>'),'<p>'+_0xbd1488+'</p>';}};export class CustomSelect{constructor(_0x28aabb,_0xff32cd={}){this['nativeSelect']=_0x28aabb,this['options']=_0xff32cd,this['isOpen']=![],this['selectedValue']=_0x28aabb['value']||'',this['searchable']=_0xff32cd['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1c5050=document['createElement']('div');_0x1c5050['className']='custom-select';const _0x47bbdf=document['createElement']('div');_0x47bbdf['className']='custom-select-trigger',_0x47bbdf['setAttribute']('tabindex','0'),_0x47bbdf['setAttribute']('role','button'),_0x47bbdf['setAttribute']('aria-haspopup','listbox');const _0x5626ab=document['createElement']('span');_0x5626ab['className']='custom-select-trigger-text';const _0x4fc8cf=document['createElement']('span');_0x4fc8cf['className']='custom-select-arrow',_0x4fc8cf['textContent']='▼',_0x47bbdf['appendChild'](_0x5626ab),_0x47bbdf['appendChild'](_0x4fc8cf);const _0x449dc5=document['createElement']('div');_0x449dc5['className']='custom-select-dropdown',_0x449dc5['setAttribute']('role','listbox');if(this['searchable']){const _0xb4cbf7=document['createElement']('div');_0xb4cbf7['className']='custom-select-search';const _0x52719c=document['createElement']('input');_0x52719c['type']='text',_0x52719c['className']='custom-select-search-input',_0x52719c['placeholder']='Type\x20to\x20search...',_0x52719c['setAttribute']('aria-label','Search\x20options'),_0x52719c['addEventListener']('input',_0x2648e4=>{this['searchQuery']=_0x2648e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x52719c['addEventListener']('keydown',_0x3e729a=>{if(_0x3e729a['key']==='Escape')_0x3e729a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e729a['key']==='Enter'){_0x3e729a['preventDefault'](),_0x3e729a['stopPropagation']();const _0x47c1d1=_0x449dc5['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x47c1d1){const _0xf92499=_0x47c1d1['getAttribute']('data-value');this['select'](_0xf92499);}}}}),_0xb4cbf7['appendChild'](_0x52719c),_0x449dc5['appendChild'](_0xb4cbf7),this['searchInput']=_0x52719c;}const _0x1d347a=document['createElement']('div');_0x1d347a['className']='custom-select-options',_0x449dc5['appendChild'](_0x1d347a),_0x1c5050['appendChild'](_0x47bbdf),_0x1c5050['appendChild'](_0x449dc5),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1c5050,this['nativeSelect']),this['wrapper']=_0x1c5050,this['trigger']=_0x47bbdf,this['triggerText']=_0x5626ab,this['dropdown']=_0x449dc5,this['optionsContainer']=_0x1d347a,_0x47bbdf['addEventListener']('click',()=>this['toggle']()),_0x47bbdf['addEventListener']('keydown',_0x3842a4=>this['handleKeydown'](_0x3842a4)),document['addEventListener']('click',_0x380937=>{!_0x1c5050['contains'](_0x380937['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x18afdc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x18afdc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2965cb=new MutationObserver(()=>{this['updateDisabledState']();});_0x2965cb['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42ae30=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42ae30['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xd71706=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xd71706),this['trigger']['setAttribute']('aria-disabled',_0xd71706?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xd71706?'-1':'0'),_0xd71706&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x577faa=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4c4eef=_0x577faa['filter'](_0x262d19=>!_0x262d19['disabled']&&!_0x262d19['hidden']);_0x577faa['forEach']((_0x5cfaab,_0x4a61e8)=>{const _0x22df6b=document['createElement']('div');_0x22df6b['className']='custom-select-option',_0x22df6b['textContent']=_0x5cfaab['textContent'],_0x22df6b['setAttribute']('data-value',_0x5cfaab['value']),_0x22df6b['setAttribute']('data-index',_0x4a61e8),_0x22df6b['setAttribute']('role','option'),_0x5cfaab['disabled']?_0x22df6b['classList']['add']('disabled'):_0x22df6b['addEventListener']('click',()=>this['select'](_0x5cfaab['value'])),_0x5cfaab['value']===this['selectedValue']&&_0x22df6b['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x22df6b),this['allOptions']['push']({'element':_0x22df6b,'text':_0x5cfaab['textContent']['toLowerCase'](),'value':_0x5cfaab['value'],'disabled':_0x5cfaab['disabled']});});if(this['searchable']&&this['searchInput']){const _0xe24938=this['searchInput']['parentElement'];_0x4c4eef['length']>0x3?_0xe24938['style']['display']='':_0xe24938['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4b0783=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1d2f59=>{if(!_0x4b0783||_0x1d2f59['disabled'])_0x1d2f59['element']['style']['display']='';else{const _0x243d26=_0x1d2f59['text']['includes'](_0x4b0783);_0x1d2f59['element']['style']['display']=_0x243d26?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x275fa0){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x275fa0,this['nativeSelect']['value']=_0x275fa0;const _0x42b496=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x42b496),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x31876c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x31876c&&(this['triggerText']['textContent']=_0x31876c['textContent'],_0x31876c['disabled']||_0x31876c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2449f7=>{_0x2449f7['getAttribute']('data-value')===this['selectedValue']?_0x2449f7['classList']['add']('selected'):_0x2449f7['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 _0x1908f3=window['getComputedStyle'](this['dropdown']);if(_0x1908f3['position']==='fixed'){const _0xe89b9e=this['trigger']['getBoundingClientRect'](),_0x2d9913=parseInt(_0x1908f3['maxHeight'])||0xc8,_0x25487e=window['innerHeight'],_0x4fafb1=_0x25487e-_0xe89b9e['bottom'],_0x21d78a=_0xe89b9e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x514019;_0x4fafb1<_0x2d9913&&_0x21d78a>_0x4fafb1?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x25487e-_0xe89b9e['top']+'px',_0x514019=Math['min'](_0x2d9913,_0x21d78a-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xe89b9e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x514019=Math['min'](_0x2d9913,_0x4fafb1-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px');if(this['optionsContainer']){let _0x2125a0=_0x514019;if(this['searchInput']){const _0x37cded=this['searchInput']['parentElement'];_0x37cded&&(_0x2125a0-=_0x37cded['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x2125a0)+'px';}this['dropdown']['style']['left']=_0xe89b9e['left']+'px',this['dropdown']['style']['width']=_0xe89b9e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x2e4e2e=this['searchInput']['parentElement'];_0x2e4e2e&&_0x2e4e2e['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'](_0x487032){if(this['nativeSelect']['disabled'])return;if(_0x487032['key']==='Enter'||_0x487032['key']==='\x20')_0x487032['preventDefault'](),this['toggle']();else _0x487032['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xf3718a='\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',_0xf3718a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x91f5e8=document['getElementById']('confirm-dialog-close'),_0x200930=document['getElementById']('confirm-dialog-cancel'),_0x506bdc=document['getElementById']('confirm-dialog-confirm'),_0xb44cda=this['_modal']['querySelector']('.modal-overlay');_0x91f5e8['addEventListener']('click',()=>this['_resolve'](![])),_0x200930['addEventListener']('click',()=>this['_resolve'](![])),_0x506bdc['addEventListener']('click',()=>this['_resolve'](!![])),_0xb44cda['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x52987c=>{if(_0x52987c['key']==='Escape')_0x52987c['preventDefault'](),this['_resolve'](![]);else _0x52987c['key']==='Enter'&&(_0x52987c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x368192,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1729f9=>{this['_resolvePromise']=_0x1729f9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x368192;const _0x4b9e56=document['getElementById']('confirm-dialog-cancel'),_0x4625ce=document['getElementById']('confirm-dialog-confirm');_0x4b9e56['textContent']=cancelText,_0x4625ce['textContent']=confirmText,_0x4625ce['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x4625ce['focus']();});},'_resolve'(_0x4ae332){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4ae332),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x28e67a,_0x5e0648={}){this['container']=_0x28e67a,this['options']={'placeholder':_0x5e0648['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0648['maxItems']||0x64,'loadItems':_0x5e0648['loadItems']||(async()=>[]),'renderItem':_0x5e0648['renderItem']||(_0x45a881=>({'primary':String(_0x45a881),'secondary':''})),'onSelect':_0x5e0648['onSelect']||(()=>{}),'filterItems':_0x5e0648['filterItems']||null,'getItemValue':_0x5e0648['getItemValue']||(_0x61abdc=>_0x61abdc),'sortItems':_0x5e0648['sortItems']||null,'debounceMs':_0x5e0648['debounceMs']||0xc8,'minCharsForSearch':_0x5e0648['minCharsForSearch']||0x0,'emptyMessage':_0x5e0648['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0648['loadingMessage']||'Loading...','preload':_0x5e0648['preload']!==![],'searchMode':_0x5e0648['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',_0x35e644=>this['onBlur'](_0x35e644)),this['input']['addEventListener']('input',_0x2235c3=>this['onInput'](_0x2235c3)),this['input']['addEventListener']('keydown',_0x365aeb=>this['onKeydown'](_0x365aeb)),this['clearBtn']['addEventListener']('mousedown',_0x2bbc92=>{_0x2bbc92['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x10398d=>{_0x10398d['preventDefault']();}),document['addEventListener']('click',_0x135f53=>{!this['wrapper']['contains'](_0x135f53['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(_0x165086){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x165086);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c156){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x38ade1){const _0x592a50=_0x38ade1['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x592a50);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x592a50):this['loadAndShow'](_0x592a50);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x46478f){switch(_0x46478f['key']){case'ArrowDown':_0x46478f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x46478f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x46478f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x46478f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x203e3c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x8f13d7=this['selectedIndex']+_0x203e3c;if(_0x8f13d7>=0x0&&_0x8f13d7<this['filteredItems']['length']){this['selectedIndex']=_0x8f13d7,this['updateSelectionHighlight']();const _0x5b7031=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5b7031[this['selectedIndex']]&&_0x5b7031[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c93f6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c93f6['forEach']((_0x5e7d6f,_0x5d5c62)=>{_0x5e7d6f['classList']['toggle']('keyboard-selected',_0x5d5c62===this['selectedIndex']);});}async['loadAndShow'](_0x5ad63f){this['showLoading']();try{const _0x287f2c=await this['options']['loadItems'](_0x5ad63f);if(this['options']['searchMode']==='server'){let _0xd38f32=_0x287f2c;this['options']['sortItems']&&(_0xd38f32=this['options']['sortItems']([..._0x287f2c]));this['filteredItems']=_0xd38f32;const _0x405ae7=this['filteredItems']['length']>=this['options']['maxItems'];_0x405ae7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x405ae7),this['open']();}else this['allItems']=_0x287f2c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5ad63f);}catch(_0x507a38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x507a38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2df3d4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2df3d4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x50eade=this['filteredItems']['length']>=this['options']['maxItems'];_0x50eade&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x50eade),this['open']();}['renderItems'](_0x46d50a){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']((_0x2edd4c,_0x3b88e1)=>{const _0x416347=document['createElement']('div');_0x416347['className']='autocomplete-select-item',_0x416347['setAttribute']('role','option'),_0x416347['setAttribute']('data-index',_0x3b88e1);const _0x409752=this['options']['renderItem'](_0x2edd4c);let _0x43c88a='';_0x409752['icon']&&(_0x43c88a='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x409752['iconClass']||'')+'\x22>'+_0x409752['icon']+'</span>'),_0x416347['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x43c88a+'\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'](_0x409752['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x409752['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x409752['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x416347['addEventListener']('click',()=>{this['selectItem'](_0x2edd4c);}),_0x416347['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3b88e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x416347);}),_0x46d50a?(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'](_0x21f0d4){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x21f0d4)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2f4719){this['selectedItem']=_0x2f4719;const _0x2acc51=this['options']['renderItem'](_0x2f4719);this['input']['value']=_0x2acc51['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2f4719);}['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'](_0x509e98){if(_0x509e98){this['selectedItem']=_0x509e98;const _0x170560=this['options']['renderItem'](_0x509e98);this['input']['value']=_0x170560['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x594be3){this['allItems']=_0x594be3,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'](_0x4feec3){this['input']['placeholder']=_0x4feec3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x391425=null){const _0x3145f5=document['getElementById']('admin-menu-container'),_0x3c1ba9=document['getElementById']('admin-menu-btn'),_0x7f005e=document['getElementById']('admin-menu');if(!_0x3145f5||!_0x3c1ba9||!_0x7f005e)return;try{!_0x391425&&(_0x391425=await API['getCurrentUser']());if(_0x391425){const _0x3c3602=_0x391425['hasAllPermissions']||_0x391425['hasEnvironmentsManage']||_0x391425['canCreateUsers']||_0x391425['canManageTeams']||_0x391425['hasEnvironmentBindings'];if(!_0x3c3602)return;_0x3145f5['hidden']=![];if(!_0x391425['hasAllPermissions']){const _0x5a6c0e=_0x7f005e['querySelectorAll']('.admin-menu-item');_0x5a6c0e['forEach'](_0x28be72=>{const _0x336cf2=_0x28be72['querySelector']('.option-text')?.['textContent']?.['trim']();_0x336cf2==='Users'&&!_0x391425['canCreateUsers']&&(_0x28be72['hidden']=!![]),_0x336cf2==='Skills'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Settings'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Health'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Git\x20History'&&(_0x28be72['hidden']=!![]);});}_0x3c1ba9['addEventListener']('click',_0x5cb53c=>{_0x5cb53c['stopPropagation']();const _0x294f26=document['getElementById']('actions-menu');if(_0x294f26)_0x294f26['hidden']=!![];_0x7f005e['hidden']=!_0x7f005e['hidden'];}),document['addEventListener']('click',_0x27d667=>{!_0x7f005e['hidden']&&!_0x3c1ba9['contains'](_0x27d667['target'])&&!_0x7f005e['contains'](_0x27d667['target'])&&(_0x7f005e['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b2867=>{_0x4b2867['key']==='Escape'&&!_0x7f005e['hidden']&&(_0x7f005e['hidden']=!![]);});const _0x333b24=document['getElementById']('server-health-btn');_0x333b24&&_0x333b24['addEventListener']('click',async()=>{_0x7f005e['hidden']=!![];const {openServerHealthModal:_0x542af9}=await import('./server-health.js');_0x542af9();});}}catch(_0x430960){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x430960['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|
|
1
|
+
function detectApiBase(){const _0xe36739=window['location']['pathname'],_0x543df3=_0xe36739['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x543df3)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x543df3[0x1]),_0x543df3[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xe7e7cf={}){const _0x3bd74a=new URLSearchParams();_0xe7e7cf['userId']&&_0x3bd74a['set']('userId',String(_0xe7e7cf['userId']));_0xe7e7cf['automation']&&_0x3bd74a['set']('automation',String(_0xe7e7cf['automation']));const _0x25923a=API_BASE+'/tasks/stats'+(_0x3bd74a['toString']()?'?'+_0x3bd74a['toString']():''),_0x12b319=await fetch(_0x25923a);if(!_0x12b319['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x12b319['statusText']);return await _0x12b319['json']();},async 'getTasks'(_0x4813eb={}){const _0x183964=new URLSearchParams();_0x4813eb['status']&&_0x183964['set']('status',String(_0x4813eb['status']));_0x4813eb['environment']&&_0x183964['set']('environment',String(_0x4813eb['environment']));_0x4813eb['automation']&&_0x183964['set']('automation',String(_0x4813eb['automation']));if(_0x4813eb['include']){const _0x11cff0=Array['isArray'](_0x4813eb['include'])?_0x4813eb['include']['join'](','):String(_0x4813eb['include']);_0x11cff0&&_0x183964['set']('include',_0x11cff0);}_0x4813eb['filter']&&_0x183964['set']('filter',String(_0x4813eb['filter']));_0x4813eb['page']&&_0x183964['set']('page',String(_0x4813eb['page']));_0x4813eb['limit']&&_0x183964['set']('limit',String(_0x4813eb['limit']));_0x4813eb['userId']&&_0x183964['set']('userId',String(_0x4813eb['userId']));_0x4813eb['search']&&_0x183964['set']('search',String(_0x4813eb['search']));_0x4813eb['includeChildTasks']&&_0x183964['set']('includeChildTasks','true');const _0x10da20=API_BASE+'/tasks'+(_0x183964['toString']()?'?'+_0x183964['toString']():''),_0x227b71=await fetch(_0x10da20);if(!_0x227b71['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x227b71['statusText']);return await _0x227b71['json']();},async 'getAutomations'(_0x5c24d5={}){const _0x2681d3=new URLSearchParams();_0x5c24d5['environment']&&_0x2681d3['set']('environment',String(_0x5c24d5['environment']));const _0x4e1676=await fetch(API_BASE+'/api/automations'+(_0x2681d3['toString']()?'?'+_0x2681d3['toString']():''));if(!_0x4e1676['ok']){const _0x4202d9=await _0x4e1676['json']()['catch'](()=>({}));throw new Error(_0x4202d9['message']||_0x4202d9['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4e1676['statusText']);}return await _0x4e1676['json']();},async 'getAutomation'(_0x40172a){const _0x51ef6a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x40172a));if(!_0x51ef6a['ok']){const _0x3bade4=await _0x51ef6a['json']()['catch'](()=>({}));throw new Error(_0x3bade4['message']||_0x3bade4['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x51ef6a['statusText']);}return await _0x51ef6a['json']();},async 'createAutomation'(_0x1e72b5){const _0xfbd854=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e72b5||{})});if(!_0xfbd854['ok']){const _0x5fa5a=await _0xfbd854['json']()['catch'](()=>({}));throw new Error(_0x5fa5a['message']||_0x5fa5a['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xfbd854['statusText']);}return await _0xfbd854['json']();},async 'updateAutomation'(_0x4703d3,_0x50563b){const _0xa62d91=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4703d3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50563b||{})});if(!_0xa62d91['ok']){const _0x4685d4=await _0xa62d91['json']()['catch'](()=>({}));throw new Error(_0x4685d4['message']||_0x4685d4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xa62d91['statusText']);}return await _0xa62d91['json']();},async 'deleteAutomation'(_0x33ca11){const _0x1c8646=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x33ca11),{'method':'DELETE'});if(!_0x1c8646['ok']){const _0x3aa836=await _0x1c8646['json']()['catch'](()=>({}));throw new Error(_0x3aa836['message']||_0x3aa836['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1c8646['statusText']);}return await _0x1c8646['json']();},async 'triggerAutomation'(_0x70d9e9){const _0x2bc2c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x70d9e9)+'/trigger',{'method':'POST'});if(!_0x2bc2c3['ok']){const _0x2fc68f=await _0x2bc2c3['json']()['catch'](()=>({}));throw new Error(_0x2fc68f['message']||_0x2fc68f['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x2bc2c3['statusText']);}return await _0x2bc2c3['json']();},async 'setAutomationEnabled'(_0x27e760,_0x410f12){const _0x568fcf=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27e760)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x410f12})});if(!_0x568fcf['ok']){const _0x77ba41=await _0x568fcf['json']()['catch'](()=>({}));throw new Error(_0x77ba41['message']||_0x77ba41['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x568fcf['statusText']);}return await _0x568fcf['json']();},async 'getAutomationHistory'(_0x2fd477,_0x465e08=0x32){const _0x291a43=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2fd477)+'/history?limit='+encodeURIComponent(String(_0x465e08)));if(!_0x291a43['ok']){const _0x3b6ca2=await _0x291a43['json']()['catch'](()=>({}));throw new Error(_0x3b6ca2['message']||_0x3b6ca2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x291a43['statusText']);}return await _0x291a43['json']();},async 'getTask'(_0x509579,_0x2d5337={}){const _0x5d13c8=new URLSearchParams();if(_0x2d5337['include']){const _0x536e73=Array['isArray'](_0x2d5337['include'])?_0x2d5337['include']['join'](','):String(_0x2d5337['include']);if(_0x536e73)_0x5d13c8['set']('include',_0x536e73);}const _0x169dff=await fetch(API_BASE+'/tasks/'+_0x509579+(_0x5d13c8['toString']()?'?'+_0x5d13c8['toString']():''));if(!_0x169dff['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x169dff['statusText']);return await _0x169dff['json']();},async 'getTaskResults'(_0x102bff){const _0x4fc692=await fetch(API_BASE+'/tasks/'+_0x102bff+'/results');if(!_0x4fc692['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4fc692['statusText']);return await _0x4fc692['json']();},async 'getTaskPatches'(_0x2e25cc){const _0x561365=await fetch(API_BASE+'/tasks/'+_0x2e25cc+'/patches');if(!_0x561365['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x561365['statusText']);return await _0x561365['json']();},async 'getTaskAttachments'(_0x17e298){const _0x1c38ae=await fetch(API_BASE+'/tasks/'+_0x17e298+'/attachments');if(!_0x1c38ae['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1c38ae['statusText']);return await _0x1c38ae['json']();},async 'uploadAttachments'(_0x17dfda,_0xe54b58){const _0x35fc3d=new FormData();for(const _0x3c2c42 of _0xe54b58){_0x35fc3d['append']('attachments',_0x3c2c42);}const _0x2f9727=await fetch(API_BASE+'/tasks/'+_0x17dfda+'/attachments',{'method':'POST','body':_0x35fc3d});if(!_0x2f9727['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2f9727['statusText']);return await _0x2f9727['json']();},async 'isAINameGenerationAvailable'(){try{const _0x25bd06=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x25bd06['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x25bd06['json']();}catch(_0x36d23b){return{'available':![],'reason':_0x36d23b['message']};}},async 'generateTaskName'(_0x2e2a8c){try{const _0x5438d6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2e2a8c})});return await _0x5438d6['json']();}catch(_0x264d7e){return{'success':![],'error':_0x264d7e['message']};}},async 'createTask'(_0x4482e0){let _0x3452f9,_0x5e16bc={};if(_0x4482e0['files']&&_0x4482e0['files']['length']>0x0){const _0x2f06a1=new FormData();for(const [_0x18cd8a,_0x58c09d]of Object['entries'](_0x4482e0)){if(_0x18cd8a!=='files'){if(_0x58c09d==null)continue;typeof _0x58c09d==='object'?_0x2f06a1['append'](_0x18cd8a,JSON['stringify'](_0x58c09d)):_0x2f06a1['append'](_0x18cd8a,String(_0x58c09d));}}for(const _0x3b2319 of _0x4482e0['files']){_0x2f06a1['append']('attachments',_0x3b2319);}_0x3452f9=_0x2f06a1;}else _0x5e16bc['Content-Type']='application/json',_0x3452f9=JSON['stringify'](_0x4482e0);const _0x53f8e5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5e16bc,'body':_0x3452f9});if(!_0x53f8e5['ok']){const _0x5d9a22=await _0x53f8e5['json'](),_0x327802=new Error(_0x5d9a22['error']||'Failed\x20to\x20create\x20task:\x20'+_0x53f8e5['statusText']),{message:_0x2d4236,..._0x182e0e}=_0x5d9a22;Object['assign'](_0x327802,_0x182e0e);throw _0x327802;}return await _0x53f8e5['json']();},async 'createTestTask'(_0x47fb0c){const _0x4600ec=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x47fb0c)});if(!_0x4600ec['ok']){const _0x30b8a0=await _0x4600ec['json']();throw new Error(_0x30b8a0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x4600ec['statusText']);}return await _0x4600ec['json']();},async 'createEphemeralTest'(_0x4a59ba){const _0x514c7d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a59ba)});if(!_0x514c7d['ok']){const _0x528ebe=await _0x514c7d['json']();throw new Error(_0x528ebe['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x514c7d['statusText']);}return await _0x514c7d['json']();},async 'createDeployTask'(_0x438ffe){const _0x4b1621=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x438ffe)});if(!_0x4b1621['ok']){const _0x7f3328=await _0x4b1621['json']();throw new Error(_0x7f3328['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4b1621['statusText']);}return await _0x4b1621['json']();},async 'getEnvironments'(){const _0x176fb9=await fetch(API_BASE+'/environments');if(!_0x176fb9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x176fb9['statusText']);return await _0x176fb9['json']();},async 'getEnvironment'(_0x11a310){const _0x4cfa8e=await fetch(API_BASE+'/environments/'+_0x11a310);if(!_0x4cfa8e['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4cfa8e['statusText']);return await _0x4cfa8e['json']();},async 'getEnvironmentRepoHistory'(_0x378b83,_0x295827,_0x57c3c5={}){if(!_0x378b83||!_0x295827)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x149310=new URLSearchParams();if(_0x57c3c5['limit'])_0x149310['set']('limit',String(_0x57c3c5['limit']));if(_0x57c3c5['offset'])_0x149310['set']('offset',String(_0x57c3c5['offset']));if(_0x57c3c5['search'])_0x149310['set']('search',String(_0x57c3c5['search']));if(_0x57c3c5['branch'])_0x149310['set']('branch',String(_0x57c3c5['branch']));const _0x457a49=API_BASE+'/environments/'+encodeURIComponent(_0x378b83)+'/repos/'+encodeURIComponent(_0x295827)+'/git/history',_0x2c02e0=await fetch(''+_0x457a49+(_0x149310['toString']()?'?'+_0x149310['toString']():''));if(!_0x2c02e0['ok']){const _0x381d2f=await _0x2c02e0['json']()['catch'](()=>({}));throw new Error(_0x381d2f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x2c02e0['statusText']);}return await _0x2c02e0['json']();},async 'getEnvironmentRepoCommit'(_0x2a315f,_0x13af56,_0x5c4180){if(!_0x2a315f||!_0x13af56||!_0x5c4180)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x55459b=API_BASE+'/environments/'+encodeURIComponent(_0x2a315f)+'/repos/'+encodeURIComponent(_0x13af56)+'/git/commits/'+encodeURIComponent(_0x5c4180),_0x1f3980=await fetch(_0x55459b);if(!_0x1f3980['ok']){const _0x30dbe2=await _0x1f3980['json']()['catch'](()=>({}));throw new Error(_0x30dbe2['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1f3980['statusText']);}return await _0x1f3980['json']();},async 'getEnvironmentRepoBranches'(_0x33dbcf,_0x3ac9a1){if(!_0x33dbcf||!_0x3ac9a1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x32a029=API_BASE+'/environments/'+encodeURIComponent(_0x33dbcf)+'/repos/'+encodeURIComponent(_0x3ac9a1)+'/git/branches',_0x33ff79=await fetch(_0x32a029);if(!_0x33ff79['ok']){const _0x424f4d=await _0x33ff79['json']()['catch'](()=>({}));throw new Error(_0x424f4d['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x33ff79['statusText']);}return await _0x33ff79['json']();},async 'revertEnvironmentRepoCommit'(_0x4d481a,_0x321f8e,_0x4c8864,_0x535789={}){if(!_0x4d481a||!_0x321f8e||!_0x4c8864)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x56f540=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4d481a)+'/repos/'+encodeURIComponent(_0x321f8e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4c8864,..._0x535789})});if(!_0x56f540['ok']){const _0x253e1c=await _0x56f540['json']()['catch'](()=>({}));throw new Error(_0x253e1c['message']||_0x253e1c['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x56f540['statusText']);}return await _0x56f540['json']();},async 'getTemplates'(_0x25cdb8={}){const _0x507694=new URLSearchParams();if(_0x25cdb8['include']){const _0x276a59=Array['isArray'](_0x25cdb8['include'])?_0x25cdb8['include']['join'](','):String(_0x25cdb8['include']);if(_0x276a59)_0x507694['set']('include',_0x276a59);}const _0x221795=await fetch(API_BASE+'/templates'+(_0x507694['toString']()?'?'+_0x507694['toString']():''));if(!_0x221795['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x221795['statusText']);return await _0x221795['json']();},async 'getTemplatesForEnvironment'(_0x106e21,_0xa4fa48={}){if(!_0x106e21)throw new Error('Environment\x20name\x20is\x20required');const _0x392ddf=new URLSearchParams();if(_0xa4fa48['include']){const _0x1ca881=Array['isArray'](_0xa4fa48['include'])?_0xa4fa48['include']['join'](','):String(_0xa4fa48['include']);if(_0x1ca881)_0x392ddf['set']('include',_0x1ca881);}const _0x20e075=await fetch(API_BASE+'/templates/'+_0x106e21+(_0x392ddf['toString']()?'?'+_0x392ddf['toString']():''));if(!_0x20e075['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x106e21+':\x20'+_0x20e075['statusText']);return await _0x20e075['json']();},async 'getTemplate'(_0x294513,_0x40ee2c,_0x4afd83={}){if(!_0x294513||!_0x40ee2c)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x27354b=new URLSearchParams();if(_0x4afd83['include']){const _0x44f35c=Array['isArray'](_0x4afd83['include'])?_0x4afd83['include']['join'](','):String(_0x4afd83['include']);if(_0x44f35c)_0x27354b['set']('include',_0x44f35c);}const _0x53f676=await fetch(API_BASE+'/templates/'+_0x294513+'/'+_0x40ee2c+(_0x27354b['toString']()?'?'+_0x27354b['toString']():''));if(!_0x53f676['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x53f676['statusText']);return await _0x53f676['json']();},async 'getTaskLogs'(_0x2391ef,_0x4719c1={}){if(!_0x2391ef)throw new Error('Task\x20ID\x20is\x20required');const _0x20fd0f=new URLSearchParams();_0x4719c1['tail']&&_0x20fd0f['set']('tail',String(_0x4719c1['tail']));const _0x1e2f60=await fetch(API_BASE+'/tasks/'+_0x2391ef+'/logs'+(_0x20fd0f['toString']()?'?'+_0x20fd0f['toString']():''));if(!_0x1e2f60['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1e2f60['statusText']);return await _0x1e2f60['text']();},async 'getContainers'(){const _0xb44f80=await fetch(API_BASE+'/containers');if(!_0xb44f80['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xb44f80['statusText']);return await _0xb44f80['json']();},async 'getContainer'(_0x4130e3){const _0x5a0f28=await fetch(API_BASE+'/containers/'+_0x4130e3);if(!_0x5a0f28['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5a0f28['statusText']);return await _0x5a0f28['json']();},async 'startInteractiveContainer'(_0x34030e){const _0x582055=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x34030e)});if(!_0x582055['ok']){const _0x4ee006=await _0x582055['json']()['catch'](()=>({}));throw new Error(_0x4ee006['message']||'Failed\x20to\x20start\x20container:\x20'+_0x582055['statusText']);}return await _0x582055['json']();},async 'stopContainer'(_0x51fb53){const _0x17d233=await fetch(API_BASE+'/containers/'+_0x51fb53,{'method':'DELETE'});if(!_0x17d233['ok']){const _0x4c09d0=await _0x17d233['json']()['catch'](()=>({}));throw new Error(_0x4c09d0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x17d233['statusText']);}return await _0x17d233['json']();},async 'stopTask'(_0x50d3b2){if(!_0x50d3b2)throw new Error('Task\x20ID\x20is\x20required');const _0x43d7a3=await fetch(API_BASE+'/tasks/'+_0x50d3b2+'/stop',{'method':'POST'});if(!_0x43d7a3['ok']){const _0x3e92de=await _0x43d7a3['json']()['catch'](()=>({}));throw new Error(_0x3e92de['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x43d7a3['statusText']);}return await _0x43d7a3['json']();},async 'interruptTask'(_0x3bd9ae){if(!_0x3bd9ae)throw new Error('Task\x20ID\x20is\x20required');const _0x3c4a05=await fetch(API_BASE+'/tasks/'+_0x3bd9ae+'/interrupt',{'method':'POST'});if(!_0x3c4a05['ok']){const _0x23e2b6=await _0x3c4a05['json']()['catch'](()=>({}));throw new Error(_0x23e2b6['error']||_0x23e2b6['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3c4a05['statusText']);}return await _0x3c4a05['json']();},async 'startTask'(_0x50dae1){if(!_0x50dae1)throw new Error('Task\x20ID\x20is\x20required');const _0x41f7f4=await fetch(API_BASE+'/tasks/'+_0x50dae1+'/start',{'method':'POST'});if(!_0x41f7f4['ok']){const _0x389d62=await _0x41f7f4['json']()['catch'](()=>({}));throw new Error(_0x389d62['error']||'Failed\x20to\x20start\x20task:\x20'+_0x41f7f4['statusText']);}return await _0x41f7f4['json']();},async 'deleteTask'(_0x343f57){if(!_0x343f57)throw new Error('Task\x20ID\x20is\x20required');const _0x703f53=await fetch(API_BASE+'/tasks/'+_0x343f57,{'method':'DELETE'});if(!_0x703f53['ok']){const _0x5124e4=await _0x703f53['json']()['catch'](()=>({}));throw new Error(_0x5124e4['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x703f53['statusText']);}return await _0x703f53['json']();},async 'refreshTasksFromDisk'(){const _0x202870=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x202870['ok']){const _0x230f3b=await _0x202870['json']()['catch'](()=>({}));throw new Error(_0x230f3b['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x202870['statusText']);}return await _0x202870['json']();},async 'approveTask'(_0x723fe8,_0x3d1086={}){if(!_0x723fe8)throw new Error('Task\x20ID\x20is\x20required');const _0x52e0e1={'commit_message':_0x3d1086['commit_message']||'','pull':_0x3d1086['pull']??![],'push':_0x3d1086['push']??![]};_0x3d1086['new_branch']&&(_0x52e0e1['new_branch']=_0x3d1086['new_branch']);const _0x40ed93=await fetch(API_BASE+'/tasks/'+_0x723fe8+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52e0e1)});if(!_0x40ed93['ok']){const _0x371ff7=await _0x40ed93['json']()['catch'](()=>({}));let _0x55f907=_0x371ff7['error']||_0x371ff7['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x40ed93['statusText'];if(_0x371ff7['results']&&Array['isArray'](_0x371ff7['results'])){const _0x5129cd=_0x371ff7['results']['filter'](_0x529ede=>!_0x529ede['success']&&_0x529ede['error']);_0x5129cd['length']>0x0&&(_0x55f907=_0x5129cd[0x0]['error']);}throw new Error(_0x55f907);}return await _0x40ed93['json']();},async 'getPullRequestInfo'(_0x40a550){if(!_0x40a550)throw new Error('Task\x20ID\x20is\x20required');const _0x3d62d9=await fetch(API_BASE+'/tasks/'+_0x40a550+'/pull-request-info');if(!_0x3d62d9['ok']){const _0x1cbad3=await _0x3d62d9['json']()['catch'](()=>({}));throw new Error(_0x1cbad3['error']||_0x1cbad3['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d62d9['statusText']);}return await _0x3d62d9['json']();},async 'createPullRequests'(_0x46173f,_0x49b7c1){if(!_0x46173f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49b7c1||!Array['isArray'](_0x49b7c1))throw new Error('repos\x20array\x20is\x20required');const _0x31964f=await fetch(API_BASE+'/tasks/'+_0x46173f+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x49b7c1})});if(!_0x31964f['ok']){const _0xb051bb=await _0x31964f['json']()['catch'](()=>({}));let _0x3c65ee=_0xb051bb['error']||_0xb051bb['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x31964f['statusText'];if(_0xb051bb['results']&&Array['isArray'](_0xb051bb['results'])){const _0xca7556=_0xb051bb['results']['filter'](_0x16a2d3=>!_0x16a2d3['success']&&_0x16a2d3['error']);_0xca7556['length']>0x0&&(_0x3c65ee=_0xca7556[0x0]['error']);}throw new Error(_0x3c65ee);}return await _0x31964f['json']();},async 'syncRepos'(_0x5dea06){if(!_0x5dea06)throw new Error('Task\x20ID\x20is\x20required');const _0x113a2e=await fetch(API_BASE+'/tasks/'+_0x5dea06+'/sync-repos',{'method':'POST'});if(!_0x113a2e['ok']){const _0x30eae2=await _0x113a2e['json']()['catch'](()=>({}));throw new Error(_0x30eae2['error']||_0x30eae2['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x113a2e['statusText']);}return await _0x113a2e['json']();},async 'getIbmiSyncInfo'(_0x49d21a){if(!_0x49d21a)throw new Error('Task\x20ID\x20is\x20required');const _0x70c9d7=await fetch(API_BASE+'/tasks/'+_0x49d21a+'/ibmi-sync-info');if(!_0x70c9d7['ok']){const _0x701abf=await _0x70c9d7['json']()['catch'](()=>({}));throw new Error(_0x701abf['error']||_0x701abf['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x70c9d7['json']();},async 'syncToIbmi'(_0x41c1cd,_0x499fc7){if(!_0x41c1cd)throw new Error('Task\x20ID\x20is\x20required');const _0x3a485f=await fetch(API_BASE+'/tasks/'+_0x41c1cd+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x499fc7})});if(!_0x3a485f['ok']){const _0x5dbb1b=await _0x3a485f['json']()['catch'](()=>({}));throw new Error(_0x5dbb1b['error']||_0x5dbb1b['message']||'Sync\x20failed');}return await _0x3a485f['json']();},async 'getIbmiSyncLog'(_0x28597a){if(!_0x28597a)throw new Error('Task\x20ID\x20is\x20required');const _0x3125a7=await fetch(API_BASE+'/tasks/'+_0x28597a+'/ibmi-sync-log');if(!_0x3125a7['ok']){const _0x226d9f=await _0x3125a7['json']()['catch'](()=>({}));throw new Error(_0x226d9f['error']||_0x226d9f['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3125a7['json']();},async 'pullChanges'(_0x57c0b5){if(!_0x57c0b5)throw new Error('Task\x20ID\x20is\x20required');const _0x32df2e=await fetch(API_BASE+'/tasks/'+_0x57c0b5+'/pull-changes',{'method':'POST'});if(!_0x32df2e['ok']){const _0x4ad3d7=await _0x32df2e['json']()['catch'](()=>({}));throw new Error(_0x4ad3d7['error']||_0x4ad3d7['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x32df2e['statusText']);}return await _0x32df2e['json']();},async 'readFile'(_0x4cae23,_0x177b0a){if(!_0x4cae23)throw new Error('Task\x20ID\x20is\x20required');if(!_0x177b0a)throw new Error('File\x20path\x20is\x20required');const _0x27e6af=await fetch(API_BASE+'/tasks/'+_0x4cae23+'/files?path='+encodeURIComponent(_0x177b0a));if(!_0x27e6af['ok']){const _0x3ec31c=await _0x27e6af['json']()['catch'](()=>({}));throw new Error(_0x3ec31c['error']||_0x3ec31c['message']||'Failed\x20to\x20read\x20file:\x20'+_0x27e6af['statusText']);}return await _0x27e6af['json']();},async 'writeFile'(_0xb0e4e6,_0x38fc62,_0x5879a5){if(!_0xb0e4e6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38fc62)throw new Error('File\x20path\x20is\x20required');if(_0x5879a5===undefined)throw new Error('Content\x20is\x20required');const _0x245c52=await fetch(API_BASE+'/tasks/'+_0xb0e4e6+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x38fc62,'content':_0x5879a5})});if(!_0x245c52['ok']){const _0x475afe=await _0x245c52['json']()['catch'](()=>({}));throw new Error(_0x475afe['error']||_0x475afe['message']||'Failed\x20to\x20write\x20file:\x20'+_0x245c52['statusText']);}return await _0x245c52['json']();},async 'deleteFile'(_0xb5192,_0x119e7f){if(!_0xb5192)throw new Error('Task\x20ID\x20is\x20required');if(!_0x119e7f)throw new Error('File\x20path\x20is\x20required');const _0x2de673=await fetch(API_BASE+'/tasks/'+_0xb5192+'/files?path='+encodeURIComponent(_0x119e7f),{'method':'DELETE'});if(!_0x2de673['ok']){const _0x50ab10=await _0x2de673['json']()['catch'](()=>({}));throw new Error(_0x50ab10['error']||_0x50ab10['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2de673['statusText']);}return await _0x2de673['json']();},async 'discardFile'(_0x11bbe6,_0x4b9455,_0x1c0841){if(!_0x11bbe6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4b9455)throw new Error('File\x20path\x20is\x20required');if(!_0x1c0841)throw new Error('Repository\x20path\x20is\x20required');const _0x33cbf5=await fetch(API_BASE+'/tasks/'+_0x11bbe6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4b9455,'repoPath':_0x1c0841})});if(!_0x33cbf5['ok']){const _0x1ade84=await _0x33cbf5['json']()['catch'](()=>({}));throw new Error(_0x1ade84['error']||_0x1ade84['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x33cbf5['statusText']);}return await _0x33cbf5['json']();},async 'followUpTask'(_0x152b16,_0xd53fc4={}){if(!_0x152b16)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd53fc4['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1cc6c7,_0x37c7ab={};if(_0xd53fc4['files']&&_0xd53fc4['files']['length']>0x0){const _0x56b7db=new FormData();_0x56b7db['append']('instructions',_0xd53fc4['instructions']);for(const _0x1bbd7e of _0xd53fc4['files']){_0x56b7db['append']('attachments',_0x1bbd7e);}_0x1cc6c7=_0x56b7db;}else _0x37c7ab['Content-Type']='application/json',_0x1cc6c7=JSON['stringify']({'instructions':_0xd53fc4['instructions']});const _0x27d979=await fetch(API_BASE+'/tasks/'+_0x152b16+'/follow-up',{'method':'POST','headers':_0x37c7ab,'body':_0x1cc6c7});if(!_0x27d979['ok']){const _0x36180a=await _0x27d979['json']()['catch'](()=>({}));throw new Error(_0x36180a['error']||_0x36180a['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x27d979['statusText']);}return await _0x27d979['json']();},async 'getTaskRewindPoints'(_0x3595a3){if(!_0x3595a3)throw new Error('Task\x20ID\x20is\x20required');const _0x77227f=await fetch(API_BASE+'/tasks/'+_0x3595a3+'/rewind-points');if(!_0x77227f['ok']){const _0x5b6065=await _0x77227f['json']()['catch'](()=>({}));throw new Error(_0x5b6065['error']||_0x5b6065['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x77227f['statusText']);}return await _0x77227f['json']();},async 'rewindTask'(_0x48329c,_0x46e249={}){if(!_0x48329c)throw new Error('Task\x20ID\x20is\x20required');const _0x34331c=Number['isInteger'](_0x46e249['targetFollowUpCount'])?_0x46e249['targetFollowUpCount']:0x0,_0x5b5ccf={'targetFollowUpCount':_0x34331c};typeof _0x46e249['instructions']==='string'&&_0x46e249['instructions']['trim']()&&(_0x5b5ccf['instructions']=_0x46e249['instructions']['trim']());typeof _0x46e249['rewindFiles']==='boolean'&&(_0x5b5ccf['rewindFiles']=_0x46e249['rewindFiles']);const _0x58c34f=await fetch(API_BASE+'/tasks/'+_0x48329c+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b5ccf)});if(!_0x58c34f['ok']){const _0x93a830=await _0x58c34f['json']()['catch'](()=>({}));throw new Error(_0x93a830['error']||_0x93a830['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x58c34f['statusText']);}return await _0x58c34f['json']();},async 'login'(_0x2b2498,_0x3b21a5){const _0x28bf71=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2b2498,'password':_0x3b21a5})});if(!_0x28bf71['ok']){const _0xad49a7=await _0x28bf71['json']();throw new Error(_0xad49a7['message']||'Login\x20failed');}return await _0x28bf71['json']();},async 'logout'(){const _0x1d05cc=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1d05cc['ok']){const _0x304487=await _0x1d05cc['json']();throw new Error(_0x304487['message']||'Logout\x20failed');}return await _0x1d05cc['json']();},async 'getCurrentUser'(){const _0x347193=await fetch(API_BASE+'/auth/me');if(!_0x347193['ok'])throw new Error('Not\x20authenticated');const _0xb52494=await _0x347193['json']();return _0xb52494['user'];},async 'getRolesInfo'(){const _0x2d8698=await fetch(API_BASE+'/users/roles');if(!_0x2d8698['ok']){const _0x3b0d9d=await _0x2d8698['json']();throw new Error(_0x3b0d9d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2d8698['json']();},async 'getUsers'(){const _0x559a7e=await fetch(API_BASE+'/users');if(!_0x559a7e['ok']){const _0x49fcac=await _0x559a7e['json']();throw new Error(_0x49fcac['message']||'Failed\x20to\x20get\x20users');}return await _0x559a7e['json']();},async 'getUser'(_0x2092a6){const _0x3b58dd=await fetch(API_BASE+'/users/'+_0x2092a6);if(!_0x3b58dd['ok']){const _0x30895f=await _0x3b58dd['json']();throw new Error(_0x30895f['message']||'Failed\x20to\x20get\x20user');}return await _0x3b58dd['json']();},async 'createUser'(_0x2c1d6d){const _0x39c61c=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2c1d6d)});if(!_0x39c61c['ok']){const _0x1ae147=await _0x39c61c['json']();throw new Error(_0x1ae147['message']||'Failed\x20to\x20create\x20user');}return await _0x39c61c['json']();},async 'updateUser'(_0x3209e5,_0x5191a2){const _0x44ff92=await fetch(API_BASE+'/users/'+_0x3209e5,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5191a2)});if(!_0x44ff92['ok']){const _0x6782e6=await _0x44ff92['json']();throw new Error(_0x6782e6['message']||'Failed\x20to\x20update\x20user');}return await _0x44ff92['json']();},async 'deleteUser'(_0x127a13){const _0x730354=await fetch(API_BASE+'/users/'+_0x127a13,{'method':'DELETE'});if(!_0x730354['ok']){const _0x368fe5=await _0x730354['json']();throw new Error(_0x368fe5['message']||'Failed\x20to\x20delete\x20user');}return await _0x730354['json']();},async 'stopAllContainers'(){const _0x5170d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x492a1f=await _0x5170d1['json']()['catch'](()=>({}));if(!_0x5170d1['ok'])throw new Error(_0x492a1f['message']||_0x492a1f['error']||'Failed\x20to\x20stop\x20containers');return _0x492a1f;},async 'removeStoppedContainers'(){const _0x167033=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1a7a6d=await _0x167033['json']()['catch'](()=>({}));if(!_0x167033['ok'])throw new Error(_0x1a7a6d['message']||_0x1a7a6d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1a7a6d;},async 'pruneDockerResources'(){const _0x3e1f5f=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x57e0e0=await _0x3e1f5f['json']()['catch'](()=>({}));if(!_0x3e1f5f['ok'])throw new Error(_0x57e0e0['message']||_0x57e0e0['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x57e0e0;},async 'createPasswordToken'(_0x3fa2f4,_0x2a030b='setup',_0xdc6056=![]){const _0x16b8ac=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3fa2f4,'type':_0x2a030b,'sendEmail':_0xdc6056})});if(!_0x16b8ac['ok']){const _0x43b77c=await _0x16b8ac['json']();throw new Error(_0x43b77c['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x16b8ac['json']();},async 'getEmailConfig'(){const _0x5ba923=await fetch(API_BASE+'/password/email-config');if(!_0x5ba923['ok']){const _0x4e7343=await _0x5ba923['json']();throw new Error(_0x4e7343['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5ba923['json']();},async 'updateTaskName'(_0x498dff,_0x5e59eb){const _0x58bce7=await fetch(API_BASE+'/tasks/'+_0x498dff,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5e59eb})});if(!_0x58bce7['ok']){const _0x44c751=await _0x58bce7['json']();throw new Error(_0x44c751['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x58bce7['json']();},async 'pinTask'(_0x5a821b,_0x4943f9,_0x2391bd=null){if(!_0x5a821b)throw new Error('Task\x20ID\x20is\x20required');const _0x1ef2c9={'pinned':_0x4943f9};_0x2391bd&&_0x2391bd['length']>0x0&&(_0x1ef2c9['additionalTaskIds']=_0x2391bd);const _0x24c9df=await fetch(API_BASE+'/tasks/'+_0x5a821b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ef2c9)});if(!_0x24c9df['ok']){const _0x4ac1d3=await _0x24c9df['json']();throw new Error(_0x4ac1d3['error']||'Failed\x20to\x20pin\x20task');}return await _0x24c9df['json']();},async 'setTaskWinner'(_0x17a284,_0x4c037a,_0x402ca9=[]){if(!_0x17a284)throw new Error('Task\x20ID\x20is\x20required');const _0x3fa58a=await fetch(API_BASE+'/tasks/'+_0x17a284+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4c037a,'siblings':_0x402ca9})});if(!_0x3fa58a['ok']){const _0x38f404=await _0x3fa58a['json']();throw new Error(_0x38f404['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3fa58a['json']();},async 'setTaskLoser'(_0x15b3c0,_0x13025a){if(!_0x15b3c0)throw new Error('Task\x20ID\x20is\x20required');const _0x36b92e=await fetch(API_BASE+'/tasks/'+_0x15b3c0+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x13025a})});if(!_0x36b92e['ok']){const _0x461084=await _0x36b92e['json']();throw new Error(_0x461084['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x36b92e['json']();},async 'createTaskGroup'(_0x5ac695){const _0xf76252=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac695)});if(!_0xf76252['ok']){const _0x52c5a3=await _0xf76252['json']();throw new Error(_0x52c5a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xf76252['json']();},async 'getTaskGroups'(_0x5d03dd={}){const _0x267b26=new URLSearchParams();if(_0x5d03dd['userId'])_0x267b26['set']('userId',String(_0x5d03dd['userId']));if(_0x5d03dd['status'])_0x267b26['set']('status',String(_0x5d03dd['status']));if(_0x5d03dd['limit'])_0x267b26['set']('limit',String(_0x5d03dd['limit']));const _0xe064a7=API_BASE+'/tasks/groups'+(_0x267b26['toString']()?'?'+_0x267b26['toString']():''),_0x468e9d=await fetch(_0xe064a7);if(!_0x468e9d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x468e9d['json']();},async 'getTaskGroup'(_0x59c226){const _0x3507b4=await fetch(API_BASE+'/tasks/groups/'+_0x59c226);if(!_0x3507b4['ok']){const _0x44a7ef=await _0x3507b4['json']();throw new Error(_0x44a7ef['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3507b4['json']();},async 'updateTaskGroup'(_0x3b36b,_0x3c87af,_0xc08e50){const _0x11e81e=await fetch(API_BASE+'/tasks/'+_0x3b36b+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3c87af,'groupIndex':_0xc08e50})});if(!_0x11e81e['ok']){const _0x4ef38c=await _0x11e81e['json']();throw new Error(_0x4ef38c['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x11e81e['json']();},async 'removeTaskFromGroup'(_0xb1e503){return this['updateTaskGroup'](_0xb1e503,null,null);},async 'deleteTaskGroup'(_0x344e01,_0x3429ab=![]){const _0x21f391=_0x3429ab?'?deleteTasks=true':'',_0x4302c0=await fetch(API_BASE+'/tasks/groups/'+_0x344e01+_0x21f391,{'method':'DELETE'});if(!_0x4302c0['ok']){const _0x311d41=await _0x4302c0['json']();throw new Error(_0x311d41['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x284a00,_0x5733cc){const _0x689cd9=await fetch(API_BASE+'/tasks/groups/'+_0x284a00+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5733cc})});if(!_0x689cd9['ok']){const _0x3cd650=await _0x689cd9['json']();throw new Error(_0x3cd650['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x689cd9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x374851){if(!_0x374851)throw new Error('Task\x20ID\x20is\x20required');const _0x4edc83=await fetch(API_BASE+'/tasks/'+_0x374851+'/comments');if(!_0x4edc83['ok']){const _0xb3a000=await _0x4edc83['json']()['catch'](()=>({}));throw new Error(_0xb3a000['error']||'Failed\x20to\x20get\x20comments');}return await _0x4edc83['json']();},async 'addComment'(_0x429ebf,_0x13a3e5){if(!_0x429ebf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x13a3e5)throw new Error('Comment\x20content\x20is\x20required');const _0x36417d=await fetch(API_BASE+'/tasks/'+_0x429ebf+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x13a3e5})});if(!_0x36417d['ok']){const _0x4837d5=await _0x36417d['json']()['catch'](()=>({}));throw new Error(_0x4837d5['error']||'Failed\x20to\x20add\x20comment');}return await _0x36417d['json']();},async 'updateComment'(_0x252389,_0x22267c,_0x1b3e10){if(!_0x252389)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22267c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1b3e10)throw new Error('Comment\x20content\x20is\x20required');const _0x373429=await fetch(API_BASE+'/tasks/'+_0x252389+'/comments/'+_0x22267c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b3e10})});if(!_0x373429['ok']){const _0xb8558d=await _0x373429['json']()['catch'](()=>({}));throw new Error(_0xb8558d['error']||'Failed\x20to\x20update\x20comment');}return await _0x373429['json']();},async 'deleteComment'(_0x4cf70f,_0x4f4eb5){if(!_0x4cf70f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f4eb5)throw new Error('Comment\x20ID\x20is\x20required');const _0x2a9ba4=await fetch(API_BASE+'/tasks/'+_0x4cf70f+'/comments/'+_0x4f4eb5,{'method':'DELETE'});if(!_0x2a9ba4['ok']){const _0x245e30=await _0x2a9ba4['json']()['catch'](()=>({}));throw new Error(_0x245e30['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2a9ba4['json']();},async 'createObjective'(_0x3db758){const _0xd829f3={'objective':!![],'name':_0x3db758['name']||'','environment':_0x3db758['environment']||null,'agents':_0x3db758['agents']||[],'branches':_0x3db758['branches']||{},'isPinned':_0x3db758['isPinned']||![],'parentObjectiveId':_0x3db758['parentObjectiveId']||null,'env_vars':_0x3db758['envVars']||{},'parameters':{'instructions':_0x3db758['instructions']||''},'files':_0x3db758['files']||[],'jira':_0x3db758['jira']||null};return this['createTask'](_0xd829f3);},async 'updateObjective'(_0x485ff6,_0x51f958,_0x21ec51=[],_0x24dc4b=[]){let _0xfa99f9,_0x4854a3={};const _0x1fc001={..._0x51f958};_0x24dc4b&&_0x24dc4b['length']>0x0&&(_0x1fc001['removeAttachments']=_0x24dc4b);if(_0x21ec51&&_0x21ec51['length']>0x0){const _0x2fa696=new FormData();for(const [_0x23cff2,_0x26ec3c]of Object['entries'](_0x1fc001)){if(_0x26ec3c==null)continue;typeof _0x26ec3c==='object'?_0x2fa696['append'](_0x23cff2,JSON['stringify'](_0x26ec3c)):_0x2fa696['append'](_0x23cff2,String(_0x26ec3c));}for(const _0x9f29e of _0x21ec51){_0x2fa696['append']('attachments',_0x9f29e);}_0xfa99f9=_0x2fa696;}else _0x4854a3['Content-Type']='application/json',_0xfa99f9=JSON['stringify'](_0x1fc001);const _0x132fff=await fetch(API_BASE+'/tasks/'+_0x485ff6,{'method':'PATCH','headers':_0x4854a3,'body':_0xfa99f9});if(!_0x132fff['ok']){const _0x2c0872=await _0x132fff['json']();throw new Error(_0x2c0872['error']||'Failed\x20to\x20update\x20objective');}return await _0x132fff['json']();},async 'deleteObjective'(_0x15ab7e){return this['deleteTask'](_0x15ab7e);},async 'launchObjective'(_0x5abfe1,_0x301a4a={}){const _0x495d92=await fetch(API_BASE+'/tasks/'+_0x5abfe1+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x301a4a)});if(!_0x495d92['ok']){const _0x1e1191=await _0x495d92['json']();throw new Error(_0x1e1191['error']||'Failed\x20to\x20launch\x20objective');}return await _0x495d92['json']();},async 'getObjectiveAttachments'(_0x2661db){return this['getTaskAttachments'](_0x2661db);},async 'createJudgeTask'({environment:_0x343e60,judgeAgent:_0x258247,groupId:_0x2a205a,taskIds:_0xe125bd,judgeCustomInstructions:_0x40297a,isPinned:_0x4fd51f}){const _0xfdbc19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x343e60,'judgeAgent':_0x258247,'groupId':_0x2a205a,'taskIds':_0xe125bd,'judgeCustomInstructions':_0x40297a,'isPinned':_0x4fd51f})});if(!_0xfdbc19['ok']){const _0x47aea8=await _0xfdbc19['json']();throw new Error(_0x47aea8['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xfdbc19['json']();},async 'getJudgeTasks'(_0x525174){const _0x3eaae3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x525174));if(!_0x3eaae3['ok']){const _0x2585d4=await _0x3eaae3['json']();throw new Error(_0x2585d4['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x3eaae3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4fea02,_0x290269,_0x15b609=''){const _0x3f2550=await fetch(API_BASE+'/tasks/'+_0x4fea02+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x290269,'customPreamble':_0x15b609})});if(!_0x3f2550['ok']){const _0x8b38e9=await _0x3f2550['json']();throw new Error(_0x8b38e9['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x3f2550['json']();},async 'getJiraConfig'(){const _0x4c663c=await fetch(API_BASE+'/jira/config');if(!_0x4c663c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c663c['json']();},async 'getJiraIssue'(_0xb44476){const _0x5d7b03=await fetch(API_BASE+'/jira/issues/'+_0xb44476);if(!_0x5d7b03['ok']){const _0x59a0ff=await _0x5d7b03['json']()['catch'](()=>({}));throw new Error(_0x59a0ff['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x5d7b03['statusText']);}return await _0x5d7b03['json']();},async 'searchJiraIssues'(_0x567776,_0x291e72=0x14){const _0x55b132=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x567776,'maxResults':_0x291e72})});if(!_0x55b132['ok']){const _0x2978a3=await _0x55b132['json']()['catch'](()=>({}));throw new Error(_0x2978a3['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x55b132['statusText']);}return await _0x55b132['json']();},async 'postJiraComment'(_0x35d036,_0x2ed328){const _0x14afe6=await fetch(API_BASE+'/jira/issues/'+_0x35d036+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x2ed328})});if(!_0x14afe6['ok']){const _0x3f1a7c=await _0x14afe6['json']()['catch'](()=>({}));throw new Error(_0x3f1a7c['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x14afe6['statusText']);}return await _0x14afe6['json']();},async 'getJiraComments'(_0xe5709c){const _0x2e2d30=await fetch(API_BASE+'/jira/issues/'+_0xe5709c+'/comments');if(!_0x2e2d30['ok']){const _0x507cf1=await _0x2e2d30['json']()['catch'](()=>({}));throw new Error(_0x507cf1['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2e2d30['statusText']);}return await _0x2e2d30['json']();},async 'promptParameter'({environment:_0x137e4e,command:_0x17f099,parser:parser='json'}){const _0x2bb77d=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x137e4e,'command':_0x17f099,'parser':parser})});if(!_0x2bb77d['ok']){const _0x13de66=await _0x2bb77d['json']()['catch'](()=>({}));throw new Error(_0x13de66['message']||_0x13de66['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2bb77d['statusText']);}return await _0x2bb77d['json']();},async 'promptParameterStream'(_0x445bf4,_0xa707be){const _0xf88ff7=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x445bf4)});if(!_0xf88ff7['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xf88ff7['statusText']);const _0x4dacf7=_0xf88ff7['body']['getReader'](),_0x42edd5=new TextDecoder();let _0xb1caa1='';return new Promise((_0x567931,_0x26c021)=>{const _0x338785=async()=>{try{const {done:_0x3c5eb8,value:_0x309aa6}=await _0x4dacf7['read']();if(_0x3c5eb8)return;_0xb1caa1+=_0x42edd5['decode'](_0x309aa6,{'stream':!![]});const _0x5e243e=_0xb1caa1['split']('\x0a\x0a');_0xb1caa1=_0x5e243e['pop']()||'';for(const _0x24852e of _0x5e243e){if(!_0x24852e['trim']())continue;const _0x440ead=_0x24852e['split']('\x0a');let _0x478fd0='message',_0x440889='';for(const _0x4a42bb of _0x440ead){if(_0x4a42bb['startsWith']('event:'))_0x478fd0=_0x4a42bb['substring'](0x6)['trim']();else _0x4a42bb['startsWith']('data:')&&(_0x440889=_0x4a42bb['substring'](0x5)['trim']());}if(!_0x440889)continue;try{const _0x1da0f8=JSON['parse'](_0x440889);if(_0x478fd0==='progress'&&_0xa707be)_0xa707be(_0x1da0f8['stage'],_0x1da0f8['message']);else{if(_0x478fd0==='result'){_0x567931(_0x1da0f8);return;}else{if(_0x478fd0==='error'){let _0x3b2e9b=_0x1da0f8['message']||_0x1da0f8['error']||'Prompt\x20command\x20failed';_0x1da0f8['rawOutput']&&(_0x3b2e9b+='\x0a\x0aRaw\x20output:\x0a'+_0x1da0f8['rawOutput']);_0x26c021(new Error(_0x3b2e9b));return;}}}}catch(_0x54d7b5){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x54d7b5),console['error']('Event\x20type:',_0x478fd0),console['error']('Event\x20data:',_0x440889),console['error']('First\x20200\x20chars:',_0x440889['substring'](0x0,0xc8)),_0x26c021(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x54d7b5['message']+'\x0a\x0aData:\x20'+_0x440889['substring'](0x0,0x1f4)));return;}}_0x338785();}catch(_0x33f82d){_0x26c021(_0x33f82d);}};_0x338785();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x7df965){const _0x38ce7c=await fetch(''+API_BASE+_0x7df965);if(!_0x38ce7c['ok']){const _0x15c164=await _0x38ce7c['json']()['catch'](()=>({'error':_0x38ce7c['statusText']})),_0x411d45=new Error(_0x15c164['error']||_0x15c164['message']||_0x38ce7c['statusText']);if(_0x15c164['detail']!==undefined)_0x411d45['detail']=_0x15c164['detail'];throw _0x411d45;}return await _0x38ce7c['json']();},async 'post'(_0x223e1b,_0x3ad1f0){const _0x1b12e9=await fetch(''+API_BASE+_0x223e1b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ad1f0)});if(!_0x1b12e9['ok']){const _0x35e1f0=await _0x1b12e9['json']()['catch'](()=>({'error':_0x1b12e9['statusText']})),_0x9cdcab=new Error(_0x35e1f0['error']||_0x35e1f0['message']||_0x1b12e9['statusText']);if(_0x35e1f0['detail']!==undefined)_0x9cdcab['detail']=_0x35e1f0['detail'];throw _0x9cdcab;}return await _0x1b12e9['json']();},async 'put'(_0xac2ca9,_0x572993){const _0x4adc5b=await fetch(''+API_BASE+_0xac2ca9,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572993)});if(!_0x4adc5b['ok']){const _0xbb93ad=await _0x4adc5b['json']()['catch'](()=>({'error':_0x4adc5b['statusText']})),_0x207dcf=new Error(_0xbb93ad['error']||_0xbb93ad['message']||_0x4adc5b['statusText']);if(_0xbb93ad['detail']!==undefined)_0x207dcf['detail']=_0xbb93ad['detail'];throw _0x207dcf;}return await _0x4adc5b['json']();},async 'delete'(_0x834272,_0x47b7c5){const _0x4ae3f3={'method':'DELETE'};_0x47b7c5&&(_0x4ae3f3['headers']={'Content-Type':'application/json'},_0x4ae3f3['body']=JSON['stringify'](_0x47b7c5));const _0x145f53=await fetch(''+API_BASE+_0x834272,_0x4ae3f3);if(!_0x145f53['ok']){const _0xf8a606=await _0x145f53['json']()['catch'](()=>({'error':_0x145f53['statusText']})),_0x51642d=new Error(_0xf8a606['error']||_0xf8a606['message']||_0x145f53['statusText']);if(_0xf8a606['detail']!==undefined)_0x51642d['detail']=_0xf8a606['detail'];throw _0x51642d;}return await _0x145f53['json']();},async 'getSkills'(){const _0x217076=await fetch(API_BASE+'/skills');if(!_0x217076['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x217076['statusText']);return await _0x217076['json']();},async 'getSkill'(_0x4be507){const _0x15bda9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4be507));if(!_0x15bda9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x15bda9['statusText']);return await _0x15bda9['json']();},async 'createSkill'(_0x3ed7f3){const _0x1565c3=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ed7f3)});if(!_0x1565c3['ok']){const _0x38732c=await _0x1565c3['json']()['catch'](()=>({'error':_0x1565c3['statusText']})),_0x580f82=new Error(_0x38732c['error']||_0x38732c['message']||_0x1565c3['statusText']);if(_0x38732c['detail']!==undefined)_0x580f82['detail']=_0x38732c['detail'];throw _0x580f82;}return await _0x1565c3['json']();},async 'updateSkill'(_0x4993f2,_0x1d273a){const _0x13efb4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4993f2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d273a)});if(!_0x13efb4['ok']){const _0x49963a=await _0x13efb4['json']()['catch'](()=>({'error':_0x13efb4['statusText']})),_0x353198=new Error(_0x49963a['error']||_0x49963a['message']||_0x13efb4['statusText']);if(_0x49963a['detail']!==undefined)_0x353198['detail']=_0x49963a['detail'];throw _0x353198;}return await _0x13efb4['json']();},async 'deleteSkill'(_0x36b5e7){const _0x672ae0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36b5e7),{'method':'DELETE'});if(!_0x672ae0['ok']){const _0x4a1fa6=await _0x672ae0['json']()['catch'](()=>({'error':_0x672ae0['statusText']})),_0xd7572e=new Error(_0x4a1fa6['error']||_0x4a1fa6['message']||_0x672ae0['statusText']);if(_0x4a1fa6['detail']!==undefined)_0xd7572e['detail']=_0x4a1fa6['detail'];throw _0xd7572e;}return await _0x672ae0['json']();},async 'getSkillFile'(_0x2e9b0d,_0x45359e){const _0x284ddb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2e9b0d)+'/files/'+_0x45359e);if(!_0x284ddb['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x284ddb['statusText']);return await _0x284ddb['json']();},async 'saveSkillFile'(_0x3028eb,_0x416ae9,_0x3c5c12){const _0x5dd022=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3028eb)+'/files/'+_0x416ae9,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3c5c12})});if(!_0x5dd022['ok']){const _0x18af8e=await _0x5dd022['json']()['catch'](()=>({'error':_0x5dd022['statusText']})),_0x3c10c2=new Error(_0x18af8e['error']||_0x18af8e['message']||_0x5dd022['statusText']);if(_0x18af8e['detail']!==undefined)_0x3c10c2['detail']=_0x18af8e['detail'];throw _0x3c10c2;}return await _0x5dd022['json']();},async 'deleteSkillFile'(_0x41131b,_0x522df5){const _0x28a1ea=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x41131b)+'/files/'+_0x522df5,{'method':'DELETE'});if(!_0x28a1ea['ok']){const _0x1d700e=await _0x28a1ea['json']()['catch'](()=>({'error':_0x28a1ea['statusText']})),_0x400299=new Error(_0x1d700e['error']||_0x1d700e['message']||_0x28a1ea['statusText']);if(_0x1d700e['detail']!==undefined)_0x400299['detail']=_0x1d700e['detail'];throw _0x400299;}return await _0x28a1ea['json']();},async 'pullSkills'(){const _0x3eb594=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x3eb594['ok']){const _0x4309d2=await _0x3eb594['json']()['catch'](()=>({'error':_0x3eb594['statusText']})),_0x30fe7d=new Error(_0x4309d2['error']||_0x4309d2['message']||_0x3eb594['statusText']);if(_0x4309d2['detail']!==undefined)_0x30fe7d['detail']=_0x4309d2['detail'];throw _0x30fe7d;}return await _0x3eb594['json']();},async 'commitSkills'(_0x5e3c02,_0x18274b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x18274b,_0x5c5c7e=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5e3c02,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5c5c7e['ok']){const _0x15b640=await _0x5c5c7e['json']()['catch'](()=>({'error':_0x5c5c7e['statusText']})),_0x3f1492=new Error(_0x15b640['error']||_0x15b640['message']||_0x5c5c7e['statusText']);if(_0x15b640['detail']!==undefined)_0x3f1492['detail']=_0x15b640['detail'];throw _0x3f1492;}return await _0x5c5c7e['json']();},async 'discardSkillsChanges'(){const _0x58fa99=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x58fa99['ok']){const _0x1c3727=await _0x58fa99['json']()['catch'](()=>({'error':_0x58fa99['statusText']})),_0x4f0a85=new Error(_0x1c3727['error']||_0x1c3727['message']||_0x58fa99['statusText']);if(_0x1c3727['detail']!==undefined)_0x4f0a85['detail']=_0x1c3727['detail'];throw _0x4f0a85;}return await _0x58fa99['json']();},async 'getSkillCatalog'(){const _0x1607a6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1607a6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1607a6['statusText']);return await _0x1607a6['json']();},async 'getImportedSkillsRegistry'(){const _0x1d30e3=await fetch(API_BASE+'/external-skills/registry');if(!_0x1d30e3['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x1d30e3['statusText']);return await _0x1d30e3['json']();},async 'importCatalogSkill'(_0x251633){const _0x53facc=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x251633})});if(!_0x53facc['ok']){const _0x54d49f=await _0x53facc['json']()['catch'](()=>({'error':_0x53facc['statusText']})),_0x3b8519=new Error(_0x54d49f['error']||_0x54d49f['message']||_0x53facc['statusText']);if(_0x54d49f['detail']!==undefined)_0x3b8519['detail']=_0x54d49f['detail'];throw _0x3b8519;}return await _0x53facc['json']();},async 'importSkillFromGit'(_0x13eed6,_0x107eff,_0xedb603='main',_0x5aba78=null){const _0x72ac66=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13eed6,'skillPath':_0x107eff,'branch':_0xedb603,'skillId':_0x5aba78})});if(!_0x72ac66['ok']){const _0x5030bb=await _0x72ac66['json']()['catch'](()=>({'error':_0x72ac66['statusText']})),_0x37bea3=new Error(_0x5030bb['error']||_0x5030bb['message']||_0x72ac66['statusText']);if(_0x5030bb['detail']!==undefined)_0x37bea3['detail']=_0x5030bb['detail'];throw _0x37bea3;}return await _0x72ac66['json']();},async 'probeMarketplace'(_0x4dbfce,_0x13d472='main'){const _0x48f2d8=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dbfce,'branch':_0x13d472})});if(!_0x48f2d8['ok']){const _0x44ad50=await _0x48f2d8['json']()['catch'](()=>({'error':_0x48f2d8['statusText']})),_0x143afb=new Error(_0x44ad50['error']||_0x44ad50['message']||_0x48f2d8['statusText']);if(_0x44ad50['detail']!==undefined)_0x143afb['detail']=_0x44ad50['detail'];throw _0x143afb;}return await _0x48f2d8['json']();},async 'importMarketplaceBundle'(_0x5adf05,_0x59ce37,_0xd15f90,_0x281aad=null){const _0x501cf0=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5adf05,'branch':_0x59ce37,'bundleId':_0xd15f90,'selectedSkills':_0x281aad})});if(!_0x501cf0['ok']){const _0x26b77a=await _0x501cf0['json']()['catch'](()=>({'error':_0x501cf0['statusText']})),_0xd58eb0=new Error(_0x26b77a['error']||_0x26b77a['message']||_0x501cf0['statusText']);if(_0x26b77a['detail']!==undefined)_0xd58eb0['detail']=_0x26b77a['detail'];throw _0xd58eb0;}return await _0x501cf0['json']();},async 'importSkillFromFolder'(_0x4fce9c,_0x47f3a1=null){const _0x389d06=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4fce9c,'skillId':_0x47f3a1})});if(!_0x389d06['ok']){const _0x471aac=await _0x389d06['json']()['catch'](()=>({'error':_0x389d06['statusText']})),_0x17d6ad=new Error(_0x471aac['error']||_0x471aac['message']||_0x389d06['statusText']);if(_0x471aac['detail']!==undefined)_0x17d6ad['detail']=_0x471aac['detail'];throw _0x17d6ad;}return await _0x389d06['json']();},async 'importSkillFromNpm'(_0x575889,_0x2e9bb8='latest',_0x11e874=null,_0x3ebd2f=null){const _0x4908da=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x575889,'version':_0x2e9bb8,'skillId':_0x11e874,'registry':_0x3ebd2f})});if(!_0x4908da['ok']){const _0x307ee2=await _0x4908da['json']()['catch'](()=>({'error':_0x4908da['statusText']})),_0x498540=new Error(_0x307ee2['error']||_0x307ee2['message']||_0x4908da['statusText']);if(_0x307ee2['detail']!==undefined)_0x498540['detail']=_0x307ee2['detail'];throw _0x498540;}return await _0x4908da['json']();},async 'checkSkillUpdates'(_0x100a28){const _0x3c2b00=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x100a28)+'/check-updates',{'method':'POST'});if(!_0x3c2b00['ok']){const _0x205288=await _0x3c2b00['json']()['catch'](()=>({'error':_0x3c2b00['statusText']})),_0x29c6cb=new Error(_0x205288['error']||_0x205288['message']||_0x3c2b00['statusText']);if(_0x205288['detail']!==undefined)_0x29c6cb['detail']=_0x205288['detail'];throw _0x29c6cb;}return await _0x3c2b00['json']();},async 'updateExternalSkill'(_0xeb883c){const _0xd26135=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xeb883c)+'/update',{'method':'POST'});if(!_0xd26135['ok']){const _0x47e68c=await _0xd26135['json']()['catch'](()=>({'error':_0xd26135['statusText']})),_0x185def=new Error(_0x47e68c['error']||_0x47e68c['message']||_0xd26135['statusText']);if(_0x47e68c['detail']!==undefined)_0x185def['detail']=_0x47e68c['detail'];throw _0x185def;}return await _0xd26135['json']();},async 'updateSkillFlags'(_0x53127c,_0x250196){const _0x492aa0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x53127c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x250196})});if(!_0x492aa0['ok']){const _0x25376b=await _0x492aa0['json']()['catch'](()=>({'error':_0x492aa0['statusText']})),_0x5c6892=new Error(_0x25376b['error']||_0x25376b['message']||_0x492aa0['statusText']);if(_0x25376b['detail']!==undefined)_0x5c6892['detail']=_0x25376b['detail'];throw _0x5c6892;}return await _0x492aa0['json']();},async 'removeFromImportedRegistry'(_0x35b91f){const _0x514769=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x35b91f)+'/registry',{'method':'DELETE'});if(!_0x514769['ok']){const _0x1e13a2=await _0x514769['json']()['catch'](()=>({'error':_0x514769['statusText']})),_0x2c5456=new Error(_0x1e13a2['error']||_0x1e13a2['message']||_0x514769['statusText']);if(_0x1e13a2['detail']!==undefined)_0x2c5456['detail']=_0x1e13a2['detail'];throw _0x2c5456;}return await _0x514769['json']();},async 'getTeams'(){const _0x5d5d2c=await fetch(API_BASE+'/teams');if(!_0x5d5d2c['ok']){const _0x858478=await _0x5d5d2c['json']()['catch'](()=>({'message':_0x5d5d2c['statusText']}));throw new Error(_0x858478['message']||'Failed\x20to\x20get\x20teams');}return await _0x5d5d2c['json']();},async 'getTeam'(_0x59ab72){const _0x5a3ea7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x59ab72));if(!_0x5a3ea7['ok']){const _0xff99ed=await _0x5a3ea7['json']()['catch'](()=>({'message':_0x5a3ea7['statusText']}));throw new Error(_0xff99ed['message']||'Failed\x20to\x20get\x20team');}return await _0x5a3ea7['json']();},async 'createTeam'(_0x56c83d){const _0x30b2cd=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56c83d)});if(!_0x30b2cd['ok']){const _0x27e59a=await _0x30b2cd['json']()['catch'](()=>({'message':_0x30b2cd['statusText']}));throw new Error(_0x27e59a['message']||'Failed\x20to\x20create\x20team');}return await _0x30b2cd['json']();},async 'updateTeam'(_0x389461,_0x488a0e){const _0x3f1a0c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x389461),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x488a0e)});if(!_0x3f1a0c['ok']){const _0xe243c5=await _0x3f1a0c['json']()['catch'](()=>({'message':_0x3f1a0c['statusText']}));throw new Error(_0xe243c5['message']||'Failed\x20to\x20update\x20team');}return await _0x3f1a0c['json']();},async 'deleteTeam'(_0x34953a){const _0x578b93=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x34953a),{'method':'DELETE'});if(!_0x578b93['ok']){const _0x6ca825=await _0x578b93['json']()['catch'](()=>({'message':_0x578b93['statusText']}));throw new Error(_0x6ca825['message']||'Failed\x20to\x20delete\x20team');}return await _0x578b93['json']();},async 'addTeamMember'(_0x233d29,_0x15973d){const _0x4fb933=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x233d29)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x15973d})});if(!_0x4fb933['ok']){const _0x1370ac=await _0x4fb933['json']()['catch'](()=>({'message':_0x4fb933['statusText']}));throw new Error(_0x1370ac['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4fb933['json']();},async 'removeTeamMember'(_0x5217c5,_0x39af25){const _0x2c6b4a=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5217c5)+'/members/'+encodeURIComponent(_0x39af25),{'method':'DELETE'});if(!_0x2c6b4a['ok']){const _0x49555a=await _0x2c6b4a['json']()['catch'](()=>({'message':_0x2c6b4a['statusText']}));throw new Error(_0x49555a['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2c6b4a['json']();},async 'getBindings'(_0x3d923e={}){const _0x21d745=new URLSearchParams();if(_0x3d923e['resource_type'])_0x21d745['set']('resource_type',_0x3d923e['resource_type']);if(_0x3d923e['resource_id'])_0x21d745['set']('resource_id',_0x3d923e['resource_id']);if(_0x3d923e['subject_type'])_0x21d745['set']('subject_type',_0x3d923e['subject_type']);if(_0x3d923e['subject_id'])_0x21d745['set']('subject_id',_0x3d923e['subject_id']);const _0x5b9782=_0x21d745['toString'](),_0x31d2f1=await fetch(API_BASE+'/bindings'+(_0x5b9782?'?'+_0x5b9782:''));if(!_0x31d2f1['ok']){const _0x2ac507=await _0x31d2f1['json']()['catch'](()=>({'message':_0x31d2f1['statusText']}));throw new Error(_0x2ac507['message']||'Failed\x20to\x20get\x20bindings');}return await _0x31d2f1['json']();},async 'createBinding'(_0x402a05){const _0x316dad=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x402a05)});if(!_0x316dad['ok']){const _0xb69b53=await _0x316dad['json']()['catch'](()=>({'message':_0x316dad['statusText']}));throw new Error(_0xb69b53['message']||'Failed\x20to\x20create\x20binding');}return await _0x316dad['json']();},async 'updateBinding'(_0x50e802,_0x4443c0){const _0x322d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x50e802),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4443c0)});if(!_0x322d7e['ok']){const _0x4ebab0=await _0x322d7e['json']()['catch'](()=>({'message':_0x322d7e['statusText']}));throw new Error(_0x4ebab0['message']||'Failed\x20to\x20update\x20binding');}return await _0x322d7e['json']();},async 'deleteBinding'(_0x480327){const _0xbfe060=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x480327),{'method':'DELETE'});if(!_0xbfe060['ok']){const _0x2d84b4=await _0xbfe060['json']()['catch'](()=>({'message':_0xbfe060['statusText']}));throw new Error(_0x2d84b4['message']||'Failed\x20to\x20delete\x20binding');}return await _0xbfe060['json']();},async 'getRoleDefinitions'(){const _0x4ee9d1=await fetch(API_BASE+'/roles');if(!_0x4ee9d1['ok']){const _0x1476b0=await _0x4ee9d1['json']()['catch'](()=>({'message':_0x4ee9d1['statusText']}));throw new Error(_0x1476b0['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4ee9d1['json']();},async 'getRoleDefinition'(_0x22b56d){const _0x390899=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x22b56d));if(!_0x390899['ok']){const _0x283e45=await _0x390899['json']()['catch'](()=>({'message':_0x390899['statusText']}));throw new Error(_0x283e45['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x390899['json']();},async 'createRoleDefinition'(_0x1124f3){const _0xa5138a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1124f3)});if(!_0xa5138a['ok']){const _0x22eba3=await _0xa5138a['json']()['catch'](()=>({'message':_0xa5138a['statusText']}));throw new Error(_0x22eba3['message']||_0x22eba3['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0xa5138a['json']();},async 'updateRoleDefinition'(_0x5be21d,_0x2191ae){const _0x5aca7a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5be21d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2191ae)});if(!_0x5aca7a['ok']){const _0x2215b8=await _0x5aca7a['json']()['catch'](()=>({'message':_0x5aca7a['statusText']}));throw new Error(_0x2215b8['message']||_0x2215b8['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x5aca7a['json']();},async 'deleteRoleDefinition'(_0x255bc2){const _0x4b3a08=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x255bc2),{'method':'DELETE'});if(!_0x4b3a08['ok']){const _0x3cd3fb=await _0x4b3a08['json']()['catch'](()=>({'message':_0x4b3a08['statusText']}));throw new Error(_0x3cd3fb['message']||_0x3cd3fb['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4b3a08['json']();},async 'getAvailablePermissions'(){const _0xe9e002=await fetch(API_BASE+'/roles/available-permissions');if(!_0xe9e002['ok']){const _0x2c3e14=await _0xe9e002['json']()['catch'](()=>({'message':_0xe9e002['statusText']}));throw new Error(_0x2c3e14['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xe9e002['json']();},async 'getGitProviderAllowedTeams'(_0x5e6443){const _0x22f3af=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5e6443)+'/allowed-teams');if(!_0x22f3af['ok']){const _0x2fbbdd=await _0x22f3af['json']()['catch'](()=>({'message':_0x22f3af['statusText']}));throw new Error(_0x2fbbdd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x22f3af['json']();},async 'setGitProviderAllowedTeams'(_0x2e7489,_0x59b691){const _0x1d5324=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2e7489)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x59b691})});if(!_0x1d5324['ok']){const _0x8b7fb3=await _0x1d5324['json']()['catch'](()=>({'message':_0x1d5324['statusText']}));throw new Error(_0x8b7fb3['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1d5324['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0xf3a60d=toastState['baseBottom'];toastState['toasts']['forEach'](_0x43d68d=>{_0x43d68d['el']['style']['bottom']=_0xf3a60d+'px';const _0x447a89=_0x43d68d['el']['offsetHeight']||toastState['defaultHeight'];_0xf3a60d+=_0x447a89+toastState['gap'];});});}function removeToastById(_0x42a1a9){const _0x1ec0a0=toastState['toasts']['findIndex'](_0xd599e=>_0xd599e['id']===_0x42a1a9);if(_0x1ec0a0===-0x1)return;const _0x199f3f=toastState['toasts'][_0x1ec0a0];if(_0x199f3f['timeoutId'])clearTimeout(_0x199f3f['timeoutId']);_0x199f3f['el']['classList']['remove']('show'),setTimeout(()=>_0x199f3f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x1ec0a0,0x1),repositionAllToasts();}function registerToast(_0x43ecf0){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x43ecf0),repositionAllToasts(),_0x43ecf0['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x481310){if(_0x481310===null||_0x481310===undefined)return'';return String(_0x481310)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x5d4a5f,_0x35f8aa){if(_0x5d4a5f&&typeof _0x5d4a5f==='object'&&!Array['isArray'](_0x5d4a5f))return{'code':typeof _0x5d4a5f['text']==='string'?_0x5d4a5f['text']:'','language':typeof _0x5d4a5f['lang']==='string'?_0x5d4a5f['lang']:''};return{'code':typeof _0x5d4a5f==='string'?_0x5d4a5f:'','language':typeof _0x35f8aa==='string'?_0x35f8aa:''};}function buildMermaidBlock(_0x16880b){const _0x1344aa=String(_0x16880b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1344aa))+'\x22>'+escapeHtmlValue(_0x1344aa)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x17325a=new marked['Renderer'](),_0x80bc2d=_0x17325a['code']['bind'](_0x17325a);return _0x17325a['code']=function(_0x933291,_0x1318e3,..._0x302b24){const {code:_0x1217ec,language:_0xe77aaa}=getMarkdownCodeBlockPayload(_0x933291,_0x1318e3),_0x2a7d9d=String(_0xe77aaa||'')['trim']()['toLowerCase']();if(_0x2a7d9d==='mermaid')return buildMermaidBlock(_0x1217ec);const _0x13b3a4=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x13b3a4&&_0x2a7d9d)try{const _0x4816ad=_0x13b3a4['getLanguage'](_0x2a7d9d)?_0x2a7d9d:'plaintext',_0x72417c=_0x13b3a4['highlight'](_0x1217ec,{'language':_0x4816ad})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2a7d9d)+'\x22>'+_0x72417c+'</code></pre>';}catch(_0x17970d){console['error']('Syntax\x20highlighting\x20error:',_0x17970d);}return _0x80bc2d(_0x933291,_0x1318e3,..._0x302b24);},sharedMarkedRenderer=_0x17325a,_0x17325a;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x4d9cfb=window['mermaid'];if(!_0x4d9cfb||typeof _0x4d9cfb['initialize']!=='function')return _0x4d9cfb||null;return _0x4d9cfb['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4d9cfb;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4aee18,_0x7bb9f3)=>{const _0x8ecec4=()=>_0x4aee18(configureMermaidInstance()),_0x5e3d72=()=>{mermaidLoadPromise=null,_0x7bb9f3(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x3d8168=document['getElementById'](MERMAID_SCRIPT_ID);!_0x3d8168&&(_0x3d8168=document['createElement']('script'),_0x3d8168['id']=MERMAID_SCRIPT_ID,_0x3d8168['src']=MERMAID_SCRIPT_SRC,_0x3d8168['async']=!![],document['head']['appendChild'](_0x3d8168));if(window['mermaid']){_0x8ecec4();return;}_0x3d8168['addEventListener']('load',_0x8ecec4,{'once':!![]}),_0x3d8168['addEventListener']('error',_0x5e3d72,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x15b0eb){const _0x59cf22=_0x15b0eb['getAttribute']('data-mermaid-source');if(!_0x59cf22)return null;let _0x3345bf=_0x59cf22;try{_0x3345bf=decodeURIComponent(_0x59cf22);}catch{}return _0x15b0eb['textContent']=_0x3345bf,_0x15b0eb['removeAttribute']('data-processed'),_0x15b0eb['removeAttribute']('aria-roledescription'),_0x15b0eb['removeAttribute']('role'),_0x15b0eb['removeAttribute']('aria-label'),_0x3345bf;}function collectMermaidNodes(_0x545ef9,_0xa3feb0){if(!(_0x545ef9 instanceof Element))return;_0x545ef9['matches']('.mermaid[data-mermaid-source]')&&_0xa3feb0['add'](_0x545ef9),_0x545ef9['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4a5b7b=>{_0xa3feb0['add'](_0x4a5b7b);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x28750a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x3ec8e3=>setTimeout(_0x3ec8e3,0x0);_0x28750a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x28d031=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x28d031);});});}function queueMermaidRender(_0x27720e){const _0x35a477=new Set();_0x27720e instanceof Document||_0x27720e instanceof DocumentFragment?_0x27720e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5da4d6=>_0x35a477['add'](_0x5da4d6)):collectMermaidNodes(_0x27720e,_0x35a477);if(_0x35a477['size']===0x0)return;_0x35a477['forEach'](_0x536286=>pendingMermaidNodes['add'](_0x536286)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x222149=Array['from'](pendingMermaidNodes)['filter'](_0x58378c=>_0x58378c['isConnected']);pendingMermaidNodes['clear']();if(_0x222149['length']===0x0)return;const _0x296cc5=await loadMermaid();if(!_0x296cc5)return;configureMermaidInstance();const _0x472526=getMermaidTheme();for(const _0x222dad of _0x222149){const _0x11be9b=_0x222dad['getAttribute']('data-mermaid-source');if(!_0x11be9b)continue;const _0x31cb80=_0x222dad['getAttribute']('data-processed')==='true';if(_0x31cb80&&_0x222dad['dataset']['mermaidTheme']===_0x472526)continue;restoreMermaidSource(_0x222dad);try{if(typeof _0x296cc5['run']==='function')await _0x296cc5['run']({'nodes':[_0x222dad]});else typeof _0x296cc5['init']==='function'&&_0x296cc5['init'](undefined,[_0x222dad]);_0x222dad['dataset']['mermaidTheme']=_0x472526,delete _0x222dad['dataset']['mermaidError'];}catch(_0x2e4003){console['error']('Mermaid\x20render\x20failed:',_0x2e4003),restoreMermaidSource(_0x222dad),_0x222dad['dataset']['mermaidError']='true',delete _0x222dad['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x112ed3=>{_0x112ed3['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x112ed3);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x253eb2=>{_0x253eb2['forEach'](_0x29f5f9=>{_0x29f5f9['addedNodes']['forEach'](_0x577d7e=>{_0x577d7e['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x577d7e);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0xbf3ecb){const _0x5b0f05=new Date(_0xbf3ecb),_0x3eb63c=new Date(),_0x3b9a39=_0x3eb63c-_0x5b0f05,_0x51b2bb=Math['floor'](_0x3b9a39/0x3e8),_0x4ad4f9=Math['floor'](_0x51b2bb/0x3c),_0x1b6847=Math['floor'](_0x4ad4f9/0x3c),_0x202ea3=Math['floor'](_0x1b6847/0x18);if(_0x51b2bb<0x3c)return'now';if(_0x4ad4f9<0x3c)return _0x4ad4f9+'m\x20ago';if(_0x1b6847<0x18)return _0x1b6847+'h\x20ago';return _0x202ea3+'d\x20ago';},'getStatusIcon'(_0x2a3d5f){switch(_0x2a3d5f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x2b3959){switch(_0x2b3959){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x25d2a3,_0x52b009=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0xe0b3c0={};_0xe0b3c0['text/plain']=new Blob([_0x25d2a3],{'type':'text/plain'});_0x52b009&&(_0xe0b3c0['text/html']=new Blob([_0x52b009],{'type':'text/html'}));const _0x163c4f=new ClipboardItem(_0xe0b3c0);return await navigator['clipboard']['write']([_0x163c4f]),!![];}catch(_0x23c83a){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x23c83a);}try{const _0x423fe3=_0x111764=>{_0x111764['preventDefault'](),_0x111764['clipboardData']['setData']('text/plain',_0x25d2a3),_0x52b009&&_0x111764['clipboardData']['setData']('text/html',_0x52b009);};document['addEventListener']('copy',_0x423fe3);const _0x5ed2f5=document['execCommand']('copy');document['removeEventListener']('copy',_0x423fe3);if(_0x5ed2f5)return!![];}catch(_0x2b64d3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2b64d3);}try{const _0x3622e4=document['createElement']('textarea');_0x3622e4['value']=_0x25d2a3,_0x3622e4['style']['position']='fixed',_0x3622e4['style']['opacity']='0',_0x3622e4['style']['pointerEvents']='none',document['body']['appendChild'](_0x3622e4),_0x3622e4['select']();const _0x325eca=document['execCommand']('copy');return document['body']['removeChild'](_0x3622e4),_0x325eca;}catch(_0x20d951){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x20d951),![];}},'showToast'(_0x12da4e,_0x20c4cd='info'){const _0x64f394=getNextToastId(),_0x2220a4=document['createElement']('div');_0x2220a4['className']='toast\x20toast-'+_0x20c4cd,_0x2220a4['textContent']=_0x12da4e,_0x2220a4['dataset']['toastId']=_0x64f394,document['body']['appendChild'](_0x2220a4);const _0x679586=_0x20c4cd==='error'?0x2710:0xbb8,_0x506e2e=setTimeout(()=>{removeToastById(_0x64f394);},_0x679586),_0x148c5f={'id':_0x64f394,'el':_0x2220a4,'timeoutId':_0x506e2e};return registerToast(_0x148c5f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2220a4['classList']['add']('show');});}),_0x64f394;},'showError'(_0x409c21){console['error'](_0x409c21);const _0x24d05e=typeof _0x409c21==='string'?_0x409c21:_0x409c21['message']||'An\x20error\x20occurred';this['showToast'](_0x24d05e,'error');},'showSuccess'(_0x2589f5){this['showToast'](_0x2589f5,'success');},'capitalize'(_0x1fdcd1){if(!_0x1fdcd1)return'';return _0x1fdcd1['charAt'](0x0)['toUpperCase']()+_0x1fdcd1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4f7911){return escapeHtmlValue(_0x4f7911);},'ansiToHtml'(_0x11eba0){if(_0x11eba0===null||_0x11eba0===undefined)return'';let _0xb33bb7=this['escapeHtml'](_0x11eba0);const _0x2762dc={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0xa5fab3={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x21be70=0x0;return _0xb33bb7=_0xb33bb7['replace'](/\x1b\[([0-9;]*)m/g,(_0x531a8c,_0x1b4a4a)=>{if(!_0x1b4a4a||_0x1b4a4a==='0'){const _0x5b6e82='</span>'['repeat'](_0x21be70);return _0x21be70=0x0,_0x5b6e82;}const _0x4a96bc=_0x1b4a4a['split'](';'),_0x18b795=[];for(const _0x3e13c5 of _0x4a96bc){if(_0x3e13c5==='1')_0x18b795['push']('font-weight:bold');else{if(_0x3e13c5==='2')_0x18b795['push']('opacity:0.7');else{if(_0x3e13c5==='3')_0x18b795['push']('font-style:italic');else{if(_0x3e13c5==='4')_0x18b795['push']('text-decoration:underline');else{if(_0x3e13c5==='9')_0x18b795['push']('text-decoration:line-through');else{if(_0x2762dc[_0x3e13c5])_0x18b795['push']('color:'+_0x2762dc[_0x3e13c5]);else{if(_0xa5fab3[_0x3e13c5])_0x18b795['push']('background-color:'+_0xa5fab3[_0x3e13c5]);}}}}}}}if(_0x18b795['length']>0x0)return _0x21be70++,'<span\x20style=\x22'+_0x18b795['join'](';')+'\x22>';return'';}),_0xb33bb7+='</span>'['repeat'](_0x21be70),_0xb33bb7=_0xb33bb7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4c3fc0,_0x599765)=>{if(!_0x599765||_0x599765==='0')return'';const _0x32ef31=_0x599765['split'](';'),_0x48d2e6=[];for(const _0x5b9434 of _0x32ef31){if(_0x5b9434==='1')_0x48d2e6['push']('font-weight:bold');else{if(_0x2762dc[_0x5b9434])_0x48d2e6['push']('color:'+_0x2762dc[_0x5b9434]);else{if(_0xa5fab3[_0x5b9434])_0x48d2e6['push']('background-color:'+_0xa5fab3[_0x5b9434]);}}}if(_0x48d2e6['length']>0x0)return'<span\x20style=\x22'+_0x48d2e6['join'](';')+'\x22>';return'';}),_0xb33bb7;},'showModal'({title:_0x7414ee,content:_0x419191,buttons:buttons=[]}){const _0x168d2e='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x7414ee)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x419191+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x16c31d,_0x27c98e)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x16c31d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x27c98e+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x16c31d['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x9ff255=document['createElement']('div');_0x9ff255['id']='utils-modal',_0x9ff255['className']='modal',_0x9ff255['innerHTML']=_0x168d2e,document['body']['appendChild'](_0x9ff255);const _0x280e90=document['getElementById']('utils-modal-close');_0x280e90&&_0x280e90['addEventListener']('click',()=>this['hideModal']());const _0x3c7150=_0x9ff255['querySelectorAll']('[data-btn-index]');_0x3c7150['forEach'](_0x1d3901=>{const _0x189c22=parseInt(_0x1d3901['dataset']['btnIndex']);buttons[_0x189c22]?.['onClick']&&_0x1d3901['addEventListener']('click',buttons[_0x189c22]['onClick']);});const _0x7fdf0a=document['getElementById']('utils-modal-overlay');_0x7fdf0a&&_0x7fdf0a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x705a35=document['getElementById']('utils-modal');_0x705a35&&_0x705a35['remove']();},'parseKeyValuePairs'(_0x5a3c5d){const _0x5cea1e={};if(!_0x5a3c5d)return _0x5cea1e;return _0x5a3c5d['split'](/\r?\n/)['map'](_0x542df3=>_0x542df3['trim']())['filter'](Boolean)['forEach'](_0x225e90=>{const _0x4655a3=_0x225e90['indexOf']('=');if(_0x4655a3>0x0){const _0x22ac7a=_0x225e90['slice'](0x0,_0x4655a3)['trim'](),_0x4f7763=_0x225e90['slice'](_0x4655a3+0x1)['trim']();if(_0x22ac7a)_0x5cea1e[_0x22ac7a]=_0x4f7763;}}),_0x5cea1e;},'debounce'(_0x581166,_0x4c3961=0xfa){let _0x5ac2fe=null;return(..._0xc0ff5c)=>{clearTimeout(_0x5ac2fe),_0x5ac2fe=setTimeout(()=>_0x581166['apply'](this,_0xc0ff5c),_0x4c3961);};},'formatTimestamp'(_0x1931a6){if(!_0x1931a6)return'N/A';const _0xa73a8e=new Date(_0x1931a6);return _0xa73a8e['toLocaleDateString']()+'\x20'+_0xa73a8e['toLocaleTimeString']();},'getQueryParams'(){const _0x70292d=new URLSearchParams(window['location']['search']),_0x5c5b37={};for(const [_0x313b1f,_0x4e68e7]of _0x70292d){_0x5c5b37[_0x313b1f]=_0x4e68e7;}return _0x5c5b37;},'formatDuration'(_0x590e22,_0x565f8c){if(!_0x590e22)return'N/A';const _0x15bf46=new Date(_0x590e22),_0x231da7=_0x565f8c?new Date(_0x565f8c):new Date(),_0x117434=_0x231da7-_0x15bf46;if(_0x117434<0x0)return'0s';const _0x2f2d35=Math['floor'](_0x117434/0x3e8),_0x1c0bca=Math['floor'](_0x2f2d35/0x3c),_0x15b8e6=Math['floor'](_0x1c0bca/0x3c),_0x105d24=Math['floor'](_0x15b8e6/0x18);if(_0x2f2d35<0x3c)return _0x2f2d35+'s';if(_0x1c0bca<0x3c)return _0x1c0bca+'m\x20'+_0x2f2d35%0x3c+'s';if(_0x15b8e6<0x18)return _0x15b8e6+'h\x20'+_0x1c0bca%0x3c+'m\x20'+_0x2f2d35%0x3c+'s';return _0x105d24+'d\x20'+_0x15b8e6%0x18+'h\x20'+_0x1c0bca%0x3c+'m';},'renderMarkdown'(_0x3478f4,_0x28c9f9={}){if(!_0x3478f4)return'';_0x3478f4=this['rewriteAttachmentLinks'](_0x3478f4,_0x28c9f9),_0x3478f4=this['rewriteColorSyntax'](_0x3478f4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3478f4,_0x28c9f9);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x3478f4);}catch(_0x3b5cd2){return console['error']('Markdown\x20parsing\x20error:',_0x3b5cd2),this['renderMarkdownFallback'](_0x3478f4,_0x28c9f9);}},'rewriteAttachmentLinks'(_0x5a49ce,_0x370fed={}){const _0x5b14db=typeof _0x370fed['resolveAttachmentUrl']==='function'?_0x370fed['resolveAttachmentUrl']:_0x370fed['taskId']?_0x31121d=>API_BASE+'/tasks/'+_0x370fed['taskId']+'/attachments/'+encodeURIComponent(_0x31121d):null;if(!_0x5b14db)return _0x5a49ce;return String(_0x5a49ce)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x329482,_0x30fe5f)=>{const _0x4b6a24=String(_0x30fe5f||'')['trim']();if(!_0x4b6a24)return _0x329482;let _0x570d7a=_0x4b6a24;try{_0x570d7a=decodeURIComponent(_0x4b6a24);}catch{}const _0x2f27cc=_0x5b14db(_0x570d7a);if(!_0x2f27cc)return _0x329482;return']('+_0x2f27cc+')';});},'rewriteColorSyntax'(_0x1342fd){if(!_0x1342fd)return _0x1342fd;return String(_0x1342fd)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x293b8c,_0x17f8e3,_0x3bfda2)=>{const _0x132e18=this['rewriteColorSyntax'](_0x3bfda2);return'<span\x20style=\x22color:\x20'+_0x17f8e3+'\x22>'+_0x132e18+'</span>';});},'renderMarkdownFallback'(_0x4a34df,_0x23a971={}){if(!_0x4a34df)return'';_0x4a34df=_0x4a34df['replace'](/\r\n/g,'\x0a'),_0x4a34df=_0x4a34df['replace'](/\r/g,'\x0a'),_0x4a34df=this['rewriteAttachmentLinks'](_0x4a34df,_0x23a971);let _0x15e52a=this['escapeHtml'](_0x4a34df);return _0x15e52a=_0x15e52a['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x15e52a=_0x15e52a['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x15e52a=_0x15e52a['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x15e52a=_0x15e52a['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x15e52a=_0x15e52a['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x15e52a=_0x15e52a['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x15e52a=_0x15e52a['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x15e52a=_0x15e52a['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x15e52a=_0x15e52a['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x15e52a=_0x15e52a['replace'](/\n\n/g,'</p><p>'),_0x15e52a=_0x15e52a['replace'](/\n/g,'<br>'),'<p>'+_0x15e52a+'</p>';}};export class CustomSelect{constructor(_0x398069,_0x1adb5a={}){this['nativeSelect']=_0x398069,this['options']=_0x1adb5a,this['isOpen']=![],this['selectedValue']=_0x398069['value']||'',this['searchable']=_0x1adb5a['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x857a21=document['createElement']('div');_0x857a21['className']='custom-select';const _0x42899e=document['createElement']('div');_0x42899e['className']='custom-select-trigger',_0x42899e['setAttribute']('tabindex','0'),_0x42899e['setAttribute']('role','button'),_0x42899e['setAttribute']('aria-haspopup','listbox');const _0x4b3cbd=document['createElement']('span');_0x4b3cbd['className']='custom-select-trigger-text';const _0x429374=document['createElement']('span');_0x429374['className']='custom-select-arrow',_0x429374['textContent']='▼',_0x42899e['appendChild'](_0x4b3cbd),_0x42899e['appendChild'](_0x429374);const _0x38f043=document['createElement']('div');_0x38f043['className']='custom-select-dropdown',_0x38f043['setAttribute']('role','listbox');if(this['searchable']){const _0x528a7f=document['createElement']('div');_0x528a7f['className']='custom-select-search';const _0x1affdc=document['createElement']('input');_0x1affdc['type']='text',_0x1affdc['className']='custom-select-search-input',_0x1affdc['placeholder']='Type\x20to\x20search...',_0x1affdc['setAttribute']('aria-label','Search\x20options'),_0x1affdc['addEventListener']('input',_0x303cbc=>{this['searchQuery']=_0x303cbc['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1affdc['addEventListener']('keydown',_0x40288e=>{if(_0x40288e['key']==='Escape')_0x40288e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x40288e['key']==='Enter'){_0x40288e['preventDefault'](),_0x40288e['stopPropagation']();const _0x4450dc=_0x38f043['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x4450dc){const _0x3db40b=_0x4450dc['getAttribute']('data-value');this['select'](_0x3db40b);}}}}),_0x528a7f['appendChild'](_0x1affdc),_0x38f043['appendChild'](_0x528a7f),this['searchInput']=_0x1affdc;}const _0x2066ba=document['createElement']('div');_0x2066ba['className']='custom-select-options',_0x38f043['appendChild'](_0x2066ba),_0x857a21['appendChild'](_0x42899e),_0x857a21['appendChild'](_0x38f043),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x857a21,this['nativeSelect']),this['wrapper']=_0x857a21,this['trigger']=_0x42899e,this['triggerText']=_0x4b3cbd,this['dropdown']=_0x38f043,this['optionsContainer']=_0x2066ba,_0x42899e['addEventListener']('click',()=>this['toggle']()),_0x42899e['addEventListener']('keydown',_0x100c60=>this['handleKeydown'](_0x100c60)),document['addEventListener']('click',_0x23d77b=>{!_0x857a21['contains'](_0x23d77b['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3f57f8=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3f57f8['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x22eed2=new MutationObserver(()=>{this['updateDisabledState']();});_0x22eed2['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5a9f15=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5a9f15['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x274599=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x274599),this['trigger']['setAttribute']('aria-disabled',_0x274599?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x274599?'-1':'0'),_0x274599&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x54a738=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5e4847=_0x54a738['filter'](_0x52442e=>!_0x52442e['disabled']&&!_0x52442e['hidden']);_0x54a738['forEach']((_0x5a52d,_0xc76d08)=>{const _0xbb7671=document['createElement']('div');_0xbb7671['className']='custom-select-option',_0xbb7671['textContent']=_0x5a52d['textContent'],_0xbb7671['setAttribute']('data-value',_0x5a52d['value']),_0xbb7671['setAttribute']('data-index',_0xc76d08),_0xbb7671['setAttribute']('role','option'),_0x5a52d['disabled']?_0xbb7671['classList']['add']('disabled'):_0xbb7671['addEventListener']('click',()=>this['select'](_0x5a52d['value'])),_0x5a52d['value']===this['selectedValue']&&_0xbb7671['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0xbb7671),this['allOptions']['push']({'element':_0xbb7671,'text':_0x5a52d['textContent']['toLowerCase'](),'value':_0x5a52d['value'],'disabled':_0x5a52d['disabled']});});if(this['searchable']&&this['searchInput']){const _0x54b85a=this['searchInput']['parentElement'];_0x5e4847['length']>0x3?_0x54b85a['style']['display']='':_0x54b85a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3717dd=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x46383e=>{if(!_0x3717dd||_0x46383e['disabled'])_0x46383e['element']['style']['display']='';else{const _0x438fda=_0x46383e['text']['includes'](_0x3717dd);_0x46383e['element']['style']['display']=_0x438fda?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1505b2){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1505b2,this['nativeSelect']['value']=_0x1505b2;const _0xbd8da2=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xbd8da2),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x285390=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x285390&&(this['triggerText']['textContent']=_0x285390['textContent'],_0x285390['disabled']||_0x285390['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2462c9=>{_0x2462c9['getAttribute']('data-value')===this['selectedValue']?_0x2462c9['classList']['add']('selected'):_0x2462c9['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x552744=window['getComputedStyle'](this['dropdown']);if(_0x552744['position']==='fixed'){const _0x1a7063=this['trigger']['getBoundingClientRect'](),_0x3b03c5=parseInt(_0x552744['maxHeight'])||0xc8,_0x38d7d9=window['innerHeight'],_0x5a32b5=_0x38d7d9-_0x1a7063['bottom'],_0x4a2be8=_0x1a7063['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x137d98;_0x5a32b5<_0x3b03c5&&_0x4a2be8>_0x5a32b5?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x38d7d9-_0x1a7063['top']+'px',_0x137d98=Math['min'](_0x3b03c5,_0x4a2be8-0xa),this['dropdown']['style']['maxHeight']=_0x137d98+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1a7063['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x137d98=Math['min'](_0x3b03c5,_0x5a32b5-0xa),this['dropdown']['style']['maxHeight']=_0x137d98+'px');if(this['optionsContainer']){let _0x1a66a8=_0x137d98;if(this['searchInput']){const _0x46cf74=this['searchInput']['parentElement'];_0x46cf74&&(_0x1a66a8-=_0x46cf74['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1a66a8)+'px';}this['dropdown']['style']['left']=_0x1a7063['left']+'px',this['dropdown']['style']['width']=_0x1a7063['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x1dd9f3=this['searchInput']['parentElement'];_0x1dd9f3&&_0x1dd9f3['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x4df3b5){if(this['nativeSelect']['disabled'])return;if(_0x4df3b5['key']==='Enter'||_0x4df3b5['key']==='\x20')_0x4df3b5['preventDefault'](),this['toggle']();else _0x4df3b5['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x37a931='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x37a931),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x52a62b=document['getElementById']('confirm-dialog-close'),_0xa8395c=document['getElementById']('confirm-dialog-cancel'),_0x599dcf=document['getElementById']('confirm-dialog-confirm'),_0x3a7c6d=this['_modal']['querySelector']('.modal-overlay');_0x52a62b['addEventListener']('click',()=>this['_resolve'](![])),_0xa8395c['addEventListener']('click',()=>this['_resolve'](![])),_0x599dcf['addEventListener']('click',()=>this['_resolve'](!![])),_0x3a7c6d['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2eb43f=>{if(_0x2eb43f['key']==='Escape')_0x2eb43f['preventDefault'](),this['_resolve'](![]);else _0x2eb43f['key']==='Enter'&&(_0x2eb43f['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x226a6b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x37c61e=>{this['_resolvePromise']=_0x37c61e,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x226a6b;const _0x52d804=document['getElementById']('confirm-dialog-cancel'),_0x5c86a4=document['getElementById']('confirm-dialog-confirm');_0x52d804['textContent']=cancelText,_0x5c86a4['textContent']=confirmText,_0x5c86a4['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5c86a4['focus']();});},'_resolve'(_0x3cdad0){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3cdad0),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x20050b,_0x5a4700={}){this['container']=_0x20050b,this['options']={'placeholder':_0x5a4700['placeholder']||'Type\x20to\x20search...','maxItems':_0x5a4700['maxItems']||0x64,'loadItems':_0x5a4700['loadItems']||(async()=>[]),'renderItem':_0x5a4700['renderItem']||(_0x544f55=>({'primary':String(_0x544f55),'secondary':''})),'onSelect':_0x5a4700['onSelect']||(()=>{}),'filterItems':_0x5a4700['filterItems']||null,'getItemValue':_0x5a4700['getItemValue']||(_0x6f99d4=>_0x6f99d4),'sortItems':_0x5a4700['sortItems']||null,'debounceMs':_0x5a4700['debounceMs']||0xc8,'minCharsForSearch':_0x5a4700['minCharsForSearch']||0x0,'emptyMessage':_0x5a4700['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5a4700['loadingMessage']||'Loading...','preload':_0x5a4700['preload']!==![],'searchMode':_0x5a4700['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x444705=>this['onBlur'](_0x444705)),this['input']['addEventListener']('input',_0x2b87c4=>this['onInput'](_0x2b87c4)),this['input']['addEventListener']('keydown',_0x5a8e9a=>this['onKeydown'](_0x5a8e9a)),this['clearBtn']['addEventListener']('mousedown',_0x5c7ed0=>{_0x5c7ed0['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x27d002=>{_0x27d002['preventDefault']();}),document['addEventListener']('click',_0x37d325=>{!this['wrapper']['contains'](_0x37d325['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x4525c6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x4525c6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x3e61e9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x391840){const _0x3a9b6d=_0x391840['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3a9b6d);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3a9b6d):this['loadAndShow'](_0x3a9b6d);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x514514){switch(_0x514514['key']){case'ArrowDown':_0x514514['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x514514['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x514514['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x514514['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4cec3d){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x51eda9=this['selectedIndex']+_0x4cec3d;if(_0x51eda9>=0x0&&_0x51eda9<this['filteredItems']['length']){this['selectedIndex']=_0x51eda9,this['updateSelectionHighlight']();const _0x47d902=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x47d902[this['selectedIndex']]&&_0x47d902[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x13874b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x13874b['forEach']((_0x352804,_0x338b0e)=>{_0x352804['classList']['toggle']('keyboard-selected',_0x338b0e===this['selectedIndex']);});}async['loadAndShow'](_0x3f92f1){this['showLoading']();try{const _0x2f0908=await this['options']['loadItems'](_0x3f92f1);if(this['options']['searchMode']==='server'){let _0x24cd92=_0x2f0908;this['options']['sortItems']&&(_0x24cd92=this['options']['sortItems']([..._0x2f0908]));this['filteredItems']=_0x24cd92;const _0xd3479b=this['filteredItems']['length']>=this['options']['maxItems'];_0xd3479b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xd3479b),this['open']();}else this['allItems']=_0x2f0908,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x3f92f1);}catch(_0x35af65){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x35af65),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1a9eca){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1a9eca):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2be0c2=this['filteredItems']['length']>=this['options']['maxItems'];_0x2be0c2&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2be0c2),this['open']();}['renderItems'](_0x17a09f){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x4d6110,_0x278e69)=>{const _0x276d81=document['createElement']('div');_0x276d81['className']='autocomplete-select-item',_0x276d81['setAttribute']('role','option'),_0x276d81['setAttribute']('data-index',_0x278e69);const _0x33afdc=this['options']['renderItem'](_0x4d6110);let _0x1657d0='';_0x33afdc['icon']&&(_0x1657d0='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x33afdc['iconClass']||'')+'\x22>'+_0x33afdc['icon']+'</span>'),_0x276d81['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1657d0+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x33afdc['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x33afdc['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x33afdc['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x276d81['addEventListener']('click',()=>{this['selectItem'](_0x4d6110);}),_0x276d81['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x278e69,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x276d81);}),_0x17a09f?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x160336){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x160336)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5ecc2d){this['selectedItem']=_0x5ecc2d;const _0x10e239=this['options']['renderItem'](_0x5ecc2d);this['input']['value']=_0x10e239['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5ecc2d);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x28530d){if(_0x28530d){this['selectedItem']=_0x28530d;const _0x5bb953=this['options']['renderItem'](_0x28530d);this['input']['value']=_0x5bb953['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4ba81b){this['allItems']=_0x4ba81b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x1d583c){this['input']['placeholder']=_0x1d583c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1cbfdb=null){const _0x585b24=document['getElementById']('admin-menu-container'),_0x231fe1=document['getElementById']('admin-menu-btn'),_0x267588=document['getElementById']('admin-menu');if(!_0x585b24||!_0x231fe1||!_0x267588)return;try{!_0x1cbfdb&&(_0x1cbfdb=await API['getCurrentUser']());if(_0x1cbfdb){const _0x253235=_0x1cbfdb['hasAllPermissions']||_0x1cbfdb['hasEnvironmentsManage']||_0x1cbfdb['canCreateUsers']||_0x1cbfdb['canManageTeams']||_0x1cbfdb['hasEnvironmentBindings'];if(!_0x253235)return;_0x585b24['hidden']=![];if(!_0x1cbfdb['hasAllPermissions']){const _0x307677=_0x267588['querySelectorAll']('.admin-menu-item');_0x307677['forEach'](_0x3dbe30=>{const _0x366a64=_0x3dbe30['querySelector']('.option-text')?.['textContent']?.['trim']();_0x366a64==='Users'&&!_0x1cbfdb['canCreateUsers']&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Skills'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Server\x20Settings'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Server\x20Health'&&(_0x3dbe30['hidden']=!![]),_0x366a64==='Git\x20History'&&(_0x3dbe30['hidden']=!![]);});}_0x231fe1['addEventListener']('click',_0x163ed7=>{_0x163ed7['stopPropagation']();const _0x3c6593=document['getElementById']('actions-menu');if(_0x3c6593)_0x3c6593['hidden']=!![];_0x267588['hidden']=!_0x267588['hidden'];}),document['addEventListener']('click',_0x276d28=>{!_0x267588['hidden']&&!_0x231fe1['contains'](_0x276d28['target'])&&!_0x267588['contains'](_0x276d28['target'])&&(_0x267588['hidden']=!![]);}),document['addEventListener']('keydown',_0x2e2b50=>{_0x2e2b50['key']==='Escape'&&!_0x267588['hidden']&&(_0x267588['hidden']=!![]);});const _0x2a741f=document['getElementById']('server-health-btn');_0x2a741f&&_0x2a741f['addEventListener']('click',async()=>{_0x267588['hidden']=!![];const {openServerHealthModal:_0x4a7e08}=await import('./server-health.js');_0x4a7e08();});}}catch(_0x58cae9){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x58cae9['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|