@profoundlogic/coderflow-server 0.8.6 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-image/Dockerfile +3 -2
- package/dist/base-image/agent-wrapper.sh +7 -2
- 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/compression-filter.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/memory-utils.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/slack-service.js +1 -0
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-aliases.js +1 -1
- package/dist/lib/task-container-init.js +1 -1
- package/dist/lib/task-context-usage.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/logs.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/slack.js +1 -0
- package/dist/routes/stats.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/admin.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/settings.html +146 -0
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-client.transport-warning.js +1 -0
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.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 _0xcd3f77=window['location']['pathname'],_0x455962=_0xcd3f77['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x455962)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x455962[0x1]),_0x455962[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1381b7={}){const _0x5cc8ca=new URLSearchParams();_0x1381b7['userId']&&_0x5cc8ca['set']('userId',String(_0x1381b7['userId']));_0x1381b7['automation']&&_0x5cc8ca['set']('automation',String(_0x1381b7['automation']));const _0x5dc559=API_BASE+'/tasks/stats'+(_0x5cc8ca['toString']()?'?'+_0x5cc8ca['toString']():''),_0x170f77=await fetch(_0x5dc559);if(!_0x170f77['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x170f77['statusText']);return await _0x170f77['json']();},async 'getTasks'(_0x68b639={}){const _0x538650=new URLSearchParams();_0x68b639['status']&&_0x538650['set']('status',String(_0x68b639['status']));_0x68b639['environment']&&_0x538650['set']('environment',String(_0x68b639['environment']));_0x68b639['automation']&&_0x538650['set']('automation',String(_0x68b639['automation']));if(_0x68b639['include']){const _0x3338ef=Array['isArray'](_0x68b639['include'])?_0x68b639['include']['join'](','):String(_0x68b639['include']);_0x3338ef&&_0x538650['set']('include',_0x3338ef);}_0x68b639['filter']&&_0x538650['set']('filter',String(_0x68b639['filter']));_0x68b639['page']&&_0x538650['set']('page',String(_0x68b639['page']));_0x68b639['limit']&&_0x538650['set']('limit',String(_0x68b639['limit']));_0x68b639['userId']&&_0x538650['set']('userId',String(_0x68b639['userId']));_0x68b639['search']&&_0x538650['set']('search',String(_0x68b639['search']));_0x68b639['includeChildTasks']&&_0x538650['set']('includeChildTasks','true');const _0x481b5c=API_BASE+'/tasks'+(_0x538650['toString']()?'?'+_0x538650['toString']():''),_0x48c0ec=await fetch(_0x481b5c);if(!_0x48c0ec['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x48c0ec['statusText']);return await _0x48c0ec['json']();},async 'getAutomations'(_0x37f92a={}){const _0x2cc2cd=new URLSearchParams();_0x37f92a['environment']&&_0x2cc2cd['set']('environment',String(_0x37f92a['environment']));const _0x4ef98d=await fetch(API_BASE+'/api/automations'+(_0x2cc2cd['toString']()?'?'+_0x2cc2cd['toString']():''));if(!_0x4ef98d['ok']){const _0x5f2166=await _0x4ef98d['json']()['catch'](()=>({}));throw new Error(_0x5f2166['message']||_0x5f2166['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4ef98d['statusText']);}return await _0x4ef98d['json']();},async 'getAutomation'(_0x390db0){const _0xce601e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x390db0));if(!_0xce601e['ok']){const _0xe48625=await _0xce601e['json']()['catch'](()=>({}));throw new Error(_0xe48625['message']||_0xe48625['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0xce601e['statusText']);}return await _0xce601e['json']();},async 'createAutomation'(_0x1bde51){const _0x44c1e1=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bde51||{})});if(!_0x44c1e1['ok']){const _0x3362a3=await _0x44c1e1['json']()['catch'](()=>({}));throw new Error(_0x3362a3['message']||_0x3362a3['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x44c1e1['statusText']);}return await _0x44c1e1['json']();},async 'updateAutomation'(_0x56a7ca,_0x577cd0){const _0x334573=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56a7ca),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x577cd0||{})});if(!_0x334573['ok']){const _0x1d7a3b=await _0x334573['json']()['catch'](()=>({}));throw new Error(_0x1d7a3b['message']||_0x1d7a3b['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x334573['statusText']);}return await _0x334573['json']();},async 'deleteAutomation'(_0x500b05){const _0x220586=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500b05),{'method':'DELETE'});if(!_0x220586['ok']){const _0x349599=await _0x220586['json']()['catch'](()=>({}));throw new Error(_0x349599['message']||_0x349599['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x220586['statusText']);}return await _0x220586['json']();},async 'triggerAutomation'(_0xdecdf3){const _0x418bb4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xdecdf3)+'/trigger',{'method':'POST'});if(!_0x418bb4['ok']){const _0x5e5d87=await _0x418bb4['json']()['catch'](()=>({}));throw new Error(_0x5e5d87['message']||_0x5e5d87['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x418bb4['statusText']);}return await _0x418bb4['json']();},async 'setAutomationEnabled'(_0xac9256,_0x264182){const _0x119858=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xac9256)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x264182})});if(!_0x119858['ok']){const _0x3e32d3=await _0x119858['json']()['catch'](()=>({}));throw new Error(_0x3e32d3['message']||_0x3e32d3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x119858['statusText']);}return await _0x119858['json']();},async 'getAutomationHistory'(_0x572429,_0xa300d3=0x32){const _0x4a43ff=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x572429)+'/history?limit='+encodeURIComponent(String(_0xa300d3)));if(!_0x4a43ff['ok']){const _0x3d5619=await _0x4a43ff['json']()['catch'](()=>({}));throw new Error(_0x3d5619['message']||_0x3d5619['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4a43ff['statusText']);}return await _0x4a43ff['json']();},async 'getTask'(_0x4c2163,_0x22edbb={}){const _0x51f8f7=new URLSearchParams();if(_0x22edbb['include']){const _0x49c479=Array['isArray'](_0x22edbb['include'])?_0x22edbb['include']['join'](','):String(_0x22edbb['include']);if(_0x49c479)_0x51f8f7['set']('include',_0x49c479);}const _0x10a22e=await fetch(API_BASE+'/tasks/'+_0x4c2163+(_0x51f8f7['toString']()?'?'+_0x51f8f7['toString']():''));if(!_0x10a22e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x10a22e['statusText']);return await _0x10a22e['json']();},async 'getTaskResults'(_0x7fcedd){const _0x57ed3d=await fetch(API_BASE+'/tasks/'+_0x7fcedd+'/results');if(!_0x57ed3d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57ed3d['statusText']);return await _0x57ed3d['json']();},async 'getTaskPatches'(_0x41fe6b){const _0x12c162=await fetch(API_BASE+'/tasks/'+_0x41fe6b+'/patches');if(!_0x12c162['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x12c162['statusText']);return await _0x12c162['json']();},async 'getTaskAttachments'(_0x1735b7){const _0x2e49c5=await fetch(API_BASE+'/tasks/'+_0x1735b7+'/attachments');if(!_0x2e49c5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2e49c5['statusText']);return await _0x2e49c5['json']();},async 'uploadAttachments'(_0x58cd6a,_0x5595fa){const _0x39a243=new FormData();for(const _0x48f003 of _0x5595fa){_0x39a243['append']('attachments',_0x48f003);}const _0x32af79=await fetch(API_BASE+'/tasks/'+_0x58cd6a+'/attachments',{'method':'POST','body':_0x39a243});if(!_0x32af79['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x32af79['statusText']);return await _0x32af79['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3831f4=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3831f4['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3831f4['json']();}catch(_0x40b96c){return{'available':![],'reason':_0x40b96c['message']};}},async 'generateTaskName'(_0x9ef1fd){try{const _0x3686ad=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x9ef1fd})});return await _0x3686ad['json']();}catch(_0x4b3082){return{'success':![],'error':_0x4b3082['message']};}},async 'createTask'(_0x2cbe88){let _0x6de749,_0x4b21ca={};if(_0x2cbe88['files']&&_0x2cbe88['files']['length']>0x0){const _0x57b203=new FormData();for(const [_0x13a44f,_0x57f9bf]of Object['entries'](_0x2cbe88)){if(_0x13a44f!=='files'){if(_0x57f9bf==null)continue;typeof _0x57f9bf==='object'?_0x57b203['append'](_0x13a44f,JSON['stringify'](_0x57f9bf)):_0x57b203['append'](_0x13a44f,String(_0x57f9bf));}}for(const _0x4473a7 of _0x2cbe88['files']){_0x57b203['append']('attachments',_0x4473a7);}_0x6de749=_0x57b203;}else _0x4b21ca['Content-Type']='application/json',_0x6de749=JSON['stringify'](_0x2cbe88);const _0x2005f3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b21ca,'body':_0x6de749});if(!_0x2005f3['ok']){const _0xe298f1=await _0x2005f3['json'](),_0x598211=new Error(_0xe298f1['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2005f3['statusText']),{message:_0x2bcafa,..._0x4e7883}=_0xe298f1;Object['assign'](_0x598211,_0x4e7883);throw _0x598211;}return await _0x2005f3['json']();},async 'createTestTask'(_0x10af26){const _0xcd0fa1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10af26)});if(!_0xcd0fa1['ok']){const _0x405eab=await _0xcd0fa1['json']();throw new Error(_0x405eab['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xcd0fa1['statusText']);}return await _0xcd0fa1['json']();},async 'createEphemeralTest'(_0x5b15bd){const _0x127b84=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b15bd)});if(!_0x127b84['ok']){const _0xe657b7=await _0x127b84['json']();throw new Error(_0xe657b7['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x127b84['statusText']);}return await _0x127b84['json']();},async 'createDeployTask'(_0x472e1c){const _0x3bf75d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x472e1c)});if(!_0x3bf75d['ok']){const _0x995740=await _0x3bf75d['json']();throw new Error(_0x995740['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3bf75d['statusText']);}return await _0x3bf75d['json']();},async 'getEnvironments'(){const _0x1d8db1=await fetch(API_BASE+'/environments');if(!_0x1d8db1['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x1d8db1['statusText']);return await _0x1d8db1['json']();},async 'getEnvironment'(_0xad77fd){const _0x409f6f=await fetch(API_BASE+'/environments/'+_0xad77fd);if(!_0x409f6f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x409f6f['statusText']);return await _0x409f6f['json']();},async 'getEnvironmentRepoHistory'(_0x446ff7,_0x5a8fe1,_0x5f3366={}){if(!_0x446ff7||!_0x5a8fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3137b4=new URLSearchParams();if(_0x5f3366['limit'])_0x3137b4['set']('limit',String(_0x5f3366['limit']));if(_0x5f3366['offset'])_0x3137b4['set']('offset',String(_0x5f3366['offset']));if(_0x5f3366['search'])_0x3137b4['set']('search',String(_0x5f3366['search']));if(_0x5f3366['branch'])_0x3137b4['set']('branch',String(_0x5f3366['branch']));const _0x307aca=API_BASE+'/environments/'+encodeURIComponent(_0x446ff7)+'/repos/'+encodeURIComponent(_0x5a8fe1)+'/git/history',_0x1517f4=await fetch(''+_0x307aca+(_0x3137b4['toString']()?'?'+_0x3137b4['toString']():''));if(!_0x1517f4['ok']){const _0x5837e1=await _0x1517f4['json']()['catch'](()=>({}));throw new Error(_0x5837e1['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x1517f4['statusText']);}return await _0x1517f4['json']();},async 'getEnvironmentRepoCommit'(_0x2e6d17,_0x50bee0,_0x20db36){if(!_0x2e6d17||!_0x50bee0||!_0x20db36)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5201a2=API_BASE+'/environments/'+encodeURIComponent(_0x2e6d17)+'/repos/'+encodeURIComponent(_0x50bee0)+'/git/commits/'+encodeURIComponent(_0x20db36),_0x2a295a=await fetch(_0x5201a2);if(!_0x2a295a['ok']){const _0x30fc38=await _0x2a295a['json']()['catch'](()=>({}));throw new Error(_0x30fc38['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2a295a['statusText']);}return await _0x2a295a['json']();},async 'getEnvironmentRepoBranches'(_0x598757,_0x1175a9){if(!_0x598757||!_0x1175a9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1f3fb5=API_BASE+'/environments/'+encodeURIComponent(_0x598757)+'/repos/'+encodeURIComponent(_0x1175a9)+'/git/branches',_0x168d30=await fetch(_0x1f3fb5);if(!_0x168d30['ok']){const _0x1e719a=await _0x168d30['json']()['catch'](()=>({}));throw new Error(_0x1e719a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x168d30['statusText']);}return await _0x168d30['json']();},async 'revertEnvironmentRepoCommit'(_0x2fd8f1,_0x2c4f09,_0x3f3c70,_0x140a0d={}){if(!_0x2fd8f1||!_0x2c4f09||!_0x3f3c70)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2e2f3e=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2fd8f1)+'/repos/'+encodeURIComponent(_0x2c4f09)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3f3c70,..._0x140a0d})});if(!_0x2e2f3e['ok']){const _0x4e2c5e=await _0x2e2f3e['json']()['catch'](()=>({}));throw new Error(_0x4e2c5e['message']||_0x4e2c5e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2e2f3e['statusText']);}return await _0x2e2f3e['json']();},async 'getTemplates'(_0xb4c23={}){const _0x36c4d9=new URLSearchParams();if(_0xb4c23['include']){const _0x88261b=Array['isArray'](_0xb4c23['include'])?_0xb4c23['include']['join'](','):String(_0xb4c23['include']);if(_0x88261b)_0x36c4d9['set']('include',_0x88261b);}const _0x30cfef=await fetch(API_BASE+'/templates'+(_0x36c4d9['toString']()?'?'+_0x36c4d9['toString']():''));if(!_0x30cfef['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x30cfef['statusText']);return await _0x30cfef['json']();},async 'getTemplatesForEnvironment'(_0x334b78,_0x58cb63={}){if(!_0x334b78)throw new Error('Environment\x20name\x20is\x20required');const _0xf5de51=new URLSearchParams();if(_0x58cb63['include']){const _0x565edd=Array['isArray'](_0x58cb63['include'])?_0x58cb63['include']['join'](','):String(_0x58cb63['include']);if(_0x565edd)_0xf5de51['set']('include',_0x565edd);}const _0x33ed3a=await fetch(API_BASE+'/templates/'+_0x334b78+(_0xf5de51['toString']()?'?'+_0xf5de51['toString']():''));if(!_0x33ed3a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x334b78+':\x20'+_0x33ed3a['statusText']);return await _0x33ed3a['json']();},async 'getTemplate'(_0x3f8fb0,_0x1a25b0,_0x3f6471={}){if(!_0x3f8fb0||!_0x1a25b0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x29311a=new URLSearchParams();if(_0x3f6471['include']){const _0x4342d1=Array['isArray'](_0x3f6471['include'])?_0x3f6471['include']['join'](','):String(_0x3f6471['include']);if(_0x4342d1)_0x29311a['set']('include',_0x4342d1);}const _0x47c72c=await fetch(API_BASE+'/templates/'+_0x3f8fb0+'/'+_0x1a25b0+(_0x29311a['toString']()?'?'+_0x29311a['toString']():''));if(!_0x47c72c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x47c72c['statusText']);return await _0x47c72c['json']();},async 'getTaskLogs'(_0x4a1d97,_0x3b51b7={}){if(!_0x4a1d97)throw new Error('Task\x20ID\x20is\x20required');const _0x43e109=new URLSearchParams();_0x3b51b7['tail']&&_0x43e109['set']('tail',String(_0x3b51b7['tail']));const _0x5da035=await fetch(API_BASE+'/tasks/'+_0x4a1d97+'/logs'+(_0x43e109['toString']()?'?'+_0x43e109['toString']():''));if(!_0x5da035['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x5da035['statusText']);return await _0x5da035['text']();},async 'getContainers'(){const _0x479f04=await fetch(API_BASE+'/containers');if(!_0x479f04['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x479f04['statusText']);return await _0x479f04['json']();},async 'getContainer'(_0x1a8e8b){const _0x324791=await fetch(API_BASE+'/containers/'+_0x1a8e8b);if(!_0x324791['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x324791['statusText']);return await _0x324791['json']();},async 'startInteractiveContainer'(_0x344cca){const _0x4b919f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344cca)});if(!_0x4b919f['ok']){const _0x181bd5=await _0x4b919f['json']()['catch'](()=>({}));throw new Error(_0x181bd5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4b919f['statusText']);}return await _0x4b919f['json']();},async 'startContainerCodeServer'(_0x46901a,_0xa99fdb={}){if(!_0x46901a)throw new Error('Container\x20ID\x20is\x20required');const _0x16cb84=new URLSearchParams();_0xa99fdb['theme']&&_0x16cb84['set']('theme',_0xa99fdb['theme']);const _0x35833b=await fetch(API_BASE+'/containers/'+_0x46901a+'/code-server'+(_0x16cb84['toString']()?'?'+_0x16cb84['toString']():'')),_0x4293f0=await _0x35833b['json']()['catch'](()=>({}));if(!_0x35833b['ok'])throw new Error(_0x4293f0['message']||_0x4293f0['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x35833b['statusText']);return _0x4293f0;},async 'stopContainer'(_0x28732c){const _0x59db5d=await fetch(API_BASE+'/containers/'+_0x28732c,{'method':'DELETE'});if(!_0x59db5d['ok']){const _0x5c533f=await _0x59db5d['json']()['catch'](()=>({}));throw new Error(_0x5c533f['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x59db5d['statusText']);}return await _0x59db5d['json']();},async 'stopTask'(_0x597fc4){if(!_0x597fc4)throw new Error('Task\x20ID\x20is\x20required');const _0x39fb9a=await fetch(API_BASE+'/tasks/'+_0x597fc4+'/stop',{'method':'POST'});if(!_0x39fb9a['ok']){const _0x2f9b91=await _0x39fb9a['json']()['catch'](()=>({}));throw new Error(_0x2f9b91['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x39fb9a['statusText']);}return await _0x39fb9a['json']();},async 'interruptTask'(_0x207deb){if(!_0x207deb)throw new Error('Task\x20ID\x20is\x20required');const _0x21b1a6=await fetch(API_BASE+'/tasks/'+_0x207deb+'/interrupt',{'method':'POST'});if(!_0x21b1a6['ok']){const _0x273817=await _0x21b1a6['json']()['catch'](()=>({}));throw new Error(_0x273817['error']||_0x273817['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x21b1a6['statusText']);}return await _0x21b1a6['json']();},async 'startTask'(_0x5c0bf1){if(!_0x5c0bf1)throw new Error('Task\x20ID\x20is\x20required');const _0xf2ef5f=await fetch(API_BASE+'/tasks/'+_0x5c0bf1+'/start',{'method':'POST'});if(!_0xf2ef5f['ok']){const _0x513ce3=await _0xf2ef5f['json']()['catch'](()=>({}));throw new Error(_0x513ce3['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf2ef5f['statusText']);}return await _0xf2ef5f['json']();},async 'deleteTask'(_0x3f357a){if(!_0x3f357a)throw new Error('Task\x20ID\x20is\x20required');const _0xbc0f7f=await fetch(API_BASE+'/tasks/'+_0x3f357a,{'method':'DELETE'});if(!_0xbc0f7f['ok']){const _0x1aec35=await _0xbc0f7f['json']()['catch'](()=>({}));throw new Error(_0x1aec35['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xbc0f7f['statusText']);}return await _0xbc0f7f['json']();},async 'refreshTasksFromDisk'(){const _0x32844d=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x32844d['ok']){const _0x16fee3=await _0x32844d['json']()['catch'](()=>({}));throw new Error(_0x16fee3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x32844d['statusText']);}return await _0x32844d['json']();},async 'approveTask'(_0x5a3023,_0x4ab29a={}){if(!_0x5a3023)throw new Error('Task\x20ID\x20is\x20required');const _0x475d08={'commit_message':_0x4ab29a['commit_message']||'','pull':_0x4ab29a['pull']??![],'push':_0x4ab29a['push']??![],'conflict_strategy':_0x4ab29a['conflict_strategy']||'rebase'};_0x4ab29a['new_branch']&&(_0x475d08['new_branch']=_0x4ab29a['new_branch']);const _0x47f346=await fetch(API_BASE+'/tasks/'+_0x5a3023+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x475d08)});if(!_0x47f346['ok']){const _0x1acc48=await _0x47f346['json']()['catch'](()=>({}));let _0x457af6=_0x1acc48['error']||_0x1acc48['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x47f346['statusText'];if(_0x1acc48['results']&&Array['isArray'](_0x1acc48['results'])){const _0x3400d4=_0x1acc48['results']['filter'](_0x46aaca=>!_0x46aaca['success']&&_0x46aaca['error']);_0x3400d4['length']>0x0&&(_0x457af6=_0x3400d4[0x0]['error']);}const _0x1c13bc=new Error(_0x457af6);_0x1c13bc['hasConflicts']=_0x1acc48['results']?.['some'](_0x2f2f0d=>_0x2f2f0d['conflict'])||![];throw _0x1c13bc;}return await _0x47f346['json']();},async 'getPullRequestInfo'(_0xbd5a93){if(!_0xbd5a93)throw new Error('Task\x20ID\x20is\x20required');const _0x3e90af=await fetch(API_BASE+'/tasks/'+_0xbd5a93+'/pull-request-info');if(!_0x3e90af['ok']){const _0x3ed8c2=await _0x3e90af['json']()['catch'](()=>({}));throw new Error(_0x3ed8c2['error']||_0x3ed8c2['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3e90af['statusText']);}return await _0x3e90af['json']();},async 'createPullRequests'(_0x15b7dd,_0x2ab332){if(!_0x15b7dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ab332||!Array['isArray'](_0x2ab332))throw new Error('repos\x20array\x20is\x20required');const _0x56391e=await fetch(API_BASE+'/tasks/'+_0x15b7dd+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2ab332})});if(!_0x56391e['ok']){const _0x4c12b2=await _0x56391e['json']()['catch'](()=>({}));let _0x4d4aea=_0x4c12b2['error']||_0x4c12b2['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x56391e['statusText'];if(_0x4c12b2['results']&&Array['isArray'](_0x4c12b2['results'])){const _0x2e3e2f=_0x4c12b2['results']['filter'](_0x32e730=>!_0x32e730['success']&&_0x32e730['error']);_0x2e3e2f['length']>0x0&&(_0x4d4aea=_0x2e3e2f[0x0]['error']);}throw new Error(_0x4d4aea);}return await _0x56391e['json']();},async 'syncRepos'(_0x3a803a){if(!_0x3a803a)throw new Error('Task\x20ID\x20is\x20required');const _0x2b21ca=await fetch(API_BASE+'/tasks/'+_0x3a803a+'/sync-repos',{'method':'POST'});if(!_0x2b21ca['ok']){const _0x210e55=await _0x2b21ca['json']()['catch'](()=>({}));throw new Error(_0x210e55['error']||_0x210e55['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2b21ca['statusText']);}return await _0x2b21ca['json']();},async 'getIbmiSyncInfo'(_0x4acbf8){if(!_0x4acbf8)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd36e=await fetch(API_BASE+'/tasks/'+_0x4acbf8+'/ibmi-sync-info');if(!_0x2dd36e['ok']){const _0x2e5ac7=await _0x2dd36e['json']()['catch'](()=>({}));throw new Error(_0x2e5ac7['error']||_0x2e5ac7['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2dd36e['json']();},async 'getSyncFiles'(_0x2ce93f){if(!_0x2ce93f)throw new Error('Task\x20ID\x20is\x20required');const _0x555c64=await fetch(API_BASE+'/tasks/'+_0x2ce93f+'/sync-to-ibmi/files');if(!_0x555c64['ok']){const _0x26c1b4=await _0x555c64['json']()['catch'](()=>({}));throw new Error(_0x26c1b4['error']||_0x26c1b4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x555c64['json']();},async 'syncToIbmi'(_0x1b7d8a,_0x1036ac,_0x160f1f=null,_0x521000=null,_0x1f4302=null){if(!_0x1b7d8a)throw new Error('Task\x20ID\x20is\x20required');const _0x250f5d={'library':_0x1036ac};if(_0x160f1f)_0x250f5d['user']=_0x160f1f;if(_0x521000)_0x250f5d['password']=_0x521000;if(_0x1f4302)_0x250f5d['files']=_0x1f4302;const _0x9230d1=await fetch(API_BASE+'/tasks/'+_0x1b7d8a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x250f5d)});if(!_0x9230d1['ok']){const _0x1ef749=await _0x9230d1['json']()['catch'](()=>({}));throw new Error(_0x1ef749['error']||_0x1ef749['message']||'Sync\x20failed');}return await _0x9230d1['json']();},async 'getIbmiSyncLog'(_0x397866){if(!_0x397866)throw new Error('Task\x20ID\x20is\x20required');const _0x695c=await fetch(API_BASE+'/tasks/'+_0x397866+'/ibmi-sync-log');if(!_0x695c['ok']){const _0x3a0dec=await _0x695c['json']()['catch'](()=>({}));throw new Error(_0x3a0dec['error']||_0x3a0dec['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x695c['json']();},async 'pullChanges'(_0x2933de){if(!_0x2933de)throw new Error('Task\x20ID\x20is\x20required');const _0x304c71=await fetch(API_BASE+'/tasks/'+_0x2933de+'/pull-changes',{'method':'POST'});if(!_0x304c71['ok']){const _0x5a53fb=await _0x304c71['json']()['catch'](()=>({}));throw new Error(_0x5a53fb['error']||_0x5a53fb['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x304c71['statusText']);}return await _0x304c71['json']();},async 'readFile'(_0x5218d7,_0x15ebd2){if(!_0x5218d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15ebd2)throw new Error('File\x20path\x20is\x20required');const _0x45ac75=await fetch(API_BASE+'/tasks/'+_0x5218d7+'/files?path='+encodeURIComponent(_0x15ebd2));if(!_0x45ac75['ok']){const _0x49b85c=await _0x45ac75['json']()['catch'](()=>({}));throw new Error(_0x49b85c['error']||_0x49b85c['message']||'Failed\x20to\x20read\x20file:\x20'+_0x45ac75['statusText']);}return await _0x45ac75['json']();},'getTaskFileDownloadUrl'(_0x13a371,_0x1ce86b){if(!_0x13a371)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ce86b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x13a371+'/files/download?path='+encodeURIComponent(_0x1ce86b);},async 'writeFile'(_0x1b2179,_0xd019d6,_0x3c9efe){if(!_0x1b2179)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd019d6)throw new Error('File\x20path\x20is\x20required');if(_0x3c9efe===undefined)throw new Error('Content\x20is\x20required');const _0x46deb0=await fetch(API_BASE+'/tasks/'+_0x1b2179+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd019d6,'content':_0x3c9efe})});if(!_0x46deb0['ok']){const _0x2dc115=await _0x46deb0['json']()['catch'](()=>({}));throw new Error(_0x2dc115['error']||_0x2dc115['message']||'Failed\x20to\x20write\x20file:\x20'+_0x46deb0['statusText']);}return await _0x46deb0['json']();},async 'uploadTaskFiles'(_0x3beb5c,_0x535cf0,_0x2b5edf){if(!_0x3beb5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x535cf0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2b5edf||_0x2b5edf['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x47fc4b=new FormData();_0x47fc4b['append']('targetDir',_0x535cf0);for(const _0x3b154b of _0x2b5edf){_0x47fc4b['append']('files',_0x3b154b,_0x3b154b['name']);}const _0x37b56d=await fetch(API_BASE+'/tasks/'+_0x3beb5c+'/files/upload',{'method':'POST','body':_0x47fc4b});if(!_0x37b56d['ok']){const _0x54fd37=await _0x37b56d['json']()['catch'](()=>({}));throw new Error(_0x54fd37['error']||_0x54fd37['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x37b56d['statusText']);}return await _0x37b56d['json']();},async 'createDirectory'(_0x208c20,_0x4b8221){if(!_0x208c20)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4b8221)throw new Error('Directory\x20path\x20is\x20required');const _0x54646b=await fetch(API_BASE+'/tasks/'+_0x208c20+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4b8221})});if(!_0x54646b['ok']){const _0x175e5c=await _0x54646b['json']()['catch'](()=>({}));throw new Error(_0x175e5c['error']||_0x175e5c['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x54646b['statusText']);}return await _0x54646b['json']();},async 'renamePath'(_0x1a536b,_0x15a1aa,_0x488b04){if(!_0x1a536b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15a1aa)throw new Error('Source\x20path\x20is\x20required');if(!_0x488b04)throw new Error('Destination\x20path\x20is\x20required');const _0x486ab9=await fetch(API_BASE+'/tasks/'+_0x1a536b+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x15a1aa,'newPath':_0x488b04})});if(!_0x486ab9['ok']){const _0x38c4ab=await _0x486ab9['json']()['catch'](()=>({}));throw new Error(_0x38c4ab['error']||_0x38c4ab['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x486ab9['statusText']);}return await _0x486ab9['json']();},async 'deleteFile'(_0x284094,_0x28c735){if(!_0x284094)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28c735)throw new Error('File\x20path\x20is\x20required');const _0x5a273f=await fetch(API_BASE+'/tasks/'+_0x284094+'/files?path='+encodeURIComponent(_0x28c735),{'method':'DELETE'});if(!_0x5a273f['ok']){const _0x5d8bd9=await _0x5a273f['json']()['catch'](()=>({}));throw new Error(_0x5d8bd9['error']||_0x5d8bd9['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5a273f['statusText']);}return await _0x5a273f['json']();},async 'deleteDirectory'(_0x103219,_0x16e46a){if(!_0x103219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16e46a)throw new Error('Directory\x20path\x20is\x20required');const _0x4f0fe6=await fetch(API_BASE+'/tasks/'+_0x103219+'/files/directory?path='+encodeURIComponent(_0x16e46a),{'method':'DELETE'});if(!_0x4f0fe6['ok']){const _0x1fca04=await _0x4f0fe6['json']()['catch'](()=>({}));throw new Error(_0x1fca04['error']||_0x1fca04['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f0fe6['statusText']);}return await _0x4f0fe6['json']();},async 'discardFile'(_0x201f71,_0x322427,_0x42941c){if(!_0x201f71)throw new Error('Task\x20ID\x20is\x20required');if(!_0x322427)throw new Error('File\x20path\x20is\x20required');if(!_0x42941c)throw new Error('Repository\x20path\x20is\x20required');const _0x49c4b3=await fetch(API_BASE+'/tasks/'+_0x201f71+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x322427,'repoPath':_0x42941c})});if(!_0x49c4b3['ok']){const _0x25fdc6=await _0x49c4b3['json']()['catch'](()=>({}));throw new Error(_0x25fdc6['error']||_0x25fdc6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x49c4b3['statusText']);}return await _0x49c4b3['json']();},async 'followUpTask'(_0x1c9922,_0x2673a4={}){if(!_0x1c9922)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2673a4['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x457954,_0xffb030={};if(_0x2673a4['files']&&_0x2673a4['files']['length']>0x0){const _0x11eeca=new FormData();_0x11eeca['append']('instructions',_0x2673a4['instructions']);for(const _0x374ecf of _0x2673a4['files']){_0x11eeca['append']('attachments',_0x374ecf);}_0x457954=_0x11eeca;}else _0xffb030['Content-Type']='application/json',_0x457954=JSON['stringify']({'instructions':_0x2673a4['instructions']});const _0xfcd7c6=await fetch(API_BASE+'/tasks/'+_0x1c9922+'/follow-up',{'method':'POST','headers':_0xffb030,'body':_0x457954});if(!_0xfcd7c6['ok']){const _0x17c23d=await _0xfcd7c6['json']()['catch'](()=>({}));throw new Error(_0x17c23d['error']||_0x17c23d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xfcd7c6['statusText']);}return await _0xfcd7c6['json']();},async 'getTaskRewindPoints'(_0x51fcaa){if(!_0x51fcaa)throw new Error('Task\x20ID\x20is\x20required');const _0x13d092=await fetch(API_BASE+'/tasks/'+_0x51fcaa+'/rewind-points');if(!_0x13d092['ok']){const _0x5d01b1=await _0x13d092['json']()['catch'](()=>({}));throw new Error(_0x5d01b1['error']||_0x5d01b1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13d092['statusText']);}return await _0x13d092['json']();},async 'rewindTask'(_0x1d36f4,_0x46e95e={}){if(!_0x1d36f4)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc985=Number['isInteger'](_0x46e95e['targetFollowUpCount'])?_0x46e95e['targetFollowUpCount']:0x0,_0x57cdb3={'targetFollowUpCount':_0x5dc985};typeof _0x46e95e['instructions']==='string'&&_0x46e95e['instructions']['trim']()&&(_0x57cdb3['instructions']=_0x46e95e['instructions']['trim']());typeof _0x46e95e['rewindFiles']==='boolean'&&(_0x57cdb3['rewindFiles']=_0x46e95e['rewindFiles']);const _0x1c7dcc=await fetch(API_BASE+'/tasks/'+_0x1d36f4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57cdb3)});if(!_0x1c7dcc['ok']){const _0x50cc4e=await _0x1c7dcc['json']()['catch'](()=>({}));throw new Error(_0x50cc4e['error']||_0x50cc4e['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x1c7dcc['statusText']);}return await _0x1c7dcc['json']();},async 'login'(_0xc206af,_0x92b686){const _0x5665c3=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc206af,'password':_0x92b686})});if(!_0x5665c3['ok']){const _0xa2afd8=await _0x5665c3['json']();throw new Error(_0xa2afd8['message']||'Login\x20failed');}return await _0x5665c3['json']();},async 'logout'(){const _0x16718c=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x16718c['ok']){const _0x471a58=await _0x16718c['json']();throw new Error(_0x471a58['message']||'Logout\x20failed');}return await _0x16718c['json']();},async 'getCurrentUser'(){const _0x438a2b=await fetch(API_BASE+'/auth/me');if(!_0x438a2b['ok'])throw new Error('Not\x20authenticated');const _0x3480eb=await _0x438a2b['json']();return _0x3480eb['user'];},async 'getRolesInfo'(){const _0x1df6fe=await fetch(API_BASE+'/users/roles');if(!_0x1df6fe['ok']){const _0x1224d6=await _0x1df6fe['json']();throw new Error(_0x1224d6['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1df6fe['json']();},async 'getUsers'(){const _0x569328=await fetch(API_BASE+'/users');if(!_0x569328['ok']){const _0x4c373f=await _0x569328['json']();throw new Error(_0x4c373f['message']||'Failed\x20to\x20get\x20users');}return await _0x569328['json']();},async 'getUser'(_0x14bedd){const _0x2e98d0=await fetch(API_BASE+'/users/'+_0x14bedd);if(!_0x2e98d0['ok']){const _0x2b3429=await _0x2e98d0['json']();throw new Error(_0x2b3429['message']||'Failed\x20to\x20get\x20user');}return await _0x2e98d0['json']();},async 'createUser'(_0x362102){const _0x5cf89d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x362102)});if(!_0x5cf89d['ok']){const _0x233dc0=await _0x5cf89d['json']();throw new Error(_0x233dc0['message']||'Failed\x20to\x20create\x20user');}return await _0x5cf89d['json']();},async 'updateUser'(_0x1d2c30,_0x31b12f){const _0x25a5d6=await fetch(API_BASE+'/users/'+_0x1d2c30,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31b12f)});if(!_0x25a5d6['ok']){const _0x1c3d88=await _0x25a5d6['json']();throw new Error(_0x1c3d88['message']||'Failed\x20to\x20update\x20user');}return await _0x25a5d6['json']();},async 'deleteUser'(_0x47dadc){const _0xdd6006=await fetch(API_BASE+'/users/'+_0x47dadc,{'method':'DELETE'});if(!_0xdd6006['ok']){const _0x14907f=await _0xdd6006['json']();throw new Error(_0x14907f['message']||'Failed\x20to\x20delete\x20user');}return await _0xdd6006['json']();},async 'stopAllContainers'(){const _0xe89d9a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2fe6f8=await _0xe89d9a['json']()['catch'](()=>({}));if(!_0xe89d9a['ok'])throw new Error(_0x2fe6f8['message']||_0x2fe6f8['error']||'Failed\x20to\x20stop\x20containers');return _0x2fe6f8;},async 'removeStoppedContainers'(){const _0x499e2b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4f70b4=await _0x499e2b['json']()['catch'](()=>({}));if(!_0x499e2b['ok'])throw new Error(_0x4f70b4['message']||_0x4f70b4['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4f70b4;},async 'pruneDockerResources'(){const _0x413eb6=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x10772a=await _0x413eb6['json']()['catch'](()=>({}));if(!_0x413eb6['ok'])throw new Error(_0x10772a['message']||_0x10772a['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x10772a;},async 'getUpdateSettings'(){const _0x169903=await fetch(API_BASE+'/health/update-settings'),_0x5e4a8a=await _0x169903['json']()['catch'](()=>({}));if(!_0x169903['ok'])throw new Error(_0x5e4a8a['message']||_0x5e4a8a['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5e4a8a;},async 'applyServerUpdate'(_0x4fc500){const _0x24c4ac=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x4fc500})}),_0x539366=await _0x24c4ac['json']()['catch'](()=>({}));if(!_0x24c4ac['ok']){const _0x435faf=new Error(_0x539366['message']||_0x539366['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x539366['output']!==undefined)_0x435faf['output']=_0x539366['output'];if(_0x539366['error']!==undefined)_0x435faf['commandError']=_0x539366['error'];throw _0x435faf;}return _0x539366;},async 'restartServer'(){const _0x36c59c=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x496aa5=await _0x36c59c['json']()['catch'](()=>({}));if(!_0x36c59c['ok'])throw new Error(_0x496aa5['message']||_0x496aa5['error']||'Failed\x20to\x20restart\x20server');return _0x496aa5;},async 'createPasswordToken'(_0x59ca27,_0x4dfc96='setup',_0x2cd5a2=![]){const _0x1580d8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59ca27,'type':_0x4dfc96,'sendEmail':_0x2cd5a2})});if(!_0x1580d8['ok']){const _0xca0c5=await _0x1580d8['json']();throw new Error(_0xca0c5['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1580d8['json']();},async 'getEmailConfig'(){const _0x5bce62=await fetch(API_BASE+'/password/email-config');if(!_0x5bce62['ok']){const _0x10c667=await _0x5bce62['json']();throw new Error(_0x10c667['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5bce62['json']();},async 'updateTaskName'(_0xc10d60,_0x173a73){const _0x1bdeb9=await fetch(API_BASE+'/tasks/'+_0xc10d60,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x173a73})});if(!_0x1bdeb9['ok']){const _0x33935a=await _0x1bdeb9['json']();throw new Error(_0x33935a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1bdeb9['json']();},async 'pinTask'(_0x3999e9,_0x8e739,_0x5a45b1=null){if(!_0x3999e9)throw new Error('Task\x20ID\x20is\x20required');const _0x17b923={'pinned':_0x8e739};_0x5a45b1&&_0x5a45b1['length']>0x0&&(_0x17b923['additionalTaskIds']=_0x5a45b1);const _0x2c119f=await fetch(API_BASE+'/tasks/'+_0x3999e9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17b923)});if(!_0x2c119f['ok']){const _0x572e08=await _0x2c119f['json']();throw new Error(_0x572e08['error']||'Failed\x20to\x20pin\x20task');}return await _0x2c119f['json']();},async 'setTaskWinner'(_0x45892a,_0x1641dc,_0x306735=[]){if(!_0x45892a)throw new Error('Task\x20ID\x20is\x20required');const _0x139709=await fetch(API_BASE+'/tasks/'+_0x45892a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1641dc,'siblings':_0x306735})});if(!_0x139709['ok']){const _0x4479b3=await _0x139709['json']();throw new Error(_0x4479b3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x139709['json']();},async 'setTaskLoser'(_0x3b699c,_0x27ff41){if(!_0x3b699c)throw new Error('Task\x20ID\x20is\x20required');const _0x83cd00=await fetch(API_BASE+'/tasks/'+_0x3b699c+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x27ff41})});if(!_0x83cd00['ok']){const _0x368afe=await _0x83cd00['json']();throw new Error(_0x368afe['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x83cd00['json']();},async 'createTaskGroup'(_0x37fc0d){const _0x512cc3=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37fc0d)});if(!_0x512cc3['ok']){const _0xb4e940=await _0x512cc3['json']();throw new Error(_0xb4e940['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x512cc3['json']();},async 'getTaskGroups'(_0x540e8c={}){const _0x26bda4=new URLSearchParams();if(_0x540e8c['userId'])_0x26bda4['set']('userId',String(_0x540e8c['userId']));if(_0x540e8c['status'])_0x26bda4['set']('status',String(_0x540e8c['status']));if(_0x540e8c['limit'])_0x26bda4['set']('limit',String(_0x540e8c['limit']));const _0xae2bcb=API_BASE+'/tasks/groups'+(_0x26bda4['toString']()?'?'+_0x26bda4['toString']():''),_0x65f93e=await fetch(_0xae2bcb);if(!_0x65f93e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x65f93e['json']();},async 'getTaskGroup'(_0x249986){const _0x24d517=await fetch(API_BASE+'/tasks/groups/'+_0x249986);if(!_0x24d517['ok']){const _0x2ce24e=await _0x24d517['json']();throw new Error(_0x2ce24e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x24d517['json']();},async 'updateTaskGroup'(_0x26122d,_0x8bc5e3,_0x30267e){const _0x193d2f=await fetch(API_BASE+'/tasks/'+_0x26122d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x8bc5e3,'groupIndex':_0x30267e})});if(!_0x193d2f['ok']){const _0x88fb55=await _0x193d2f['json']();throw new Error(_0x88fb55['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x193d2f['json']();},async 'removeTaskFromGroup'(_0x152976){return this['updateTaskGroup'](_0x152976,null,null);},async 'deleteTaskGroup'(_0x254cd0,_0x4d89ac=![]){const _0x49fefa=_0x4d89ac?'?deleteTasks=true':'',_0x295ce5=await fetch(API_BASE+'/tasks/groups/'+_0x254cd0+_0x49fefa,{'method':'DELETE'});if(!_0x295ce5['ok']){const _0x39c05f=await _0x295ce5['json']();throw new Error(_0x39c05f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5cd507,_0x4362ba){const _0x5c2ef7=await fetch(API_BASE+'/tasks/groups/'+_0x5cd507+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4362ba})});if(!_0x5c2ef7['ok']){const _0xf72933=await _0x5c2ef7['json']();throw new Error(_0xf72933['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5c2ef7['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x425dda){if(!_0x425dda)throw new Error('Task\x20ID\x20is\x20required');const _0x3d8ca2=await fetch(API_BASE+'/tasks/'+_0x425dda+'/comments');if(!_0x3d8ca2['ok']){const _0x2b7e82=await _0x3d8ca2['json']()['catch'](()=>({}));throw new Error(_0x2b7e82['error']||'Failed\x20to\x20get\x20comments');}return await _0x3d8ca2['json']();},async 'addComment'(_0x101b19,_0x25bee6){if(!_0x101b19)throw new Error('Task\x20ID\x20is\x20required');if(!_0x25bee6)throw new Error('Comment\x20content\x20is\x20required');const _0x590211=await fetch(API_BASE+'/tasks/'+_0x101b19+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25bee6})});if(!_0x590211['ok']){const _0x2686b1=await _0x590211['json']()['catch'](()=>({}));throw new Error(_0x2686b1['error']||'Failed\x20to\x20add\x20comment');}return await _0x590211['json']();},async 'updateComment'(_0xcdc24d,_0x2c2976,_0x3b9846){if(!_0xcdc24d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c2976)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3b9846)throw new Error('Comment\x20content\x20is\x20required');const _0x9f0c23=await fetch(API_BASE+'/tasks/'+_0xcdc24d+'/comments/'+_0x2c2976,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3b9846})});if(!_0x9f0c23['ok']){const _0x1b6f90=await _0x9f0c23['json']()['catch'](()=>({}));throw new Error(_0x1b6f90['error']||'Failed\x20to\x20update\x20comment');}return await _0x9f0c23['json']();},async 'deleteComment'(_0x2b4b08,_0x285d38){if(!_0x2b4b08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x285d38)throw new Error('Comment\x20ID\x20is\x20required');const _0x2f5854=await fetch(API_BASE+'/tasks/'+_0x2b4b08+'/comments/'+_0x285d38,{'method':'DELETE'});if(!_0x2f5854['ok']){const _0x3c2a24=await _0x2f5854['json']()['catch'](()=>({}));throw new Error(_0x3c2a24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2f5854['json']();},async 'createObjective'(_0x34cf44){const _0xbf3674={'objective':!![],'name':_0x34cf44['name']||'','environment':_0x34cf44['environment']||null,'agents':_0x34cf44['agents']||[],'branches':_0x34cf44['branches']||{},'isPinned':_0x34cf44['isPinned']||![],'parentObjectiveId':_0x34cf44['parentObjectiveId']||null,'env_vars':_0x34cf44['envVars']||{},'parameters':{'instructions':_0x34cf44['instructions']||''},'files':_0x34cf44['files']||[],'jira':_0x34cf44['jira']||null};return this['createTask'](_0xbf3674);},async 'updateObjective'(_0x2574b3,_0x35ca36,_0x6a4ef2=[],_0x53f79d=[]){let _0x74939f,_0x2a616a={};const _0x97da96={..._0x35ca36};_0x53f79d&&_0x53f79d['length']>0x0&&(_0x97da96['removeAttachments']=_0x53f79d);if(_0x6a4ef2&&_0x6a4ef2['length']>0x0){const _0x2c525c=new FormData();for(const [_0x1c0eea,_0x2f1d25]of Object['entries'](_0x97da96)){if(_0x2f1d25==null)continue;typeof _0x2f1d25==='object'?_0x2c525c['append'](_0x1c0eea,JSON['stringify'](_0x2f1d25)):_0x2c525c['append'](_0x1c0eea,String(_0x2f1d25));}for(const _0x52df5e of _0x6a4ef2){_0x2c525c['append']('attachments',_0x52df5e);}_0x74939f=_0x2c525c;}else _0x2a616a['Content-Type']='application/json',_0x74939f=JSON['stringify'](_0x97da96);const _0x450449=await fetch(API_BASE+'/tasks/'+_0x2574b3,{'method':'PATCH','headers':_0x2a616a,'body':_0x74939f});if(!_0x450449['ok']){const _0x1839eb=await _0x450449['json']();throw new Error(_0x1839eb['error']||'Failed\x20to\x20update\x20objective');}return await _0x450449['json']();},async 'deleteObjective'(_0x40c5cb){return this['deleteTask'](_0x40c5cb);},async 'launchObjective'(_0xf1ac85,_0x572636={}){const _0x3f5d21=await fetch(API_BASE+'/tasks/'+_0xf1ac85+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572636)});if(!_0x3f5d21['ok']){const _0x2beeaa=await _0x3f5d21['json']();throw new Error(_0x2beeaa['error']||'Failed\x20to\x20launch\x20objective');}return await _0x3f5d21['json']();},async 'getObjectiveAttachments'(_0x502939){return this['getTaskAttachments'](_0x502939);},async 'createJudgeTask'({environment:_0x20d4fe,judgeAgent:_0x4be713,groupId:_0x4db5b1,taskIds:_0x426187,judgeCustomInstructions:_0xadf2c6,isPinned:_0x31bc43}){const _0x2348c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x20d4fe,'judgeAgent':_0x4be713,'groupId':_0x4db5b1,'taskIds':_0x426187,'judgeCustomInstructions':_0xadf2c6,'isPinned':_0x31bc43})});if(!_0x2348c4['ok']){const _0x3fc757=await _0x2348c4['json']();throw new Error(_0x3fc757['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2348c4['json']();},async 'getJudgeTasks'(_0x1ed707){const _0x54037f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1ed707));if(!_0x54037f['ok']){const _0x101334=await _0x54037f['json']();throw new Error(_0x101334['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x54037f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xf9b284,_0x5bf6bc,_0x3e6a25=''){const _0x24d2a4=await fetch(API_BASE+'/tasks/'+_0xf9b284+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x5bf6bc,'customPreamble':_0x3e6a25})});if(!_0x24d2a4['ok']){const _0x585532=await _0x24d2a4['json']();throw new Error(_0x585532['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x24d2a4['json']();},async 'getJiraConfig'(){const _0x488fa5=await fetch(API_BASE+'/jira/config');if(!_0x488fa5['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x488fa5['json']();},async 'getJiraIssue'(_0x2288a5){const _0x56c718=await fetch(API_BASE+'/jira/issues/'+_0x2288a5);if(!_0x56c718['ok']){const _0x36ecb3=await _0x56c718['json']()['catch'](()=>({}));throw new Error(_0x36ecb3['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x56c718['statusText']);}return await _0x56c718['json']();},async 'searchJiraIssues'(_0x193dc3,_0x2d9904=0x14){const _0x52c41a=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x193dc3,'maxResults':_0x2d9904})});if(!_0x52c41a['ok']){const _0x1b5c5f=await _0x52c41a['json']()['catch'](()=>({}));throw new Error(_0x1b5c5f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x52c41a['statusText']);}return await _0x52c41a['json']();},async 'postJiraComment'(_0x814ef6,_0x5146ca){const _0x34a255=await fetch(API_BASE+'/jira/issues/'+_0x814ef6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5146ca})});if(!_0x34a255['ok']){const _0x15dd0c=await _0x34a255['json']()['catch'](()=>({}));throw new Error(_0x15dd0c['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x34a255['statusText']);}return await _0x34a255['json']();},async 'getJiraComments'(_0x17961b){const _0x3d82a4=await fetch(API_BASE+'/jira/issues/'+_0x17961b+'/comments');if(!_0x3d82a4['ok']){const _0x229a51=await _0x3d82a4['json']()['catch'](()=>({}));throw new Error(_0x229a51['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d82a4['statusText']);}return await _0x3d82a4['json']();},async 'promptParameter'({environment:_0x2b7286,command:_0x16056f,parser:parser='json'}){const _0x5508dd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2b7286,'command':_0x16056f,'parser':parser})});if(!_0x5508dd['ok']){const _0x28ea71=await _0x5508dd['json']()['catch'](()=>({}));throw new Error(_0x28ea71['message']||_0x28ea71['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5508dd['statusText']);}return await _0x5508dd['json']();},async 'promptParameterStream'(_0x45d240,_0x229483){const _0x47e4c0=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45d240)});if(!_0x47e4c0['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x47e4c0['statusText']);const _0x5d6456=_0x47e4c0['body']['getReader'](),_0xf8c532=new TextDecoder();let _0x5e6e50='';return new Promise((_0x567392,_0x49f9fd)=>{const _0x400fd8=async()=>{try{const {done:_0xc51adb,value:_0x179092}=await _0x5d6456['read']();if(_0xc51adb)return;_0x5e6e50+=_0xf8c532['decode'](_0x179092,{'stream':!![]});const _0x3f907c=_0x5e6e50['split']('\x0a\x0a');_0x5e6e50=_0x3f907c['pop']()||'';for(const _0x33aef0 of _0x3f907c){if(!_0x33aef0['trim']())continue;const _0x163c46=_0x33aef0['split']('\x0a');let _0x58f512='message',_0x5eb992='';for(const _0x1af229 of _0x163c46){if(_0x1af229['startsWith']('event:'))_0x58f512=_0x1af229['substring'](0x6)['trim']();else _0x1af229['startsWith']('data:')&&(_0x5eb992=_0x1af229['substring'](0x5)['trim']());}if(!_0x5eb992)continue;try{const _0x48963d=JSON['parse'](_0x5eb992);if(_0x58f512==='progress'&&_0x229483)_0x229483(_0x48963d['stage'],_0x48963d['message']);else{if(_0x58f512==='result'){_0x567392(_0x48963d);return;}else{if(_0x58f512==='error'){let _0x4e873a=_0x48963d['message']||_0x48963d['error']||'Prompt\x20command\x20failed';_0x48963d['rawOutput']&&(_0x4e873a+='\x0a\x0aRaw\x20output:\x0a'+_0x48963d['rawOutput']);_0x49f9fd(new Error(_0x4e873a));return;}}}}catch(_0x3c7ffb){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3c7ffb),console['error']('Event\x20type:',_0x58f512),console['error']('Event\x20data:',_0x5eb992),console['error']('First\x20200\x20chars:',_0x5eb992['substring'](0x0,0xc8)),_0x49f9fd(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3c7ffb['message']+'\x0a\x0aData:\x20'+_0x5eb992['substring'](0x0,0x1f4)));return;}}_0x400fd8();}catch(_0x29de8e){_0x49f9fd(_0x29de8e);}};_0x400fd8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4174e2){const _0x286dc7=await fetch(''+API_BASE+_0x4174e2);if(!_0x286dc7['ok']){const _0x4bb1b0=await _0x286dc7['json']()['catch'](()=>({'error':_0x286dc7['statusText']})),_0x5a3fd7=new Error(_0x4bb1b0['error']||_0x4bb1b0['message']||_0x286dc7['statusText']);if(_0x4bb1b0['detail']!==undefined)_0x5a3fd7['detail']=_0x4bb1b0['detail'];throw _0x5a3fd7;}return await _0x286dc7['json']();},async 'post'(_0x4f34c5,_0x5da428){const _0x13bda6=await fetch(''+API_BASE+_0x4f34c5,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da428)});if(!_0x13bda6['ok']){const _0x37bf2d=await _0x13bda6['json']()['catch'](()=>({'error':_0x13bda6['statusText']})),_0x4a5394=new Error(_0x37bf2d['error']||_0x37bf2d['message']||_0x13bda6['statusText']);if(_0x37bf2d['detail']!==undefined)_0x4a5394['detail']=_0x37bf2d['detail'];throw _0x4a5394;}return await _0x13bda6['json']();},async 'put'(_0x4a6f64,_0x3a2a27){const _0x127885=await fetch(''+API_BASE+_0x4a6f64,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2a27)});if(!_0x127885['ok']){const _0x20dbd8=await _0x127885['json']()['catch'](()=>({'error':_0x127885['statusText']})),_0x531c9b=new Error(_0x20dbd8['error']||_0x20dbd8['message']||_0x127885['statusText']);if(_0x20dbd8['detail']!==undefined)_0x531c9b['detail']=_0x20dbd8['detail'];throw _0x531c9b;}return await _0x127885['json']();},async 'delete'(_0x4119e6,_0x3b6e58){const _0x4f59bb={'method':'DELETE'};_0x3b6e58&&(_0x4f59bb['headers']={'Content-Type':'application/json'},_0x4f59bb['body']=JSON['stringify'](_0x3b6e58));const _0x478eec=await fetch(''+API_BASE+_0x4119e6,_0x4f59bb);if(!_0x478eec['ok']){const _0x320da2=await _0x478eec['json']()['catch'](()=>({'error':_0x478eec['statusText']})),_0x3adb10=new Error(_0x320da2['error']||_0x320da2['message']||_0x478eec['statusText']);if(_0x320da2['detail']!==undefined)_0x3adb10['detail']=_0x320da2['detail'];throw _0x3adb10;}return await _0x478eec['json']();},async 'getSkills'(){const _0x4a4a57=await fetch(API_BASE+'/skills');if(!_0x4a4a57['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a4a57['statusText']);return await _0x4a4a57['json']();},async 'getSkill'(_0x22aa44){const _0x4fc23d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x22aa44));if(!_0x4fc23d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4fc23d['statusText']);return await _0x4fc23d['json']();},async 'createSkill'(_0x5c0921){const _0x367a5b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c0921)});if(!_0x367a5b['ok']){const _0x4017e3=await _0x367a5b['json']()['catch'](()=>({'error':_0x367a5b['statusText']})),_0x13211c=new Error(_0x4017e3['error']||_0x4017e3['message']||_0x367a5b['statusText']);if(_0x4017e3['detail']!==undefined)_0x13211c['detail']=_0x4017e3['detail'];throw _0x13211c;}return await _0x367a5b['json']();},async 'updateSkill'(_0x5104b7,_0x38e2b9){const _0x3f6718=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5104b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38e2b9)});if(!_0x3f6718['ok']){const _0x4321ab=await _0x3f6718['json']()['catch'](()=>({'error':_0x3f6718['statusText']})),_0x5854de=new Error(_0x4321ab['error']||_0x4321ab['message']||_0x3f6718['statusText']);if(_0x4321ab['detail']!==undefined)_0x5854de['detail']=_0x4321ab['detail'];throw _0x5854de;}return await _0x3f6718['json']();},async 'deleteSkill'(_0xd9c72){const _0x11da37=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd9c72),{'method':'DELETE'});if(!_0x11da37['ok']){const _0x1432f7=await _0x11da37['json']()['catch'](()=>({'error':_0x11da37['statusText']})),_0x48668b=new Error(_0x1432f7['error']||_0x1432f7['message']||_0x11da37['statusText']);if(_0x1432f7['detail']!==undefined)_0x48668b['detail']=_0x1432f7['detail'];throw _0x48668b;}return await _0x11da37['json']();},async 'getSkillFile'(_0x54458c,_0x1a2c6e){const _0x1915f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x54458c)+'/files/'+_0x1a2c6e);if(!_0x1915f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x1915f4['statusText']);return await _0x1915f4['json']();},async 'saveSkillFile'(_0x15805f,_0x147db8,_0xc15e6a){const _0x5a7ad9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x15805f)+'/files/'+_0x147db8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc15e6a})});if(!_0x5a7ad9['ok']){const _0x1f518f=await _0x5a7ad9['json']()['catch'](()=>({'error':_0x5a7ad9['statusText']})),_0x1503cc=new Error(_0x1f518f['error']||_0x1f518f['message']||_0x5a7ad9['statusText']);if(_0x1f518f['detail']!==undefined)_0x1503cc['detail']=_0x1f518f['detail'];throw _0x1503cc;}return await _0x5a7ad9['json']();},async 'deleteSkillFile'(_0x558393,_0x4e53c8){const _0x26820b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x558393)+'/files/'+_0x4e53c8,{'method':'DELETE'});if(!_0x26820b['ok']){const _0x19a51c=await _0x26820b['json']()['catch'](()=>({'error':_0x26820b['statusText']})),_0x3c0e2b=new Error(_0x19a51c['error']||_0x19a51c['message']||_0x26820b['statusText']);if(_0x19a51c['detail']!==undefined)_0x3c0e2b['detail']=_0x19a51c['detail'];throw _0x3c0e2b;}return await _0x26820b['json']();},async 'pullSkills'(){const _0x167da3=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x167da3['ok']){const _0x492f07=await _0x167da3['json']()['catch'](()=>({'error':_0x167da3['statusText']})),_0x467a28=new Error(_0x492f07['error']||_0x492f07['message']||_0x167da3['statusText']);if(_0x492f07['detail']!==undefined)_0x467a28['detail']=_0x492f07['detail'];throw _0x467a28;}return await _0x167da3['json']();},async 'commitSkills'(_0x12f10e,_0x48eaa0={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x48eaa0,_0x4eec54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x12f10e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4eec54['ok']){const _0x3bebfb=await _0x4eec54['json']()['catch'](()=>({'error':_0x4eec54['statusText']})),_0x576c9e=new Error(_0x3bebfb['error']||_0x3bebfb['message']||_0x4eec54['statusText']);if(_0x3bebfb['detail']!==undefined)_0x576c9e['detail']=_0x3bebfb['detail'];throw _0x576c9e;}return await _0x4eec54['json']();},async 'discardSkillsChanges'(){const _0x409d89=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x409d89['ok']){const _0x319ccb=await _0x409d89['json']()['catch'](()=>({'error':_0x409d89['statusText']})),_0x480abf=new Error(_0x319ccb['error']||_0x319ccb['message']||_0x409d89['statusText']);if(_0x319ccb['detail']!==undefined)_0x480abf['detail']=_0x319ccb['detail'];throw _0x480abf;}return await _0x409d89['json']();},async 'getSkillCatalog'(){const _0x3928e2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x3928e2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x3928e2['statusText']);return await _0x3928e2['json']();},async 'getImportedSkillsRegistry'(){const _0x3f8328=await fetch(API_BASE+'/external-skills/registry');if(!_0x3f8328['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3f8328['statusText']);return await _0x3f8328['json']();},async 'importCatalogSkill'(_0x3326cb){const _0x494d22=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3326cb})});if(!_0x494d22['ok']){const _0x3b4e78=await _0x494d22['json']()['catch'](()=>({'error':_0x494d22['statusText']})),_0x46f831=new Error(_0x3b4e78['error']||_0x3b4e78['message']||_0x494d22['statusText']);if(_0x3b4e78['detail']!==undefined)_0x46f831['detail']=_0x3b4e78['detail'];throw _0x46f831;}return await _0x494d22['json']();},async 'importSkillFromGit'(_0x14a12b,_0x291452,_0x2138be='main',_0x545f7d=null){const _0x41eb57=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14a12b,'skillPath':_0x291452,'branch':_0x2138be,'skillId':_0x545f7d})});if(!_0x41eb57['ok']){const _0x234ae4=await _0x41eb57['json']()['catch'](()=>({'error':_0x41eb57['statusText']})),_0x13ea58=new Error(_0x234ae4['error']||_0x234ae4['message']||_0x41eb57['statusText']);if(_0x234ae4['detail']!==undefined)_0x13ea58['detail']=_0x234ae4['detail'];throw _0x13ea58;}return await _0x41eb57['json']();},async 'probeMarketplace'(_0x447443,_0x6010a3='main'){const _0xfe87fc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x447443,'branch':_0x6010a3})});if(!_0xfe87fc['ok']){const _0x2c047e=await _0xfe87fc['json']()['catch'](()=>({'error':_0xfe87fc['statusText']})),_0x15d401=new Error(_0x2c047e['error']||_0x2c047e['message']||_0xfe87fc['statusText']);if(_0x2c047e['detail']!==undefined)_0x15d401['detail']=_0x2c047e['detail'];throw _0x15d401;}return await _0xfe87fc['json']();},async 'importMarketplaceBundle'(_0x779a12,_0x1f4870,_0x1262af,_0xda3ed4=null){const _0x204083=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x779a12,'branch':_0x1f4870,'bundleId':_0x1262af,'selectedSkills':_0xda3ed4})});if(!_0x204083['ok']){const _0x229d47=await _0x204083['json']()['catch'](()=>({'error':_0x204083['statusText']})),_0x501bbd=new Error(_0x229d47['error']||_0x229d47['message']||_0x204083['statusText']);if(_0x229d47['detail']!==undefined)_0x501bbd['detail']=_0x229d47['detail'];throw _0x501bbd;}return await _0x204083['json']();},async 'importSkillFromFolder'(_0xe926a7,_0x1dc433=null){const _0x206399=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xe926a7,'skillId':_0x1dc433})});if(!_0x206399['ok']){const _0xb853c7=await _0x206399['json']()['catch'](()=>({'error':_0x206399['statusText']})),_0x3d8037=new Error(_0xb853c7['error']||_0xb853c7['message']||_0x206399['statusText']);if(_0xb853c7['detail']!==undefined)_0x3d8037['detail']=_0xb853c7['detail'];throw _0x3d8037;}return await _0x206399['json']();},async 'importSkillFromNpm'(_0x40070f,_0x1ae6b0='latest',_0x1b5954=null,_0x49d0ec=null){const _0x36fc1f=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x40070f,'version':_0x1ae6b0,'skillId':_0x1b5954,'registry':_0x49d0ec})});if(!_0x36fc1f['ok']){const _0x754a41=await _0x36fc1f['json']()['catch'](()=>({'error':_0x36fc1f['statusText']})),_0x94f1e4=new Error(_0x754a41['error']||_0x754a41['message']||_0x36fc1f['statusText']);if(_0x754a41['detail']!==undefined)_0x94f1e4['detail']=_0x754a41['detail'];throw _0x94f1e4;}return await _0x36fc1f['json']();},async 'checkSkillUpdates'(_0x2a4bbd){const _0x3b158f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2a4bbd)+'/check-updates',{'method':'POST'});if(!_0x3b158f['ok']){const _0x1a8e27=await _0x3b158f['json']()['catch'](()=>({'error':_0x3b158f['statusText']})),_0x5af517=new Error(_0x1a8e27['error']||_0x1a8e27['message']||_0x3b158f['statusText']);if(_0x1a8e27['detail']!==undefined)_0x5af517['detail']=_0x1a8e27['detail'];throw _0x5af517;}return await _0x3b158f['json']();},async 'updateExternalSkill'(_0x3443b5){const _0x1e31e6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3443b5)+'/update',{'method':'POST'});if(!_0x1e31e6['ok']){const _0x310b18=await _0x1e31e6['json']()['catch'](()=>({'error':_0x1e31e6['statusText']})),_0x3880c4=new Error(_0x310b18['error']||_0x310b18['message']||_0x1e31e6['statusText']);if(_0x310b18['detail']!==undefined)_0x3880c4['detail']=_0x310b18['detail'];throw _0x3880c4;}return await _0x1e31e6['json']();},async 'updateSkillFlags'(_0xae6a9c,_0x307780){const _0x32f2a8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xae6a9c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x307780})});if(!_0x32f2a8['ok']){const _0x2834f3=await _0x32f2a8['json']()['catch'](()=>({'error':_0x32f2a8['statusText']})),_0x768e71=new Error(_0x2834f3['error']||_0x2834f3['message']||_0x32f2a8['statusText']);if(_0x2834f3['detail']!==undefined)_0x768e71['detail']=_0x2834f3['detail'];throw _0x768e71;}return await _0x32f2a8['json']();},async 'removeFromImportedRegistry'(_0x36f4d9){const _0x2072a4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x36f4d9)+'/registry',{'method':'DELETE'});if(!_0x2072a4['ok']){const _0xd027ec=await _0x2072a4['json']()['catch'](()=>({'error':_0x2072a4['statusText']})),_0x369d37=new Error(_0xd027ec['error']||_0xd027ec['message']||_0x2072a4['statusText']);if(_0xd027ec['detail']!==undefined)_0x369d37['detail']=_0xd027ec['detail'];throw _0x369d37;}return await _0x2072a4['json']();},async 'getTeams'(){const _0x12c499=await fetch(API_BASE+'/teams');if(!_0x12c499['ok']){const _0x2dc0bc=await _0x12c499['json']()['catch'](()=>({'message':_0x12c499['statusText']}));throw new Error(_0x2dc0bc['message']||'Failed\x20to\x20get\x20teams');}return await _0x12c499['json']();},async 'getTeam'(_0x2d5bb6){const _0x5b04ae=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d5bb6));if(!_0x5b04ae['ok']){const _0x19c056=await _0x5b04ae['json']()['catch'](()=>({'message':_0x5b04ae['statusText']}));throw new Error(_0x19c056['message']||'Failed\x20to\x20get\x20team');}return await _0x5b04ae['json']();},async 'createTeam'(_0x226aff){const _0x450836=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x226aff)});if(!_0x450836['ok']){const _0x34de2f=await _0x450836['json']()['catch'](()=>({'message':_0x450836['statusText']}));throw new Error(_0x34de2f['message']||'Failed\x20to\x20create\x20team');}return await _0x450836['json']();},async 'updateTeam'(_0x1f7f3b,_0x3ebd9d){const _0x2a2f8e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1f7f3b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ebd9d)});if(!_0x2a2f8e['ok']){const _0x5ebe5f=await _0x2a2f8e['json']()['catch'](()=>({'message':_0x2a2f8e['statusText']}));throw new Error(_0x5ebe5f['message']||'Failed\x20to\x20update\x20team');}return await _0x2a2f8e['json']();},async 'deleteTeam'(_0x62bdfa){const _0x175167=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x62bdfa),{'method':'DELETE'});if(!_0x175167['ok']){const _0x1cf66a=await _0x175167['json']()['catch'](()=>({'message':_0x175167['statusText']}));throw new Error(_0x1cf66a['message']||'Failed\x20to\x20delete\x20team');}return await _0x175167['json']();},async 'addTeamMember'(_0x3949f3,_0x5360a2){const _0x44b09d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3949f3)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5360a2})});if(!_0x44b09d['ok']){const _0x59ee6b=await _0x44b09d['json']()['catch'](()=>({'message':_0x44b09d['statusText']}));throw new Error(_0x59ee6b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x44b09d['json']();},async 'removeTeamMember'(_0x54214f,_0x15123a){const _0x812414=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x54214f)+'/members/'+encodeURIComponent(_0x15123a),{'method':'DELETE'});if(!_0x812414['ok']){const _0x41e763=await _0x812414['json']()['catch'](()=>({'message':_0x812414['statusText']}));throw new Error(_0x41e763['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x812414['json']();},async 'getBindings'(_0x4a6b06={}){const _0x2386ff=new URLSearchParams();if(_0x4a6b06['resource_type'])_0x2386ff['set']('resource_type',_0x4a6b06['resource_type']);if(_0x4a6b06['resource_id'])_0x2386ff['set']('resource_id',_0x4a6b06['resource_id']);if(_0x4a6b06['subject_type'])_0x2386ff['set']('subject_type',_0x4a6b06['subject_type']);if(_0x4a6b06['subject_id'])_0x2386ff['set']('subject_id',_0x4a6b06['subject_id']);const _0x413168=_0x2386ff['toString'](),_0x28374b=await fetch(API_BASE+'/bindings'+(_0x413168?'?'+_0x413168:''));if(!_0x28374b['ok']){const _0x3829de=await _0x28374b['json']()['catch'](()=>({'message':_0x28374b['statusText']}));throw new Error(_0x3829de['message']||'Failed\x20to\x20get\x20bindings');}return await _0x28374b['json']();},async 'createBinding'(_0x433510){const _0xa08cf7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x433510)});if(!_0xa08cf7['ok']){const _0x45eb72=await _0xa08cf7['json']()['catch'](()=>({'message':_0xa08cf7['statusText']}));throw new Error(_0x45eb72['message']||'Failed\x20to\x20create\x20binding');}return await _0xa08cf7['json']();},async 'updateBinding'(_0x1a8186,_0xf149fd){const _0xd0a4f8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1a8186),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf149fd)});if(!_0xd0a4f8['ok']){const _0x52d5c2=await _0xd0a4f8['json']()['catch'](()=>({'message':_0xd0a4f8['statusText']}));throw new Error(_0x52d5c2['message']||'Failed\x20to\x20update\x20binding');}return await _0xd0a4f8['json']();},async 'deleteBinding'(_0x594244){const _0x5eb5d2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x594244),{'method':'DELETE'});if(!_0x5eb5d2['ok']){const _0x504d01=await _0x5eb5d2['json']()['catch'](()=>({'message':_0x5eb5d2['statusText']}));throw new Error(_0x504d01['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5eb5d2['json']();},async 'getRoleDefinitions'(){const _0x293f31=await fetch(API_BASE+'/roles');if(!_0x293f31['ok']){const _0x1a1380=await _0x293f31['json']()['catch'](()=>({'message':_0x293f31['statusText']}));throw new Error(_0x1a1380['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x293f31['json']();},async 'getRoleDefinition'(_0x7b7072){const _0x570b58=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x7b7072));if(!_0x570b58['ok']){const _0x886a34=await _0x570b58['json']()['catch'](()=>({'message':_0x570b58['statusText']}));throw new Error(_0x886a34['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x570b58['json']();},async 'createRoleDefinition'(_0x5c6c61){const _0x43bd5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c6c61)});if(!_0x43bd5e['ok']){const _0x27a19a=await _0x43bd5e['json']()['catch'](()=>({'message':_0x43bd5e['statusText']}));throw new Error(_0x27a19a['message']||_0x27a19a['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x43bd5e['json']();},async 'updateRoleDefinition'(_0x3ec1fa,_0x431a43){const _0x4f06f7=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3ec1fa),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x431a43)});if(!_0x4f06f7['ok']){const _0x3ba72a=await _0x4f06f7['json']()['catch'](()=>({'message':_0x4f06f7['statusText']}));throw new Error(_0x3ba72a['message']||_0x3ba72a['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f06f7['json']();},async 'deleteRoleDefinition'(_0x40229c){const _0x50d7bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x40229c),{'method':'DELETE'});if(!_0x50d7bb['ok']){const _0x41f741=await _0x50d7bb['json']()['catch'](()=>({'message':_0x50d7bb['statusText']}));throw new Error(_0x41f741['message']||_0x41f741['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x50d7bb['json']();},async 'getAvailablePermissions'(){const _0x599cd6=await fetch(API_BASE+'/roles/available-permissions');if(!_0x599cd6['ok']){const _0x45f13b=await _0x599cd6['json']()['catch'](()=>({'message':_0x599cd6['statusText']}));throw new Error(_0x45f13b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x599cd6['json']();},async 'getGitProviderAllowedTeams'(_0x36b180){const _0x3014e3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x36b180)+'/allowed-teams');if(!_0x3014e3['ok']){const _0x290313=await _0x3014e3['json']()['catch'](()=>({'message':_0x3014e3['statusText']}));throw new Error(_0x290313['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3014e3['json']();},async 'setGitProviderAllowedTeams'(_0xb01362,_0x11a4dc){const _0x3446c7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xb01362)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11a4dc})});if(!_0x3446c7['ok']){const _0x4044cc=await _0x3446c7['json']()['catch'](()=>({'message':_0x3446c7['statusText']}));throw new Error(_0x4044cc['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3446c7['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 _0x48a3b1=toastState['baseBottom'];toastState['toasts']['forEach'](_0xbb9e6c=>{_0xbb9e6c['el']['style']['bottom']=_0x48a3b1+'px';const _0x4aa18c=_0xbb9e6c['el']['offsetHeight']||toastState['defaultHeight'];_0x48a3b1+=_0x4aa18c+toastState['gap'];});});}function removeToastById(_0x380496){const _0x1557eb=toastState['toasts']['findIndex'](_0x46260e=>_0x46260e['id']===_0x380496);if(_0x1557eb===-0x1)return;const _0x175461=toastState['toasts'][_0x1557eb];if(_0x175461['timeoutId'])clearTimeout(_0x175461['timeoutId']);_0x175461['el']['classList']['remove']('show'),setTimeout(()=>_0x175461['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x1557eb,0x1),repositionAllToasts();}function registerToast(_0x4bce33){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4bce33),repositionAllToasts(),_0x4bce33['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(_0x3623ff){if(_0x3623ff===null||_0x3623ff===undefined)return'';return String(_0x3623ff)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2635ea,_0x2ea092){if(_0x2635ea&&typeof _0x2635ea==='object'&&!Array['isArray'](_0x2635ea))return{'code':typeof _0x2635ea['text']==='string'?_0x2635ea['text']:'','language':typeof _0x2635ea['lang']==='string'?_0x2635ea['lang']:''};return{'code':typeof _0x2635ea==='string'?_0x2635ea:'','language':typeof _0x2ea092==='string'?_0x2ea092:''};}function buildMermaidBlock(_0x4cc8){const _0x3d02fc=String(_0x4cc8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x3d02fc))+'\x22>'+escapeHtmlValue(_0x3d02fc)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x27a8fc=new marked['Renderer'](),_0x1d8cb6=_0x27a8fc['code']['bind'](_0x27a8fc);return _0x27a8fc['code']=function(_0x15a85f,_0x7e05d7,..._0x379a87){const {code:_0x3b5e83,language:_0x2f640a}=getMarkdownCodeBlockPayload(_0x15a85f,_0x7e05d7),_0x55976f=String(_0x2f640a||'')['trim']()['toLowerCase']();if(_0x55976f==='mermaid')return buildMermaidBlock(_0x3b5e83);const _0x25c01c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x25c01c&&_0x55976f)try{const _0x3c0be7=_0x25c01c['getLanguage'](_0x55976f)?_0x55976f:'plaintext',_0x35c232=_0x25c01c['highlight'](_0x3b5e83,{'language':_0x3c0be7})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x55976f)+'\x22>'+_0x35c232+'</code></pre>';}catch(_0x43dd38){console['error']('Syntax\x20highlighting\x20error:',_0x43dd38);}return _0x1d8cb6(_0x15a85f,_0x7e05d7,..._0x379a87);},sharedMarkedRenderer=_0x27a8fc,_0x27a8fc;}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 _0x1d8c8b=window['mermaid'];if(!_0x1d8c8b||typeof _0x1d8c8b['initialize']!=='function')return _0x1d8c8b||null;return _0x1d8c8b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1d8c8b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4a9401,_0x467c70)=>{const _0xbd0c45=()=>_0x4a9401(configureMermaidInstance()),_0x9c4813=()=>{mermaidLoadPromise=null,_0x467c70(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x12342a=document['getElementById'](MERMAID_SCRIPT_ID);!_0x12342a&&(_0x12342a=document['createElement']('script'),_0x12342a['id']=MERMAID_SCRIPT_ID,_0x12342a['src']=MERMAID_SCRIPT_SRC,_0x12342a['async']=!![],document['head']['appendChild'](_0x12342a));if(window['mermaid']){_0xbd0c45();return;}_0x12342a['addEventListener']('load',_0xbd0c45,{'once':!![]}),_0x12342a['addEventListener']('error',_0x9c4813,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e4a86){const _0x4c9c93=_0x3e4a86['getAttribute']('data-mermaid-source');if(!_0x4c9c93)return null;let _0x3fbf5f=_0x4c9c93;try{_0x3fbf5f=decodeURIComponent(_0x4c9c93);}catch{}return _0x3e4a86['textContent']=_0x3fbf5f,_0x3e4a86['removeAttribute']('data-processed'),_0x3e4a86['removeAttribute']('aria-roledescription'),_0x3e4a86['removeAttribute']('role'),_0x3e4a86['removeAttribute']('aria-label'),_0x3fbf5f;}function collectMermaidNodes(_0x3e9e3d,_0x57670f){if(!(_0x3e9e3d instanceof Element))return;_0x3e9e3d['matches']('.mermaid[data-mermaid-source]')&&_0x57670f['add'](_0x3e9e3d),_0x3e9e3d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13b148=>{_0x57670f['add'](_0x13b148);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2bb4a3=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2233f1=>setTimeout(_0x2233f1,0x0);_0x2bb4a3(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x54611d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x54611d);});});}function queueMermaidRender(_0x1f6924){const _0x37f4ec=new Set();_0x1f6924 instanceof Document||_0x1f6924 instanceof DocumentFragment?_0x1f6924['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2412d7=>_0x37f4ec['add'](_0x2412d7)):collectMermaidNodes(_0x1f6924,_0x37f4ec);if(_0x37f4ec['size']===0x0)return;_0x37f4ec['forEach'](_0x40a4e4=>pendingMermaidNodes['add'](_0x40a4e4)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x40ea77=Array['from'](pendingMermaidNodes)['filter'](_0x252ffb=>_0x252ffb['isConnected']);pendingMermaidNodes['clear']();if(_0x40ea77['length']===0x0)return;const _0x22104a=await loadMermaid();if(!_0x22104a)return;configureMermaidInstance();const _0x3aa285=getMermaidTheme();for(const _0x482886 of _0x40ea77){const _0xeffa27=_0x482886['getAttribute']('data-mermaid-source');if(!_0xeffa27)continue;const _0x3e7fc2=_0x482886['getAttribute']('data-processed')==='true';if(_0x3e7fc2&&_0x482886['dataset']['mermaidTheme']===_0x3aa285)continue;restoreMermaidSource(_0x482886);try{if(typeof _0x22104a['run']==='function')await _0x22104a['run']({'nodes':[_0x482886]});else typeof _0x22104a['init']==='function'&&_0x22104a['init'](undefined,[_0x482886]);_0x482886['dataset']['mermaidTheme']=_0x3aa285,delete _0x482886['dataset']['mermaidError'];}catch(_0xadfc5f){console['error']('Mermaid\x20render\x20failed:',_0xadfc5f),restoreMermaidSource(_0x482886),_0x482886['dataset']['mermaidError']='true',delete _0x482886['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2bc7de=>{_0x2bc7de['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x2bc7de);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x463f47=>{_0x463f47['forEach'](_0x4ee054=>{_0x4ee054['addedNodes']['forEach'](_0x15d750=>{_0x15d750['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x15d750);});});}),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'(_0x3a839e){const _0x38834f=new Date(_0x3a839e),_0x6640f6=new Date(),_0x5d49de=_0x6640f6-_0x38834f,_0x1bd437=Math['floor'](_0x5d49de/0x3e8),_0x185630=Math['floor'](_0x1bd437/0x3c),_0xa186d8=Math['floor'](_0x185630/0x3c),_0x347321=Math['floor'](_0xa186d8/0x18);if(_0x1bd437<0x3c)return'now';if(_0x185630<0x3c)return _0x185630+'m\x20ago';if(_0xa186d8<0x18)return _0xa186d8+'h\x20ago';return _0x347321+'d\x20ago';},'getStatusIcon'(_0x54ad65){switch(_0x54ad65){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x45bc1c){switch(_0x45bc1c){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'(_0x5d30ec,_0x332cd3=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1435ca={};_0x1435ca['text/plain']=new Blob([_0x5d30ec],{'type':'text/plain'});_0x332cd3&&(_0x1435ca['text/html']=new Blob([_0x332cd3],{'type':'text/html'}));const _0x1f7394=new ClipboardItem(_0x1435ca);return await navigator['clipboard']['write']([_0x1f7394]),!![];}catch(_0x1ad11b){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ad11b);}try{const _0x3aec80=_0x1bff0a=>{_0x1bff0a['preventDefault'](),_0x1bff0a['clipboardData']['setData']('text/plain',_0x5d30ec),_0x332cd3&&_0x1bff0a['clipboardData']['setData']('text/html',_0x332cd3);};document['addEventListener']('copy',_0x3aec80);const _0x1b6c1d=document['execCommand']('copy');document['removeEventListener']('copy',_0x3aec80);if(_0x1b6c1d)return!![];}catch(_0xdf2473){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xdf2473);}try{const _0x394800=document['createElement']('textarea');_0x394800['value']=_0x5d30ec,_0x394800['style']['position']='fixed',_0x394800['style']['opacity']='0',_0x394800['style']['pointerEvents']='none',document['body']['appendChild'](_0x394800),_0x394800['select']();const _0xb8f04a=document['execCommand']('copy');return document['body']['removeChild'](_0x394800),_0xb8f04a;}catch(_0x2e74e9){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x2e74e9),![];}},'showToast'(_0x387e92,_0x351a58='info'){const _0x31cbe1=getNextToastId(),_0x2bb523=document['createElement']('div');_0x2bb523['className']='toast\x20toast-'+_0x351a58,_0x2bb523['textContent']=_0x387e92,_0x2bb523['dataset']['toastId']=_0x31cbe1,document['body']['appendChild'](_0x2bb523);const _0x3fb8a6=_0x351a58==='error'?0x2710:0xbb8,_0x2b3672=setTimeout(()=>{removeToastById(_0x31cbe1);},_0x3fb8a6),_0x835661={'id':_0x31cbe1,'el':_0x2bb523,'timeoutId':_0x2b3672};return registerToast(_0x835661),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2bb523['classList']['add']('show');});}),_0x31cbe1;},'showError'(_0x200099){console['error'](_0x200099);const _0x5239d4=typeof _0x200099==='string'?_0x200099:_0x200099['message']||'An\x20error\x20occurred';this['showToast'](_0x5239d4,'error');},'showSuccess'(_0x8f4392){this['showToast'](_0x8f4392,'success');},'capitalize'(_0x56211e){if(!_0x56211e)return'';return _0x56211e['charAt'](0x0)['toUpperCase']()+_0x56211e['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54d921){return escapeHtmlValue(_0x54d921);},'ansiToHtml'(_0x47d17f){if(_0x47d17f===null||_0x47d17f===undefined)return'';let _0x462456=this['escapeHtml'](_0x47d17f);const _0xea8f33={'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'},_0x2cccb6={'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 _0x48151f=0x0;return _0x462456=_0x462456['replace'](/\x1b\[([0-9;]*)m/g,(_0x3d6e68,_0x351fe4)=>{if(!_0x351fe4||_0x351fe4==='0'){const _0xb2276f='</span>'['repeat'](_0x48151f);return _0x48151f=0x0,_0xb2276f;}const _0x1ecada=_0x351fe4['split'](';'),_0x5222c9=[];for(const _0x2a6c1b of _0x1ecada){if(_0x2a6c1b==='1')_0x5222c9['push']('font-weight:bold');else{if(_0x2a6c1b==='2')_0x5222c9['push']('opacity:0.7');else{if(_0x2a6c1b==='3')_0x5222c9['push']('font-style:italic');else{if(_0x2a6c1b==='4')_0x5222c9['push']('text-decoration:underline');else{if(_0x2a6c1b==='9')_0x5222c9['push']('text-decoration:line-through');else{if(_0xea8f33[_0x2a6c1b])_0x5222c9['push']('color:'+_0xea8f33[_0x2a6c1b]);else{if(_0x2cccb6[_0x2a6c1b])_0x5222c9['push']('background-color:'+_0x2cccb6[_0x2a6c1b]);}}}}}}}if(_0x5222c9['length']>0x0)return _0x48151f++,'<span\x20style=\x22'+_0x5222c9['join'](';')+'\x22>';return'';}),_0x462456+='</span>'['repeat'](_0x48151f),_0x462456=_0x462456['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1f90ed,_0x34f4d3)=>{if(!_0x34f4d3||_0x34f4d3==='0')return'';const _0x338b04=_0x34f4d3['split'](';'),_0x1032a2=[];for(const _0x5c97e7 of _0x338b04){if(_0x5c97e7==='1')_0x1032a2['push']('font-weight:bold');else{if(_0xea8f33[_0x5c97e7])_0x1032a2['push']('color:'+_0xea8f33[_0x5c97e7]);else{if(_0x2cccb6[_0x5c97e7])_0x1032a2['push']('background-color:'+_0x2cccb6[_0x5c97e7]);}}}if(_0x1032a2['length']>0x0)return'<span\x20style=\x22'+_0x1032a2['join'](';')+'\x22>';return'';}),_0x462456;},'showModal'({title:_0x23548c,content:_0x576e72,buttons:buttons=[]}){const _0x21e94b='\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'](_0x23548c)+'</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'+_0x576e72+'\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']((_0x59c8e3,_0x4d41ac)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59c8e3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4d41ac+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59c8e3['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',_0x3ed3df=document['createElement']('div');_0x3ed3df['id']='utils-modal',_0x3ed3df['className']='modal',_0x3ed3df['innerHTML']=_0x21e94b,document['body']['appendChild'](_0x3ed3df);const _0x59c28a=document['getElementById']('utils-modal-close');_0x59c28a&&_0x59c28a['addEventListener']('click',()=>this['hideModal']());const _0x2d8e71=_0x3ed3df['querySelectorAll']('[data-btn-index]');_0x2d8e71['forEach'](_0x270413=>{const _0x36ec08=parseInt(_0x270413['dataset']['btnIndex']);buttons[_0x36ec08]?.['onClick']&&_0x270413['addEventListener']('click',buttons[_0x36ec08]['onClick']);});const _0x5c5302=document['getElementById']('utils-modal-overlay');_0x5c5302&&_0x5c5302['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1aa2bb=document['getElementById']('utils-modal');_0x1aa2bb&&_0x1aa2bb['remove']();},'parseKeyValuePairs'(_0x478f0d){const _0x1a08ea={};if(!_0x478f0d)return _0x1a08ea;return _0x478f0d['split'](/\r?\n/)['map'](_0x30ea27=>_0x30ea27['trim']())['filter'](Boolean)['forEach'](_0x183f71=>{const _0x204ff6=_0x183f71['indexOf']('=');if(_0x204ff6>0x0){const _0x459ec4=_0x183f71['slice'](0x0,_0x204ff6)['trim'](),_0x26ea9e=_0x183f71['slice'](_0x204ff6+0x1)['trim']();if(_0x459ec4)_0x1a08ea[_0x459ec4]=_0x26ea9e;}}),_0x1a08ea;},'debounce'(_0x5166f5,_0x17563a=0xfa){let _0x3d79b8=null;return(..._0xeecc5e)=>{clearTimeout(_0x3d79b8),_0x3d79b8=setTimeout(()=>_0x5166f5['apply'](this,_0xeecc5e),_0x17563a);};},'formatTimestamp'(_0x364127){if(!_0x364127)return'N/A';const _0x386a4f=new Date(_0x364127);return _0x386a4f['toLocaleDateString']()+'\x20'+_0x386a4f['toLocaleTimeString']();},'getQueryParams'(){const _0x333299=new URLSearchParams(window['location']['search']),_0x142168={};for(const [_0x430975,_0x22f68e]of _0x333299){_0x142168[_0x430975]=_0x22f68e;}return _0x142168;},'formatDuration'(_0x229cf8,_0x57bb4f){if(!_0x229cf8)return'N/A';const _0x1978c3=new Date(_0x229cf8),_0x144cc7=_0x57bb4f?new Date(_0x57bb4f):new Date(),_0x1d0170=_0x144cc7-_0x1978c3;if(_0x1d0170<0x0)return'0s';const _0x3428ef=Math['floor'](_0x1d0170/0x3e8),_0x141ee2=Math['floor'](_0x3428ef/0x3c),_0x45474d=Math['floor'](_0x141ee2/0x3c),_0x4e1e8c=Math['floor'](_0x45474d/0x18);if(_0x3428ef<0x3c)return _0x3428ef+'s';if(_0x141ee2<0x3c)return _0x141ee2+'m\x20'+_0x3428ef%0x3c+'s';if(_0x45474d<0x18)return _0x45474d+'h\x20'+_0x141ee2%0x3c+'m\x20'+_0x3428ef%0x3c+'s';return _0x4e1e8c+'d\x20'+_0x45474d%0x18+'h\x20'+_0x141ee2%0x3c+'m';},'renderMarkdown'(_0x51bc8b,_0x3e2a78={}){if(!_0x51bc8b)return'';_0x51bc8b=this['rewriteAttachmentLinks'](_0x51bc8b,_0x3e2a78),_0x51bc8b=this['rewriteColorSyntax'](_0x51bc8b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x51bc8b);}catch(_0x22ef18){return console['error']('Markdown\x20parsing\x20error:',_0x22ef18),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);}},'rewriteAttachmentLinks'(_0x3d8c09,_0xe48a82={}){const _0x556d6f=typeof _0xe48a82['resolveAttachmentUrl']==='function'?_0xe48a82['resolveAttachmentUrl']:_0xe48a82['taskId']?_0xc0ce2=>API_BASE+'/tasks/'+_0xe48a82['taskId']+'/attachments/'+encodeURIComponent(_0xc0ce2):null;if(!_0x556d6f)return _0x3d8c09;return String(_0x3d8c09)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3048fb,_0x1a20c9)=>{const _0x2053ed=String(_0x1a20c9||'')['trim']();if(!_0x2053ed)return _0x3048fb;let _0x4d39f1=_0x2053ed;try{_0x4d39f1=decodeURIComponent(_0x2053ed);}catch{}const _0x5cd248=_0x556d6f(_0x4d39f1);if(!_0x5cd248)return _0x3048fb;return']('+_0x5cd248+')';});},'rewriteColorSyntax'(_0x215744){if(!_0x215744)return _0x215744;return String(_0x215744)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x298d03,_0x595855,_0x2c7979)=>{const _0x53680b=this['rewriteColorSyntax'](_0x2c7979);return'<span\x20style=\x22color:\x20'+_0x595855+'\x22>'+_0x53680b+'</span>';});},'renderMarkdownFallback'(_0x324140,_0x84097={}){if(!_0x324140)return'';_0x324140=_0x324140['replace'](/\r\n/g,'\x0a'),_0x324140=_0x324140['replace'](/\r/g,'\x0a'),_0x324140=this['rewriteAttachmentLinks'](_0x324140,_0x84097);let _0x3cd279=this['escapeHtml'](_0x324140);return _0x3cd279=_0x3cd279['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3cd279=_0x3cd279['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3cd279=_0x3cd279['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3cd279=_0x3cd279['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3cd279=_0x3cd279['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3cd279=_0x3cd279['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3cd279=_0x3cd279['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3cd279=_0x3cd279['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3cd279=_0x3cd279['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3cd279=_0x3cd279['replace'](/\n\n/g,'</p><p>'),_0x3cd279=_0x3cd279['replace'](/\n/g,'<br>'),'<p>'+_0x3cd279+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x16cf36=new Uint8Array(0x10);crypto['getRandomValues'](_0x16cf36),_0x16cf36[0x6]=_0x16cf36[0x6]&0xf|0x40,_0x16cf36[0x8]=_0x16cf36[0x8]&0x3f|0x80;const _0x33cb09=Array['from'](_0x16cf36,_0x288a0b=>_0x288a0b['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x33cb09['slice'](0x0,0x8)+'-'+_0x33cb09['slice'](0x8,0xc)+'-'+_0x33cb09['slice'](0xc,0x10)+'-'+_0x33cb09['slice'](0x10,0x14)+'-'+_0x33cb09['slice'](0x14);}};export class CustomSelect{constructor(_0x1f59b8,_0x4dc364={}){this['nativeSelect']=_0x1f59b8,this['options']=_0x4dc364,this['isOpen']=![],this['selectedValue']=_0x1f59b8['value']||'',this['searchable']=_0x4dc364['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5b475c=document['createElement']('div');_0x5b475c['className']='custom-select';const _0x51fcdc=document['createElement']('div');_0x51fcdc['className']='custom-select-trigger',_0x51fcdc['setAttribute']('tabindex','0'),_0x51fcdc['setAttribute']('role','button'),_0x51fcdc['setAttribute']('aria-haspopup','listbox');const _0x3269ab=document['createElement']('span');_0x3269ab['className']='custom-select-trigger-text';const _0x3abb98=document['createElement']('span');_0x3abb98['className']='custom-select-arrow',_0x3abb98['textContent']='▼',_0x51fcdc['appendChild'](_0x3269ab),_0x51fcdc['appendChild'](_0x3abb98);const _0x414efa=document['createElement']('div');_0x414efa['className']='custom-select-dropdown',_0x414efa['setAttribute']('role','listbox');if(this['searchable']){const _0x1ace7e=document['createElement']('div');_0x1ace7e['className']='custom-select-search';const _0x2f1ffe=document['createElement']('input');_0x2f1ffe['type']='text',_0x2f1ffe['className']='custom-select-search-input',_0x2f1ffe['placeholder']='Type\x20to\x20search...',_0x2f1ffe['setAttribute']('aria-label','Search\x20options'),_0x2f1ffe['addEventListener']('input',_0x1908bb=>{this['searchQuery']=_0x1908bb['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2f1ffe['addEventListener']('keydown',_0x47334c=>{if(_0x47334c['key']==='Escape')_0x47334c['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x47334c['key']==='Enter'){_0x47334c['preventDefault'](),_0x47334c['stopPropagation']();const _0x370530=_0x414efa['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x370530){const _0x306d4a=_0x370530['getAttribute']('data-value');this['select'](_0x306d4a);}}}}),_0x1ace7e['appendChild'](_0x2f1ffe),_0x414efa['appendChild'](_0x1ace7e),this['searchInput']=_0x2f1ffe;}const _0x39a390=document['createElement']('div');_0x39a390['className']='custom-select-options',_0x414efa['appendChild'](_0x39a390),_0x5b475c['appendChild'](_0x51fcdc),_0x5b475c['appendChild'](_0x414efa),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5b475c,this['nativeSelect']),this['wrapper']=_0x5b475c,this['trigger']=_0x51fcdc,this['triggerText']=_0x3269ab,this['dropdown']=_0x414efa,this['optionsContainer']=_0x39a390,_0x51fcdc['addEventListener']('click',()=>this['toggle']()),_0x51fcdc['addEventListener']('keydown',_0x2bafb7=>this['handleKeydown'](_0x2bafb7)),document['addEventListener']('click',_0x36edc8=>{!_0x5b475c['contains'](_0x36edc8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x38704f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x38704f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x3c64ed=new MutationObserver(()=>{this['updateDisabledState']();});_0x3c64ed['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x48d08e=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x48d08e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3afd3e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3afd3e),this['trigger']['setAttribute']('aria-disabled',_0x3afd3e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3afd3e?'-1':'0'),_0x3afd3e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x26bbf8=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ab1a7=_0x26bbf8['filter'](_0x2cd39c=>!_0x2cd39c['disabled']&&!_0x2cd39c['hidden']);_0x26bbf8['forEach']((_0x45a180,_0x441971)=>{const _0x509a6e=document['createElement']('div');_0x509a6e['className']='custom-select-option',_0x509a6e['textContent']=_0x45a180['textContent'],_0x509a6e['setAttribute']('data-value',_0x45a180['value']),_0x509a6e['setAttribute']('data-index',_0x441971),_0x509a6e['setAttribute']('role','option'),_0x45a180['disabled']?_0x509a6e['classList']['add']('disabled'):_0x509a6e['addEventListener']('click',()=>this['select'](_0x45a180['value'])),_0x45a180['value']===this['selectedValue']&&_0x509a6e['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x509a6e),this['allOptions']['push']({'element':_0x509a6e,'text':_0x45a180['textContent']['toLowerCase'](),'value':_0x45a180['value'],'disabled':_0x45a180['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3270c7=this['searchInput']['parentElement'];_0x1ab1a7['length']>0x3?_0x3270c7['style']['display']='':_0x3270c7['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2d9734=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4cb21a=>{if(!_0x2d9734||_0x4cb21a['disabled'])_0x4cb21a['element']['style']['display']='';else{const _0x3407aa=_0x4cb21a['text']['includes'](_0x2d9734);_0x4cb21a['element']['style']['display']=_0x3407aa?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x334609){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x334609,this['nativeSelect']['value']=_0x334609;const _0x3af17c=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3af17c),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x49285b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x49285b&&(this['triggerText']['textContent']=_0x49285b['textContent'],_0x49285b['disabled']||_0x49285b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x6940b5=>{_0x6940b5['getAttribute']('data-value')===this['selectedValue']?_0x6940b5['classList']['add']('selected'):_0x6940b5['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 _0x499972=window['getComputedStyle'](this['dropdown']);if(_0x499972['position']==='fixed'){const _0x2513e3=this['trigger']['getBoundingClientRect'](),_0x5d3a15=parseInt(_0x499972['maxHeight'])||0xc8,_0xcc3535=window['innerHeight'],_0x4049ed=_0xcc3535-_0x2513e3['bottom'],_0x19aee5=_0x2513e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x19d9b9;_0x4049ed<_0x5d3a15&&_0x19aee5>_0x4049ed?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xcc3535-_0x2513e3['top']+'px',_0x19d9b9=Math['min'](_0x5d3a15,_0x19aee5-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2513e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x19d9b9=Math['min'](_0x5d3a15,_0x4049ed-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px');if(this['optionsContainer']){let _0x1ec729=_0x19d9b9;if(this['searchInput']){const _0x4e4703=this['searchInput']['parentElement'];_0x4e4703&&(_0x1ec729-=_0x4e4703['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ec729)+'px';}this['dropdown']['style']['left']=_0x2513e3['left']+'px',this['dropdown']['style']['width']=_0x2513e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x12eaca=this['searchInput']['parentElement'];_0x12eaca&&_0x12eaca['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'](_0x3b111a){if(this['nativeSelect']['disabled'])return;if(_0x3b111a['key']==='Enter'||_0x3b111a['key']==='\x20')_0x3b111a['preventDefault'](),this['toggle']();else _0x3b111a['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xb2f5e3='\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',_0xb2f5e3),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4f1d53=document['getElementById']('confirm-dialog-close'),_0x8809c=document['getElementById']('confirm-dialog-cancel'),_0x4c817e=document['getElementById']('confirm-dialog-confirm'),_0x522254=this['_modal']['querySelector']('.modal-overlay');_0x4f1d53['addEventListener']('click',()=>this['_resolve'](![])),_0x8809c['addEventListener']('click',()=>this['_resolve'](![])),_0x4c817e['addEventListener']('click',()=>this['_resolve'](!![])),_0x522254['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1dcdb3=>{if(_0x1dcdb3['key']==='Escape')_0x1dcdb3['preventDefault'](),this['_resolve'](![]);else _0x1dcdb3['key']==='Enter'&&(_0x1dcdb3['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x3adf49,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5eb7e2=>{this['_resolvePromise']=_0x5eb7e2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x3adf49;const _0x52b052=document['getElementById']('confirm-dialog-cancel'),_0x2bbb27=document['getElementById']('confirm-dialog-confirm');_0x52b052['textContent']=cancelText,_0x2bbb27['textContent']=confirmText,_0x2bbb27['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x2bbb27['focus']();});},'_resolve'(_0x25d6ea){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x25d6ea),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4d4fc9,_0x35030c={}){this['container']=_0x4d4fc9,this['options']={'placeholder':_0x35030c['placeholder']||'Type\x20to\x20search...','maxItems':_0x35030c['maxItems']||0x64,'loadItems':_0x35030c['loadItems']||(async()=>[]),'renderItem':_0x35030c['renderItem']||(_0x27fc4e=>({'primary':String(_0x27fc4e),'secondary':''})),'onSelect':_0x35030c['onSelect']||(()=>{}),'filterItems':_0x35030c['filterItems']||null,'getItemValue':_0x35030c['getItemValue']||(_0x1e1c6c=>_0x1e1c6c),'sortItems':_0x35030c['sortItems']||null,'debounceMs':_0x35030c['debounceMs']||0xc8,'minCharsForSearch':_0x35030c['minCharsForSearch']||0x0,'emptyMessage':_0x35030c['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x35030c['loadingMessage']||'Loading...','preload':_0x35030c['preload']!==![],'searchMode':_0x35030c['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',_0x10e996=>this['onBlur'](_0x10e996)),this['input']['addEventListener']('input',_0x1f3bc2=>this['onInput'](_0x1f3bc2)),this['input']['addEventListener']('keydown',_0x144779=>this['onKeydown'](_0x144779)),this['clearBtn']['addEventListener']('mousedown',_0x483e51=>{_0x483e51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x75f6c1=>{_0x75f6c1['preventDefault']();}),document['addEventListener']('click',_0x1d9247=>{!this['wrapper']['contains'](_0x1d9247['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(_0x370961){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x370961);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2bbf11){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x422f2f){const _0x2f776e=_0x422f2f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2f776e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2f776e):this['loadAndShow'](_0x2f776e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2bcc0e){switch(_0x2bcc0e['key']){case'ArrowDown':_0x2bcc0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2bcc0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2bcc0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2bcc0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x3228b5){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x47426e=this['selectedIndex']+_0x3228b5;if(_0x47426e>=0x0&&_0x47426e<this['filteredItems']['length']){this['selectedIndex']=_0x47426e,this['updateSelectionHighlight']();const _0x2c8307=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c8307[this['selectedIndex']]&&_0x2c8307[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x90a955=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x90a955['forEach']((_0x44b2f3,_0x5bee86)=>{_0x44b2f3['classList']['toggle']('keyboard-selected',_0x5bee86===this['selectedIndex']);});}async['loadAndShow'](_0x14674c){this['showLoading']();try{const _0x371d61=await this['options']['loadItems'](_0x14674c);if(this['options']['searchMode']==='server'){let _0x13fd17=_0x371d61;this['options']['sortItems']&&(_0x13fd17=this['options']['sortItems']([..._0x371d61]));this['filteredItems']=_0x13fd17;const _0x5b0be8=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b0be8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b0be8),this['open']();}else this['allItems']=_0x371d61,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14674c);}catch(_0x515ea8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x515ea8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1912f5){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1912f5):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x9aa9f5=this['filteredItems']['length']>=this['options']['maxItems'];_0x9aa9f5&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x9aa9f5),this['open']();}['renderItems'](_0x1c7f9d){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']((_0x50f321,_0x440aa5)=>{const _0x3b1149=document['createElement']('div');_0x3b1149['className']='autocomplete-select-item',_0x3b1149['setAttribute']('role','option'),_0x3b1149['setAttribute']('data-index',_0x440aa5);const _0x45c743=this['options']['renderItem'](_0x50f321);let _0x450b75='';_0x45c743['icon']&&(_0x450b75='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x45c743['iconClass']||'')+'\x22>'+_0x45c743['icon']+'</span>'),_0x3b1149['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x450b75+'\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'](_0x45c743['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x45c743['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x45c743['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3b1149['addEventListener']('click',()=>{this['selectItem'](_0x50f321);}),_0x3b1149['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x440aa5,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3b1149);}),_0x1c7f9d?(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'](_0x1c376e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1c376e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x84fb6e){this['selectedItem']=_0x84fb6e;const _0x12b9ce=this['options']['renderItem'](_0x84fb6e);this['input']['value']=_0x12b9ce['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x84fb6e);}['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'](_0x53fa29){if(_0x53fa29){this['selectedItem']=_0x53fa29;const _0x5b2de2=this['options']['renderItem'](_0x53fa29);this['input']['value']=_0x5b2de2['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1bf0df){this['allItems']=_0x1bf0df,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'](_0x2b2f77){this['input']['placeholder']=_0x2b2f77;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1f8adc=null){const _0x37f8bf=document['getElementById']('admin-menu-container'),_0x13821e=document['getElementById']('admin-menu-btn'),_0x3a21c0=document['getElementById']('admin-menu');if(!_0x37f8bf||!_0x13821e||!_0x3a21c0)return;try{!_0x1f8adc&&(_0x1f8adc=await API['getCurrentUser']());if(_0x1f8adc){const _0x46ce5c=window['Permissions'],_0x310be1=_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:manage')||_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')||_0x46ce5c['hasTeamPermission'](_0x1f8adc,'teams:manage')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:view_details');if(!_0x310be1)return;_0x37f8bf['hidden']=![];if(!_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')){const _0x455832=_0x3a21c0['querySelectorAll']('.admin-menu-item');_0x455832['forEach'](_0x188c53=>{const _0x134b04=_0x188c53['querySelector']('.option-text')?.['textContent']?.['trim']();_0x134b04==='Users'&&!_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')&&(_0x188c53['hidden']=!![]),_0x134b04==='Skills'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Settings'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Administration'&&(_0x188c53['hidden']=!![]),_0x134b04==='Git\x20History'&&(_0x188c53['hidden']=!![]),_0x134b04==='Roles'&&(_0x188c53['hidden']=!![]);});}_0x13821e['addEventListener']('click',_0x4e18b1=>{_0x4e18b1['stopPropagation']();const _0x173464=document['getElementById']('actions-menu');if(_0x173464)_0x173464['hidden']=!![];_0x3a21c0['hidden']=!_0x3a21c0['hidden'];}),document['addEventListener']('click',_0x244c27=>{!_0x3a21c0['hidden']&&!_0x13821e['contains'](_0x244c27['target'])&&!_0x3a21c0['contains'](_0x244c27['target'])&&(_0x3a21c0['hidden']=!![]);}),document['addEventListener']('keydown',_0x4919e4=>{_0x4919e4['key']==='Escape'&&!_0x3a21c0['hidden']&&(_0x3a21c0['hidden']=!![]);});}}catch(_0x545e7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x545e7f['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 _0x1575c2=window['location']['pathname'],_0x3d5be0=_0x1575c2['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3d5be0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3d5be0[0x1]),_0x3d5be0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3546d0={}){const _0x3698b0=new URLSearchParams();_0x3546d0['userId']&&_0x3698b0['set']('userId',String(_0x3546d0['userId']));_0x3546d0['automation']&&_0x3698b0['set']('automation',String(_0x3546d0['automation']));const _0x8f2db3=API_BASE+'/tasks/stats'+(_0x3698b0['toString']()?'?'+_0x3698b0['toString']():''),_0xdd21f8=await fetch(_0x8f2db3);if(!_0xdd21f8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0xdd21f8['statusText']);return await _0xdd21f8['json']();},async 'getTasks'(_0x20fd1d={}){const _0x3ba158=new URLSearchParams();_0x20fd1d['status']&&_0x3ba158['set']('status',String(_0x20fd1d['status']));_0x20fd1d['environment']&&_0x3ba158['set']('environment',String(_0x20fd1d['environment']));_0x20fd1d['automation']&&_0x3ba158['set']('automation',String(_0x20fd1d['automation']));if(_0x20fd1d['include']){const _0x2d09c6=Array['isArray'](_0x20fd1d['include'])?_0x20fd1d['include']['join'](','):String(_0x20fd1d['include']);_0x2d09c6&&_0x3ba158['set']('include',_0x2d09c6);}_0x20fd1d['filter']&&_0x3ba158['set']('filter',String(_0x20fd1d['filter']));_0x20fd1d['page']&&_0x3ba158['set']('page',String(_0x20fd1d['page']));_0x20fd1d['limit']&&_0x3ba158['set']('limit',String(_0x20fd1d['limit']));_0x20fd1d['userId']&&_0x3ba158['set']('userId',String(_0x20fd1d['userId']));_0x20fd1d['search']&&_0x3ba158['set']('search',String(_0x20fd1d['search']));_0x20fd1d['includeChildTasks']&&_0x3ba158['set']('includeChildTasks','true');const _0xa4c25d=API_BASE+'/tasks'+(_0x3ba158['toString']()?'?'+_0x3ba158['toString']():''),_0x366033=await fetch(_0xa4c25d);if(!_0x366033['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x366033['statusText']);return await _0x366033['json']();},async 'getAutomations'(_0x46ab70={}){const _0x1f4a9f=new URLSearchParams();_0x46ab70['environment']&&_0x1f4a9f['set']('environment',String(_0x46ab70['environment']));const _0x2533db=await fetch(API_BASE+'/api/automations'+(_0x1f4a9f['toString']()?'?'+_0x1f4a9f['toString']():''));if(!_0x2533db['ok']){const _0x414195=await _0x2533db['json']()['catch'](()=>({}));throw new Error(_0x414195['message']||_0x414195['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2533db['statusText']);}return await _0x2533db['json']();},async 'getAutomation'(_0x34651d){const _0x3a60b3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34651d));if(!_0x3a60b3['ok']){const _0x4152f3=await _0x3a60b3['json']()['catch'](()=>({}));throw new Error(_0x4152f3['message']||_0x4152f3['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3a60b3['statusText']);}return await _0x3a60b3['json']();},async 'createAutomation'(_0x5393a4){const _0x130c1f=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5393a4||{})});if(!_0x130c1f['ok']){const _0x332fe3=await _0x130c1f['json']()['catch'](()=>({}));throw new Error(_0x332fe3['message']||_0x332fe3['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x130c1f['statusText']);}return await _0x130c1f['json']();},async 'updateAutomation'(_0x31ab15,_0x59fb4b){const _0x52b433=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31ab15),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59fb4b||{})});if(!_0x52b433['ok']){const _0x4d5b85=await _0x52b433['json']()['catch'](()=>({}));throw new Error(_0x4d5b85['message']||_0x4d5b85['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x52b433['statusText']);}return await _0x52b433['json']();},async 'deleteAutomation'(_0x42011d){const _0x2c29d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x42011d),{'method':'DELETE'});if(!_0x2c29d8['ok']){const _0x36670e=await _0x2c29d8['json']()['catch'](()=>({}));throw new Error(_0x36670e['message']||_0x36670e['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x2c29d8['statusText']);}return await _0x2c29d8['json']();},async 'triggerAutomation'(_0x37b5b5){const _0x3760bc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37b5b5)+'/trigger',{'method':'POST'});if(!_0x3760bc['ok']){const _0x283a0b=await _0x3760bc['json']()['catch'](()=>({}));throw new Error(_0x283a0b['message']||_0x283a0b['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3760bc['statusText']);}return await _0x3760bc['json']();},async 'setAutomationEnabled'(_0x56a114,_0x142e75){const _0x538c04=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56a114)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x142e75})});if(!_0x538c04['ok']){const _0x2a78cc=await _0x538c04['json']()['catch'](()=>({}));throw new Error(_0x2a78cc['message']||_0x2a78cc['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x538c04['statusText']);}return await _0x538c04['json']();},async 'getAutomationHistory'(_0x2a5521,_0x2d4dc0=0x32){const _0x360ef9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2a5521)+'/history?limit='+encodeURIComponent(String(_0x2d4dc0)));if(!_0x360ef9['ok']){const _0x332bff=await _0x360ef9['json']()['catch'](()=>({}));throw new Error(_0x332bff['message']||_0x332bff['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x360ef9['statusText']);}return await _0x360ef9['json']();},async 'getTask'(_0x31e633,_0x210022={}){const _0x33c97c=new URLSearchParams();if(_0x210022['include']){const _0x2bef44=Array['isArray'](_0x210022['include'])?_0x210022['include']['join'](','):String(_0x210022['include']);if(_0x2bef44)_0x33c97c['set']('include',_0x2bef44);}const _0x42c0cd=await fetch(API_BASE+'/tasks/'+_0x31e633+(_0x33c97c['toString']()?'?'+_0x33c97c['toString']():''));if(!_0x42c0cd['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x42c0cd['statusText']);return await _0x42c0cd['json']();},async 'getTaskResults'(_0x6038a1){const _0x2bcad7=await fetch(API_BASE+'/tasks/'+_0x6038a1+'/results');if(!_0x2bcad7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2bcad7['statusText']);return await _0x2bcad7['json']();},async 'getTaskPatches'(_0x43601e){const _0x566b74=await fetch(API_BASE+'/tasks/'+_0x43601e+'/patches');if(!_0x566b74['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x566b74['statusText']);return await _0x566b74['json']();},async 'getTaskAttachments'(_0x207572){const _0x281c16=await fetch(API_BASE+'/tasks/'+_0x207572+'/attachments');if(!_0x281c16['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x281c16['statusText']);return await _0x281c16['json']();},async 'uploadAttachments'(_0x28a68f,_0x1fe91a){const _0x55beb8=new FormData();for(const _0x4ab9d9 of _0x1fe91a){_0x55beb8['append']('attachments',_0x4ab9d9);}const _0x2efebf=await fetch(API_BASE+'/tasks/'+_0x28a68f+'/attachments',{'method':'POST','body':_0x55beb8});if(!_0x2efebf['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2efebf['statusText']);return await _0x2efebf['json']();},async 'isAINameGenerationAvailable'(){try{const _0x221b95=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x221b95['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x221b95['json']();}catch(_0x54a59c){return{'available':![],'reason':_0x54a59c['message']};}},async 'generateTaskName'(_0x2d98ec){try{const _0x4265c5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d98ec})});return await _0x4265c5['json']();}catch(_0x1b70fd){return{'success':![],'error':_0x1b70fd['message']};}},async 'createTask'(_0x485bfd){let _0x311ee3,_0x5a6db7={};if(_0x485bfd['files']&&_0x485bfd['files']['length']>0x0){const _0x125a86=new FormData();for(const [_0x36c34b,_0x4f66c6]of Object['entries'](_0x485bfd)){if(_0x36c34b!=='files'){if(_0x4f66c6==null)continue;typeof _0x4f66c6==='object'?_0x125a86['append'](_0x36c34b,JSON['stringify'](_0x4f66c6)):_0x125a86['append'](_0x36c34b,String(_0x4f66c6));}}for(const _0x40f222 of _0x485bfd['files']){_0x125a86['append']('attachments',_0x40f222);}_0x311ee3=_0x125a86;}else _0x5a6db7['Content-Type']='application/json',_0x311ee3=JSON['stringify'](_0x485bfd);const _0x1e9acd=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5a6db7,'body':_0x311ee3});if(!_0x1e9acd['ok']){const _0x4cf321=await _0x1e9acd['json'](),_0x53e194=new Error(_0x4cf321['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1e9acd['statusText']),{message:_0x2b405c,..._0x208c10}=_0x4cf321;Object['assign'](_0x53e194,_0x208c10);throw _0x53e194;}return await _0x1e9acd['json']();},async 'createTestTask'(_0x1bd828){const _0x575c5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bd828)});if(!_0x575c5f['ok']){const _0x234b12=await _0x575c5f['json']();throw new Error(_0x234b12['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x575c5f['statusText']);}return await _0x575c5f['json']();},async 'createEphemeralTest'(_0x4ed1ac){const _0x2a9e65=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ed1ac)});if(!_0x2a9e65['ok']){const _0x5e0687=await _0x2a9e65['json']();throw new Error(_0x5e0687['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2a9e65['statusText']);}return await _0x2a9e65['json']();},async 'createDeployTask'(_0x1da051){const _0x461a70=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1da051)});if(!_0x461a70['ok']){const _0xff9e75=await _0x461a70['json']();throw new Error(_0xff9e75['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x461a70['statusText']);}return await _0x461a70['json']();},async 'getEnvironments'(){const _0x2e6b22=await fetch(API_BASE+'/environments');if(!_0x2e6b22['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2e6b22['statusText']);return await _0x2e6b22['json']();},async 'getEnvironment'(_0x4f7c5a){const _0x36196c=await fetch(API_BASE+'/environments/'+_0x4f7c5a);if(!_0x36196c['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x36196c['statusText']);return await _0x36196c['json']();},async 'getEnvironmentRepoHistory'(_0x2ad0e2,_0x5dc3e9,_0x240516={}){if(!_0x2ad0e2||!_0x5dc3e9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1672b7=new URLSearchParams();if(_0x240516['limit'])_0x1672b7['set']('limit',String(_0x240516['limit']));if(_0x240516['offset'])_0x1672b7['set']('offset',String(_0x240516['offset']));if(_0x240516['search'])_0x1672b7['set']('search',String(_0x240516['search']));if(_0x240516['branch'])_0x1672b7['set']('branch',String(_0x240516['branch']));const _0x56acd0=API_BASE+'/environments/'+encodeURIComponent(_0x2ad0e2)+'/repos/'+encodeURIComponent(_0x5dc3e9)+'/git/history',_0x420012=await fetch(''+_0x56acd0+(_0x1672b7['toString']()?'?'+_0x1672b7['toString']():''));if(!_0x420012['ok']){const _0x5b9303=await _0x420012['json']()['catch'](()=>({}));throw new Error(_0x5b9303['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x420012['statusText']);}return await _0x420012['json']();},async 'getEnvironmentRepoCommit'(_0x35fda2,_0xf257e8,_0x526a1e){if(!_0x35fda2||!_0xf257e8||!_0x526a1e)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2fe329=API_BASE+'/environments/'+encodeURIComponent(_0x35fda2)+'/repos/'+encodeURIComponent(_0xf257e8)+'/git/commits/'+encodeURIComponent(_0x526a1e),_0x32c808=await fetch(_0x2fe329);if(!_0x32c808['ok']){const _0x28a080=await _0x32c808['json']()['catch'](()=>({}));throw new Error(_0x28a080['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x32c808['statusText']);}return await _0x32c808['json']();},async 'getEnvironmentRepoBranches'(_0x2c22ad,_0x4f7675){if(!_0x2c22ad||!_0x4f7675)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3fee68=API_BASE+'/environments/'+encodeURIComponent(_0x2c22ad)+'/repos/'+encodeURIComponent(_0x4f7675)+'/git/branches',_0x281e81=await fetch(_0x3fee68);if(!_0x281e81['ok']){const _0xd10b89=await _0x281e81['json']()['catch'](()=>({}));throw new Error(_0xd10b89['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x281e81['statusText']);}return await _0x281e81['json']();},async 'revertEnvironmentRepoCommit'(_0x55bb1d,_0x3b5e19,_0x565c4d,_0x10b2e9={}){if(!_0x55bb1d||!_0x3b5e19||!_0x565c4d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x274743=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x55bb1d)+'/repos/'+encodeURIComponent(_0x3b5e19)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x565c4d,..._0x10b2e9})});if(!_0x274743['ok']){const _0x5eb66d=await _0x274743['json']()['catch'](()=>({}));throw new Error(_0x5eb66d['message']||_0x5eb66d['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x274743['statusText']);}return await _0x274743['json']();},async 'getTemplates'(_0x4c458a={}){const _0x1e97e6=new URLSearchParams();if(_0x4c458a['include']){const _0x50bcfa=Array['isArray'](_0x4c458a['include'])?_0x4c458a['include']['join'](','):String(_0x4c458a['include']);if(_0x50bcfa)_0x1e97e6['set']('include',_0x50bcfa);}const _0x2cd469=await fetch(API_BASE+'/templates'+(_0x1e97e6['toString']()?'?'+_0x1e97e6['toString']():''));if(!_0x2cd469['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2cd469['statusText']);return await _0x2cd469['json']();},async 'getTemplatesForEnvironment'(_0x2c7a49,_0xc0200a={}){if(!_0x2c7a49)throw new Error('Environment\x20name\x20is\x20required');const _0x2a7427=new URLSearchParams();if(_0xc0200a['include']){const _0x793af4=Array['isArray'](_0xc0200a['include'])?_0xc0200a['include']['join'](','):String(_0xc0200a['include']);if(_0x793af4)_0x2a7427['set']('include',_0x793af4);}const _0x1bc1c9=await fetch(API_BASE+'/templates/'+_0x2c7a49+(_0x2a7427['toString']()?'?'+_0x2a7427['toString']():''));if(!_0x1bc1c9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x2c7a49+':\x20'+_0x1bc1c9['statusText']);return await _0x1bc1c9['json']();},async 'getTemplate'(_0x126ac9,_0x13515e,_0x213f60={}){if(!_0x126ac9||!_0x13515e)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x40b61f=new URLSearchParams();if(_0x213f60['include']){const _0x1a812e=Array['isArray'](_0x213f60['include'])?_0x213f60['include']['join'](','):String(_0x213f60['include']);if(_0x1a812e)_0x40b61f['set']('include',_0x1a812e);}const _0x227c7f=await fetch(API_BASE+'/templates/'+_0x126ac9+'/'+_0x13515e+(_0x40b61f['toString']()?'?'+_0x40b61f['toString']():''));if(!_0x227c7f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x227c7f['statusText']);return await _0x227c7f['json']();},async 'getTaskLogs'(_0x99de1c,_0x5c0c05={}){if(!_0x99de1c)throw new Error('Task\x20ID\x20is\x20required');const _0x2cef21=new URLSearchParams();_0x5c0c05['tail']&&_0x2cef21['set']('tail',String(_0x5c0c05['tail']));const _0x2c2e95=await fetch(API_BASE+'/tasks/'+_0x99de1c+'/logs'+(_0x2cef21['toString']()?'?'+_0x2cef21['toString']():''));if(!_0x2c2e95['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2c2e95['statusText']);return await _0x2c2e95['text']();},async 'getContainers'(){const _0x13b38e=await fetch(API_BASE+'/containers');if(!_0x13b38e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x13b38e['statusText']);return await _0x13b38e['json']();},async 'getContainer'(_0x58df97){const _0x1da928=await fetch(API_BASE+'/containers/'+_0x58df97);if(!_0x1da928['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1da928['statusText']);return await _0x1da928['json']();},async 'startInteractiveContainer'(_0x332190){const _0x57669e=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x332190)});if(!_0x57669e['ok']){const _0x119b0a=await _0x57669e['json']()['catch'](()=>({}));throw new Error(_0x119b0a['message']||'Failed\x20to\x20start\x20container:\x20'+_0x57669e['statusText']);}return await _0x57669e['json']();},async 'startContainerCodeServer'(_0xc0aaa6,_0xbb088={}){if(!_0xc0aaa6)throw new Error('Container\x20ID\x20is\x20required');const _0x261e93=new URLSearchParams();_0xbb088['theme']&&_0x261e93['set']('theme',_0xbb088['theme']);const _0x329bfb=await fetch(API_BASE+'/containers/'+_0xc0aaa6+'/code-server'+(_0x261e93['toString']()?'?'+_0x261e93['toString']():'')),_0xbf0fb8=await _0x329bfb['json']()['catch'](()=>({}));if(!_0x329bfb['ok'])throw new Error(_0xbf0fb8['message']||_0xbf0fb8['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x329bfb['statusText']);return _0xbf0fb8;},async 'stopContainer'(_0x58e40e){const _0x59492b=await fetch(API_BASE+'/containers/'+_0x58e40e,{'method':'DELETE'});if(!_0x59492b['ok']){const _0x4934d9=await _0x59492b['json']()['catch'](()=>({}));throw new Error(_0x4934d9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x59492b['statusText']);}return await _0x59492b['json']();},async 'stopTask'(_0xd16f65){if(!_0xd16f65)throw new Error('Task\x20ID\x20is\x20required');const _0x16a7f0=await fetch(API_BASE+'/tasks/'+_0xd16f65+'/stop',{'method':'POST'});if(!_0x16a7f0['ok']){const _0x585709=await _0x16a7f0['json']()['catch'](()=>({}));throw new Error(_0x585709['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x16a7f0['statusText']);}return await _0x16a7f0['json']();},async 'interruptTask'(_0xf2942f){if(!_0xf2942f)throw new Error('Task\x20ID\x20is\x20required');const _0x10a3fc=await fetch(API_BASE+'/tasks/'+_0xf2942f+'/interrupt',{'method':'POST'});if(!_0x10a3fc['ok']){const _0x46ca3a=await _0x10a3fc['json']()['catch'](()=>({}));throw new Error(_0x46ca3a['error']||_0x46ca3a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x10a3fc['statusText']);}return await _0x10a3fc['json']();},async 'startTask'(_0x28f3f7){if(!_0x28f3f7)throw new Error('Task\x20ID\x20is\x20required');const _0x3a9332=await fetch(API_BASE+'/tasks/'+_0x28f3f7+'/start',{'method':'POST'});if(!_0x3a9332['ok']){const _0x397cca=await _0x3a9332['json']()['catch'](()=>({}));throw new Error(_0x397cca['error']||'Failed\x20to\x20start\x20task:\x20'+_0x3a9332['statusText']);}return await _0x3a9332['json']();},async 'deleteTask'(_0x421ef9){if(!_0x421ef9)throw new Error('Task\x20ID\x20is\x20required');const _0x5cb625=await fetch(API_BASE+'/tasks/'+_0x421ef9,{'method':'DELETE'});if(!_0x5cb625['ok']){const _0x3b8a6c=await _0x5cb625['json']()['catch'](()=>({}));throw new Error(_0x3b8a6c['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5cb625['statusText']);}return await _0x5cb625['json']();},async 'refreshTasksFromDisk'(){const _0x5aa35d=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x5aa35d['ok']){const _0x52add6=await _0x5aa35d['json']()['catch'](()=>({}));throw new Error(_0x52add6['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x5aa35d['statusText']);}return await _0x5aa35d['json']();},async 'approveTask'(_0x36f664,_0x16c7e6={}){if(!_0x36f664)throw new Error('Task\x20ID\x20is\x20required');const _0x23396c={'commit_message':_0x16c7e6['commit_message']||'','pull':_0x16c7e6['pull']??![],'push':_0x16c7e6['push']??![],'conflict_strategy':_0x16c7e6['conflict_strategy']||'rebase'};_0x16c7e6['new_branch']&&(_0x23396c['new_branch']=_0x16c7e6['new_branch']);const _0x1c988d=await fetch(API_BASE+'/tasks/'+_0x36f664+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23396c)});if(!_0x1c988d['ok']){const _0x297e2f=await _0x1c988d['json']()['catch'](()=>({}));let _0x58c71e=_0x297e2f['error']||_0x297e2f['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1c988d['statusText'];if(_0x297e2f['results']&&Array['isArray'](_0x297e2f['results'])){const _0x40e963=_0x297e2f['results']['filter'](_0x1f06bf=>!_0x1f06bf['success']&&_0x1f06bf['error']);_0x40e963['length']>0x0&&(_0x58c71e=_0x40e963[0x0]['error']);}const _0x383297=new Error(_0x58c71e);_0x383297['hasConflicts']=_0x297e2f['results']?.['some'](_0x33a121=>_0x33a121['conflict'])||![];throw _0x383297;}return await _0x1c988d['json']();},async 'getPullRequestInfo'(_0x153930){if(!_0x153930)throw new Error('Task\x20ID\x20is\x20required');const _0x2ac041=await fetch(API_BASE+'/tasks/'+_0x153930+'/pull-request-info');if(!_0x2ac041['ok']){const _0xa0613=await _0x2ac041['json']()['catch'](()=>({}));throw new Error(_0xa0613['error']||_0xa0613['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x2ac041['statusText']);}return await _0x2ac041['json']();},async 'createPullRequests'(_0x4f65f4,_0x5e0b0e){if(!_0x4f65f4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5e0b0e||!Array['isArray'](_0x5e0b0e))throw new Error('repos\x20array\x20is\x20required');const _0x511424=await fetch(API_BASE+'/tasks/'+_0x4f65f4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x5e0b0e})});if(!_0x511424['ok']){const _0x4b27f0=await _0x511424['json']()['catch'](()=>({}));let _0x4f27bf=_0x4b27f0['error']||_0x4b27f0['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x511424['statusText'];if(_0x4b27f0['results']&&Array['isArray'](_0x4b27f0['results'])){const _0x9ec0ee=_0x4b27f0['results']['filter'](_0x464e2f=>!_0x464e2f['success']&&_0x464e2f['error']);_0x9ec0ee['length']>0x0&&(_0x4f27bf=_0x9ec0ee[0x0]['error']);}throw new Error(_0x4f27bf);}return await _0x511424['json']();},async 'syncRepos'(_0xe77124){if(!_0xe77124)throw new Error('Task\x20ID\x20is\x20required');const _0x23049d=await fetch(API_BASE+'/tasks/'+_0xe77124+'/sync-repos',{'method':'POST'});if(!_0x23049d['ok']){const _0x34c2c1=await _0x23049d['json']()['catch'](()=>({}));throw new Error(_0x34c2c1['error']||_0x34c2c1['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x23049d['statusText']);}return await _0x23049d['json']();},async 'getIbmiSyncInfo'(_0x2a0937){if(!_0x2a0937)throw new Error('Task\x20ID\x20is\x20required');const _0x16b796=await fetch(API_BASE+'/tasks/'+_0x2a0937+'/ibmi-sync-info');if(!_0x16b796['ok']){const _0x25df23=await _0x16b796['json']()['catch'](()=>({}));throw new Error(_0x25df23['error']||_0x25df23['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x16b796['json']();},async 'getSyncFiles'(_0x5ea8ea){if(!_0x5ea8ea)throw new Error('Task\x20ID\x20is\x20required');const _0x8d2546=await fetch(API_BASE+'/tasks/'+_0x5ea8ea+'/sync-to-ibmi/files');if(!_0x8d2546['ok']){const _0x21f580=await _0x8d2546['json']()['catch'](()=>({}));throw new Error(_0x21f580['error']||_0x21f580['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x8d2546['json']();},async 'syncToIbmi'(_0x53faa3,_0xa3af8f,_0x45a170=null,_0xb37f65=null,_0x5aeb6c=null){if(!_0x53faa3)throw new Error('Task\x20ID\x20is\x20required');const _0x590805={'library':_0xa3af8f};if(_0x45a170)_0x590805['user']=_0x45a170;if(_0xb37f65)_0x590805['password']=_0xb37f65;if(_0x5aeb6c)_0x590805['files']=_0x5aeb6c;const _0x52c9da=await fetch(API_BASE+'/tasks/'+_0x53faa3+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x590805)});if(!_0x52c9da['ok']){const _0x31f97e=await _0x52c9da['json']()['catch'](()=>({}));throw new Error(_0x31f97e['error']||_0x31f97e['message']||'Sync\x20failed');}return await _0x52c9da['json']();},async 'getIbmiSyncLog'(_0x1dde02){if(!_0x1dde02)throw new Error('Task\x20ID\x20is\x20required');const _0x47ee70=await fetch(API_BASE+'/tasks/'+_0x1dde02+'/ibmi-sync-log');if(!_0x47ee70['ok']){const _0x1d41a2=await _0x47ee70['json']()['catch'](()=>({}));throw new Error(_0x1d41a2['error']||_0x1d41a2['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x47ee70['json']();},async 'pullChanges'(_0x589ce4){if(!_0x589ce4)throw new Error('Task\x20ID\x20is\x20required');const _0x31e73b=await fetch(API_BASE+'/tasks/'+_0x589ce4+'/pull-changes',{'method':'POST'});if(!_0x31e73b['ok']){const _0x5238b3=await _0x31e73b['json']()['catch'](()=>({}));throw new Error(_0x5238b3['error']||_0x5238b3['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x31e73b['statusText']);}return await _0x31e73b['json']();},async 'readFile'(_0x1c363b,_0x27822a){if(!_0x1c363b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27822a)throw new Error('File\x20path\x20is\x20required');const _0x4c5c92=await fetch(API_BASE+'/tasks/'+_0x1c363b+'/files?path='+encodeURIComponent(_0x27822a));if(!_0x4c5c92['ok']){const _0x430404=await _0x4c5c92['json']()['catch'](()=>({}));throw new Error(_0x430404['error']||_0x430404['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4c5c92['statusText']);}return await _0x4c5c92['json']();},'getTaskFileDownloadUrl'(_0x2e6359,_0x36eab6){if(!_0x2e6359)throw new Error('Task\x20ID\x20is\x20required');if(!_0x36eab6)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2e6359+'/files/download?path='+encodeURIComponent(_0x36eab6);},async 'writeFile'(_0x1db349,_0x30a9fe,_0x40e899){if(!_0x1db349)throw new Error('Task\x20ID\x20is\x20required');if(!_0x30a9fe)throw new Error('File\x20path\x20is\x20required');if(_0x40e899===undefined)throw new Error('Content\x20is\x20required');const _0x5eea4d=await fetch(API_BASE+'/tasks/'+_0x1db349+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x30a9fe,'content':_0x40e899})});if(!_0x5eea4d['ok']){const _0x4861a7=await _0x5eea4d['json']()['catch'](()=>({}));throw new Error(_0x4861a7['error']||_0x4861a7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x5eea4d['statusText']);}return await _0x5eea4d['json']();},async 'uploadTaskFiles'(_0x20dae2,_0x38f457,_0x15bbc1){if(!_0x20dae2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38f457)throw new Error('Target\x20directory\x20is\x20required');if(!_0x15bbc1||_0x15bbc1['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x59a0a2=new FormData();_0x59a0a2['append']('targetDir',_0x38f457);for(const _0x463580 of _0x15bbc1){_0x59a0a2['append']('files',_0x463580,_0x463580['name']);}const _0x13abd3=await fetch(API_BASE+'/tasks/'+_0x20dae2+'/files/upload',{'method':'POST','body':_0x59a0a2});if(!_0x13abd3['ok']){const _0x1e2928=await _0x13abd3['json']()['catch'](()=>({}));throw new Error(_0x1e2928['error']||_0x1e2928['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x13abd3['statusText']);}return await _0x13abd3['json']();},async 'createDirectory'(_0x257347,_0x563e4f){if(!_0x257347)throw new Error('Task\x20ID\x20is\x20required');if(!_0x563e4f)throw new Error('Directory\x20path\x20is\x20required');const _0x414a52=await fetch(API_BASE+'/tasks/'+_0x257347+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x563e4f})});if(!_0x414a52['ok']){const _0x3313a3=await _0x414a52['json']()['catch'](()=>({}));throw new Error(_0x3313a3['error']||_0x3313a3['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x414a52['statusText']);}return await _0x414a52['json']();},async 'renamePath'(_0x52af8f,_0xe3d645,_0x3da508){if(!_0x52af8f)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe3d645)throw new Error('Source\x20path\x20is\x20required');if(!_0x3da508)throw new Error('Destination\x20path\x20is\x20required');const _0x1b0c11=await fetch(API_BASE+'/tasks/'+_0x52af8f+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0xe3d645,'newPath':_0x3da508})});if(!_0x1b0c11['ok']){const _0x3b0678=await _0x1b0c11['json']()['catch'](()=>({}));throw new Error(_0x3b0678['error']||_0x3b0678['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x1b0c11['statusText']);}return await _0x1b0c11['json']();},async 'deleteFile'(_0x5dcaf4,_0x2b8f28){if(!_0x5dcaf4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2b8f28)throw new Error('File\x20path\x20is\x20required');const _0x1fec5d=await fetch(API_BASE+'/tasks/'+_0x5dcaf4+'/files?path='+encodeURIComponent(_0x2b8f28),{'method':'DELETE'});if(!_0x1fec5d['ok']){const _0x5ba288=await _0x1fec5d['json']()['catch'](()=>({}));throw new Error(_0x5ba288['error']||_0x5ba288['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1fec5d['statusText']);}return await _0x1fec5d['json']();},async 'deleteDirectory'(_0x29cdac,_0x2cbfe6){if(!_0x29cdac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2cbfe6)throw new Error('Directory\x20path\x20is\x20required');const _0x53a0bc=await fetch(API_BASE+'/tasks/'+_0x29cdac+'/files/directory?path='+encodeURIComponent(_0x2cbfe6),{'method':'DELETE'});if(!_0x53a0bc['ok']){const _0x1c6743=await _0x53a0bc['json']()['catch'](()=>({}));throw new Error(_0x1c6743['error']||_0x1c6743['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x53a0bc['statusText']);}return await _0x53a0bc['json']();},async 'discardFile'(_0x3ae98a,_0x10bc82,_0x15fd0c){if(!_0x3ae98a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x10bc82)throw new Error('File\x20path\x20is\x20required');if(!_0x15fd0c)throw new Error('Repository\x20path\x20is\x20required');const _0x58c805=await fetch(API_BASE+'/tasks/'+_0x3ae98a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x10bc82,'repoPath':_0x15fd0c})});if(!_0x58c805['ok']){const _0xc2fd4=await _0x58c805['json']()['catch'](()=>({}));throw new Error(_0xc2fd4['error']||_0xc2fd4['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x58c805['statusText']);}return await _0x58c805['json']();},async 'followUpTask'(_0x4947a4,_0x1df9fc={}){if(!_0x4947a4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1df9fc['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0xb987f8,_0x3552fd={};if(_0x1df9fc['files']&&_0x1df9fc['files']['length']>0x0){const _0x221778=new FormData();_0x221778['append']('instructions',_0x1df9fc['instructions']);for(const _0x3a4366 of _0x1df9fc['files']){_0x221778['append']('attachments',_0x3a4366);}_0xb987f8=_0x221778;}else _0x3552fd['Content-Type']='application/json',_0xb987f8=JSON['stringify']({'instructions':_0x1df9fc['instructions']});const _0x18a15c=await fetch(API_BASE+'/tasks/'+_0x4947a4+'/follow-up',{'method':'POST','headers':_0x3552fd,'body':_0xb987f8});if(!_0x18a15c['ok']){const _0x587206=await _0x18a15c['json']()['catch'](()=>({}));throw new Error(_0x587206['error']||_0x587206['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x18a15c['statusText']);}return await _0x18a15c['json']();},async 'getTaskRewindPoints'(_0x423e0f){if(!_0x423e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x5199a4=await fetch(API_BASE+'/tasks/'+_0x423e0f+'/rewind-points');if(!_0x5199a4['ok']){const _0x482362=await _0x5199a4['json']()['catch'](()=>({}));throw new Error(_0x482362['error']||_0x482362['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x5199a4['statusText']);}return await _0x5199a4['json']();},async 'rewindTask'(_0x29a645,_0x207dbc={}){if(!_0x29a645)throw new Error('Task\x20ID\x20is\x20required');const _0xa7f19d=Number['isInteger'](_0x207dbc['targetFollowUpCount'])?_0x207dbc['targetFollowUpCount']:0x0,_0x3d924e={'targetFollowUpCount':_0xa7f19d};typeof _0x207dbc['instructions']==='string'&&_0x207dbc['instructions']['trim']()&&(_0x3d924e['instructions']=_0x207dbc['instructions']['trim']());typeof _0x207dbc['rewindFiles']==='boolean'&&(_0x3d924e['rewindFiles']=_0x207dbc['rewindFiles']);const _0x5520a8=await fetch(API_BASE+'/tasks/'+_0x29a645+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d924e)});if(!_0x5520a8['ok']){const _0x2ca505=await _0x5520a8['json']()['catch'](()=>({}));throw new Error(_0x2ca505['error']||_0x2ca505['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5520a8['statusText']);}return await _0x5520a8['json']();},async 'login'(_0x4eca7e,_0x5b1b7d){const _0x106f9c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4eca7e,'password':_0x5b1b7d})});if(!_0x106f9c['ok']){const _0x3c4f68=await _0x106f9c['json']();throw new Error(_0x3c4f68['message']||'Login\x20failed');}return await _0x106f9c['json']();},async 'logout'(){const _0x538f13=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x538f13['ok']){const _0x13cc47=await _0x538f13['json']();throw new Error(_0x13cc47['message']||'Logout\x20failed');}return await _0x538f13['json']();},async 'getCurrentUser'(){const _0x15e27a=await fetch(API_BASE+'/auth/me');if(!_0x15e27a['ok'])throw new Error('Not\x20authenticated');const _0x359c67=await _0x15e27a['json']();return _0x359c67['user'];},async 'getRolesInfo'(){const _0x42aef4=await fetch(API_BASE+'/users/roles');if(!_0x42aef4['ok']){const _0x58d475=await _0x42aef4['json']();throw new Error(_0x58d475['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42aef4['json']();},async 'getUsers'(){const _0x522437=await fetch(API_BASE+'/users');if(!_0x522437['ok']){const _0x2d811e=await _0x522437['json']();throw new Error(_0x2d811e['message']||'Failed\x20to\x20get\x20users');}return await _0x522437['json']();},async 'getUser'(_0x292a08){const _0x3e1142=await fetch(API_BASE+'/users/'+_0x292a08);if(!_0x3e1142['ok']){const _0x47acd8=await _0x3e1142['json']();throw new Error(_0x47acd8['message']||'Failed\x20to\x20get\x20user');}return await _0x3e1142['json']();},async 'createUser'(_0x27c309){const _0x3a7221=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x27c309)});if(!_0x3a7221['ok']){const _0x7de1e1=await _0x3a7221['json']();throw new Error(_0x7de1e1['message']||'Failed\x20to\x20create\x20user');}return await _0x3a7221['json']();},async 'updateUser'(_0x23c5c5,_0xd501da){const _0x5c2fb0=await fetch(API_BASE+'/users/'+_0x23c5c5,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd501da)});if(!_0x5c2fb0['ok']){const _0x4e78e7=await _0x5c2fb0['json']();throw new Error(_0x4e78e7['message']||'Failed\x20to\x20update\x20user');}return await _0x5c2fb0['json']();},async 'deleteUser'(_0x405012){const _0x1c7052=await fetch(API_BASE+'/users/'+_0x405012,{'method':'DELETE'});if(!_0x1c7052['ok']){const _0x4f3b71=await _0x1c7052['json']();throw new Error(_0x4f3b71['message']||'Failed\x20to\x20delete\x20user');}return await _0x1c7052['json']();},async 'stopAllContainers'(){const _0x503e6c=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3a3e64=await _0x503e6c['json']()['catch'](()=>({}));if(!_0x503e6c['ok'])throw new Error(_0x3a3e64['message']||_0x3a3e64['error']||'Failed\x20to\x20stop\x20containers');return _0x3a3e64;},async 'removeStoppedContainers'(){const _0x19cb7f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bf9ed=await _0x19cb7f['json']()['catch'](()=>({}));if(!_0x19cb7f['ok'])throw new Error(_0x2bf9ed['message']||_0x2bf9ed['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bf9ed;},async 'pruneDockerResources'(){const _0xca26c4=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xd73b8e=await _0xca26c4['json']()['catch'](()=>({}));if(!_0xca26c4['ok'])throw new Error(_0xd73b8e['message']||_0xd73b8e['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xd73b8e;},async 'getUpdateSettings'(){const _0x14a1ce=await fetch(API_BASE+'/health/update-settings'),_0x49839e=await _0x14a1ce['json']()['catch'](()=>({}));if(!_0x14a1ce['ok'])throw new Error(_0x49839e['message']||_0x49839e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x49839e;},async 'applyServerUpdate'(_0x2f4097){const _0xaf364d=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2f4097})}),_0x5c938c=await _0xaf364d['json']()['catch'](()=>({}));if(!_0xaf364d['ok']){const _0x14786e=new Error(_0x5c938c['message']||_0x5c938c['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x5c938c['output']!==undefined)_0x14786e['output']=_0x5c938c['output'];if(_0x5c938c['error']!==undefined)_0x14786e['commandError']=_0x5c938c['error'];throw _0x14786e;}return _0x5c938c;},async 'restartServer'(){const _0x5ac725=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0xc1174=await _0x5ac725['json']()['catch'](()=>({}));if(!_0x5ac725['ok'])throw new Error(_0xc1174['message']||_0xc1174['error']||'Failed\x20to\x20restart\x20server');return _0xc1174;},async 'createPasswordToken'(_0x2ab1da,_0x4669c8='setup',_0x47aca7=![]){const _0x2db658=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab1da,'type':_0x4669c8,'sendEmail':_0x47aca7})});if(!_0x2db658['ok']){const _0x373432=await _0x2db658['json']();throw new Error(_0x373432['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2db658['json']();},async 'getEmailConfig'(){const _0x588945=await fetch(API_BASE+'/password/email-config');if(!_0x588945['ok']){const _0x4f2388=await _0x588945['json']();throw new Error(_0x4f2388['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x588945['json']();},async 'updateTaskName'(_0x568e9c,_0x1a3142){const _0x5a4882=await fetch(API_BASE+'/tasks/'+_0x568e9c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1a3142})});if(!_0x5a4882['ok']){const _0x168bbe=await _0x5a4882['json']();throw new Error(_0x168bbe['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a4882['json']();},async 'pinTask'(_0x258ed2,_0x408d46,_0x2c058e=null){if(!_0x258ed2)throw new Error('Task\x20ID\x20is\x20required');const _0x4b2fbf={'pinned':_0x408d46};_0x2c058e&&_0x2c058e['length']>0x0&&(_0x4b2fbf['additionalTaskIds']=_0x2c058e);const _0x56e6b7=await fetch(API_BASE+'/tasks/'+_0x258ed2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b2fbf)});if(!_0x56e6b7['ok']){const _0x5467cb=await _0x56e6b7['json']();throw new Error(_0x5467cb['error']||'Failed\x20to\x20pin\x20task');}return await _0x56e6b7['json']();},async 'setTaskWinner'(_0x209e25,_0x400168,_0x1f043a=[]){if(!_0x209e25)throw new Error('Task\x20ID\x20is\x20required');const _0x26b77a=await fetch(API_BASE+'/tasks/'+_0x209e25+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x400168,'siblings':_0x1f043a})});if(!_0x26b77a['ok']){const _0x1cd2bb=await _0x26b77a['json']();throw new Error(_0x1cd2bb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x26b77a['json']();},async 'setTaskLoser'(_0x2a578a,_0x3627f6){if(!_0x2a578a)throw new Error('Task\x20ID\x20is\x20required');const _0x10fa45=await fetch(API_BASE+'/tasks/'+_0x2a578a+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3627f6})});if(!_0x10fa45['ok']){const _0x3cbbda=await _0x10fa45['json']();throw new Error(_0x3cbbda['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x10fa45['json']();},async 'createTaskGroup'(_0x30bb49){const _0x3a3373=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30bb49)});if(!_0x3a3373['ok']){const _0x535ada=await _0x3a3373['json']();throw new Error(_0x535ada['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x3a3373['json']();},async 'getTaskGroups'(_0x21958b={}){const _0x59169f=new URLSearchParams();if(_0x21958b['userId'])_0x59169f['set']('userId',String(_0x21958b['userId']));if(_0x21958b['status'])_0x59169f['set']('status',String(_0x21958b['status']));if(_0x21958b['limit'])_0x59169f['set']('limit',String(_0x21958b['limit']));const _0x561d47=API_BASE+'/tasks/groups'+(_0x59169f['toString']()?'?'+_0x59169f['toString']():''),_0x47278c=await fetch(_0x561d47);if(!_0x47278c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x47278c['json']();},async 'getTaskGroup'(_0x24cbdf){const _0x3853d8=await fetch(API_BASE+'/tasks/groups/'+_0x24cbdf);if(!_0x3853d8['ok']){const _0x4defe7=await _0x3853d8['json']();throw new Error(_0x4defe7['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3853d8['json']();},async 'updateTaskGroup'(_0x332396,_0x4bdf0f,_0x1fe4a2){const _0x250821=await fetch(API_BASE+'/tasks/'+_0x332396+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4bdf0f,'groupIndex':_0x1fe4a2})});if(!_0x250821['ok']){const _0x2b3c46=await _0x250821['json']();throw new Error(_0x2b3c46['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x250821['json']();},async 'removeTaskFromGroup'(_0x191e09){return this['updateTaskGroup'](_0x191e09,null,null);},async 'deleteTaskGroup'(_0x30de95,_0x59eb80=![]){const _0x4869af=_0x59eb80?'?deleteTasks=true':'',_0x4e71c1=await fetch(API_BASE+'/tasks/groups/'+_0x30de95+_0x4869af,{'method':'DELETE'});if(!_0x4e71c1['ok']){const _0x2db073=await _0x4e71c1['json']();throw new Error(_0x2db073['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x2018f7,_0xd14cbf){const _0x3ea58a=await fetch(API_BASE+'/tasks/groups/'+_0x2018f7+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0xd14cbf})});if(!_0x3ea58a['ok']){const _0x113df7=await _0x3ea58a['json']();throw new Error(_0x113df7['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ea58a['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x2fd182){if(!_0x2fd182)throw new Error('Task\x20ID\x20is\x20required');const _0x4a98e9=await fetch(API_BASE+'/tasks/'+_0x2fd182+'/comments');if(!_0x4a98e9['ok']){const _0x911fed=await _0x4a98e9['json']()['catch'](()=>({}));throw new Error(_0x911fed['error']||'Failed\x20to\x20get\x20comments');}return await _0x4a98e9['json']();},async 'addComment'(_0x1bbf8d,_0x4565e5){if(!_0x1bbf8d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4565e5)throw new Error('Comment\x20content\x20is\x20required');const _0x167ae1=await fetch(API_BASE+'/tasks/'+_0x1bbf8d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4565e5})});if(!_0x167ae1['ok']){const _0x1a4cd0=await _0x167ae1['json']()['catch'](()=>({}));throw new Error(_0x1a4cd0['error']||'Failed\x20to\x20add\x20comment');}return await _0x167ae1['json']();},async 'updateComment'(_0x160e2a,_0x4e08fe,_0x1cedcb){if(!_0x160e2a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e08fe)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1cedcb)throw new Error('Comment\x20content\x20is\x20required');const _0x37f933=await fetch(API_BASE+'/tasks/'+_0x160e2a+'/comments/'+_0x4e08fe,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1cedcb})});if(!_0x37f933['ok']){const _0x5e18f4=await _0x37f933['json']()['catch'](()=>({}));throw new Error(_0x5e18f4['error']||'Failed\x20to\x20update\x20comment');}return await _0x37f933['json']();},async 'deleteComment'(_0x48f968,_0xce8cc4){if(!_0x48f968)throw new Error('Task\x20ID\x20is\x20required');if(!_0xce8cc4)throw new Error('Comment\x20ID\x20is\x20required');const _0xc34ce8=await fetch(API_BASE+'/tasks/'+_0x48f968+'/comments/'+_0xce8cc4,{'method':'DELETE'});if(!_0xc34ce8['ok']){const _0x19674c=await _0xc34ce8['json']()['catch'](()=>({}));throw new Error(_0x19674c['error']||'Failed\x20to\x20delete\x20comment');}return await _0xc34ce8['json']();},async 'createObjective'(_0x1a5ba7){const _0x3953b6={'objective':!![],'name':_0x1a5ba7['name']||'','environment':_0x1a5ba7['environment']||null,'agents':_0x1a5ba7['agents']||[],'branches':_0x1a5ba7['branches']||{},'isPinned':_0x1a5ba7['isPinned']||![],'parentObjectiveId':_0x1a5ba7['parentObjectiveId']||null,'env_vars':_0x1a5ba7['envVars']||{},'parameters':{'instructions':_0x1a5ba7['instructions']||''},'files':_0x1a5ba7['files']||[],'jira':_0x1a5ba7['jira']||null};return this['createTask'](_0x3953b6);},async 'updateObjective'(_0x21653f,_0x29992c,_0x1f57cf=[],_0x5d470f=[]){let _0x59ae3c,_0x502078={};const _0xf87e79={..._0x29992c};_0x5d470f&&_0x5d470f['length']>0x0&&(_0xf87e79['removeAttachments']=_0x5d470f);if(_0x1f57cf&&_0x1f57cf['length']>0x0){const _0x55f7b2=new FormData();for(const [_0x2f23a5,_0x3b771d]of Object['entries'](_0xf87e79)){if(_0x3b771d==null)continue;typeof _0x3b771d==='object'?_0x55f7b2['append'](_0x2f23a5,JSON['stringify'](_0x3b771d)):_0x55f7b2['append'](_0x2f23a5,String(_0x3b771d));}for(const _0x58a13e of _0x1f57cf){_0x55f7b2['append']('attachments',_0x58a13e);}_0x59ae3c=_0x55f7b2;}else _0x502078['Content-Type']='application/json',_0x59ae3c=JSON['stringify'](_0xf87e79);const _0x12a48a=await fetch(API_BASE+'/tasks/'+_0x21653f,{'method':'PATCH','headers':_0x502078,'body':_0x59ae3c});if(!_0x12a48a['ok']){const _0x117323=await _0x12a48a['json']();throw new Error(_0x117323['error']||'Failed\x20to\x20update\x20objective');}return await _0x12a48a['json']();},async 'deleteObjective'(_0x4dd611){return this['deleteTask'](_0x4dd611);},async 'launchObjective'(_0x32d235,_0x5824c4={}){const _0xaf41f3=await fetch(API_BASE+'/tasks/'+_0x32d235+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5824c4)});if(!_0xaf41f3['ok']){const _0x2895eb=await _0xaf41f3['json']();throw new Error(_0x2895eb['error']||'Failed\x20to\x20launch\x20objective');}return await _0xaf41f3['json']();},async 'getObjectiveAttachments'(_0x1cf694){return this['getTaskAttachments'](_0x1cf694);},async 'createJudgeTask'({environment:_0x115499,judgeAgent:_0xc6bb73,groupId:_0x445d92,taskIds:_0x13d231,judgeCustomInstructions:_0x9568ac,isPinned:_0x2e0ae9}){const _0x355605=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x115499,'judgeAgent':_0xc6bb73,'groupId':_0x445d92,'taskIds':_0x13d231,'judgeCustomInstructions':_0x9568ac,'isPinned':_0x2e0ae9})});if(!_0x355605['ok']){const _0x295452=await _0x355605['json']();throw new Error(_0x295452['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x355605['json']();},async 'getJudgeTasks'(_0x36fcfb){const _0x3b99e3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x36fcfb));if(!_0x3b99e3['ok']){const _0x569366=await _0x3b99e3['json']();throw new Error(_0x569366['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x3b99e3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ced1a,_0x48f738,_0x405950=''){const _0x145110=await fetch(API_BASE+'/tasks/'+_0x4ced1a+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x48f738,'customPreamble':_0x405950})});if(!_0x145110['ok']){const _0x36a2e5=await _0x145110['json']();throw new Error(_0x36a2e5['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x145110['json']();},async 'getJiraConfig'(){const _0x139820=await fetch(API_BASE+'/jira/config');if(!_0x139820['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x139820['json']();},async 'getJiraIssue'(_0x3d9769){const _0x1dc8b7=await fetch(API_BASE+'/jira/issues/'+_0x3d9769);if(!_0x1dc8b7['ok']){const _0x51835f=await _0x1dc8b7['json']()['catch'](()=>({}));throw new Error(_0x51835f['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1dc8b7['statusText']);}return await _0x1dc8b7['json']();},async 'searchJiraIssues'(_0x10ef8a,_0x4aded2=0x14){const _0x81d13f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x10ef8a,'maxResults':_0x4aded2})});if(!_0x81d13f['ok']){const _0x5263d7=await _0x81d13f['json']()['catch'](()=>({}));throw new Error(_0x5263d7['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x81d13f['statusText']);}return await _0x81d13f['json']();},async 'postJiraComment'(_0x49c0ad,_0x45b5a8){const _0x4198a1=await fetch(API_BASE+'/jira/issues/'+_0x49c0ad+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x45b5a8})});if(!_0x4198a1['ok']){const _0xb346f3=await _0x4198a1['json']()['catch'](()=>({}));throw new Error(_0xb346f3['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4198a1['statusText']);}return await _0x4198a1['json']();},async 'getJiraComments'(_0x400c82){const _0xc9b72a=await fetch(API_BASE+'/jira/issues/'+_0x400c82+'/comments');if(!_0xc9b72a['ok']){const _0x21c6f2=await _0xc9b72a['json']()['catch'](()=>({}));throw new Error(_0x21c6f2['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0xc9b72a['statusText']);}return await _0xc9b72a['json']();},async 'promptParameter'({environment:_0x4500c4,command:_0x7ab843,parser:parser='json'}){const _0xd55b3b=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4500c4,'command':_0x7ab843,'parser':parser})});if(!_0xd55b3b['ok']){const _0x532bf5=await _0xd55b3b['json']()['catch'](()=>({}));throw new Error(_0x532bf5['message']||_0x532bf5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xd55b3b['statusText']);}return await _0xd55b3b['json']();},async 'promptParameterStream'(_0x589855,_0x86256b){const _0x4b3bfb=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x589855)});if(!_0x4b3bfb['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b3bfb['statusText']);const _0x269171=_0x4b3bfb['body']['getReader'](),_0x5c3f08=new TextDecoder();let _0x524bb6='';return new Promise((_0x2cae59,_0x43953f)=>{const _0x227f23=async()=>{try{const {done:_0x3cc8b,value:_0x4a828d}=await _0x269171['read']();if(_0x3cc8b)return;_0x524bb6+=_0x5c3f08['decode'](_0x4a828d,{'stream':!![]});const _0x53b7c1=_0x524bb6['split']('\x0a\x0a');_0x524bb6=_0x53b7c1['pop']()||'';for(const _0x50a460 of _0x53b7c1){if(!_0x50a460['trim']())continue;const _0x4e6b27=_0x50a460['split']('\x0a');let _0x3393de='message',_0xd0f98c='';for(const _0x56417b of _0x4e6b27){if(_0x56417b['startsWith']('event:'))_0x3393de=_0x56417b['substring'](0x6)['trim']();else _0x56417b['startsWith']('data:')&&(_0xd0f98c=_0x56417b['substring'](0x5)['trim']());}if(!_0xd0f98c)continue;try{const _0x259a2c=JSON['parse'](_0xd0f98c);if(_0x3393de==='progress'&&_0x86256b)_0x86256b(_0x259a2c['stage'],_0x259a2c['message']);else{if(_0x3393de==='result'){_0x2cae59(_0x259a2c);return;}else{if(_0x3393de==='error'){let _0x58c42c=_0x259a2c['message']||_0x259a2c['error']||'Prompt\x20command\x20failed';_0x259a2c['rawOutput']&&(_0x58c42c+='\x0a\x0aRaw\x20output:\x0a'+_0x259a2c['rawOutput']);_0x43953f(new Error(_0x58c42c));return;}}}}catch(_0x53d1b7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x53d1b7),console['error']('Event\x20type:',_0x3393de),console['error']('Event\x20data:',_0xd0f98c),console['error']('First\x20200\x20chars:',_0xd0f98c['substring'](0x0,0xc8)),_0x43953f(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x53d1b7['message']+'\x0a\x0aData:\x20'+_0xd0f98c['substring'](0x0,0x1f4)));return;}}_0x227f23();}catch(_0x189ef1){_0x43953f(_0x189ef1);}};_0x227f23();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3680e0){const _0x47a625=await fetch(''+API_BASE+_0x3680e0);if(!_0x47a625['ok']){const _0x137bc4=await _0x47a625['json']()['catch'](()=>({'error':_0x47a625['statusText']})),_0x35202d=new Error(_0x137bc4['error']||_0x137bc4['message']||_0x47a625['statusText']);if(_0x137bc4['detail']!==undefined)_0x35202d['detail']=_0x137bc4['detail'];throw _0x35202d;}return await _0x47a625['json']();},async 'post'(_0x40f7b5,_0x5906c8){const _0x40eb7f=await fetch(''+API_BASE+_0x40f7b5,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5906c8)});if(!_0x40eb7f['ok']){const _0x5e84fb=await _0x40eb7f['json']()['catch'](()=>({'error':_0x40eb7f['statusText']})),_0x1db70f=new Error(_0x5e84fb['error']||_0x5e84fb['message']||_0x40eb7f['statusText']);if(_0x5e84fb['detail']!==undefined)_0x1db70f['detail']=_0x5e84fb['detail'];throw _0x1db70f;}return await _0x40eb7f['json']();},async 'put'(_0x2e0533,_0x10c703){const _0x4c76d8=await fetch(''+API_BASE+_0x2e0533,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c703)});if(!_0x4c76d8['ok']){const _0xf9215f=await _0x4c76d8['json']()['catch'](()=>({'error':_0x4c76d8['statusText']})),_0x95d78e=new Error(_0xf9215f['error']||_0xf9215f['message']||_0x4c76d8['statusText']);if(_0xf9215f['detail']!==undefined)_0x95d78e['detail']=_0xf9215f['detail'];throw _0x95d78e;}return await _0x4c76d8['json']();},async 'delete'(_0x24f5c0,_0xdce819){const _0x30ce4d={'method':'DELETE'};_0xdce819&&(_0x30ce4d['headers']={'Content-Type':'application/json'},_0x30ce4d['body']=JSON['stringify'](_0xdce819));const _0x152284=await fetch(''+API_BASE+_0x24f5c0,_0x30ce4d);if(!_0x152284['ok']){const _0x185601=await _0x152284['json']()['catch'](()=>({'error':_0x152284['statusText']})),_0xa4b9b=new Error(_0x185601['error']||_0x185601['message']||_0x152284['statusText']);if(_0x185601['detail']!==undefined)_0xa4b9b['detail']=_0x185601['detail'];throw _0xa4b9b;}return await _0x152284['json']();},async 'getSkills'(){const _0x370159=await fetch(API_BASE+'/skills');if(!_0x370159['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x370159['statusText']);return await _0x370159['json']();},async 'getSkill'(_0x110ac1){const _0x712089=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x110ac1));if(!_0x712089['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x712089['statusText']);return await _0x712089['json']();},async 'createSkill'(_0x26a896){const _0x2d6767=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26a896)});if(!_0x2d6767['ok']){const _0x1b1c7b=await _0x2d6767['json']()['catch'](()=>({'error':_0x2d6767['statusText']})),_0x41586b=new Error(_0x1b1c7b['error']||_0x1b1c7b['message']||_0x2d6767['statusText']);if(_0x1b1c7b['detail']!==undefined)_0x41586b['detail']=_0x1b1c7b['detail'];throw _0x41586b;}return await _0x2d6767['json']();},async 'updateSkill'(_0xe3bc3b,_0x1bc545){const _0x22d0a9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xe3bc3b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bc545)});if(!_0x22d0a9['ok']){const _0x5b3324=await _0x22d0a9['json']()['catch'](()=>({'error':_0x22d0a9['statusText']})),_0x417ff9=new Error(_0x5b3324['error']||_0x5b3324['message']||_0x22d0a9['statusText']);if(_0x5b3324['detail']!==undefined)_0x417ff9['detail']=_0x5b3324['detail'];throw _0x417ff9;}return await _0x22d0a9['json']();},async 'deleteSkill'(_0xbeb4e7){const _0x279975=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xbeb4e7),{'method':'DELETE'});if(!_0x279975['ok']){const _0x158204=await _0x279975['json']()['catch'](()=>({'error':_0x279975['statusText']})),_0x43bcb9=new Error(_0x158204['error']||_0x158204['message']||_0x279975['statusText']);if(_0x158204['detail']!==undefined)_0x43bcb9['detail']=_0x158204['detail'];throw _0x43bcb9;}return await _0x279975['json']();},async 'getSkillFile'(_0x762216,_0xf1c4f2){const _0x39a974=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x762216)+'/files/'+_0xf1c4f2);if(!_0x39a974['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x39a974['statusText']);return await _0x39a974['json']();},async 'saveSkillFile'(_0x4e1ab1,_0x122a15,_0x59183d){const _0x44bd5d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4e1ab1)+'/files/'+_0x122a15,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x59183d})});if(!_0x44bd5d['ok']){const _0x4e667b=await _0x44bd5d['json']()['catch'](()=>({'error':_0x44bd5d['statusText']})),_0x4d9361=new Error(_0x4e667b['error']||_0x4e667b['message']||_0x44bd5d['statusText']);if(_0x4e667b['detail']!==undefined)_0x4d9361['detail']=_0x4e667b['detail'];throw _0x4d9361;}return await _0x44bd5d['json']();},async 'deleteSkillFile'(_0x45ed0b,_0x1d8f00){const _0x4c043d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x45ed0b)+'/files/'+_0x1d8f00,{'method':'DELETE'});if(!_0x4c043d['ok']){const _0x567a05=await _0x4c043d['json']()['catch'](()=>({'error':_0x4c043d['statusText']})),_0x32f569=new Error(_0x567a05['error']||_0x567a05['message']||_0x4c043d['statusText']);if(_0x567a05['detail']!==undefined)_0x32f569['detail']=_0x567a05['detail'];throw _0x32f569;}return await _0x4c043d['json']();},async 'pullSkills'(){const _0xf9bff5=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0xf9bff5['ok']){const _0x1760d5=await _0xf9bff5['json']()['catch'](()=>({'error':_0xf9bff5['statusText']})),_0x181b57=new Error(_0x1760d5['error']||_0x1760d5['message']||_0xf9bff5['statusText']);if(_0x1760d5['detail']!==undefined)_0x181b57['detail']=_0x1760d5['detail'];throw _0x181b57;}return await _0xf9bff5['json']();},async 'commitSkills'(_0x296c91,_0x42ed6b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x42ed6b,_0x3b5deb=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x296c91,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3b5deb['ok']){const _0xa1242a=await _0x3b5deb['json']()['catch'](()=>({'error':_0x3b5deb['statusText']})),_0x565e23=new Error(_0xa1242a['error']||_0xa1242a['message']||_0x3b5deb['statusText']);if(_0xa1242a['detail']!==undefined)_0x565e23['detail']=_0xa1242a['detail'];throw _0x565e23;}return await _0x3b5deb['json']();},async 'discardSkillsChanges'(){const _0x2c0ae6=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2c0ae6['ok']){const _0x4ad962=await _0x2c0ae6['json']()['catch'](()=>({'error':_0x2c0ae6['statusText']})),_0x288d1c=new Error(_0x4ad962['error']||_0x4ad962['message']||_0x2c0ae6['statusText']);if(_0x4ad962['detail']!==undefined)_0x288d1c['detail']=_0x4ad962['detail'];throw _0x288d1c;}return await _0x2c0ae6['json']();},async 'getSkillCatalog'(){const _0x124bb0=await fetch(API_BASE+'/external-skills/catalog');if(!_0x124bb0['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x124bb0['statusText']);return await _0x124bb0['json']();},async 'getImportedSkillsRegistry'(){const _0x291e15=await fetch(API_BASE+'/external-skills/registry');if(!_0x291e15['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x291e15['statusText']);return await _0x291e15['json']();},async 'importCatalogSkill'(_0x2eeef9){const _0x5b0466=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2eeef9})});if(!_0x5b0466['ok']){const _0x441b05=await _0x5b0466['json']()['catch'](()=>({'error':_0x5b0466['statusText']})),_0x1873fd=new Error(_0x441b05['error']||_0x441b05['message']||_0x5b0466['statusText']);if(_0x441b05['detail']!==undefined)_0x1873fd['detail']=_0x441b05['detail'];throw _0x1873fd;}return await _0x5b0466['json']();},async 'importSkillFromGit'(_0x3818e3,_0x5a3467,_0x3a2e0f='main',_0x291088=null){const _0x25df2e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3818e3,'skillPath':_0x5a3467,'branch':_0x3a2e0f,'skillId':_0x291088})});if(!_0x25df2e['ok']){const _0x12b205=await _0x25df2e['json']()['catch'](()=>({'error':_0x25df2e['statusText']})),_0x9d9d24=new Error(_0x12b205['error']||_0x12b205['message']||_0x25df2e['statusText']);if(_0x12b205['detail']!==undefined)_0x9d9d24['detail']=_0x12b205['detail'];throw _0x9d9d24;}return await _0x25df2e['json']();},async 'probeMarketplace'(_0x6f13ad,_0x178a8a='main'){const _0x543a55=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x6f13ad,'branch':_0x178a8a})});if(!_0x543a55['ok']){const _0x471d3b=await _0x543a55['json']()['catch'](()=>({'error':_0x543a55['statusText']})),_0x5d5387=new Error(_0x471d3b['error']||_0x471d3b['message']||_0x543a55['statusText']);if(_0x471d3b['detail']!==undefined)_0x5d5387['detail']=_0x471d3b['detail'];throw _0x5d5387;}return await _0x543a55['json']();},async 'importMarketplaceBundle'(_0x4165e4,_0x58575e,_0x4a6d83,_0x5b8c43=null){const _0x50c97d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4165e4,'branch':_0x58575e,'bundleId':_0x4a6d83,'selectedSkills':_0x5b8c43})});if(!_0x50c97d['ok']){const _0x178bbe=await _0x50c97d['json']()['catch'](()=>({'error':_0x50c97d['statusText']})),_0xfba7b6=new Error(_0x178bbe['error']||_0x178bbe['message']||_0x50c97d['statusText']);if(_0x178bbe['detail']!==undefined)_0xfba7b6['detail']=_0x178bbe['detail'];throw _0xfba7b6;}return await _0x50c97d['json']();},async 'importSkillFromFolder'(_0x32a3bb,_0x36e4d5=null){const _0x117cfd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x32a3bb,'skillId':_0x36e4d5})});if(!_0x117cfd['ok']){const _0x12190f=await _0x117cfd['json']()['catch'](()=>({'error':_0x117cfd['statusText']})),_0x46f3fc=new Error(_0x12190f['error']||_0x12190f['message']||_0x117cfd['statusText']);if(_0x12190f['detail']!==undefined)_0x46f3fc['detail']=_0x12190f['detail'];throw _0x46f3fc;}return await _0x117cfd['json']();},async 'importSkillFromNpm'(_0x2edc06,_0x518e09='latest',_0x1c42a5=null,_0x256635=null){const _0x41206c=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2edc06,'version':_0x518e09,'skillId':_0x1c42a5,'registry':_0x256635})});if(!_0x41206c['ok']){const _0x1619ce=await _0x41206c['json']()['catch'](()=>({'error':_0x41206c['statusText']})),_0x3fa85f=new Error(_0x1619ce['error']||_0x1619ce['message']||_0x41206c['statusText']);if(_0x1619ce['detail']!==undefined)_0x3fa85f['detail']=_0x1619ce['detail'];throw _0x3fa85f;}return await _0x41206c['json']();},async 'checkSkillUpdates'(_0x59e292){const _0x521292=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x59e292)+'/check-updates',{'method':'POST'});if(!_0x521292['ok']){const _0x18eeac=await _0x521292['json']()['catch'](()=>({'error':_0x521292['statusText']})),_0x23b245=new Error(_0x18eeac['error']||_0x18eeac['message']||_0x521292['statusText']);if(_0x18eeac['detail']!==undefined)_0x23b245['detail']=_0x18eeac['detail'];throw _0x23b245;}return await _0x521292['json']();},async 'updateExternalSkill'(_0x505259){const _0x24aaad=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x505259)+'/update',{'method':'POST'});if(!_0x24aaad['ok']){const _0x134429=await _0x24aaad['json']()['catch'](()=>({'error':_0x24aaad['statusText']})),_0xb3f2e9=new Error(_0x134429['error']||_0x134429['message']||_0x24aaad['statusText']);if(_0x134429['detail']!==undefined)_0xb3f2e9['detail']=_0x134429['detail'];throw _0xb3f2e9;}return await _0x24aaad['json']();},async 'updateSkillFlags'(_0xfd368e,_0x2d1a47){const _0x42381e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfd368e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x2d1a47})});if(!_0x42381e['ok']){const _0x1da010=await _0x42381e['json']()['catch'](()=>({'error':_0x42381e['statusText']})),_0xfde568=new Error(_0x1da010['error']||_0x1da010['message']||_0x42381e['statusText']);if(_0x1da010['detail']!==undefined)_0xfde568['detail']=_0x1da010['detail'];throw _0xfde568;}return await _0x42381e['json']();},async 'removeFromImportedRegistry'(_0x2082e6){const _0x315cca=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2082e6)+'/registry',{'method':'DELETE'});if(!_0x315cca['ok']){const _0x198673=await _0x315cca['json']()['catch'](()=>({'error':_0x315cca['statusText']})),_0x4e53bc=new Error(_0x198673['error']||_0x198673['message']||_0x315cca['statusText']);if(_0x198673['detail']!==undefined)_0x4e53bc['detail']=_0x198673['detail'];throw _0x4e53bc;}return await _0x315cca['json']();},async 'getTeams'(){const _0x3941d3=await fetch(API_BASE+'/teams');if(!_0x3941d3['ok']){const _0x16f933=await _0x3941d3['json']()['catch'](()=>({'message':_0x3941d3['statusText']}));throw new Error(_0x16f933['message']||'Failed\x20to\x20get\x20teams');}return await _0x3941d3['json']();},async 'getTeam'(_0x4878ac){const _0x36c3ca=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4878ac));if(!_0x36c3ca['ok']){const _0x42f41c=await _0x36c3ca['json']()['catch'](()=>({'message':_0x36c3ca['statusText']}));throw new Error(_0x42f41c['message']||'Failed\x20to\x20get\x20team');}return await _0x36c3ca['json']();},async 'createTeam'(_0x32f87d){const _0x5c9c13=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32f87d)});if(!_0x5c9c13['ok']){const _0x1222ed=await _0x5c9c13['json']()['catch'](()=>({'message':_0x5c9c13['statusText']}));throw new Error(_0x1222ed['message']||'Failed\x20to\x20create\x20team');}return await _0x5c9c13['json']();},async 'updateTeam'(_0x34bb8e,_0x19f3c5){const _0x5625df=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x34bb8e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19f3c5)});if(!_0x5625df['ok']){const _0x49c013=await _0x5625df['json']()['catch'](()=>({'message':_0x5625df['statusText']}));throw new Error(_0x49c013['message']||'Failed\x20to\x20update\x20team');}return await _0x5625df['json']();},async 'deleteTeam'(_0x55dafe){const _0x5328b9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55dafe),{'method':'DELETE'});if(!_0x5328b9['ok']){const _0x34ad63=await _0x5328b9['json']()['catch'](()=>({'message':_0x5328b9['statusText']}));throw new Error(_0x34ad63['message']||'Failed\x20to\x20delete\x20team');}return await _0x5328b9['json']();},async 'addTeamMember'(_0x33745b,_0x9a445e){const _0x5e49f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x33745b)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x9a445e})});if(!_0x5e49f1['ok']){const _0x409d84=await _0x5e49f1['json']()['catch'](()=>({'message':_0x5e49f1['statusText']}));throw new Error(_0x409d84['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5e49f1['json']();},async 'removeTeamMember'(_0x51de48,_0x49e6ac){const _0x5be939=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51de48)+'/members/'+encodeURIComponent(_0x49e6ac),{'method':'DELETE'});if(!_0x5be939['ok']){const _0x21264e=await _0x5be939['json']()['catch'](()=>({'message':_0x5be939['statusText']}));throw new Error(_0x21264e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x5be939['json']();},async 'getBindings'(_0x31b6f3={}){const _0x306f39=new URLSearchParams();if(_0x31b6f3['resource_type'])_0x306f39['set']('resource_type',_0x31b6f3['resource_type']);if(_0x31b6f3['resource_id'])_0x306f39['set']('resource_id',_0x31b6f3['resource_id']);if(_0x31b6f3['subject_type'])_0x306f39['set']('subject_type',_0x31b6f3['subject_type']);if(_0x31b6f3['subject_id'])_0x306f39['set']('subject_id',_0x31b6f3['subject_id']);const _0x37172e=_0x306f39['toString'](),_0xe9e77a=await fetch(API_BASE+'/bindings'+(_0x37172e?'?'+_0x37172e:''));if(!_0xe9e77a['ok']){const _0x28de2f=await _0xe9e77a['json']()['catch'](()=>({'message':_0xe9e77a['statusText']}));throw new Error(_0x28de2f['message']||'Failed\x20to\x20get\x20bindings');}return await _0xe9e77a['json']();},async 'createBinding'(_0x2cb2c7){const _0xdb14d7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cb2c7)});if(!_0xdb14d7['ok']){const _0x1029c7=await _0xdb14d7['json']()['catch'](()=>({'message':_0xdb14d7['statusText']}));throw new Error(_0x1029c7['message']||'Failed\x20to\x20create\x20binding');}return await _0xdb14d7['json']();},async 'updateBinding'(_0x527cd7,_0x4f4b01){const _0x5fd878=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x527cd7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f4b01)});if(!_0x5fd878['ok']){const _0x41ab28=await _0x5fd878['json']()['catch'](()=>({'message':_0x5fd878['statusText']}));throw new Error(_0x41ab28['message']||'Failed\x20to\x20update\x20binding');}return await _0x5fd878['json']();},async 'deleteBinding'(_0x25b4d4){const _0x367431=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x25b4d4),{'method':'DELETE'});if(!_0x367431['ok']){const _0x2e5c02=await _0x367431['json']()['catch'](()=>({'message':_0x367431['statusText']}));throw new Error(_0x2e5c02['message']||'Failed\x20to\x20delete\x20binding');}return await _0x367431['json']();},async 'getRoleDefinitions'(){const _0x4c970d=await fetch(API_BASE+'/roles');if(!_0x4c970d['ok']){const _0x4368ae=await _0x4c970d['json']()['catch'](()=>({'message':_0x4c970d['statusText']}));throw new Error(_0x4368ae['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4c970d['json']();},async 'getRoleDefinition'(_0x2037e5){const _0xad5a67=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2037e5));if(!_0xad5a67['ok']){const _0x45359b=await _0xad5a67['json']()['catch'](()=>({'message':_0xad5a67['statusText']}));throw new Error(_0x45359b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0xad5a67['json']();},async 'createRoleDefinition'(_0x4fb22a){const _0x56784d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fb22a)});if(!_0x56784d['ok']){const _0x18a273=await _0x56784d['json']()['catch'](()=>({'message':_0x56784d['statusText']}));throw new Error(_0x18a273['message']||_0x18a273['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x56784d['json']();},async 'updateRoleDefinition'(_0x5c53fc,_0x92c45b){const _0x2ca8bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5c53fc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x92c45b)});if(!_0x2ca8bb['ok']){const _0x14ac3d=await _0x2ca8bb['json']()['catch'](()=>({'message':_0x2ca8bb['statusText']}));throw new Error(_0x14ac3d['message']||_0x14ac3d['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x2ca8bb['json']();},async 'deleteRoleDefinition'(_0x1f3b67){const _0xb1d5de=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1f3b67),{'method':'DELETE'});if(!_0xb1d5de['ok']){const _0x5ec44a=await _0xb1d5de['json']()['catch'](()=>({'message':_0xb1d5de['statusText']}));throw new Error(_0x5ec44a['message']||_0x5ec44a['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0xb1d5de['json']();},async 'getAvailablePermissions'(){const _0x514053=await fetch(API_BASE+'/roles/available-permissions');if(!_0x514053['ok']){const _0x58ea28=await _0x514053['json']()['catch'](()=>({'message':_0x514053['statusText']}));throw new Error(_0x58ea28['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x514053['json']();},async 'getGitProviderAllowedTeams'(_0x5b318b){const _0x15195a=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5b318b)+'/allowed-teams');if(!_0x15195a['ok']){const _0x194546=await _0x15195a['json']()['catch'](()=>({'message':_0x15195a['statusText']}));throw new Error(_0x194546['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x15195a['json']();},async 'setGitProviderAllowedTeams'(_0x96cc65,_0x36cc46){const _0x274a5f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x96cc65)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x36cc46})});if(!_0x274a5f['ok']){const _0x4f23dc=await _0x274a5f['json']()['catch'](()=>({'message':_0x274a5f['statusText']}));throw new Error(_0x4f23dc['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x274a5f['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 _0x32af83=toastState['baseBottom'];toastState['toasts']['forEach'](_0x1187d4=>{_0x1187d4['el']['style']['bottom']=_0x32af83+'px';const _0x1ee1a2=_0x1187d4['el']['offsetHeight']||toastState['defaultHeight'];_0x32af83+=_0x1ee1a2+toastState['gap'];});});}function removeToastById(_0x450ad6){const _0xfb6530=toastState['toasts']['findIndex'](_0x200949=>_0x200949['id']===_0x450ad6);if(_0xfb6530===-0x1)return;const _0x310d2a=toastState['toasts'][_0xfb6530];if(_0x310d2a['timeoutId'])clearTimeout(_0x310d2a['timeoutId']);_0x310d2a['el']['classList']['remove']('show'),setTimeout(()=>_0x310d2a['el']['remove'](),0x12c),toastState['toasts']['splice'](_0xfb6530,0x1),repositionAllToasts();}function registerToast(_0x40fffd){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x40fffd),repositionAllToasts(),_0x40fffd['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(_0x501a76){if(_0x501a76===null||_0x501a76===undefined)return'';return String(_0x501a76)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x30e41c,_0x44dcc2){if(_0x30e41c&&typeof _0x30e41c==='object'&&!Array['isArray'](_0x30e41c))return{'code':typeof _0x30e41c['text']==='string'?_0x30e41c['text']:'','language':typeof _0x30e41c['lang']==='string'?_0x30e41c['lang']:''};return{'code':typeof _0x30e41c==='string'?_0x30e41c:'','language':typeof _0x44dcc2==='string'?_0x44dcc2:''};}function buildMermaidBlock(_0x4d9349){const _0x35af8e=String(_0x4d9349||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x35af8e))+'\x22>'+escapeHtmlValue(_0x35af8e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x39be5b=new marked['Renderer'](),_0x3b882a=_0x39be5b['code']['bind'](_0x39be5b);return _0x39be5b['code']=function(_0x36d02b,_0x46ccf1,..._0x101bd5){const {code:_0x571ccb,language:_0x545123}=getMarkdownCodeBlockPayload(_0x36d02b,_0x46ccf1),_0x231eb9=String(_0x545123||'')['trim']()['toLowerCase']();if(_0x231eb9==='mermaid')return buildMermaidBlock(_0x571ccb);const _0x16a4c4=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x16a4c4&&_0x231eb9)try{const _0x5a41e2=_0x16a4c4['getLanguage'](_0x231eb9)?_0x231eb9:'plaintext',_0x15499d=_0x16a4c4['highlight'](_0x571ccb,{'language':_0x5a41e2})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x231eb9)+'\x22>'+_0x15499d+'</code></pre>';}catch(_0x31d640){console['error']('Syntax\x20highlighting\x20error:',_0x31d640);}return _0x3b882a(_0x36d02b,_0x46ccf1,..._0x101bd5);},sharedMarkedRenderer=_0x39be5b,_0x39be5b;}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 _0x45e6ea=window['mermaid'];if(!_0x45e6ea||typeof _0x45e6ea['initialize']!=='function')return _0x45e6ea||null;return _0x45e6ea['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x45e6ea;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x431d27,_0x1a68a4)=>{const _0x3572ea=()=>_0x431d27(configureMermaidInstance()),_0x48df0c=()=>{mermaidLoadPromise=null,_0x1a68a4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x10e8d7=document['getElementById'](MERMAID_SCRIPT_ID);!_0x10e8d7&&(_0x10e8d7=document['createElement']('script'),_0x10e8d7['id']=MERMAID_SCRIPT_ID,_0x10e8d7['src']=MERMAID_SCRIPT_SRC,_0x10e8d7['async']=!![],document['head']['appendChild'](_0x10e8d7));if(window['mermaid']){_0x3572ea();return;}_0x10e8d7['addEventListener']('load',_0x3572ea,{'once':!![]}),_0x10e8d7['addEventListener']('error',_0x48df0c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x59ebd1){const _0x294f75=_0x59ebd1['getAttribute']('data-mermaid-source');if(!_0x294f75)return null;let _0x596b28=_0x294f75;try{_0x596b28=decodeURIComponent(_0x294f75);}catch{}return _0x59ebd1['textContent']=_0x596b28,_0x59ebd1['removeAttribute']('data-processed'),_0x59ebd1['removeAttribute']('aria-roledescription'),_0x59ebd1['removeAttribute']('role'),_0x59ebd1['removeAttribute']('aria-label'),_0x596b28;}function collectMermaidNodes(_0x44e3c3,_0x1d4481){if(!(_0x44e3c3 instanceof Element))return;_0x44e3c3['matches']('.mermaid[data-mermaid-source]')&&_0x1d4481['add'](_0x44e3c3),_0x44e3c3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x48b856=>{_0x1d4481['add'](_0x48b856);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x34aed1=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x30c388=>setTimeout(_0x30c388,0x0);_0x34aed1(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5cdbb4=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5cdbb4);});});}function queueMermaidRender(_0x5adb2d){const _0x304556=new Set();_0x5adb2d instanceof Document||_0x5adb2d instanceof DocumentFragment?_0x5adb2d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2c0293=>_0x304556['add'](_0x2c0293)):collectMermaidNodes(_0x5adb2d,_0x304556);if(_0x304556['size']===0x0)return;_0x304556['forEach'](_0xccbb1b=>pendingMermaidNodes['add'](_0xccbb1b)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x474d0b=Array['from'](pendingMermaidNodes)['filter'](_0x4e9dd7=>_0x4e9dd7['isConnected']);pendingMermaidNodes['clear']();if(_0x474d0b['length']===0x0)return;const _0x572251=await loadMermaid();if(!_0x572251)return;configureMermaidInstance();const _0x4de329=getMermaidTheme();for(const _0x2ddce5 of _0x474d0b){const _0x202a5c=_0x2ddce5['getAttribute']('data-mermaid-source');if(!_0x202a5c)continue;const _0x42130d=_0x2ddce5['getAttribute']('data-processed')==='true';if(_0x42130d&&_0x2ddce5['dataset']['mermaidTheme']===_0x4de329)continue;restoreMermaidSource(_0x2ddce5);try{if(typeof _0x572251['run']==='function')await _0x572251['run']({'nodes':[_0x2ddce5]});else typeof _0x572251['init']==='function'&&_0x572251['init'](undefined,[_0x2ddce5]);_0x2ddce5['dataset']['mermaidTheme']=_0x4de329,delete _0x2ddce5['dataset']['mermaidError'];}catch(_0x4ca0e1){console['error']('Mermaid\x20render\x20failed:',_0x4ca0e1),restoreMermaidSource(_0x2ddce5),_0x2ddce5['dataset']['mermaidError']='true',delete _0x2ddce5['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27a659=>{_0x27a659['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x27a659);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4e5df5=>{_0x4e5df5['forEach'](_0x5c7f7e=>{_0x5c7f7e['addedNodes']['forEach'](_0x2e1e69=>{_0x2e1e69['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e1e69);});});}),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'(_0x1d46c0){const _0x3b1c31=new Date(_0x1d46c0),_0x59beca=new Date(),_0x50d14a=_0x59beca-_0x3b1c31,_0x20e2da=Math['floor'](_0x50d14a/0x3e8),_0x1d9cb8=Math['floor'](_0x20e2da/0x3c),_0x54f668=Math['floor'](_0x1d9cb8/0x3c),_0x2ea167=Math['floor'](_0x54f668/0x18);if(_0x20e2da<0x3c)return'now';if(_0x1d9cb8<0x3c)return _0x1d9cb8+'m\x20ago';if(_0x54f668<0x18)return _0x54f668+'h\x20ago';return _0x2ea167+'d\x20ago';},'getStatusIcon'(_0x48932f){switch(_0x48932f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x2214f9){switch(_0x2214f9){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'(_0x5cf6bf,_0x387007=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x68d54e={};_0x68d54e['text/plain']=new Blob([_0x5cf6bf],{'type':'text/plain'});_0x387007&&(_0x68d54e['text/html']=new Blob([_0x387007],{'type':'text/html'}));const _0x5f35a=new ClipboardItem(_0x68d54e);return await navigator['clipboard']['write']([_0x5f35a]),!![];}catch(_0x7ef472){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x7ef472);}try{const _0x1fc7a5=_0x119381=>{_0x119381['preventDefault'](),_0x119381['clipboardData']['setData']('text/plain',_0x5cf6bf),_0x387007&&_0x119381['clipboardData']['setData']('text/html',_0x387007);};document['addEventListener']('copy',_0x1fc7a5);const _0x10a8b2=document['execCommand']('copy');document['removeEventListener']('copy',_0x1fc7a5);if(_0x10a8b2)return!![];}catch(_0x2a8fd3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2a8fd3);}try{const _0x4a2de5=document['createElement']('textarea');_0x4a2de5['value']=_0x5cf6bf,_0x4a2de5['style']['position']='fixed',_0x4a2de5['style']['opacity']='0',_0x4a2de5['style']['pointerEvents']='none',document['body']['appendChild'](_0x4a2de5),_0x4a2de5['select']();const _0x56c7d2=document['execCommand']('copy');return document['body']['removeChild'](_0x4a2de5),_0x56c7d2;}catch(_0x2fe3ca){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x2fe3ca),![];}},'showToast'(_0x4f2df4,_0x50735d='info'){const _0x4e8e19=getNextToastId(),_0x4a528b=document['createElement']('div');_0x4a528b['className']='toast\x20toast-'+_0x50735d,_0x4a528b['textContent']=_0x4f2df4,_0x4a528b['dataset']['toastId']=_0x4e8e19,document['body']['appendChild'](_0x4a528b);const _0x4c2934=_0x50735d==='error'?0x2710:0xbb8,_0x297e04=setTimeout(()=>{removeToastById(_0x4e8e19);},_0x4c2934),_0x367977={'id':_0x4e8e19,'el':_0x4a528b,'timeoutId':_0x297e04};return registerToast(_0x367977),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x4a528b['classList']['add']('show');});}),_0x4e8e19;},'showError'(_0x43f859){console['error'](_0x43f859);const _0x4b8cc2=typeof _0x43f859==='string'?_0x43f859:_0x43f859['message']||'An\x20error\x20occurred';this['showToast'](_0x4b8cc2,'error');},'showSuccess'(_0x54d137){this['showToast'](_0x54d137,'success');},'capitalize'(_0x374867){if(!_0x374867)return'';return _0x374867['charAt'](0x0)['toUpperCase']()+_0x374867['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0xbccbb7){return escapeHtmlValue(_0xbccbb7);},'ansiToHtml'(_0x5593b6){if(_0x5593b6===null||_0x5593b6===undefined)return'';let _0x4be462=this['escapeHtml'](_0x5593b6);const _0x29daa9={'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'},_0x42f0b0={'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 _0x572fff=0x0;return _0x4be462=_0x4be462['replace'](/\x1b\[([0-9;]*)m/g,(_0xe330ca,_0x179cde)=>{if(!_0x179cde||_0x179cde==='0'){const _0x349ae0='</span>'['repeat'](_0x572fff);return _0x572fff=0x0,_0x349ae0;}const _0x2c86da=_0x179cde['split'](';'),_0x32bdff=[];for(const _0x358977 of _0x2c86da){if(_0x358977==='1')_0x32bdff['push']('font-weight:bold');else{if(_0x358977==='2')_0x32bdff['push']('opacity:0.7');else{if(_0x358977==='3')_0x32bdff['push']('font-style:italic');else{if(_0x358977==='4')_0x32bdff['push']('text-decoration:underline');else{if(_0x358977==='9')_0x32bdff['push']('text-decoration:line-through');else{if(_0x29daa9[_0x358977])_0x32bdff['push']('color:'+_0x29daa9[_0x358977]);else{if(_0x42f0b0[_0x358977])_0x32bdff['push']('background-color:'+_0x42f0b0[_0x358977]);}}}}}}}if(_0x32bdff['length']>0x0)return _0x572fff++,'<span\x20style=\x22'+_0x32bdff['join'](';')+'\x22>';return'';}),_0x4be462+='</span>'['repeat'](_0x572fff),_0x4be462=_0x4be462['replace'](/\\u001b\[([0-9;]*)m/g,(_0x55ce5f,_0x1abd37)=>{if(!_0x1abd37||_0x1abd37==='0')return'';const _0x16e993=_0x1abd37['split'](';'),_0x4659d0=[];for(const _0x365b29 of _0x16e993){if(_0x365b29==='1')_0x4659d0['push']('font-weight:bold');else{if(_0x29daa9[_0x365b29])_0x4659d0['push']('color:'+_0x29daa9[_0x365b29]);else{if(_0x42f0b0[_0x365b29])_0x4659d0['push']('background-color:'+_0x42f0b0[_0x365b29]);}}}if(_0x4659d0['length']>0x0)return'<span\x20style=\x22'+_0x4659d0['join'](';')+'\x22>';return'';}),_0x4be462;},'showModal'({title:_0x38416f,content:_0x414b59,buttons:buttons=[]}){const _0x3ff0e7='\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'](_0x38416f)+'</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'+_0x414b59+'\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']((_0x178f60,_0x3bc683)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x178f60['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3bc683+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x178f60['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',_0x59b04e=document['createElement']('div');_0x59b04e['id']='utils-modal',_0x59b04e['className']='modal',_0x59b04e['innerHTML']=_0x3ff0e7,document['body']['appendChild'](_0x59b04e);const _0xfc0da3=document['getElementById']('utils-modal-close');_0xfc0da3&&_0xfc0da3['addEventListener']('click',()=>this['hideModal']());const _0x29a0ac=_0x59b04e['querySelectorAll']('[data-btn-index]');_0x29a0ac['forEach'](_0x3d4629=>{const _0x5b631c=parseInt(_0x3d4629['dataset']['btnIndex']);buttons[_0x5b631c]?.['onClick']&&_0x3d4629['addEventListener']('click',buttons[_0x5b631c]['onClick']);});const _0x18683d=document['getElementById']('utils-modal-overlay');_0x18683d&&_0x18683d['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x5a6a27=document['getElementById']('utils-modal');_0x5a6a27&&_0x5a6a27['remove']();},'parseKeyValuePairs'(_0x4a51b4){const _0x278962={};if(!_0x4a51b4)return _0x278962;return _0x4a51b4['split'](/\r?\n/)['map'](_0x593b9c=>_0x593b9c['trim']())['filter'](Boolean)['forEach'](_0x11a86f=>{const _0x32eab5=_0x11a86f['indexOf']('=');if(_0x32eab5>0x0){const _0x4afcf5=_0x11a86f['slice'](0x0,_0x32eab5)['trim'](),_0x57e589=_0x11a86f['slice'](_0x32eab5+0x1)['trim']();if(_0x4afcf5)_0x278962[_0x4afcf5]=_0x57e589;}}),_0x278962;},'debounce'(_0x1980a8,_0x25ba4b=0xfa){let _0x340f4a=null;return(..._0x2b7b91)=>{clearTimeout(_0x340f4a),_0x340f4a=setTimeout(()=>_0x1980a8['apply'](this,_0x2b7b91),_0x25ba4b);};},'formatTimestamp'(_0x15c79d){if(!_0x15c79d)return'N/A';const _0xb5595a=new Date(_0x15c79d);return _0xb5595a['toLocaleDateString']()+'\x20'+_0xb5595a['toLocaleTimeString']();},'getQueryParams'(){const _0x23168e=new URLSearchParams(window['location']['search']),_0x56015f={};for(const [_0x3e7533,_0x3ddbbb]of _0x23168e){_0x56015f[_0x3e7533]=_0x3ddbbb;}return _0x56015f;},'formatDuration'(_0x29e199,_0x54a163){if(!_0x29e199)return'N/A';const _0x2a8125=new Date(_0x29e199),_0x5b4fc5=_0x54a163?new Date(_0x54a163):new Date(),_0x5e3eaa=_0x5b4fc5-_0x2a8125;if(_0x5e3eaa<0x0)return'0s';const _0x2c6dcc=Math['floor'](_0x5e3eaa/0x3e8),_0x5ec103=Math['floor'](_0x2c6dcc/0x3c),_0xdc797c=Math['floor'](_0x5ec103/0x3c),_0x277fff=Math['floor'](_0xdc797c/0x18);if(_0x2c6dcc<0x3c)return _0x2c6dcc+'s';if(_0x5ec103<0x3c)return _0x5ec103+'m\x20'+_0x2c6dcc%0x3c+'s';if(_0xdc797c<0x18)return _0xdc797c+'h\x20'+_0x5ec103%0x3c+'m\x20'+_0x2c6dcc%0x3c+'s';return _0x277fff+'d\x20'+_0xdc797c%0x18+'h\x20'+_0x5ec103%0x3c+'m';},'renderMarkdown'(_0x299065,_0x325b7f={}){if(!_0x299065)return'';_0x299065=this['rewriteAttachmentLinks'](_0x299065,_0x325b7f),_0x299065=this['rewriteColorSyntax'](_0x299065);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x299065,_0x325b7f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x299065);}catch(_0x28f1d3){return console['error']('Markdown\x20parsing\x20error:',_0x28f1d3),this['renderMarkdownFallback'](_0x299065,_0x325b7f);}},'rewriteAttachmentLinks'(_0x13e68d,_0x1ff625={}){const _0x2843b8=typeof _0x1ff625['resolveAttachmentUrl']==='function'?_0x1ff625['resolveAttachmentUrl']:_0x1ff625['taskId']?_0xe543ad=>API_BASE+'/tasks/'+_0x1ff625['taskId']+'/attachments/'+encodeURIComponent(_0xe543ad):null;if(!_0x2843b8)return _0x13e68d;return String(_0x13e68d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x434141,_0x325d81)=>{const _0x5e7149=String(_0x325d81||'')['trim']();if(!_0x5e7149)return _0x434141;let _0x4f66a7=_0x5e7149;try{_0x4f66a7=decodeURIComponent(_0x5e7149);}catch{}const _0x5ae7e3=_0x2843b8(_0x4f66a7);if(!_0x5ae7e3)return _0x434141;return']('+_0x5ae7e3+')';});},'rewriteColorSyntax'(_0x5d3dc6){if(!_0x5d3dc6)return _0x5d3dc6;return String(_0x5d3dc6)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x404c91,_0x4e8792,_0x5a19b0)=>{const _0x5c0029=this['rewriteColorSyntax'](_0x5a19b0);return'<span\x20style=\x22color:\x20'+_0x4e8792+'\x22>'+_0x5c0029+'</span>';});},'renderMarkdownFallback'(_0x5eee21,_0x3d797a={}){if(!_0x5eee21)return'';_0x5eee21=_0x5eee21['replace'](/\r\n/g,'\x0a'),_0x5eee21=_0x5eee21['replace'](/\r/g,'\x0a'),_0x5eee21=this['rewriteAttachmentLinks'](_0x5eee21,_0x3d797a);let _0x55a138=this['escapeHtml'](_0x5eee21);return _0x55a138=_0x55a138['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x55a138=_0x55a138['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x55a138=_0x55a138['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x55a138=_0x55a138['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x55a138=_0x55a138['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x55a138=_0x55a138['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x55a138=_0x55a138['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x55a138=_0x55a138['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x55a138=_0x55a138['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x55a138=_0x55a138['replace'](/\n\n/g,'</p><p>'),_0x55a138=_0x55a138['replace'](/\n/g,'<br>'),'<p>'+_0x55a138+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x4b0cd3=new Uint8Array(0x10);crypto['getRandomValues'](_0x4b0cd3),_0x4b0cd3[0x6]=_0x4b0cd3[0x6]&0xf|0x40,_0x4b0cd3[0x8]=_0x4b0cd3[0x8]&0x3f|0x80;const _0x2566df=Array['from'](_0x4b0cd3,_0x4167ea=>_0x4167ea['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2566df['slice'](0x0,0x8)+'-'+_0x2566df['slice'](0x8,0xc)+'-'+_0x2566df['slice'](0xc,0x10)+'-'+_0x2566df['slice'](0x10,0x14)+'-'+_0x2566df['slice'](0x14);}};export class CustomSelect{constructor(_0x60813b,_0x35744b={}){this['nativeSelect']=_0x60813b,this['options']=_0x35744b,this['isOpen']=![],this['selectedValue']=_0x60813b['value']||'',this['searchable']=_0x35744b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0xf54fc3=document['createElement']('div');_0xf54fc3['className']='custom-select';const _0x5bcde6=document['createElement']('div');_0x5bcde6['className']='custom-select-trigger',_0x5bcde6['setAttribute']('tabindex','0'),_0x5bcde6['setAttribute']('role','button'),_0x5bcde6['setAttribute']('aria-haspopup','listbox');const _0x2f67ce=document['createElement']('span');_0x2f67ce['className']='custom-select-trigger-text';const _0x201f41=document['createElement']('span');_0x201f41['className']='custom-select-arrow',_0x201f41['textContent']='▼',_0x5bcde6['appendChild'](_0x2f67ce),_0x5bcde6['appendChild'](_0x201f41);const _0x45fd47=document['createElement']('div');_0x45fd47['className']='custom-select-dropdown',_0x45fd47['setAttribute']('role','listbox');if(this['searchable']){const _0x4e852f=document['createElement']('div');_0x4e852f['className']='custom-select-search';const _0x7df019=document['createElement']('input');_0x7df019['type']='text',_0x7df019['className']='custom-select-search-input',_0x7df019['placeholder']='Type\x20to\x20search...',_0x7df019['setAttribute']('aria-label','Search\x20options'),_0x7df019['addEventListener']('input',_0x33c538=>{this['searchQuery']=_0x33c538['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x7df019['addEventListener']('keydown',_0x1e3349=>{if(_0x1e3349['key']==='Escape')_0x1e3349['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1e3349['key']==='Enter'){_0x1e3349['preventDefault'](),_0x1e3349['stopPropagation']();const _0x456ec1=_0x45fd47['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x456ec1){const _0x33db42=_0x456ec1['getAttribute']('data-value');this['select'](_0x33db42);}}}}),_0x4e852f['appendChild'](_0x7df019),_0x45fd47['appendChild'](_0x4e852f),this['searchInput']=_0x7df019;}const _0x299053=document['createElement']('div');_0x299053['className']='custom-select-options',_0x45fd47['appendChild'](_0x299053),_0xf54fc3['appendChild'](_0x5bcde6),_0xf54fc3['appendChild'](_0x45fd47),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0xf54fc3,this['nativeSelect']),this['wrapper']=_0xf54fc3,this['trigger']=_0x5bcde6,this['triggerText']=_0x2f67ce,this['dropdown']=_0x45fd47,this['optionsContainer']=_0x299053,_0x5bcde6['addEventListener']('click',()=>this['toggle']()),_0x5bcde6['addEventListener']('keydown',_0x3ec434=>this['handleKeydown'](_0x3ec434)),document['addEventListener']('click',_0x914153=>{!_0xf54fc3['contains'](_0x914153['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x41a0de=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x41a0de['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x24ef36=new MutationObserver(()=>{this['updateDisabledState']();});_0x24ef36['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x7a42d5=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x7a42d5['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3f9e5c=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3f9e5c),this['trigger']['setAttribute']('aria-disabled',_0x3f9e5c?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3f9e5c?'-1':'0'),_0x3f9e5c&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x3fc72a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x23f846=_0x3fc72a['filter'](_0x237710=>!_0x237710['disabled']&&!_0x237710['hidden']);_0x3fc72a['forEach']((_0x53188b,_0x5451e1)=>{const _0x4e8da5=document['createElement']('div');_0x4e8da5['className']='custom-select-option',_0x4e8da5['textContent']=_0x53188b['textContent'],_0x4e8da5['setAttribute']('data-value',_0x53188b['value']),_0x4e8da5['setAttribute']('data-index',_0x5451e1),_0x4e8da5['setAttribute']('role','option'),_0x53188b['disabled']?_0x4e8da5['classList']['add']('disabled'):_0x4e8da5['addEventListener']('click',()=>this['select'](_0x53188b['value'])),_0x53188b['value']===this['selectedValue']&&_0x4e8da5['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4e8da5),this['allOptions']['push']({'element':_0x4e8da5,'text':_0x53188b['textContent']['toLowerCase'](),'value':_0x53188b['value'],'disabled':_0x53188b['disabled']});});if(this['searchable']&&this['searchInput']){const _0x511503=this['searchInput']['parentElement'];_0x23f846['length']>0x3?_0x511503['style']['display']='':_0x511503['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3473ae=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4302a9=>{if(!_0x3473ae||_0x4302a9['disabled'])_0x4302a9['element']['style']['display']='';else{const _0x477f32=_0x4302a9['text']['includes'](_0x3473ae);_0x4302a9['element']['style']['display']=_0x477f32?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xbf173b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xbf173b,this['nativeSelect']['value']=_0xbf173b;const _0x2e5853=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2e5853),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xb5cb8f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xb5cb8f&&(this['triggerText']['textContent']=_0xb5cb8f['textContent'],_0xb5cb8f['disabled']||_0xb5cb8f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x384b07=>{_0x384b07['getAttribute']('data-value')===this['selectedValue']?_0x384b07['classList']['add']('selected'):_0x384b07['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 _0x18f726=window['getComputedStyle'](this['dropdown']);if(_0x18f726['position']==='fixed'){const _0x5035b1=this['trigger']['getBoundingClientRect'](),_0xa137e8=parseInt(_0x18f726['maxHeight'])||0xc8,_0x198488=window['innerHeight'],_0x2e32cd=_0x198488-_0x5035b1['bottom'],_0x48981=_0x5035b1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x111def;_0x2e32cd<_0xa137e8&&_0x48981>_0x2e32cd?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x198488-_0x5035b1['top']+'px',_0x111def=Math['min'](_0xa137e8,_0x48981-0xa),this['dropdown']['style']['maxHeight']=_0x111def+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5035b1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x111def=Math['min'](_0xa137e8,_0x2e32cd-0xa),this['dropdown']['style']['maxHeight']=_0x111def+'px');if(this['optionsContainer']){let _0x1ecd86=_0x111def;if(this['searchInput']){const _0x357fd5=this['searchInput']['parentElement'];_0x357fd5&&(_0x1ecd86-=_0x357fd5['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ecd86)+'px';}this['dropdown']['style']['left']=_0x5035b1['left']+'px',this['dropdown']['style']['width']=_0x5035b1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x509adf=this['searchInput']['parentElement'];_0x509adf&&_0x509adf['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'](_0x4d6a34){if(this['nativeSelect']['disabled'])return;if(_0x4d6a34['key']==='Enter'||_0x4d6a34['key']==='\x20')_0x4d6a34['preventDefault'](),this['toggle']();else _0x4d6a34['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2b2b2c='\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',_0x2b2b2c),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2a4bff=document['getElementById']('confirm-dialog-close'),_0x301c7e=document['getElementById']('confirm-dialog-cancel'),_0x468456=document['getElementById']('confirm-dialog-confirm'),_0x4e0eb9=this['_modal']['querySelector']('.modal-overlay');_0x2a4bff['addEventListener']('click',()=>this['_resolve'](![])),_0x301c7e['addEventListener']('click',()=>this['_resolve'](![])),_0x468456['addEventListener']('click',()=>this['_resolve'](!![])),_0x4e0eb9['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x237090=>{if(_0x237090['key']==='Escape')_0x237090['preventDefault'](),this['_resolve'](![]);else _0x237090['key']==='Enter'&&(_0x237090['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x5d998a,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x549097=>{this['_resolvePromise']=_0x549097,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x5d998a;const _0x58315a=document['getElementById']('confirm-dialog-cancel'),_0x112535=document['getElementById']('confirm-dialog-confirm');_0x58315a['textContent']=cancelText,_0x112535['textContent']=confirmText,_0x112535['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x112535['focus']();});},'_resolve'(_0x4684ae){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4684ae),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x57b0d3,_0x10be17={}){this['container']=_0x57b0d3,this['options']={'placeholder':_0x10be17['placeholder']||'Type\x20to\x20search...','maxItems':_0x10be17['maxItems']||0x64,'loadItems':_0x10be17['loadItems']||(async()=>[]),'renderItem':_0x10be17['renderItem']||(_0x828599=>({'primary':String(_0x828599),'secondary':''})),'onSelect':_0x10be17['onSelect']||(()=>{}),'filterItems':_0x10be17['filterItems']||null,'getItemValue':_0x10be17['getItemValue']||(_0x2b734a=>_0x2b734a),'sortItems':_0x10be17['sortItems']||null,'debounceMs':_0x10be17['debounceMs']||0xc8,'minCharsForSearch':_0x10be17['minCharsForSearch']||0x0,'emptyMessage':_0x10be17['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x10be17['loadingMessage']||'Loading...','preload':_0x10be17['preload']!==![],'searchMode':_0x10be17['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',_0x3ef3a7=>this['onBlur'](_0x3ef3a7)),this['input']['addEventListener']('input',_0x231325=>this['onInput'](_0x231325)),this['input']['addEventListener']('keydown',_0x32e140=>this['onKeydown'](_0x32e140)),this['clearBtn']['addEventListener']('mousedown',_0x118dfa=>{_0x118dfa['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x33db79=>{_0x33db79['preventDefault']();}),document['addEventListener']('click',_0x28dd8c=>{!this['wrapper']['contains'](_0x28dd8c['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(_0x414703){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x414703);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x30e0f8){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xc46384){const _0x3eb93f=_0xc46384['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3eb93f);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3eb93f):this['loadAndShow'](_0x3eb93f);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1cc48e){switch(_0x1cc48e['key']){case'ArrowDown':_0x1cc48e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1cc48e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1cc48e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1cc48e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2a56cf){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x281926=this['selectedIndex']+_0x2a56cf;if(_0x281926>=0x0&&_0x281926<this['filteredItems']['length']){this['selectedIndex']=_0x281926,this['updateSelectionHighlight']();const _0x4b401d=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4b401d[this['selectedIndex']]&&_0x4b401d[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0xedc25b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xedc25b['forEach']((_0x116eae,_0x408fbc)=>{_0x116eae['classList']['toggle']('keyboard-selected',_0x408fbc===this['selectedIndex']);});}async['loadAndShow'](_0x527000){this['showLoading']();try{const _0xd5d4c1=await this['options']['loadItems'](_0x527000);if(this['options']['searchMode']==='server'){let _0x273c7b=_0xd5d4c1;this['options']['sortItems']&&(_0x273c7b=this['options']['sortItems']([..._0xd5d4c1]));this['filteredItems']=_0x273c7b;const _0x11874e=this['filteredItems']['length']>=this['options']['maxItems'];_0x11874e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x11874e),this['open']();}else this['allItems']=_0xd5d4c1,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x527000);}catch(_0x388819){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x388819),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3d3abf){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3d3abf):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x27a67c=this['filteredItems']['length']>=this['options']['maxItems'];_0x27a67c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x27a67c),this['open']();}['renderItems'](_0x47147f){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']((_0x2d7a35,_0x246314)=>{const _0x408241=document['createElement']('div');_0x408241['className']='autocomplete-select-item',_0x408241['setAttribute']('role','option'),_0x408241['setAttribute']('data-index',_0x246314);const _0x846128=this['options']['renderItem'](_0x2d7a35);let _0x322a35='';_0x846128['icon']&&(_0x322a35='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x846128['iconClass']||'')+'\x22>'+_0x846128['icon']+'</span>'),_0x408241['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x322a35+'\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'](_0x846128['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x846128['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x846128['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x408241['addEventListener']('click',()=>{this['selectItem'](_0x2d7a35);}),_0x408241['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x246314,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x408241);}),_0x47147f?(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'](_0x42a9b8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x42a9b8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x10548d){this['selectedItem']=_0x10548d;const _0x4804df=this['options']['renderItem'](_0x10548d);this['input']['value']=_0x4804df['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x10548d);}['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'](_0x1230cb){if(_0x1230cb){this['selectedItem']=_0x1230cb;const _0x549013=this['options']['renderItem'](_0x1230cb);this['input']['value']=_0x549013['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x3b476d){this['allItems']=_0x3b476d,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'](_0x14ed46){this['input']['placeholder']=_0x14ed46;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x144820=null){const _0x16351f=document['getElementById']('admin-menu-container'),_0x88faec=document['getElementById']('admin-menu-btn'),_0x2a0556=document['getElementById']('admin-menu');if(!_0x16351f||!_0x88faec||!_0x2a0556)return;try{!_0x144820&&(_0x144820=await API['getCurrentUser']());if(_0x144820){const _0x2df919=window['Permissions'],_0x2fd3ce=_0x2df919['hasServerPermission'](_0x144820,'*')||_0x2df919['hasEnvPermission'](_0x144820,'environments:manage')||_0x2df919['hasServerPermission'](_0x144820,'users:create')||_0x2df919['hasTeamPermission'](_0x144820,'teams:manage')||_0x2df919['hasEnvPermission'](_0x144820,'environments:view_details');if(!_0x2fd3ce)return;_0x16351f['hidden']=![];if(!_0x2df919['hasServerPermission'](_0x144820,'*')){const _0x2d5a03=_0x2a0556['querySelectorAll']('.admin-menu-item');_0x2d5a03['forEach'](_0x4eb8db=>{const _0x489f88=_0x4eb8db['querySelector']('.option-text')?.['textContent']?.['trim']();_0x489f88==='Users'&&!_0x2df919['hasServerPermission'](_0x144820,'users:create')&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Skills'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Server\x20Settings'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Server\x20Administration'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Git\x20History'&&(_0x4eb8db['hidden']=!![]),_0x489f88==='Roles'&&(_0x4eb8db['hidden']=!![]);});}_0x88faec['addEventListener']('click',_0x222a9f=>{_0x222a9f['stopPropagation']();const _0x2b94a0=document['getElementById']('actions-menu');if(_0x2b94a0)_0x2b94a0['hidden']=!![];_0x2a0556['hidden']=!_0x2a0556['hidden'];}),document['addEventListener']('click',_0x2eff59=>{!_0x2a0556['hidden']&&!_0x88faec['contains'](_0x2eff59['target'])&&!_0x2a0556['contains'](_0x2eff59['target'])&&(_0x2a0556['hidden']=!![]);}),document['addEventListener']('keydown',_0x1d02c5=>{_0x1d02c5['key']==='Escape'&&!_0x2a0556['hidden']&&(_0x2a0556['hidden']=!![]);});}}catch(_0x38be0c){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x38be0c['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|