@profoundlogic/coderflow-server 0.8.5 → 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.css +60 -0
- package/dist/web-ui/public/admin.html +6 -0
- 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 _0x2897dd=window['location']['pathname'],_0x45b94c=_0x2897dd['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x45b94c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x45b94c[0x1]),_0x45b94c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x2cf25c={}){const _0x1330c8=new URLSearchParams();_0x2cf25c['userId']&&_0x1330c8['set']('userId',String(_0x2cf25c['userId']));_0x2cf25c['automation']&&_0x1330c8['set']('automation',String(_0x2cf25c['automation']));const _0xe94804=API_BASE+'/tasks/stats'+(_0x1330c8['toString']()?'?'+_0x1330c8['toString']():''),_0x388da7=await fetch(_0xe94804);if(!_0x388da7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x388da7['statusText']);return await _0x388da7['json']();},async 'getTasks'(_0x9444b7={}){const _0x17bc2a=new URLSearchParams();_0x9444b7['status']&&_0x17bc2a['set']('status',String(_0x9444b7['status']));_0x9444b7['environment']&&_0x17bc2a['set']('environment',String(_0x9444b7['environment']));_0x9444b7['automation']&&_0x17bc2a['set']('automation',String(_0x9444b7['automation']));if(_0x9444b7['include']){const _0x4c4d95=Array['isArray'](_0x9444b7['include'])?_0x9444b7['include']['join'](','):String(_0x9444b7['include']);_0x4c4d95&&_0x17bc2a['set']('include',_0x4c4d95);}_0x9444b7['filter']&&_0x17bc2a['set']('filter',String(_0x9444b7['filter']));_0x9444b7['page']&&_0x17bc2a['set']('page',String(_0x9444b7['page']));_0x9444b7['limit']&&_0x17bc2a['set']('limit',String(_0x9444b7['limit']));_0x9444b7['userId']&&_0x17bc2a['set']('userId',String(_0x9444b7['userId']));_0x9444b7['search']&&_0x17bc2a['set']('search',String(_0x9444b7['search']));_0x9444b7['includeChildTasks']&&_0x17bc2a['set']('includeChildTasks','true');const _0x157ca6=API_BASE+'/tasks'+(_0x17bc2a['toString']()?'?'+_0x17bc2a['toString']():''),_0x228e35=await fetch(_0x157ca6);if(!_0x228e35['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x228e35['statusText']);return await _0x228e35['json']();},async 'getAutomations'(_0x48f20c={}){const _0x51f094=new URLSearchParams();_0x48f20c['environment']&&_0x51f094['set']('environment',String(_0x48f20c['environment']));const _0x2ba7b1=await fetch(API_BASE+'/api/automations'+(_0x51f094['toString']()?'?'+_0x51f094['toString']():''));if(!_0x2ba7b1['ok']){const _0x375a13=await _0x2ba7b1['json']()['catch'](()=>({}));throw new Error(_0x375a13['message']||_0x375a13['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ba7b1['statusText']);}return await _0x2ba7b1['json']();},async 'getAutomation'(_0x2d7d59){const _0x1ebcf2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2d7d59));if(!_0x1ebcf2['ok']){const _0x19e9e1=await _0x1ebcf2['json']()['catch'](()=>({}));throw new Error(_0x19e9e1['message']||_0x19e9e1['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x1ebcf2['statusText']);}return await _0x1ebcf2['json']();},async 'createAutomation'(_0x5b50a4){const _0x3be2ed=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b50a4||{})});if(!_0x3be2ed['ok']){const _0x59f8a8=await _0x3be2ed['json']()['catch'](()=>({}));throw new Error(_0x59f8a8['message']||_0x59f8a8['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3be2ed['statusText']);}return await _0x3be2ed['json']();},async 'updateAutomation'(_0x1c6ae4,_0x120f87){const _0x3cd18a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c6ae4),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x120f87||{})});if(!_0x3cd18a['ok']){const _0x2a5087=await _0x3cd18a['json']()['catch'](()=>({}));throw new Error(_0x2a5087['message']||_0x2a5087['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x3cd18a['statusText']);}return await _0x3cd18a['json']();},async 'deleteAutomation'(_0x56ee95){const _0x5489fd=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56ee95),{'method':'DELETE'});if(!_0x5489fd['ok']){const _0x5368ba=await _0x5489fd['json']()['catch'](()=>({}));throw new Error(_0x5368ba['message']||_0x5368ba['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5489fd['statusText']);}return await _0x5489fd['json']();},async 'triggerAutomation'(_0x5c54da){const _0x5b0357=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c54da)+'/trigger',{'method':'POST'});if(!_0x5b0357['ok']){const _0x241483=await _0x5b0357['json']()['catch'](()=>({}));throw new Error(_0x241483['message']||_0x241483['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5b0357['statusText']);}return await _0x5b0357['json']();},async 'setAutomationEnabled'(_0x382615,_0x3d24b6){const _0x2bf8d7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x382615)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x3d24b6})});if(!_0x2bf8d7['ok']){const _0xd8618d=await _0x2bf8d7['json']()['catch'](()=>({}));throw new Error(_0xd8618d['message']||_0xd8618d['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x2bf8d7['statusText']);}return await _0x2bf8d7['json']();},async 'getAutomationHistory'(_0x39a68a,_0x1161ae=0x32){const _0x1890db=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x39a68a)+'/history?limit='+encodeURIComponent(String(_0x1161ae)));if(!_0x1890db['ok']){const _0x388456=await _0x1890db['json']()['catch'](()=>({}));throw new Error(_0x388456['message']||_0x388456['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1890db['statusText']);}return await _0x1890db['json']();},async 'getTask'(_0x3a0d37,_0x4b7643={}){const _0x39d306=new URLSearchParams();if(_0x4b7643['include']){const _0x1e9975=Array['isArray'](_0x4b7643['include'])?_0x4b7643['include']['join'](','):String(_0x4b7643['include']);if(_0x1e9975)_0x39d306['set']('include',_0x1e9975);}const _0x12d060=await fetch(API_BASE+'/tasks/'+_0x3a0d37+(_0x39d306['toString']()?'?'+_0x39d306['toString']():''));if(!_0x12d060['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x12d060['statusText']);return await _0x12d060['json']();},async 'getTaskResults'(_0x2f873a){const _0x114d03=await fetch(API_BASE+'/tasks/'+_0x2f873a+'/results');if(!_0x114d03['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x114d03['statusText']);return await _0x114d03['json']();},async 'getTaskPatches'(_0x16145d){const _0xf0813f=await fetch(API_BASE+'/tasks/'+_0x16145d+'/patches');if(!_0xf0813f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xf0813f['statusText']);return await _0xf0813f['json']();},async 'getTaskAttachments'(_0x33d2d2){const _0x55bb8c=await fetch(API_BASE+'/tasks/'+_0x33d2d2+'/attachments');if(!_0x55bb8c['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x55bb8c['statusText']);return await _0x55bb8c['json']();},async 'uploadAttachments'(_0x32d34c,_0x295551){const _0x2f9a03=new FormData();for(const _0x1ea954 of _0x295551){_0x2f9a03['append']('attachments',_0x1ea954);}const _0x54c32a=await fetch(API_BASE+'/tasks/'+_0x32d34c+'/attachments',{'method':'POST','body':_0x2f9a03});if(!_0x54c32a['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x54c32a['statusText']);return await _0x54c32a['json']();},async 'isAINameGenerationAvailable'(){try{const _0x2b61f3=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x2b61f3['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x2b61f3['json']();}catch(_0x2a84d9){return{'available':![],'reason':_0x2a84d9['message']};}},async 'generateTaskName'(_0x323359){try{const _0x5817ff=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x323359})});return await _0x5817ff['json']();}catch(_0x39384c){return{'success':![],'error':_0x39384c['message']};}},async 'createTask'(_0x48ea23){let _0x1b44c5,_0x1421d7={};if(_0x48ea23['files']&&_0x48ea23['files']['length']>0x0){const _0x24d1fa=new FormData();for(const [_0x47c7b6,_0x67bbb1]of Object['entries'](_0x48ea23)){if(_0x47c7b6!=='files'){if(_0x67bbb1==null)continue;typeof _0x67bbb1==='object'?_0x24d1fa['append'](_0x47c7b6,JSON['stringify'](_0x67bbb1)):_0x24d1fa['append'](_0x47c7b6,String(_0x67bbb1));}}for(const _0x47dc54 of _0x48ea23['files']){_0x24d1fa['append']('attachments',_0x47dc54);}_0x1b44c5=_0x24d1fa;}else _0x1421d7['Content-Type']='application/json',_0x1b44c5=JSON['stringify'](_0x48ea23);const _0x14405c=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x1421d7,'body':_0x1b44c5});if(!_0x14405c['ok']){const _0x2ca852=await _0x14405c['json'](),_0x33d30d=new Error(_0x2ca852['error']||'Failed\x20to\x20create\x20task:\x20'+_0x14405c['statusText']),{message:_0x198d28,..._0x4843ed}=_0x2ca852;Object['assign'](_0x33d30d,_0x4843ed);throw _0x33d30d;}return await _0x14405c['json']();},async 'createTestTask'(_0x2aee31){const _0x4e9e3b=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2aee31)});if(!_0x4e9e3b['ok']){const _0x235f80=await _0x4e9e3b['json']();throw new Error(_0x235f80['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x4e9e3b['statusText']);}return await _0x4e9e3b['json']();},async 'createEphemeralTest'(_0xa1f5e3){const _0x3db821=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa1f5e3)});if(!_0x3db821['ok']){const _0x230e60=await _0x3db821['json']();throw new Error(_0x230e60['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3db821['statusText']);}return await _0x3db821['json']();},async 'createDeployTask'(_0x41674f){const _0x4d1622=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41674f)});if(!_0x4d1622['ok']){const _0x29d7bf=await _0x4d1622['json']();throw new Error(_0x29d7bf['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4d1622['statusText']);}return await _0x4d1622['json']();},async 'getEnvironments'(){const _0x403bcb=await fetch(API_BASE+'/environments');if(!_0x403bcb['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x403bcb['statusText']);return await _0x403bcb['json']();},async 'getEnvironment'(_0x1c64ec){const _0x18ab32=await fetch(API_BASE+'/environments/'+_0x1c64ec);if(!_0x18ab32['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x18ab32['statusText']);return await _0x18ab32['json']();},async 'getEnvironmentRepoHistory'(_0x403e01,_0x1bab25,_0x55c85b={}){if(!_0x403e01||!_0x1bab25)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4c8ea4=new URLSearchParams();if(_0x55c85b['limit'])_0x4c8ea4['set']('limit',String(_0x55c85b['limit']));if(_0x55c85b['offset'])_0x4c8ea4['set']('offset',String(_0x55c85b['offset']));if(_0x55c85b['search'])_0x4c8ea4['set']('search',String(_0x55c85b['search']));if(_0x55c85b['branch'])_0x4c8ea4['set']('branch',String(_0x55c85b['branch']));const _0x4c72b8=API_BASE+'/environments/'+encodeURIComponent(_0x403e01)+'/repos/'+encodeURIComponent(_0x1bab25)+'/git/history',_0xc81f1c=await fetch(''+_0x4c72b8+(_0x4c8ea4['toString']()?'?'+_0x4c8ea4['toString']():''));if(!_0xc81f1c['ok']){const _0x5cfd86=await _0xc81f1c['json']()['catch'](()=>({}));throw new Error(_0x5cfd86['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0xc81f1c['statusText']);}return await _0xc81f1c['json']();},async 'getEnvironmentRepoCommit'(_0x3179ca,_0x294101,_0x291ebb){if(!_0x3179ca||!_0x294101||!_0x291ebb)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x43320e=API_BASE+'/environments/'+encodeURIComponent(_0x3179ca)+'/repos/'+encodeURIComponent(_0x294101)+'/git/commits/'+encodeURIComponent(_0x291ebb),_0x65ec80=await fetch(_0x43320e);if(!_0x65ec80['ok']){const _0x584438=await _0x65ec80['json']()['catch'](()=>({}));throw new Error(_0x584438['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x65ec80['statusText']);}return await _0x65ec80['json']();},async 'getEnvironmentRepoBranches'(_0x17c0cc,_0x1a02ce){if(!_0x17c0cc||!_0x1a02ce)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2c1c2e=API_BASE+'/environments/'+encodeURIComponent(_0x17c0cc)+'/repos/'+encodeURIComponent(_0x1a02ce)+'/git/branches',_0x20add7=await fetch(_0x2c1c2e);if(!_0x20add7['ok']){const _0x2ece52=await _0x20add7['json']()['catch'](()=>({}));throw new Error(_0x2ece52['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x20add7['statusText']);}return await _0x20add7['json']();},async 'revertEnvironmentRepoCommit'(_0x69a5bf,_0x1f8141,_0x49ac8e,_0x42bdd4={}){if(!_0x69a5bf||!_0x1f8141||!_0x49ac8e)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x26c98b=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x69a5bf)+'/repos/'+encodeURIComponent(_0x1f8141)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x49ac8e,..._0x42bdd4})});if(!_0x26c98b['ok']){const _0x528d5a=await _0x26c98b['json']()['catch'](()=>({}));throw new Error(_0x528d5a['message']||_0x528d5a['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x26c98b['statusText']);}return await _0x26c98b['json']();},async 'getTemplates'(_0x296a64={}){const _0x43a4a1=new URLSearchParams();if(_0x296a64['include']){const _0x35c6a0=Array['isArray'](_0x296a64['include'])?_0x296a64['include']['join'](','):String(_0x296a64['include']);if(_0x35c6a0)_0x43a4a1['set']('include',_0x35c6a0);}const _0xe8d4c1=await fetch(API_BASE+'/templates'+(_0x43a4a1['toString']()?'?'+_0x43a4a1['toString']():''));if(!_0xe8d4c1['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0xe8d4c1['statusText']);return await _0xe8d4c1['json']();},async 'getTemplatesForEnvironment'(_0x22dad8,_0x523628={}){if(!_0x22dad8)throw new Error('Environment\x20name\x20is\x20required');const _0x8521ff=new URLSearchParams();if(_0x523628['include']){const _0x3f1894=Array['isArray'](_0x523628['include'])?_0x523628['include']['join'](','):String(_0x523628['include']);if(_0x3f1894)_0x8521ff['set']('include',_0x3f1894);}const _0x5dfab9=await fetch(API_BASE+'/templates/'+_0x22dad8+(_0x8521ff['toString']()?'?'+_0x8521ff['toString']():''));if(!_0x5dfab9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x22dad8+':\x20'+_0x5dfab9['statusText']);return await _0x5dfab9['json']();},async 'getTemplate'(_0x5840c6,_0x41f266,_0xd1e8e8={}){if(!_0x5840c6||!_0x41f266)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x582c1d=new URLSearchParams();if(_0xd1e8e8['include']){const _0x1a15f3=Array['isArray'](_0xd1e8e8['include'])?_0xd1e8e8['include']['join'](','):String(_0xd1e8e8['include']);if(_0x1a15f3)_0x582c1d['set']('include',_0x1a15f3);}const _0x2bbc85=await fetch(API_BASE+'/templates/'+_0x5840c6+'/'+_0x41f266+(_0x582c1d['toString']()?'?'+_0x582c1d['toString']():''));if(!_0x2bbc85['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2bbc85['statusText']);return await _0x2bbc85['json']();},async 'getTaskLogs'(_0x1bab8c,_0x529fa6={}){if(!_0x1bab8c)throw new Error('Task\x20ID\x20is\x20required');const _0x3044ed=new URLSearchParams();_0x529fa6['tail']&&_0x3044ed['set']('tail',String(_0x529fa6['tail']));const _0x3c86cd=await fetch(API_BASE+'/tasks/'+_0x1bab8c+'/logs'+(_0x3044ed['toString']()?'?'+_0x3044ed['toString']():''));if(!_0x3c86cd['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3c86cd['statusText']);return await _0x3c86cd['text']();},async 'getContainers'(){const _0x188030=await fetch(API_BASE+'/containers');if(!_0x188030['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x188030['statusText']);return await _0x188030['json']();},async 'getContainer'(_0x44ca47){const _0x596c9b=await fetch(API_BASE+'/containers/'+_0x44ca47);if(!_0x596c9b['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x596c9b['statusText']);return await _0x596c9b['json']();},async 'startInteractiveContainer'(_0x56535e){const _0x52059f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56535e)});if(!_0x52059f['ok']){const _0x463f34=await _0x52059f['json']()['catch'](()=>({}));throw new Error(_0x463f34['message']||'Failed\x20to\x20start\x20container:\x20'+_0x52059f['statusText']);}return await _0x52059f['json']();},async 'startContainerCodeServer'(_0xab3303,_0x24d467={}){if(!_0xab3303)throw new Error('Container\x20ID\x20is\x20required');const _0x3eae74=new URLSearchParams();_0x24d467['theme']&&_0x3eae74['set']('theme',_0x24d467['theme']);const _0x3d9872=await fetch(API_BASE+'/containers/'+_0xab3303+'/code-server'+(_0x3eae74['toString']()?'?'+_0x3eae74['toString']():'')),_0x4896ec=await _0x3d9872['json']()['catch'](()=>({}));if(!_0x3d9872['ok'])throw new Error(_0x4896ec['message']||_0x4896ec['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x3d9872['statusText']);return _0x4896ec;},async 'stopContainer'(_0x59d1b5){const _0x486c11=await fetch(API_BASE+'/containers/'+_0x59d1b5,{'method':'DELETE'});if(!_0x486c11['ok']){const _0x36d8c9=await _0x486c11['json']()['catch'](()=>({}));throw new Error(_0x36d8c9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x486c11['statusText']);}return await _0x486c11['json']();},async 'stopTask'(_0x280648){if(!_0x280648)throw new Error('Task\x20ID\x20is\x20required');const _0x20b6d0=await fetch(API_BASE+'/tasks/'+_0x280648+'/stop',{'method':'POST'});if(!_0x20b6d0['ok']){const _0x55bf1f=await _0x20b6d0['json']()['catch'](()=>({}));throw new Error(_0x55bf1f['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x20b6d0['statusText']);}return await _0x20b6d0['json']();},async 'interruptTask'(_0x547696){if(!_0x547696)throw new Error('Task\x20ID\x20is\x20required');const _0x53db8c=await fetch(API_BASE+'/tasks/'+_0x547696+'/interrupt',{'method':'POST'});if(!_0x53db8c['ok']){const _0x2f4b6a=await _0x53db8c['json']()['catch'](()=>({}));throw new Error(_0x2f4b6a['error']||_0x2f4b6a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x53db8c['statusText']);}return await _0x53db8c['json']();},async 'startTask'(_0x5d4ff3){if(!_0x5d4ff3)throw new Error('Task\x20ID\x20is\x20required');const _0x291d17=await fetch(API_BASE+'/tasks/'+_0x5d4ff3+'/start',{'method':'POST'});if(!_0x291d17['ok']){const _0x151745=await _0x291d17['json']()['catch'](()=>({}));throw new Error(_0x151745['error']||'Failed\x20to\x20start\x20task:\x20'+_0x291d17['statusText']);}return await _0x291d17['json']();},async 'deleteTask'(_0x5b4bb3){if(!_0x5b4bb3)throw new Error('Task\x20ID\x20is\x20required');const _0x4ee838=await fetch(API_BASE+'/tasks/'+_0x5b4bb3,{'method':'DELETE'});if(!_0x4ee838['ok']){const _0x37ccc9=await _0x4ee838['json']()['catch'](()=>({}));throw new Error(_0x37ccc9['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4ee838['statusText']);}return await _0x4ee838['json']();},async 'refreshTasksFromDisk'(){const _0x4fb64f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4fb64f['ok']){const _0x1e1535=await _0x4fb64f['json']()['catch'](()=>({}));throw new Error(_0x1e1535['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4fb64f['statusText']);}return await _0x4fb64f['json']();},async 'approveTask'(_0x59551d,_0x32f016={}){if(!_0x59551d)throw new Error('Task\x20ID\x20is\x20required');const _0x1e467b={'commit_message':_0x32f016['commit_message']||'','pull':_0x32f016['pull']??![],'push':_0x32f016['push']??![],'conflict_strategy':_0x32f016['conflict_strategy']||'rebase'};_0x32f016['new_branch']&&(_0x1e467b['new_branch']=_0x32f016['new_branch']);const _0x5dce28=await fetch(API_BASE+'/tasks/'+_0x59551d+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e467b)});if(!_0x5dce28['ok']){const _0x3022e7=await _0x5dce28['json']()['catch'](()=>({}));let _0x10c834=_0x3022e7['error']||_0x3022e7['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x5dce28['statusText'];if(_0x3022e7['results']&&Array['isArray'](_0x3022e7['results'])){const _0x1443fa=_0x3022e7['results']['filter'](_0x30936a=>!_0x30936a['success']&&_0x30936a['error']);_0x1443fa['length']>0x0&&(_0x10c834=_0x1443fa[0x0]['error']);}const _0x5aa63c=new Error(_0x10c834);_0x5aa63c['hasConflicts']=_0x3022e7['results']?.['some'](_0xc91445=>_0xc91445['conflict'])||![];throw _0x5aa63c;}return await _0x5dce28['json']();},async 'getPullRequestInfo'(_0xe759a6){if(!_0xe759a6)throw new Error('Task\x20ID\x20is\x20required');const _0x324bb7=await fetch(API_BASE+'/tasks/'+_0xe759a6+'/pull-request-info');if(!_0x324bb7['ok']){const _0x3ae602=await _0x324bb7['json']()['catch'](()=>({}));throw new Error(_0x3ae602['error']||_0x3ae602['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x324bb7['statusText']);}return await _0x324bb7['json']();},async 'createPullRequests'(_0x5b3591,_0x3f6a61){if(!_0x5b3591)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f6a61||!Array['isArray'](_0x3f6a61))throw new Error('repos\x20array\x20is\x20required');const _0x735233=await fetch(API_BASE+'/tasks/'+_0x5b3591+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3f6a61})});if(!_0x735233['ok']){const _0x5e23b9=await _0x735233['json']()['catch'](()=>({}));let _0x3824d0=_0x5e23b9['error']||_0x5e23b9['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x735233['statusText'];if(_0x5e23b9['results']&&Array['isArray'](_0x5e23b9['results'])){const _0x5ae926=_0x5e23b9['results']['filter'](_0x3a0d7a=>!_0x3a0d7a['success']&&_0x3a0d7a['error']);_0x5ae926['length']>0x0&&(_0x3824d0=_0x5ae926[0x0]['error']);}throw new Error(_0x3824d0);}return await _0x735233['json']();},async 'syncRepos'(_0x3152eb){if(!_0x3152eb)throw new Error('Task\x20ID\x20is\x20required');const _0x2ae0c0=await fetch(API_BASE+'/tasks/'+_0x3152eb+'/sync-repos',{'method':'POST'});if(!_0x2ae0c0['ok']){const _0x4d8f99=await _0x2ae0c0['json']()['catch'](()=>({}));throw new Error(_0x4d8f99['error']||_0x4d8f99['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2ae0c0['statusText']);}return await _0x2ae0c0['json']();},async 'getIbmiSyncInfo'(_0x2062ba){if(!_0x2062ba)throw new Error('Task\x20ID\x20is\x20required');const _0x3a1bbf=await fetch(API_BASE+'/tasks/'+_0x2062ba+'/ibmi-sync-info');if(!_0x3a1bbf['ok']){const _0x50df7c=await _0x3a1bbf['json']()['catch'](()=>({}));throw new Error(_0x50df7c['error']||_0x50df7c['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x3a1bbf['json']();},async 'getSyncFiles'(_0x2567a0){if(!_0x2567a0)throw new Error('Task\x20ID\x20is\x20required');const _0x407497=await fetch(API_BASE+'/tasks/'+_0x2567a0+'/sync-to-ibmi/files');if(!_0x407497['ok']){const _0x499cff=await _0x407497['json']()['catch'](()=>({}));throw new Error(_0x499cff['error']||_0x499cff['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x407497['json']();},async 'syncToIbmi'(_0xf31cb5,_0x583f69,_0x4693f=null,_0x336454=null,_0x29a3d7=null){if(!_0xf31cb5)throw new Error('Task\x20ID\x20is\x20required');const _0x24a9b8={'library':_0x583f69};if(_0x4693f)_0x24a9b8['user']=_0x4693f;if(_0x336454)_0x24a9b8['password']=_0x336454;if(_0x29a3d7)_0x24a9b8['files']=_0x29a3d7;const _0x19d8b2=await fetch(API_BASE+'/tasks/'+_0xf31cb5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24a9b8)});if(!_0x19d8b2['ok']){const _0xbd17dd=await _0x19d8b2['json']()['catch'](()=>({}));throw new Error(_0xbd17dd['error']||_0xbd17dd['message']||'Sync\x20failed');}return await _0x19d8b2['json']();},async 'getIbmiSyncLog'(_0x4a0aea){if(!_0x4a0aea)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7528=await fetch(API_BASE+'/tasks/'+_0x4a0aea+'/ibmi-sync-log');if(!_0x3f7528['ok']){const _0x138710=await _0x3f7528['json']()['catch'](()=>({}));throw new Error(_0x138710['error']||_0x138710['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3f7528['json']();},async 'pullChanges'(_0x8acb91){if(!_0x8acb91)throw new Error('Task\x20ID\x20is\x20required');const _0x6fdb18=await fetch(API_BASE+'/tasks/'+_0x8acb91+'/pull-changes',{'method':'POST'});if(!_0x6fdb18['ok']){const _0x217413=await _0x6fdb18['json']()['catch'](()=>({}));throw new Error(_0x217413['error']||_0x217413['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x6fdb18['statusText']);}return await _0x6fdb18['json']();},async 'readFile'(_0x4c43fc,_0x137832){if(!_0x4c43fc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x137832)throw new Error('File\x20path\x20is\x20required');const _0x595414=await fetch(API_BASE+'/tasks/'+_0x4c43fc+'/files?path='+encodeURIComponent(_0x137832));if(!_0x595414['ok']){const _0x4441c8=await _0x595414['json']()['catch'](()=>({}));throw new Error(_0x4441c8['error']||_0x4441c8['message']||'Failed\x20to\x20read\x20file:\x20'+_0x595414['statusText']);}return await _0x595414['json']();},'getTaskFileDownloadUrl'(_0x25f8dc,_0x43de12){if(!_0x25f8dc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x43de12)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x25f8dc+'/files/download?path='+encodeURIComponent(_0x43de12);},async 'writeFile'(_0x3dd1b0,_0x258053,_0x37c151){if(!_0x3dd1b0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x258053)throw new Error('File\x20path\x20is\x20required');if(_0x37c151===undefined)throw new Error('Content\x20is\x20required');const _0x35b566=await fetch(API_BASE+'/tasks/'+_0x3dd1b0+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x258053,'content':_0x37c151})});if(!_0x35b566['ok']){const _0x521f52=await _0x35b566['json']()['catch'](()=>({}));throw new Error(_0x521f52['error']||_0x521f52['message']||'Failed\x20to\x20write\x20file:\x20'+_0x35b566['statusText']);}return await _0x35b566['json']();},async 'uploadTaskFiles'(_0x467daa,_0x1fdaa9,_0x321027){if(!_0x467daa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1fdaa9)throw new Error('Target\x20directory\x20is\x20required');if(!_0x321027||_0x321027['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x44587b=new FormData();_0x44587b['append']('targetDir',_0x1fdaa9);for(const _0x44268a of _0x321027){_0x44587b['append']('files',_0x44268a,_0x44268a['name']);}const _0x2392a8=await fetch(API_BASE+'/tasks/'+_0x467daa+'/files/upload',{'method':'POST','body':_0x44587b});if(!_0x2392a8['ok']){const _0x4ef3d8=await _0x2392a8['json']()['catch'](()=>({}));throw new Error(_0x4ef3d8['error']||_0x4ef3d8['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2392a8['statusText']);}return await _0x2392a8['json']();},async 'createDirectory'(_0x1e1e5d,_0x4642b2){if(!_0x1e1e5d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4642b2)throw new Error('Directory\x20path\x20is\x20required');const _0x1facd5=await fetch(API_BASE+'/tasks/'+_0x1e1e5d+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4642b2})});if(!_0x1facd5['ok']){const _0xdd7cca=await _0x1facd5['json']()['catch'](()=>({}));throw new Error(_0xdd7cca['error']||_0xdd7cca['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x1facd5['statusText']);}return await _0x1facd5['json']();},async 'renamePath'(_0x16ecfa,_0x181a43,_0x5c7186){if(!_0x16ecfa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x181a43)throw new Error('Source\x20path\x20is\x20required');if(!_0x5c7186)throw new Error('Destination\x20path\x20is\x20required');const _0x3920fb=await fetch(API_BASE+'/tasks/'+_0x16ecfa+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x181a43,'newPath':_0x5c7186})});if(!_0x3920fb['ok']){const _0x3e142e=await _0x3920fb['json']()['catch'](()=>({}));throw new Error(_0x3e142e['error']||_0x3e142e['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x3920fb['statusText']);}return await _0x3920fb['json']();},async 'deleteFile'(_0xee2787,_0x1374bc){if(!_0xee2787)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1374bc)throw new Error('File\x20path\x20is\x20required');const _0x5c3171=await fetch(API_BASE+'/tasks/'+_0xee2787+'/files?path='+encodeURIComponent(_0x1374bc),{'method':'DELETE'});if(!_0x5c3171['ok']){const _0x466448=await _0x5c3171['json']()['catch'](()=>({}));throw new Error(_0x466448['error']||_0x466448['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5c3171['statusText']);}return await _0x5c3171['json']();},async 'deleteDirectory'(_0x59df9f,_0x312c9d){if(!_0x59df9f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x312c9d)throw new Error('Directory\x20path\x20is\x20required');const _0x28702e=await fetch(API_BASE+'/tasks/'+_0x59df9f+'/files/directory?path='+encodeURIComponent(_0x312c9d),{'method':'DELETE'});if(!_0x28702e['ok']){const _0x3b5926=await _0x28702e['json']()['catch'](()=>({}));throw new Error(_0x3b5926['error']||_0x3b5926['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x28702e['statusText']);}return await _0x28702e['json']();},async 'discardFile'(_0x328e85,_0x2d24dc,_0x24afee){if(!_0x328e85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d24dc)throw new Error('File\x20path\x20is\x20required');if(!_0x24afee)throw new Error('Repository\x20path\x20is\x20required');const _0xc3d828=await fetch(API_BASE+'/tasks/'+_0x328e85+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2d24dc,'repoPath':_0x24afee})});if(!_0xc3d828['ok']){const _0x54d44a=await _0xc3d828['json']()['catch'](()=>({}));throw new Error(_0x54d44a['error']||_0x54d44a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xc3d828['statusText']);}return await _0xc3d828['json']();},async 'followUpTask'(_0x489994,_0x4e096c={}){if(!_0x489994)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e096c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x6d6213,_0x3c04d0={};if(_0x4e096c['files']&&_0x4e096c['files']['length']>0x0){const _0x61cfa=new FormData();_0x61cfa['append']('instructions',_0x4e096c['instructions']);for(const _0x305b9f of _0x4e096c['files']){_0x61cfa['append']('attachments',_0x305b9f);}_0x6d6213=_0x61cfa;}else _0x3c04d0['Content-Type']='application/json',_0x6d6213=JSON['stringify']({'instructions':_0x4e096c['instructions']});const _0x12589e=await fetch(API_BASE+'/tasks/'+_0x489994+'/follow-up',{'method':'POST','headers':_0x3c04d0,'body':_0x6d6213});if(!_0x12589e['ok']){const _0x13ebc1=await _0x12589e['json']()['catch'](()=>({}));throw new Error(_0x13ebc1['error']||_0x13ebc1['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x12589e['statusText']);}return await _0x12589e['json']();},async 'getTaskRewindPoints'(_0x476d9d){if(!_0x476d9d)throw new Error('Task\x20ID\x20is\x20required');const _0x2bb8cf=await fetch(API_BASE+'/tasks/'+_0x476d9d+'/rewind-points');if(!_0x2bb8cf['ok']){const _0x333bb3=await _0x2bb8cf['json']()['catch'](()=>({}));throw new Error(_0x333bb3['error']||_0x333bb3['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2bb8cf['statusText']);}return await _0x2bb8cf['json']();},async 'rewindTask'(_0xa38cf8,_0x45121d={}){if(!_0xa38cf8)throw new Error('Task\x20ID\x20is\x20required');const _0x461fa5=Number['isInteger'](_0x45121d['targetFollowUpCount'])?_0x45121d['targetFollowUpCount']:0x0,_0x20d2e9={'targetFollowUpCount':_0x461fa5};typeof _0x45121d['instructions']==='string'&&_0x45121d['instructions']['trim']()&&(_0x20d2e9['instructions']=_0x45121d['instructions']['trim']());typeof _0x45121d['rewindFiles']==='boolean'&&(_0x20d2e9['rewindFiles']=_0x45121d['rewindFiles']);const _0x326d1c=await fetch(API_BASE+'/tasks/'+_0xa38cf8+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20d2e9)});if(!_0x326d1c['ok']){const _0x475d58=await _0x326d1c['json']()['catch'](()=>({}));throw new Error(_0x475d58['error']||_0x475d58['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x326d1c['statusText']);}return await _0x326d1c['json']();},async 'login'(_0x49bdca,_0x4d8484){const _0x25b26a=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x49bdca,'password':_0x4d8484})});if(!_0x25b26a['ok']){const _0x54b255=await _0x25b26a['json']();throw new Error(_0x54b255['message']||'Login\x20failed');}return await _0x25b26a['json']();},async 'logout'(){const _0x55d935=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x55d935['ok']){const _0x127bf9=await _0x55d935['json']();throw new Error(_0x127bf9['message']||'Logout\x20failed');}return await _0x55d935['json']();},async 'getCurrentUser'(){const _0x520629=await fetch(API_BASE+'/auth/me');if(!_0x520629['ok'])throw new Error('Not\x20authenticated');const _0x4563ca=await _0x520629['json']();return _0x4563ca['user'];},async 'getRolesInfo'(){const _0x2a5157=await fetch(API_BASE+'/users/roles');if(!_0x2a5157['ok']){const _0x429316=await _0x2a5157['json']();throw new Error(_0x429316['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2a5157['json']();},async 'getUsers'(){const _0x50bbb0=await fetch(API_BASE+'/users');if(!_0x50bbb0['ok']){const _0x10a914=await _0x50bbb0['json']();throw new Error(_0x10a914['message']||'Failed\x20to\x20get\x20users');}return await _0x50bbb0['json']();},async 'getUser'(_0x7a8272){const _0xc15953=await fetch(API_BASE+'/users/'+_0x7a8272);if(!_0xc15953['ok']){const _0x559d58=await _0xc15953['json']();throw new Error(_0x559d58['message']||'Failed\x20to\x20get\x20user');}return await _0xc15953['json']();},async 'createUser'(_0x38bf16){const _0x121814=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38bf16)});if(!_0x121814['ok']){const _0x4e6ffc=await _0x121814['json']();throw new Error(_0x4e6ffc['message']||'Failed\x20to\x20create\x20user');}return await _0x121814['json']();},async 'updateUser'(_0x301578,_0x4e163c){const _0xc48e73=await fetch(API_BASE+'/users/'+_0x301578,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e163c)});if(!_0xc48e73['ok']){const _0x4d9c8b=await _0xc48e73['json']();throw new Error(_0x4d9c8b['message']||'Failed\x20to\x20update\x20user');}return await _0xc48e73['json']();},async 'deleteUser'(_0x5b0ede){const _0x4ef0fa=await fetch(API_BASE+'/users/'+_0x5b0ede,{'method':'DELETE'});if(!_0x4ef0fa['ok']){const _0x3d3ef8=await _0x4ef0fa['json']();throw new Error(_0x3d3ef8['message']||'Failed\x20to\x20delete\x20user');}return await _0x4ef0fa['json']();},async 'stopAllContainers'(){const _0xf45581=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x318669=await _0xf45581['json']()['catch'](()=>({}));if(!_0xf45581['ok'])throw new Error(_0x318669['message']||_0x318669['error']||'Failed\x20to\x20stop\x20containers');return _0x318669;},async 'removeStoppedContainers'(){const _0x1e0c43=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0xa1316a=await _0x1e0c43['json']()['catch'](()=>({}));if(!_0x1e0c43['ok'])throw new Error(_0xa1316a['message']||_0xa1316a['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0xa1316a;},async 'pruneDockerResources'(){const _0x2fcb94=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4ed6fe=await _0x2fcb94['json']()['catch'](()=>({}));if(!_0x2fcb94['ok'])throw new Error(_0x4ed6fe['message']||_0x4ed6fe['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4ed6fe;},async 'getUpdateSettings'(){const _0x38e107=await fetch(API_BASE+'/health/update-settings'),_0x3e423b=await _0x38e107['json']()['catch'](()=>({}));if(!_0x38e107['ok'])throw new Error(_0x3e423b['message']||_0x3e423b['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x3e423b;},async 'applyServerUpdate'(_0x3974a1){const _0x4f833e=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x3974a1})}),_0x154aec=await _0x4f833e['json']()['catch'](()=>({}));if(!_0x4f833e['ok']){const _0x2fab46=new Error(_0x154aec['message']||_0x154aec['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x154aec['output']!==undefined)_0x2fab46['output']=_0x154aec['output'];if(_0x154aec['error']!==undefined)_0x2fab46['commandError']=_0x154aec['error'];throw _0x2fab46;}return _0x154aec;},async 'restartServer'(){const _0x7d61c5=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x1420c1=await _0x7d61c5['json']()['catch'](()=>({}));if(!_0x7d61c5['ok'])throw new Error(_0x1420c1['message']||_0x1420c1['error']||'Failed\x20to\x20restart\x20server');return _0x1420c1;},async 'createPasswordToken'(_0x376cff,_0x550e4c='setup',_0x50198c=![]){const _0x373348=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x376cff,'type':_0x550e4c,'sendEmail':_0x50198c})});if(!_0x373348['ok']){const _0x3e9059=await _0x373348['json']();throw new Error(_0x3e9059['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x373348['json']();},async 'getEmailConfig'(){const _0x27bc3e=await fetch(API_BASE+'/password/email-config');if(!_0x27bc3e['ok']){const _0x14b94c=await _0x27bc3e['json']();throw new Error(_0x14b94c['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x27bc3e['json']();},async 'updateTaskName'(_0x24798a,_0xdbbdbb){const _0x330321=await fetch(API_BASE+'/tasks/'+_0x24798a,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0xdbbdbb})});if(!_0x330321['ok']){const _0x28d50a=await _0x330321['json']();throw new Error(_0x28d50a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x330321['json']();},async 'pinTask'(_0x2307b8,_0x2646e7,_0x5c5d2a=null){if(!_0x2307b8)throw new Error('Task\x20ID\x20is\x20required');const _0x1ff2c2={'pinned':_0x2646e7};_0x5c5d2a&&_0x5c5d2a['length']>0x0&&(_0x1ff2c2['additionalTaskIds']=_0x5c5d2a);const _0x4ea7cf=await fetch(API_BASE+'/tasks/'+_0x2307b8+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ff2c2)});if(!_0x4ea7cf['ok']){const _0x2814c4=await _0x4ea7cf['json']();throw new Error(_0x2814c4['error']||'Failed\x20to\x20pin\x20task');}return await _0x4ea7cf['json']();},async 'setTaskWinner'(_0xffd0c2,_0x585fef,_0xe2fa1c=[]){if(!_0xffd0c2)throw new Error('Task\x20ID\x20is\x20required');const _0x59cc95=await fetch(API_BASE+'/tasks/'+_0xffd0c2+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x585fef,'siblings':_0xe2fa1c})});if(!_0x59cc95['ok']){const _0x386605=await _0x59cc95['json']();throw new Error(_0x386605['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x59cc95['json']();},async 'setTaskLoser'(_0x2ee4a5,_0x540075){if(!_0x2ee4a5)throw new Error('Task\x20ID\x20is\x20required');const _0x5dbe7a=await fetch(API_BASE+'/tasks/'+_0x2ee4a5+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x540075})});if(!_0x5dbe7a['ok']){const _0xccf02d=await _0x5dbe7a['json']();throw new Error(_0xccf02d['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5dbe7a['json']();},async 'createTaskGroup'(_0x40b237){const _0x439131=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40b237)});if(!_0x439131['ok']){const _0x3e914f=await _0x439131['json']();throw new Error(_0x3e914f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x439131['json']();},async 'getTaskGroups'(_0x173153={}){const _0x599943=new URLSearchParams();if(_0x173153['userId'])_0x599943['set']('userId',String(_0x173153['userId']));if(_0x173153['status'])_0x599943['set']('status',String(_0x173153['status']));if(_0x173153['limit'])_0x599943['set']('limit',String(_0x173153['limit']));const _0x1fbe60=API_BASE+'/tasks/groups'+(_0x599943['toString']()?'?'+_0x599943['toString']():''),_0x3178f8=await fetch(_0x1fbe60);if(!_0x3178f8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3178f8['json']();},async 'getTaskGroup'(_0x36e89d){const _0x2d3a28=await fetch(API_BASE+'/tasks/groups/'+_0x36e89d);if(!_0x2d3a28['ok']){const _0x89dbbf=await _0x2d3a28['json']();throw new Error(_0x89dbbf['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x2d3a28['json']();},async 'updateTaskGroup'(_0xd750b3,_0x3b1fe6,_0x3985da){const _0x1acbc1=await fetch(API_BASE+'/tasks/'+_0xd750b3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3b1fe6,'groupIndex':_0x3985da})});if(!_0x1acbc1['ok']){const _0x2118a1=await _0x1acbc1['json']();throw new Error(_0x2118a1['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x1acbc1['json']();},async 'removeTaskFromGroup'(_0x5f03f3){return this['updateTaskGroup'](_0x5f03f3,null,null);},async 'deleteTaskGroup'(_0x5b6eef,_0x290895=![]){const _0x27ff31=_0x290895?'?deleteTasks=true':'',_0x32b748=await fetch(API_BASE+'/tasks/groups/'+_0x5b6eef+_0x27ff31,{'method':'DELETE'});if(!_0x32b748['ok']){const _0x37549d=await _0x32b748['json']();throw new Error(_0x37549d['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x31825f,_0x3d387b){const _0x4412fa=await fetch(API_BASE+'/tasks/groups/'+_0x31825f+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3d387b})});if(!_0x4412fa['ok']){const _0x2783fd=await _0x4412fa['json']();throw new Error(_0x2783fd['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4412fa['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3b06b0){if(!_0x3b06b0)throw new Error('Task\x20ID\x20is\x20required');const _0x5256fc=await fetch(API_BASE+'/tasks/'+_0x3b06b0+'/comments');if(!_0x5256fc['ok']){const _0x4f68f8=await _0x5256fc['json']()['catch'](()=>({}));throw new Error(_0x4f68f8['error']||'Failed\x20to\x20get\x20comments');}return await _0x5256fc['json']();},async 'addComment'(_0x30c6c1,_0x2e302d){if(!_0x30c6c1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2e302d)throw new Error('Comment\x20content\x20is\x20required');const _0x18248d=await fetch(API_BASE+'/tasks/'+_0x30c6c1+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2e302d})});if(!_0x18248d['ok']){const _0x20255c=await _0x18248d['json']()['catch'](()=>({}));throw new Error(_0x20255c['error']||'Failed\x20to\x20add\x20comment');}return await _0x18248d['json']();},async 'updateComment'(_0x4ff69f,_0x5833fb,_0x355563){if(!_0x4ff69f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5833fb)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x355563)throw new Error('Comment\x20content\x20is\x20required');const _0x766f48=await fetch(API_BASE+'/tasks/'+_0x4ff69f+'/comments/'+_0x5833fb,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x355563})});if(!_0x766f48['ok']){const _0x25c95e=await _0x766f48['json']()['catch'](()=>({}));throw new Error(_0x25c95e['error']||'Failed\x20to\x20update\x20comment');}return await _0x766f48['json']();},async 'deleteComment'(_0x16f43f,_0x1c08ef){if(!_0x16f43f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c08ef)throw new Error('Comment\x20ID\x20is\x20required');const _0x595b9a=await fetch(API_BASE+'/tasks/'+_0x16f43f+'/comments/'+_0x1c08ef,{'method':'DELETE'});if(!_0x595b9a['ok']){const _0x3e97c5=await _0x595b9a['json']()['catch'](()=>({}));throw new Error(_0x3e97c5['error']||'Failed\x20to\x20delete\x20comment');}return await _0x595b9a['json']();},async 'createObjective'(_0x495f7d){const _0x548e6b={'objective':!![],'name':_0x495f7d['name']||'','environment':_0x495f7d['environment']||null,'agents':_0x495f7d['agents']||[],'branches':_0x495f7d['branches']||{},'isPinned':_0x495f7d['isPinned']||![],'parentObjectiveId':_0x495f7d['parentObjectiveId']||null,'env_vars':_0x495f7d['envVars']||{},'parameters':{'instructions':_0x495f7d['instructions']||''},'files':_0x495f7d['files']||[],'jira':_0x495f7d['jira']||null};return this['createTask'](_0x548e6b);},async 'updateObjective'(_0x51ebdd,_0x545f35,_0x450ba9=[],_0x3108e3=[]){let _0x242aa5,_0x2590ee={};const _0x20beec={..._0x545f35};_0x3108e3&&_0x3108e3['length']>0x0&&(_0x20beec['removeAttachments']=_0x3108e3);if(_0x450ba9&&_0x450ba9['length']>0x0){const _0x481ec4=new FormData();for(const [_0x52defd,_0x1cf4b3]of Object['entries'](_0x20beec)){if(_0x1cf4b3==null)continue;typeof _0x1cf4b3==='object'?_0x481ec4['append'](_0x52defd,JSON['stringify'](_0x1cf4b3)):_0x481ec4['append'](_0x52defd,String(_0x1cf4b3));}for(const _0x22718f of _0x450ba9){_0x481ec4['append']('attachments',_0x22718f);}_0x242aa5=_0x481ec4;}else _0x2590ee['Content-Type']='application/json',_0x242aa5=JSON['stringify'](_0x20beec);const _0x532bdb=await fetch(API_BASE+'/tasks/'+_0x51ebdd,{'method':'PATCH','headers':_0x2590ee,'body':_0x242aa5});if(!_0x532bdb['ok']){const _0x8aad82=await _0x532bdb['json']();throw new Error(_0x8aad82['error']||'Failed\x20to\x20update\x20objective');}return await _0x532bdb['json']();},async 'deleteObjective'(_0x17dc75){return this['deleteTask'](_0x17dc75);},async 'launchObjective'(_0x1613b0,_0x2631a7={}){const _0x51bfe3=await fetch(API_BASE+'/tasks/'+_0x1613b0+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2631a7)});if(!_0x51bfe3['ok']){const _0x48dfed=await _0x51bfe3['json']();throw new Error(_0x48dfed['error']||'Failed\x20to\x20launch\x20objective');}return await _0x51bfe3['json']();},async 'getObjectiveAttachments'(_0x89bf12){return this['getTaskAttachments'](_0x89bf12);},async 'createJudgeTask'({environment:_0x28a19e,judgeAgent:_0x4ef39a,groupId:_0x3e6094,taskIds:_0x4e8874,judgeCustomInstructions:_0x3b4f93,isPinned:_0x4eaaa2}){const _0x78fb42=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x28a19e,'judgeAgent':_0x4ef39a,'groupId':_0x3e6094,'taskIds':_0x4e8874,'judgeCustomInstructions':_0x3b4f93,'isPinned':_0x4eaaa2})});if(!_0x78fb42['ok']){const _0x119e8a=await _0x78fb42['json']();throw new Error(_0x119e8a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x78fb42['json']();},async 'getJudgeTasks'(_0x5b6d7e){const _0x4ae575=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5b6d7e));if(!_0x4ae575['ok']){const _0x3f77f8=await _0x4ae575['json']();throw new Error(_0x3f77f8['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4ae575['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1e90cb,_0x552549,_0x30579b=''){const _0x2fbce3=await fetch(API_BASE+'/tasks/'+_0x1e90cb+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x552549,'customPreamble':_0x30579b})});if(!_0x2fbce3['ok']){const _0x371f34=await _0x2fbce3['json']();throw new Error(_0x371f34['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2fbce3['json']();},async 'getJiraConfig'(){const _0x4955d6=await fetch(API_BASE+'/jira/config');if(!_0x4955d6['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4955d6['json']();},async 'getJiraIssue'(_0x201b6e){const _0x18ba73=await fetch(API_BASE+'/jira/issues/'+_0x201b6e);if(!_0x18ba73['ok']){const _0x41ee87=await _0x18ba73['json']()['catch'](()=>({}));throw new Error(_0x41ee87['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x18ba73['statusText']);}return await _0x18ba73['json']();},async 'searchJiraIssues'(_0x3173bf,_0x417b9c=0x14){const _0x471bbf=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3173bf,'maxResults':_0x417b9c})});if(!_0x471bbf['ok']){const _0x57e5d4=await _0x471bbf['json']()['catch'](()=>({}));throw new Error(_0x57e5d4['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x471bbf['statusText']);}return await _0x471bbf['json']();},async 'postJiraComment'(_0x49a07f,_0x5e15d9){const _0x1f2193=await fetch(API_BASE+'/jira/issues/'+_0x49a07f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5e15d9})});if(!_0x1f2193['ok']){const _0x5ebf41=await _0x1f2193['json']()['catch'](()=>({}));throw new Error(_0x5ebf41['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1f2193['statusText']);}return await _0x1f2193['json']();},async 'getJiraComments'(_0xc9c761){const _0x33ad20=await fetch(API_BASE+'/jira/issues/'+_0xc9c761+'/comments');if(!_0x33ad20['ok']){const _0x21f74d=await _0x33ad20['json']()['catch'](()=>({}));throw new Error(_0x21f74d['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x33ad20['statusText']);}return await _0x33ad20['json']();},async 'promptParameter'({environment:_0x2b2bb8,command:_0x1ea5ec,parser:parser='json'}){const _0x4e42a3=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2b2bb8,'command':_0x1ea5ec,'parser':parser})});if(!_0x4e42a3['ok']){const _0x612e8=await _0x4e42a3['json']()['catch'](()=>({}));throw new Error(_0x612e8['message']||_0x612e8['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4e42a3['statusText']);}return await _0x4e42a3['json']();},async 'promptParameterStream'(_0x34d05d,_0x98551a){const _0x260b00=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x34d05d)});if(!_0x260b00['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x260b00['statusText']);const _0x269e74=_0x260b00['body']['getReader'](),_0x26f819=new TextDecoder();let _0xb58b1b='';return new Promise((_0x4f9347,_0x2c2ef4)=>{const _0x252880=async()=>{try{const {done:_0x365220,value:_0x3a04b8}=await _0x269e74['read']();if(_0x365220)return;_0xb58b1b+=_0x26f819['decode'](_0x3a04b8,{'stream':!![]});const _0x43b31d=_0xb58b1b['split']('\x0a\x0a');_0xb58b1b=_0x43b31d['pop']()||'';for(const _0x2c00c1 of _0x43b31d){if(!_0x2c00c1['trim']())continue;const _0x481944=_0x2c00c1['split']('\x0a');let _0x2047de='message',_0x2a6dd5='';for(const _0x4e1308 of _0x481944){if(_0x4e1308['startsWith']('event:'))_0x2047de=_0x4e1308['substring'](0x6)['trim']();else _0x4e1308['startsWith']('data:')&&(_0x2a6dd5=_0x4e1308['substring'](0x5)['trim']());}if(!_0x2a6dd5)continue;try{const _0x50b80f=JSON['parse'](_0x2a6dd5);if(_0x2047de==='progress'&&_0x98551a)_0x98551a(_0x50b80f['stage'],_0x50b80f['message']);else{if(_0x2047de==='result'){_0x4f9347(_0x50b80f);return;}else{if(_0x2047de==='error'){let _0x5351bc=_0x50b80f['message']||_0x50b80f['error']||'Prompt\x20command\x20failed';_0x50b80f['rawOutput']&&(_0x5351bc+='\x0a\x0aRaw\x20output:\x0a'+_0x50b80f['rawOutput']);_0x2c2ef4(new Error(_0x5351bc));return;}}}}catch(_0x100ee8){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x100ee8),console['error']('Event\x20type:',_0x2047de),console['error']('Event\x20data:',_0x2a6dd5),console['error']('First\x20200\x20chars:',_0x2a6dd5['substring'](0x0,0xc8)),_0x2c2ef4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x100ee8['message']+'\x0a\x0aData:\x20'+_0x2a6dd5['substring'](0x0,0x1f4)));return;}}_0x252880();}catch(_0xa2648b){_0x2c2ef4(_0xa2648b);}};_0x252880();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x14d487){const _0x1f3bba=await fetch(''+API_BASE+_0x14d487);if(!_0x1f3bba['ok']){const _0x4eb522=await _0x1f3bba['json']()['catch'](()=>({'error':_0x1f3bba['statusText']})),_0x55b9c6=new Error(_0x4eb522['error']||_0x4eb522['message']||_0x1f3bba['statusText']);if(_0x4eb522['detail']!==undefined)_0x55b9c6['detail']=_0x4eb522['detail'];throw _0x55b9c6;}return await _0x1f3bba['json']();},async 'post'(_0x3b05f6,_0x1403a9){const _0x566cc9=await fetch(''+API_BASE+_0x3b05f6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1403a9)});if(!_0x566cc9['ok']){const _0x3e053d=await _0x566cc9['json']()['catch'](()=>({'error':_0x566cc9['statusText']})),_0x4b7cbe=new Error(_0x3e053d['error']||_0x3e053d['message']||_0x566cc9['statusText']);if(_0x3e053d['detail']!==undefined)_0x4b7cbe['detail']=_0x3e053d['detail'];throw _0x4b7cbe;}return await _0x566cc9['json']();},async 'put'(_0x16ebc3,_0x2730cd){const _0x131d7e=await fetch(''+API_BASE+_0x16ebc3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2730cd)});if(!_0x131d7e['ok']){const _0x3ad290=await _0x131d7e['json']()['catch'](()=>({'error':_0x131d7e['statusText']})),_0x2c8228=new Error(_0x3ad290['error']||_0x3ad290['message']||_0x131d7e['statusText']);if(_0x3ad290['detail']!==undefined)_0x2c8228['detail']=_0x3ad290['detail'];throw _0x2c8228;}return await _0x131d7e['json']();},async 'delete'(_0x589bc3,_0x3f2e65){const _0x35070f={'method':'DELETE'};_0x3f2e65&&(_0x35070f['headers']={'Content-Type':'application/json'},_0x35070f['body']=JSON['stringify'](_0x3f2e65));const _0x35c6be=await fetch(''+API_BASE+_0x589bc3,_0x35070f);if(!_0x35c6be['ok']){const _0x36fe00=await _0x35c6be['json']()['catch'](()=>({'error':_0x35c6be['statusText']})),_0x362c38=new Error(_0x36fe00['error']||_0x36fe00['message']||_0x35c6be['statusText']);if(_0x36fe00['detail']!==undefined)_0x362c38['detail']=_0x36fe00['detail'];throw _0x362c38;}return await _0x35c6be['json']();},async 'getSkills'(){const _0x127716=await fetch(API_BASE+'/skills');if(!_0x127716['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x127716['statusText']);return await _0x127716['json']();},async 'getSkill'(_0x408e0d){const _0x53d4f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x408e0d));if(!_0x53d4f0['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x53d4f0['statusText']);return await _0x53d4f0['json']();},async 'createSkill'(_0x25a0b2){const _0x5043c5=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a0b2)});if(!_0x5043c5['ok']){const _0x58b202=await _0x5043c5['json']()['catch'](()=>({'error':_0x5043c5['statusText']})),_0x236229=new Error(_0x58b202['error']||_0x58b202['message']||_0x5043c5['statusText']);if(_0x58b202['detail']!==undefined)_0x236229['detail']=_0x58b202['detail'];throw _0x236229;}return await _0x5043c5['json']();},async 'updateSkill'(_0x53192e,_0xce393f){const _0x86158e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53192e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xce393f)});if(!_0x86158e['ok']){const _0x63da52=await _0x86158e['json']()['catch'](()=>({'error':_0x86158e['statusText']})),_0x15adea=new Error(_0x63da52['error']||_0x63da52['message']||_0x86158e['statusText']);if(_0x63da52['detail']!==undefined)_0x15adea['detail']=_0x63da52['detail'];throw _0x15adea;}return await _0x86158e['json']();},async 'deleteSkill'(_0x15ebf8){const _0x232f17=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x15ebf8),{'method':'DELETE'});if(!_0x232f17['ok']){const _0x17d25b=await _0x232f17['json']()['catch'](()=>({'error':_0x232f17['statusText']})),_0x2cfb3a=new Error(_0x17d25b['error']||_0x17d25b['message']||_0x232f17['statusText']);if(_0x17d25b['detail']!==undefined)_0x2cfb3a['detail']=_0x17d25b['detail'];throw _0x2cfb3a;}return await _0x232f17['json']();},async 'getSkillFile'(_0x1552a0,_0x4f9952){const _0x417347=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1552a0)+'/files/'+_0x4f9952);if(!_0x417347['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x417347['statusText']);return await _0x417347['json']();},async 'saveSkillFile'(_0x23cb07,_0xdc8d0a,_0x4d9f59){const _0x251a20=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23cb07)+'/files/'+_0xdc8d0a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4d9f59})});if(!_0x251a20['ok']){const _0x1f2a74=await _0x251a20['json']()['catch'](()=>({'error':_0x251a20['statusText']})),_0x39d00b=new Error(_0x1f2a74['error']||_0x1f2a74['message']||_0x251a20['statusText']);if(_0x1f2a74['detail']!==undefined)_0x39d00b['detail']=_0x1f2a74['detail'];throw _0x39d00b;}return await _0x251a20['json']();},async 'deleteSkillFile'(_0x1e9937,_0x1b78e5){const _0xcf7768=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e9937)+'/files/'+_0x1b78e5,{'method':'DELETE'});if(!_0xcf7768['ok']){const _0x12b9b7=await _0xcf7768['json']()['catch'](()=>({'error':_0xcf7768['statusText']})),_0x48a8ef=new Error(_0x12b9b7['error']||_0x12b9b7['message']||_0xcf7768['statusText']);if(_0x12b9b7['detail']!==undefined)_0x48a8ef['detail']=_0x12b9b7['detail'];throw _0x48a8ef;}return await _0xcf7768['json']();},async 'pullSkills'(){const _0x12c851=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x12c851['ok']){const _0xc622b0=await _0x12c851['json']()['catch'](()=>({'error':_0x12c851['statusText']})),_0x41753a=new Error(_0xc622b0['error']||_0xc622b0['message']||_0x12c851['statusText']);if(_0xc622b0['detail']!==undefined)_0x41753a['detail']=_0xc622b0['detail'];throw _0x41753a;}return await _0x12c851['json']();},async 'commitSkills'(_0x406947,_0x1e0798={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1e0798,_0x279c56=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x406947,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x279c56['ok']){const _0x2003df=await _0x279c56['json']()['catch'](()=>({'error':_0x279c56['statusText']})),_0x34740f=new Error(_0x2003df['error']||_0x2003df['message']||_0x279c56['statusText']);if(_0x2003df['detail']!==undefined)_0x34740f['detail']=_0x2003df['detail'];throw _0x34740f;}return await _0x279c56['json']();},async 'discardSkillsChanges'(){const _0x4d1f01=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4d1f01['ok']){const _0x5cae9c=await _0x4d1f01['json']()['catch'](()=>({'error':_0x4d1f01['statusText']})),_0x355799=new Error(_0x5cae9c['error']||_0x5cae9c['message']||_0x4d1f01['statusText']);if(_0x5cae9c['detail']!==undefined)_0x355799['detail']=_0x5cae9c['detail'];throw _0x355799;}return await _0x4d1f01['json']();},async 'getSkillCatalog'(){const _0x39218c=await fetch(API_BASE+'/external-skills/catalog');if(!_0x39218c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x39218c['statusText']);return await _0x39218c['json']();},async 'getImportedSkillsRegistry'(){const _0x205478=await fetch(API_BASE+'/external-skills/registry');if(!_0x205478['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x205478['statusText']);return await _0x205478['json']();},async 'importCatalogSkill'(_0x23e1a5){const _0x410957=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x23e1a5})});if(!_0x410957['ok']){const _0x8bcb78=await _0x410957['json']()['catch'](()=>({'error':_0x410957['statusText']})),_0x3cf808=new Error(_0x8bcb78['error']||_0x8bcb78['message']||_0x410957['statusText']);if(_0x8bcb78['detail']!==undefined)_0x3cf808['detail']=_0x8bcb78['detail'];throw _0x3cf808;}return await _0x410957['json']();},async 'importSkillFromGit'(_0x5487bb,_0x5f1109,_0x593d8f='main',_0x30a9c3=null){const _0x53cf26=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5487bb,'skillPath':_0x5f1109,'branch':_0x593d8f,'skillId':_0x30a9c3})});if(!_0x53cf26['ok']){const _0x148487=await _0x53cf26['json']()['catch'](()=>({'error':_0x53cf26['statusText']})),_0x395fc0=new Error(_0x148487['error']||_0x148487['message']||_0x53cf26['statusText']);if(_0x148487['detail']!==undefined)_0x395fc0['detail']=_0x148487['detail'];throw _0x395fc0;}return await _0x53cf26['json']();},async 'probeMarketplace'(_0x97c56e,_0x122d9f='main'){const _0x33dbd3=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x97c56e,'branch':_0x122d9f})});if(!_0x33dbd3['ok']){const _0x5e52df=await _0x33dbd3['json']()['catch'](()=>({'error':_0x33dbd3['statusText']})),_0x3350f6=new Error(_0x5e52df['error']||_0x5e52df['message']||_0x33dbd3['statusText']);if(_0x5e52df['detail']!==undefined)_0x3350f6['detail']=_0x5e52df['detail'];throw _0x3350f6;}return await _0x33dbd3['json']();},async 'importMarketplaceBundle'(_0x21304a,_0x49f90a,_0x2a2e15,_0x254128=null){const _0x13a0c6=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x21304a,'branch':_0x49f90a,'bundleId':_0x2a2e15,'selectedSkills':_0x254128})});if(!_0x13a0c6['ok']){const _0x4384ae=await _0x13a0c6['json']()['catch'](()=>({'error':_0x13a0c6['statusText']})),_0x2362ae=new Error(_0x4384ae['error']||_0x4384ae['message']||_0x13a0c6['statusText']);if(_0x4384ae['detail']!==undefined)_0x2362ae['detail']=_0x4384ae['detail'];throw _0x2362ae;}return await _0x13a0c6['json']();},async 'importSkillFromFolder'(_0x1c57b7,_0x242d83=null){const _0x17238b=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x1c57b7,'skillId':_0x242d83})});if(!_0x17238b['ok']){const _0x373f47=await _0x17238b['json']()['catch'](()=>({'error':_0x17238b['statusText']})),_0x18b584=new Error(_0x373f47['error']||_0x373f47['message']||_0x17238b['statusText']);if(_0x373f47['detail']!==undefined)_0x18b584['detail']=_0x373f47['detail'];throw _0x18b584;}return await _0x17238b['json']();},async 'importSkillFromNpm'(_0x3e570b,_0x5aaa27='latest',_0x7dda1c=null,_0x1dc2dc=null){const _0x4277cd=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3e570b,'version':_0x5aaa27,'skillId':_0x7dda1c,'registry':_0x1dc2dc})});if(!_0x4277cd['ok']){const _0x89db58=await _0x4277cd['json']()['catch'](()=>({'error':_0x4277cd['statusText']})),_0x44f77a=new Error(_0x89db58['error']||_0x89db58['message']||_0x4277cd['statusText']);if(_0x89db58['detail']!==undefined)_0x44f77a['detail']=_0x89db58['detail'];throw _0x44f77a;}return await _0x4277cd['json']();},async 'checkSkillUpdates'(_0x159559){const _0x869386=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x159559)+'/check-updates',{'method':'POST'});if(!_0x869386['ok']){const _0x24a984=await _0x869386['json']()['catch'](()=>({'error':_0x869386['statusText']})),_0xad95c1=new Error(_0x24a984['error']||_0x24a984['message']||_0x869386['statusText']);if(_0x24a984['detail']!==undefined)_0xad95c1['detail']=_0x24a984['detail'];throw _0xad95c1;}return await _0x869386['json']();},async 'updateExternalSkill'(_0x78ddf8){const _0x531cfa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x78ddf8)+'/update',{'method':'POST'});if(!_0x531cfa['ok']){const _0x326e4e=await _0x531cfa['json']()['catch'](()=>({'error':_0x531cfa['statusText']})),_0x3d3303=new Error(_0x326e4e['error']||_0x326e4e['message']||_0x531cfa['statusText']);if(_0x326e4e['detail']!==undefined)_0x3d3303['detail']=_0x326e4e['detail'];throw _0x3d3303;}return await _0x531cfa['json']();},async 'updateSkillFlags'(_0x3ed742,_0x4d375e){const _0x2eef7e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3ed742)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4d375e})});if(!_0x2eef7e['ok']){const _0x502b17=await _0x2eef7e['json']()['catch'](()=>({'error':_0x2eef7e['statusText']})),_0x1579c5=new Error(_0x502b17['error']||_0x502b17['message']||_0x2eef7e['statusText']);if(_0x502b17['detail']!==undefined)_0x1579c5['detail']=_0x502b17['detail'];throw _0x1579c5;}return await _0x2eef7e['json']();},async 'removeFromImportedRegistry'(_0x2ede02){const _0x29284c=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2ede02)+'/registry',{'method':'DELETE'});if(!_0x29284c['ok']){const _0x21ee20=await _0x29284c['json']()['catch'](()=>({'error':_0x29284c['statusText']})),_0xa22a52=new Error(_0x21ee20['error']||_0x21ee20['message']||_0x29284c['statusText']);if(_0x21ee20['detail']!==undefined)_0xa22a52['detail']=_0x21ee20['detail'];throw _0xa22a52;}return await _0x29284c['json']();},async 'getTeams'(){const _0x5c181c=await fetch(API_BASE+'/teams');if(!_0x5c181c['ok']){const _0x4fac36=await _0x5c181c['json']()['catch'](()=>({'message':_0x5c181c['statusText']}));throw new Error(_0x4fac36['message']||'Failed\x20to\x20get\x20teams');}return await _0x5c181c['json']();},async 'getTeam'(_0xfe4029){const _0x571daf=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xfe4029));if(!_0x571daf['ok']){const _0x4efedd=await _0x571daf['json']()['catch'](()=>({'message':_0x571daf['statusText']}));throw new Error(_0x4efedd['message']||'Failed\x20to\x20get\x20team');}return await _0x571daf['json']();},async 'createTeam'(_0x470329){const _0x3fd96f=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x470329)});if(!_0x3fd96f['ok']){const _0x20e8da=await _0x3fd96f['json']()['catch'](()=>({'message':_0x3fd96f['statusText']}));throw new Error(_0x20e8da['message']||'Failed\x20to\x20create\x20team');}return await _0x3fd96f['json']();},async 'updateTeam'(_0x5e6ca3,_0x2d8711){const _0x429353=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5e6ca3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d8711)});if(!_0x429353['ok']){const _0x328f8f=await _0x429353['json']()['catch'](()=>({'message':_0x429353['statusText']}));throw new Error(_0x328f8f['message']||'Failed\x20to\x20update\x20team');}return await _0x429353['json']();},async 'deleteTeam'(_0x1ef011){const _0x7c5e27=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1ef011),{'method':'DELETE'});if(!_0x7c5e27['ok']){const _0x35cf6f=await _0x7c5e27['json']()['catch'](()=>({'message':_0x7c5e27['statusText']}));throw new Error(_0x35cf6f['message']||'Failed\x20to\x20delete\x20team');}return await _0x7c5e27['json']();},async 'addTeamMember'(_0x39a520,_0x2144ee){const _0x2e1358=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x39a520)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2144ee})});if(!_0x2e1358['ok']){const _0x599f03=await _0x2e1358['json']()['catch'](()=>({'message':_0x2e1358['statusText']}));throw new Error(_0x599f03['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2e1358['json']();},async 'removeTeamMember'(_0x24a4bf,_0x5f73bb){const _0x48d35e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x24a4bf)+'/members/'+encodeURIComponent(_0x5f73bb),{'method':'DELETE'});if(!_0x48d35e['ok']){const _0x49024a=await _0x48d35e['json']()['catch'](()=>({'message':_0x48d35e['statusText']}));throw new Error(_0x49024a['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x48d35e['json']();},async 'getBindings'(_0x186c3e={}){const _0x3f8f70=new URLSearchParams();if(_0x186c3e['resource_type'])_0x3f8f70['set']('resource_type',_0x186c3e['resource_type']);if(_0x186c3e['resource_id'])_0x3f8f70['set']('resource_id',_0x186c3e['resource_id']);if(_0x186c3e['subject_type'])_0x3f8f70['set']('subject_type',_0x186c3e['subject_type']);if(_0x186c3e['subject_id'])_0x3f8f70['set']('subject_id',_0x186c3e['subject_id']);const _0x18a182=_0x3f8f70['toString'](),_0x5b3791=await fetch(API_BASE+'/bindings'+(_0x18a182?'?'+_0x18a182:''));if(!_0x5b3791['ok']){const _0x34cbfd=await _0x5b3791['json']()['catch'](()=>({'message':_0x5b3791['statusText']}));throw new Error(_0x34cbfd['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5b3791['json']();},async 'createBinding'(_0x3df450){const _0x56cc7b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3df450)});if(!_0x56cc7b['ok']){const _0x5c2722=await _0x56cc7b['json']()['catch'](()=>({'message':_0x56cc7b['statusText']}));throw new Error(_0x5c2722['message']||'Failed\x20to\x20create\x20binding');}return await _0x56cc7b['json']();},async 'updateBinding'(_0x39f842,_0x4b2940){const _0x4810ba=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x39f842),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b2940)});if(!_0x4810ba['ok']){const _0x6c5603=await _0x4810ba['json']()['catch'](()=>({'message':_0x4810ba['statusText']}));throw new Error(_0x6c5603['message']||'Failed\x20to\x20update\x20binding');}return await _0x4810ba['json']();},async 'deleteBinding'(_0x4d6095){const _0x47f4cc=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4d6095),{'method':'DELETE'});if(!_0x47f4cc['ok']){const _0x13689e=await _0x47f4cc['json']()['catch'](()=>({'message':_0x47f4cc['statusText']}));throw new Error(_0x13689e['message']||'Failed\x20to\x20delete\x20binding');}return await _0x47f4cc['json']();},async 'getRoleDefinitions'(){const _0x27fa26=await fetch(API_BASE+'/roles');if(!_0x27fa26['ok']){const _0x2c88de=await _0x27fa26['json']()['catch'](()=>({'message':_0x27fa26['statusText']}));throw new Error(_0x2c88de['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x27fa26['json']();},async 'getRoleDefinition'(_0x17d7c2){const _0x3ff9c5=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x17d7c2));if(!_0x3ff9c5['ok']){const _0x332896=await _0x3ff9c5['json']()['catch'](()=>({'message':_0x3ff9c5['statusText']}));throw new Error(_0x332896['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3ff9c5['json']();},async 'createRoleDefinition'(_0x5935fe){const _0x16084d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5935fe)});if(!_0x16084d['ok']){const _0x45cbb6=await _0x16084d['json']()['catch'](()=>({'message':_0x16084d['statusText']}));throw new Error(_0x45cbb6['message']||_0x45cbb6['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x16084d['json']();},async 'updateRoleDefinition'(_0x2f1ff0,_0x53d984){const _0x12cc6b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2f1ff0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53d984)});if(!_0x12cc6b['ok']){const _0x479923=await _0x12cc6b['json']()['catch'](()=>({'message':_0x12cc6b['statusText']}));throw new Error(_0x479923['message']||_0x479923['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x12cc6b['json']();},async 'deleteRoleDefinition'(_0x411bcf){const _0x2fcd8f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x411bcf),{'method':'DELETE'});if(!_0x2fcd8f['ok']){const _0x4e3e7c=await _0x2fcd8f['json']()['catch'](()=>({'message':_0x2fcd8f['statusText']}));throw new Error(_0x4e3e7c['message']||_0x4e3e7c['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2fcd8f['json']();},async 'getAvailablePermissions'(){const _0x3bcfee=await fetch(API_BASE+'/roles/available-permissions');if(!_0x3bcfee['ok']){const _0x1a1fde=await _0x3bcfee['json']()['catch'](()=>({'message':_0x3bcfee['statusText']}));throw new Error(_0x1a1fde['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x3bcfee['json']();},async 'getGitProviderAllowedTeams'(_0x6a5bfa){const _0x3f230d=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x6a5bfa)+'/allowed-teams');if(!_0x3f230d['ok']){const _0xef43ee=await _0x3f230d['json']()['catch'](()=>({'message':_0x3f230d['statusText']}));throw new Error(_0xef43ee['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3f230d['json']();},async 'setGitProviderAllowedTeams'(_0x5933da,_0x5598ac){const _0x3f0ef0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5933da)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x5598ac})});if(!_0x3f0ef0['ok']){const _0x37aebb=await _0x3f0ef0['json']()['catch'](()=>({'message':_0x3f0ef0['statusText']}));throw new Error(_0x37aebb['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3f0ef0['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 _0x41acc0=toastState['baseBottom'];toastState['toasts']['forEach'](_0x11b6c5=>{_0x11b6c5['el']['style']['bottom']=_0x41acc0+'px';const _0x33ae4b=_0x11b6c5['el']['offsetHeight']||toastState['defaultHeight'];_0x41acc0+=_0x33ae4b+toastState['gap'];});});}function removeToastById(_0x418c7d){const _0x27f87f=toastState['toasts']['findIndex'](_0x1cd949=>_0x1cd949['id']===_0x418c7d);if(_0x27f87f===-0x1)return;const _0x514701=toastState['toasts'][_0x27f87f];if(_0x514701['timeoutId'])clearTimeout(_0x514701['timeoutId']);_0x514701['el']['classList']['remove']('show'),setTimeout(()=>_0x514701['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x27f87f,0x1),repositionAllToasts();}function registerToast(_0x2d41fa){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d41fa),repositionAllToasts(),_0x2d41fa['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(_0x4dcba6){if(_0x4dcba6===null||_0x4dcba6===undefined)return'';return String(_0x4dcba6)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xb987d7,_0x16877a){if(_0xb987d7&&typeof _0xb987d7==='object'&&!Array['isArray'](_0xb987d7))return{'code':typeof _0xb987d7['text']==='string'?_0xb987d7['text']:'','language':typeof _0xb987d7['lang']==='string'?_0xb987d7['lang']:''};return{'code':typeof _0xb987d7==='string'?_0xb987d7:'','language':typeof _0x16877a==='string'?_0x16877a:''};}function buildMermaidBlock(_0x4c1d81){const _0x15c291=String(_0x4c1d81||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x15c291))+'\x22>'+escapeHtmlValue(_0x15c291)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0xe38e4=new marked['Renderer'](),_0x3a64f3=_0xe38e4['code']['bind'](_0xe38e4);return _0xe38e4['code']=function(_0x45cf1a,_0x4d2acb,..._0x1a8c6f){const {code:_0x419f32,language:_0x11a2c5}=getMarkdownCodeBlockPayload(_0x45cf1a,_0x4d2acb),_0x3a8335=String(_0x11a2c5||'')['trim']()['toLowerCase']();if(_0x3a8335==='mermaid')return buildMermaidBlock(_0x419f32);const _0xa3fd30=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xa3fd30&&_0x3a8335)try{const _0x2e63c9=_0xa3fd30['getLanguage'](_0x3a8335)?_0x3a8335:'plaintext',_0x3e1308=_0xa3fd30['highlight'](_0x419f32,{'language':_0x2e63c9})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3a8335)+'\x22>'+_0x3e1308+'</code></pre>';}catch(_0x426494){console['error']('Syntax\x20highlighting\x20error:',_0x426494);}return _0x3a64f3(_0x45cf1a,_0x4d2acb,..._0x1a8c6f);},sharedMarkedRenderer=_0xe38e4,_0xe38e4;}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 _0x259d8a=window['mermaid'];if(!_0x259d8a||typeof _0x259d8a['initialize']!=='function')return _0x259d8a||null;return _0x259d8a['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x259d8a;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1fec16,_0x91595d)=>{const _0x38ee97=()=>_0x1fec16(configureMermaidInstance()),_0xb59255=()=>{mermaidLoadPromise=null,_0x91595d(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x2028fd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x2028fd&&(_0x2028fd=document['createElement']('script'),_0x2028fd['id']=MERMAID_SCRIPT_ID,_0x2028fd['src']=MERMAID_SCRIPT_SRC,_0x2028fd['async']=!![],document['head']['appendChild'](_0x2028fd));if(window['mermaid']){_0x38ee97();return;}_0x2028fd['addEventListener']('load',_0x38ee97,{'once':!![]}),_0x2028fd['addEventListener']('error',_0xb59255,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x513c92){const _0x4db495=_0x513c92['getAttribute']('data-mermaid-source');if(!_0x4db495)return null;let _0x16bfc4=_0x4db495;try{_0x16bfc4=decodeURIComponent(_0x4db495);}catch{}return _0x513c92['textContent']=_0x16bfc4,_0x513c92['removeAttribute']('data-processed'),_0x513c92['removeAttribute']('aria-roledescription'),_0x513c92['removeAttribute']('role'),_0x513c92['removeAttribute']('aria-label'),_0x16bfc4;}function collectMermaidNodes(_0x5c99b1,_0x4c07bd){if(!(_0x5c99b1 instanceof Element))return;_0x5c99b1['matches']('.mermaid[data-mermaid-source]')&&_0x4c07bd['add'](_0x5c99b1),_0x5c99b1['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xd8d76=>{_0x4c07bd['add'](_0xd8d76);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x431305=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x10c9ab=>setTimeout(_0x10c9ab,0x0);_0x431305(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x41f0a7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x41f0a7);});});}function queueMermaidRender(_0x5631fa){const _0x6178f7=new Set();_0x5631fa instanceof Document||_0x5631fa instanceof DocumentFragment?_0x5631fa['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3fd9cf=>_0x6178f7['add'](_0x3fd9cf)):collectMermaidNodes(_0x5631fa,_0x6178f7);if(_0x6178f7['size']===0x0)return;_0x6178f7['forEach'](_0x57678a=>pendingMermaidNodes['add'](_0x57678a)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x16c604=Array['from'](pendingMermaidNodes)['filter'](_0x2df634=>_0x2df634['isConnected']);pendingMermaidNodes['clear']();if(_0x16c604['length']===0x0)return;const _0x239403=await loadMermaid();if(!_0x239403)return;configureMermaidInstance();const _0x5afae8=getMermaidTheme();for(const _0x17b2bc of _0x16c604){const _0x1f0956=_0x17b2bc['getAttribute']('data-mermaid-source');if(!_0x1f0956)continue;const _0x475cbe=_0x17b2bc['getAttribute']('data-processed')==='true';if(_0x475cbe&&_0x17b2bc['dataset']['mermaidTheme']===_0x5afae8)continue;restoreMermaidSource(_0x17b2bc);try{if(typeof _0x239403['run']==='function')await _0x239403['run']({'nodes':[_0x17b2bc]});else typeof _0x239403['init']==='function'&&_0x239403['init'](undefined,[_0x17b2bc]);_0x17b2bc['dataset']['mermaidTheme']=_0x5afae8,delete _0x17b2bc['dataset']['mermaidError'];}catch(_0x560638){console['error']('Mermaid\x20render\x20failed:',_0x560638),restoreMermaidSource(_0x17b2bc),_0x17b2bc['dataset']['mermaidError']='true',delete _0x17b2bc['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x25cce2=>{_0x25cce2['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x25cce2);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x9d43cb=>{_0x9d43cb['forEach'](_0x3a7ec4=>{_0x3a7ec4['addedNodes']['forEach'](_0x2ebe92=>{_0x2ebe92['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2ebe92);});});}),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'(_0x5a9a0d){const _0x421f0=new Date(_0x5a9a0d),_0x4d47f0=new Date(),_0x5b1c9f=_0x4d47f0-_0x421f0,_0x2bc75d=Math['floor'](_0x5b1c9f/0x3e8),_0xd80f1a=Math['floor'](_0x2bc75d/0x3c),_0x1bcc7b=Math['floor'](_0xd80f1a/0x3c),_0x135461=Math['floor'](_0x1bcc7b/0x18);if(_0x2bc75d<0x3c)return'now';if(_0xd80f1a<0x3c)return _0xd80f1a+'m\x20ago';if(_0x1bcc7b<0x18)return _0x1bcc7b+'h\x20ago';return _0x135461+'d\x20ago';},'getStatusIcon'(_0x5755ef){switch(_0x5755ef){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a53fe){switch(_0x4a53fe){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'(_0x11b323,_0x8a212f=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x5836b1={};_0x5836b1['text/plain']=new Blob([_0x11b323],{'type':'text/plain'});_0x8a212f&&(_0x5836b1['text/html']=new Blob([_0x8a212f],{'type':'text/html'}));const _0x49189=new ClipboardItem(_0x5836b1);return await navigator['clipboard']['write']([_0x49189]),!![];}catch(_0x3efc18){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3efc18);}try{const _0x509398=_0x1ed9ea=>{_0x1ed9ea['preventDefault'](),_0x1ed9ea['clipboardData']['setData']('text/plain',_0x11b323),_0x8a212f&&_0x1ed9ea['clipboardData']['setData']('text/html',_0x8a212f);};document['addEventListener']('copy',_0x509398);const _0x36c9a6=document['execCommand']('copy');document['removeEventListener']('copy',_0x509398);if(_0x36c9a6)return!![];}catch(_0x50d355){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x50d355);}try{const _0x2c14b4=document['createElement']('textarea');_0x2c14b4['value']=_0x11b323,_0x2c14b4['style']['position']='fixed',_0x2c14b4['style']['opacity']='0',_0x2c14b4['style']['pointerEvents']='none',document['body']['appendChild'](_0x2c14b4),_0x2c14b4['select']();const _0x4a4fc4=document['execCommand']('copy');return document['body']['removeChild'](_0x2c14b4),_0x4a4fc4;}catch(_0x269cbb){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x269cbb),![];}},'showToast'(_0x2bff1c,_0x1ad4ed='info'){const _0xc23dbb=getNextToastId(),_0x2e6f80=document['createElement']('div');_0x2e6f80['className']='toast\x20toast-'+_0x1ad4ed,_0x2e6f80['textContent']=_0x2bff1c,_0x2e6f80['dataset']['toastId']=_0xc23dbb,document['body']['appendChild'](_0x2e6f80);const _0x21b883=_0x1ad4ed==='error'?0x2710:0xbb8,_0x1a417b=setTimeout(()=>{removeToastById(_0xc23dbb);},_0x21b883),_0x4e2553={'id':_0xc23dbb,'el':_0x2e6f80,'timeoutId':_0x1a417b};return registerToast(_0x4e2553),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2e6f80['classList']['add']('show');});}),_0xc23dbb;},'showError'(_0x16010e){console['error'](_0x16010e);const _0x2d5180=typeof _0x16010e==='string'?_0x16010e:_0x16010e['message']||'An\x20error\x20occurred';this['showToast'](_0x2d5180,'error');},'showSuccess'(_0x1e65c1){this['showToast'](_0x1e65c1,'success');},'capitalize'(_0x3d68c4){if(!_0x3d68c4)return'';return _0x3d68c4['charAt'](0x0)['toUpperCase']()+_0x3d68c4['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x1dd914){return escapeHtmlValue(_0x1dd914);},'ansiToHtml'(_0xf265fb){if(_0xf265fb===null||_0xf265fb===undefined)return'';let _0x47d102=this['escapeHtml'](_0xf265fb);const _0x2911a8={'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'},_0x46ea99={'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 _0x287f0a=0x0;return _0x47d102=_0x47d102['replace'](/\x1b\[([0-9;]*)m/g,(_0x2ddead,_0x45f8a3)=>{if(!_0x45f8a3||_0x45f8a3==='0'){const _0x43e9c0='</span>'['repeat'](_0x287f0a);return _0x287f0a=0x0,_0x43e9c0;}const _0x724180=_0x45f8a3['split'](';'),_0x4fc895=[];for(const _0xfdd664 of _0x724180){if(_0xfdd664==='1')_0x4fc895['push']('font-weight:bold');else{if(_0xfdd664==='2')_0x4fc895['push']('opacity:0.7');else{if(_0xfdd664==='3')_0x4fc895['push']('font-style:italic');else{if(_0xfdd664==='4')_0x4fc895['push']('text-decoration:underline');else{if(_0xfdd664==='9')_0x4fc895['push']('text-decoration:line-through');else{if(_0x2911a8[_0xfdd664])_0x4fc895['push']('color:'+_0x2911a8[_0xfdd664]);else{if(_0x46ea99[_0xfdd664])_0x4fc895['push']('background-color:'+_0x46ea99[_0xfdd664]);}}}}}}}if(_0x4fc895['length']>0x0)return _0x287f0a++,'<span\x20style=\x22'+_0x4fc895['join'](';')+'\x22>';return'';}),_0x47d102+='</span>'['repeat'](_0x287f0a),_0x47d102=_0x47d102['replace'](/\\u001b\[([0-9;]*)m/g,(_0x79a03d,_0x226774)=>{if(!_0x226774||_0x226774==='0')return'';const _0x559830=_0x226774['split'](';'),_0x2bcb67=[];for(const _0x448594 of _0x559830){if(_0x448594==='1')_0x2bcb67['push']('font-weight:bold');else{if(_0x2911a8[_0x448594])_0x2bcb67['push']('color:'+_0x2911a8[_0x448594]);else{if(_0x46ea99[_0x448594])_0x2bcb67['push']('background-color:'+_0x46ea99[_0x448594]);}}}if(_0x2bcb67['length']>0x0)return'<span\x20style=\x22'+_0x2bcb67['join'](';')+'\x22>';return'';}),_0x47d102;},'showModal'({title:_0x1ec215,content:_0x334417,buttons:buttons=[]}){const _0x2fb88c='\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'](_0x1ec215)+'</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'+_0x334417+'\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']((_0xdc8c3c,_0x241ea0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0xdc8c3c['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x241ea0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0xdc8c3c['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',_0x51fe74=document['createElement']('div');_0x51fe74['id']='utils-modal',_0x51fe74['className']='modal',_0x51fe74['innerHTML']=_0x2fb88c,document['body']['appendChild'](_0x51fe74);const _0x534296=document['getElementById']('utils-modal-close');_0x534296&&_0x534296['addEventListener']('click',()=>this['hideModal']());const _0x233a93=_0x51fe74['querySelectorAll']('[data-btn-index]');_0x233a93['forEach'](_0x72c7ca=>{const _0x586b1b=parseInt(_0x72c7ca['dataset']['btnIndex']);buttons[_0x586b1b]?.['onClick']&&_0x72c7ca['addEventListener']('click',buttons[_0x586b1b]['onClick']);});const _0x537d27=document['getElementById']('utils-modal-overlay');_0x537d27&&_0x537d27['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4d9119=document['getElementById']('utils-modal');_0x4d9119&&_0x4d9119['remove']();},'parseKeyValuePairs'(_0x3ed8af){const _0x5879df={};if(!_0x3ed8af)return _0x5879df;return _0x3ed8af['split'](/\r?\n/)['map'](_0x142a67=>_0x142a67['trim']())['filter'](Boolean)['forEach'](_0x3a217d=>{const _0x2e9c83=_0x3a217d['indexOf']('=');if(_0x2e9c83>0x0){const _0x2f7399=_0x3a217d['slice'](0x0,_0x2e9c83)['trim'](),_0x29b0fc=_0x3a217d['slice'](_0x2e9c83+0x1)['trim']();if(_0x2f7399)_0x5879df[_0x2f7399]=_0x29b0fc;}}),_0x5879df;},'debounce'(_0xe9f9da,_0x2de8f9=0xfa){let _0xaa0885=null;return(..._0x34cc3d)=>{clearTimeout(_0xaa0885),_0xaa0885=setTimeout(()=>_0xe9f9da['apply'](this,_0x34cc3d),_0x2de8f9);};},'formatTimestamp'(_0x1088e3){if(!_0x1088e3)return'N/A';const _0x13b709=new Date(_0x1088e3);return _0x13b709['toLocaleDateString']()+'\x20'+_0x13b709['toLocaleTimeString']();},'getQueryParams'(){const _0x5815b3=new URLSearchParams(window['location']['search']),_0xb7f74={};for(const [_0x198a1a,_0x2a6222]of _0x5815b3){_0xb7f74[_0x198a1a]=_0x2a6222;}return _0xb7f74;},'formatDuration'(_0x4d459c,_0x376abe){if(!_0x4d459c)return'N/A';const _0x3579d9=new Date(_0x4d459c),_0x5e3e4c=_0x376abe?new Date(_0x376abe):new Date(),_0x15c031=_0x5e3e4c-_0x3579d9;if(_0x15c031<0x0)return'0s';const _0x140774=Math['floor'](_0x15c031/0x3e8),_0x341571=Math['floor'](_0x140774/0x3c),_0x350474=Math['floor'](_0x341571/0x3c),_0x528cb6=Math['floor'](_0x350474/0x18);if(_0x140774<0x3c)return _0x140774+'s';if(_0x341571<0x3c)return _0x341571+'m\x20'+_0x140774%0x3c+'s';if(_0x350474<0x18)return _0x350474+'h\x20'+_0x341571%0x3c+'m\x20'+_0x140774%0x3c+'s';return _0x528cb6+'d\x20'+_0x350474%0x18+'h\x20'+_0x341571%0x3c+'m';},'renderMarkdown'(_0x21290b,_0x1b4b4d={}){if(!_0x21290b)return'';_0x21290b=this['rewriteAttachmentLinks'](_0x21290b,_0x1b4b4d),_0x21290b=this['rewriteColorSyntax'](_0x21290b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x21290b,_0x1b4b4d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x21290b);}catch(_0x2c31ee){return console['error']('Markdown\x20parsing\x20error:',_0x2c31ee),this['renderMarkdownFallback'](_0x21290b,_0x1b4b4d);}},'rewriteAttachmentLinks'(_0x373b5c,_0x18b045={}){const _0x54faa5=typeof _0x18b045['resolveAttachmentUrl']==='function'?_0x18b045['resolveAttachmentUrl']:_0x18b045['taskId']?_0x4eb4f6=>API_BASE+'/tasks/'+_0x18b045['taskId']+'/attachments/'+encodeURIComponent(_0x4eb4f6):null;if(!_0x54faa5)return _0x373b5c;return String(_0x373b5c)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3277f2,_0x5477e5)=>{const _0x386e44=String(_0x5477e5||'')['trim']();if(!_0x386e44)return _0x3277f2;let _0x50a001=_0x386e44;try{_0x50a001=decodeURIComponent(_0x386e44);}catch{}const _0x13c055=_0x54faa5(_0x50a001);if(!_0x13c055)return _0x3277f2;return']('+_0x13c055+')';});},'rewriteColorSyntax'(_0x4081c8){if(!_0x4081c8)return _0x4081c8;return String(_0x4081c8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x3607d2,_0x61d9a5,_0x373c50)=>{const _0x16f35d=this['rewriteColorSyntax'](_0x373c50);return'<span\x20style=\x22color:\x20'+_0x61d9a5+'\x22>'+_0x16f35d+'</span>';});},'renderMarkdownFallback'(_0x3ff52b,_0x108354={}){if(!_0x3ff52b)return'';_0x3ff52b=_0x3ff52b['replace'](/\r\n/g,'\x0a'),_0x3ff52b=_0x3ff52b['replace'](/\r/g,'\x0a'),_0x3ff52b=this['rewriteAttachmentLinks'](_0x3ff52b,_0x108354);let _0x43420a=this['escapeHtml'](_0x3ff52b);return _0x43420a=_0x43420a['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x43420a=_0x43420a['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x43420a=_0x43420a['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x43420a=_0x43420a['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x43420a=_0x43420a['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x43420a=_0x43420a['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x43420a=_0x43420a['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x43420a=_0x43420a['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x43420a=_0x43420a['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x43420a=_0x43420a['replace'](/\n\n/g,'</p><p>'),_0x43420a=_0x43420a['replace'](/\n/g,'<br>'),'<p>'+_0x43420a+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x34089a=new Uint8Array(0x10);crypto['getRandomValues'](_0x34089a),_0x34089a[0x6]=_0x34089a[0x6]&0xf|0x40,_0x34089a[0x8]=_0x34089a[0x8]&0x3f|0x80;const _0x5df03f=Array['from'](_0x34089a,_0x193a32=>_0x193a32['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5df03f['slice'](0x0,0x8)+'-'+_0x5df03f['slice'](0x8,0xc)+'-'+_0x5df03f['slice'](0xc,0x10)+'-'+_0x5df03f['slice'](0x10,0x14)+'-'+_0x5df03f['slice'](0x14);}};export class CustomSelect{constructor(_0x108260,_0x4d7628={}){this['nativeSelect']=_0x108260,this['options']=_0x4d7628,this['isOpen']=![],this['selectedValue']=_0x108260['value']||'',this['searchable']=_0x4d7628['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5bb0ca=document['createElement']('div');_0x5bb0ca['className']='custom-select';const _0xb8f463=document['createElement']('div');_0xb8f463['className']='custom-select-trigger',_0xb8f463['setAttribute']('tabindex','0'),_0xb8f463['setAttribute']('role','button'),_0xb8f463['setAttribute']('aria-haspopup','listbox');const _0x76c443=document['createElement']('span');_0x76c443['className']='custom-select-trigger-text';const _0x2e2840=document['createElement']('span');_0x2e2840['className']='custom-select-arrow',_0x2e2840['textContent']='▼',_0xb8f463['appendChild'](_0x76c443),_0xb8f463['appendChild'](_0x2e2840);const _0x1a5cf8=document['createElement']('div');_0x1a5cf8['className']='custom-select-dropdown',_0x1a5cf8['setAttribute']('role','listbox');if(this['searchable']){const _0x1a1bfb=document['createElement']('div');_0x1a1bfb['className']='custom-select-search';const _0x1ac4c6=document['createElement']('input');_0x1ac4c6['type']='text',_0x1ac4c6['className']='custom-select-search-input',_0x1ac4c6['placeholder']='Type\x20to\x20search...',_0x1ac4c6['setAttribute']('aria-label','Search\x20options'),_0x1ac4c6['addEventListener']('input',_0x3630b4=>{this['searchQuery']=_0x3630b4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1ac4c6['addEventListener']('keydown',_0x4c5b2e=>{if(_0x4c5b2e['key']==='Escape')_0x4c5b2e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x4c5b2e['key']==='Enter'){_0x4c5b2e['preventDefault'](),_0x4c5b2e['stopPropagation']();const _0x1aabc0=_0x1a5cf8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1aabc0){const _0x54dd47=_0x1aabc0['getAttribute']('data-value');this['select'](_0x54dd47);}}}}),_0x1a1bfb['appendChild'](_0x1ac4c6),_0x1a5cf8['appendChild'](_0x1a1bfb),this['searchInput']=_0x1ac4c6;}const _0x5bfaef=document['createElement']('div');_0x5bfaef['className']='custom-select-options',_0x1a5cf8['appendChild'](_0x5bfaef),_0x5bb0ca['appendChild'](_0xb8f463),_0x5bb0ca['appendChild'](_0x1a5cf8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5bb0ca,this['nativeSelect']),this['wrapper']=_0x5bb0ca,this['trigger']=_0xb8f463,this['triggerText']=_0x76c443,this['dropdown']=_0x1a5cf8,this['optionsContainer']=_0x5bfaef,_0xb8f463['addEventListener']('click',()=>this['toggle']()),_0xb8f463['addEventListener']('keydown',_0x398d29=>this['handleKeydown'](_0x398d29)),document['addEventListener']('click',_0x5c6b93=>{!_0x5bb0ca['contains'](_0x5c6b93['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x257b04=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x257b04['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x556c25=new MutationObserver(()=>{this['updateDisabledState']();});_0x556c25['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4830ba=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4830ba['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5bbb95=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5bbb95),this['trigger']['setAttribute']('aria-disabled',_0x5bbb95?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5bbb95?'-1':'0'),_0x5bbb95&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x489114=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0xf9d6db=_0x489114['filter'](_0x30a803=>!_0x30a803['disabled']&&!_0x30a803['hidden']);_0x489114['forEach']((_0x3fb32f,_0xb90119)=>{const _0x135f74=document['createElement']('div');_0x135f74['className']='custom-select-option',_0x135f74['textContent']=_0x3fb32f['textContent'],_0x135f74['setAttribute']('data-value',_0x3fb32f['value']),_0x135f74['setAttribute']('data-index',_0xb90119),_0x135f74['setAttribute']('role','option'),_0x3fb32f['disabled']?_0x135f74['classList']['add']('disabled'):_0x135f74['addEventListener']('click',()=>this['select'](_0x3fb32f['value'])),_0x3fb32f['value']===this['selectedValue']&&_0x135f74['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x135f74),this['allOptions']['push']({'element':_0x135f74,'text':_0x3fb32f['textContent']['toLowerCase'](),'value':_0x3fb32f['value'],'disabled':_0x3fb32f['disabled']});});if(this['searchable']&&this['searchInput']){const _0x47caa6=this['searchInput']['parentElement'];_0xf9d6db['length']>0x3?_0x47caa6['style']['display']='':_0x47caa6['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x24b569=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3e8e0c=>{if(!_0x24b569||_0x3e8e0c['disabled'])_0x3e8e0c['element']['style']['display']='';else{const _0xf1d727=_0x3e8e0c['text']['includes'](_0x24b569);_0x3e8e0c['element']['style']['display']=_0xf1d727?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3c542d){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3c542d,this['nativeSelect']['value']=_0x3c542d;const _0x431f13=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x431f13),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x417f19=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x417f19&&(this['triggerText']['textContent']=_0x417f19['textContent'],_0x417f19['disabled']||_0x417f19['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x159464=>{_0x159464['getAttribute']('data-value')===this['selectedValue']?_0x159464['classList']['add']('selected'):_0x159464['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 _0x1b10fd=window['getComputedStyle'](this['dropdown']);if(_0x1b10fd['position']==='fixed'){const _0x2c3c83=this['trigger']['getBoundingClientRect'](),_0x455aff=parseInt(_0x1b10fd['maxHeight'])||0xc8,_0x42bc8f=window['innerHeight'],_0x1ace59=_0x42bc8f-_0x2c3c83['bottom'],_0x4c31b2=_0x2c3c83['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x178cab;_0x1ace59<_0x455aff&&_0x4c31b2>_0x1ace59?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x42bc8f-_0x2c3c83['top']+'px',_0x178cab=Math['min'](_0x455aff,_0x4c31b2-0xa),this['dropdown']['style']['maxHeight']=_0x178cab+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2c3c83['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x178cab=Math['min'](_0x455aff,_0x1ace59-0xa),this['dropdown']['style']['maxHeight']=_0x178cab+'px');if(this['optionsContainer']){let _0x41ff40=_0x178cab;if(this['searchInput']){const _0x25f9da=this['searchInput']['parentElement'];_0x25f9da&&(_0x41ff40-=_0x25f9da['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x41ff40)+'px';}this['dropdown']['style']['left']=_0x2c3c83['left']+'px',this['dropdown']['style']['width']=_0x2c3c83['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x518b17=this['searchInput']['parentElement'];_0x518b17&&_0x518b17['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'](_0x3b6bf6){if(this['nativeSelect']['disabled'])return;if(_0x3b6bf6['key']==='Enter'||_0x3b6bf6['key']==='\x20')_0x3b6bf6['preventDefault'](),this['toggle']();else _0x3b6bf6['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3593bc='\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',_0x3593bc),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x26b16a=document['getElementById']('confirm-dialog-close'),_0x147470=document['getElementById']('confirm-dialog-cancel'),_0x29820b=document['getElementById']('confirm-dialog-confirm'),_0x2ae6cd=this['_modal']['querySelector']('.modal-overlay');_0x26b16a['addEventListener']('click',()=>this['_resolve'](![])),_0x147470['addEventListener']('click',()=>this['_resolve'](![])),_0x29820b['addEventListener']('click',()=>this['_resolve'](!![])),_0x2ae6cd['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x535805=>{if(_0x535805['key']==='Escape')_0x535805['preventDefault'](),this['_resolve'](![]);else _0x535805['key']==='Enter'&&(_0x535805['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x222413,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1d9704=>{this['_resolvePromise']=_0x1d9704,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x222413;const _0x1234fa=document['getElementById']('confirm-dialog-cancel'),_0x50db35=document['getElementById']('confirm-dialog-confirm');_0x1234fa['textContent']=cancelText,_0x50db35['textContent']=confirmText,_0x50db35['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x50db35['focus']();});},'_resolve'(_0x40dd33){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x40dd33),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4a2c26,_0xf7fd9e={}){this['container']=_0x4a2c26,this['options']={'placeholder':_0xf7fd9e['placeholder']||'Type\x20to\x20search...','maxItems':_0xf7fd9e['maxItems']||0x64,'loadItems':_0xf7fd9e['loadItems']||(async()=>[]),'renderItem':_0xf7fd9e['renderItem']||(_0x550a55=>({'primary':String(_0x550a55),'secondary':''})),'onSelect':_0xf7fd9e['onSelect']||(()=>{}),'filterItems':_0xf7fd9e['filterItems']||null,'getItemValue':_0xf7fd9e['getItemValue']||(_0x5a1c8c=>_0x5a1c8c),'sortItems':_0xf7fd9e['sortItems']||null,'debounceMs':_0xf7fd9e['debounceMs']||0xc8,'minCharsForSearch':_0xf7fd9e['minCharsForSearch']||0x0,'emptyMessage':_0xf7fd9e['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xf7fd9e['loadingMessage']||'Loading...','preload':_0xf7fd9e['preload']!==![],'searchMode':_0xf7fd9e['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',_0x16eb78=>this['onBlur'](_0x16eb78)),this['input']['addEventListener']('input',_0x5d4d27=>this['onInput'](_0x5d4d27)),this['input']['addEventListener']('keydown',_0x20965d=>this['onKeydown'](_0x20965d)),this['clearBtn']['addEventListener']('mousedown',_0x55195a=>{_0x55195a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4d55f7=>{_0x4d55f7['preventDefault']();}),document['addEventListener']('click',_0x302574=>{!this['wrapper']['contains'](_0x302574['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(_0x3b4ca1){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x3b4ca1);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x201680){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x44672f){const _0x6b62c1=_0x44672f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x6b62c1);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x6b62c1):this['loadAndShow'](_0x6b62c1);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x3cd2c4){switch(_0x3cd2c4['key']){case'ArrowDown':_0x3cd2c4['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x3cd2c4['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x3cd2c4['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x3cd2c4['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x326139){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2f3675=this['selectedIndex']+_0x326139;if(_0x2f3675>=0x0&&_0x2f3675<this['filteredItems']['length']){this['selectedIndex']=_0x2f3675,this['updateSelectionHighlight']();const _0x111fe9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x111fe9[this['selectedIndex']]&&_0x111fe9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x497aee=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x497aee['forEach']((_0x51c40c,_0x53a2af)=>{_0x51c40c['classList']['toggle']('keyboard-selected',_0x53a2af===this['selectedIndex']);});}async['loadAndShow'](_0x875238){this['showLoading']();try{const _0x1c6301=await this['options']['loadItems'](_0x875238);if(this['options']['searchMode']==='server'){let _0x249802=_0x1c6301;this['options']['sortItems']&&(_0x249802=this['options']['sortItems']([..._0x1c6301]));this['filteredItems']=_0x249802;const _0xa06b8e=this['filteredItems']['length']>=this['options']['maxItems'];_0xa06b8e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xa06b8e),this['open']();}else this['allItems']=_0x1c6301,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x875238);}catch(_0x1a6696){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x1a6696),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3e4557){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3e4557):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x53b424=this['filteredItems']['length']>=this['options']['maxItems'];_0x53b424&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x53b424),this['open']();}['renderItems'](_0x1a9cc6){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']((_0x5cb856,_0x47180c)=>{const _0x9d517=document['createElement']('div');_0x9d517['className']='autocomplete-select-item',_0x9d517['setAttribute']('role','option'),_0x9d517['setAttribute']('data-index',_0x47180c);const _0x528b23=this['options']['renderItem'](_0x5cb856);let _0x28cc73='';_0x528b23['icon']&&(_0x28cc73='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x528b23['iconClass']||'')+'\x22>'+_0x528b23['icon']+'</span>'),_0x9d517['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x28cc73+'\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'](_0x528b23['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x528b23['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x528b23['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x9d517['addEventListener']('click',()=>{this['selectItem'](_0x5cb856);}),_0x9d517['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x47180c,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x9d517);}),_0x1a9cc6?(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'](_0x2f2b62){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2f2b62)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x447248){this['selectedItem']=_0x447248;const _0x47cc94=this['options']['renderItem'](_0x447248);this['input']['value']=_0x47cc94['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x447248);}['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'](_0x22fe25){if(_0x22fe25){this['selectedItem']=_0x22fe25;const _0x453ecf=this['options']['renderItem'](_0x22fe25);this['input']['value']=_0x453ecf['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5b40cd){this['allItems']=_0x5b40cd,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'](_0x1bb462){this['input']['placeholder']=_0x1bb462;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5666b1=null){const _0x9e79c7=document['getElementById']('admin-menu-container'),_0x2bf0b6=document['getElementById']('admin-menu-btn'),_0x50419b=document['getElementById']('admin-menu');if(!_0x9e79c7||!_0x2bf0b6||!_0x50419b)return;try{!_0x5666b1&&(_0x5666b1=await API['getCurrentUser']());if(_0x5666b1){const _0x4b13b=window['Permissions'],_0x52e276=_0x4b13b['hasServerPermission'](_0x5666b1,'*')||_0x4b13b['hasEnvPermission'](_0x5666b1,'environments:manage')||_0x4b13b['hasServerPermission'](_0x5666b1,'users:create')||_0x4b13b['hasTeamPermission'](_0x5666b1,'teams:manage')||_0x4b13b['hasEnvPermission'](_0x5666b1,'environments:view_details');if(!_0x52e276)return;_0x9e79c7['hidden']=![];if(!_0x4b13b['hasServerPermission'](_0x5666b1,'*')){const _0x16f3c0=_0x50419b['querySelectorAll']('.admin-menu-item');_0x16f3c0['forEach'](_0x442756=>{const _0x487e67=_0x442756['querySelector']('.option-text')?.['textContent']?.['trim']();_0x487e67==='Users'&&!_0x4b13b['hasServerPermission'](_0x5666b1,'users:create')&&(_0x442756['hidden']=!![]),_0x487e67==='Skills'&&(_0x442756['hidden']=!![]),_0x487e67==='Server\x20Settings'&&(_0x442756['hidden']=!![]),_0x487e67==='Server\x20Administration'&&(_0x442756['hidden']=!![]),_0x487e67==='Git\x20History'&&(_0x442756['hidden']=!![]),_0x487e67==='Roles'&&(_0x442756['hidden']=!![]);});}_0x2bf0b6['addEventListener']('click',_0x52207d=>{_0x52207d['stopPropagation']();const _0x141c63=document['getElementById']('actions-menu');if(_0x141c63)_0x141c63['hidden']=!![];_0x50419b['hidden']=!_0x50419b['hidden'];}),document['addEventListener']('click',_0xf44dd6=>{!_0x50419b['hidden']&&!_0x2bf0b6['contains'](_0xf44dd6['target'])&&!_0x50419b['contains'](_0xf44dd6['target'])&&(_0x50419b['hidden']=!![]);}),document['addEventListener']('keydown',_0x1bf824=>{_0x1bf824['key']==='Escape'&&!_0x50419b['hidden']&&(_0x50419b['hidden']=!![]);});}}catch(_0x474a5e){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x474a5e['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};
|