@profoundlogic/coderflow-server 0.6.5 → 0.6.6
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/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.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/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 _0x9ee399=window['location']['pathname'],_0x40110a=_0x9ee399['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40110a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40110a[0x1]),_0x40110a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51c990={}){const _0x37a15f=new URLSearchParams();_0x51c990['userId']&&_0x37a15f['set']('userId',String(_0x51c990['userId']));_0x51c990['automation']&&_0x37a15f['set']('automation',String(_0x51c990['automation']));const _0x1f85f2=API_BASE+'/tasks/stats'+(_0x37a15f['toString']()?'?'+_0x37a15f['toString']():''),_0x44cd72=await fetch(_0x1f85f2);if(!_0x44cd72['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44cd72['statusText']);return await _0x44cd72['json']();},async 'getTasks'(_0x3a6bd4={}){const _0x563553=new URLSearchParams();_0x3a6bd4['status']&&_0x563553['set']('status',String(_0x3a6bd4['status']));_0x3a6bd4['environment']&&_0x563553['set']('environment',String(_0x3a6bd4['environment']));_0x3a6bd4['automation']&&_0x563553['set']('automation',String(_0x3a6bd4['automation']));if(_0x3a6bd4['include']){const _0x298a87=Array['isArray'](_0x3a6bd4['include'])?_0x3a6bd4['include']['join'](','):String(_0x3a6bd4['include']);_0x298a87&&_0x563553['set']('include',_0x298a87);}_0x3a6bd4['filter']&&_0x563553['set']('filter',String(_0x3a6bd4['filter']));_0x3a6bd4['page']&&_0x563553['set']('page',String(_0x3a6bd4['page']));_0x3a6bd4['limit']&&_0x563553['set']('limit',String(_0x3a6bd4['limit']));_0x3a6bd4['userId']&&_0x563553['set']('userId',String(_0x3a6bd4['userId']));_0x3a6bd4['search']&&_0x563553['set']('search',String(_0x3a6bd4['search']));_0x3a6bd4['includeChildTasks']&&_0x563553['set']('includeChildTasks','true');const _0x33f762=API_BASE+'/tasks'+(_0x563553['toString']()?'?'+_0x563553['toString']():''),_0xd943c=await fetch(_0x33f762);if(!_0xd943c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xd943c['statusText']);return await _0xd943c['json']();},async 'getAutomations'(_0x5c93a2={}){const _0x2c0562=new URLSearchParams();_0x5c93a2['environment']&&_0x2c0562['set']('environment',String(_0x5c93a2['environment']));const _0x499814=await fetch(API_BASE+'/api/automations'+(_0x2c0562['toString']()?'?'+_0x2c0562['toString']():''));if(!_0x499814['ok']){const _0x2dd68f=await _0x499814['json']()['catch'](()=>({}));throw new Error(_0x2dd68f['message']||_0x2dd68f['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x499814['statusText']);}return await _0x499814['json']();},async 'getAutomation'(_0x500ca9){const _0x479db9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500ca9));if(!_0x479db9['ok']){const _0x4dd4fc=await _0x479db9['json']()['catch'](()=>({}));throw new Error(_0x4dd4fc['message']||_0x4dd4fc['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x479db9['statusText']);}return await _0x479db9['json']();},async 'createAutomation'(_0x7ed4b3){const _0x58c06f=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ed4b3||{})});if(!_0x58c06f['ok']){const _0x2ef0d2=await _0x58c06f['json']()['catch'](()=>({}));throw new Error(_0x2ef0d2['message']||_0x2ef0d2['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x58c06f['statusText']);}return await _0x58c06f['json']();},async 'updateAutomation'(_0x2c872d,_0x1f8d63){const _0x3d2843=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c872d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f8d63||{})});if(!_0x3d2843['ok']){const _0x4b3497=await _0x3d2843['json']()['catch'](()=>({}));throw new Error(_0x4b3497['message']||_0x4b3497['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x3d2843['statusText']);}return await _0x3d2843['json']();},async 'deleteAutomation'(_0xb8717a){const _0x29c14d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xb8717a),{'method':'DELETE'});if(!_0x29c14d['ok']){const _0xb189ab=await _0x29c14d['json']()['catch'](()=>({}));throw new Error(_0xb189ab['message']||_0xb189ab['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x29c14d['statusText']);}return await _0x29c14d['json']();},async 'triggerAutomation'(_0x35c4c1){const _0x3f7a19=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x35c4c1)+'/trigger',{'method':'POST'});if(!_0x3f7a19['ok']){const _0xee2d8a=await _0x3f7a19['json']()['catch'](()=>({}));throw new Error(_0xee2d8a['message']||_0xee2d8a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3f7a19['statusText']);}return await _0x3f7a19['json']();},async 'setAutomationEnabled'(_0x264489,_0x5555b6){const _0x505b81=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x264489)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5555b6})});if(!_0x505b81['ok']){const _0x4e879c=await _0x505b81['json']()['catch'](()=>({}));throw new Error(_0x4e879c['message']||_0x4e879c['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x505b81['statusText']);}return await _0x505b81['json']();},async 'getAutomationHistory'(_0x15a3a4,_0x57089f=0x32){const _0x46e0e3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x15a3a4)+'/history?limit='+encodeURIComponent(String(_0x57089f)));if(!_0x46e0e3['ok']){const _0x4fe0b6=await _0x46e0e3['json']()['catch'](()=>({}));throw new Error(_0x4fe0b6['message']||_0x4fe0b6['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x46e0e3['statusText']);}return await _0x46e0e3['json']();},async 'getTask'(_0x3851a0,_0x4172c8={}){const _0x202be2=new URLSearchParams();if(_0x4172c8['include']){const _0x452976=Array['isArray'](_0x4172c8['include'])?_0x4172c8['include']['join'](','):String(_0x4172c8['include']);if(_0x452976)_0x202be2['set']('include',_0x452976);}const _0x32432e=await fetch(API_BASE+'/tasks/'+_0x3851a0+(_0x202be2['toString']()?'?'+_0x202be2['toString']():''));if(!_0x32432e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x32432e['statusText']);return await _0x32432e['json']();},async 'getTaskResults'(_0xc5718a){const _0x2e52fa=await fetch(API_BASE+'/tasks/'+_0xc5718a+'/results');if(!_0x2e52fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2e52fa['statusText']);return await _0x2e52fa['json']();},async 'getTaskPatches'(_0x131b31){const _0x2a02b1=await fetch(API_BASE+'/tasks/'+_0x131b31+'/patches');if(!_0x2a02b1['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2a02b1['statusText']);return await _0x2a02b1['json']();},async 'getTaskAttachments'(_0x220b16){const _0x18142e=await fetch(API_BASE+'/tasks/'+_0x220b16+'/attachments');if(!_0x18142e['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x18142e['statusText']);return await _0x18142e['json']();},async 'uploadAttachments'(_0x5b745a,_0x36e351){const _0xb615df=new FormData();for(const _0x550644 of _0x36e351){_0xb615df['append']('attachments',_0x550644);}const _0x4fda71=await fetch(API_BASE+'/tasks/'+_0x5b745a+'/attachments',{'method':'POST','body':_0xb615df});if(!_0x4fda71['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4fda71['statusText']);return await _0x4fda71['json']();},async 'isAINameGenerationAvailable'(){try{const _0x8a6f8f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x8a6f8f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x8a6f8f['json']();}catch(_0x54456d){return{'available':![],'reason':_0x54456d['message']};}},async 'generateTaskName'(_0x59315c){try{const _0x52eaa6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x59315c})});return await _0x52eaa6['json']();}catch(_0x52bf02){return{'success':![],'error':_0x52bf02['message']};}},async 'createTask'(_0x1f469f){let _0x279839,_0x408158={};if(_0x1f469f['files']&&_0x1f469f['files']['length']>0x0){const _0x47eec0=new FormData();for(const [_0x417cc0,_0x5cb19c]of Object['entries'](_0x1f469f)){if(_0x417cc0!=='files'){if(_0x5cb19c==null)continue;typeof _0x5cb19c==='object'?_0x47eec0['append'](_0x417cc0,JSON['stringify'](_0x5cb19c)):_0x47eec0['append'](_0x417cc0,String(_0x5cb19c));}}for(const _0x20c23f of _0x1f469f['files']){_0x47eec0['append']('attachments',_0x20c23f);}_0x279839=_0x47eec0;}else _0x408158['Content-Type']='application/json',_0x279839=JSON['stringify'](_0x1f469f);const _0x24b7b0=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x408158,'body':_0x279839});if(!_0x24b7b0['ok']){const _0x492d41=await _0x24b7b0['json'](),_0x2d0add=new Error(_0x492d41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24b7b0['statusText']),{message:_0x1bc852,..._0x23320a}=_0x492d41;Object['assign'](_0x2d0add,_0x23320a);throw _0x2d0add;}return await _0x24b7b0['json']();},async 'createTestTask'(_0xa3874){const _0x3e665a=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa3874)});if(!_0x3e665a['ok']){const _0x337da6=await _0x3e665a['json']();throw new Error(_0x337da6['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e665a['statusText']);}return await _0x3e665a['json']();},async 'createEphemeralTest'(_0x70d276){const _0x5a01ca=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70d276)});if(!_0x5a01ca['ok']){const _0x79474d=await _0x5a01ca['json']();throw new Error(_0x79474d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5a01ca['statusText']);}return await _0x5a01ca['json']();},async 'createDeployTask'(_0x4cdeb9){const _0xbb1f7f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdeb9)});if(!_0xbb1f7f['ok']){const _0x2be275=await _0xbb1f7f['json']();throw new Error(_0x2be275['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xbb1f7f['statusText']);}return await _0xbb1f7f['json']();},async 'getEnvironments'(){const _0x4c8a8d=await fetch(API_BASE+'/environments');if(!_0x4c8a8d['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c8a8d['statusText']);return await _0x4c8a8d['json']();},async 'getEnvironment'(_0x3207f1){const _0x26575c=await fetch(API_BASE+'/environments/'+_0x3207f1);if(!_0x26575c['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x26575c['statusText']);return await _0x26575c['json']();},async 'getEnvironmentRepoHistory'(_0x41f29a,_0x478be3,_0x3802d6={}){if(!_0x41f29a||!_0x478be3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xe42f8a=new URLSearchParams();if(_0x3802d6['limit'])_0xe42f8a['set']('limit',String(_0x3802d6['limit']));if(_0x3802d6['offset'])_0xe42f8a['set']('offset',String(_0x3802d6['offset']));if(_0x3802d6['search'])_0xe42f8a['set']('search',String(_0x3802d6['search']));if(_0x3802d6['branch'])_0xe42f8a['set']('branch',String(_0x3802d6['branch']));const _0x5a1b28=API_BASE+'/environments/'+encodeURIComponent(_0x41f29a)+'/repos/'+encodeURIComponent(_0x478be3)+'/git/history',_0x51b3e8=await fetch(''+_0x5a1b28+(_0xe42f8a['toString']()?'?'+_0xe42f8a['toString']():''));if(!_0x51b3e8['ok']){const _0x5849cb=await _0x51b3e8['json']()['catch'](()=>({}));throw new Error(_0x5849cb['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x51b3e8['statusText']);}return await _0x51b3e8['json']();},async 'getEnvironmentRepoCommit'(_0x5b0af8,_0x1135f0,_0x494ca6){if(!_0x5b0af8||!_0x1135f0||!_0x494ca6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x43d901=API_BASE+'/environments/'+encodeURIComponent(_0x5b0af8)+'/repos/'+encodeURIComponent(_0x1135f0)+'/git/commits/'+encodeURIComponent(_0x494ca6),_0x3cfcba=await fetch(_0x43d901);if(!_0x3cfcba['ok']){const _0x256ad4=await _0x3cfcba['json']()['catch'](()=>({}));throw new Error(_0x256ad4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3cfcba['statusText']);}return await _0x3cfcba['json']();},async 'getEnvironmentRepoBranches'(_0x1ecc26,_0x2c0604){if(!_0x1ecc26||!_0x2c0604)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4ce181=API_BASE+'/environments/'+encodeURIComponent(_0x1ecc26)+'/repos/'+encodeURIComponent(_0x2c0604)+'/git/branches',_0x92dd3d=await fetch(_0x4ce181);if(!_0x92dd3d['ok']){const _0x39575e=await _0x92dd3d['json']()['catch'](()=>({}));throw new Error(_0x39575e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x92dd3d['statusText']);}return await _0x92dd3d['json']();},async 'revertEnvironmentRepoCommit'(_0x1c36b8,_0x3fa9df,_0x58f621,_0x4724e5={}){if(!_0x1c36b8||!_0x3fa9df||!_0x58f621)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x59a3fd=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c36b8)+'/repos/'+encodeURIComponent(_0x3fa9df)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x58f621,..._0x4724e5})});if(!_0x59a3fd['ok']){const _0x50bee3=await _0x59a3fd['json']()['catch'](()=>({}));throw new Error(_0x50bee3['message']||_0x50bee3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x59a3fd['statusText']);}return await _0x59a3fd['json']();},async 'getTemplates'(_0x5cfe3b={}){const _0x2317bb=new URLSearchParams();if(_0x5cfe3b['include']){const _0x2b7de5=Array['isArray'](_0x5cfe3b['include'])?_0x5cfe3b['include']['join'](','):String(_0x5cfe3b['include']);if(_0x2b7de5)_0x2317bb['set']('include',_0x2b7de5);}const _0x42b998=await fetch(API_BASE+'/templates'+(_0x2317bb['toString']()?'?'+_0x2317bb['toString']():''));if(!_0x42b998['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x42b998['statusText']);return await _0x42b998['json']();},async 'getTemplatesForEnvironment'(_0x467209,_0xa93801={}){if(!_0x467209)throw new Error('Environment\x20name\x20is\x20required');const _0x3b09c6=new URLSearchParams();if(_0xa93801['include']){const _0x2ec33=Array['isArray'](_0xa93801['include'])?_0xa93801['include']['join'](','):String(_0xa93801['include']);if(_0x2ec33)_0x3b09c6['set']('include',_0x2ec33);}const _0x40dd2b=await fetch(API_BASE+'/templates/'+_0x467209+(_0x3b09c6['toString']()?'?'+_0x3b09c6['toString']():''));if(!_0x40dd2b['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x467209+':\x20'+_0x40dd2b['statusText']);return await _0x40dd2b['json']();},async 'getTemplate'(_0x291a3d,_0x48b4e9,_0x19de47={}){if(!_0x291a3d||!_0x48b4e9)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x893e75=new URLSearchParams();if(_0x19de47['include']){const _0x31aa8b=Array['isArray'](_0x19de47['include'])?_0x19de47['include']['join'](','):String(_0x19de47['include']);if(_0x31aa8b)_0x893e75['set']('include',_0x31aa8b);}const _0x297e8c=await fetch(API_BASE+'/templates/'+_0x291a3d+'/'+_0x48b4e9+(_0x893e75['toString']()?'?'+_0x893e75['toString']():''));if(!_0x297e8c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x297e8c['statusText']);return await _0x297e8c['json']();},async 'getTaskLogs'(_0x20d06f,_0x5df640={}){if(!_0x20d06f)throw new Error('Task\x20ID\x20is\x20required');const _0x133a5c=new URLSearchParams();_0x5df640['tail']&&_0x133a5c['set']('tail',String(_0x5df640['tail']));const _0x37f145=await fetch(API_BASE+'/tasks/'+_0x20d06f+'/logs'+(_0x133a5c['toString']()?'?'+_0x133a5c['toString']():''));if(!_0x37f145['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x37f145['statusText']);return await _0x37f145['text']();},async 'getContainers'(){const _0x62b960=await fetch(API_BASE+'/containers');if(!_0x62b960['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x62b960['statusText']);return await _0x62b960['json']();},async 'getContainer'(_0x53dc55){const _0x294c4f=await fetch(API_BASE+'/containers/'+_0x53dc55);if(!_0x294c4f['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x294c4f['statusText']);return await _0x294c4f['json']();},async 'startInteractiveContainer'(_0x5877ca){const _0x4bd9d0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5877ca)});if(!_0x4bd9d0['ok']){const _0x43b338=await _0x4bd9d0['json']()['catch'](()=>({}));throw new Error(_0x43b338['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bd9d0['statusText']);}return await _0x4bd9d0['json']();},async 'stopContainer'(_0x1c30d5){const _0x432915=await fetch(API_BASE+'/containers/'+_0x1c30d5,{'method':'DELETE'});if(!_0x432915['ok']){const _0x55d2c4=await _0x432915['json']()['catch'](()=>({}));throw new Error(_0x55d2c4['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x432915['statusText']);}return await _0x432915['json']();},async 'stopTask'(_0x1c478a){if(!_0x1c478a)throw new Error('Task\x20ID\x20is\x20required');const _0x132fcd=await fetch(API_BASE+'/tasks/'+_0x1c478a+'/stop',{'method':'POST'});if(!_0x132fcd['ok']){const _0x4cda71=await _0x132fcd['json']()['catch'](()=>({}));throw new Error(_0x4cda71['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x132fcd['statusText']);}return await _0x132fcd['json']();},async 'interruptTask'(_0x4049c5){if(!_0x4049c5)throw new Error('Task\x20ID\x20is\x20required');const _0x2fe379=await fetch(API_BASE+'/tasks/'+_0x4049c5+'/interrupt',{'method':'POST'});if(!_0x2fe379['ok']){const _0x2ac02a=await _0x2fe379['json']()['catch'](()=>({}));throw new Error(_0x2ac02a['error']||_0x2ac02a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2fe379['statusText']);}return await _0x2fe379['json']();},async 'startTask'(_0x3630ca){if(!_0x3630ca)throw new Error('Task\x20ID\x20is\x20required');const _0x5330c2=await fetch(API_BASE+'/tasks/'+_0x3630ca+'/start',{'method':'POST'});if(!_0x5330c2['ok']){const _0x2a0a36=await _0x5330c2['json']()['catch'](()=>({}));throw new Error(_0x2a0a36['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5330c2['statusText']);}return await _0x5330c2['json']();},async 'deleteTask'(_0x29db9f){if(!_0x29db9f)throw new Error('Task\x20ID\x20is\x20required');const _0x5eeb74=await fetch(API_BASE+'/tasks/'+_0x29db9f,{'method':'DELETE'});if(!_0x5eeb74['ok']){const _0x57dbe0=await _0x5eeb74['json']()['catch'](()=>({}));throw new Error(_0x57dbe0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5eeb74['statusText']);}return await _0x5eeb74['json']();},async 'refreshTasksFromDisk'(){const _0x2b044f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b044f['ok']){const _0x1177b1=await _0x2b044f['json']()['catch'](()=>({}));throw new Error(_0x1177b1['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b044f['statusText']);}return await _0x2b044f['json']();},async 'approveTask'(_0x5a2972,_0x4b010c={}){if(!_0x5a2972)throw new Error('Task\x20ID\x20is\x20required');const _0x5ce48f={'commit_message':_0x4b010c['commit_message']||'','pull':_0x4b010c['pull']??![],'push':_0x4b010c['push']??![]};_0x4b010c['new_branch']&&(_0x5ce48f['new_branch']=_0x4b010c['new_branch']);const _0x2c9f85=await fetch(API_BASE+'/tasks/'+_0x5a2972+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ce48f)});if(!_0x2c9f85['ok']){const _0x3e8e18=await _0x2c9f85['json']()['catch'](()=>({}));let _0x252299=_0x3e8e18['error']||_0x3e8e18['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2c9f85['statusText'];if(_0x3e8e18['results']&&Array['isArray'](_0x3e8e18['results'])){const _0xc4ccbc=_0x3e8e18['results']['filter'](_0x71cbd=>!_0x71cbd['success']&&_0x71cbd['error']);_0xc4ccbc['length']>0x0&&(_0x252299=_0xc4ccbc[0x0]['error']);}throw new Error(_0x252299);}return await _0x2c9f85['json']();},async 'getPullRequestInfo'(_0x277619){if(!_0x277619)throw new Error('Task\x20ID\x20is\x20required');const _0xadbbce=await fetch(API_BASE+'/tasks/'+_0x277619+'/pull-request-info');if(!_0xadbbce['ok']){const _0x57b18a=await _0xadbbce['json']()['catch'](()=>({}));throw new Error(_0x57b18a['error']||_0x57b18a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0xadbbce['statusText']);}return await _0xadbbce['json']();},async 'createPullRequests'(_0x19a6e4,_0x89dcf2){if(!_0x19a6e4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x89dcf2||!Array['isArray'](_0x89dcf2))throw new Error('repos\x20array\x20is\x20required');const _0x3aac2f=await fetch(API_BASE+'/tasks/'+_0x19a6e4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x89dcf2})});if(!_0x3aac2f['ok']){const _0x24570c=await _0x3aac2f['json']()['catch'](()=>({}));let _0x116778=_0x24570c['error']||_0x24570c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3aac2f['statusText'];if(_0x24570c['results']&&Array['isArray'](_0x24570c['results'])){const _0x4a7c81=_0x24570c['results']['filter'](_0x5b8b0a=>!_0x5b8b0a['success']&&_0x5b8b0a['error']);_0x4a7c81['length']>0x0&&(_0x116778=_0x4a7c81[0x0]['error']);}throw new Error(_0x116778);}return await _0x3aac2f['json']();},async 'syncRepos'(_0x3ee457){if(!_0x3ee457)throw new Error('Task\x20ID\x20is\x20required');const _0x545bd0=await fetch(API_BASE+'/tasks/'+_0x3ee457+'/sync-repos',{'method':'POST'});if(!_0x545bd0['ok']){const _0x4f18a5=await _0x545bd0['json']()['catch'](()=>({}));throw new Error(_0x4f18a5['error']||_0x4f18a5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x545bd0['statusText']);}return await _0x545bd0['json']();},async 'getIbmiSyncInfo'(_0x29230d){if(!_0x29230d)throw new Error('Task\x20ID\x20is\x20required');const _0x25ddaa=await fetch(API_BASE+'/tasks/'+_0x29230d+'/ibmi-sync-info');if(!_0x25ddaa['ok']){const _0x54d809=await _0x25ddaa['json']()['catch'](()=>({}));throw new Error(_0x54d809['error']||_0x54d809['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25ddaa['json']();},async 'getSyncFiles'(_0x42ceba){if(!_0x42ceba)throw new Error('Task\x20ID\x20is\x20required');const _0x53f31c=await fetch(API_BASE+'/tasks/'+_0x42ceba+'/sync-to-ibmi/files');if(!_0x53f31c['ok']){const _0x1700ee=await _0x53f31c['json']()['catch'](()=>({}));throw new Error(_0x1700ee['error']||_0x1700ee['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53f31c['json']();},async 'syncToIbmi'(_0x15696b,_0x14f45f,_0xc64806=null,_0x540d19=null,_0x5148d1=null){if(!_0x15696b)throw new Error('Task\x20ID\x20is\x20required');const _0xd177a1={'library':_0x14f45f};if(_0xc64806)_0xd177a1['user']=_0xc64806;if(_0x540d19)_0xd177a1['password']=_0x540d19;if(_0x5148d1)_0xd177a1['files']=_0x5148d1;const _0x11c39a=await fetch(API_BASE+'/tasks/'+_0x15696b+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd177a1)});if(!_0x11c39a['ok']){const _0x58146d=await _0x11c39a['json']()['catch'](()=>({}));throw new Error(_0x58146d['error']||_0x58146d['message']||'Sync\x20failed');}return await _0x11c39a['json']();},async 'getIbmiSyncLog'(_0x373c41){if(!_0x373c41)throw new Error('Task\x20ID\x20is\x20required');const _0x1feaae=await fetch(API_BASE+'/tasks/'+_0x373c41+'/ibmi-sync-log');if(!_0x1feaae['ok']){const _0x5f2f82=await _0x1feaae['json']()['catch'](()=>({}));throw new Error(_0x5f2f82['error']||_0x5f2f82['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1feaae['json']();},async 'pullChanges'(_0x42fdfe){if(!_0x42fdfe)throw new Error('Task\x20ID\x20is\x20required');const _0x10f84d=await fetch(API_BASE+'/tasks/'+_0x42fdfe+'/pull-changes',{'method':'POST'});if(!_0x10f84d['ok']){const _0x93e54f=await _0x10f84d['json']()['catch'](()=>({}));throw new Error(_0x93e54f['error']||_0x93e54f['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10f84d['statusText']);}return await _0x10f84d['json']();},async 'readFile'(_0x557e73,_0x27a025){if(!_0x557e73)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27a025)throw new Error('File\x20path\x20is\x20required');const _0x3584b7=await fetch(API_BASE+'/tasks/'+_0x557e73+'/files?path='+encodeURIComponent(_0x27a025));if(!_0x3584b7['ok']){const _0x417ce8=await _0x3584b7['json']()['catch'](()=>({}));throw new Error(_0x417ce8['error']||_0x417ce8['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3584b7['statusText']);}return await _0x3584b7['json']();},'getTaskFileDownloadUrl'(_0x33d136,_0x3db23b){if(!_0x33d136)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3db23b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x33d136+'/files/download?path='+encodeURIComponent(_0x3db23b);},async 'writeFile'(_0x34dbed,_0x446d45,_0x370010){if(!_0x34dbed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446d45)throw new Error('File\x20path\x20is\x20required');if(_0x370010===undefined)throw new Error('Content\x20is\x20required');const _0x1157f6=await fetch(API_BASE+'/tasks/'+_0x34dbed+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x446d45,'content':_0x370010})});if(!_0x1157f6['ok']){const _0x533b0d=await _0x1157f6['json']()['catch'](()=>({}));throw new Error(_0x533b0d['error']||_0x533b0d['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1157f6['statusText']);}return await _0x1157f6['json']();},async 'uploadTaskFiles'(_0x1083d6,_0x282a87,_0xae816c){if(!_0x1083d6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282a87)throw new Error('Target\x20directory\x20is\x20required');if(!_0xae816c||_0xae816c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32170a=new FormData();_0x32170a['append']('targetDir',_0x282a87);for(const _0x206e66 of _0xae816c){_0x32170a['append']('files',_0x206e66,_0x206e66['name']);}const _0x44c2ed=await fetch(API_BASE+'/tasks/'+_0x1083d6+'/files/upload',{'method':'POST','body':_0x32170a});if(!_0x44c2ed['ok']){const _0x45ae20=await _0x44c2ed['json']()['catch'](()=>({}));throw new Error(_0x45ae20['error']||_0x45ae20['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x44c2ed['statusText']);}return await _0x44c2ed['json']();},async 'deleteFile'(_0x102647,_0x97e0e4){if(!_0x102647)throw new Error('Task\x20ID\x20is\x20required');if(!_0x97e0e4)throw new Error('File\x20path\x20is\x20required');const _0x4b54d2=await fetch(API_BASE+'/tasks/'+_0x102647+'/files?path='+encodeURIComponent(_0x97e0e4),{'method':'DELETE'});if(!_0x4b54d2['ok']){const _0x545473=await _0x4b54d2['json']()['catch'](()=>({}));throw new Error(_0x545473['error']||_0x545473['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4b54d2['statusText']);}return await _0x4b54d2['json']();},async 'discardFile'(_0x86b622,_0x227a68,_0x4edd8a){if(!_0x86b622)throw new Error('Task\x20ID\x20is\x20required');if(!_0x227a68)throw new Error('File\x20path\x20is\x20required');if(!_0x4edd8a)throw new Error('Repository\x20path\x20is\x20required');const _0x13a428=await fetch(API_BASE+'/tasks/'+_0x86b622+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x227a68,'repoPath':_0x4edd8a})});if(!_0x13a428['ok']){const _0x57afb7=await _0x13a428['json']()['catch'](()=>({}));throw new Error(_0x57afb7['error']||_0x57afb7['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x13a428['statusText']);}return await _0x13a428['json']();},async 'followUpTask'(_0x2e865a,_0x17fb32={}){if(!_0x2e865a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17fb32['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x183b66,_0x45c12d={};if(_0x17fb32['files']&&_0x17fb32['files']['length']>0x0){const _0x558d38=new FormData();_0x558d38['append']('instructions',_0x17fb32['instructions']);for(const _0x5540b3 of _0x17fb32['files']){_0x558d38['append']('attachments',_0x5540b3);}_0x183b66=_0x558d38;}else _0x45c12d['Content-Type']='application/json',_0x183b66=JSON['stringify']({'instructions':_0x17fb32['instructions']});const _0x337185=await fetch(API_BASE+'/tasks/'+_0x2e865a+'/follow-up',{'method':'POST','headers':_0x45c12d,'body':_0x183b66});if(!_0x337185['ok']){const _0x1a18a4=await _0x337185['json']()['catch'](()=>({}));throw new Error(_0x1a18a4['error']||_0x1a18a4['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x337185['statusText']);}return await _0x337185['json']();},async 'getTaskRewindPoints'(_0x4c6d77){if(!_0x4c6d77)throw new Error('Task\x20ID\x20is\x20required');const _0x392167=await fetch(API_BASE+'/tasks/'+_0x4c6d77+'/rewind-points');if(!_0x392167['ok']){const _0x48f898=await _0x392167['json']()['catch'](()=>({}));throw new Error(_0x48f898['error']||_0x48f898['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x392167['statusText']);}return await _0x392167['json']();},async 'rewindTask'(_0x100ff2,_0x1b3009={}){if(!_0x100ff2)throw new Error('Task\x20ID\x20is\x20required');const _0x4f18e=Number['isInteger'](_0x1b3009['targetFollowUpCount'])?_0x1b3009['targetFollowUpCount']:0x0,_0x3ab6f4={'targetFollowUpCount':_0x4f18e};typeof _0x1b3009['instructions']==='string'&&_0x1b3009['instructions']['trim']()&&(_0x3ab6f4['instructions']=_0x1b3009['instructions']['trim']());typeof _0x1b3009['rewindFiles']==='boolean'&&(_0x3ab6f4['rewindFiles']=_0x1b3009['rewindFiles']);const _0x3802e2=await fetch(API_BASE+'/tasks/'+_0x100ff2+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ab6f4)});if(!_0x3802e2['ok']){const _0x1ab782=await _0x3802e2['json']()['catch'](()=>({}));throw new Error(_0x1ab782['error']||_0x1ab782['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3802e2['statusText']);}return await _0x3802e2['json']();},async 'login'(_0x47ed9,_0x2b4c14){const _0x294dfd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47ed9,'password':_0x2b4c14})});if(!_0x294dfd['ok']){const _0x256391=await _0x294dfd['json']();throw new Error(_0x256391['message']||'Login\x20failed');}return await _0x294dfd['json']();},async 'logout'(){const _0x130035=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x130035['ok']){const _0x31ec57=await _0x130035['json']();throw new Error(_0x31ec57['message']||'Logout\x20failed');}return await _0x130035['json']();},async 'getCurrentUser'(){const _0x35b1af=await fetch(API_BASE+'/auth/me');if(!_0x35b1af['ok'])throw new Error('Not\x20authenticated');const _0x3ab5bb=await _0x35b1af['json']();return _0x3ab5bb['user'];},async 'getRolesInfo'(){const _0x172630=await fetch(API_BASE+'/users/roles');if(!_0x172630['ok']){const _0x541616=await _0x172630['json']();throw new Error(_0x541616['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x172630['json']();},async 'getUsers'(){const _0x158dc9=await fetch(API_BASE+'/users');if(!_0x158dc9['ok']){const _0x12c9b2=await _0x158dc9['json']();throw new Error(_0x12c9b2['message']||'Failed\x20to\x20get\x20users');}return await _0x158dc9['json']();},async 'getUser'(_0x12e0cc){const _0x23f706=await fetch(API_BASE+'/users/'+_0x12e0cc);if(!_0x23f706['ok']){const _0xa59f04=await _0x23f706['json']();throw new Error(_0xa59f04['message']||'Failed\x20to\x20get\x20user');}return await _0x23f706['json']();},async 'createUser'(_0x31caa2){const _0x5f5ee7=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31caa2)});if(!_0x5f5ee7['ok']){const _0x3653dd=await _0x5f5ee7['json']();throw new Error(_0x3653dd['message']||'Failed\x20to\x20create\x20user');}return await _0x5f5ee7['json']();},async 'updateUser'(_0x2727e4,_0xe449c){const _0x3c1cb8=await fetch(API_BASE+'/users/'+_0x2727e4,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe449c)});if(!_0x3c1cb8['ok']){const _0x4899b2=await _0x3c1cb8['json']();throw new Error(_0x4899b2['message']||'Failed\x20to\x20update\x20user');}return await _0x3c1cb8['json']();},async 'deleteUser'(_0x5716e1){const _0xad6b6e=await fetch(API_BASE+'/users/'+_0x5716e1,{'method':'DELETE'});if(!_0xad6b6e['ok']){const _0x61b13b=await _0xad6b6e['json']();throw new Error(_0x61b13b['message']||'Failed\x20to\x20delete\x20user');}return await _0xad6b6e['json']();},async 'stopAllContainers'(){const _0x46bff8=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4c1b4a=await _0x46bff8['json']()['catch'](()=>({}));if(!_0x46bff8['ok'])throw new Error(_0x4c1b4a['message']||_0x4c1b4a['error']||'Failed\x20to\x20stop\x20containers');return _0x4c1b4a;},async 'removeStoppedContainers'(){const _0x8d2d03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bd9a2=await _0x8d2d03['json']()['catch'](()=>({}));if(!_0x8d2d03['ok'])throw new Error(_0x2bd9a2['message']||_0x2bd9a2['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bd9a2;},async 'pruneDockerResources'(){const _0xf26463=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x3b4fe9=await _0xf26463['json']()['catch'](()=>({}));if(!_0xf26463['ok'])throw new Error(_0x3b4fe9['message']||_0x3b4fe9['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x3b4fe9;},async 'createPasswordToken'(_0x2aac42,_0x51415d='setup',_0x484d3b=![]){const _0x513ed8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2aac42,'type':_0x51415d,'sendEmail':_0x484d3b})});if(!_0x513ed8['ok']){const _0x213773=await _0x513ed8['json']();throw new Error(_0x213773['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x513ed8['json']();},async 'getEmailConfig'(){const _0x28b4e6=await fetch(API_BASE+'/password/email-config');if(!_0x28b4e6['ok']){const _0x5bbe7f=await _0x28b4e6['json']();throw new Error(_0x5bbe7f['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x28b4e6['json']();},async 'updateTaskName'(_0x550632,_0x4803c6){const _0x4a1a08=await fetch(API_BASE+'/tasks/'+_0x550632,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4803c6})});if(!_0x4a1a08['ok']){const _0x512121=await _0x4a1a08['json']();throw new Error(_0x512121['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4a1a08['json']();},async 'pinTask'(_0x5f169a,_0x53b378,_0x3efe25=null){if(!_0x5f169a)throw new Error('Task\x20ID\x20is\x20required');const _0x42eb9b={'pinned':_0x53b378};_0x3efe25&&_0x3efe25['length']>0x0&&(_0x42eb9b['additionalTaskIds']=_0x3efe25);const _0x2ffd03=await fetch(API_BASE+'/tasks/'+_0x5f169a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42eb9b)});if(!_0x2ffd03['ok']){const _0x51aaf4=await _0x2ffd03['json']();throw new Error(_0x51aaf4['error']||'Failed\x20to\x20pin\x20task');}return await _0x2ffd03['json']();},async 'setTaskWinner'(_0x594183,_0x5379f3,_0x7cccc=[]){if(!_0x594183)throw new Error('Task\x20ID\x20is\x20required');const _0x25dbc3=await fetch(API_BASE+'/tasks/'+_0x594183+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5379f3,'siblings':_0x7cccc})});if(!_0x25dbc3['ok']){const _0xa9f07c=await _0x25dbc3['json']();throw new Error(_0xa9f07c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x25dbc3['json']();},async 'setTaskLoser'(_0x24734d,_0x4c6264){if(!_0x24734d)throw new Error('Task\x20ID\x20is\x20required');const _0x418609=await fetch(API_BASE+'/tasks/'+_0x24734d+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c6264})});if(!_0x418609['ok']){const _0x11427f=await _0x418609['json']();throw new Error(_0x11427f['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x418609['json']();},async 'createTaskGroup'(_0x57d825){const _0x526919=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57d825)});if(!_0x526919['ok']){const _0x1d0c58=await _0x526919['json']();throw new Error(_0x1d0c58['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x526919['json']();},async 'getTaskGroups'(_0x1b7d02={}){const _0x1bfc8e=new URLSearchParams();if(_0x1b7d02['userId'])_0x1bfc8e['set']('userId',String(_0x1b7d02['userId']));if(_0x1b7d02['status'])_0x1bfc8e['set']('status',String(_0x1b7d02['status']));if(_0x1b7d02['limit'])_0x1bfc8e['set']('limit',String(_0x1b7d02['limit']));const _0x31a81a=API_BASE+'/tasks/groups'+(_0x1bfc8e['toString']()?'?'+_0x1bfc8e['toString']():''),_0x30fed6=await fetch(_0x31a81a);if(!_0x30fed6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x30fed6['json']();},async 'getTaskGroup'(_0x1a8975){const _0x45b375=await fetch(API_BASE+'/tasks/groups/'+_0x1a8975);if(!_0x45b375['ok']){const _0xe4bac3=await _0x45b375['json']();throw new Error(_0xe4bac3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x45b375['json']();},async 'updateTaskGroup'(_0x3fb606,_0x1883de,_0x20a4e2){const _0x38dd4c=await fetch(API_BASE+'/tasks/'+_0x3fb606+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1883de,'groupIndex':_0x20a4e2})});if(!_0x38dd4c['ok']){const _0x3f3dd4=await _0x38dd4c['json']();throw new Error(_0x3f3dd4['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x38dd4c['json']();},async 'removeTaskFromGroup'(_0x52bd10){return this['updateTaskGroup'](_0x52bd10,null,null);},async 'deleteTaskGroup'(_0x3160d9,_0x5da281=![]){const _0x3de3bf=_0x5da281?'?deleteTasks=true':'',_0x1daacd=await fetch(API_BASE+'/tasks/groups/'+_0x3160d9+_0x3de3bf,{'method':'DELETE'});if(!_0x1daacd['ok']){const _0x3ab070=await _0x1daacd['json']();throw new Error(_0x3ab070['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x44975c,_0x525913){const _0xeaba48=await fetch(API_BASE+'/tasks/groups/'+_0x44975c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x525913})});if(!_0xeaba48['ok']){const _0x444990=await _0xeaba48['json']();throw new Error(_0x444990['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xeaba48['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52ccb0){if(!_0x52ccb0)throw new Error('Task\x20ID\x20is\x20required');const _0x171451=await fetch(API_BASE+'/tasks/'+_0x52ccb0+'/comments');if(!_0x171451['ok']){const _0x2b8655=await _0x171451['json']()['catch'](()=>({}));throw new Error(_0x2b8655['error']||'Failed\x20to\x20get\x20comments');}return await _0x171451['json']();},async 'addComment'(_0x23ed85,_0x1ee9dc){if(!_0x23ed85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ee9dc)throw new Error('Comment\x20content\x20is\x20required');const _0x399448=await fetch(API_BASE+'/tasks/'+_0x23ed85+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1ee9dc})});if(!_0x399448['ok']){const _0x4aaa25=await _0x399448['json']()['catch'](()=>({}));throw new Error(_0x4aaa25['error']||'Failed\x20to\x20add\x20comment');}return await _0x399448['json']();},async 'updateComment'(_0xf95b29,_0x5cc038,_0x20042b){if(!_0xf95b29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5cc038)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x20042b)throw new Error('Comment\x20content\x20is\x20required');const _0x4adade=await fetch(API_BASE+'/tasks/'+_0xf95b29+'/comments/'+_0x5cc038,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x20042b})});if(!_0x4adade['ok']){const _0x18f436=await _0x4adade['json']()['catch'](()=>({}));throw new Error(_0x18f436['error']||'Failed\x20to\x20update\x20comment');}return await _0x4adade['json']();},async 'deleteComment'(_0x46d5bd,_0x37dd4e){if(!_0x46d5bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37dd4e)throw new Error('Comment\x20ID\x20is\x20required');const _0x43918e=await fetch(API_BASE+'/tasks/'+_0x46d5bd+'/comments/'+_0x37dd4e,{'method':'DELETE'});if(!_0x43918e['ok']){const _0x5c7a48=await _0x43918e['json']()['catch'](()=>({}));throw new Error(_0x5c7a48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x43918e['json']();},async 'createObjective'(_0x1d5377){const _0x2567e8={'objective':!![],'name':_0x1d5377['name']||'','environment':_0x1d5377['environment']||null,'agents':_0x1d5377['agents']||[],'branches':_0x1d5377['branches']||{},'isPinned':_0x1d5377['isPinned']||![],'parentObjectiveId':_0x1d5377['parentObjectiveId']||null,'env_vars':_0x1d5377['envVars']||{},'parameters':{'instructions':_0x1d5377['instructions']||''},'files':_0x1d5377['files']||[],'jira':_0x1d5377['jira']||null};return this['createTask'](_0x2567e8);},async 'updateObjective'(_0xb2a543,_0x5bdfad,_0x33230d=[],_0x4fbbaa=[]){let _0x1acda0,_0x59746e={};const _0x42b335={..._0x5bdfad};_0x4fbbaa&&_0x4fbbaa['length']>0x0&&(_0x42b335['removeAttachments']=_0x4fbbaa);if(_0x33230d&&_0x33230d['length']>0x0){const _0x47d1ce=new FormData();for(const [_0x863e6e,_0x71dfd3]of Object['entries'](_0x42b335)){if(_0x71dfd3==null)continue;typeof _0x71dfd3==='object'?_0x47d1ce['append'](_0x863e6e,JSON['stringify'](_0x71dfd3)):_0x47d1ce['append'](_0x863e6e,String(_0x71dfd3));}for(const _0x203893 of _0x33230d){_0x47d1ce['append']('attachments',_0x203893);}_0x1acda0=_0x47d1ce;}else _0x59746e['Content-Type']='application/json',_0x1acda0=JSON['stringify'](_0x42b335);const _0x1cc41d=await fetch(API_BASE+'/tasks/'+_0xb2a543,{'method':'PATCH','headers':_0x59746e,'body':_0x1acda0});if(!_0x1cc41d['ok']){const _0x13975a=await _0x1cc41d['json']();throw new Error(_0x13975a['error']||'Failed\x20to\x20update\x20objective');}return await _0x1cc41d['json']();},async 'deleteObjective'(_0x7672de){return this['deleteTask'](_0x7672de);},async 'launchObjective'(_0x118464,_0x24b6f5={}){const _0x1c36e7=await fetch(API_BASE+'/tasks/'+_0x118464+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24b6f5)});if(!_0x1c36e7['ok']){const _0x3cdfdc=await _0x1c36e7['json']();throw new Error(_0x3cdfdc['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1c36e7['json']();},async 'getObjectiveAttachments'(_0xabdc8f){return this['getTaskAttachments'](_0xabdc8f);},async 'createJudgeTask'({environment:_0x19f46f,judgeAgent:_0x7a6bf5,groupId:_0x4b11eb,taskIds:_0x2cbd82,judgeCustomInstructions:_0x3740f1,isPinned:_0x1e54c7}){const _0x178a2a=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x19f46f,'judgeAgent':_0x7a6bf5,'groupId':_0x4b11eb,'taskIds':_0x2cbd82,'judgeCustomInstructions':_0x3740f1,'isPinned':_0x1e54c7})});if(!_0x178a2a['ok']){const _0x4bcb11=await _0x178a2a['json']();throw new Error(_0x4bcb11['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x178a2a['json']();},async 'getJudgeTasks'(_0x1f2d92){const _0x1ef91c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1f2d92));if(!_0x1ef91c['ok']){const _0x5ac640=await _0x1ef91c['json']();throw new Error(_0x5ac640['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1ef91c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1957c9,_0x14b922,_0x1b2f73=''){const _0x35e476=await fetch(API_BASE+'/tasks/'+_0x1957c9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14b922,'customPreamble':_0x1b2f73})});if(!_0x35e476['ok']){const _0xec7a82=await _0x35e476['json']();throw new Error(_0xec7a82['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x35e476['json']();},async 'getJiraConfig'(){const _0x1983ec=await fetch(API_BASE+'/jira/config');if(!_0x1983ec['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1983ec['json']();},async 'getJiraIssue'(_0x22206e){const _0x5b46dc=await fetch(API_BASE+'/jira/issues/'+_0x22206e);if(!_0x5b46dc['ok']){const _0x4443c8=await _0x5b46dc['json']()['catch'](()=>({}));throw new Error(_0x4443c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x5b46dc['statusText']);}return await _0x5b46dc['json']();},async 'searchJiraIssues'(_0x498fd9,_0x463f28=0x14){const _0x102829=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x498fd9,'maxResults':_0x463f28})});if(!_0x102829['ok']){const _0x2aaf1b=await _0x102829['json']()['catch'](()=>({}));throw new Error(_0x2aaf1b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x102829['statusText']);}return await _0x102829['json']();},async 'postJiraComment'(_0x4f5dd1,_0xf8321b){const _0x3e0186=await fetch(API_BASE+'/jira/issues/'+_0x4f5dd1+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xf8321b})});if(!_0x3e0186['ok']){const _0x3f17b4=await _0x3e0186['json']()['catch'](()=>({}));throw new Error(_0x3f17b4['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x3e0186['statusText']);}return await _0x3e0186['json']();},async 'getJiraComments'(_0x3bfa17){const _0x25eeeb=await fetch(API_BASE+'/jira/issues/'+_0x3bfa17+'/comments');if(!_0x25eeeb['ok']){const _0x1f9a38=await _0x25eeeb['json']()['catch'](()=>({}));throw new Error(_0x1f9a38['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x25eeeb['statusText']);}return await _0x25eeeb['json']();},async 'promptParameter'({environment:_0xdd7935,command:_0x255666,parser:parser='json'}){const _0x2fb9ee=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xdd7935,'command':_0x255666,'parser':parser})});if(!_0x2fb9ee['ok']){const _0x2fc11e=await _0x2fb9ee['json']()['catch'](()=>({}));throw new Error(_0x2fc11e['message']||_0x2fc11e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2fb9ee['statusText']);}return await _0x2fb9ee['json']();},async 'promptParameterStream'(_0x349884,_0x49f8c0){const _0x27348a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x349884)});if(!_0x27348a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x27348a['statusText']);const _0x156bbd=_0x27348a['body']['getReader'](),_0x50ac36=new TextDecoder();let _0x1cb890='';return new Promise((_0x44ecc4,_0x463fbf)=>{const _0x218d62=async()=>{try{const {done:_0x2dadd2,value:_0x99a911}=await _0x156bbd['read']();if(_0x2dadd2)return;_0x1cb890+=_0x50ac36['decode'](_0x99a911,{'stream':!![]});const _0x13dfeb=_0x1cb890['split']('\x0a\x0a');_0x1cb890=_0x13dfeb['pop']()||'';for(const _0x325871 of _0x13dfeb){if(!_0x325871['trim']())continue;const _0x7d00d6=_0x325871['split']('\x0a');let _0x2c5496='message',_0x3a584f='';for(const _0x7c41cb of _0x7d00d6){if(_0x7c41cb['startsWith']('event:'))_0x2c5496=_0x7c41cb['substring'](0x6)['trim']();else _0x7c41cb['startsWith']('data:')&&(_0x3a584f=_0x7c41cb['substring'](0x5)['trim']());}if(!_0x3a584f)continue;try{const _0x28250f=JSON['parse'](_0x3a584f);if(_0x2c5496==='progress'&&_0x49f8c0)_0x49f8c0(_0x28250f['stage'],_0x28250f['message']);else{if(_0x2c5496==='result'){_0x44ecc4(_0x28250f);return;}else{if(_0x2c5496==='error'){let _0xeafe12=_0x28250f['message']||_0x28250f['error']||'Prompt\x20command\x20failed';_0x28250f['rawOutput']&&(_0xeafe12+='\x0a\x0aRaw\x20output:\x0a'+_0x28250f['rawOutput']);_0x463fbf(new Error(_0xeafe12));return;}}}}catch(_0x4d8c53){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d8c53),console['error']('Event\x20type:',_0x2c5496),console['error']('Event\x20data:',_0x3a584f),console['error']('First\x20200\x20chars:',_0x3a584f['substring'](0x0,0xc8)),_0x463fbf(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d8c53['message']+'\x0a\x0aData:\x20'+_0x3a584f['substring'](0x0,0x1f4)));return;}}_0x218d62();}catch(_0x4925d1){_0x463fbf(_0x4925d1);}};_0x218d62();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3da842){const _0x34c925=await fetch(''+API_BASE+_0x3da842);if(!_0x34c925['ok']){const _0x5d6745=await _0x34c925['json']()['catch'](()=>({'error':_0x34c925['statusText']})),_0x43681c=new Error(_0x5d6745['error']||_0x5d6745['message']||_0x34c925['statusText']);if(_0x5d6745['detail']!==undefined)_0x43681c['detail']=_0x5d6745['detail'];throw _0x43681c;}return await _0x34c925['json']();},async 'post'(_0x5d8720,_0x580275){const _0x2a95de=await fetch(''+API_BASE+_0x5d8720,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580275)});if(!_0x2a95de['ok']){const _0x328895=await _0x2a95de['json']()['catch'](()=>({'error':_0x2a95de['statusText']})),_0x43226d=new Error(_0x328895['error']||_0x328895['message']||_0x2a95de['statusText']);if(_0x328895['detail']!==undefined)_0x43226d['detail']=_0x328895['detail'];throw _0x43226d;}return await _0x2a95de['json']();},async 'put'(_0x384d17,_0x1d5a13){const _0x34c0ea=await fetch(''+API_BASE+_0x384d17,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d5a13)});if(!_0x34c0ea['ok']){const _0x5a62ed=await _0x34c0ea['json']()['catch'](()=>({'error':_0x34c0ea['statusText']})),_0x1ae0fc=new Error(_0x5a62ed['error']||_0x5a62ed['message']||_0x34c0ea['statusText']);if(_0x5a62ed['detail']!==undefined)_0x1ae0fc['detail']=_0x5a62ed['detail'];throw _0x1ae0fc;}return await _0x34c0ea['json']();},async 'delete'(_0x4f2667,_0x2e3e28){const _0xea880={'method':'DELETE'};_0x2e3e28&&(_0xea880['headers']={'Content-Type':'application/json'},_0xea880['body']=JSON['stringify'](_0x2e3e28));const _0x47510e=await fetch(''+API_BASE+_0x4f2667,_0xea880);if(!_0x47510e['ok']){const _0x3b117b=await _0x47510e['json']()['catch'](()=>({'error':_0x47510e['statusText']})),_0xac2c15=new Error(_0x3b117b['error']||_0x3b117b['message']||_0x47510e['statusText']);if(_0x3b117b['detail']!==undefined)_0xac2c15['detail']=_0x3b117b['detail'];throw _0xac2c15;}return await _0x47510e['json']();},async 'getSkills'(){const _0x5d78c8=await fetch(API_BASE+'/skills');if(!_0x5d78c8['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x5d78c8['statusText']);return await _0x5d78c8['json']();},async 'getSkill'(_0x35b14b){const _0x195c87=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35b14b));if(!_0x195c87['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x195c87['statusText']);return await _0x195c87['json']();},async 'createSkill'(_0x351f23){const _0x216b8e=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351f23)});if(!_0x216b8e['ok']){const _0x304086=await _0x216b8e['json']()['catch'](()=>({'error':_0x216b8e['statusText']})),_0x18f181=new Error(_0x304086['error']||_0x304086['message']||_0x216b8e['statusText']);if(_0x304086['detail']!==undefined)_0x18f181['detail']=_0x304086['detail'];throw _0x18f181;}return await _0x216b8e['json']();},async 'updateSkill'(_0x4bc4b2,_0x48c427){const _0x3dcdf8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bc4b2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48c427)});if(!_0x3dcdf8['ok']){const _0x317560=await _0x3dcdf8['json']()['catch'](()=>({'error':_0x3dcdf8['statusText']})),_0x1fcfb0=new Error(_0x317560['error']||_0x317560['message']||_0x3dcdf8['statusText']);if(_0x317560['detail']!==undefined)_0x1fcfb0['detail']=_0x317560['detail'];throw _0x1fcfb0;}return await _0x3dcdf8['json']();},async 'deleteSkill'(_0x3850d4){const _0x37ba33=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3850d4),{'method':'DELETE'});if(!_0x37ba33['ok']){const _0x4f7684=await _0x37ba33['json']()['catch'](()=>({'error':_0x37ba33['statusText']})),_0x2f169b=new Error(_0x4f7684['error']||_0x4f7684['message']||_0x37ba33['statusText']);if(_0x4f7684['detail']!==undefined)_0x2f169b['detail']=_0x4f7684['detail'];throw _0x2f169b;}return await _0x37ba33['json']();},async 'getSkillFile'(_0x2d674d,_0x1a1d29){const _0x170e5c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d674d)+'/files/'+_0x1a1d29);if(!_0x170e5c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x170e5c['statusText']);return await _0x170e5c['json']();},async 'saveSkillFile'(_0x46c740,_0x1bc610,_0x4b0470){const _0x526ac8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x46c740)+'/files/'+_0x1bc610,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b0470})});if(!_0x526ac8['ok']){const _0x2ee5d8=await _0x526ac8['json']()['catch'](()=>({'error':_0x526ac8['statusText']})),_0x57c5ff=new Error(_0x2ee5d8['error']||_0x2ee5d8['message']||_0x526ac8['statusText']);if(_0x2ee5d8['detail']!==undefined)_0x57c5ff['detail']=_0x2ee5d8['detail'];throw _0x57c5ff;}return await _0x526ac8['json']();},async 'deleteSkillFile'(_0x2de1d4,_0x4e8f06){const _0x326c26=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2de1d4)+'/files/'+_0x4e8f06,{'method':'DELETE'});if(!_0x326c26['ok']){const _0x14e1f4=await _0x326c26['json']()['catch'](()=>({'error':_0x326c26['statusText']})),_0x4e1d8e=new Error(_0x14e1f4['error']||_0x14e1f4['message']||_0x326c26['statusText']);if(_0x14e1f4['detail']!==undefined)_0x4e1d8e['detail']=_0x14e1f4['detail'];throw _0x4e1d8e;}return await _0x326c26['json']();},async 'pullSkills'(){const _0x278b55=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x278b55['ok']){const _0x2101b8=await _0x278b55['json']()['catch'](()=>({'error':_0x278b55['statusText']})),_0x233cfe=new Error(_0x2101b8['error']||_0x2101b8['message']||_0x278b55['statusText']);if(_0x2101b8['detail']!==undefined)_0x233cfe['detail']=_0x2101b8['detail'];throw _0x233cfe;}return await _0x278b55['json']();},async 'commitSkills'(_0x369f32,_0x2eb57b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2eb57b,_0x501358=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x369f32,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x501358['ok']){const _0x519243=await _0x501358['json']()['catch'](()=>({'error':_0x501358['statusText']})),_0x4d032e=new Error(_0x519243['error']||_0x519243['message']||_0x501358['statusText']);if(_0x519243['detail']!==undefined)_0x4d032e['detail']=_0x519243['detail'];throw _0x4d032e;}return await _0x501358['json']();},async 'discardSkillsChanges'(){const _0x386211=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x386211['ok']){const _0x38269c=await _0x386211['json']()['catch'](()=>({'error':_0x386211['statusText']})),_0x4d8dba=new Error(_0x38269c['error']||_0x38269c['message']||_0x386211['statusText']);if(_0x38269c['detail']!==undefined)_0x4d8dba['detail']=_0x38269c['detail'];throw _0x4d8dba;}return await _0x386211['json']();},async 'getSkillCatalog'(){const _0x4cd066=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4cd066['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4cd066['statusText']);return await _0x4cd066['json']();},async 'getImportedSkillsRegistry'(){const _0x5d2ccf=await fetch(API_BASE+'/external-skills/registry');if(!_0x5d2ccf['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5d2ccf['statusText']);return await _0x5d2ccf['json']();},async 'importCatalogSkill'(_0x38c3da){const _0x4b4c80=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x38c3da})});if(!_0x4b4c80['ok']){const _0x352771=await _0x4b4c80['json']()['catch'](()=>({'error':_0x4b4c80['statusText']})),_0xadbc25=new Error(_0x352771['error']||_0x352771['message']||_0x4b4c80['statusText']);if(_0x352771['detail']!==undefined)_0xadbc25['detail']=_0x352771['detail'];throw _0xadbc25;}return await _0x4b4c80['json']();},async 'importSkillFromGit'(_0x2c1ed1,_0x4517c3,_0x2d179f='main',_0x16216c=null){const _0x827992=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2c1ed1,'skillPath':_0x4517c3,'branch':_0x2d179f,'skillId':_0x16216c})});if(!_0x827992['ok']){const _0x1a81df=await _0x827992['json']()['catch'](()=>({'error':_0x827992['statusText']})),_0x8ef7ae=new Error(_0x1a81df['error']||_0x1a81df['message']||_0x827992['statusText']);if(_0x1a81df['detail']!==undefined)_0x8ef7ae['detail']=_0x1a81df['detail'];throw _0x8ef7ae;}return await _0x827992['json']();},async 'probeMarketplace'(_0x43b308,_0x52379f='main'){const _0x9ae18b=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x43b308,'branch':_0x52379f})});if(!_0x9ae18b['ok']){const _0x16535f=await _0x9ae18b['json']()['catch'](()=>({'error':_0x9ae18b['statusText']})),_0x2a126d=new Error(_0x16535f['error']||_0x16535f['message']||_0x9ae18b['statusText']);if(_0x16535f['detail']!==undefined)_0x2a126d['detail']=_0x16535f['detail'];throw _0x2a126d;}return await _0x9ae18b['json']();},async 'importMarketplaceBundle'(_0x5925fc,_0x4b3157,_0x253924,_0x1396f2=null){const _0x5322c9=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5925fc,'branch':_0x4b3157,'bundleId':_0x253924,'selectedSkills':_0x1396f2})});if(!_0x5322c9['ok']){const _0x3a1ff7=await _0x5322c9['json']()['catch'](()=>({'error':_0x5322c9['statusText']})),_0x3e33e7=new Error(_0x3a1ff7['error']||_0x3a1ff7['message']||_0x5322c9['statusText']);if(_0x3a1ff7['detail']!==undefined)_0x3e33e7['detail']=_0x3a1ff7['detail'];throw _0x3e33e7;}return await _0x5322c9['json']();},async 'importSkillFromFolder'(_0x14360b,_0x4be6da=null){const _0x311815=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x14360b,'skillId':_0x4be6da})});if(!_0x311815['ok']){const _0x120302=await _0x311815['json']()['catch'](()=>({'error':_0x311815['statusText']})),_0x383bfb=new Error(_0x120302['error']||_0x120302['message']||_0x311815['statusText']);if(_0x120302['detail']!==undefined)_0x383bfb['detail']=_0x120302['detail'];throw _0x383bfb;}return await _0x311815['json']();},async 'importSkillFromNpm'(_0x37e28b,_0x2f99d1='latest',_0x34d819=null,_0x2d5138=null){const _0x1625e8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x37e28b,'version':_0x2f99d1,'skillId':_0x34d819,'registry':_0x2d5138})});if(!_0x1625e8['ok']){const _0x55f81b=await _0x1625e8['json']()['catch'](()=>({'error':_0x1625e8['statusText']})),_0x352533=new Error(_0x55f81b['error']||_0x55f81b['message']||_0x1625e8['statusText']);if(_0x55f81b['detail']!==undefined)_0x352533['detail']=_0x55f81b['detail'];throw _0x352533;}return await _0x1625e8['json']();},async 'checkSkillUpdates'(_0x2efcdd){const _0x306459=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2efcdd)+'/check-updates',{'method':'POST'});if(!_0x306459['ok']){const _0x49576a=await _0x306459['json']()['catch'](()=>({'error':_0x306459['statusText']})),_0x394534=new Error(_0x49576a['error']||_0x49576a['message']||_0x306459['statusText']);if(_0x49576a['detail']!==undefined)_0x394534['detail']=_0x49576a['detail'];throw _0x394534;}return await _0x306459['json']();},async 'updateExternalSkill'(_0x5f4ada){const _0x36c0a0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f4ada)+'/update',{'method':'POST'});if(!_0x36c0a0['ok']){const _0x1856a6=await _0x36c0a0['json']()['catch'](()=>({'error':_0x36c0a0['statusText']})),_0x2d6a6b=new Error(_0x1856a6['error']||_0x1856a6['message']||_0x36c0a0['statusText']);if(_0x1856a6['detail']!==undefined)_0x2d6a6b['detail']=_0x1856a6['detail'];throw _0x2d6a6b;}return await _0x36c0a0['json']();},async 'updateSkillFlags'(_0x645152,_0x24646e){const _0x2413be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x645152)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x24646e})});if(!_0x2413be['ok']){const _0x4475ab=await _0x2413be['json']()['catch'](()=>({'error':_0x2413be['statusText']})),_0x78da1=new Error(_0x4475ab['error']||_0x4475ab['message']||_0x2413be['statusText']);if(_0x4475ab['detail']!==undefined)_0x78da1['detail']=_0x4475ab['detail'];throw _0x78da1;}return await _0x2413be['json']();},async 'removeFromImportedRegistry'(_0x6f0344){const _0x2d9c36=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6f0344)+'/registry',{'method':'DELETE'});if(!_0x2d9c36['ok']){const _0x388d28=await _0x2d9c36['json']()['catch'](()=>({'error':_0x2d9c36['statusText']})),_0x3e32b4=new Error(_0x388d28['error']||_0x388d28['message']||_0x2d9c36['statusText']);if(_0x388d28['detail']!==undefined)_0x3e32b4['detail']=_0x388d28['detail'];throw _0x3e32b4;}return await _0x2d9c36['json']();},async 'getTeams'(){const _0x171d55=await fetch(API_BASE+'/teams');if(!_0x171d55['ok']){const _0x5001f2=await _0x171d55['json']()['catch'](()=>({'message':_0x171d55['statusText']}));throw new Error(_0x5001f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x171d55['json']();},async 'getTeam'(_0xc7ae11){const _0xb6a8c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc7ae11));if(!_0xb6a8c1['ok']){const _0x2ed49f=await _0xb6a8c1['json']()['catch'](()=>({'message':_0xb6a8c1['statusText']}));throw new Error(_0x2ed49f['message']||'Failed\x20to\x20get\x20team');}return await _0xb6a8c1['json']();},async 'createTeam'(_0x57e80b){const _0x5512fa=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57e80b)});if(!_0x5512fa['ok']){const _0x4714fd=await _0x5512fa['json']()['catch'](()=>({'message':_0x5512fa['statusText']}));throw new Error(_0x4714fd['message']||'Failed\x20to\x20create\x20team');}return await _0x5512fa['json']();},async 'updateTeam'(_0x55aa60,_0x51e86f){const _0x5d9694=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55aa60),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51e86f)});if(!_0x5d9694['ok']){const _0x3735d0=await _0x5d9694['json']()['catch'](()=>({'message':_0x5d9694['statusText']}));throw new Error(_0x3735d0['message']||'Failed\x20to\x20update\x20team');}return await _0x5d9694['json']();},async 'deleteTeam'(_0x5ca5f9){const _0x4dbaf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5ca5f9),{'method':'DELETE'});if(!_0x4dbaf7['ok']){const _0x567766=await _0x4dbaf7['json']()['catch'](()=>({'message':_0x4dbaf7['statusText']}));throw new Error(_0x567766['message']||'Failed\x20to\x20delete\x20team');}return await _0x4dbaf7['json']();},async 'addTeamMember'(_0x310992,_0x3da648){const _0x397681=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x310992)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3da648})});if(!_0x397681['ok']){const _0x20f2bf=await _0x397681['json']()['catch'](()=>({'message':_0x397681['statusText']}));throw new Error(_0x20f2bf['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x397681['json']();},async 'removeTeamMember'(_0x1df662,_0x2ff3b3){const _0x590790=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1df662)+'/members/'+encodeURIComponent(_0x2ff3b3),{'method':'DELETE'});if(!_0x590790['ok']){const _0x223403=await _0x590790['json']()['catch'](()=>({'message':_0x590790['statusText']}));throw new Error(_0x223403['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x590790['json']();},async 'getBindings'(_0x10d91c={}){const _0x4ebf13=new URLSearchParams();if(_0x10d91c['resource_type'])_0x4ebf13['set']('resource_type',_0x10d91c['resource_type']);if(_0x10d91c['resource_id'])_0x4ebf13['set']('resource_id',_0x10d91c['resource_id']);if(_0x10d91c['subject_type'])_0x4ebf13['set']('subject_type',_0x10d91c['subject_type']);if(_0x10d91c['subject_id'])_0x4ebf13['set']('subject_id',_0x10d91c['subject_id']);const _0x13d343=_0x4ebf13['toString'](),_0x168104=await fetch(API_BASE+'/bindings'+(_0x13d343?'?'+_0x13d343:''));if(!_0x168104['ok']){const _0x4aa910=await _0x168104['json']()['catch'](()=>({'message':_0x168104['statusText']}));throw new Error(_0x4aa910['message']||'Failed\x20to\x20get\x20bindings');}return await _0x168104['json']();},async 'createBinding'(_0xb3af06){const _0x13c5bf=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb3af06)});if(!_0x13c5bf['ok']){const _0x452d7c=await _0x13c5bf['json']()['catch'](()=>({'message':_0x13c5bf['statusText']}));throw new Error(_0x452d7c['message']||'Failed\x20to\x20create\x20binding');}return await _0x13c5bf['json']();},async 'updateBinding'(_0x1babc6,_0x4af65a){const _0x522a6d=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1babc6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4af65a)});if(!_0x522a6d['ok']){const _0x496e5b=await _0x522a6d['json']()['catch'](()=>({'message':_0x522a6d['statusText']}));throw new Error(_0x496e5b['message']||'Failed\x20to\x20update\x20binding');}return await _0x522a6d['json']();},async 'deleteBinding'(_0x101a8f){const _0x649a48=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x101a8f),{'method':'DELETE'});if(!_0x649a48['ok']){const _0x1e6825=await _0x649a48['json']()['catch'](()=>({'message':_0x649a48['statusText']}));throw new Error(_0x1e6825['message']||'Failed\x20to\x20delete\x20binding');}return await _0x649a48['json']();},async 'getRoleDefinitions'(){const _0x2a9a88=await fetch(API_BASE+'/roles');if(!_0x2a9a88['ok']){const _0x6480cd=await _0x2a9a88['json']()['catch'](()=>({'message':_0x2a9a88['statusText']}));throw new Error(_0x6480cd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2a9a88['json']();},async 'getRoleDefinition'(_0x1c1265){const _0x55cc8c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1c1265));if(!_0x55cc8c['ok']){const _0xc32d4d=await _0x55cc8c['json']()['catch'](()=>({'message':_0x55cc8c['statusText']}));throw new Error(_0xc32d4d['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55cc8c['json']();},async 'createRoleDefinition'(_0x125c93){const _0x3e98aa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x125c93)});if(!_0x3e98aa['ok']){const _0x9a6103=await _0x3e98aa['json']()['catch'](()=>({'message':_0x3e98aa['statusText']}));throw new Error(_0x9a6103['message']||_0x9a6103['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3e98aa['json']();},async 'updateRoleDefinition'(_0x31bb29,_0x4822d4){const _0x543d12=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31bb29),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4822d4)});if(!_0x543d12['ok']){const _0x4d06dc=await _0x543d12['json']()['catch'](()=>({'message':_0x543d12['statusText']}));throw new Error(_0x4d06dc['message']||_0x4d06dc['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x543d12['json']();},async 'deleteRoleDefinition'(_0x2aaf4f){const _0x8f2823=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2aaf4f),{'method':'DELETE'});if(!_0x8f2823['ok']){const _0x549653=await _0x8f2823['json']()['catch'](()=>({'message':_0x8f2823['statusText']}));throw new Error(_0x549653['message']||_0x549653['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x8f2823['json']();},async 'getAvailablePermissions'(){const _0xe391b7=await fetch(API_BASE+'/roles/available-permissions');if(!_0xe391b7['ok']){const _0x18cbdf=await _0xe391b7['json']()['catch'](()=>({'message':_0xe391b7['statusText']}));throw new Error(_0x18cbdf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xe391b7['json']();},async 'getGitProviderAllowedTeams'(_0x5b41ff){const _0x3e0878=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5b41ff)+'/allowed-teams');if(!_0x3e0878['ok']){const _0x3e6b38=await _0x3e0878['json']()['catch'](()=>({'message':_0x3e0878['statusText']}));throw new Error(_0x3e6b38['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3e0878['json']();},async 'setGitProviderAllowedTeams'(_0x185e36,_0x13e362){const _0x26f8b6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x185e36)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x13e362})});if(!_0x26f8b6['ok']){const _0x4e3d99=await _0x26f8b6['json']()['catch'](()=>({'message':_0x26f8b6['statusText']}));throw new Error(_0x4e3d99['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x26f8b6['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 _0x134215=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4c6769=>{_0x4c6769['el']['style']['bottom']=_0x134215+'px';const _0x2bef16=_0x4c6769['el']['offsetHeight']||toastState['defaultHeight'];_0x134215+=_0x2bef16+toastState['gap'];});});}function removeToastById(_0x1ed399){const _0x264b25=toastState['toasts']['findIndex'](_0x46c427=>_0x46c427['id']===_0x1ed399);if(_0x264b25===-0x1)return;const _0x1bd5f9=toastState['toasts'][_0x264b25];if(_0x1bd5f9['timeoutId'])clearTimeout(_0x1bd5f9['timeoutId']);_0x1bd5f9['el']['classList']['remove']('show'),setTimeout(()=>_0x1bd5f9['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x264b25,0x1),repositionAllToasts();}function registerToast(_0x4ff534){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4ff534),repositionAllToasts(),_0x4ff534['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x68d482){if(_0x68d482===null||_0x68d482===undefined)return'';return String(_0x68d482)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x155876,_0x1d8c3){if(_0x155876&&typeof _0x155876==='object'&&!Array['isArray'](_0x155876))return{'code':typeof _0x155876['text']==='string'?_0x155876['text']:'','language':typeof _0x155876['lang']==='string'?_0x155876['lang']:''};return{'code':typeof _0x155876==='string'?_0x155876:'','language':typeof _0x1d8c3==='string'?_0x1d8c3:''};}function buildMermaidBlock(_0x430bb7){const _0x2f8a2a=String(_0x430bb7||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2f8a2a))+'\x22>'+escapeHtmlValue(_0x2f8a2a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x319a02=new marked['Renderer'](),_0x275059=_0x319a02['code']['bind'](_0x319a02);return _0x319a02['code']=function(_0x31af25,_0x599359,..._0x16b6e6){const {code:_0x38836c,language:_0x45cbf2}=getMarkdownCodeBlockPayload(_0x31af25,_0x599359),_0x50acb6=String(_0x45cbf2||'')['trim']()['toLowerCase']();if(_0x50acb6==='mermaid')return buildMermaidBlock(_0x38836c);const _0x291704=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x291704&&_0x50acb6)try{const _0x1703cb=_0x291704['getLanguage'](_0x50acb6)?_0x50acb6:'plaintext',_0x43f5f4=_0x291704['highlight'](_0x38836c,{'language':_0x1703cb})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x50acb6)+'\x22>'+_0x43f5f4+'</code></pre>';}catch(_0x3b2eb3){console['error']('Syntax\x20highlighting\x20error:',_0x3b2eb3);}return _0x275059(_0x31af25,_0x599359,..._0x16b6e6);},sharedMarkedRenderer=_0x319a02,_0x319a02;}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 _0x237786=window['mermaid'];if(!_0x237786||typeof _0x237786['initialize']!=='function')return _0x237786||null;return _0x237786['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x237786;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x26e033,_0x27e551)=>{const _0x8c03ad=()=>_0x26e033(configureMermaidInstance()),_0x587279=()=>{mermaidLoadPromise=null,_0x27e551(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x3ce082=document['getElementById'](MERMAID_SCRIPT_ID);!_0x3ce082&&(_0x3ce082=document['createElement']('script'),_0x3ce082['id']=MERMAID_SCRIPT_ID,_0x3ce082['src']=MERMAID_SCRIPT_SRC,_0x3ce082['async']=!![],document['head']['appendChild'](_0x3ce082));if(window['mermaid']){_0x8c03ad();return;}_0x3ce082['addEventListener']('load',_0x8c03ad,{'once':!![]}),_0x3ce082['addEventListener']('error',_0x587279,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2d7d01){const _0x29935f=_0x2d7d01['getAttribute']('data-mermaid-source');if(!_0x29935f)return null;let _0x5398a0=_0x29935f;try{_0x5398a0=decodeURIComponent(_0x29935f);}catch{}return _0x2d7d01['textContent']=_0x5398a0,_0x2d7d01['removeAttribute']('data-processed'),_0x2d7d01['removeAttribute']('aria-roledescription'),_0x2d7d01['removeAttribute']('role'),_0x2d7d01['removeAttribute']('aria-label'),_0x5398a0;}function collectMermaidNodes(_0x885b8d,_0x9c8bc9){if(!(_0x885b8d instanceof Element))return;_0x885b8d['matches']('.mermaid[data-mermaid-source]')&&_0x9c8bc9['add'](_0x885b8d),_0x885b8d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x44b250=>{_0x9c8bc9['add'](_0x44b250);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x113338=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x266a1d=>setTimeout(_0x266a1d,0x0);_0x113338(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x12ca9e=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x12ca9e);});});}function queueMermaidRender(_0x12a3fd){const _0x1c797a=new Set();_0x12a3fd instanceof Document||_0x12a3fd instanceof DocumentFragment?_0x12a3fd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4ab498=>_0x1c797a['add'](_0x4ab498)):collectMermaidNodes(_0x12a3fd,_0x1c797a);if(_0x1c797a['size']===0x0)return;_0x1c797a['forEach'](_0x43fa30=>pendingMermaidNodes['add'](_0x43fa30)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd81e6e=Array['from'](pendingMermaidNodes)['filter'](_0x433224=>_0x433224['isConnected']);pendingMermaidNodes['clear']();if(_0xd81e6e['length']===0x0)return;const _0xbd22c4=await loadMermaid();if(!_0xbd22c4)return;configureMermaidInstance();const _0x513012=getMermaidTheme();for(const _0x32bb8f of _0xd81e6e){const _0x7e1815=_0x32bb8f['getAttribute']('data-mermaid-source');if(!_0x7e1815)continue;const _0x34645c=_0x32bb8f['getAttribute']('data-processed')==='true';if(_0x34645c&&_0x32bb8f['dataset']['mermaidTheme']===_0x513012)continue;restoreMermaidSource(_0x32bb8f);try{if(typeof _0xbd22c4['run']==='function')await _0xbd22c4['run']({'nodes':[_0x32bb8f]});else typeof _0xbd22c4['init']==='function'&&_0xbd22c4['init'](undefined,[_0x32bb8f]);_0x32bb8f['dataset']['mermaidTheme']=_0x513012,delete _0x32bb8f['dataset']['mermaidError'];}catch(_0x5a996a){console['error']('Mermaid\x20render\x20failed:',_0x5a996a),restoreMermaidSource(_0x32bb8f),_0x32bb8f['dataset']['mermaidError']='true',delete _0x32bb8f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3e291=>{_0x3e291['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3e291);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x44f170=>{_0x44f170['forEach'](_0x29a66b=>{_0x29a66b['addedNodes']['forEach'](_0x3412f=>{_0x3412f['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3412f);});});}),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'(_0x39b2ba){const _0x2eaaca=new Date(_0x39b2ba),_0x2bb7e1=new Date(),_0x298a6d=_0x2bb7e1-_0x2eaaca,_0x1e6c3c=Math['floor'](_0x298a6d/0x3e8),_0x558772=Math['floor'](_0x1e6c3c/0x3c),_0x20747f=Math['floor'](_0x558772/0x3c),_0x215117=Math['floor'](_0x20747f/0x18);if(_0x1e6c3c<0x3c)return'now';if(_0x558772<0x3c)return _0x558772+'m\x20ago';if(_0x20747f<0x18)return _0x20747f+'h\x20ago';return _0x215117+'d\x20ago';},'getStatusIcon'(_0xca8ae9){switch(_0xca8ae9){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x9abe22){switch(_0x9abe22){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'(_0x47c1b1,_0x28daa4=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2b482e={};_0x2b482e['text/plain']=new Blob([_0x47c1b1],{'type':'text/plain'});_0x28daa4&&(_0x2b482e['text/html']=new Blob([_0x28daa4],{'type':'text/html'}));const _0x5ee33c=new ClipboardItem(_0x2b482e);return await navigator['clipboard']['write']([_0x5ee33c]),!![];}catch(_0x5b83e3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5b83e3);}try{const _0xe53a78=_0x38ac2e=>{_0x38ac2e['preventDefault'](),_0x38ac2e['clipboardData']['setData']('text/plain',_0x47c1b1),_0x28daa4&&_0x38ac2e['clipboardData']['setData']('text/html',_0x28daa4);};document['addEventListener']('copy',_0xe53a78);const _0x33ee5d=document['execCommand']('copy');document['removeEventListener']('copy',_0xe53a78);if(_0x33ee5d)return!![];}catch(_0x403e54){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x403e54);}try{const _0x464cee=document['createElement']('textarea');_0x464cee['value']=_0x47c1b1,_0x464cee['style']['position']='fixed',_0x464cee['style']['opacity']='0',_0x464cee['style']['pointerEvents']='none',document['body']['appendChild'](_0x464cee),_0x464cee['select']();const _0x57526c=document['execCommand']('copy');return document['body']['removeChild'](_0x464cee),_0x57526c;}catch(_0x3e15ed){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3e15ed),![];}},'showToast'(_0x5bdb0d,_0x46f26c='info'){const _0x5a2476=getNextToastId(),_0x11ec0e=document['createElement']('div');_0x11ec0e['className']='toast\x20toast-'+_0x46f26c,_0x11ec0e['textContent']=_0x5bdb0d,_0x11ec0e['dataset']['toastId']=_0x5a2476,document['body']['appendChild'](_0x11ec0e);const _0x5ba37e=_0x46f26c==='error'?0x2710:0xbb8,_0x4f2ea1=setTimeout(()=>{removeToastById(_0x5a2476);},_0x5ba37e),_0x5cf4a8={'id':_0x5a2476,'el':_0x11ec0e,'timeoutId':_0x4f2ea1};return registerToast(_0x5cf4a8),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x11ec0e['classList']['add']('show');});}),_0x5a2476;},'showError'(_0x126d21){console['error'](_0x126d21);const _0x44a60f=typeof _0x126d21==='string'?_0x126d21:_0x126d21['message']||'An\x20error\x20occurred';this['showToast'](_0x44a60f,'error');},'showSuccess'(_0x3b872f){this['showToast'](_0x3b872f,'success');},'capitalize'(_0x104433){if(!_0x104433)return'';return _0x104433['charAt'](0x0)['toUpperCase']()+_0x104433['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5aacb7){return escapeHtmlValue(_0x5aacb7);},'ansiToHtml'(_0x11f786){if(_0x11f786===null||_0x11f786===undefined)return'';let _0x1047ac=this['escapeHtml'](_0x11f786);const _0x360986={'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'},_0x23b4df={'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 _0x1182a6=0x0;return _0x1047ac=_0x1047ac['replace'](/\x1b\[([0-9;]*)m/g,(_0x26dde6,_0x3861bc)=>{if(!_0x3861bc||_0x3861bc==='0'){const _0x536af9='</span>'['repeat'](_0x1182a6);return _0x1182a6=0x0,_0x536af9;}const _0x25bc2d=_0x3861bc['split'](';'),_0x4f83e2=[];for(const _0x4b1728 of _0x25bc2d){if(_0x4b1728==='1')_0x4f83e2['push']('font-weight:bold');else{if(_0x4b1728==='2')_0x4f83e2['push']('opacity:0.7');else{if(_0x4b1728==='3')_0x4f83e2['push']('font-style:italic');else{if(_0x4b1728==='4')_0x4f83e2['push']('text-decoration:underline');else{if(_0x4b1728==='9')_0x4f83e2['push']('text-decoration:line-through');else{if(_0x360986[_0x4b1728])_0x4f83e2['push']('color:'+_0x360986[_0x4b1728]);else{if(_0x23b4df[_0x4b1728])_0x4f83e2['push']('background-color:'+_0x23b4df[_0x4b1728]);}}}}}}}if(_0x4f83e2['length']>0x0)return _0x1182a6++,'<span\x20style=\x22'+_0x4f83e2['join'](';')+'\x22>';return'';}),_0x1047ac+='</span>'['repeat'](_0x1182a6),_0x1047ac=_0x1047ac['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1b25ee,_0x1aa331)=>{if(!_0x1aa331||_0x1aa331==='0')return'';const _0x4125ac=_0x1aa331['split'](';'),_0x592f05=[];for(const _0x2dd464 of _0x4125ac){if(_0x2dd464==='1')_0x592f05['push']('font-weight:bold');else{if(_0x360986[_0x2dd464])_0x592f05['push']('color:'+_0x360986[_0x2dd464]);else{if(_0x23b4df[_0x2dd464])_0x592f05['push']('background-color:'+_0x23b4df[_0x2dd464]);}}}if(_0x592f05['length']>0x0)return'<span\x20style=\x22'+_0x592f05['join'](';')+'\x22>';return'';}),_0x1047ac;},'showModal'({title:_0x2a3bb3,content:_0x518a18,buttons:buttons=[]}){const _0x54e1e6='\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'](_0x2a3bb3)+'</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'+_0x518a18+'\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']((_0x10a809,_0x3ca0da)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x10a809['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3ca0da+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x10a809['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',_0x1696c2=document['createElement']('div');_0x1696c2['id']='utils-modal',_0x1696c2['className']='modal',_0x1696c2['innerHTML']=_0x54e1e6,document['body']['appendChild'](_0x1696c2);const _0x160f7d=document['getElementById']('utils-modal-close');_0x160f7d&&_0x160f7d['addEventListener']('click',()=>this['hideModal']());const _0x573c21=_0x1696c2['querySelectorAll']('[data-btn-index]');_0x573c21['forEach'](_0x15f6fc=>{const _0xc01008=parseInt(_0x15f6fc['dataset']['btnIndex']);buttons[_0xc01008]?.['onClick']&&_0x15f6fc['addEventListener']('click',buttons[_0xc01008]['onClick']);});const _0x7c7b4a=document['getElementById']('utils-modal-overlay');_0x7c7b4a&&_0x7c7b4a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3072ad=document['getElementById']('utils-modal');_0x3072ad&&_0x3072ad['remove']();},'parseKeyValuePairs'(_0x1de37b){const _0x2c61c7={};if(!_0x1de37b)return _0x2c61c7;return _0x1de37b['split'](/\r?\n/)['map'](_0x32eee1=>_0x32eee1['trim']())['filter'](Boolean)['forEach'](_0x8571f6=>{const _0x43f5ca=_0x8571f6['indexOf']('=');if(_0x43f5ca>0x0){const _0x37a1b8=_0x8571f6['slice'](0x0,_0x43f5ca)['trim'](),_0x17e933=_0x8571f6['slice'](_0x43f5ca+0x1)['trim']();if(_0x37a1b8)_0x2c61c7[_0x37a1b8]=_0x17e933;}}),_0x2c61c7;},'debounce'(_0x20f77f,_0x3acc10=0xfa){let _0x498f7b=null;return(..._0x470d64)=>{clearTimeout(_0x498f7b),_0x498f7b=setTimeout(()=>_0x20f77f['apply'](this,_0x470d64),_0x3acc10);};},'formatTimestamp'(_0x123cde){if(!_0x123cde)return'N/A';const _0x26a2ab=new Date(_0x123cde);return _0x26a2ab['toLocaleDateString']()+'\x20'+_0x26a2ab['toLocaleTimeString']();},'getQueryParams'(){const _0xa4902d=new URLSearchParams(window['location']['search']),_0x4b8949={};for(const [_0x348280,_0x1d296a]of _0xa4902d){_0x4b8949[_0x348280]=_0x1d296a;}return _0x4b8949;},'formatDuration'(_0x4a492f,_0x461fc1){if(!_0x4a492f)return'N/A';const _0x392b34=new Date(_0x4a492f),_0x17a266=_0x461fc1?new Date(_0x461fc1):new Date(),_0x4064c5=_0x17a266-_0x392b34;if(_0x4064c5<0x0)return'0s';const _0x56330e=Math['floor'](_0x4064c5/0x3e8),_0x4e6913=Math['floor'](_0x56330e/0x3c),_0xf6076=Math['floor'](_0x4e6913/0x3c),_0x5166da=Math['floor'](_0xf6076/0x18);if(_0x56330e<0x3c)return _0x56330e+'s';if(_0x4e6913<0x3c)return _0x4e6913+'m\x20'+_0x56330e%0x3c+'s';if(_0xf6076<0x18)return _0xf6076+'h\x20'+_0x4e6913%0x3c+'m\x20'+_0x56330e%0x3c+'s';return _0x5166da+'d\x20'+_0xf6076%0x18+'h\x20'+_0x4e6913%0x3c+'m';},'renderMarkdown'(_0x553a6e,_0x406c36={}){if(!_0x553a6e)return'';_0x553a6e=this['rewriteAttachmentLinks'](_0x553a6e,_0x406c36),_0x553a6e=this['rewriteColorSyntax'](_0x553a6e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x553a6e);}catch(_0x306e9c){return console['error']('Markdown\x20parsing\x20error:',_0x306e9c),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);}},'rewriteAttachmentLinks'(_0x451a6f,_0x5aa48d={}){const _0x4c362a=typeof _0x5aa48d['resolveAttachmentUrl']==='function'?_0x5aa48d['resolveAttachmentUrl']:_0x5aa48d['taskId']?_0xff3825=>API_BASE+'/tasks/'+_0x5aa48d['taskId']+'/attachments/'+encodeURIComponent(_0xff3825):null;if(!_0x4c362a)return _0x451a6f;return String(_0x451a6f)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x156de5,_0x42b45c)=>{const _0x95112e=String(_0x42b45c||'')['trim']();if(!_0x95112e)return _0x156de5;let _0x475db9=_0x95112e;try{_0x475db9=decodeURIComponent(_0x95112e);}catch{}const _0x398033=_0x4c362a(_0x475db9);if(!_0x398033)return _0x156de5;return']('+_0x398033+')';});},'rewriteColorSyntax'(_0x5c2dbd){if(!_0x5c2dbd)return _0x5c2dbd;return String(_0x5c2dbd)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x247113,_0x4d7fad,_0x1b8572)=>{const _0x4370fe=this['rewriteColorSyntax'](_0x1b8572);return'<span\x20style=\x22color:\x20'+_0x4d7fad+'\x22>'+_0x4370fe+'</span>';});},'renderMarkdownFallback'(_0x3efb63,_0x3b908d={}){if(!_0x3efb63)return'';_0x3efb63=_0x3efb63['replace'](/\r\n/g,'\x0a'),_0x3efb63=_0x3efb63['replace'](/\r/g,'\x0a'),_0x3efb63=this['rewriteAttachmentLinks'](_0x3efb63,_0x3b908d);let _0x55db8f=this['escapeHtml'](_0x3efb63);return _0x55db8f=_0x55db8f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x55db8f=_0x55db8f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x55db8f=_0x55db8f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x55db8f=_0x55db8f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x55db8f=_0x55db8f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x55db8f=_0x55db8f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x55db8f=_0x55db8f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x55db8f=_0x55db8f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x55db8f=_0x55db8f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x55db8f=_0x55db8f['replace'](/\n\n/g,'</p><p>'),_0x55db8f=_0x55db8f['replace'](/\n/g,'<br>'),'<p>'+_0x55db8f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x4f786d=new Uint8Array(0x10);crypto['getRandomValues'](_0x4f786d),_0x4f786d[0x6]=_0x4f786d[0x6]&0xf|0x40,_0x4f786d[0x8]=_0x4f786d[0x8]&0x3f|0x80;const _0xb0a9a1=Array['from'](_0x4f786d,_0x2dd69d=>_0x2dd69d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0xb0a9a1['slice'](0x0,0x8)+'-'+_0xb0a9a1['slice'](0x8,0xc)+'-'+_0xb0a9a1['slice'](0xc,0x10)+'-'+_0xb0a9a1['slice'](0x10,0x14)+'-'+_0xb0a9a1['slice'](0x14);}};export class CustomSelect{constructor(_0x56361d,_0x334ab5={}){this['nativeSelect']=_0x56361d,this['options']=_0x334ab5,this['isOpen']=![],this['selectedValue']=_0x56361d['value']||'',this['searchable']=_0x334ab5['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x15e720=document['createElement']('div');_0x15e720['className']='custom-select';const _0x26e6e0=document['createElement']('div');_0x26e6e0['className']='custom-select-trigger',_0x26e6e0['setAttribute']('tabindex','0'),_0x26e6e0['setAttribute']('role','button'),_0x26e6e0['setAttribute']('aria-haspopup','listbox');const _0x42b989=document['createElement']('span');_0x42b989['className']='custom-select-trigger-text';const _0x4b2f09=document['createElement']('span');_0x4b2f09['className']='custom-select-arrow',_0x4b2f09['textContent']='▼',_0x26e6e0['appendChild'](_0x42b989),_0x26e6e0['appendChild'](_0x4b2f09);const _0x635d95=document['createElement']('div');_0x635d95['className']='custom-select-dropdown',_0x635d95['setAttribute']('role','listbox');if(this['searchable']){const _0x3adbff=document['createElement']('div');_0x3adbff['className']='custom-select-search';const _0x3e58e8=document['createElement']('input');_0x3e58e8['type']='text',_0x3e58e8['className']='custom-select-search-input',_0x3e58e8['placeholder']='Type\x20to\x20search...',_0x3e58e8['setAttribute']('aria-label','Search\x20options'),_0x3e58e8['addEventListener']('input',_0x31ac0a=>{this['searchQuery']=_0x31ac0a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x3e58e8['addEventListener']('keydown',_0x3e31be=>{if(_0x3e31be['key']==='Escape')_0x3e31be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e31be['key']==='Enter'){_0x3e31be['preventDefault'](),_0x3e31be['stopPropagation']();const _0x5925ee=_0x635d95['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5925ee){const _0x4def0c=_0x5925ee['getAttribute']('data-value');this['select'](_0x4def0c);}}}}),_0x3adbff['appendChild'](_0x3e58e8),_0x635d95['appendChild'](_0x3adbff),this['searchInput']=_0x3e58e8;}const _0x33a568=document['createElement']('div');_0x33a568['className']='custom-select-options',_0x635d95['appendChild'](_0x33a568),_0x15e720['appendChild'](_0x26e6e0),_0x15e720['appendChild'](_0x635d95),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x15e720,this['nativeSelect']),this['wrapper']=_0x15e720,this['trigger']=_0x26e6e0,this['triggerText']=_0x42b989,this['dropdown']=_0x635d95,this['optionsContainer']=_0x33a568,_0x26e6e0['addEventListener']('click',()=>this['toggle']()),_0x26e6e0['addEventListener']('keydown',_0x5dde74=>this['handleKeydown'](_0x5dde74)),document['addEventListener']('click',_0xf58f8c=>{!_0x15e720['contains'](_0xf58f8c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x302a91=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x302a91['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4c9594=new MutationObserver(()=>{this['updateDisabledState']();});_0x4c9594['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x12da78=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x12da78['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x755040=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x755040),this['trigger']['setAttribute']('aria-disabled',_0x755040?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x755040?'-1':'0'),_0x755040&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xe4043f=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x2c60f7=_0xe4043f['filter'](_0x49356f=>!_0x49356f['disabled']&&!_0x49356f['hidden']);_0xe4043f['forEach']((_0x312069,_0x11c55)=>{const _0x4ab254=document['createElement']('div');_0x4ab254['className']='custom-select-option',_0x4ab254['textContent']=_0x312069['textContent'],_0x4ab254['setAttribute']('data-value',_0x312069['value']),_0x4ab254['setAttribute']('data-index',_0x11c55),_0x4ab254['setAttribute']('role','option'),_0x312069['disabled']?_0x4ab254['classList']['add']('disabled'):_0x4ab254['addEventListener']('click',()=>this['select'](_0x312069['value'])),_0x312069['value']===this['selectedValue']&&_0x4ab254['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4ab254),this['allOptions']['push']({'element':_0x4ab254,'text':_0x312069['textContent']['toLowerCase'](),'value':_0x312069['value'],'disabled':_0x312069['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32da5e=this['searchInput']['parentElement'];_0x2c60f7['length']>0x3?_0x32da5e['style']['display']='':_0x32da5e['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x5cc7f1=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x82ec5b=>{if(!_0x5cc7f1||_0x82ec5b['disabled'])_0x82ec5b['element']['style']['display']='';else{const _0x13e116=_0x82ec5b['text']['includes'](_0x5cc7f1);_0x82ec5b['element']['style']['display']=_0x13e116?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3405cf){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3405cf,this['nativeSelect']['value']=_0x3405cf;const _0x232ea3=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x232ea3),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3c2673=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3c2673&&(this['triggerText']['textContent']=_0x3c2673['textContent'],_0x3c2673['disabled']||_0x3c2673['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x123649=>{_0x123649['getAttribute']('data-value')===this['selectedValue']?_0x123649['classList']['add']('selected'):_0x123649['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 _0x1402cd=window['getComputedStyle'](this['dropdown']);if(_0x1402cd['position']==='fixed'){const _0x374204=this['trigger']['getBoundingClientRect'](),_0x56bcfc=parseInt(_0x1402cd['maxHeight'])||0xc8,_0x4e9353=window['innerHeight'],_0x33265f=_0x4e9353-_0x374204['bottom'],_0x1405ea=_0x374204['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14a848;_0x33265f<_0x56bcfc&&_0x1405ea>_0x33265f?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4e9353-_0x374204['top']+'px',_0x14a848=Math['min'](_0x56bcfc,_0x1405ea-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374204['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14a848=Math['min'](_0x56bcfc,_0x33265f-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px');if(this['optionsContainer']){let _0x5e2d28=_0x14a848;if(this['searchInput']){const _0xd8ce3d=this['searchInput']['parentElement'];_0xd8ce3d&&(_0x5e2d28-=_0xd8ce3d['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5e2d28)+'px';}this['dropdown']['style']['left']=_0x374204['left']+'px',this['dropdown']['style']['width']=_0x374204['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x29b84a=this['searchInput']['parentElement'];_0x29b84a&&_0x29b84a['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'](_0x1f47a0){if(this['nativeSelect']['disabled'])return;if(_0x1f47a0['key']==='Enter'||_0x1f47a0['key']==='\x20')_0x1f47a0['preventDefault'](),this['toggle']();else _0x1f47a0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c9ee8='\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',_0x1c9ee8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x254613=document['getElementById']('confirm-dialog-close'),_0x18b8f9=document['getElementById']('confirm-dialog-cancel'),_0x528189=document['getElementById']('confirm-dialog-confirm'),_0x442a52=this['_modal']['querySelector']('.modal-overlay');_0x254613['addEventListener']('click',()=>this['_resolve'](![])),_0x18b8f9['addEventListener']('click',()=>this['_resolve'](![])),_0x528189['addEventListener']('click',()=>this['_resolve'](!![])),_0x442a52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x498d23=>{if(_0x498d23['key']==='Escape')_0x498d23['preventDefault'](),this['_resolve'](![]);else _0x498d23['key']==='Enter'&&(_0x498d23['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1d2b5b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x436039=>{this['_resolvePromise']=_0x436039,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1d2b5b;const _0x36b20a=document['getElementById']('confirm-dialog-cancel'),_0x130a33=document['getElementById']('confirm-dialog-confirm');_0x36b20a['textContent']=cancelText,_0x130a33['textContent']=confirmText,_0x130a33['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x130a33['focus']();});},'_resolve'(_0x50654e){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x50654e),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x29b9ae,_0x1a678b={}){this['container']=_0x29b9ae,this['options']={'placeholder':_0x1a678b['placeholder']||'Type\x20to\x20search...','maxItems':_0x1a678b['maxItems']||0x64,'loadItems':_0x1a678b['loadItems']||(async()=>[]),'renderItem':_0x1a678b['renderItem']||(_0x5a19e7=>({'primary':String(_0x5a19e7),'secondary':''})),'onSelect':_0x1a678b['onSelect']||(()=>{}),'filterItems':_0x1a678b['filterItems']||null,'getItemValue':_0x1a678b['getItemValue']||(_0x4b4c9a=>_0x4b4c9a),'sortItems':_0x1a678b['sortItems']||null,'debounceMs':_0x1a678b['debounceMs']||0xc8,'minCharsForSearch':_0x1a678b['minCharsForSearch']||0x0,'emptyMessage':_0x1a678b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1a678b['loadingMessage']||'Loading...','preload':_0x1a678b['preload']!==![],'searchMode':_0x1a678b['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',_0x2dc94c=>this['onBlur'](_0x2dc94c)),this['input']['addEventListener']('input',_0x402bcf=>this['onInput'](_0x402bcf)),this['input']['addEventListener']('keydown',_0x34e17f=>this['onKeydown'](_0x34e17f)),this['clearBtn']['addEventListener']('mousedown',_0x228246=>{_0x228246['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1642bf=>{_0x1642bf['preventDefault']();}),document['addEventListener']('click',_0xb10e57=>{!this['wrapper']['contains'](_0xb10e57['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(_0x1feea7){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1feea7);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x232efb){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x448109){const _0x5de2d7=_0x448109['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5de2d7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5de2d7):this['loadAndShow'](_0x5de2d7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x7625e9){switch(_0x7625e9['key']){case'ArrowDown':_0x7625e9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x7625e9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x7625e9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x7625e9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5d34a6){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3787c3=this['selectedIndex']+_0x5d34a6;if(_0x3787c3>=0x0&&_0x3787c3<this['filteredItems']['length']){this['selectedIndex']=_0x3787c3,this['updateSelectionHighlight']();const _0x5223a6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5223a6[this['selectedIndex']]&&_0x5223a6[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x958048=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x958048['forEach']((_0x5252fd,_0x2b42f1)=>{_0x5252fd['classList']['toggle']('keyboard-selected',_0x2b42f1===this['selectedIndex']);});}async['loadAndShow'](_0x2081ef){this['showLoading']();try{const _0x55354d=await this['options']['loadItems'](_0x2081ef);if(this['options']['searchMode']==='server'){let _0x1ccd76=_0x55354d;this['options']['sortItems']&&(_0x1ccd76=this['options']['sortItems']([..._0x55354d]));this['filteredItems']=_0x1ccd76;const _0x14f0e0=this['filteredItems']['length']>=this['options']['maxItems'];_0x14f0e0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x14f0e0),this['open']();}else this['allItems']=_0x55354d,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2081ef);}catch(_0x50de8e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x50de8e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x269825){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x269825):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x3dcfb1=this['filteredItems']['length']>=this['options']['maxItems'];_0x3dcfb1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3dcfb1),this['open']();}['renderItems'](_0x68e085){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']((_0x4ec396,_0x1b9803)=>{const _0x25c094=document['createElement']('div');_0x25c094['className']='autocomplete-select-item',_0x25c094['setAttribute']('role','option'),_0x25c094['setAttribute']('data-index',_0x1b9803);const _0x151d4c=this['options']['renderItem'](_0x4ec396);let _0x1c8af3='';_0x151d4c['icon']&&(_0x1c8af3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x151d4c['iconClass']||'')+'\x22>'+_0x151d4c['icon']+'</span>'),_0x25c094['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c8af3+'\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'](_0x151d4c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x151d4c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x151d4c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x25c094['addEventListener']('click',()=>{this['selectItem'](_0x4ec396);}),_0x25c094['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1b9803,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x25c094);}),_0x68e085?(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'](_0x109c54){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x109c54)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3249ab){this['selectedItem']=_0x3249ab;const _0x4ba656=this['options']['renderItem'](_0x3249ab);this['input']['value']=_0x4ba656['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3249ab);}['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'](_0x417fc6){if(_0x417fc6){this['selectedItem']=_0x417fc6;const _0x34afc=this['options']['renderItem'](_0x417fc6);this['input']['value']=_0x34afc['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x274337){this['allItems']=_0x274337,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'](_0x21859e){this['input']['placeholder']=_0x21859e;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x568946=null){const _0x5b860f=document['getElementById']('admin-menu-container'),_0x347e62=document['getElementById']('admin-menu-btn'),_0xdbed08=document['getElementById']('admin-menu');if(!_0x5b860f||!_0x347e62||!_0xdbed08)return;try{!_0x568946&&(_0x568946=await API['getCurrentUser']());if(_0x568946){const _0x27050c=window['Permissions'],_0x588bcd=_0x27050c['hasServerPermission'](_0x568946,'*')||_0x27050c['hasEnvPermission'](_0x568946,'environments:manage')||_0x27050c['hasServerPermission'](_0x568946,'users:create')||_0x27050c['hasTeamPermission'](_0x568946,'teams:manage')||_0x27050c['hasEnvPermission'](_0x568946,'environments:view_details');if(!_0x588bcd)return;_0x5b860f['hidden']=![];if(!_0x27050c['hasServerPermission'](_0x568946,'*')){const _0x8f290b=_0xdbed08['querySelectorAll']('.admin-menu-item');_0x8f290b['forEach'](_0x44d1a1=>{const _0x29135d=_0x44d1a1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x29135d==='Users'&&!_0x27050c['hasServerPermission'](_0x568946,'users:create')&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Skills'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Settings'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Health'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Git\x20History'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Roles'&&(_0x44d1a1['hidden']=!![]);});}_0x347e62['addEventListener']('click',_0x5bc390=>{_0x5bc390['stopPropagation']();const _0x14d691=document['getElementById']('actions-menu');if(_0x14d691)_0x14d691['hidden']=!![];_0xdbed08['hidden']=!_0xdbed08['hidden'];}),document['addEventListener']('click',_0x5ed598=>{!_0xdbed08['hidden']&&!_0x347e62['contains'](_0x5ed598['target'])&&!_0xdbed08['contains'](_0x5ed598['target'])&&(_0xdbed08['hidden']=!![]);}),document['addEventListener']('keydown',_0x4e0fe2=>{_0x4e0fe2['key']==='Escape'&&!_0xdbed08['hidden']&&(_0xdbed08['hidden']=!![]);});const _0x47ca3d=document['getElementById']('server-health-btn');_0x47ca3d&&_0x47ca3d['addEventListener']('click',async()=>{_0xdbed08['hidden']=!![];const {openServerHealthModal:_0x3de4ad}=await import('./server-health.js');_0x3de4ad();});}}catch(_0x2c9149){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2c9149['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 _0x4fe770=window['location']['pathname'],_0x3b101e=_0x4fe770['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3b101e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3b101e[0x1]),_0x3b101e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1d181b={}){const _0x2d1a19=new URLSearchParams();_0x1d181b['userId']&&_0x2d1a19['set']('userId',String(_0x1d181b['userId']));_0x1d181b['automation']&&_0x2d1a19['set']('automation',String(_0x1d181b['automation']));const _0x412f1c=API_BASE+'/tasks/stats'+(_0x2d1a19['toString']()?'?'+_0x2d1a19['toString']():''),_0x11cc2e=await fetch(_0x412f1c);if(!_0x11cc2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x11cc2e['statusText']);return await _0x11cc2e['json']();},async 'getTasks'(_0x2707a5={}){const _0x3c2eb4=new URLSearchParams();_0x2707a5['status']&&_0x3c2eb4['set']('status',String(_0x2707a5['status']));_0x2707a5['environment']&&_0x3c2eb4['set']('environment',String(_0x2707a5['environment']));_0x2707a5['automation']&&_0x3c2eb4['set']('automation',String(_0x2707a5['automation']));if(_0x2707a5['include']){const _0x5f2104=Array['isArray'](_0x2707a5['include'])?_0x2707a5['include']['join'](','):String(_0x2707a5['include']);_0x5f2104&&_0x3c2eb4['set']('include',_0x5f2104);}_0x2707a5['filter']&&_0x3c2eb4['set']('filter',String(_0x2707a5['filter']));_0x2707a5['page']&&_0x3c2eb4['set']('page',String(_0x2707a5['page']));_0x2707a5['limit']&&_0x3c2eb4['set']('limit',String(_0x2707a5['limit']));_0x2707a5['userId']&&_0x3c2eb4['set']('userId',String(_0x2707a5['userId']));_0x2707a5['search']&&_0x3c2eb4['set']('search',String(_0x2707a5['search']));_0x2707a5['includeChildTasks']&&_0x3c2eb4['set']('includeChildTasks','true');const _0x41aeb8=API_BASE+'/tasks'+(_0x3c2eb4['toString']()?'?'+_0x3c2eb4['toString']():''),_0x14e538=await fetch(_0x41aeb8);if(!_0x14e538['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x14e538['statusText']);return await _0x14e538['json']();},async 'getAutomations'(_0x3e607b={}){const _0x264b21=new URLSearchParams();_0x3e607b['environment']&&_0x264b21['set']('environment',String(_0x3e607b['environment']));const _0x38f2e0=await fetch(API_BASE+'/api/automations'+(_0x264b21['toString']()?'?'+_0x264b21['toString']():''));if(!_0x38f2e0['ok']){const _0x1d4f55=await _0x38f2e0['json']()['catch'](()=>({}));throw new Error(_0x1d4f55['message']||_0x1d4f55['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x38f2e0['statusText']);}return await _0x38f2e0['json']();},async 'getAutomation'(_0x4b429f){const _0x2221f2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4b429f));if(!_0x2221f2['ok']){const _0x4e9157=await _0x2221f2['json']()['catch'](()=>({}));throw new Error(_0x4e9157['message']||_0x4e9157['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2221f2['statusText']);}return await _0x2221f2['json']();},async 'createAutomation'(_0x4fd69e){const _0x36403b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd69e||{})});if(!_0x36403b['ok']){const _0x192a20=await _0x36403b['json']()['catch'](()=>({}));throw new Error(_0x192a20['message']||_0x192a20['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x36403b['statusText']);}return await _0x36403b['json']();},async 'updateAutomation'(_0x22f5a5,_0x19d4fe){const _0xb104c4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22f5a5),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d4fe||{})});if(!_0xb104c4['ok']){const _0x6e0d63=await _0xb104c4['json']()['catch'](()=>({}));throw new Error(_0x6e0d63['message']||_0x6e0d63['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xb104c4['statusText']);}return await _0xb104c4['json']();},async 'deleteAutomation'(_0xf1d970){const _0x4881c5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf1d970),{'method':'DELETE'});if(!_0x4881c5['ok']){const _0x2ccdfa=await _0x4881c5['json']()['catch'](()=>({}));throw new Error(_0x2ccdfa['message']||_0x2ccdfa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4881c5['statusText']);}return await _0x4881c5['json']();},async 'triggerAutomation'(_0x1dd83b){const _0x369ceb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1dd83b)+'/trigger',{'method':'POST'});if(!_0x369ceb['ok']){const _0x21717b=await _0x369ceb['json']()['catch'](()=>({}));throw new Error(_0x21717b['message']||_0x21717b['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x369ceb['statusText']);}return await _0x369ceb['json']();},async 'setAutomationEnabled'(_0x5c800d,_0x54038a){const _0x5ea481=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c800d)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x54038a})});if(!_0x5ea481['ok']){const _0x25c9c7=await _0x5ea481['json']()['catch'](()=>({}));throw new Error(_0x25c9c7['message']||_0x25c9c7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x5ea481['statusText']);}return await _0x5ea481['json']();},async 'getAutomationHistory'(_0x439264,_0x45aafe=0x32){const _0x289510=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x439264)+'/history?limit='+encodeURIComponent(String(_0x45aafe)));if(!_0x289510['ok']){const _0xdda5d=await _0x289510['json']()['catch'](()=>({}));throw new Error(_0xdda5d['message']||_0xdda5d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x289510['statusText']);}return await _0x289510['json']();},async 'getTask'(_0x489865,_0x2fa525={}){const _0x2a7070=new URLSearchParams();if(_0x2fa525['include']){const _0x5000e8=Array['isArray'](_0x2fa525['include'])?_0x2fa525['include']['join'](','):String(_0x2fa525['include']);if(_0x5000e8)_0x2a7070['set']('include',_0x5000e8);}const _0x19a00f=await fetch(API_BASE+'/tasks/'+_0x489865+(_0x2a7070['toString']()?'?'+_0x2a7070['toString']():''));if(!_0x19a00f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x19a00f['statusText']);return await _0x19a00f['json']();},async 'getTaskResults'(_0xa29c37){const _0x551de2=await fetch(API_BASE+'/tasks/'+_0xa29c37+'/results');if(!_0x551de2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x551de2['statusText']);return await _0x551de2['json']();},async 'getTaskPatches'(_0x7c9f86){const _0x306b8d=await fetch(API_BASE+'/tasks/'+_0x7c9f86+'/patches');if(!_0x306b8d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x306b8d['statusText']);return await _0x306b8d['json']();},async 'getTaskAttachments'(_0x19a961){const _0x54691d=await fetch(API_BASE+'/tasks/'+_0x19a961+'/attachments');if(!_0x54691d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x54691d['statusText']);return await _0x54691d['json']();},async 'uploadAttachments'(_0x36cbc5,_0x45e985){const _0x578404=new FormData();for(const _0x463651 of _0x45e985){_0x578404['append']('attachments',_0x463651);}const _0x7ba045=await fetch(API_BASE+'/tasks/'+_0x36cbc5+'/attachments',{'method':'POST','body':_0x578404});if(!_0x7ba045['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x7ba045['statusText']);return await _0x7ba045['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3efa2f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3efa2f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3efa2f['json']();}catch(_0x4fde84){return{'available':![],'reason':_0x4fde84['message']};}},async 'generateTaskName'(_0x358e0e){try{const _0x41d21b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x358e0e})});return await _0x41d21b['json']();}catch(_0x5e34fb){return{'success':![],'error':_0x5e34fb['message']};}},async 'createTask'(_0x18cd3f){let _0xa8bfc,_0x35a53b={};if(_0x18cd3f['files']&&_0x18cd3f['files']['length']>0x0){const _0x122a92=new FormData();for(const [_0x12edc5,_0x347c80]of Object['entries'](_0x18cd3f)){if(_0x12edc5!=='files'){if(_0x347c80==null)continue;typeof _0x347c80==='object'?_0x122a92['append'](_0x12edc5,JSON['stringify'](_0x347c80)):_0x122a92['append'](_0x12edc5,String(_0x347c80));}}for(const _0x26c77d of _0x18cd3f['files']){_0x122a92['append']('attachments',_0x26c77d);}_0xa8bfc=_0x122a92;}else _0x35a53b['Content-Type']='application/json',_0xa8bfc=JSON['stringify'](_0x18cd3f);const _0x213d54=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x35a53b,'body':_0xa8bfc});if(!_0x213d54['ok']){const _0x5b104f=await _0x213d54['json'](),_0x27a3b7=new Error(_0x5b104f['error']||'Failed\x20to\x20create\x20task:\x20'+_0x213d54['statusText']),{message:_0x2c4355,..._0x316d56}=_0x5b104f;Object['assign'](_0x27a3b7,_0x316d56);throw _0x27a3b7;}return await _0x213d54['json']();},async 'createTestTask'(_0x3b5a17){const _0x184d8d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b5a17)});if(!_0x184d8d['ok']){const _0x1b8603=await _0x184d8d['json']();throw new Error(_0x1b8603['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x184d8d['statusText']);}return await _0x184d8d['json']();},async 'createEphemeralTest'(_0x523fcb){const _0x2290d6=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x523fcb)});if(!_0x2290d6['ok']){const _0x1556b6=await _0x2290d6['json']();throw new Error(_0x1556b6['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2290d6['statusText']);}return await _0x2290d6['json']();},async 'createDeployTask'(_0x41d36b){const _0x4f3801=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41d36b)});if(!_0x4f3801['ok']){const _0x109dce=await _0x4f3801['json']();throw new Error(_0x109dce['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4f3801['statusText']);}return await _0x4f3801['json']();},async 'getEnvironments'(){const _0xd36410=await fetch(API_BASE+'/environments');if(!_0xd36410['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd36410['statusText']);return await _0xd36410['json']();},async 'getEnvironment'(_0x14e7d5){const _0x4da938=await fetch(API_BASE+'/environments/'+_0x14e7d5);if(!_0x4da938['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4da938['statusText']);return await _0x4da938['json']();},async 'getEnvironmentRepoHistory'(_0x15eb80,_0x38a8fc,_0x293816={}){if(!_0x15eb80||!_0x38a8fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x41da89=new URLSearchParams();if(_0x293816['limit'])_0x41da89['set']('limit',String(_0x293816['limit']));if(_0x293816['offset'])_0x41da89['set']('offset',String(_0x293816['offset']));if(_0x293816['search'])_0x41da89['set']('search',String(_0x293816['search']));if(_0x293816['branch'])_0x41da89['set']('branch',String(_0x293816['branch']));const _0x4133e3=API_BASE+'/environments/'+encodeURIComponent(_0x15eb80)+'/repos/'+encodeURIComponent(_0x38a8fc)+'/git/history',_0x3e6ac8=await fetch(''+_0x4133e3+(_0x41da89['toString']()?'?'+_0x41da89['toString']():''));if(!_0x3e6ac8['ok']){const _0x3e0a68=await _0x3e6ac8['json']()['catch'](()=>({}));throw new Error(_0x3e0a68['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e6ac8['statusText']);}return await _0x3e6ac8['json']();},async 'getEnvironmentRepoCommit'(_0x1c627f,_0xc90db2,_0x52dd59){if(!_0x1c627f||!_0xc90db2||!_0x52dd59)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1ea94f=API_BASE+'/environments/'+encodeURIComponent(_0x1c627f)+'/repos/'+encodeURIComponent(_0xc90db2)+'/git/commits/'+encodeURIComponent(_0x52dd59),_0x5299df=await fetch(_0x1ea94f);if(!_0x5299df['ok']){const _0x1b0a89=await _0x5299df['json']()['catch'](()=>({}));throw new Error(_0x1b0a89['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5299df['statusText']);}return await _0x5299df['json']();},async 'getEnvironmentRepoBranches'(_0xd9158,_0x53c363){if(!_0xd9158||!_0x53c363)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3f2343=API_BASE+'/environments/'+encodeURIComponent(_0xd9158)+'/repos/'+encodeURIComponent(_0x53c363)+'/git/branches',_0x2b8139=await fetch(_0x3f2343);if(!_0x2b8139['ok']){const _0x40c8b3=await _0x2b8139['json']()['catch'](()=>({}));throw new Error(_0x40c8b3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2b8139['statusText']);}return await _0x2b8139['json']();},async 'revertEnvironmentRepoCommit'(_0x8447a,_0x27d150,_0x1af147,_0x3a98a1={}){if(!_0x8447a||!_0x27d150||!_0x1af147)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1dc5ff=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x8447a)+'/repos/'+encodeURIComponent(_0x27d150)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1af147,..._0x3a98a1})});if(!_0x1dc5ff['ok']){const _0x1d097f=await _0x1dc5ff['json']()['catch'](()=>({}));throw new Error(_0x1d097f['message']||_0x1d097f['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1dc5ff['statusText']);}return await _0x1dc5ff['json']();},async 'getTemplates'(_0x1f94c={}){const _0x3f3f03=new URLSearchParams();if(_0x1f94c['include']){const _0x57e1bf=Array['isArray'](_0x1f94c['include'])?_0x1f94c['include']['join'](','):String(_0x1f94c['include']);if(_0x57e1bf)_0x3f3f03['set']('include',_0x57e1bf);}const _0x3d57d9=await fetch(API_BASE+'/templates'+(_0x3f3f03['toString']()?'?'+_0x3f3f03['toString']():''));if(!_0x3d57d9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d57d9['statusText']);return await _0x3d57d9['json']();},async 'getTemplatesForEnvironment'(_0x2226a7,_0x1edce5={}){if(!_0x2226a7)throw new Error('Environment\x20name\x20is\x20required');const _0x367b8d=new URLSearchParams();if(_0x1edce5['include']){const _0x39413f=Array['isArray'](_0x1edce5['include'])?_0x1edce5['include']['join'](','):String(_0x1edce5['include']);if(_0x39413f)_0x367b8d['set']('include',_0x39413f);}const _0x559fcd=await fetch(API_BASE+'/templates/'+_0x2226a7+(_0x367b8d['toString']()?'?'+_0x367b8d['toString']():''));if(!_0x559fcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x2226a7+':\x20'+_0x559fcd['statusText']);return await _0x559fcd['json']();},async 'getTemplate'(_0xb05df8,_0x40378d,_0x397614={}){if(!_0xb05df8||!_0x40378d)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x50693a=new URLSearchParams();if(_0x397614['include']){const _0x4b21d2=Array['isArray'](_0x397614['include'])?_0x397614['include']['join'](','):String(_0x397614['include']);if(_0x4b21d2)_0x50693a['set']('include',_0x4b21d2);}const _0x210388=await fetch(API_BASE+'/templates/'+_0xb05df8+'/'+_0x40378d+(_0x50693a['toString']()?'?'+_0x50693a['toString']():''));if(!_0x210388['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x210388['statusText']);return await _0x210388['json']();},async 'getTaskLogs'(_0x243639,_0x210002={}){if(!_0x243639)throw new Error('Task\x20ID\x20is\x20required');const _0x4542d8=new URLSearchParams();_0x210002['tail']&&_0x4542d8['set']('tail',String(_0x210002['tail']));const _0x24fb9b=await fetch(API_BASE+'/tasks/'+_0x243639+'/logs'+(_0x4542d8['toString']()?'?'+_0x4542d8['toString']():''));if(!_0x24fb9b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x24fb9b['statusText']);return await _0x24fb9b['text']();},async 'getContainers'(){const _0x5e7a7e=await fetch(API_BASE+'/containers');if(!_0x5e7a7e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e7a7e['statusText']);return await _0x5e7a7e['json']();},async 'getContainer'(_0x3fa82b){const _0x41ba7a=await fetch(API_BASE+'/containers/'+_0x3fa82b);if(!_0x41ba7a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x41ba7a['statusText']);return await _0x41ba7a['json']();},async 'startInteractiveContainer'(_0x19fdb5){const _0x5b86ce=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19fdb5)});if(!_0x5b86ce['ok']){const _0x50266d=await _0x5b86ce['json']()['catch'](()=>({}));throw new Error(_0x50266d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x5b86ce['statusText']);}return await _0x5b86ce['json']();},async 'stopContainer'(_0x10b994){const _0x42f516=await fetch(API_BASE+'/containers/'+_0x10b994,{'method':'DELETE'});if(!_0x42f516['ok']){const _0x10cb07=await _0x42f516['json']()['catch'](()=>({}));throw new Error(_0x10cb07['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x42f516['statusText']);}return await _0x42f516['json']();},async 'stopTask'(_0x522b02){if(!_0x522b02)throw new Error('Task\x20ID\x20is\x20required');const _0x1dd206=await fetch(API_BASE+'/tasks/'+_0x522b02+'/stop',{'method':'POST'});if(!_0x1dd206['ok']){const _0x408260=await _0x1dd206['json']()['catch'](()=>({}));throw new Error(_0x408260['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1dd206['statusText']);}return await _0x1dd206['json']();},async 'interruptTask'(_0x3f0697){if(!_0x3f0697)throw new Error('Task\x20ID\x20is\x20required');const _0x558686=await fetch(API_BASE+'/tasks/'+_0x3f0697+'/interrupt',{'method':'POST'});if(!_0x558686['ok']){const _0x49be3c=await _0x558686['json']()['catch'](()=>({}));throw new Error(_0x49be3c['error']||_0x49be3c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x558686['statusText']);}return await _0x558686['json']();},async 'startTask'(_0x5509b7){if(!_0x5509b7)throw new Error('Task\x20ID\x20is\x20required');const _0x217614=await fetch(API_BASE+'/tasks/'+_0x5509b7+'/start',{'method':'POST'});if(!_0x217614['ok']){const _0x3ea34a=await _0x217614['json']()['catch'](()=>({}));throw new Error(_0x3ea34a['error']||'Failed\x20to\x20start\x20task:\x20'+_0x217614['statusText']);}return await _0x217614['json']();},async 'deleteTask'(_0x2c014c){if(!_0x2c014c)throw new Error('Task\x20ID\x20is\x20required');const _0x92718a=await fetch(API_BASE+'/tasks/'+_0x2c014c,{'method':'DELETE'});if(!_0x92718a['ok']){const _0x24f7f0=await _0x92718a['json']()['catch'](()=>({}));throw new Error(_0x24f7f0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x92718a['statusText']);}return await _0x92718a['json']();},async 'refreshTasksFromDisk'(){const _0x57c805=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x57c805['ok']){const _0x44d1ac=await _0x57c805['json']()['catch'](()=>({}));throw new Error(_0x44d1ac['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x57c805['statusText']);}return await _0x57c805['json']();},async 'approveTask'(_0x4a0b91,_0x434d10={}){if(!_0x4a0b91)throw new Error('Task\x20ID\x20is\x20required');const _0x2676e8={'commit_message':_0x434d10['commit_message']||'','pull':_0x434d10['pull']??![],'push':_0x434d10['push']??![]};_0x434d10['new_branch']&&(_0x2676e8['new_branch']=_0x434d10['new_branch']);const _0x175656=await fetch(API_BASE+'/tasks/'+_0x4a0b91+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2676e8)});if(!_0x175656['ok']){const _0x34fe26=await _0x175656['json']()['catch'](()=>({}));let _0x402f12=_0x34fe26['error']||_0x34fe26['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x175656['statusText'];if(_0x34fe26['results']&&Array['isArray'](_0x34fe26['results'])){const _0x4949ad=_0x34fe26['results']['filter'](_0x25fea4=>!_0x25fea4['success']&&_0x25fea4['error']);_0x4949ad['length']>0x0&&(_0x402f12=_0x4949ad[0x0]['error']);}throw new Error(_0x402f12);}return await _0x175656['json']();},async 'getPullRequestInfo'(_0x2352bf){if(!_0x2352bf)throw new Error('Task\x20ID\x20is\x20required');const _0x3a6c35=await fetch(API_BASE+'/tasks/'+_0x2352bf+'/pull-request-info');if(!_0x3a6c35['ok']){const _0x3495a8=await _0x3a6c35['json']()['catch'](()=>({}));throw new Error(_0x3495a8['error']||_0x3495a8['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3a6c35['statusText']);}return await _0x3a6c35['json']();},async 'createPullRequests'(_0x199c03,_0x37e30c){if(!_0x199c03)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37e30c||!Array['isArray'](_0x37e30c))throw new Error('repos\x20array\x20is\x20required');const _0x57819b=await fetch(API_BASE+'/tasks/'+_0x199c03+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37e30c})});if(!_0x57819b['ok']){const _0x411d54=await _0x57819b['json']()['catch'](()=>({}));let _0x17fde0=_0x411d54['error']||_0x411d54['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x57819b['statusText'];if(_0x411d54['results']&&Array['isArray'](_0x411d54['results'])){const _0x184575=_0x411d54['results']['filter'](_0x26e0a7=>!_0x26e0a7['success']&&_0x26e0a7['error']);_0x184575['length']>0x0&&(_0x17fde0=_0x184575[0x0]['error']);}throw new Error(_0x17fde0);}return await _0x57819b['json']();},async 'syncRepos'(_0x428198){if(!_0x428198)throw new Error('Task\x20ID\x20is\x20required');const _0x9aca6a=await fetch(API_BASE+'/tasks/'+_0x428198+'/sync-repos',{'method':'POST'});if(!_0x9aca6a['ok']){const _0x2a63ef=await _0x9aca6a['json']()['catch'](()=>({}));throw new Error(_0x2a63ef['error']||_0x2a63ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9aca6a['statusText']);}return await _0x9aca6a['json']();},async 'getIbmiSyncInfo'(_0x370f49){if(!_0x370f49)throw new Error('Task\x20ID\x20is\x20required');const _0x451e77=await fetch(API_BASE+'/tasks/'+_0x370f49+'/ibmi-sync-info');if(!_0x451e77['ok']){const _0x42ac5f=await _0x451e77['json']()['catch'](()=>({}));throw new Error(_0x42ac5f['error']||_0x42ac5f['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x451e77['json']();},async 'getSyncFiles'(_0x443ea0){if(!_0x443ea0)throw new Error('Task\x20ID\x20is\x20required');const _0x23ea8c=await fetch(API_BASE+'/tasks/'+_0x443ea0+'/sync-to-ibmi/files');if(!_0x23ea8c['ok']){const _0x54f715=await _0x23ea8c['json']()['catch'](()=>({}));throw new Error(_0x54f715['error']||_0x54f715['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x23ea8c['json']();},async 'syncToIbmi'(_0x585979,_0x4b09a2,_0x4495c0=null,_0x2df63d=null,_0x787820=null){if(!_0x585979)throw new Error('Task\x20ID\x20is\x20required');const _0x5ba663={'library':_0x4b09a2};if(_0x4495c0)_0x5ba663['user']=_0x4495c0;if(_0x2df63d)_0x5ba663['password']=_0x2df63d;if(_0x787820)_0x5ba663['files']=_0x787820;const _0x32a0fb=await fetch(API_BASE+'/tasks/'+_0x585979+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ba663)});if(!_0x32a0fb['ok']){const _0x8c1942=await _0x32a0fb['json']()['catch'](()=>({}));throw new Error(_0x8c1942['error']||_0x8c1942['message']||'Sync\x20failed');}return await _0x32a0fb['json']();},async 'getIbmiSyncLog'(_0x43c194){if(!_0x43c194)throw new Error('Task\x20ID\x20is\x20required');const _0x20cf95=await fetch(API_BASE+'/tasks/'+_0x43c194+'/ibmi-sync-log');if(!_0x20cf95['ok']){const _0x2ead0b=await _0x20cf95['json']()['catch'](()=>({}));throw new Error(_0x2ead0b['error']||_0x2ead0b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20cf95['json']();},async 'pullChanges'(_0x30eb6a){if(!_0x30eb6a)throw new Error('Task\x20ID\x20is\x20required');const _0x4d397f=await fetch(API_BASE+'/tasks/'+_0x30eb6a+'/pull-changes',{'method':'POST'});if(!_0x4d397f['ok']){const _0x560c4e=await _0x4d397f['json']()['catch'](()=>({}));throw new Error(_0x560c4e['error']||_0x560c4e['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4d397f['statusText']);}return await _0x4d397f['json']();},async 'readFile'(_0x1342f5,_0x5d48c8){if(!_0x1342f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d48c8)throw new Error('File\x20path\x20is\x20required');const _0x41ec4c=await fetch(API_BASE+'/tasks/'+_0x1342f5+'/files?path='+encodeURIComponent(_0x5d48c8));if(!_0x41ec4c['ok']){const _0x2f060f=await _0x41ec4c['json']()['catch'](()=>({}));throw new Error(_0x2f060f['error']||_0x2f060f['message']||'Failed\x20to\x20read\x20file:\x20'+_0x41ec4c['statusText']);}return await _0x41ec4c['json']();},'getTaskFileDownloadUrl'(_0x2a3f50,_0x1a6b81){if(!_0x2a3f50)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a6b81)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2a3f50+'/files/download?path='+encodeURIComponent(_0x1a6b81);},async 'writeFile'(_0x1a4b52,_0x3a41f6,_0x1b699a){if(!_0x1a4b52)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a41f6)throw new Error('File\x20path\x20is\x20required');if(_0x1b699a===undefined)throw new Error('Content\x20is\x20required');const _0x17f007=await fetch(API_BASE+'/tasks/'+_0x1a4b52+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a41f6,'content':_0x1b699a})});if(!_0x17f007['ok']){const _0x3f2c69=await _0x17f007['json']()['catch'](()=>({}));throw new Error(_0x3f2c69['error']||_0x3f2c69['message']||'Failed\x20to\x20write\x20file:\x20'+_0x17f007['statusText']);}return await _0x17f007['json']();},async 'uploadTaskFiles'(_0x52c58b,_0x5d000a,_0x234f7a){if(!_0x52c58b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d000a)throw new Error('Target\x20directory\x20is\x20required');if(!_0x234f7a||_0x234f7a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x56849f=new FormData();_0x56849f['append']('targetDir',_0x5d000a);for(const _0x556ffe of _0x234f7a){_0x56849f['append']('files',_0x556ffe,_0x556ffe['name']);}const _0x3c9aa2=await fetch(API_BASE+'/tasks/'+_0x52c58b+'/files/upload',{'method':'POST','body':_0x56849f});if(!_0x3c9aa2['ok']){const _0x3dc29e=await _0x3c9aa2['json']()['catch'](()=>({}));throw new Error(_0x3dc29e['error']||_0x3dc29e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x3c9aa2['statusText']);}return await _0x3c9aa2['json']();},async 'deleteFile'(_0x13bd0d,_0x2043e2){if(!_0x13bd0d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2043e2)throw new Error('File\x20path\x20is\x20required');const _0x335da6=await fetch(API_BASE+'/tasks/'+_0x13bd0d+'/files?path='+encodeURIComponent(_0x2043e2),{'method':'DELETE'});if(!_0x335da6['ok']){const _0x476bbe=await _0x335da6['json']()['catch'](()=>({}));throw new Error(_0x476bbe['error']||_0x476bbe['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x335da6['statusText']);}return await _0x335da6['json']();},async 'discardFile'(_0x4a0381,_0x2005f6,_0x49d17c){if(!_0x4a0381)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2005f6)throw new Error('File\x20path\x20is\x20required');if(!_0x49d17c)throw new Error('Repository\x20path\x20is\x20required');const _0x2aa913=await fetch(API_BASE+'/tasks/'+_0x4a0381+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2005f6,'repoPath':_0x49d17c})});if(!_0x2aa913['ok']){const _0x12dd8c=await _0x2aa913['json']()['catch'](()=>({}));throw new Error(_0x12dd8c['error']||_0x12dd8c['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2aa913['statusText']);}return await _0x2aa913['json']();},async 'followUpTask'(_0x12bcf5,_0x50dc8a={}){if(!_0x12bcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50dc8a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x537e66,_0x37b354={};if(_0x50dc8a['files']&&_0x50dc8a['files']['length']>0x0){const _0x2a0bef=new FormData();_0x2a0bef['append']('instructions',_0x50dc8a['instructions']);for(const _0x5962de of _0x50dc8a['files']){_0x2a0bef['append']('attachments',_0x5962de);}_0x537e66=_0x2a0bef;}else _0x37b354['Content-Type']='application/json',_0x537e66=JSON['stringify']({'instructions':_0x50dc8a['instructions']});const _0x9a48a0=await fetch(API_BASE+'/tasks/'+_0x12bcf5+'/follow-up',{'method':'POST','headers':_0x37b354,'body':_0x537e66});if(!_0x9a48a0['ok']){const _0x52a9f5=await _0x9a48a0['json']()['catch'](()=>({}));throw new Error(_0x52a9f5['error']||_0x52a9f5['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x9a48a0['statusText']);}return await _0x9a48a0['json']();},async 'getTaskRewindPoints'(_0x47aee8){if(!_0x47aee8)throw new Error('Task\x20ID\x20is\x20required');const _0x46a73b=await fetch(API_BASE+'/tasks/'+_0x47aee8+'/rewind-points');if(!_0x46a73b['ok']){const _0x4fd940=await _0x46a73b['json']()['catch'](()=>({}));throw new Error(_0x4fd940['error']||_0x4fd940['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x46a73b['statusText']);}return await _0x46a73b['json']();},async 'rewindTask'(_0x44bd4e,_0x3072de={}){if(!_0x44bd4e)throw new Error('Task\x20ID\x20is\x20required');const _0x24d05b=Number['isInteger'](_0x3072de['targetFollowUpCount'])?_0x3072de['targetFollowUpCount']:0x0,_0x252b2d={'targetFollowUpCount':_0x24d05b};typeof _0x3072de['instructions']==='string'&&_0x3072de['instructions']['trim']()&&(_0x252b2d['instructions']=_0x3072de['instructions']['trim']());typeof _0x3072de['rewindFiles']==='boolean'&&(_0x252b2d['rewindFiles']=_0x3072de['rewindFiles']);const _0x30f2ea=await fetch(API_BASE+'/tasks/'+_0x44bd4e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x252b2d)});if(!_0x30f2ea['ok']){const _0x3151ce=await _0x30f2ea['json']()['catch'](()=>({}));throw new Error(_0x3151ce['error']||_0x3151ce['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x30f2ea['statusText']);}return await _0x30f2ea['json']();},async 'login'(_0x208c81,_0x2ef321){const _0x4edf0e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x208c81,'password':_0x2ef321})});if(!_0x4edf0e['ok']){const _0x2295b2=await _0x4edf0e['json']();throw new Error(_0x2295b2['message']||'Login\x20failed');}return await _0x4edf0e['json']();},async 'logout'(){const _0x5d3748=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5d3748['ok']){const _0x15dcd0=await _0x5d3748['json']();throw new Error(_0x15dcd0['message']||'Logout\x20failed');}return await _0x5d3748['json']();},async 'getCurrentUser'(){const _0x781d21=await fetch(API_BASE+'/auth/me');if(!_0x781d21['ok'])throw new Error('Not\x20authenticated');const _0x4683ff=await _0x781d21['json']();return _0x4683ff['user'];},async 'getRolesInfo'(){const _0x2edaf4=await fetch(API_BASE+'/users/roles');if(!_0x2edaf4['ok']){const _0x2415b0=await _0x2edaf4['json']();throw new Error(_0x2415b0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2edaf4['json']();},async 'getUsers'(){const _0x1749fb=await fetch(API_BASE+'/users');if(!_0x1749fb['ok']){const _0x1dff47=await _0x1749fb['json']();throw new Error(_0x1dff47['message']||'Failed\x20to\x20get\x20users');}return await _0x1749fb['json']();},async 'getUser'(_0x4a73ba){const _0x8ce92e=await fetch(API_BASE+'/users/'+_0x4a73ba);if(!_0x8ce92e['ok']){const _0x475ebe=await _0x8ce92e['json']();throw new Error(_0x475ebe['message']||'Failed\x20to\x20get\x20user');}return await _0x8ce92e['json']();},async 'createUser'(_0x296328){const _0x4f6c48=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x296328)});if(!_0x4f6c48['ok']){const _0x3fc6cd=await _0x4f6c48['json']();throw new Error(_0x3fc6cd['message']||'Failed\x20to\x20create\x20user');}return await _0x4f6c48['json']();},async 'updateUser'(_0x441af6,_0x2d3acd){const _0x3e585b=await fetch(API_BASE+'/users/'+_0x441af6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3acd)});if(!_0x3e585b['ok']){const _0x757987=await _0x3e585b['json']();throw new Error(_0x757987['message']||'Failed\x20to\x20update\x20user');}return await _0x3e585b['json']();},async 'deleteUser'(_0x393ea1){const _0x5054de=await fetch(API_BASE+'/users/'+_0x393ea1,{'method':'DELETE'});if(!_0x5054de['ok']){const _0x45cc2b=await _0x5054de['json']();throw new Error(_0x45cc2b['message']||'Failed\x20to\x20delete\x20user');}return await _0x5054de['json']();},async 'stopAllContainers'(){const _0x1e270b=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4cfbcf=await _0x1e270b['json']()['catch'](()=>({}));if(!_0x1e270b['ok'])throw new Error(_0x4cfbcf['message']||_0x4cfbcf['error']||'Failed\x20to\x20stop\x20containers');return _0x4cfbcf;},async 'removeStoppedContainers'(){const _0x1b7abe=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1387dd=await _0x1b7abe['json']()['catch'](()=>({}));if(!_0x1b7abe['ok'])throw new Error(_0x1387dd['message']||_0x1387dd['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1387dd;},async 'pruneDockerResources'(){const _0x1f8874=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4b2ddd=await _0x1f8874['json']()['catch'](()=>({}));if(!_0x1f8874['ok'])throw new Error(_0x4b2ddd['message']||_0x4b2ddd['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4b2ddd;},async 'createPasswordToken'(_0x30b9ae,_0x153fe8='setup',_0x17d1e7=![]){const _0x5f20a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x30b9ae,'type':_0x153fe8,'sendEmail':_0x17d1e7})});if(!_0x5f20a8['ok']){const _0x53aea6=await _0x5f20a8['json']();throw new Error(_0x53aea6['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5f20a8['json']();},async 'getEmailConfig'(){const _0x5dfe1b=await fetch(API_BASE+'/password/email-config');if(!_0x5dfe1b['ok']){const _0x3a631e=await _0x5dfe1b['json']();throw new Error(_0x3a631e['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5dfe1b['json']();},async 'updateTaskName'(_0x39d3e3,_0x6492b0){const _0x30a1d9=await fetch(API_BASE+'/tasks/'+_0x39d3e3,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x6492b0})});if(!_0x30a1d9['ok']){const _0x1355e3=await _0x30a1d9['json']();throw new Error(_0x1355e3['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30a1d9['json']();},async 'pinTask'(_0x528b5a,_0x2af4b8,_0x18b135=null){if(!_0x528b5a)throw new Error('Task\x20ID\x20is\x20required');const _0x4e344a={'pinned':_0x2af4b8};_0x18b135&&_0x18b135['length']>0x0&&(_0x4e344a['additionalTaskIds']=_0x18b135);const _0x142324=await fetch(API_BASE+'/tasks/'+_0x528b5a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e344a)});if(!_0x142324['ok']){const _0x3d1ca2=await _0x142324['json']();throw new Error(_0x3d1ca2['error']||'Failed\x20to\x20pin\x20task');}return await _0x142324['json']();},async 'setTaskWinner'(_0x591a3e,_0x83393e,_0x471f30=[]){if(!_0x591a3e)throw new Error('Task\x20ID\x20is\x20required');const _0x3c393a=await fetch(API_BASE+'/tasks/'+_0x591a3e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x83393e,'siblings':_0x471f30})});if(!_0x3c393a['ok']){const _0x9a838d=await _0x3c393a['json']();throw new Error(_0x9a838d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3c393a['json']();},async 'setTaskLoser'(_0x25276f,_0x9e79ed){if(!_0x25276f)throw new Error('Task\x20ID\x20is\x20required');const _0x16ba02=await fetch(API_BASE+'/tasks/'+_0x25276f+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x9e79ed})});if(!_0x16ba02['ok']){const _0x28a04e=await _0x16ba02['json']();throw new Error(_0x28a04e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x16ba02['json']();},async 'createTaskGroup'(_0x7ef07c){const _0x71c4=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ef07c)});if(!_0x71c4['ok']){const _0x1ea09a=await _0x71c4['json']();throw new Error(_0x1ea09a['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x71c4['json']();},async 'getTaskGroups'(_0x5ca62e={}){const _0x349410=new URLSearchParams();if(_0x5ca62e['userId'])_0x349410['set']('userId',String(_0x5ca62e['userId']));if(_0x5ca62e['status'])_0x349410['set']('status',String(_0x5ca62e['status']));if(_0x5ca62e['limit'])_0x349410['set']('limit',String(_0x5ca62e['limit']));const _0x202e64=API_BASE+'/tasks/groups'+(_0x349410['toString']()?'?'+_0x349410['toString']():''),_0x4018aa=await fetch(_0x202e64);if(!_0x4018aa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4018aa['json']();},async 'getTaskGroup'(_0x5b3155){const _0x23e315=await fetch(API_BASE+'/tasks/groups/'+_0x5b3155);if(!_0x23e315['ok']){const _0x47ee29=await _0x23e315['json']();throw new Error(_0x47ee29['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x23e315['json']();},async 'updateTaskGroup'(_0x34ca32,_0x381499,_0x253111){const _0x3812a6=await fetch(API_BASE+'/tasks/'+_0x34ca32+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x381499,'groupIndex':_0x253111})});if(!_0x3812a6['ok']){const _0x20b2f9=await _0x3812a6['json']();throw new Error(_0x20b2f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3812a6['json']();},async 'removeTaskFromGroup'(_0x93409c){return this['updateTaskGroup'](_0x93409c,null,null);},async 'deleteTaskGroup'(_0x2776ed,_0x20670a=![]){const _0x52fc59=_0x20670a?'?deleteTasks=true':'',_0xa695cc=await fetch(API_BASE+'/tasks/groups/'+_0x2776ed+_0x52fc59,{'method':'DELETE'});if(!_0xa695cc['ok']){const _0x3a700c=await _0xa695cc['json']();throw new Error(_0x3a700c['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x409903,_0x3cc98e){const _0x2a3f5c=await fetch(API_BASE+'/tasks/groups/'+_0x409903+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3cc98e})});if(!_0x2a3f5c['ok']){const _0x4f13b4=await _0x2a3f5c['json']();throw new Error(_0x4f13b4['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2a3f5c['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4f98a6){if(!_0x4f98a6)throw new Error('Task\x20ID\x20is\x20required');const _0x50782c=await fetch(API_BASE+'/tasks/'+_0x4f98a6+'/comments');if(!_0x50782c['ok']){const _0x23d420=await _0x50782c['json']()['catch'](()=>({}));throw new Error(_0x23d420['error']||'Failed\x20to\x20get\x20comments');}return await _0x50782c['json']();},async 'addComment'(_0x5e737c,_0xf40e6b){if(!_0x5e737c)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf40e6b)throw new Error('Comment\x20content\x20is\x20required');const _0x4ace8d=await fetch(API_BASE+'/tasks/'+_0x5e737c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xf40e6b})});if(!_0x4ace8d['ok']){const _0x42dff6=await _0x4ace8d['json']()['catch'](()=>({}));throw new Error(_0x42dff6['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ace8d['json']();},async 'updateComment'(_0xf6e90b,_0x38ed08,_0x371ce5){if(!_0xf6e90b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38ed08)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x371ce5)throw new Error('Comment\x20content\x20is\x20required');const _0x5173f3=await fetch(API_BASE+'/tasks/'+_0xf6e90b+'/comments/'+_0x38ed08,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x371ce5})});if(!_0x5173f3['ok']){const _0x48d2a0=await _0x5173f3['json']()['catch'](()=>({}));throw new Error(_0x48d2a0['error']||'Failed\x20to\x20update\x20comment');}return await _0x5173f3['json']();},async 'deleteComment'(_0x288b95,_0x281e04){if(!_0x288b95)throw new Error('Task\x20ID\x20is\x20required');if(!_0x281e04)throw new Error('Comment\x20ID\x20is\x20required');const _0xf72d6b=await fetch(API_BASE+'/tasks/'+_0x288b95+'/comments/'+_0x281e04,{'method':'DELETE'});if(!_0xf72d6b['ok']){const _0x2266a7=await _0xf72d6b['json']()['catch'](()=>({}));throw new Error(_0x2266a7['error']||'Failed\x20to\x20delete\x20comment');}return await _0xf72d6b['json']();},async 'createObjective'(_0x9b5cf3){const _0x3f7650={'objective':!![],'name':_0x9b5cf3['name']||'','environment':_0x9b5cf3['environment']||null,'agents':_0x9b5cf3['agents']||[],'branches':_0x9b5cf3['branches']||{},'isPinned':_0x9b5cf3['isPinned']||![],'parentObjectiveId':_0x9b5cf3['parentObjectiveId']||null,'env_vars':_0x9b5cf3['envVars']||{},'parameters':{'instructions':_0x9b5cf3['instructions']||''},'files':_0x9b5cf3['files']||[],'jira':_0x9b5cf3['jira']||null};return this['createTask'](_0x3f7650);},async 'updateObjective'(_0x3c915a,_0x415b36,_0x5e688e=[],_0x47ad8f=[]){let _0x2ccbcb,_0x29ba56={};const _0x94fc40={..._0x415b36};_0x47ad8f&&_0x47ad8f['length']>0x0&&(_0x94fc40['removeAttachments']=_0x47ad8f);if(_0x5e688e&&_0x5e688e['length']>0x0){const _0x36d9a3=new FormData();for(const [_0x3f5be4,_0xa4ad9d]of Object['entries'](_0x94fc40)){if(_0xa4ad9d==null)continue;typeof _0xa4ad9d==='object'?_0x36d9a3['append'](_0x3f5be4,JSON['stringify'](_0xa4ad9d)):_0x36d9a3['append'](_0x3f5be4,String(_0xa4ad9d));}for(const _0x542b2a of _0x5e688e){_0x36d9a3['append']('attachments',_0x542b2a);}_0x2ccbcb=_0x36d9a3;}else _0x29ba56['Content-Type']='application/json',_0x2ccbcb=JSON['stringify'](_0x94fc40);const _0x285a78=await fetch(API_BASE+'/tasks/'+_0x3c915a,{'method':'PATCH','headers':_0x29ba56,'body':_0x2ccbcb});if(!_0x285a78['ok']){const _0x383580=await _0x285a78['json']();throw new Error(_0x383580['error']||'Failed\x20to\x20update\x20objective');}return await _0x285a78['json']();},async 'deleteObjective'(_0x1117fb){return this['deleteTask'](_0x1117fb);},async 'launchObjective'(_0x5420eb,_0x5095a5={}){const _0x5e434e=await fetch(API_BASE+'/tasks/'+_0x5420eb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5095a5)});if(!_0x5e434e['ok']){const _0x5c08c5=await _0x5e434e['json']();throw new Error(_0x5c08c5['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5e434e['json']();},async 'getObjectiveAttachments'(_0x1c5692){return this['getTaskAttachments'](_0x1c5692);},async 'createJudgeTask'({environment:_0x3ab7e9,judgeAgent:_0x4df753,groupId:_0x24e1c1,taskIds:_0x29e22d,judgeCustomInstructions:_0x31102a,isPinned:_0x11107c}){const _0x30bc2d=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ab7e9,'judgeAgent':_0x4df753,'groupId':_0x24e1c1,'taskIds':_0x29e22d,'judgeCustomInstructions':_0x31102a,'isPinned':_0x11107c})});if(!_0x30bc2d['ok']){const _0x3e5fe9=await _0x30bc2d['json']();throw new Error(_0x3e5fe9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x30bc2d['json']();},async 'getJudgeTasks'(_0x5a08da){const _0x1330c0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5a08da));if(!_0x1330c0['ok']){const _0x3db137=await _0x1330c0['json']();throw new Error(_0x3db137['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1330c0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x267b00,_0x6378de,_0x46ed3a=''){const _0x1edfab=await fetch(API_BASE+'/tasks/'+_0x267b00+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x6378de,'customPreamble':_0x46ed3a})});if(!_0x1edfab['ok']){const _0x1920c1=await _0x1edfab['json']();throw new Error(_0x1920c1['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1edfab['json']();},async 'getJiraConfig'(){const _0x439229=await fetch(API_BASE+'/jira/config');if(!_0x439229['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x439229['json']();},async 'getJiraIssue'(_0x2a79b3){const _0x33e046=await fetch(API_BASE+'/jira/issues/'+_0x2a79b3);if(!_0x33e046['ok']){const _0x3a1781=await _0x33e046['json']()['catch'](()=>({}));throw new Error(_0x3a1781['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x33e046['statusText']);}return await _0x33e046['json']();},async 'searchJiraIssues'(_0x3165fc,_0x9eed8a=0x14){const _0xe49486=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3165fc,'maxResults':_0x9eed8a})});if(!_0xe49486['ok']){const _0x124ffa=await _0xe49486['json']()['catch'](()=>({}));throw new Error(_0x124ffa['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xe49486['statusText']);}return await _0xe49486['json']();},async 'postJiraComment'(_0x15b39c,_0x41c748){const _0x551c24=await fetch(API_BASE+'/jira/issues/'+_0x15b39c+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x41c748})});if(!_0x551c24['ok']){const _0x4def96=await _0x551c24['json']()['catch'](()=>({}));throw new Error(_0x4def96['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x551c24['statusText']);}return await _0x551c24['json']();},async 'getJiraComments'(_0x1b0035){const _0x63ca9=await fetch(API_BASE+'/jira/issues/'+_0x1b0035+'/comments');if(!_0x63ca9['ok']){const _0x36bf44=await _0x63ca9['json']()['catch'](()=>({}));throw new Error(_0x36bf44['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x63ca9['statusText']);}return await _0x63ca9['json']();},async 'promptParameter'({environment:_0x1d0776,command:_0x2b3fea,parser:parser='json'}){const _0x128beb=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1d0776,'command':_0x2b3fea,'parser':parser})});if(!_0x128beb['ok']){const _0xb7fc75=await _0x128beb['json']()['catch'](()=>({}));throw new Error(_0xb7fc75['message']||_0xb7fc75['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x128beb['statusText']);}return await _0x128beb['json']();},async 'promptParameterStream'(_0x19c513,_0x117e1c){const _0x19f05a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19c513)});if(!_0x19f05a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x19f05a['statusText']);const _0x38e7a4=_0x19f05a['body']['getReader'](),_0x3efa00=new TextDecoder();let _0x5869e8='';return new Promise((_0x36c129,_0x4d2cf6)=>{const _0x393eda=async()=>{try{const {done:_0x15eb77,value:_0x17e9bc}=await _0x38e7a4['read']();if(_0x15eb77)return;_0x5869e8+=_0x3efa00['decode'](_0x17e9bc,{'stream':!![]});const _0x490734=_0x5869e8['split']('\x0a\x0a');_0x5869e8=_0x490734['pop']()||'';for(const _0x1bf0cc of _0x490734){if(!_0x1bf0cc['trim']())continue;const _0x1700d9=_0x1bf0cc['split']('\x0a');let _0xd6f3a8='message',_0x496ce7='';for(const _0x10c3fc of _0x1700d9){if(_0x10c3fc['startsWith']('event:'))_0xd6f3a8=_0x10c3fc['substring'](0x6)['trim']();else _0x10c3fc['startsWith']('data:')&&(_0x496ce7=_0x10c3fc['substring'](0x5)['trim']());}if(!_0x496ce7)continue;try{const _0x1fe399=JSON['parse'](_0x496ce7);if(_0xd6f3a8==='progress'&&_0x117e1c)_0x117e1c(_0x1fe399['stage'],_0x1fe399['message']);else{if(_0xd6f3a8==='result'){_0x36c129(_0x1fe399);return;}else{if(_0xd6f3a8==='error'){let _0x3fef84=_0x1fe399['message']||_0x1fe399['error']||'Prompt\x20command\x20failed';_0x1fe399['rawOutput']&&(_0x3fef84+='\x0a\x0aRaw\x20output:\x0a'+_0x1fe399['rawOutput']);_0x4d2cf6(new Error(_0x3fef84));return;}}}}catch(_0x1e2536){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1e2536),console['error']('Event\x20type:',_0xd6f3a8),console['error']('Event\x20data:',_0x496ce7),console['error']('First\x20200\x20chars:',_0x496ce7['substring'](0x0,0xc8)),_0x4d2cf6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1e2536['message']+'\x0a\x0aData:\x20'+_0x496ce7['substring'](0x0,0x1f4)));return;}}_0x393eda();}catch(_0x17ddc3){_0x4d2cf6(_0x17ddc3);}};_0x393eda();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x23ab66){const _0x5127d=await fetch(''+API_BASE+_0x23ab66);if(!_0x5127d['ok']){const _0x58f971=await _0x5127d['json']()['catch'](()=>({'error':_0x5127d['statusText']})),_0x2d14b4=new Error(_0x58f971['error']||_0x58f971['message']||_0x5127d['statusText']);if(_0x58f971['detail']!==undefined)_0x2d14b4['detail']=_0x58f971['detail'];throw _0x2d14b4;}return await _0x5127d['json']();},async 'post'(_0x363b21,_0x572b0d){const _0x167932=await fetch(''+API_BASE+_0x363b21,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572b0d)});if(!_0x167932['ok']){const _0x18a7c6=await _0x167932['json']()['catch'](()=>({'error':_0x167932['statusText']})),_0xf4c2ed=new Error(_0x18a7c6['error']||_0x18a7c6['message']||_0x167932['statusText']);if(_0x18a7c6['detail']!==undefined)_0xf4c2ed['detail']=_0x18a7c6['detail'];throw _0xf4c2ed;}return await _0x167932['json']();},async 'put'(_0x4265b2,_0x2b4c50){const _0x340839=await fetch(''+API_BASE+_0x4265b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4c50)});if(!_0x340839['ok']){const _0x56726d=await _0x340839['json']()['catch'](()=>({'error':_0x340839['statusText']})),_0x535f55=new Error(_0x56726d['error']||_0x56726d['message']||_0x340839['statusText']);if(_0x56726d['detail']!==undefined)_0x535f55['detail']=_0x56726d['detail'];throw _0x535f55;}return await _0x340839['json']();},async 'delete'(_0x2bf7ae,_0x2faf1c){const _0x32a908={'method':'DELETE'};_0x2faf1c&&(_0x32a908['headers']={'Content-Type':'application/json'},_0x32a908['body']=JSON['stringify'](_0x2faf1c));const _0x1a0e44=await fetch(''+API_BASE+_0x2bf7ae,_0x32a908);if(!_0x1a0e44['ok']){const _0x3c0af1=await _0x1a0e44['json']()['catch'](()=>({'error':_0x1a0e44['statusText']})),_0x4105af=new Error(_0x3c0af1['error']||_0x3c0af1['message']||_0x1a0e44['statusText']);if(_0x3c0af1['detail']!==undefined)_0x4105af['detail']=_0x3c0af1['detail'];throw _0x4105af;}return await _0x1a0e44['json']();},async 'getSkills'(){const _0x2b0da5=await fetch(API_BASE+'/skills');if(!_0x2b0da5['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b0da5['statusText']);return await _0x2b0da5['json']();},async 'getSkill'(_0x2133e9){const _0xb214e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2133e9));if(!_0xb214e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0xb214e9['statusText']);return await _0xb214e9['json']();},async 'createSkill'(_0x4f5e67){const _0xa543f4=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f5e67)});if(!_0xa543f4['ok']){const _0x472dfd=await _0xa543f4['json']()['catch'](()=>({'error':_0xa543f4['statusText']})),_0x20fec2=new Error(_0x472dfd['error']||_0x472dfd['message']||_0xa543f4['statusText']);if(_0x472dfd['detail']!==undefined)_0x20fec2['detail']=_0x472dfd['detail'];throw _0x20fec2;}return await _0xa543f4['json']();},async 'updateSkill'(_0x40bfc1,_0x512214){const _0x3b7eee=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40bfc1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512214)});if(!_0x3b7eee['ok']){const _0x30a0ae=await _0x3b7eee['json']()['catch'](()=>({'error':_0x3b7eee['statusText']})),_0x2bb6ea=new Error(_0x30a0ae['error']||_0x30a0ae['message']||_0x3b7eee['statusText']);if(_0x30a0ae['detail']!==undefined)_0x2bb6ea['detail']=_0x30a0ae['detail'];throw _0x2bb6ea;}return await _0x3b7eee['json']();},async 'deleteSkill'(_0x5788f3){const _0x1c988a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5788f3),{'method':'DELETE'});if(!_0x1c988a['ok']){const _0x9835d=await _0x1c988a['json']()['catch'](()=>({'error':_0x1c988a['statusText']})),_0x5b72d0=new Error(_0x9835d['error']||_0x9835d['message']||_0x1c988a['statusText']);if(_0x9835d['detail']!==undefined)_0x5b72d0['detail']=_0x9835d['detail'];throw _0x5b72d0;}return await _0x1c988a['json']();},async 'getSkillFile'(_0x36676f,_0x1146bc){const _0x4b9421=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36676f)+'/files/'+_0x1146bc);if(!_0x4b9421['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x4b9421['statusText']);return await _0x4b9421['json']();},async 'saveSkillFile'(_0x1496e9,_0x51ccf7,_0x23e357){const _0x294a62=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1496e9)+'/files/'+_0x51ccf7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23e357})});if(!_0x294a62['ok']){const _0x43bacc=await _0x294a62['json']()['catch'](()=>({'error':_0x294a62['statusText']})),_0x3ffd20=new Error(_0x43bacc['error']||_0x43bacc['message']||_0x294a62['statusText']);if(_0x43bacc['detail']!==undefined)_0x3ffd20['detail']=_0x43bacc['detail'];throw _0x3ffd20;}return await _0x294a62['json']();},async 'deleteSkillFile'(_0x335213,_0x2d4566){const _0x544746=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x335213)+'/files/'+_0x2d4566,{'method':'DELETE'});if(!_0x544746['ok']){const _0xa55178=await _0x544746['json']()['catch'](()=>({'error':_0x544746['statusText']})),_0x1b45aa=new Error(_0xa55178['error']||_0xa55178['message']||_0x544746['statusText']);if(_0xa55178['detail']!==undefined)_0x1b45aa['detail']=_0xa55178['detail'];throw _0x1b45aa;}return await _0x544746['json']();},async 'pullSkills'(){const _0x590b0d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x590b0d['ok']){const _0x198bed=await _0x590b0d['json']()['catch'](()=>({'error':_0x590b0d['statusText']})),_0xe92507=new Error(_0x198bed['error']||_0x198bed['message']||_0x590b0d['statusText']);if(_0x198bed['detail']!==undefined)_0xe92507['detail']=_0x198bed['detail'];throw _0xe92507;}return await _0x590b0d['json']();},async 'commitSkills'(_0x5f236f,_0x447de2={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x447de2,_0x35b3b5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5f236f,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b3b5['ok']){const _0x1751e3=await _0x35b3b5['json']()['catch'](()=>({'error':_0x35b3b5['statusText']})),_0x591178=new Error(_0x1751e3['error']||_0x1751e3['message']||_0x35b3b5['statusText']);if(_0x1751e3['detail']!==undefined)_0x591178['detail']=_0x1751e3['detail'];throw _0x591178;}return await _0x35b3b5['json']();},async 'discardSkillsChanges'(){const _0x5d4af4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5d4af4['ok']){const _0x1eabb2=await _0x5d4af4['json']()['catch'](()=>({'error':_0x5d4af4['statusText']})),_0x3f0edf=new Error(_0x1eabb2['error']||_0x1eabb2['message']||_0x5d4af4['statusText']);if(_0x1eabb2['detail']!==undefined)_0x3f0edf['detail']=_0x1eabb2['detail'];throw _0x3f0edf;}return await _0x5d4af4['json']();},async 'getSkillCatalog'(){const _0xcd954a=await fetch(API_BASE+'/external-skills/catalog');if(!_0xcd954a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xcd954a['statusText']);return await _0xcd954a['json']();},async 'getImportedSkillsRegistry'(){const _0x490de7=await fetch(API_BASE+'/external-skills/registry');if(!_0x490de7['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x490de7['statusText']);return await _0x490de7['json']();},async 'importCatalogSkill'(_0x2d862e){const _0x404f0e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2d862e})});if(!_0x404f0e['ok']){const _0xb9f18e=await _0x404f0e['json']()['catch'](()=>({'error':_0x404f0e['statusText']})),_0x1f05e2=new Error(_0xb9f18e['error']||_0xb9f18e['message']||_0x404f0e['statusText']);if(_0xb9f18e['detail']!==undefined)_0x1f05e2['detail']=_0xb9f18e['detail'];throw _0x1f05e2;}return await _0x404f0e['json']();},async 'importSkillFromGit'(_0x29e318,_0x4dbda1,_0x2ad9a0='main',_0x370589=null){const _0x43a878=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29e318,'skillPath':_0x4dbda1,'branch':_0x2ad9a0,'skillId':_0x370589})});if(!_0x43a878['ok']){const _0x28930b=await _0x43a878['json']()['catch'](()=>({'error':_0x43a878['statusText']})),_0x5374ed=new Error(_0x28930b['error']||_0x28930b['message']||_0x43a878['statusText']);if(_0x28930b['detail']!==undefined)_0x5374ed['detail']=_0x28930b['detail'];throw _0x5374ed;}return await _0x43a878['json']();},async 'probeMarketplace'(_0x18fa72,_0x54ada3='main'){const _0xe839e5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x18fa72,'branch':_0x54ada3})});if(!_0xe839e5['ok']){const _0x38e5ac=await _0xe839e5['json']()['catch'](()=>({'error':_0xe839e5['statusText']})),_0x4b4a97=new Error(_0x38e5ac['error']||_0x38e5ac['message']||_0xe839e5['statusText']);if(_0x38e5ac['detail']!==undefined)_0x4b4a97['detail']=_0x38e5ac['detail'];throw _0x4b4a97;}return await _0xe839e5['json']();},async 'importMarketplaceBundle'(_0x399df5,_0x5d6b31,_0x5ecb31,_0x6e231d=null){const _0x5616b3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x399df5,'branch':_0x5d6b31,'bundleId':_0x5ecb31,'selectedSkills':_0x6e231d})});if(!_0x5616b3['ok']){const _0x20cf28=await _0x5616b3['json']()['catch'](()=>({'error':_0x5616b3['statusText']})),_0x528a00=new Error(_0x20cf28['error']||_0x20cf28['message']||_0x5616b3['statusText']);if(_0x20cf28['detail']!==undefined)_0x528a00['detail']=_0x20cf28['detail'];throw _0x528a00;}return await _0x5616b3['json']();},async 'importSkillFromFolder'(_0x4f44b7,_0x3efad1=null){const _0x3386c4=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f44b7,'skillId':_0x3efad1})});if(!_0x3386c4['ok']){const _0x3a1824=await _0x3386c4['json']()['catch'](()=>({'error':_0x3386c4['statusText']})),_0x5c137b=new Error(_0x3a1824['error']||_0x3a1824['message']||_0x3386c4['statusText']);if(_0x3a1824['detail']!==undefined)_0x5c137b['detail']=_0x3a1824['detail'];throw _0x5c137b;}return await _0x3386c4['json']();},async 'importSkillFromNpm'(_0x131360,_0x1029ec='latest',_0xe0447b=null,_0x47bd10=null){const _0x33e41b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x131360,'version':_0x1029ec,'skillId':_0xe0447b,'registry':_0x47bd10})});if(!_0x33e41b['ok']){const _0xfcfff=await _0x33e41b['json']()['catch'](()=>({'error':_0x33e41b['statusText']})),_0x491fa3=new Error(_0xfcfff['error']||_0xfcfff['message']||_0x33e41b['statusText']);if(_0xfcfff['detail']!==undefined)_0x491fa3['detail']=_0xfcfff['detail'];throw _0x491fa3;}return await _0x33e41b['json']();},async 'checkSkillUpdates'(_0x28699e){const _0xf3e12c=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x28699e)+'/check-updates',{'method':'POST'});if(!_0xf3e12c['ok']){const _0x3d2f93=await _0xf3e12c['json']()['catch'](()=>({'error':_0xf3e12c['statusText']})),_0x461c1e=new Error(_0x3d2f93['error']||_0x3d2f93['message']||_0xf3e12c['statusText']);if(_0x3d2f93['detail']!==undefined)_0x461c1e['detail']=_0x3d2f93['detail'];throw _0x461c1e;}return await _0xf3e12c['json']();},async 'updateExternalSkill'(_0x1866b8){const _0x3aee85=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1866b8)+'/update',{'method':'POST'});if(!_0x3aee85['ok']){const _0x53fb41=await _0x3aee85['json']()['catch'](()=>({'error':_0x3aee85['statusText']})),_0x4a3bfc=new Error(_0x53fb41['error']||_0x53fb41['message']||_0x3aee85['statusText']);if(_0x53fb41['detail']!==undefined)_0x4a3bfc['detail']=_0x53fb41['detail'];throw _0x4a3bfc;}return await _0x3aee85['json']();},async 'updateSkillFlags'(_0x27c7ef,_0x1f8ed0){const _0x55de9b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x27c7ef)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f8ed0})});if(!_0x55de9b['ok']){const _0x3d6b25=await _0x55de9b['json']()['catch'](()=>({'error':_0x55de9b['statusText']})),_0x125e84=new Error(_0x3d6b25['error']||_0x3d6b25['message']||_0x55de9b['statusText']);if(_0x3d6b25['detail']!==undefined)_0x125e84['detail']=_0x3d6b25['detail'];throw _0x125e84;}return await _0x55de9b['json']();},async 'removeFromImportedRegistry'(_0x1c8b82){const _0x581684=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c8b82)+'/registry',{'method':'DELETE'});if(!_0x581684['ok']){const _0x57561f=await _0x581684['json']()['catch'](()=>({'error':_0x581684['statusText']})),_0x2b6445=new Error(_0x57561f['error']||_0x57561f['message']||_0x581684['statusText']);if(_0x57561f['detail']!==undefined)_0x2b6445['detail']=_0x57561f['detail'];throw _0x2b6445;}return await _0x581684['json']();},async 'getTeams'(){const _0x1cf9e8=await fetch(API_BASE+'/teams');if(!_0x1cf9e8['ok']){const _0x49e3a0=await _0x1cf9e8['json']()['catch'](()=>({'message':_0x1cf9e8['statusText']}));throw new Error(_0x49e3a0['message']||'Failed\x20to\x20get\x20teams');}return await _0x1cf9e8['json']();},async 'getTeam'(_0x4497f2){const _0x29a446=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4497f2));if(!_0x29a446['ok']){const _0x3cf20f=await _0x29a446['json']()['catch'](()=>({'message':_0x29a446['statusText']}));throw new Error(_0x3cf20f['message']||'Failed\x20to\x20get\x20team');}return await _0x29a446['json']();},async 'createTeam'(_0x163db6){const _0x33bc89=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163db6)});if(!_0x33bc89['ok']){const _0x56190c=await _0x33bc89['json']()['catch'](()=>({'message':_0x33bc89['statusText']}));throw new Error(_0x56190c['message']||'Failed\x20to\x20create\x20team');}return await _0x33bc89['json']();},async 'updateTeam'(_0x114aae,_0x478247){const _0x4fcd3e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x114aae),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478247)});if(!_0x4fcd3e['ok']){const _0x3d2090=await _0x4fcd3e['json']()['catch'](()=>({'message':_0x4fcd3e['statusText']}));throw new Error(_0x3d2090['message']||'Failed\x20to\x20update\x20team');}return await _0x4fcd3e['json']();},async 'deleteTeam'(_0x11be3d){const _0x337a38=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11be3d),{'method':'DELETE'});if(!_0x337a38['ok']){const _0x5af727=await _0x337a38['json']()['catch'](()=>({'message':_0x337a38['statusText']}));throw new Error(_0x5af727['message']||'Failed\x20to\x20delete\x20team');}return await _0x337a38['json']();},async 'addTeamMember'(_0x11d1a4,_0x5a956e){const _0x2e7e2f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11d1a4)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5a956e})});if(!_0x2e7e2f['ok']){const _0x3da20e=await _0x2e7e2f['json']()['catch'](()=>({'message':_0x2e7e2f['statusText']}));throw new Error(_0x3da20e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2e7e2f['json']();},async 'removeTeamMember'(_0x25623e,_0x12914a){const _0x44b377=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x25623e)+'/members/'+encodeURIComponent(_0x12914a),{'method':'DELETE'});if(!_0x44b377['ok']){const _0xe8ddb8=await _0x44b377['json']()['catch'](()=>({'message':_0x44b377['statusText']}));throw new Error(_0xe8ddb8['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44b377['json']();},async 'getBindings'(_0x52ec33={}){const _0x370d36=new URLSearchParams();if(_0x52ec33['resource_type'])_0x370d36['set']('resource_type',_0x52ec33['resource_type']);if(_0x52ec33['resource_id'])_0x370d36['set']('resource_id',_0x52ec33['resource_id']);if(_0x52ec33['subject_type'])_0x370d36['set']('subject_type',_0x52ec33['subject_type']);if(_0x52ec33['subject_id'])_0x370d36['set']('subject_id',_0x52ec33['subject_id']);const _0x1d513d=_0x370d36['toString'](),_0x3c59fd=await fetch(API_BASE+'/bindings'+(_0x1d513d?'?'+_0x1d513d:''));if(!_0x3c59fd['ok']){const _0x2a391f=await _0x3c59fd['json']()['catch'](()=>({'message':_0x3c59fd['statusText']}));throw new Error(_0x2a391f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x3c59fd['json']();},async 'createBinding'(_0x36b182){const _0x49f9e2=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36b182)});if(!_0x49f9e2['ok']){const _0x3fdffb=await _0x49f9e2['json']()['catch'](()=>({'message':_0x49f9e2['statusText']}));throw new Error(_0x3fdffb['message']||'Failed\x20to\x20create\x20binding');}return await _0x49f9e2['json']();},async 'updateBinding'(_0x9a2f71,_0x1b6882){const _0x445990=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x9a2f71),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6882)});if(!_0x445990['ok']){const _0x2c0c31=await _0x445990['json']()['catch'](()=>({'message':_0x445990['statusText']}));throw new Error(_0x2c0c31['message']||'Failed\x20to\x20update\x20binding');}return await _0x445990['json']();},async 'deleteBinding'(_0x4adc81){const _0x46b800=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4adc81),{'method':'DELETE'});if(!_0x46b800['ok']){const _0x596200=await _0x46b800['json']()['catch'](()=>({'message':_0x46b800['statusText']}));throw new Error(_0x596200['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46b800['json']();},async 'getRoleDefinitions'(){const _0x420bdf=await fetch(API_BASE+'/roles');if(!_0x420bdf['ok']){const _0xed8c9f=await _0x420bdf['json']()['catch'](()=>({'message':_0x420bdf['statusText']}));throw new Error(_0xed8c9f['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x420bdf['json']();},async 'getRoleDefinition'(_0x35d35b){const _0x505665=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x35d35b));if(!_0x505665['ok']){const _0xb6e032=await _0x505665['json']()['catch'](()=>({'message':_0x505665['statusText']}));throw new Error(_0xb6e032['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x505665['json']();},async 'createRoleDefinition'(_0x177f43){const _0x1b4da9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177f43)});if(!_0x1b4da9['ok']){const _0x29d9a2=await _0x1b4da9['json']()['catch'](()=>({'message':_0x1b4da9['statusText']}));throw new Error(_0x29d9a2['message']||_0x29d9a2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1b4da9['json']();},async 'updateRoleDefinition'(_0xf04102,_0xc0d15f){const _0x4c0815=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xf04102),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc0d15f)});if(!_0x4c0815['ok']){const _0x53f9ba=await _0x4c0815['json']()['catch'](()=>({'message':_0x4c0815['statusText']}));throw new Error(_0x53f9ba['message']||_0x53f9ba['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4c0815['json']();},async 'deleteRoleDefinition'(_0x10d314){const _0x267069=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10d314),{'method':'DELETE'});if(!_0x267069['ok']){const _0x3ef317=await _0x267069['json']()['catch'](()=>({'message':_0x267069['statusText']}));throw new Error(_0x3ef317['message']||_0x3ef317['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x267069['json']();},async 'getAvailablePermissions'(){const _0x339c7c=await fetch(API_BASE+'/roles/available-permissions');if(!_0x339c7c['ok']){const _0x1c2bfb=await _0x339c7c['json']()['catch'](()=>({'message':_0x339c7c['statusText']}));throw new Error(_0x1c2bfb['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x339c7c['json']();},async 'getGitProviderAllowedTeams'(_0x192f8d){const _0x422ec5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192f8d)+'/allowed-teams');if(!_0x422ec5['ok']){const _0x40785b=await _0x422ec5['json']()['catch'](()=>({'message':_0x422ec5['statusText']}));throw new Error(_0x40785b['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x422ec5['json']();},async 'setGitProviderAllowedTeams'(_0xa2c8c9,_0x97ccba){const _0x541e52=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa2c8c9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x97ccba})});if(!_0x541e52['ok']){const _0x83cdf6=await _0x541e52['json']()['catch'](()=>({'message':_0x541e52['statusText']}));throw new Error(_0x83cdf6['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x541e52['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 _0x533c1e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c04c6=>{_0x5c04c6['el']['style']['bottom']=_0x533c1e+'px';const _0x44c449=_0x5c04c6['el']['offsetHeight']||toastState['defaultHeight'];_0x533c1e+=_0x44c449+toastState['gap'];});});}function removeToastById(_0x4c0e30){const _0x41b28f=toastState['toasts']['findIndex'](_0x504114=>_0x504114['id']===_0x4c0e30);if(_0x41b28f===-0x1)return;const _0x49cc8c=toastState['toasts'][_0x41b28f];if(_0x49cc8c['timeoutId'])clearTimeout(_0x49cc8c['timeoutId']);_0x49cc8c['el']['classList']['remove']('show'),setTimeout(()=>_0x49cc8c['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x41b28f,0x1),repositionAllToasts();}function registerToast(_0x5e1ba7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5e1ba7),repositionAllToasts(),_0x5e1ba7['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x25336e){if(_0x25336e===null||_0x25336e===undefined)return'';return String(_0x25336e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x250e08,_0x175ae7){if(_0x250e08&&typeof _0x250e08==='object'&&!Array['isArray'](_0x250e08))return{'code':typeof _0x250e08['text']==='string'?_0x250e08['text']:'','language':typeof _0x250e08['lang']==='string'?_0x250e08['lang']:''};return{'code':typeof _0x250e08==='string'?_0x250e08:'','language':typeof _0x175ae7==='string'?_0x175ae7:''};}function buildMermaidBlock(_0x548e0f){const _0x329e0a=String(_0x548e0f||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x329e0a))+'\x22>'+escapeHtmlValue(_0x329e0a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x269521=new marked['Renderer'](),_0x8701b8=_0x269521['code']['bind'](_0x269521);return _0x269521['code']=function(_0x3b4294,_0x20da73,..._0x3a4941){const {code:_0x59a1bc,language:_0x5af143}=getMarkdownCodeBlockPayload(_0x3b4294,_0x20da73),_0x256217=String(_0x5af143||'')['trim']()['toLowerCase']();if(_0x256217==='mermaid')return buildMermaidBlock(_0x59a1bc);const _0x97a5b5=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x97a5b5&&_0x256217)try{const _0x128b25=_0x97a5b5['getLanguage'](_0x256217)?_0x256217:'plaintext',_0x1cafcf=_0x97a5b5['highlight'](_0x59a1bc,{'language':_0x128b25})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x256217)+'\x22>'+_0x1cafcf+'</code></pre>';}catch(_0x4a29dc){console['error']('Syntax\x20highlighting\x20error:',_0x4a29dc);}return _0x8701b8(_0x3b4294,_0x20da73,..._0x3a4941);},sharedMarkedRenderer=_0x269521,_0x269521;}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 _0x4c4a76=window['mermaid'];if(!_0x4c4a76||typeof _0x4c4a76['initialize']!=='function')return _0x4c4a76||null;return _0x4c4a76['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4c4a76;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4b0cab,_0x168040)=>{const _0x230cea=()=>_0x4b0cab(configureMermaidInstance()),_0x23370c=()=>{mermaidLoadPromise=null,_0x168040(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x33e2e3=document['getElementById'](MERMAID_SCRIPT_ID);!_0x33e2e3&&(_0x33e2e3=document['createElement']('script'),_0x33e2e3['id']=MERMAID_SCRIPT_ID,_0x33e2e3['src']=MERMAID_SCRIPT_SRC,_0x33e2e3['async']=!![],document['head']['appendChild'](_0x33e2e3));if(window['mermaid']){_0x230cea();return;}_0x33e2e3['addEventListener']('load',_0x230cea,{'once':!![]}),_0x33e2e3['addEventListener']('error',_0x23370c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bffee){const _0x5bd946=_0x4bffee['getAttribute']('data-mermaid-source');if(!_0x5bd946)return null;let _0x149f4f=_0x5bd946;try{_0x149f4f=decodeURIComponent(_0x5bd946);}catch{}return _0x4bffee['textContent']=_0x149f4f,_0x4bffee['removeAttribute']('data-processed'),_0x4bffee['removeAttribute']('aria-roledescription'),_0x4bffee['removeAttribute']('role'),_0x4bffee['removeAttribute']('aria-label'),_0x149f4f;}function collectMermaidNodes(_0x4f4a38,_0x42b275){if(!(_0x4f4a38 instanceof Element))return;_0x4f4a38['matches']('.mermaid[data-mermaid-source]')&&_0x42b275['add'](_0x4f4a38),_0x4f4a38['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a163d=>{_0x42b275['add'](_0x3a163d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x385728=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xdebb6c=>setTimeout(_0xdebb6c,0x0);_0x385728(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x780ea4=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x780ea4);});});}function queueMermaidRender(_0x28123f){const _0x20bb7b=new Set();_0x28123f instanceof Document||_0x28123f instanceof DocumentFragment?_0x28123f['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x36c9fd=>_0x20bb7b['add'](_0x36c9fd)):collectMermaidNodes(_0x28123f,_0x20bb7b);if(_0x20bb7b['size']===0x0)return;_0x20bb7b['forEach'](_0x15b0f5=>pendingMermaidNodes['add'](_0x15b0f5)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x39a496=Array['from'](pendingMermaidNodes)['filter'](_0x322b03=>_0x322b03['isConnected']);pendingMermaidNodes['clear']();if(_0x39a496['length']===0x0)return;const _0xf896da=await loadMermaid();if(!_0xf896da)return;configureMermaidInstance();const _0x533877=getMermaidTheme();for(const _0x40bafd of _0x39a496){const _0x404f9b=_0x40bafd['getAttribute']('data-mermaid-source');if(!_0x404f9b)continue;const _0x8d2ffc=_0x40bafd['getAttribute']('data-processed')==='true';if(_0x8d2ffc&&_0x40bafd['dataset']['mermaidTheme']===_0x533877)continue;restoreMermaidSource(_0x40bafd);try{if(typeof _0xf896da['run']==='function')await _0xf896da['run']({'nodes':[_0x40bafd]});else typeof _0xf896da['init']==='function'&&_0xf896da['init'](undefined,[_0x40bafd]);_0x40bafd['dataset']['mermaidTheme']=_0x533877,delete _0x40bafd['dataset']['mermaidError'];}catch(_0x149775){console['error']('Mermaid\x20render\x20failed:',_0x149775),restoreMermaidSource(_0x40bafd),_0x40bafd['dataset']['mermaidError']='true',delete _0x40bafd['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x8ba1e6=>{_0x8ba1e6['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x8ba1e6);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2bbf36=>{_0x2bbf36['forEach'](_0x1b29eb=>{_0x1b29eb['addedNodes']['forEach'](_0x1511e1=>{_0x1511e1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x1511e1);});});}),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'(_0x35ce36){const _0x3494cd=new Date(_0x35ce36),_0x880b71=new Date(),_0x337e29=_0x880b71-_0x3494cd,_0x20adb5=Math['floor'](_0x337e29/0x3e8),_0x345a16=Math['floor'](_0x20adb5/0x3c),_0xbe618=Math['floor'](_0x345a16/0x3c),_0x2d47b9=Math['floor'](_0xbe618/0x18);if(_0x20adb5<0x3c)return'now';if(_0x345a16<0x3c)return _0x345a16+'m\x20ago';if(_0xbe618<0x18)return _0xbe618+'h\x20ago';return _0x2d47b9+'d\x20ago';},'getStatusIcon'(_0x4d169c){switch(_0x4d169c){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x1ebda3){switch(_0x1ebda3){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'(_0x2d6d6e,_0x319479=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x27cfbe={};_0x27cfbe['text/plain']=new Blob([_0x2d6d6e],{'type':'text/plain'});_0x319479&&(_0x27cfbe['text/html']=new Blob([_0x319479],{'type':'text/html'}));const _0x1fd635=new ClipboardItem(_0x27cfbe);return await navigator['clipboard']['write']([_0x1fd635]),!![];}catch(_0x5add2c){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5add2c);}try{const _0x3e26f5=_0x17f5a2=>{_0x17f5a2['preventDefault'](),_0x17f5a2['clipboardData']['setData']('text/plain',_0x2d6d6e),_0x319479&&_0x17f5a2['clipboardData']['setData']('text/html',_0x319479);};document['addEventListener']('copy',_0x3e26f5);const _0x1123d9=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e26f5);if(_0x1123d9)return!![];}catch(_0x1f7dd3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1f7dd3);}try{const _0x158c48=document['createElement']('textarea');_0x158c48['value']=_0x2d6d6e,_0x158c48['style']['position']='fixed',_0x158c48['style']['opacity']='0',_0x158c48['style']['pointerEvents']='none',document['body']['appendChild'](_0x158c48),_0x158c48['select']();const _0x1e8aa0=document['execCommand']('copy');return document['body']['removeChild'](_0x158c48),_0x1e8aa0;}catch(_0x4b86a6){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4b86a6),![];}},'showToast'(_0x37e333,_0x59e5f3='info'){const _0x1f0d7c=getNextToastId(),_0x48daac=document['createElement']('div');_0x48daac['className']='toast\x20toast-'+_0x59e5f3,_0x48daac['textContent']=_0x37e333,_0x48daac['dataset']['toastId']=_0x1f0d7c,document['body']['appendChild'](_0x48daac);const _0x358122=_0x59e5f3==='error'?0x2710:0xbb8,_0xdc23c7=setTimeout(()=>{removeToastById(_0x1f0d7c);},_0x358122),_0x29726c={'id':_0x1f0d7c,'el':_0x48daac,'timeoutId':_0xdc23c7};return registerToast(_0x29726c),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x48daac['classList']['add']('show');});}),_0x1f0d7c;},'showError'(_0x4b5802){console['error'](_0x4b5802);const _0x263beb=typeof _0x4b5802==='string'?_0x4b5802:_0x4b5802['message']||'An\x20error\x20occurred';this['showToast'](_0x263beb,'error');},'showSuccess'(_0x42a943){this['showToast'](_0x42a943,'success');},'capitalize'(_0x2750cd){if(!_0x2750cd)return'';return _0x2750cd['charAt'](0x0)['toUpperCase']()+_0x2750cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c8e59){return escapeHtmlValue(_0x2c8e59);},'ansiToHtml'(_0x256997){if(_0x256997===null||_0x256997===undefined)return'';let _0x38ee2b=this['escapeHtml'](_0x256997);const _0x285143={'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'},_0x433649={'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 _0x54c619=0x0;return _0x38ee2b=_0x38ee2b['replace'](/\x1b\[([0-9;]*)m/g,(_0x4e4b5a,_0x3fff24)=>{if(!_0x3fff24||_0x3fff24==='0'){const _0x21f847='</span>'['repeat'](_0x54c619);return _0x54c619=0x0,_0x21f847;}const _0x7fa0ea=_0x3fff24['split'](';'),_0x1636dc=[];for(const _0x143985 of _0x7fa0ea){if(_0x143985==='1')_0x1636dc['push']('font-weight:bold');else{if(_0x143985==='2')_0x1636dc['push']('opacity:0.7');else{if(_0x143985==='3')_0x1636dc['push']('font-style:italic');else{if(_0x143985==='4')_0x1636dc['push']('text-decoration:underline');else{if(_0x143985==='9')_0x1636dc['push']('text-decoration:line-through');else{if(_0x285143[_0x143985])_0x1636dc['push']('color:'+_0x285143[_0x143985]);else{if(_0x433649[_0x143985])_0x1636dc['push']('background-color:'+_0x433649[_0x143985]);}}}}}}}if(_0x1636dc['length']>0x0)return _0x54c619++,'<span\x20style=\x22'+_0x1636dc['join'](';')+'\x22>';return'';}),_0x38ee2b+='</span>'['repeat'](_0x54c619),_0x38ee2b=_0x38ee2b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5d4ab7,_0x3f25f4)=>{if(!_0x3f25f4||_0x3f25f4==='0')return'';const _0x5311fc=_0x3f25f4['split'](';'),_0xa95260=[];for(const _0x156468 of _0x5311fc){if(_0x156468==='1')_0xa95260['push']('font-weight:bold');else{if(_0x285143[_0x156468])_0xa95260['push']('color:'+_0x285143[_0x156468]);else{if(_0x433649[_0x156468])_0xa95260['push']('background-color:'+_0x433649[_0x156468]);}}}if(_0xa95260['length']>0x0)return'<span\x20style=\x22'+_0xa95260['join'](';')+'\x22>';return'';}),_0x38ee2b;},'showModal'({title:_0x2068e8,content:_0x50dea7,buttons:buttons=[]}){const _0xe46210='\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'](_0x2068e8)+'</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'+_0x50dea7+'\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']((_0x1009f3,_0x41274f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1009f3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x41274f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1009f3['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',_0x513d7c=document['createElement']('div');_0x513d7c['id']='utils-modal',_0x513d7c['className']='modal',_0x513d7c['innerHTML']=_0xe46210,document['body']['appendChild'](_0x513d7c);const _0x3934e8=document['getElementById']('utils-modal-close');_0x3934e8&&_0x3934e8['addEventListener']('click',()=>this['hideModal']());const _0x55cfad=_0x513d7c['querySelectorAll']('[data-btn-index]');_0x55cfad['forEach'](_0xfce695=>{const _0x1619d8=parseInt(_0xfce695['dataset']['btnIndex']);buttons[_0x1619d8]?.['onClick']&&_0xfce695['addEventListener']('click',buttons[_0x1619d8]['onClick']);});const _0xb0b3e4=document['getElementById']('utils-modal-overlay');_0xb0b3e4&&_0xb0b3e4['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x273597=document['getElementById']('utils-modal');_0x273597&&_0x273597['remove']();},'parseKeyValuePairs'(_0x35b301){const _0x5e7308={};if(!_0x35b301)return _0x5e7308;return _0x35b301['split'](/\r?\n/)['map'](_0x14e098=>_0x14e098['trim']())['filter'](Boolean)['forEach'](_0x174d3c=>{const _0x5020eb=_0x174d3c['indexOf']('=');if(_0x5020eb>0x0){const _0x51c51b=_0x174d3c['slice'](0x0,_0x5020eb)['trim'](),_0x9fb46b=_0x174d3c['slice'](_0x5020eb+0x1)['trim']();if(_0x51c51b)_0x5e7308[_0x51c51b]=_0x9fb46b;}}),_0x5e7308;},'debounce'(_0x2f0041,_0x5236e8=0xfa){let _0x5a510f=null;return(..._0x430980)=>{clearTimeout(_0x5a510f),_0x5a510f=setTimeout(()=>_0x2f0041['apply'](this,_0x430980),_0x5236e8);};},'formatTimestamp'(_0xdda566){if(!_0xdda566)return'N/A';const _0x558e11=new Date(_0xdda566);return _0x558e11['toLocaleDateString']()+'\x20'+_0x558e11['toLocaleTimeString']();},'getQueryParams'(){const _0x4ee51b=new URLSearchParams(window['location']['search']),_0x2c8530={};for(const [_0x37d339,_0x56ab3a]of _0x4ee51b){_0x2c8530[_0x37d339]=_0x56ab3a;}return _0x2c8530;},'formatDuration'(_0x6627b6,_0x820cd5){if(!_0x6627b6)return'N/A';const _0x2663ad=new Date(_0x6627b6),_0x422abc=_0x820cd5?new Date(_0x820cd5):new Date(),_0x4a9cae=_0x422abc-_0x2663ad;if(_0x4a9cae<0x0)return'0s';const _0x1c819d=Math['floor'](_0x4a9cae/0x3e8),_0x42deb8=Math['floor'](_0x1c819d/0x3c),_0x1a68ba=Math['floor'](_0x42deb8/0x3c),_0x507dd8=Math['floor'](_0x1a68ba/0x18);if(_0x1c819d<0x3c)return _0x1c819d+'s';if(_0x42deb8<0x3c)return _0x42deb8+'m\x20'+_0x1c819d%0x3c+'s';if(_0x1a68ba<0x18)return _0x1a68ba+'h\x20'+_0x42deb8%0x3c+'m\x20'+_0x1c819d%0x3c+'s';return _0x507dd8+'d\x20'+_0x1a68ba%0x18+'h\x20'+_0x42deb8%0x3c+'m';},'renderMarkdown'(_0x5b1c48,_0x5671d5={}){if(!_0x5b1c48)return'';_0x5b1c48=this['rewriteAttachmentLinks'](_0x5b1c48,_0x5671d5),_0x5b1c48=this['rewriteColorSyntax'](_0x5b1c48);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5b1c48);}catch(_0x502813){return console['error']('Markdown\x20parsing\x20error:',_0x502813),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);}},'rewriteAttachmentLinks'(_0x2be97d,_0x5304ef={}){const _0x19204a=typeof _0x5304ef['resolveAttachmentUrl']==='function'?_0x5304ef['resolveAttachmentUrl']:_0x5304ef['taskId']?_0x5db216=>API_BASE+'/tasks/'+_0x5304ef['taskId']+'/attachments/'+encodeURIComponent(_0x5db216):null;if(!_0x19204a)return _0x2be97d;return String(_0x2be97d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x46c2f6,_0x435bfd)=>{const _0x3d32db=String(_0x435bfd||'')['trim']();if(!_0x3d32db)return _0x46c2f6;let _0x4a6982=_0x3d32db;try{_0x4a6982=decodeURIComponent(_0x3d32db);}catch{}const _0x2d74bd=_0x19204a(_0x4a6982);if(!_0x2d74bd)return _0x46c2f6;return']('+_0x2d74bd+')';});},'rewriteColorSyntax'(_0x4f263f){if(!_0x4f263f)return _0x4f263f;return String(_0x4f263f)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4a766a,_0x20e033,_0x5700b6)=>{const _0xa0e774=this['rewriteColorSyntax'](_0x5700b6);return'<span\x20style=\x22color:\x20'+_0x20e033+'\x22>'+_0xa0e774+'</span>';});},'renderMarkdownFallback'(_0x48b8c3,_0x3af602={}){if(!_0x48b8c3)return'';_0x48b8c3=_0x48b8c3['replace'](/\r\n/g,'\x0a'),_0x48b8c3=_0x48b8c3['replace'](/\r/g,'\x0a'),_0x48b8c3=this['rewriteAttachmentLinks'](_0x48b8c3,_0x3af602);let _0x4e4f0b=this['escapeHtml'](_0x48b8c3);return _0x4e4f0b=_0x4e4f0b['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4e4f0b=_0x4e4f0b['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4e4f0b=_0x4e4f0b['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4e4f0b=_0x4e4f0b['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4e4f0b=_0x4e4f0b['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4e4f0b=_0x4e4f0b['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4e4f0b=_0x4e4f0b['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n\n/g,'</p><p>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n/g,'<br>'),'<p>'+_0x4e4f0b+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x270f9c=new Uint8Array(0x10);crypto['getRandomValues'](_0x270f9c),_0x270f9c[0x6]=_0x270f9c[0x6]&0xf|0x40,_0x270f9c[0x8]=_0x270f9c[0x8]&0x3f|0x80;const _0x2d381b=Array['from'](_0x270f9c,_0x1417e2=>_0x1417e2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2d381b['slice'](0x0,0x8)+'-'+_0x2d381b['slice'](0x8,0xc)+'-'+_0x2d381b['slice'](0xc,0x10)+'-'+_0x2d381b['slice'](0x10,0x14)+'-'+_0x2d381b['slice'](0x14);}};export class CustomSelect{constructor(_0x58fe90,_0xd9917f={}){this['nativeSelect']=_0x58fe90,this['options']=_0xd9917f,this['isOpen']=![],this['selectedValue']=_0x58fe90['value']||'',this['searchable']=_0xd9917f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2056f6=document['createElement']('div');_0x2056f6['className']='custom-select';const _0x483431=document['createElement']('div');_0x483431['className']='custom-select-trigger',_0x483431['setAttribute']('tabindex','0'),_0x483431['setAttribute']('role','button'),_0x483431['setAttribute']('aria-haspopup','listbox');const _0x3e5b8f=document['createElement']('span');_0x3e5b8f['className']='custom-select-trigger-text';const _0x5f1027=document['createElement']('span');_0x5f1027['className']='custom-select-arrow',_0x5f1027['textContent']='▼',_0x483431['appendChild'](_0x3e5b8f),_0x483431['appendChild'](_0x5f1027);const _0x393313=document['createElement']('div');_0x393313['className']='custom-select-dropdown',_0x393313['setAttribute']('role','listbox');if(this['searchable']){const _0x436e14=document['createElement']('div');_0x436e14['className']='custom-select-search';const _0x176ad6=document['createElement']('input');_0x176ad6['type']='text',_0x176ad6['className']='custom-select-search-input',_0x176ad6['placeholder']='Type\x20to\x20search...',_0x176ad6['setAttribute']('aria-label','Search\x20options'),_0x176ad6['addEventListener']('input',_0x22855c=>{this['searchQuery']=_0x22855c['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x176ad6['addEventListener']('keydown',_0x3ea006=>{if(_0x3ea006['key']==='Escape')_0x3ea006['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3ea006['key']==='Enter'){_0x3ea006['preventDefault'](),_0x3ea006['stopPropagation']();const _0x12a94b=_0x393313['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x12a94b){const _0x25a115=_0x12a94b['getAttribute']('data-value');this['select'](_0x25a115);}}}}),_0x436e14['appendChild'](_0x176ad6),_0x393313['appendChild'](_0x436e14),this['searchInput']=_0x176ad6;}const _0x3db971=document['createElement']('div');_0x3db971['className']='custom-select-options',_0x393313['appendChild'](_0x3db971),_0x2056f6['appendChild'](_0x483431),_0x2056f6['appendChild'](_0x393313),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2056f6,this['nativeSelect']),this['wrapper']=_0x2056f6,this['trigger']=_0x483431,this['triggerText']=_0x3e5b8f,this['dropdown']=_0x393313,this['optionsContainer']=_0x3db971,_0x483431['addEventListener']('click',()=>this['toggle']()),_0x483431['addEventListener']('keydown',_0x3c9d1b=>this['handleKeydown'](_0x3c9d1b)),document['addEventListener']('click',_0x513693=>{!_0x2056f6['contains'](_0x513693['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4e3ff3=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4e3ff3['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x37cf2c=new MutationObserver(()=>{this['updateDisabledState']();});_0x37cf2c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0xf63692=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0xf63692['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x1c4800=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x1c4800),this['trigger']['setAttribute']('aria-disabled',_0x1c4800?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x1c4800?'-1':'0'),_0x1c4800&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x289592=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x10d19a=_0x289592['filter'](_0x439177=>!_0x439177['disabled']&&!_0x439177['hidden']);_0x289592['forEach']((_0x5e40db,_0x35409e)=>{const _0x1f3a3=document['createElement']('div');_0x1f3a3['className']='custom-select-option',_0x1f3a3['textContent']=_0x5e40db['textContent'],_0x1f3a3['setAttribute']('data-value',_0x5e40db['value']),_0x1f3a3['setAttribute']('data-index',_0x35409e),_0x1f3a3['setAttribute']('role','option'),_0x5e40db['disabled']?_0x1f3a3['classList']['add']('disabled'):_0x1f3a3['addEventListener']('click',()=>this['select'](_0x5e40db['value'])),_0x5e40db['value']===this['selectedValue']&&_0x1f3a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f3a3),this['allOptions']['push']({'element':_0x1f3a3,'text':_0x5e40db['textContent']['toLowerCase'](),'value':_0x5e40db['value'],'disabled':_0x5e40db['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5e6cac=this['searchInput']['parentElement'];_0x10d19a['length']>0x3?_0x5e6cac['style']['display']='':_0x5e6cac['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2987cb=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x214c91=>{if(!_0x2987cb||_0x214c91['disabled'])_0x214c91['element']['style']['display']='';else{const _0x19d689=_0x214c91['text']['includes'](_0x2987cb);_0x214c91['element']['style']['display']=_0x19d689?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4bb73a){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4bb73a,this['nativeSelect']['value']=_0x4bb73a;const _0xafbc75=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xafbc75),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x401261=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x401261&&(this['triggerText']['textContent']=_0x401261['textContent'],_0x401261['disabled']||_0x401261['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2daf88=>{_0x2daf88['getAttribute']('data-value')===this['selectedValue']?_0x2daf88['classList']['add']('selected'):_0x2daf88['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 _0x2ed6c9=window['getComputedStyle'](this['dropdown']);if(_0x2ed6c9['position']==='fixed'){const _0x4c796e=this['trigger']['getBoundingClientRect'](),_0x3ec63f=parseInt(_0x2ed6c9['maxHeight'])||0xc8,_0x3da2f0=window['innerHeight'],_0x40bbb6=_0x3da2f0-_0x4c796e['bottom'],_0x5e09d2=_0x4c796e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x244744;_0x40bbb6<_0x3ec63f&&_0x5e09d2>_0x40bbb6?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3da2f0-_0x4c796e['top']+'px',_0x244744=Math['min'](_0x3ec63f,_0x5e09d2-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c796e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x244744=Math['min'](_0x3ec63f,_0x40bbb6-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px');if(this['optionsContainer']){let _0x854e9b=_0x244744;if(this['searchInput']){const _0x47cf54=this['searchInput']['parentElement'];_0x47cf54&&(_0x854e9b-=_0x47cf54['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x854e9b)+'px';}this['dropdown']['style']['left']=_0x4c796e['left']+'px',this['dropdown']['style']['width']=_0x4c796e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x509a7e=this['searchInput']['parentElement'];_0x509a7e&&_0x509a7e['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'](_0xb642b0){if(this['nativeSelect']['disabled'])return;if(_0xb642b0['key']==='Enter'||_0xb642b0['key']==='\x20')_0xb642b0['preventDefault'](),this['toggle']();else _0xb642b0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2f61bc='\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',_0x2f61bc),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x264006=document['getElementById']('confirm-dialog-close'),_0xd6e089=document['getElementById']('confirm-dialog-cancel'),_0xa09b65=document['getElementById']('confirm-dialog-confirm'),_0x3421ac=this['_modal']['querySelector']('.modal-overlay');_0x264006['addEventListener']('click',()=>this['_resolve'](![])),_0xd6e089['addEventListener']('click',()=>this['_resolve'](![])),_0xa09b65['addEventListener']('click',()=>this['_resolve'](!![])),_0x3421ac['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5dcc4a=>{if(_0x5dcc4a['key']==='Escape')_0x5dcc4a['preventDefault'](),this['_resolve'](![]);else _0x5dcc4a['key']==='Enter'&&(_0x5dcc4a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x584000,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xef43e3=>{this['_resolvePromise']=_0xef43e3,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x584000;const _0x2d7589=document['getElementById']('confirm-dialog-cancel'),_0x23a1b4=document['getElementById']('confirm-dialog-confirm');_0x2d7589['textContent']=cancelText,_0x23a1b4['textContent']=confirmText,_0x23a1b4['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x23a1b4['focus']();});},'_resolve'(_0x525fda){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x525fda),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x519ad1,_0x5e0c76={}){this['container']=_0x519ad1,this['options']={'placeholder':_0x5e0c76['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0c76['maxItems']||0x64,'loadItems':_0x5e0c76['loadItems']||(async()=>[]),'renderItem':_0x5e0c76['renderItem']||(_0x38e581=>({'primary':String(_0x38e581),'secondary':''})),'onSelect':_0x5e0c76['onSelect']||(()=>{}),'filterItems':_0x5e0c76['filterItems']||null,'getItemValue':_0x5e0c76['getItemValue']||(_0x5d9a95=>_0x5d9a95),'sortItems':_0x5e0c76['sortItems']||null,'debounceMs':_0x5e0c76['debounceMs']||0xc8,'minCharsForSearch':_0x5e0c76['minCharsForSearch']||0x0,'emptyMessage':_0x5e0c76['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0c76['loadingMessage']||'Loading...','preload':_0x5e0c76['preload']!==![],'searchMode':_0x5e0c76['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',_0x5b9e22=>this['onBlur'](_0x5b9e22)),this['input']['addEventListener']('input',_0x415690=>this['onInput'](_0x415690)),this['input']['addEventListener']('keydown',_0x8e68a4=>this['onKeydown'](_0x8e68a4)),this['clearBtn']['addEventListener']('mousedown',_0x51b437=>{_0x51b437['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x457345=>{_0x457345['preventDefault']();}),document['addEventListener']('click',_0x23f5dd=>{!this['wrapper']['contains'](_0x23f5dd['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(_0x139f98){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x139f98);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x456c70){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35d06b){const _0x3538e9=_0x35d06b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3538e9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3538e9):this['loadAndShow'](_0x3538e9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x40216b){switch(_0x40216b['key']){case'ArrowDown':_0x40216b['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x40216b['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x40216b['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x40216b['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4ceed4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2acee2=this['selectedIndex']+_0x4ceed4;if(_0x2acee2>=0x0&&_0x2acee2<this['filteredItems']['length']){this['selectedIndex']=_0x2acee2,this['updateSelectionHighlight']();const _0x559b70=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x559b70[this['selectedIndex']]&&_0x559b70[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x36ba86=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x36ba86['forEach']((_0x2e14ce,_0x485fe8)=>{_0x2e14ce['classList']['toggle']('keyboard-selected',_0x485fe8===this['selectedIndex']);});}async['loadAndShow'](_0x15bff0){this['showLoading']();try{const _0x3fa053=await this['options']['loadItems'](_0x15bff0);if(this['options']['searchMode']==='server'){let _0x23ebbe=_0x3fa053;this['options']['sortItems']&&(_0x23ebbe=this['options']['sortItems']([..._0x3fa053]));this['filteredItems']=_0x23ebbe;const _0x3abc2b=this['filteredItems']['length']>=this['options']['maxItems'];_0x3abc2b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3abc2b),this['open']();}else this['allItems']=_0x3fa053,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x15bff0);}catch(_0x3e92ac){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3e92ac),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x396b2a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x396b2a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2f5440=this['filteredItems']['length']>=this['options']['maxItems'];_0x2f5440&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2f5440),this['open']();}['renderItems'](_0x1ba49f){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']((_0x3299aa,_0x232675)=>{const _0xebd2d0=document['createElement']('div');_0xebd2d0['className']='autocomplete-select-item',_0xebd2d0['setAttribute']('role','option'),_0xebd2d0['setAttribute']('data-index',_0x232675);const _0x16825c=this['options']['renderItem'](_0x3299aa);let _0xd98fd8='';_0x16825c['icon']&&(_0xd98fd8='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x16825c['iconClass']||'')+'\x22>'+_0x16825c['icon']+'</span>'),_0xebd2d0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xd98fd8+'\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'](_0x16825c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16825c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x16825c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xebd2d0['addEventListener']('click',()=>{this['selectItem'](_0x3299aa);}),_0xebd2d0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x232675,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xebd2d0);}),_0x1ba49f?(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'](_0x57d614){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x57d614)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x457154){this['selectedItem']=_0x457154;const _0x48dc25=this['options']['renderItem'](_0x457154);this['input']['value']=_0x48dc25['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x457154);}['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'](_0x306ad8){if(_0x306ad8){this['selectedItem']=_0x306ad8;const _0xa4352f=this['options']['renderItem'](_0x306ad8);this['input']['value']=_0xa4352f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x2fe559){this['allItems']=_0x2fe559,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'](_0x552f1c){this['input']['placeholder']=_0x552f1c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5613b1=null){const _0x30f5a8=document['getElementById']('admin-menu-container'),_0x45cbe2=document['getElementById']('admin-menu-btn'),_0x5da77d=document['getElementById']('admin-menu');if(!_0x30f5a8||!_0x45cbe2||!_0x5da77d)return;try{!_0x5613b1&&(_0x5613b1=await API['getCurrentUser']());if(_0x5613b1){const _0xe170ec=window['Permissions'],_0x3fef82=_0xe170ec['hasServerPermission'](_0x5613b1,'*')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:manage')||_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')||_0xe170ec['hasTeamPermission'](_0x5613b1,'teams:manage')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:view_details');if(!_0x3fef82)return;_0x30f5a8['hidden']=![];if(!_0xe170ec['hasServerPermission'](_0x5613b1,'*')){const _0x197bb5=_0x5da77d['querySelectorAll']('.admin-menu-item');_0x197bb5['forEach'](_0x12b002=>{const _0x19d149=_0x12b002['querySelector']('.option-text')?.['textContent']?.['trim']();_0x19d149==='Users'&&!_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')&&(_0x12b002['hidden']=!![]),_0x19d149==='Skills'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Settings'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Health'&&(_0x12b002['hidden']=!![]),_0x19d149==='Git\x20History'&&(_0x12b002['hidden']=!![]),_0x19d149==='Roles'&&(_0x12b002['hidden']=!![]);});}_0x45cbe2['addEventListener']('click',_0x1c10ef=>{_0x1c10ef['stopPropagation']();const _0x5c7da5=document['getElementById']('actions-menu');if(_0x5c7da5)_0x5c7da5['hidden']=!![];_0x5da77d['hidden']=!_0x5da77d['hidden'];}),document['addEventListener']('click',_0x470315=>{!_0x5da77d['hidden']&&!_0x45cbe2['contains'](_0x470315['target'])&&!_0x5da77d['contains'](_0x470315['target'])&&(_0x5da77d['hidden']=!![]);}),document['addEventListener']('keydown',_0x1947fc=>{_0x1947fc['key']==='Escape'&&!_0x5da77d['hidden']&&(_0x5da77d['hidden']=!![]);});const _0x2f1c8d=document['getElementById']('server-health-btn');_0x2f1c8d&&_0x2f1c8d['addEventListener']('click',async()=>{_0x5da77d['hidden']=!![];const {openServerHealthModal:_0x1f9acf}=await import('./server-health.js');_0x1f9acf();});}}catch(_0x5e0af6){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5e0af6['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|