@profoundlogic/coderflow-server 0.7.9 → 0.8.0
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/entrypoint.sh +75 -5
- 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/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 -0
- package/dist/lib/task-context-usage.js +1 -0
- 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/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +36 -0
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.html +11 -0
- 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 _0x2e6ec1=window['location']['pathname'],_0x172a8a=_0x2e6ec1['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x172a8a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x172a8a[0x1]),_0x172a8a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x50e1cd={}){const _0x11cfc=new URLSearchParams();_0x50e1cd['userId']&&_0x11cfc['set']('userId',String(_0x50e1cd['userId']));_0x50e1cd['automation']&&_0x11cfc['set']('automation',String(_0x50e1cd['automation']));const _0xdfe427=API_BASE+'/tasks/stats'+(_0x11cfc['toString']()?'?'+_0x11cfc['toString']():''),_0x196351=await fetch(_0xdfe427);if(!_0x196351['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x196351['statusText']);return await _0x196351['json']();},async 'getTasks'(_0x316732={}){const _0x3a7059=new URLSearchParams();_0x316732['status']&&_0x3a7059['set']('status',String(_0x316732['status']));_0x316732['environment']&&_0x3a7059['set']('environment',String(_0x316732['environment']));_0x316732['automation']&&_0x3a7059['set']('automation',String(_0x316732['automation']));if(_0x316732['include']){const _0x4d1df6=Array['isArray'](_0x316732['include'])?_0x316732['include']['join'](','):String(_0x316732['include']);_0x4d1df6&&_0x3a7059['set']('include',_0x4d1df6);}_0x316732['filter']&&_0x3a7059['set']('filter',String(_0x316732['filter']));_0x316732['page']&&_0x3a7059['set']('page',String(_0x316732['page']));_0x316732['limit']&&_0x3a7059['set']('limit',String(_0x316732['limit']));_0x316732['userId']&&_0x3a7059['set']('userId',String(_0x316732['userId']));_0x316732['search']&&_0x3a7059['set']('search',String(_0x316732['search']));_0x316732['includeChildTasks']&&_0x3a7059['set']('includeChildTasks','true');const _0x2a2a8e=API_BASE+'/tasks'+(_0x3a7059['toString']()?'?'+_0x3a7059['toString']():''),_0x57e5a8=await fetch(_0x2a2a8e);if(!_0x57e5a8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x57e5a8['statusText']);return await _0x57e5a8['json']();},async 'getAutomations'(_0x1763a2={}){const _0x5e6c83=new URLSearchParams();_0x1763a2['environment']&&_0x5e6c83['set']('environment',String(_0x1763a2['environment']));const _0x4c3c77=await fetch(API_BASE+'/api/automations'+(_0x5e6c83['toString']()?'?'+_0x5e6c83['toString']():''));if(!_0x4c3c77['ok']){const _0xb67ff=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0xb67ff['message']||_0xb67ff['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'getAutomation'(_0x1f2d9b){const _0x539788=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f2d9b));if(!_0x539788['ok']){const _0x46b8a7=await _0x539788['json']()['catch'](()=>({}));throw new Error(_0x46b8a7['message']||_0x46b8a7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539788['statusText']);}return await _0x539788['json']();},async 'createAutomation'(_0x4bb77f){const _0x510eba=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb77f||{})});if(!_0x510eba['ok']){const _0x2476a1=await _0x510eba['json']()['catch'](()=>({}));throw new Error(_0x2476a1['message']||_0x2476a1['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x510eba['statusText']);}return await _0x510eba['json']();},async 'updateAutomation'(_0x247fc3,_0x95ef9d){const _0x270d2c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x247fc3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x95ef9d||{})});if(!_0x270d2c['ok']){const _0x1e8a4a=await _0x270d2c['json']()['catch'](()=>({}));throw new Error(_0x1e8a4a['message']||_0x1e8a4a['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x270d2c['statusText']);}return await _0x270d2c['json']();},async 'deleteAutomation'(_0x4a5ca9){const _0x12c180=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4a5ca9),{'method':'DELETE'});if(!_0x12c180['ok']){const _0x465beb=await _0x12c180['json']()['catch'](()=>({}));throw new Error(_0x465beb['message']||_0x465beb['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12c180['statusText']);}return await _0x12c180['json']();},async 'triggerAutomation'(_0x306bd4){const _0x58eeba=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x306bd4)+'/trigger',{'method':'POST'});if(!_0x58eeba['ok']){const _0x2106de=await _0x58eeba['json']()['catch'](()=>({}));throw new Error(_0x2106de['message']||_0x2106de['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x58eeba['statusText']);}return await _0x58eeba['json']();},async 'setAutomationEnabled'(_0x5e00a0,_0x88eb9e){const _0x47d8bb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5e00a0)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x88eb9e})});if(!_0x47d8bb['ok']){const _0x1d4a3e=await _0x47d8bb['json']()['catch'](()=>({}));throw new Error(_0x1d4a3e['message']||_0x1d4a3e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x47d8bb['statusText']);}return await _0x47d8bb['json']();},async 'getAutomationHistory'(_0x3c13c5,_0x7266b2=0x32){const _0x4c8743=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c13c5)+'/history?limit='+encodeURIComponent(String(_0x7266b2)));if(!_0x4c8743['ok']){const _0x9697a9=await _0x4c8743['json']()['catch'](()=>({}));throw new Error(_0x9697a9['message']||_0x9697a9['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4c8743['statusText']);}return await _0x4c8743['json']();},async 'getTask'(_0x23da9e,_0x3216ff={}){const _0xb0193=new URLSearchParams();if(_0x3216ff['include']){const _0x597368=Array['isArray'](_0x3216ff['include'])?_0x3216ff['include']['join'](','):String(_0x3216ff['include']);if(_0x597368)_0xb0193['set']('include',_0x597368);}const _0x393d4a=await fetch(API_BASE+'/tasks/'+_0x23da9e+(_0xb0193['toString']()?'?'+_0xb0193['toString']():''));if(!_0x393d4a['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x393d4a['statusText']);return await _0x393d4a['json']();},async 'getTaskResults'(_0x15622b){const _0xc3c61d=await fetch(API_BASE+'/tasks/'+_0x15622b+'/results');if(!_0xc3c61d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xc3c61d['statusText']);return await _0xc3c61d['json']();},async 'getTaskPatches'(_0x2572cd){const _0x480650=await fetch(API_BASE+'/tasks/'+_0x2572cd+'/patches');if(!_0x480650['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x480650['statusText']);return await _0x480650['json']();},async 'getTaskAttachments'(_0x3b42f3){const _0x51b3ce=await fetch(API_BASE+'/tasks/'+_0x3b42f3+'/attachments');if(!_0x51b3ce['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x51b3ce['statusText']);return await _0x51b3ce['json']();},async 'uploadAttachments'(_0x32522b,_0x51574c){const _0x19a643=new FormData();for(const _0x4e10e4 of _0x51574c){_0x19a643['append']('attachments',_0x4e10e4);}const _0x388b29=await fetch(API_BASE+'/tasks/'+_0x32522b+'/attachments',{'method':'POST','body':_0x19a643});if(!_0x388b29['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x388b29['statusText']);return await _0x388b29['json']();},async 'isAINameGenerationAvailable'(){try{const _0x590123=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x590123['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x590123['json']();}catch(_0x406a73){return{'available':![],'reason':_0x406a73['message']};}},async 'generateTaskName'(_0xb26931){try{const _0x4d930d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xb26931})});return await _0x4d930d['json']();}catch(_0x298f8f){return{'success':![],'error':_0x298f8f['message']};}},async 'createTask'(_0x1a636c){let _0x501acb,_0x42f7c0={};if(_0x1a636c['files']&&_0x1a636c['files']['length']>0x0){const _0x3e7344=new FormData();for(const [_0xcc6308,_0x576139]of Object['entries'](_0x1a636c)){if(_0xcc6308!=='files'){if(_0x576139==null)continue;typeof _0x576139==='object'?_0x3e7344['append'](_0xcc6308,JSON['stringify'](_0x576139)):_0x3e7344['append'](_0xcc6308,String(_0x576139));}}for(const _0x423f3c of _0x1a636c['files']){_0x3e7344['append']('attachments',_0x423f3c);}_0x501acb=_0x3e7344;}else _0x42f7c0['Content-Type']='application/json',_0x501acb=JSON['stringify'](_0x1a636c);const _0x24f6e3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x42f7c0,'body':_0x501acb});if(!_0x24f6e3['ok']){const _0x46c91e=await _0x24f6e3['json'](),_0x375555=new Error(_0x46c91e['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24f6e3['statusText']),{message:_0x5f0df7,..._0x126e62}=_0x46c91e;Object['assign'](_0x375555,_0x126e62);throw _0x375555;}return await _0x24f6e3['json']();},async 'createTestTask'(_0x4417fa){const _0x16bf06=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4417fa)});if(!_0x16bf06['ok']){const _0x28524e=await _0x16bf06['json']();throw new Error(_0x28524e['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16bf06['statusText']);}return await _0x16bf06['json']();},async 'createEphemeralTest'(_0x5462fc){const _0x5c5c9d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5462fc)});if(!_0x5c5c9d['ok']){const _0x33fe55=await _0x5c5c9d['json']();throw new Error(_0x33fe55['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5c5c9d['statusText']);}return await _0x5c5c9d['json']();},async 'createDeployTask'(_0x58432f){const _0x2de682=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58432f)});if(!_0x2de682['ok']){const _0x11ef7a=await _0x2de682['json']();throw new Error(_0x11ef7a['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2de682['statusText']);}return await _0x2de682['json']();},async 'getEnvironments'(){const _0x4c6a24=await fetch(API_BASE+'/environments');if(!_0x4c6a24['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c6a24['statusText']);return await _0x4c6a24['json']();},async 'getEnvironment'(_0x5afe84){const _0x17f500=await fetch(API_BASE+'/environments/'+_0x5afe84);if(!_0x17f500['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x17f500['statusText']);return await _0x17f500['json']();},async 'getEnvironmentRepoHistory'(_0x4d18dd,_0x502064,_0x2264aa={}){if(!_0x4d18dd||!_0x502064)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x558c3e=new URLSearchParams();if(_0x2264aa['limit'])_0x558c3e['set']('limit',String(_0x2264aa['limit']));if(_0x2264aa['offset'])_0x558c3e['set']('offset',String(_0x2264aa['offset']));if(_0x2264aa['search'])_0x558c3e['set']('search',String(_0x2264aa['search']));if(_0x2264aa['branch'])_0x558c3e['set']('branch',String(_0x2264aa['branch']));const _0x4204ac=API_BASE+'/environments/'+encodeURIComponent(_0x4d18dd)+'/repos/'+encodeURIComponent(_0x502064)+'/git/history',_0x227091=await fetch(''+_0x4204ac+(_0x558c3e['toString']()?'?'+_0x558c3e['toString']():''));if(!_0x227091['ok']){const _0x266300=await _0x227091['json']()['catch'](()=>({}));throw new Error(_0x266300['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x227091['statusText']);}return await _0x227091['json']();},async 'getEnvironmentRepoCommit'(_0x11b1df,_0x232756,_0x4ae846){if(!_0x11b1df||!_0x232756||!_0x4ae846)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x369954=API_BASE+'/environments/'+encodeURIComponent(_0x11b1df)+'/repos/'+encodeURIComponent(_0x232756)+'/git/commits/'+encodeURIComponent(_0x4ae846),_0x22e103=await fetch(_0x369954);if(!_0x22e103['ok']){const _0x356125=await _0x22e103['json']()['catch'](()=>({}));throw new Error(_0x356125['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x22e103['statusText']);}return await _0x22e103['json']();},async 'getEnvironmentRepoBranches'(_0x22c5ec,_0x112f11){if(!_0x22c5ec||!_0x112f11)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x701e38=API_BASE+'/environments/'+encodeURIComponent(_0x22c5ec)+'/repos/'+encodeURIComponent(_0x112f11)+'/git/branches',_0x4cab8a=await fetch(_0x701e38);if(!_0x4cab8a['ok']){const _0x38cfbe=await _0x4cab8a['json']()['catch'](()=>({}));throw new Error(_0x38cfbe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4cab8a['statusText']);}return await _0x4cab8a['json']();},async 'revertEnvironmentRepoCommit'(_0xa80eaf,_0x361169,_0x29e481,_0x226c31={}){if(!_0xa80eaf||!_0x361169||!_0x29e481)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x12cca6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0xa80eaf)+'/repos/'+encodeURIComponent(_0x361169)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x29e481,..._0x226c31})});if(!_0x12cca6['ok']){const _0x6b4790=await _0x12cca6['json']()['catch'](()=>({}));throw new Error(_0x6b4790['message']||_0x6b4790['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x12cca6['statusText']);}return await _0x12cca6['json']();},async 'getTemplates'(_0x5357ff={}){const _0x1d5e36=new URLSearchParams();if(_0x5357ff['include']){const _0x563207=Array['isArray'](_0x5357ff['include'])?_0x5357ff['include']['join'](','):String(_0x5357ff['include']);if(_0x563207)_0x1d5e36['set']('include',_0x563207);}const _0x37e2af=await fetch(API_BASE+'/templates'+(_0x1d5e36['toString']()?'?'+_0x1d5e36['toString']():''));if(!_0x37e2af['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x37e2af['statusText']);return await _0x37e2af['json']();},async 'getTemplatesForEnvironment'(_0x5ebe5d,_0x1133b0={}){if(!_0x5ebe5d)throw new Error('Environment\x20name\x20is\x20required');const _0x56fd5d=new URLSearchParams();if(_0x1133b0['include']){const _0xd85549=Array['isArray'](_0x1133b0['include'])?_0x1133b0['include']['join'](','):String(_0x1133b0['include']);if(_0xd85549)_0x56fd5d['set']('include',_0xd85549);}const _0x56b19c=await fetch(API_BASE+'/templates/'+_0x5ebe5d+(_0x56fd5d['toString']()?'?'+_0x56fd5d['toString']():''));if(!_0x56b19c['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5ebe5d+':\x20'+_0x56b19c['statusText']);return await _0x56b19c['json']();},async 'getTemplate'(_0x22c462,_0x8007eb,_0x3a0ea4={}){if(!_0x22c462||!_0x8007eb)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2f3a35=new URLSearchParams();if(_0x3a0ea4['include']){const _0x21edab=Array['isArray'](_0x3a0ea4['include'])?_0x3a0ea4['include']['join'](','):String(_0x3a0ea4['include']);if(_0x21edab)_0x2f3a35['set']('include',_0x21edab);}const _0x4ca9a4=await fetch(API_BASE+'/templates/'+_0x22c462+'/'+_0x8007eb+(_0x2f3a35['toString']()?'?'+_0x2f3a35['toString']():''));if(!_0x4ca9a4['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ca9a4['statusText']);return await _0x4ca9a4['json']();},async 'getTaskLogs'(_0x58a15d,_0x1ba508={}){if(!_0x58a15d)throw new Error('Task\x20ID\x20is\x20required');const _0x4274c9=new URLSearchParams();_0x1ba508['tail']&&_0x4274c9['set']('tail',String(_0x1ba508['tail']));const _0x42d4d6=await fetch(API_BASE+'/tasks/'+_0x58a15d+'/logs'+(_0x4274c9['toString']()?'?'+_0x4274c9['toString']():''));if(!_0x42d4d6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42d4d6['statusText']);return await _0x42d4d6['text']();},async 'getContainers'(){const _0x2d2c14=await fetch(API_BASE+'/containers');if(!_0x2d2c14['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2d2c14['statusText']);return await _0x2d2c14['json']();},async 'getContainer'(_0xb40306){const _0x33a972=await fetch(API_BASE+'/containers/'+_0xb40306);if(!_0x33a972['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33a972['statusText']);return await _0x33a972['json']();},async 'startInteractiveContainer'(_0x5f08e8){const _0x4df029=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f08e8)});if(!_0x4df029['ok']){const _0x4eab07=await _0x4df029['json']()['catch'](()=>({}));throw new Error(_0x4eab07['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4df029['statusText']);}return await _0x4df029['json']();},async 'startContainerCodeServer'(_0xf127ae,_0x1b0dd0={}){if(!_0xf127ae)throw new Error('Container\x20ID\x20is\x20required');const _0x17f304=new URLSearchParams();_0x1b0dd0['theme']&&_0x17f304['set']('theme',_0x1b0dd0['theme']);const _0x5a927d=await fetch(API_BASE+'/containers/'+_0xf127ae+'/code-server'+(_0x17f304['toString']()?'?'+_0x17f304['toString']():'')),_0x20342b=await _0x5a927d['json']()['catch'](()=>({}));if(!_0x5a927d['ok'])throw new Error(_0x20342b['message']||_0x20342b['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5a927d['statusText']);return _0x20342b;},async 'stopContainer'(_0x3e4b97){const _0x316f23=await fetch(API_BASE+'/containers/'+_0x3e4b97,{'method':'DELETE'});if(!_0x316f23['ok']){const _0x130a21=await _0x316f23['json']()['catch'](()=>({}));throw new Error(_0x130a21['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x316f23['statusText']);}return await _0x316f23['json']();},async 'stopTask'(_0x2fba6a){if(!_0x2fba6a)throw new Error('Task\x20ID\x20is\x20required');const _0x445cc8=await fetch(API_BASE+'/tasks/'+_0x2fba6a+'/stop',{'method':'POST'});if(!_0x445cc8['ok']){const _0x59a58c=await _0x445cc8['json']()['catch'](()=>({}));throw new Error(_0x59a58c['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x445cc8['statusText']);}return await _0x445cc8['json']();},async 'interruptTask'(_0xde2e7e){if(!_0xde2e7e)throw new Error('Task\x20ID\x20is\x20required');const _0x1a7225=await fetch(API_BASE+'/tasks/'+_0xde2e7e+'/interrupt',{'method':'POST'});if(!_0x1a7225['ok']){const _0x2a3e3b=await _0x1a7225['json']()['catch'](()=>({}));throw new Error(_0x2a3e3b['error']||_0x2a3e3b['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1a7225['statusText']);}return await _0x1a7225['json']();},async 'startTask'(_0x157ef9){if(!_0x157ef9)throw new Error('Task\x20ID\x20is\x20required');const _0xafb763=await fetch(API_BASE+'/tasks/'+_0x157ef9+'/start',{'method':'POST'});if(!_0xafb763['ok']){const _0x331109=await _0xafb763['json']()['catch'](()=>({}));throw new Error(_0x331109['error']||'Failed\x20to\x20start\x20task:\x20'+_0xafb763['statusText']);}return await _0xafb763['json']();},async 'deleteTask'(_0x3aa16d){if(!_0x3aa16d)throw new Error('Task\x20ID\x20is\x20required');const _0x59ccdd=await fetch(API_BASE+'/tasks/'+_0x3aa16d,{'method':'DELETE'});if(!_0x59ccdd['ok']){const _0x5daf74=await _0x59ccdd['json']()['catch'](()=>({}));throw new Error(_0x5daf74['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x59ccdd['statusText']);}return await _0x59ccdd['json']();},async 'refreshTasksFromDisk'(){const _0x55d062=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x55d062['ok']){const _0x1c7faf=await _0x55d062['json']()['catch'](()=>({}));throw new Error(_0x1c7faf['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x55d062['statusText']);}return await _0x55d062['json']();},async 'approveTask'(_0x24152d,_0xbd135d={}){if(!_0x24152d)throw new Error('Task\x20ID\x20is\x20required');const _0x47550b={'commit_message':_0xbd135d['commit_message']||'','pull':_0xbd135d['pull']??![],'push':_0xbd135d['push']??![]};_0xbd135d['new_branch']&&(_0x47550b['new_branch']=_0xbd135d['new_branch']);const _0x56398d=await fetch(API_BASE+'/tasks/'+_0x24152d+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x47550b)});if(!_0x56398d['ok']){const _0xd551a6=await _0x56398d['json']()['catch'](()=>({}));let _0x534789=_0xd551a6['error']||_0xd551a6['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x56398d['statusText'];if(_0xd551a6['results']&&Array['isArray'](_0xd551a6['results'])){const _0x451f84=_0xd551a6['results']['filter'](_0x455666=>!_0x455666['success']&&_0x455666['error']);_0x451f84['length']>0x0&&(_0x534789=_0x451f84[0x0]['error']);}throw new Error(_0x534789);}return await _0x56398d['json']();},async 'getPullRequestInfo'(_0xfb7591){if(!_0xfb7591)throw new Error('Task\x20ID\x20is\x20required');const _0x446773=await fetch(API_BASE+'/tasks/'+_0xfb7591+'/pull-request-info');if(!_0x446773['ok']){const _0xbdadc7=await _0x446773['json']()['catch'](()=>({}));throw new Error(_0xbdadc7['error']||_0xbdadc7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x446773['statusText']);}return await _0x446773['json']();},async 'createPullRequests'(_0x2ba445,_0x24a5b9){if(!_0x2ba445)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24a5b9||!Array['isArray'](_0x24a5b9))throw new Error('repos\x20array\x20is\x20required');const _0x2e644c=await fetch(API_BASE+'/tasks/'+_0x2ba445+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x24a5b9})});if(!_0x2e644c['ok']){const _0xc05cbe=await _0x2e644c['json']()['catch'](()=>({}));let _0x3692a6=_0xc05cbe['error']||_0xc05cbe['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x2e644c['statusText'];if(_0xc05cbe['results']&&Array['isArray'](_0xc05cbe['results'])){const _0x56b3bf=_0xc05cbe['results']['filter'](_0x15e097=>!_0x15e097['success']&&_0x15e097['error']);_0x56b3bf['length']>0x0&&(_0x3692a6=_0x56b3bf[0x0]['error']);}throw new Error(_0x3692a6);}return await _0x2e644c['json']();},async 'syncRepos'(_0x29d24e){if(!_0x29d24e)throw new Error('Task\x20ID\x20is\x20required');const _0x2d63b3=await fetch(API_BASE+'/tasks/'+_0x29d24e+'/sync-repos',{'method':'POST'});if(!_0x2d63b3['ok']){const _0x2e1839=await _0x2d63b3['json']()['catch'](()=>({}));throw new Error(_0x2e1839['error']||_0x2e1839['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2d63b3['statusText']);}return await _0x2d63b3['json']();},async 'getIbmiSyncInfo'(_0x4fb28b){if(!_0x4fb28b)throw new Error('Task\x20ID\x20is\x20required');const _0x576609=await fetch(API_BASE+'/tasks/'+_0x4fb28b+'/ibmi-sync-info');if(!_0x576609['ok']){const _0x43196d=await _0x576609['json']()['catch'](()=>({}));throw new Error(_0x43196d['error']||_0x43196d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x576609['json']();},async 'getSyncFiles'(_0x243714){if(!_0x243714)throw new Error('Task\x20ID\x20is\x20required');const _0x517293=await fetch(API_BASE+'/tasks/'+_0x243714+'/sync-to-ibmi/files');if(!_0x517293['ok']){const _0x991183=await _0x517293['json']()['catch'](()=>({}));throw new Error(_0x991183['error']||_0x991183['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x517293['json']();},async 'syncToIbmi'(_0x20ba9e,_0x4366f9,_0x37bc34=null,_0x27bdd1=null,_0x308ca8=null){if(!_0x20ba9e)throw new Error('Task\x20ID\x20is\x20required');const _0x493c6f={'library':_0x4366f9};if(_0x37bc34)_0x493c6f['user']=_0x37bc34;if(_0x27bdd1)_0x493c6f['password']=_0x27bdd1;if(_0x308ca8)_0x493c6f['files']=_0x308ca8;const _0x340486=await fetch(API_BASE+'/tasks/'+_0x20ba9e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493c6f)});if(!_0x340486['ok']){const _0x370bfe=await _0x340486['json']()['catch'](()=>({}));throw new Error(_0x370bfe['error']||_0x370bfe['message']||'Sync\x20failed');}return await _0x340486['json']();},async 'getIbmiSyncLog'(_0x587e2b){if(!_0x587e2b)throw new Error('Task\x20ID\x20is\x20required');const _0x3496ce=await fetch(API_BASE+'/tasks/'+_0x587e2b+'/ibmi-sync-log');if(!_0x3496ce['ok']){const _0x21f540=await _0x3496ce['json']()['catch'](()=>({}));throw new Error(_0x21f540['error']||_0x21f540['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3496ce['json']();},async 'pullChanges'(_0xdf83c3){if(!_0xdf83c3)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad279=await fetch(API_BASE+'/tasks/'+_0xdf83c3+'/pull-changes',{'method':'POST'});if(!_0x2ad279['ok']){const _0x23bf9c=await _0x2ad279['json']()['catch'](()=>({}));throw new Error(_0x23bf9c['error']||_0x23bf9c['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2ad279['statusText']);}return await _0x2ad279['json']();},async 'readFile'(_0x4f517b,_0x576aaa){if(!_0x4f517b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x576aaa)throw new Error('File\x20path\x20is\x20required');const _0x24323e=await fetch(API_BASE+'/tasks/'+_0x4f517b+'/files?path='+encodeURIComponent(_0x576aaa));if(!_0x24323e['ok']){const _0x25275b=await _0x24323e['json']()['catch'](()=>({}));throw new Error(_0x25275b['error']||_0x25275b['message']||'Failed\x20to\x20read\x20file:\x20'+_0x24323e['statusText']);}return await _0x24323e['json']();},'getTaskFileDownloadUrl'(_0x169efc,_0x186316){if(!_0x169efc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x186316)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x169efc+'/files/download?path='+encodeURIComponent(_0x186316);},async 'writeFile'(_0x3c112c,_0x160270,_0x30384b){if(!_0x3c112c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x160270)throw new Error('File\x20path\x20is\x20required');if(_0x30384b===undefined)throw new Error('Content\x20is\x20required');const _0x229d10=await fetch(API_BASE+'/tasks/'+_0x3c112c+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x160270,'content':_0x30384b})});if(!_0x229d10['ok']){const _0xa57ef8=await _0x229d10['json']()['catch'](()=>({}));throw new Error(_0xa57ef8['error']||_0xa57ef8['message']||'Failed\x20to\x20write\x20file:\x20'+_0x229d10['statusText']);}return await _0x229d10['json']();},async 'uploadTaskFiles'(_0x287fa0,_0x7d0f85,_0x5113bc){if(!_0x287fa0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x7d0f85)throw new Error('Target\x20directory\x20is\x20required');if(!_0x5113bc||_0x5113bc['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x24608d=new FormData();_0x24608d['append']('targetDir',_0x7d0f85);for(const _0xd21f6c of _0x5113bc){_0x24608d['append']('files',_0xd21f6c,_0xd21f6c['name']);}const _0xfe568=await fetch(API_BASE+'/tasks/'+_0x287fa0+'/files/upload',{'method':'POST','body':_0x24608d});if(!_0xfe568['ok']){const _0x5920b9=await _0xfe568['json']()['catch'](()=>({}));throw new Error(_0x5920b9['error']||_0x5920b9['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xfe568['statusText']);}return await _0xfe568['json']();},async 'createDirectory'(_0xdd76f2,_0x4edcf3){if(!_0xdd76f2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4edcf3)throw new Error('Directory\x20path\x20is\x20required');const _0x24a3cf=await fetch(API_BASE+'/tasks/'+_0xdd76f2+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4edcf3})});if(!_0x24a3cf['ok']){const _0x4ff72a=await _0x24a3cf['json']()['catch'](()=>({}));throw new Error(_0x4ff72a['error']||_0x4ff72a['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x24a3cf['statusText']);}return await _0x24a3cf['json']();},async 'renamePath'(_0x2bf68d,_0x16ae4e,_0x36607a){if(!_0x2bf68d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16ae4e)throw new Error('Source\x20path\x20is\x20required');if(!_0x36607a)throw new Error('Destination\x20path\x20is\x20required');const _0x12a4ee=await fetch(API_BASE+'/tasks/'+_0x2bf68d+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x16ae4e,'newPath':_0x36607a})});if(!_0x12a4ee['ok']){const _0x5469a1=await _0x12a4ee['json']()['catch'](()=>({}));throw new Error(_0x5469a1['error']||_0x5469a1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x12a4ee['statusText']);}return await _0x12a4ee['json']();},async 'deleteFile'(_0x5841e7,_0x40eb83){if(!_0x5841e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40eb83)throw new Error('File\x20path\x20is\x20required');const _0x20339c=await fetch(API_BASE+'/tasks/'+_0x5841e7+'/files?path='+encodeURIComponent(_0x40eb83),{'method':'DELETE'});if(!_0x20339c['ok']){const _0x3fb68d=await _0x20339c['json']()['catch'](()=>({}));throw new Error(_0x3fb68d['error']||_0x3fb68d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x20339c['statusText']);}return await _0x20339c['json']();},async 'deleteDirectory'(_0x298308,_0x2ea275){if(!_0x298308)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ea275)throw new Error('Directory\x20path\x20is\x20required');const _0x344bf5=await fetch(API_BASE+'/tasks/'+_0x298308+'/files/directory?path='+encodeURIComponent(_0x2ea275),{'method':'DELETE'});if(!_0x344bf5['ok']){const _0x3caf54=await _0x344bf5['json']()['catch'](()=>({}));throw new Error(_0x3caf54['error']||_0x3caf54['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x344bf5['statusText']);}return await _0x344bf5['json']();},async 'discardFile'(_0xc29d1d,_0x635c39,_0x5c991f){if(!_0xc29d1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x635c39)throw new Error('File\x20path\x20is\x20required');if(!_0x5c991f)throw new Error('Repository\x20path\x20is\x20required');const _0x224b7a=await fetch(API_BASE+'/tasks/'+_0xc29d1d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x635c39,'repoPath':_0x5c991f})});if(!_0x224b7a['ok']){const _0x5e0bcb=await _0x224b7a['json']()['catch'](()=>({}));throw new Error(_0x5e0bcb['error']||_0x5e0bcb['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x224b7a['statusText']);}return await _0x224b7a['json']();},async 'followUpTask'(_0x23481f,_0x28ba02={}){if(!_0x23481f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28ba02['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3a1891,_0x3e4cd9={};if(_0x28ba02['files']&&_0x28ba02['files']['length']>0x0){const _0x4f0813=new FormData();_0x4f0813['append']('instructions',_0x28ba02['instructions']);for(const _0x1d5368 of _0x28ba02['files']){_0x4f0813['append']('attachments',_0x1d5368);}_0x3a1891=_0x4f0813;}else _0x3e4cd9['Content-Type']='application/json',_0x3a1891=JSON['stringify']({'instructions':_0x28ba02['instructions']});const _0x4645bc=await fetch(API_BASE+'/tasks/'+_0x23481f+'/follow-up',{'method':'POST','headers':_0x3e4cd9,'body':_0x3a1891});if(!_0x4645bc['ok']){const _0xcece5b=await _0x4645bc['json']()['catch'](()=>({}));throw new Error(_0xcece5b['error']||_0xcece5b['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4645bc['statusText']);}return await _0x4645bc['json']();},async 'getTaskRewindPoints'(_0x6ff0ce){if(!_0x6ff0ce)throw new Error('Task\x20ID\x20is\x20required');const _0x60dabe=await fetch(API_BASE+'/tasks/'+_0x6ff0ce+'/rewind-points');if(!_0x60dabe['ok']){const _0x5657c7=await _0x60dabe['json']()['catch'](()=>({}));throw new Error(_0x5657c7['error']||_0x5657c7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x60dabe['statusText']);}return await _0x60dabe['json']();},async 'rewindTask'(_0x7bdd78,_0x58faa7={}){if(!_0x7bdd78)throw new Error('Task\x20ID\x20is\x20required');const _0x33def1=Number['isInteger'](_0x58faa7['targetFollowUpCount'])?_0x58faa7['targetFollowUpCount']:0x0,_0x16843b={'targetFollowUpCount':_0x33def1};typeof _0x58faa7['instructions']==='string'&&_0x58faa7['instructions']['trim']()&&(_0x16843b['instructions']=_0x58faa7['instructions']['trim']());typeof _0x58faa7['rewindFiles']==='boolean'&&(_0x16843b['rewindFiles']=_0x58faa7['rewindFiles']);const _0x2b16b4=await fetch(API_BASE+'/tasks/'+_0x7bdd78+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16843b)});if(!_0x2b16b4['ok']){const _0x1c469d=await _0x2b16b4['json']()['catch'](()=>({}));throw new Error(_0x1c469d['error']||_0x1c469d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b16b4['statusText']);}return await _0x2b16b4['json']();},async 'login'(_0x423091,_0xd34bf0){const _0x2b44fd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x423091,'password':_0xd34bf0})});if(!_0x2b44fd['ok']){const _0xbaa34b=await _0x2b44fd['json']();throw new Error(_0xbaa34b['message']||'Login\x20failed');}return await _0x2b44fd['json']();},async 'logout'(){const _0x4fa8d0=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4fa8d0['ok']){const _0x1c878e=await _0x4fa8d0['json']();throw new Error(_0x1c878e['message']||'Logout\x20failed');}return await _0x4fa8d0['json']();},async 'getCurrentUser'(){const _0x58b7df=await fetch(API_BASE+'/auth/me');if(!_0x58b7df['ok'])throw new Error('Not\x20authenticated');const _0x3f0e34=await _0x58b7df['json']();return _0x3f0e34['user'];},async 'getRolesInfo'(){const _0xed7a9d=await fetch(API_BASE+'/users/roles');if(!_0xed7a9d['ok']){const _0x50ed71=await _0xed7a9d['json']();throw new Error(_0x50ed71['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0xed7a9d['json']();},async 'getUsers'(){const _0x167af7=await fetch(API_BASE+'/users');if(!_0x167af7['ok']){const _0x34641e=await _0x167af7['json']();throw new Error(_0x34641e['message']||'Failed\x20to\x20get\x20users');}return await _0x167af7['json']();},async 'getUser'(_0x1d148c){const _0x366630=await fetch(API_BASE+'/users/'+_0x1d148c);if(!_0x366630['ok']){const _0x386da8=await _0x366630['json']();throw new Error(_0x386da8['message']||'Failed\x20to\x20get\x20user');}return await _0x366630['json']();},async 'createUser'(_0x4469fd){const _0x35906a=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4469fd)});if(!_0x35906a['ok']){const _0x1e6fe1=await _0x35906a['json']();throw new Error(_0x1e6fe1['message']||'Failed\x20to\x20create\x20user');}return await _0x35906a['json']();},async 'updateUser'(_0x251eaa,_0x25a6d9){const _0x3df9f5=await fetch(API_BASE+'/users/'+_0x251eaa,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a6d9)});if(!_0x3df9f5['ok']){const _0x3f6d3d=await _0x3df9f5['json']();throw new Error(_0x3f6d3d['message']||'Failed\x20to\x20update\x20user');}return await _0x3df9f5['json']();},async 'deleteUser'(_0x1ce6fe){const _0x4eac12=await fetch(API_BASE+'/users/'+_0x1ce6fe,{'method':'DELETE'});if(!_0x4eac12['ok']){const _0x41b456=await _0x4eac12['json']();throw new Error(_0x41b456['message']||'Failed\x20to\x20delete\x20user');}return await _0x4eac12['json']();},async 'stopAllContainers'(){const _0x212899=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x381468=await _0x212899['json']()['catch'](()=>({}));if(!_0x212899['ok'])throw new Error(_0x381468['message']||_0x381468['error']||'Failed\x20to\x20stop\x20containers');return _0x381468;},async 'removeStoppedContainers'(){const _0x3c5ab1=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x18f32c=await _0x3c5ab1['json']()['catch'](()=>({}));if(!_0x3c5ab1['ok'])throw new Error(_0x18f32c['message']||_0x18f32c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x18f32c;},async 'pruneDockerResources'(){const _0x3b00c3=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4e159d=await _0x3b00c3['json']()['catch'](()=>({}));if(!_0x3b00c3['ok'])throw new Error(_0x4e159d['message']||_0x4e159d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4e159d;},async 'getUpdateSettings'(){const _0x26d908=await fetch(API_BASE+'/health/update-settings'),_0x55c7e5=await _0x26d908['json']()['catch'](()=>({}));if(!_0x26d908['ok'])throw new Error(_0x55c7e5['message']||_0x55c7e5['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x55c7e5;},async 'applyServerUpdate'(_0xf162b0){const _0x288d0c=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0xf162b0})}),_0x521e14=await _0x288d0c['json']()['catch'](()=>({}));if(!_0x288d0c['ok']){const _0x24c665=new Error(_0x521e14['message']||_0x521e14['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x521e14['output']!==undefined)_0x24c665['output']=_0x521e14['output'];if(_0x521e14['error']!==undefined)_0x24c665['commandError']=_0x521e14['error'];throw _0x24c665;}return _0x521e14;},async 'restartServer'(){const _0x3353d0=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2134f8=await _0x3353d0['json']()['catch'](()=>({}));if(!_0x3353d0['ok'])throw new Error(_0x2134f8['message']||_0x2134f8['error']||'Failed\x20to\x20restart\x20server');return _0x2134f8;},async 'createPasswordToken'(_0x438a9f,_0x130605='setup',_0x55c930=![]){const _0x19df6e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x438a9f,'type':_0x130605,'sendEmail':_0x55c930})});if(!_0x19df6e['ok']){const _0x5dfd8d=await _0x19df6e['json']();throw new Error(_0x5dfd8d['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x19df6e['json']();},async 'getEmailConfig'(){const _0x3dc1fa=await fetch(API_BASE+'/password/email-config');if(!_0x3dc1fa['ok']){const _0x4f3f64=await _0x3dc1fa['json']();throw new Error(_0x4f3f64['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3dc1fa['json']();},async 'updateTaskName'(_0x2d3d8b,_0x40aea1){const _0x11b0c6=await fetch(API_BASE+'/tasks/'+_0x2d3d8b,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x40aea1})});if(!_0x11b0c6['ok']){const _0x5b0791=await _0x11b0c6['json']();throw new Error(_0x5b0791['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x11b0c6['json']();},async 'pinTask'(_0x351c93,_0x3f10ce,_0xf3e900=null){if(!_0x351c93)throw new Error('Task\x20ID\x20is\x20required');const _0x1e5de7={'pinned':_0x3f10ce};_0xf3e900&&_0xf3e900['length']>0x0&&(_0x1e5de7['additionalTaskIds']=_0xf3e900);const _0xe6a13c=await fetch(API_BASE+'/tasks/'+_0x351c93+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e5de7)});if(!_0xe6a13c['ok']){const _0x352cb6=await _0xe6a13c['json']();throw new Error(_0x352cb6['error']||'Failed\x20to\x20pin\x20task');}return await _0xe6a13c['json']();},async 'setTaskWinner'(_0x377fc7,_0x31f1be,_0x3d06f9=[]){if(!_0x377fc7)throw new Error('Task\x20ID\x20is\x20required');const _0x3d4bda=await fetch(API_BASE+'/tasks/'+_0x377fc7+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x31f1be,'siblings':_0x3d06f9})});if(!_0x3d4bda['ok']){const _0x1574ad=await _0x3d4bda['json']();throw new Error(_0x1574ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3d4bda['json']();},async 'setTaskLoser'(_0x337684,_0x3606ba){if(!_0x337684)throw new Error('Task\x20ID\x20is\x20required');const _0x1ff393=await fetch(API_BASE+'/tasks/'+_0x337684+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3606ba})});if(!_0x1ff393['ok']){const _0x25e00d=await _0x1ff393['json']();throw new Error(_0x25e00d['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1ff393['json']();},async 'createTaskGroup'(_0x4c675c){const _0x44fe90=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c675c)});if(!_0x44fe90['ok']){const _0x599c6f=await _0x44fe90['json']();throw new Error(_0x599c6f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x44fe90['json']();},async 'getTaskGroups'(_0x31045a={}){const _0x51bd46=new URLSearchParams();if(_0x31045a['userId'])_0x51bd46['set']('userId',String(_0x31045a['userId']));if(_0x31045a['status'])_0x51bd46['set']('status',String(_0x31045a['status']));if(_0x31045a['limit'])_0x51bd46['set']('limit',String(_0x31045a['limit']));const _0x363de9=API_BASE+'/tasks/groups'+(_0x51bd46['toString']()?'?'+_0x51bd46['toString']():''),_0x2472f0=await fetch(_0x363de9);if(!_0x2472f0['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2472f0['json']();},async 'getTaskGroup'(_0x40b0d3){const _0x1dc6a9=await fetch(API_BASE+'/tasks/groups/'+_0x40b0d3);if(!_0x1dc6a9['ok']){const _0x1ad599=await _0x1dc6a9['json']();throw new Error(_0x1ad599['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x1dc6a9['json']();},async 'updateTaskGroup'(_0x9f53a3,_0x18521d,_0x53aae4){const _0x3b4e25=await fetch(API_BASE+'/tasks/'+_0x9f53a3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x18521d,'groupIndex':_0x53aae4})});if(!_0x3b4e25['ok']){const _0x39f46e=await _0x3b4e25['json']();throw new Error(_0x39f46e['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3b4e25['json']();},async 'removeTaskFromGroup'(_0x5bec8f){return this['updateTaskGroup'](_0x5bec8f,null,null);},async 'deleteTaskGroup'(_0x2d72a2,_0x487e0f=![]){const _0x86ee86=_0x487e0f?'?deleteTasks=true':'',_0x346958=await fetch(API_BASE+'/tasks/groups/'+_0x2d72a2+_0x86ee86,{'method':'DELETE'});if(!_0x346958['ok']){const _0x359455=await _0x346958['json']();throw new Error(_0x359455['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3cb548,_0x2119a1){const _0x3a6b50=await fetch(API_BASE+'/tasks/groups/'+_0x3cb548+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2119a1})});if(!_0x3a6b50['ok']){const _0x43e6c6=await _0x3a6b50['json']();throw new Error(_0x43e6c6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3a6b50['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54d33f){if(!_0x54d33f)throw new Error('Task\x20ID\x20is\x20required');const _0x45d50c=await fetch(API_BASE+'/tasks/'+_0x54d33f+'/comments');if(!_0x45d50c['ok']){const _0x16770b=await _0x45d50c['json']()['catch'](()=>({}));throw new Error(_0x16770b['error']||'Failed\x20to\x20get\x20comments');}return await _0x45d50c['json']();},async 'addComment'(_0x52ee28,_0x6f57b6){if(!_0x52ee28)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6f57b6)throw new Error('Comment\x20content\x20is\x20required');const _0x113212=await fetch(API_BASE+'/tasks/'+_0x52ee28+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x6f57b6})});if(!_0x113212['ok']){const _0x4edc86=await _0x113212['json']()['catch'](()=>({}));throw new Error(_0x4edc86['error']||'Failed\x20to\x20add\x20comment');}return await _0x113212['json']();},async 'updateComment'(_0x5de9cf,_0x341ac5,_0xcec240){if(!_0x5de9cf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x341ac5)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xcec240)throw new Error('Comment\x20content\x20is\x20required');const _0x2d5cb4=await fetch(API_BASE+'/tasks/'+_0x5de9cf+'/comments/'+_0x341ac5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xcec240})});if(!_0x2d5cb4['ok']){const _0xd96636=await _0x2d5cb4['json']()['catch'](()=>({}));throw new Error(_0xd96636['error']||'Failed\x20to\x20update\x20comment');}return await _0x2d5cb4['json']();},async 'deleteComment'(_0x1927fa,_0x52dda7){if(!_0x1927fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x52dda7)throw new Error('Comment\x20ID\x20is\x20required');const _0x203506=await fetch(API_BASE+'/tasks/'+_0x1927fa+'/comments/'+_0x52dda7,{'method':'DELETE'});if(!_0x203506['ok']){const _0x5ef27d=await _0x203506['json']()['catch'](()=>({}));throw new Error(_0x5ef27d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203506['json']();},async 'createObjective'(_0x1fb8d9){const _0x25b299={'objective':!![],'name':_0x1fb8d9['name']||'','environment':_0x1fb8d9['environment']||null,'agents':_0x1fb8d9['agents']||[],'branches':_0x1fb8d9['branches']||{},'isPinned':_0x1fb8d9['isPinned']||![],'parentObjectiveId':_0x1fb8d9['parentObjectiveId']||null,'env_vars':_0x1fb8d9['envVars']||{},'parameters':{'instructions':_0x1fb8d9['instructions']||''},'files':_0x1fb8d9['files']||[],'jira':_0x1fb8d9['jira']||null};return this['createTask'](_0x25b299);},async 'updateObjective'(_0x339c0a,_0x21cd48,_0x2aaa97=[],_0x1e8cd0=[]){let _0x83342d,_0x2a0b02={};const _0x428d5c={..._0x21cd48};_0x1e8cd0&&_0x1e8cd0['length']>0x0&&(_0x428d5c['removeAttachments']=_0x1e8cd0);if(_0x2aaa97&&_0x2aaa97['length']>0x0){const _0x30bd82=new FormData();for(const [_0x127d1b,_0x31e9ce]of Object['entries'](_0x428d5c)){if(_0x31e9ce==null)continue;typeof _0x31e9ce==='object'?_0x30bd82['append'](_0x127d1b,JSON['stringify'](_0x31e9ce)):_0x30bd82['append'](_0x127d1b,String(_0x31e9ce));}for(const _0x5088b5 of _0x2aaa97){_0x30bd82['append']('attachments',_0x5088b5);}_0x83342d=_0x30bd82;}else _0x2a0b02['Content-Type']='application/json',_0x83342d=JSON['stringify'](_0x428d5c);const _0x24c043=await fetch(API_BASE+'/tasks/'+_0x339c0a,{'method':'PATCH','headers':_0x2a0b02,'body':_0x83342d});if(!_0x24c043['ok']){const _0xf1dee3=await _0x24c043['json']();throw new Error(_0xf1dee3['error']||'Failed\x20to\x20update\x20objective');}return await _0x24c043['json']();},async 'deleteObjective'(_0x4d8753){return this['deleteTask'](_0x4d8753);},async 'launchObjective'(_0x1fcee9,_0x306f6b={}){const _0x1d683f=await fetch(API_BASE+'/tasks/'+_0x1fcee9+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306f6b)});if(!_0x1d683f['ok']){const _0x4c0bc8=await _0x1d683f['json']();throw new Error(_0x4c0bc8['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d683f['json']();},async 'getObjectiveAttachments'(_0x54d4d9){return this['getTaskAttachments'](_0x54d4d9);},async 'createJudgeTask'({environment:_0x10080e,judgeAgent:_0x52c796,groupId:_0x3d0a16,taskIds:_0x1841f1,judgeCustomInstructions:_0x3e1e90,isPinned:_0x1668e5}){const _0x2a9882=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x10080e,'judgeAgent':_0x52c796,'groupId':_0x3d0a16,'taskIds':_0x1841f1,'judgeCustomInstructions':_0x3e1e90,'isPinned':_0x1668e5})});if(!_0x2a9882['ok']){const _0x3e57bd=await _0x2a9882['json']();throw new Error(_0x3e57bd['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2a9882['json']();},async 'getJudgeTasks'(_0x2af37e){const _0xc1d7f3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2af37e));if(!_0xc1d7f3['ok']){const _0x81ea90=await _0xc1d7f3['json']();throw new Error(_0x81ea90['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xc1d7f3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5465f2,_0x3a1c60,_0x3adc75=''){const _0x297879=await fetch(API_BASE+'/tasks/'+_0x5465f2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3a1c60,'customPreamble':_0x3adc75})});if(!_0x297879['ok']){const _0xa17a04=await _0x297879['json']();throw new Error(_0xa17a04['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x297879['json']();},async 'getJiraConfig'(){const _0x5ba094=await fetch(API_BASE+'/jira/config');if(!_0x5ba094['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5ba094['json']();},async 'getJiraIssue'(_0x73365){const _0x39b1a3=await fetch(API_BASE+'/jira/issues/'+_0x73365);if(!_0x39b1a3['ok']){const _0xf5f3c8=await _0x39b1a3['json']()['catch'](()=>({}));throw new Error(_0xf5f3c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x39b1a3['statusText']);}return await _0x39b1a3['json']();},async 'searchJiraIssues'(_0x485b8f,_0x5e8e42=0x14){const _0x55be17=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x485b8f,'maxResults':_0x5e8e42})});if(!_0x55be17['ok']){const _0x2482ff=await _0x55be17['json']()['catch'](()=>({}));throw new Error(_0x2482ff['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x55be17['statusText']);}return await _0x55be17['json']();},async 'postJiraComment'(_0x411262,_0xa39e75){const _0x45bbc0=await fetch(API_BASE+'/jira/issues/'+_0x411262+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xa39e75})});if(!_0x45bbc0['ok']){const _0x3c4f8d=await _0x45bbc0['json']()['catch'](()=>({}));throw new Error(_0x3c4f8d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x45bbc0['statusText']);}return await _0x45bbc0['json']();},async 'getJiraComments'(_0x2d0ebf){const _0x3d40de=await fetch(API_BASE+'/jira/issues/'+_0x2d0ebf+'/comments');if(!_0x3d40de['ok']){const _0x5ab673=await _0x3d40de['json']()['catch'](()=>({}));throw new Error(_0x5ab673['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d40de['statusText']);}return await _0x3d40de['json']();},async 'promptParameter'({environment:_0x117ff0,command:_0x1c0e44,parser:parser='json'}){const _0x523103=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x117ff0,'command':_0x1c0e44,'parser':parser})});if(!_0x523103['ok']){const _0x391923=await _0x523103['json']()['catch'](()=>({}));throw new Error(_0x391923['message']||_0x391923['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x523103['statusText']);}return await _0x523103['json']();},async 'promptParameterStream'(_0x573469,_0x8c6319){const _0x164fca=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573469)});if(!_0x164fca['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x164fca['statusText']);const _0x2d5c9b=_0x164fca['body']['getReader'](),_0x4d5f8e=new TextDecoder();let _0x495fbb='';return new Promise((_0x447272,_0x3e5340)=>{const _0x30e465=async()=>{try{const {done:_0x34a25d,value:_0x3e46b7}=await _0x2d5c9b['read']();if(_0x34a25d)return;_0x495fbb+=_0x4d5f8e['decode'](_0x3e46b7,{'stream':!![]});const _0x11944a=_0x495fbb['split']('\x0a\x0a');_0x495fbb=_0x11944a['pop']()||'';for(const _0x47db96 of _0x11944a){if(!_0x47db96['trim']())continue;const _0x5b8938=_0x47db96['split']('\x0a');let _0x407101='message',_0x1ccc01='';for(const _0x2cfec4 of _0x5b8938){if(_0x2cfec4['startsWith']('event:'))_0x407101=_0x2cfec4['substring'](0x6)['trim']();else _0x2cfec4['startsWith']('data:')&&(_0x1ccc01=_0x2cfec4['substring'](0x5)['trim']());}if(!_0x1ccc01)continue;try{const _0x2926d6=JSON['parse'](_0x1ccc01);if(_0x407101==='progress'&&_0x8c6319)_0x8c6319(_0x2926d6['stage'],_0x2926d6['message']);else{if(_0x407101==='result'){_0x447272(_0x2926d6);return;}else{if(_0x407101==='error'){let _0xfe64ef=_0x2926d6['message']||_0x2926d6['error']||'Prompt\x20command\x20failed';_0x2926d6['rawOutput']&&(_0xfe64ef+='\x0a\x0aRaw\x20output:\x0a'+_0x2926d6['rawOutput']);_0x3e5340(new Error(_0xfe64ef));return;}}}}catch(_0x110933){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x110933),console['error']('Event\x20type:',_0x407101),console['error']('Event\x20data:',_0x1ccc01),console['error']('First\x20200\x20chars:',_0x1ccc01['substring'](0x0,0xc8)),_0x3e5340(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x110933['message']+'\x0a\x0aData:\x20'+_0x1ccc01['substring'](0x0,0x1f4)));return;}}_0x30e465();}catch(_0x293480){_0x3e5340(_0x293480);}};_0x30e465();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x59448f){const _0x5613d0=await fetch(''+API_BASE+_0x59448f);if(!_0x5613d0['ok']){const _0x48f4bb=await _0x5613d0['json']()['catch'](()=>({'error':_0x5613d0['statusText']})),_0xc5b633=new Error(_0x48f4bb['error']||_0x48f4bb['message']||_0x5613d0['statusText']);if(_0x48f4bb['detail']!==undefined)_0xc5b633['detail']=_0x48f4bb['detail'];throw _0xc5b633;}return await _0x5613d0['json']();},async 'post'(_0x4ea2ff,_0x485749){const _0x571cec=await fetch(''+API_BASE+_0x4ea2ff,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x485749)});if(!_0x571cec['ok']){const _0x421308=await _0x571cec['json']()['catch'](()=>({'error':_0x571cec['statusText']})),_0x39f8fb=new Error(_0x421308['error']||_0x421308['message']||_0x571cec['statusText']);if(_0x421308['detail']!==undefined)_0x39f8fb['detail']=_0x421308['detail'];throw _0x39f8fb;}return await _0x571cec['json']();},async 'put'(_0x2ae990,_0x1de217){const _0x26fbd0=await fetch(''+API_BASE+_0x2ae990,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1de217)});if(!_0x26fbd0['ok']){const _0x1b14e5=await _0x26fbd0['json']()['catch'](()=>({'error':_0x26fbd0['statusText']})),_0x344d64=new Error(_0x1b14e5['error']||_0x1b14e5['message']||_0x26fbd0['statusText']);if(_0x1b14e5['detail']!==undefined)_0x344d64['detail']=_0x1b14e5['detail'];throw _0x344d64;}return await _0x26fbd0['json']();},async 'delete'(_0x5f4de3,_0x47d8fd){const _0x388832={'method':'DELETE'};_0x47d8fd&&(_0x388832['headers']={'Content-Type':'application/json'},_0x388832['body']=JSON['stringify'](_0x47d8fd));const _0x3db63e=await fetch(''+API_BASE+_0x5f4de3,_0x388832);if(!_0x3db63e['ok']){const _0x16e51c=await _0x3db63e['json']()['catch'](()=>({'error':_0x3db63e['statusText']})),_0x28751a=new Error(_0x16e51c['error']||_0x16e51c['message']||_0x3db63e['statusText']);if(_0x16e51c['detail']!==undefined)_0x28751a['detail']=_0x16e51c['detail'];throw _0x28751a;}return await _0x3db63e['json']();},async 'getSkills'(){const _0x37942b=await fetch(API_BASE+'/skills');if(!_0x37942b['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x37942b['statusText']);return await _0x37942b['json']();},async 'getSkill'(_0x1e771){const _0x5a27c6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e771));if(!_0x5a27c6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5a27c6['statusText']);return await _0x5a27c6['json']();},async 'createSkill'(_0x23aebe){const _0x83dd86=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23aebe)});if(!_0x83dd86['ok']){const _0x2cb2f9=await _0x83dd86['json']()['catch'](()=>({'error':_0x83dd86['statusText']})),_0x3337ec=new Error(_0x2cb2f9['error']||_0x2cb2f9['message']||_0x83dd86['statusText']);if(_0x2cb2f9['detail']!==undefined)_0x3337ec['detail']=_0x2cb2f9['detail'];throw _0x3337ec;}return await _0x83dd86['json']();},async 'updateSkill'(_0x328c73,_0xe8ef4a){const _0x4b389e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x328c73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe8ef4a)});if(!_0x4b389e['ok']){const _0x43defd=await _0x4b389e['json']()['catch'](()=>({'error':_0x4b389e['statusText']})),_0x210724=new Error(_0x43defd['error']||_0x43defd['message']||_0x4b389e['statusText']);if(_0x43defd['detail']!==undefined)_0x210724['detail']=_0x43defd['detail'];throw _0x210724;}return await _0x4b389e['json']();},async 'deleteSkill'(_0x2d8d57){const _0x3de931=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d8d57),{'method':'DELETE'});if(!_0x3de931['ok']){const _0x958dd5=await _0x3de931['json']()['catch'](()=>({'error':_0x3de931['statusText']})),_0x13ab3b=new Error(_0x958dd5['error']||_0x958dd5['message']||_0x3de931['statusText']);if(_0x958dd5['detail']!==undefined)_0x13ab3b['detail']=_0x958dd5['detail'];throw _0x13ab3b;}return await _0x3de931['json']();},async 'getSkillFile'(_0x3e2dd8,_0xa695d4){const _0x3b60df=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3e2dd8)+'/files/'+_0xa695d4);if(!_0x3b60df['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3b60df['statusText']);return await _0x3b60df['json']();},async 'saveSkillFile'(_0x4296db,_0x3fa731,_0x4d11a3){const _0x397279=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4296db)+'/files/'+_0x3fa731,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4d11a3})});if(!_0x397279['ok']){const _0x2af86f=await _0x397279['json']()['catch'](()=>({'error':_0x397279['statusText']})),_0x4f925d=new Error(_0x2af86f['error']||_0x2af86f['message']||_0x397279['statusText']);if(_0x2af86f['detail']!==undefined)_0x4f925d['detail']=_0x2af86f['detail'];throw _0x4f925d;}return await _0x397279['json']();},async 'deleteSkillFile'(_0x4ee132,_0x49d813){const _0xa3bf95=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4ee132)+'/files/'+_0x49d813,{'method':'DELETE'});if(!_0xa3bf95['ok']){const _0xd45a12=await _0xa3bf95['json']()['catch'](()=>({'error':_0xa3bf95['statusText']})),_0x585b93=new Error(_0xd45a12['error']||_0xd45a12['message']||_0xa3bf95['statusText']);if(_0xd45a12['detail']!==undefined)_0x585b93['detail']=_0xd45a12['detail'];throw _0x585b93;}return await _0xa3bf95['json']();},async 'pullSkills'(){const _0x13d025=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x13d025['ok']){const _0x563929=await _0x13d025['json']()['catch'](()=>({'error':_0x13d025['statusText']})),_0x51b8eb=new Error(_0x563929['error']||_0x563929['message']||_0x13d025['statusText']);if(_0x563929['detail']!==undefined)_0x51b8eb['detail']=_0x563929['detail'];throw _0x51b8eb;}return await _0x13d025['json']();},async 'commitSkills'(_0x197aff,_0x47ae25={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x47ae25,_0x57f03f=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x197aff,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x57f03f['ok']){const _0x1cdaa4=await _0x57f03f['json']()['catch'](()=>({'error':_0x57f03f['statusText']})),_0x2e8964=new Error(_0x1cdaa4['error']||_0x1cdaa4['message']||_0x57f03f['statusText']);if(_0x1cdaa4['detail']!==undefined)_0x2e8964['detail']=_0x1cdaa4['detail'];throw _0x2e8964;}return await _0x57f03f['json']();},async 'discardSkillsChanges'(){const _0x31b6ca=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x31b6ca['ok']){const _0x2fed7f=await _0x31b6ca['json']()['catch'](()=>({'error':_0x31b6ca['statusText']})),_0x186e0c=new Error(_0x2fed7f['error']||_0x2fed7f['message']||_0x31b6ca['statusText']);if(_0x2fed7f['detail']!==undefined)_0x186e0c['detail']=_0x2fed7f['detail'];throw _0x186e0c;}return await _0x31b6ca['json']();},async 'getSkillCatalog'(){const _0x2fc705=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2fc705['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2fc705['statusText']);return await _0x2fc705['json']();},async 'getImportedSkillsRegistry'(){const _0x8b455c=await fetch(API_BASE+'/external-skills/registry');if(!_0x8b455c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x8b455c['statusText']);return await _0x8b455c['json']();},async 'importCatalogSkill'(_0x4cc3cf){const _0x1ee464=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4cc3cf})});if(!_0x1ee464['ok']){const _0x5d09c9=await _0x1ee464['json']()['catch'](()=>({'error':_0x1ee464['statusText']})),_0x32fd2c=new Error(_0x5d09c9['error']||_0x5d09c9['message']||_0x1ee464['statusText']);if(_0x5d09c9['detail']!==undefined)_0x32fd2c['detail']=_0x5d09c9['detail'];throw _0x32fd2c;}return await _0x1ee464['json']();},async 'importSkillFromGit'(_0x13bc5f,_0x5c7c29,_0x43ed9e='main',_0x14a4bd=null){const _0x1a5807=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13bc5f,'skillPath':_0x5c7c29,'branch':_0x43ed9e,'skillId':_0x14a4bd})});if(!_0x1a5807['ok']){const _0x3c4e29=await _0x1a5807['json']()['catch'](()=>({'error':_0x1a5807['statusText']})),_0x290c57=new Error(_0x3c4e29['error']||_0x3c4e29['message']||_0x1a5807['statusText']);if(_0x3c4e29['detail']!==undefined)_0x290c57['detail']=_0x3c4e29['detail'];throw _0x290c57;}return await _0x1a5807['json']();},async 'probeMarketplace'(_0x2cdf96,_0x4d1a89='main'){const _0x3eaed4=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2cdf96,'branch':_0x4d1a89})});if(!_0x3eaed4['ok']){const _0x4c8ac1=await _0x3eaed4['json']()['catch'](()=>({'error':_0x3eaed4['statusText']})),_0x5197b7=new Error(_0x4c8ac1['error']||_0x4c8ac1['message']||_0x3eaed4['statusText']);if(_0x4c8ac1['detail']!==undefined)_0x5197b7['detail']=_0x4c8ac1['detail'];throw _0x5197b7;}return await _0x3eaed4['json']();},async 'importMarketplaceBundle'(_0x5dba8b,_0x106fde,_0x2e939b,_0x4ad835=null){const _0x3cd568=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5dba8b,'branch':_0x106fde,'bundleId':_0x2e939b,'selectedSkills':_0x4ad835})});if(!_0x3cd568['ok']){const _0x2fe93d=await _0x3cd568['json']()['catch'](()=>({'error':_0x3cd568['statusText']})),_0x5c0540=new Error(_0x2fe93d['error']||_0x2fe93d['message']||_0x3cd568['statusText']);if(_0x2fe93d['detail']!==undefined)_0x5c0540['detail']=_0x2fe93d['detail'];throw _0x5c0540;}return await _0x3cd568['json']();},async 'importSkillFromFolder'(_0x2cb514,_0x400f2c=null){const _0x1db680=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2cb514,'skillId':_0x400f2c})});if(!_0x1db680['ok']){const _0x3c353d=await _0x1db680['json']()['catch'](()=>({'error':_0x1db680['statusText']})),_0xd40a49=new Error(_0x3c353d['error']||_0x3c353d['message']||_0x1db680['statusText']);if(_0x3c353d['detail']!==undefined)_0xd40a49['detail']=_0x3c353d['detail'];throw _0xd40a49;}return await _0x1db680['json']();},async 'importSkillFromNpm'(_0x593a13,_0x1cfec8='latest',_0x58ee79=null,_0x4a13cc=null){const _0x7dcb62=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x593a13,'version':_0x1cfec8,'skillId':_0x58ee79,'registry':_0x4a13cc})});if(!_0x7dcb62['ok']){const _0x1d3af1=await _0x7dcb62['json']()['catch'](()=>({'error':_0x7dcb62['statusText']})),_0x16056c=new Error(_0x1d3af1['error']||_0x1d3af1['message']||_0x7dcb62['statusText']);if(_0x1d3af1['detail']!==undefined)_0x16056c['detail']=_0x1d3af1['detail'];throw _0x16056c;}return await _0x7dcb62['json']();},async 'checkSkillUpdates'(_0x8c1560){const _0x123240=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x8c1560)+'/check-updates',{'method':'POST'});if(!_0x123240['ok']){const _0x4370d3=await _0x123240['json']()['catch'](()=>({'error':_0x123240['statusText']})),_0x4a8d5f=new Error(_0x4370d3['error']||_0x4370d3['message']||_0x123240['statusText']);if(_0x4370d3['detail']!==undefined)_0x4a8d5f['detail']=_0x4370d3['detail'];throw _0x4a8d5f;}return await _0x123240['json']();},async 'updateExternalSkill'(_0x1d44f9){const _0x48b42b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1d44f9)+'/update',{'method':'POST'});if(!_0x48b42b['ok']){const _0x5874b2=await _0x48b42b['json']()['catch'](()=>({'error':_0x48b42b['statusText']})),_0x1747ce=new Error(_0x5874b2['error']||_0x5874b2['message']||_0x48b42b['statusText']);if(_0x5874b2['detail']!==undefined)_0x1747ce['detail']=_0x5874b2['detail'];throw _0x1747ce;}return await _0x48b42b['json']();},async 'updateSkillFlags'(_0x14ddaa,_0x48e7ed){const _0x5639c8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x14ddaa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x48e7ed})});if(!_0x5639c8['ok']){const _0xf94cb1=await _0x5639c8['json']()['catch'](()=>({'error':_0x5639c8['statusText']})),_0x247c7a=new Error(_0xf94cb1['error']||_0xf94cb1['message']||_0x5639c8['statusText']);if(_0xf94cb1['detail']!==undefined)_0x247c7a['detail']=_0xf94cb1['detail'];throw _0x247c7a;}return await _0x5639c8['json']();},async 'removeFromImportedRegistry'(_0x775278){const _0x123725=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x775278)+'/registry',{'method':'DELETE'});if(!_0x123725['ok']){const _0x25a8cc=await _0x123725['json']()['catch'](()=>({'error':_0x123725['statusText']})),_0x25bef5=new Error(_0x25a8cc['error']||_0x25a8cc['message']||_0x123725['statusText']);if(_0x25a8cc['detail']!==undefined)_0x25bef5['detail']=_0x25a8cc['detail'];throw _0x25bef5;}return await _0x123725['json']();},async 'getTeams'(){const _0x16771e=await fetch(API_BASE+'/teams');if(!_0x16771e['ok']){const _0xc83425=await _0x16771e['json']()['catch'](()=>({'message':_0x16771e['statusText']}));throw new Error(_0xc83425['message']||'Failed\x20to\x20get\x20teams');}return await _0x16771e['json']();},async 'getTeam'(_0x5463e7){const _0x38cad8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5463e7));if(!_0x38cad8['ok']){const _0x9fd4bb=await _0x38cad8['json']()['catch'](()=>({'message':_0x38cad8['statusText']}));throw new Error(_0x9fd4bb['message']||'Failed\x20to\x20get\x20team');}return await _0x38cad8['json']();},async 'createTeam'(_0x3a2bc7){const _0x2d0cfc=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2bc7)});if(!_0x2d0cfc['ok']){const _0x52b86e=await _0x2d0cfc['json']()['catch'](()=>({'message':_0x2d0cfc['statusText']}));throw new Error(_0x52b86e['message']||'Failed\x20to\x20create\x20team');}return await _0x2d0cfc['json']();},async 'updateTeam'(_0x10b8df,_0x3f690d){const _0x5e2070=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10b8df),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f690d)});if(!_0x5e2070['ok']){const _0x436442=await _0x5e2070['json']()['catch'](()=>({'message':_0x5e2070['statusText']}));throw new Error(_0x436442['message']||'Failed\x20to\x20update\x20team');}return await _0x5e2070['json']();},async 'deleteTeam'(_0x376bf0){const _0x593b31=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x376bf0),{'method':'DELETE'});if(!_0x593b31['ok']){const _0x3a3be5=await _0x593b31['json']()['catch'](()=>({'message':_0x593b31['statusText']}));throw new Error(_0x3a3be5['message']||'Failed\x20to\x20delete\x20team');}return await _0x593b31['json']();},async 'addTeamMember'(_0x42d915,_0x4a27ef){const _0x514c7c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x42d915)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4a27ef})});if(!_0x514c7c['ok']){const _0x47ca74=await _0x514c7c['json']()['catch'](()=>({'message':_0x514c7c['statusText']}));throw new Error(_0x47ca74['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x514c7c['json']();},async 'removeTeamMember'(_0x5474ff,_0x5c9f7c){const _0x1fc331=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5474ff)+'/members/'+encodeURIComponent(_0x5c9f7c),{'method':'DELETE'});if(!_0x1fc331['ok']){const _0x5545d3=await _0x1fc331['json']()['catch'](()=>({'message':_0x1fc331['statusText']}));throw new Error(_0x5545d3['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1fc331['json']();},async 'getBindings'(_0x23e0b0={}){const _0x44112b=new URLSearchParams();if(_0x23e0b0['resource_type'])_0x44112b['set']('resource_type',_0x23e0b0['resource_type']);if(_0x23e0b0['resource_id'])_0x44112b['set']('resource_id',_0x23e0b0['resource_id']);if(_0x23e0b0['subject_type'])_0x44112b['set']('subject_type',_0x23e0b0['subject_type']);if(_0x23e0b0['subject_id'])_0x44112b['set']('subject_id',_0x23e0b0['subject_id']);const _0x42ac4f=_0x44112b['toString'](),_0x56cc49=await fetch(API_BASE+'/bindings'+(_0x42ac4f?'?'+_0x42ac4f:''));if(!_0x56cc49['ok']){const _0x16a23b=await _0x56cc49['json']()['catch'](()=>({'message':_0x56cc49['statusText']}));throw new Error(_0x16a23b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x56cc49['json']();},async 'createBinding'(_0x2659f6){const _0x4b6709=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2659f6)});if(!_0x4b6709['ok']){const _0x3a1127=await _0x4b6709['json']()['catch'](()=>({'message':_0x4b6709['statusText']}));throw new Error(_0x3a1127['message']||'Failed\x20to\x20create\x20binding');}return await _0x4b6709['json']();},async 'updateBinding'(_0x18ecba,_0x304b4f){const _0x35fb5b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x18ecba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x304b4f)});if(!_0x35fb5b['ok']){const _0xdbc691=await _0x35fb5b['json']()['catch'](()=>({'message':_0x35fb5b['statusText']}));throw new Error(_0xdbc691['message']||'Failed\x20to\x20update\x20binding');}return await _0x35fb5b['json']();},async 'deleteBinding'(_0x2ca0e1){const _0x5094b3=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2ca0e1),{'method':'DELETE'});if(!_0x5094b3['ok']){const _0x5bb9e8=await _0x5094b3['json']()['catch'](()=>({'message':_0x5094b3['statusText']}));throw new Error(_0x5bb9e8['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5094b3['json']();},async 'getRoleDefinitions'(){const _0x3fa56e=await fetch(API_BASE+'/roles');if(!_0x3fa56e['ok']){const _0x331476=await _0x3fa56e['json']()['catch'](()=>({'message':_0x3fa56e['statusText']}));throw new Error(_0x331476['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x3fa56e['json']();},async 'getRoleDefinition'(_0x2286cd){const _0x5ad435=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2286cd));if(!_0x5ad435['ok']){const _0x3b33f8=await _0x5ad435['json']()['catch'](()=>({'message':_0x5ad435['statusText']}));throw new Error(_0x3b33f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5ad435['json']();},async 'createRoleDefinition'(_0x5cd667){const _0x171490=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cd667)});if(!_0x171490['ok']){const _0x2f713f=await _0x171490['json']()['catch'](()=>({'message':_0x171490['statusText']}));throw new Error(_0x2f713f['message']||_0x2f713f['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x171490['json']();},async 'updateRoleDefinition'(_0xb21e01,_0xd47223){const _0x8f964f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb21e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd47223)});if(!_0x8f964f['ok']){const _0x366b95=await _0x8f964f['json']()['catch'](()=>({'message':_0x8f964f['statusText']}));throw new Error(_0x366b95['message']||_0x366b95['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x8f964f['json']();},async 'deleteRoleDefinition'(_0x368f2b){const _0x1a9fc0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x368f2b),{'method':'DELETE'});if(!_0x1a9fc0['ok']){const _0x8db6db=await _0x1a9fc0['json']()['catch'](()=>({'message':_0x1a9fc0['statusText']}));throw new Error(_0x8db6db['message']||_0x8db6db['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x1a9fc0['json']();},async 'getAvailablePermissions'(){const _0x563458=await fetch(API_BASE+'/roles/available-permissions');if(!_0x563458['ok']){const _0x172abc=await _0x563458['json']()['catch'](()=>({'message':_0x563458['statusText']}));throw new Error(_0x172abc['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x563458['json']();},async 'getGitProviderAllowedTeams'(_0x456ca4){const _0x5761f8=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x456ca4)+'/allowed-teams');if(!_0x5761f8['ok']){const _0x2eb67c=await _0x5761f8['json']()['catch'](()=>({'message':_0x5761f8['statusText']}));throw new Error(_0x2eb67c['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5761f8['json']();},async 'setGitProviderAllowedTeams'(_0x4b2eb6,_0x3dc918){const _0x27674f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4b2eb6)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3dc918})});if(!_0x27674f['ok']){const _0x49ea87=await _0x27674f['json']()['catch'](()=>({'message':_0x27674f['statusText']}));throw new Error(_0x49ea87['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x27674f['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 _0x173ca9=toastState['baseBottom'];toastState['toasts']['forEach'](_0x350b08=>{_0x350b08['el']['style']['bottom']=_0x173ca9+'px';const _0x34814f=_0x350b08['el']['offsetHeight']||toastState['defaultHeight'];_0x173ca9+=_0x34814f+toastState['gap'];});});}function removeToastById(_0x424197){const _0x57fc8a=toastState['toasts']['findIndex'](_0xf0ab31=>_0xf0ab31['id']===_0x424197);if(_0x57fc8a===-0x1)return;const _0x1937d2=toastState['toasts'][_0x57fc8a];if(_0x1937d2['timeoutId'])clearTimeout(_0x1937d2['timeoutId']);_0x1937d2['el']['classList']['remove']('show'),setTimeout(()=>_0x1937d2['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x57fc8a,0x1),repositionAllToasts();}function registerToast(_0x81ff68){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x81ff68),repositionAllToasts(),_0x81ff68['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(_0x412aa1){if(_0x412aa1===null||_0x412aa1===undefined)return'';return String(_0x412aa1)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x4ca0c9,_0x50c522){if(_0x4ca0c9&&typeof _0x4ca0c9==='object'&&!Array['isArray'](_0x4ca0c9))return{'code':typeof _0x4ca0c9['text']==='string'?_0x4ca0c9['text']:'','language':typeof _0x4ca0c9['lang']==='string'?_0x4ca0c9['lang']:''};return{'code':typeof _0x4ca0c9==='string'?_0x4ca0c9:'','language':typeof _0x50c522==='string'?_0x50c522:''};}function buildMermaidBlock(_0xe21a9d){const _0x4658f0=String(_0xe21a9d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4658f0))+'\x22>'+escapeHtmlValue(_0x4658f0)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x37b0df=new marked['Renderer'](),_0x1fefee=_0x37b0df['code']['bind'](_0x37b0df);return _0x37b0df['code']=function(_0x3921e5,_0x3b7ab1,..._0x3f85e4){const {code:_0x55adc5,language:_0xe34154}=getMarkdownCodeBlockPayload(_0x3921e5,_0x3b7ab1),_0x35941a=String(_0xe34154||'')['trim']()['toLowerCase']();if(_0x35941a==='mermaid')return buildMermaidBlock(_0x55adc5);const _0x233524=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x233524&&_0x35941a)try{const _0xc5a45d=_0x233524['getLanguage'](_0x35941a)?_0x35941a:'plaintext',_0x582e63=_0x233524['highlight'](_0x55adc5,{'language':_0xc5a45d})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x35941a)+'\x22>'+_0x582e63+'</code></pre>';}catch(_0x31dc0e){console['error']('Syntax\x20highlighting\x20error:',_0x31dc0e);}return _0x1fefee(_0x3921e5,_0x3b7ab1,..._0x3f85e4);},sharedMarkedRenderer=_0x37b0df,_0x37b0df;}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 _0x18eb50=window['mermaid'];if(!_0x18eb50||typeof _0x18eb50['initialize']!=='function')return _0x18eb50||null;return _0x18eb50['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x18eb50;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2ea11d,_0x25c389)=>{const _0x7764c5=()=>_0x2ea11d(configureMermaidInstance()),_0x3b3aee=()=>{mermaidLoadPromise=null,_0x25c389(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x258ffb=document['getElementById'](MERMAID_SCRIPT_ID);!_0x258ffb&&(_0x258ffb=document['createElement']('script'),_0x258ffb['id']=MERMAID_SCRIPT_ID,_0x258ffb['src']=MERMAID_SCRIPT_SRC,_0x258ffb['async']=!![],document['head']['appendChild'](_0x258ffb));if(window['mermaid']){_0x7764c5();return;}_0x258ffb['addEventListener']('load',_0x7764c5,{'once':!![]}),_0x258ffb['addEventListener']('error',_0x3b3aee,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5d52df){const _0x44ac54=_0x5d52df['getAttribute']('data-mermaid-source');if(!_0x44ac54)return null;let _0x5ef99a=_0x44ac54;try{_0x5ef99a=decodeURIComponent(_0x44ac54);}catch{}return _0x5d52df['textContent']=_0x5ef99a,_0x5d52df['removeAttribute']('data-processed'),_0x5d52df['removeAttribute']('aria-roledescription'),_0x5d52df['removeAttribute']('role'),_0x5d52df['removeAttribute']('aria-label'),_0x5ef99a;}function collectMermaidNodes(_0x2cbac7,_0x203a0f){if(!(_0x2cbac7 instanceof Element))return;_0x2cbac7['matches']('.mermaid[data-mermaid-source]')&&_0x203a0f['add'](_0x2cbac7),_0x2cbac7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1a4da5=>{_0x203a0f['add'](_0x1a4da5);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x7cd64e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x4b4d06=>setTimeout(_0x4b4d06,0x0);_0x7cd64e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x21ea65=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x21ea65);});});}function queueMermaidRender(_0x28b339){const _0x438c5c=new Set();_0x28b339 instanceof Document||_0x28b339 instanceof DocumentFragment?_0x28b339['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ca737=>_0x438c5c['add'](_0x3ca737)):collectMermaidNodes(_0x28b339,_0x438c5c);if(_0x438c5c['size']===0x0)return;_0x438c5c['forEach'](_0x3977ca=>pendingMermaidNodes['add'](_0x3977ca)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x352c4d=Array['from'](pendingMermaidNodes)['filter'](_0x86acda=>_0x86acda['isConnected']);pendingMermaidNodes['clear']();if(_0x352c4d['length']===0x0)return;const _0x2ca665=await loadMermaid();if(!_0x2ca665)return;configureMermaidInstance();const _0x215026=getMermaidTheme();for(const _0x66fc9c of _0x352c4d){const _0x2c8f43=_0x66fc9c['getAttribute']('data-mermaid-source');if(!_0x2c8f43)continue;const _0x8d7de4=_0x66fc9c['getAttribute']('data-processed')==='true';if(_0x8d7de4&&_0x66fc9c['dataset']['mermaidTheme']===_0x215026)continue;restoreMermaidSource(_0x66fc9c);try{if(typeof _0x2ca665['run']==='function')await _0x2ca665['run']({'nodes':[_0x66fc9c]});else typeof _0x2ca665['init']==='function'&&_0x2ca665['init'](undefined,[_0x66fc9c]);_0x66fc9c['dataset']['mermaidTheme']=_0x215026,delete _0x66fc9c['dataset']['mermaidError'];}catch(_0x4ac847){console['error']('Mermaid\x20render\x20failed:',_0x4ac847),restoreMermaidSource(_0x66fc9c),_0x66fc9c['dataset']['mermaidError']='true',delete _0x66fc9c['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x209c7b=>{_0x209c7b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x209c7b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c6ed5=>{_0x4c6ed5['forEach'](_0x167662=>{_0x167662['addedNodes']['forEach'](_0x2b44bc=>{_0x2b44bc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2b44bc);});});}),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'(_0x430288){const _0x3962e7=new Date(_0x430288),_0x451e49=new Date(),_0xe0732=_0x451e49-_0x3962e7,_0x33a076=Math['floor'](_0xe0732/0x3e8),_0x597b90=Math['floor'](_0x33a076/0x3c),_0x345a94=Math['floor'](_0x597b90/0x3c),_0x31705d=Math['floor'](_0x345a94/0x18);if(_0x33a076<0x3c)return'now';if(_0x597b90<0x3c)return _0x597b90+'m\x20ago';if(_0x345a94<0x18)return _0x345a94+'h\x20ago';return _0x31705d+'d\x20ago';},'getStatusIcon'(_0x13801a){switch(_0x13801a){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x8dad52){switch(_0x8dad52){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'(_0x1c5885,_0x3f21b5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x13350c={};_0x13350c['text/plain']=new Blob([_0x1c5885],{'type':'text/plain'});_0x3f21b5&&(_0x13350c['text/html']=new Blob([_0x3f21b5],{'type':'text/html'}));const _0x5b5a24=new ClipboardItem(_0x13350c);return await navigator['clipboard']['write']([_0x5b5a24]),!![];}catch(_0x3d1372){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3d1372);}try{const _0x2266c3=_0x3ded84=>{_0x3ded84['preventDefault'](),_0x3ded84['clipboardData']['setData']('text/plain',_0x1c5885),_0x3f21b5&&_0x3ded84['clipboardData']['setData']('text/html',_0x3f21b5);};document['addEventListener']('copy',_0x2266c3);const _0x256c86=document['execCommand']('copy');document['removeEventListener']('copy',_0x2266c3);if(_0x256c86)return!![];}catch(_0x1c00b4){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1c00b4);}try{const _0x40f87f=document['createElement']('textarea');_0x40f87f['value']=_0x1c5885,_0x40f87f['style']['position']='fixed',_0x40f87f['style']['opacity']='0',_0x40f87f['style']['pointerEvents']='none',document['body']['appendChild'](_0x40f87f),_0x40f87f['select']();const _0x57d5be=document['execCommand']('copy');return document['body']['removeChild'](_0x40f87f),_0x57d5be;}catch(_0x4ed0e2){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4ed0e2),![];}},'showToast'(_0x4a92e8,_0x5adc65='info'){const _0x55476b=getNextToastId(),_0x21f52a=document['createElement']('div');_0x21f52a['className']='toast\x20toast-'+_0x5adc65,_0x21f52a['textContent']=_0x4a92e8,_0x21f52a['dataset']['toastId']=_0x55476b,document['body']['appendChild'](_0x21f52a);const _0x15e9f5=_0x5adc65==='error'?0x2710:0xbb8,_0x4e131c=setTimeout(()=>{removeToastById(_0x55476b);},_0x15e9f5),_0x15103b={'id':_0x55476b,'el':_0x21f52a,'timeoutId':_0x4e131c};return registerToast(_0x15103b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x21f52a['classList']['add']('show');});}),_0x55476b;},'showError'(_0x2f3dc1){console['error'](_0x2f3dc1);const _0x8c7bce=typeof _0x2f3dc1==='string'?_0x2f3dc1:_0x2f3dc1['message']||'An\x20error\x20occurred';this['showToast'](_0x8c7bce,'error');},'showSuccess'(_0x342635){this['showToast'](_0x342635,'success');},'capitalize'(_0x20b1d0){if(!_0x20b1d0)return'';return _0x20b1d0['charAt'](0x0)['toUpperCase']()+_0x20b1d0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2b0411){return escapeHtmlValue(_0x2b0411);},'ansiToHtml'(_0x2bb8e0){if(_0x2bb8e0===null||_0x2bb8e0===undefined)return'';let _0x573df8=this['escapeHtml'](_0x2bb8e0);const _0xa2e3e7={'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'},_0x13d3fc={'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 _0x5e6aa6=0x0;return _0x573df8=_0x573df8['replace'](/\x1b\[([0-9;]*)m/g,(_0x525f75,_0x54dd4f)=>{if(!_0x54dd4f||_0x54dd4f==='0'){const _0x505ca2='</span>'['repeat'](_0x5e6aa6);return _0x5e6aa6=0x0,_0x505ca2;}const _0x203bdf=_0x54dd4f['split'](';'),_0x2a073a=[];for(const _0x1bdfb4 of _0x203bdf){if(_0x1bdfb4==='1')_0x2a073a['push']('font-weight:bold');else{if(_0x1bdfb4==='2')_0x2a073a['push']('opacity:0.7');else{if(_0x1bdfb4==='3')_0x2a073a['push']('font-style:italic');else{if(_0x1bdfb4==='4')_0x2a073a['push']('text-decoration:underline');else{if(_0x1bdfb4==='9')_0x2a073a['push']('text-decoration:line-through');else{if(_0xa2e3e7[_0x1bdfb4])_0x2a073a['push']('color:'+_0xa2e3e7[_0x1bdfb4]);else{if(_0x13d3fc[_0x1bdfb4])_0x2a073a['push']('background-color:'+_0x13d3fc[_0x1bdfb4]);}}}}}}}if(_0x2a073a['length']>0x0)return _0x5e6aa6++,'<span\x20style=\x22'+_0x2a073a['join'](';')+'\x22>';return'';}),_0x573df8+='</span>'['repeat'](_0x5e6aa6),_0x573df8=_0x573df8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x58bd3b,_0x16273c)=>{if(!_0x16273c||_0x16273c==='0')return'';const _0x486298=_0x16273c['split'](';'),_0x5bcd41=[];for(const _0x2113d9 of _0x486298){if(_0x2113d9==='1')_0x5bcd41['push']('font-weight:bold');else{if(_0xa2e3e7[_0x2113d9])_0x5bcd41['push']('color:'+_0xa2e3e7[_0x2113d9]);else{if(_0x13d3fc[_0x2113d9])_0x5bcd41['push']('background-color:'+_0x13d3fc[_0x2113d9]);}}}if(_0x5bcd41['length']>0x0)return'<span\x20style=\x22'+_0x5bcd41['join'](';')+'\x22>';return'';}),_0x573df8;},'showModal'({title:_0xe1df3a,content:_0x5e7d66,buttons:buttons=[]}){const _0x94f9b='\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'](_0xe1df3a)+'</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'+_0x5e7d66+'\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']((_0x7ae3e1,_0x36a6fd)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x7ae3e1['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x36a6fd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x7ae3e1['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',_0x58bd74=document['createElement']('div');_0x58bd74['id']='utils-modal',_0x58bd74['className']='modal',_0x58bd74['innerHTML']=_0x94f9b,document['body']['appendChild'](_0x58bd74);const _0x5f29df=document['getElementById']('utils-modal-close');_0x5f29df&&_0x5f29df['addEventListener']('click',()=>this['hideModal']());const _0x25cee7=_0x58bd74['querySelectorAll']('[data-btn-index]');_0x25cee7['forEach'](_0x3edc80=>{const _0x4e96c0=parseInt(_0x3edc80['dataset']['btnIndex']);buttons[_0x4e96c0]?.['onClick']&&_0x3edc80['addEventListener']('click',buttons[_0x4e96c0]['onClick']);});const _0x4182a2=document['getElementById']('utils-modal-overlay');_0x4182a2&&_0x4182a2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x15fad8=document['getElementById']('utils-modal');_0x15fad8&&_0x15fad8['remove']();},'parseKeyValuePairs'(_0x1e0ca5){const _0x4b097a={};if(!_0x1e0ca5)return _0x4b097a;return _0x1e0ca5['split'](/\r?\n/)['map'](_0x24f356=>_0x24f356['trim']())['filter'](Boolean)['forEach'](_0x5ca86b=>{const _0x2e9ec0=_0x5ca86b['indexOf']('=');if(_0x2e9ec0>0x0){const _0x55ef19=_0x5ca86b['slice'](0x0,_0x2e9ec0)['trim'](),_0x5decf0=_0x5ca86b['slice'](_0x2e9ec0+0x1)['trim']();if(_0x55ef19)_0x4b097a[_0x55ef19]=_0x5decf0;}}),_0x4b097a;},'debounce'(_0x15682b,_0x2ddfdf=0xfa){let _0x490e15=null;return(..._0x126d46)=>{clearTimeout(_0x490e15),_0x490e15=setTimeout(()=>_0x15682b['apply'](this,_0x126d46),_0x2ddfdf);};},'formatTimestamp'(_0x1ff68c){if(!_0x1ff68c)return'N/A';const _0x51a747=new Date(_0x1ff68c);return _0x51a747['toLocaleDateString']()+'\x20'+_0x51a747['toLocaleTimeString']();},'getQueryParams'(){const _0x484643=new URLSearchParams(window['location']['search']),_0x367342={};for(const [_0x1bcede,_0x5daced]of _0x484643){_0x367342[_0x1bcede]=_0x5daced;}return _0x367342;},'formatDuration'(_0x8a76eb,_0x1a4c9f){if(!_0x8a76eb)return'N/A';const _0x4b49f4=new Date(_0x8a76eb),_0x38bf28=_0x1a4c9f?new Date(_0x1a4c9f):new Date(),_0x4ec168=_0x38bf28-_0x4b49f4;if(_0x4ec168<0x0)return'0s';const _0x54b5fb=Math['floor'](_0x4ec168/0x3e8),_0x52d5eb=Math['floor'](_0x54b5fb/0x3c),_0x96e954=Math['floor'](_0x52d5eb/0x3c),_0x319c08=Math['floor'](_0x96e954/0x18);if(_0x54b5fb<0x3c)return _0x54b5fb+'s';if(_0x52d5eb<0x3c)return _0x52d5eb+'m\x20'+_0x54b5fb%0x3c+'s';if(_0x96e954<0x18)return _0x96e954+'h\x20'+_0x52d5eb%0x3c+'m\x20'+_0x54b5fb%0x3c+'s';return _0x319c08+'d\x20'+_0x96e954%0x18+'h\x20'+_0x52d5eb%0x3c+'m';},'renderMarkdown'(_0x415f44,_0x3b9406={}){if(!_0x415f44)return'';_0x415f44=this['rewriteAttachmentLinks'](_0x415f44,_0x3b9406),_0x415f44=this['rewriteColorSyntax'](_0x415f44);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x415f44);}catch(_0x441d62){return console['error']('Markdown\x20parsing\x20error:',_0x441d62),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);}},'rewriteAttachmentLinks'(_0x40e751,_0x41bc7d={}){const _0xc340ad=typeof _0x41bc7d['resolveAttachmentUrl']==='function'?_0x41bc7d['resolveAttachmentUrl']:_0x41bc7d['taskId']?_0x3f46af=>API_BASE+'/tasks/'+_0x41bc7d['taskId']+'/attachments/'+encodeURIComponent(_0x3f46af):null;if(!_0xc340ad)return _0x40e751;return String(_0x40e751)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x30b25d,_0x434d3b)=>{const _0x3eab92=String(_0x434d3b||'')['trim']();if(!_0x3eab92)return _0x30b25d;let _0x51a074=_0x3eab92;try{_0x51a074=decodeURIComponent(_0x3eab92);}catch{}const _0x527030=_0xc340ad(_0x51a074);if(!_0x527030)return _0x30b25d;return']('+_0x527030+')';});},'rewriteColorSyntax'(_0x58862d){if(!_0x58862d)return _0x58862d;return String(_0x58862d)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x23252f,_0x30d0b1,_0x143e61)=>{const _0x177740=this['rewriteColorSyntax'](_0x143e61);return'<span\x20style=\x22color:\x20'+_0x30d0b1+'\x22>'+_0x177740+'</span>';});},'renderMarkdownFallback'(_0x37a477,_0x25e9a0={}){if(!_0x37a477)return'';_0x37a477=_0x37a477['replace'](/\r\n/g,'\x0a'),_0x37a477=_0x37a477['replace'](/\r/g,'\x0a'),_0x37a477=this['rewriteAttachmentLinks'](_0x37a477,_0x25e9a0);let _0x360bf6=this['escapeHtml'](_0x37a477);return _0x360bf6=_0x360bf6['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x360bf6=_0x360bf6['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x360bf6=_0x360bf6['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x360bf6=_0x360bf6['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x360bf6=_0x360bf6['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x360bf6=_0x360bf6['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x360bf6=_0x360bf6['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x360bf6=_0x360bf6['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x360bf6=_0x360bf6['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x360bf6=_0x360bf6['replace'](/\n\n/g,'</p><p>'),_0x360bf6=_0x360bf6['replace'](/\n/g,'<br>'),'<p>'+_0x360bf6+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1f779a=new Uint8Array(0x10);crypto['getRandomValues'](_0x1f779a),_0x1f779a[0x6]=_0x1f779a[0x6]&0xf|0x40,_0x1f779a[0x8]=_0x1f779a[0x8]&0x3f|0x80;const _0x366f4e=Array['from'](_0x1f779a,_0x27a581=>_0x27a581['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x366f4e['slice'](0x0,0x8)+'-'+_0x366f4e['slice'](0x8,0xc)+'-'+_0x366f4e['slice'](0xc,0x10)+'-'+_0x366f4e['slice'](0x10,0x14)+'-'+_0x366f4e['slice'](0x14);}};export class CustomSelect{constructor(_0x1332d4,_0x424cb3={}){this['nativeSelect']=_0x1332d4,this['options']=_0x424cb3,this['isOpen']=![],this['selectedValue']=_0x1332d4['value']||'',this['searchable']=_0x424cb3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x19ed63=document['createElement']('div');_0x19ed63['className']='custom-select';const _0x27163b=document['createElement']('div');_0x27163b['className']='custom-select-trigger',_0x27163b['setAttribute']('tabindex','0'),_0x27163b['setAttribute']('role','button'),_0x27163b['setAttribute']('aria-haspopup','listbox');const _0x2bac04=document['createElement']('span');_0x2bac04['className']='custom-select-trigger-text';const _0x5b10d6=document['createElement']('span');_0x5b10d6['className']='custom-select-arrow',_0x5b10d6['textContent']='▼',_0x27163b['appendChild'](_0x2bac04),_0x27163b['appendChild'](_0x5b10d6);const _0x52e8f1=document['createElement']('div');_0x52e8f1['className']='custom-select-dropdown',_0x52e8f1['setAttribute']('role','listbox');if(this['searchable']){const _0x18010=document['createElement']('div');_0x18010['className']='custom-select-search';const _0x16e781=document['createElement']('input');_0x16e781['type']='text',_0x16e781['className']='custom-select-search-input',_0x16e781['placeholder']='Type\x20to\x20search...',_0x16e781['setAttribute']('aria-label','Search\x20options'),_0x16e781['addEventListener']('input',_0x1fdd8a=>{this['searchQuery']=_0x1fdd8a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x16e781['addEventListener']('keydown',_0x303078=>{if(_0x303078['key']==='Escape')_0x303078['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x303078['key']==='Enter'){_0x303078['preventDefault'](),_0x303078['stopPropagation']();const _0x545f84=_0x52e8f1['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x545f84){const _0x1f8f2b=_0x545f84['getAttribute']('data-value');this['select'](_0x1f8f2b);}}}}),_0x18010['appendChild'](_0x16e781),_0x52e8f1['appendChild'](_0x18010),this['searchInput']=_0x16e781;}const _0xe3a238=document['createElement']('div');_0xe3a238['className']='custom-select-options',_0x52e8f1['appendChild'](_0xe3a238),_0x19ed63['appendChild'](_0x27163b),_0x19ed63['appendChild'](_0x52e8f1),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x19ed63,this['nativeSelect']),this['wrapper']=_0x19ed63,this['trigger']=_0x27163b,this['triggerText']=_0x2bac04,this['dropdown']=_0x52e8f1,this['optionsContainer']=_0xe3a238,_0x27163b['addEventListener']('click',()=>this['toggle']()),_0x27163b['addEventListener']('keydown',_0x286d93=>this['handleKeydown'](_0x286d93)),document['addEventListener']('click',_0x14172d=>{!_0x19ed63['contains'](_0x14172d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0xeeaad9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0xeeaad9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0xded45a=new MutationObserver(()=>{this['updateDisabledState']();});_0xded45a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2d9fdd=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2d9fdd['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x2c75a5=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x2c75a5),this['trigger']['setAttribute']('aria-disabled',_0x2c75a5?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x2c75a5?'-1':'0'),_0x2c75a5&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x1c8c49=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x543112=_0x1c8c49['filter'](_0x19fc96=>!_0x19fc96['disabled']&&!_0x19fc96['hidden']);_0x1c8c49['forEach']((_0x2d607d,_0x2bd1da)=>{const _0x737125=document['createElement']('div');_0x737125['className']='custom-select-option',_0x737125['textContent']=_0x2d607d['textContent'],_0x737125['setAttribute']('data-value',_0x2d607d['value']),_0x737125['setAttribute']('data-index',_0x2bd1da),_0x737125['setAttribute']('role','option'),_0x2d607d['disabled']?_0x737125['classList']['add']('disabled'):_0x737125['addEventListener']('click',()=>this['select'](_0x2d607d['value'])),_0x2d607d['value']===this['selectedValue']&&_0x737125['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x737125),this['allOptions']['push']({'element':_0x737125,'text':_0x2d607d['textContent']['toLowerCase'](),'value':_0x2d607d['value'],'disabled':_0x2d607d['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3db754=this['searchInput']['parentElement'];_0x543112['length']>0x3?_0x3db754['style']['display']='':_0x3db754['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3057a7=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3ee95c=>{if(!_0x3057a7||_0x3ee95c['disabled'])_0x3ee95c['element']['style']['display']='';else{const _0x41c979=_0x3ee95c['text']['includes'](_0x3057a7);_0x3ee95c['element']['style']['display']=_0x41c979?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x527b0c){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x527b0c,this['nativeSelect']['value']=_0x527b0c;const _0x1ca8a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ca8a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4335af=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4335af&&(this['triggerText']['textContent']=_0x4335af['textContent'],_0x4335af['disabled']||_0x4335af['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x183756=>{_0x183756['getAttribute']('data-value')===this['selectedValue']?_0x183756['classList']['add']('selected'):_0x183756['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 _0x265c20=window['getComputedStyle'](this['dropdown']);if(_0x265c20['position']==='fixed'){const _0x374695=this['trigger']['getBoundingClientRect'](),_0x4e5893=parseInt(_0x265c20['maxHeight'])||0xc8,_0x6d5ca1=window['innerHeight'],_0x317ad4=_0x6d5ca1-_0x374695['bottom'],_0x7b8127=_0x374695['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x34a7f1;_0x317ad4<_0x4e5893&&_0x7b8127>_0x317ad4?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x6d5ca1-_0x374695['top']+'px',_0x34a7f1=Math['min'](_0x4e5893,_0x7b8127-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374695['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x34a7f1=Math['min'](_0x4e5893,_0x317ad4-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px');if(this['optionsContainer']){let _0x28b6a1=_0x34a7f1;if(this['searchInput']){const _0x2d4470=this['searchInput']['parentElement'];_0x2d4470&&(_0x28b6a1-=_0x2d4470['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x28b6a1)+'px';}this['dropdown']['style']['left']=_0x374695['left']+'px',this['dropdown']['style']['width']=_0x374695['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x37112b=this['searchInput']['parentElement'];_0x37112b&&_0x37112b['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'](_0x55670e){if(this['nativeSelect']['disabled'])return;if(_0x55670e['key']==='Enter'||_0x55670e['key']==='\x20')_0x55670e['preventDefault'](),this['toggle']();else _0x55670e['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c093a='\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',_0x1c093a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1cf013=document['getElementById']('confirm-dialog-close'),_0x21bb3d=document['getElementById']('confirm-dialog-cancel'),_0x15ac17=document['getElementById']('confirm-dialog-confirm'),_0x1f2b32=this['_modal']['querySelector']('.modal-overlay');_0x1cf013['addEventListener']('click',()=>this['_resolve'](![])),_0x21bb3d['addEventListener']('click',()=>this['_resolve'](![])),_0x15ac17['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2b32['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x38e338=>{if(_0x38e338['key']==='Escape')_0x38e338['preventDefault'](),this['_resolve'](![]);else _0x38e338['key']==='Enter'&&(_0x38e338['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4cb5ed,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x38c9f6=>{this['_resolvePromise']=_0x38c9f6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4cb5ed;const _0x3b7483=document['getElementById']('confirm-dialog-cancel'),_0x267816=document['getElementById']('confirm-dialog-confirm');_0x3b7483['textContent']=cancelText,_0x267816['textContent']=confirmText,_0x267816['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x267816['focus']();});},'_resolve'(_0xcaad46){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0xcaad46),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1521b1,_0x4c1b34={}){this['container']=_0x1521b1,this['options']={'placeholder':_0x4c1b34['placeholder']||'Type\x20to\x20search...','maxItems':_0x4c1b34['maxItems']||0x64,'loadItems':_0x4c1b34['loadItems']||(async()=>[]),'renderItem':_0x4c1b34['renderItem']||(_0x59796c=>({'primary':String(_0x59796c),'secondary':''})),'onSelect':_0x4c1b34['onSelect']||(()=>{}),'filterItems':_0x4c1b34['filterItems']||null,'getItemValue':_0x4c1b34['getItemValue']||(_0x111d81=>_0x111d81),'sortItems':_0x4c1b34['sortItems']||null,'debounceMs':_0x4c1b34['debounceMs']||0xc8,'minCharsForSearch':_0x4c1b34['minCharsForSearch']||0x0,'emptyMessage':_0x4c1b34['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4c1b34['loadingMessage']||'Loading...','preload':_0x4c1b34['preload']!==![],'searchMode':_0x4c1b34['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',_0x55485e=>this['onBlur'](_0x55485e)),this['input']['addEventListener']('input',_0x5d7cd4=>this['onInput'](_0x5d7cd4)),this['input']['addEventListener']('keydown',_0x2263c6=>this['onKeydown'](_0x2263c6)),this['clearBtn']['addEventListener']('mousedown',_0x5b52c6=>{_0x5b52c6['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x3dc53f=>{_0x3dc53f['preventDefault']();}),document['addEventListener']('click',_0x35d26e=>{!this['wrapper']['contains'](_0x35d26e['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(_0x3d7bb6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x3d7bb6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x488e7e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x52852d){const _0x1acc6e=_0x52852d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1acc6e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1acc6e):this['loadAndShow'](_0x1acc6e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x699b0e){switch(_0x699b0e['key']){case'ArrowDown':_0x699b0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x699b0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x699b0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x699b0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4476ba){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x280f80=this['selectedIndex']+_0x4476ba;if(_0x280f80>=0x0&&_0x280f80<this['filteredItems']['length']){this['selectedIndex']=_0x280f80,this['updateSelectionHighlight']();const _0x35a195=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x35a195[this['selectedIndex']]&&_0x35a195[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4a7846=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a7846['forEach']((_0xb3c820,_0x12ee58)=>{_0xb3c820['classList']['toggle']('keyboard-selected',_0x12ee58===this['selectedIndex']);});}async['loadAndShow'](_0x156c29){this['showLoading']();try{const _0x193c64=await this['options']['loadItems'](_0x156c29);if(this['options']['searchMode']==='server'){let _0x50b4ce=_0x193c64;this['options']['sortItems']&&(_0x50b4ce=this['options']['sortItems']([..._0x193c64]));this['filteredItems']=_0x50b4ce;const _0x4c1181=this['filteredItems']['length']>=this['options']['maxItems'];_0x4c1181&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4c1181),this['open']();}else this['allItems']=_0x193c64,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x156c29);}catch(_0x201c38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x201c38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x10c488){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x10c488):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x39b4d1=this['filteredItems']['length']>=this['options']['maxItems'];_0x39b4d1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x39b4d1),this['open']();}['renderItems'](_0x5de065){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']((_0x41f240,_0x295cd6)=>{const _0xf20c4c=document['createElement']('div');_0xf20c4c['className']='autocomplete-select-item',_0xf20c4c['setAttribute']('role','option'),_0xf20c4c['setAttribute']('data-index',_0x295cd6);const _0x2e1fd1=this['options']['renderItem'](_0x41f240);let _0x3f3bf2='';_0x2e1fd1['icon']&&(_0x3f3bf2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x2e1fd1['iconClass']||'')+'\x22>'+_0x2e1fd1['icon']+'</span>'),_0xf20c4c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3f3bf2+'\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'](_0x2e1fd1['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2e1fd1['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x2e1fd1['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf20c4c['addEventListener']('click',()=>{this['selectItem'](_0x41f240);}),_0xf20c4c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x295cd6,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf20c4c);}),_0x5de065?(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'](_0x2a1471){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2a1471)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x21fe5e){this['selectedItem']=_0x21fe5e;const _0x568d95=this['options']['renderItem'](_0x21fe5e);this['input']['value']=_0x568d95['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x21fe5e);}['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'](_0x282266){if(_0x282266){this['selectedItem']=_0x282266;const _0x58bd76=this['options']['renderItem'](_0x282266);this['input']['value']=_0x58bd76['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4ddf76){this['allItems']=_0x4ddf76,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'](_0xbb4820){this['input']['placeholder']=_0xbb4820;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xea75db=null){const _0x43627e=document['getElementById']('admin-menu-container'),_0x23e29c=document['getElementById']('admin-menu-btn'),_0x587a7a=document['getElementById']('admin-menu');if(!_0x43627e||!_0x23e29c||!_0x587a7a)return;try{!_0xea75db&&(_0xea75db=await API['getCurrentUser']());if(_0xea75db){const _0xc6924c=window['Permissions'],_0x8e5df5=_0xc6924c['hasServerPermission'](_0xea75db,'*')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:manage')||_0xc6924c['hasServerPermission'](_0xea75db,'users:create')||_0xc6924c['hasTeamPermission'](_0xea75db,'teams:manage')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:view_details');if(!_0x8e5df5)return;_0x43627e['hidden']=![];if(!_0xc6924c['hasServerPermission'](_0xea75db,'*')){const _0x559eb3=_0x587a7a['querySelectorAll']('.admin-menu-item');_0x559eb3['forEach'](_0x4425ed=>{const _0x1cf113=_0x4425ed['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1cf113==='Users'&&!_0xc6924c['hasServerPermission'](_0xea75db,'users:create')&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Skills'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Settings'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Administration'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Git\x20History'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Roles'&&(_0x4425ed['hidden']=!![]);});}_0x23e29c['addEventListener']('click',_0x29a5de=>{_0x29a5de['stopPropagation']();const _0x3ed0cd=document['getElementById']('actions-menu');if(_0x3ed0cd)_0x3ed0cd['hidden']=!![];_0x587a7a['hidden']=!_0x587a7a['hidden'];}),document['addEventListener']('click',_0x349e02=>{!_0x587a7a['hidden']&&!_0x23e29c['contains'](_0x349e02['target'])&&!_0x587a7a['contains'](_0x349e02['target'])&&(_0x587a7a['hidden']=!![]);}),document['addEventListener']('keydown',_0x18b65c=>{_0x18b65c['key']==='Escape'&&!_0x587a7a['hidden']&&(_0x587a7a['hidden']=!![]);});}}catch(_0x510eb5){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x510eb5['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 _0x59b457=window['location']['pathname'],_0x1d57df=_0x59b457['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1d57df)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1d57df[0x1]),_0x1d57df[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x257203={}){const _0xa2dbb4=new URLSearchParams();_0x257203['userId']&&_0xa2dbb4['set']('userId',String(_0x257203['userId']));_0x257203['automation']&&_0xa2dbb4['set']('automation',String(_0x257203['automation']));const _0x4dfc63=API_BASE+'/tasks/stats'+(_0xa2dbb4['toString']()?'?'+_0xa2dbb4['toString']():''),_0x3b3837=await fetch(_0x4dfc63);if(!_0x3b3837['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3b3837['statusText']);return await _0x3b3837['json']();},async 'getTasks'(_0x3fde61={}){const _0x2bf758=new URLSearchParams();_0x3fde61['status']&&_0x2bf758['set']('status',String(_0x3fde61['status']));_0x3fde61['environment']&&_0x2bf758['set']('environment',String(_0x3fde61['environment']));_0x3fde61['automation']&&_0x2bf758['set']('automation',String(_0x3fde61['automation']));if(_0x3fde61['include']){const _0x474a5e=Array['isArray'](_0x3fde61['include'])?_0x3fde61['include']['join'](','):String(_0x3fde61['include']);_0x474a5e&&_0x2bf758['set']('include',_0x474a5e);}_0x3fde61['filter']&&_0x2bf758['set']('filter',String(_0x3fde61['filter']));_0x3fde61['page']&&_0x2bf758['set']('page',String(_0x3fde61['page']));_0x3fde61['limit']&&_0x2bf758['set']('limit',String(_0x3fde61['limit']));_0x3fde61['userId']&&_0x2bf758['set']('userId',String(_0x3fde61['userId']));_0x3fde61['search']&&_0x2bf758['set']('search',String(_0x3fde61['search']));_0x3fde61['includeChildTasks']&&_0x2bf758['set']('includeChildTasks','true');const _0xbd1ecd=API_BASE+'/tasks'+(_0x2bf758['toString']()?'?'+_0x2bf758['toString']():''),_0x463c4a=await fetch(_0xbd1ecd);if(!_0x463c4a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x463c4a['statusText']);return await _0x463c4a['json']();},async 'getAutomations'(_0x4b14fc={}){const _0x5a706a=new URLSearchParams();_0x4b14fc['environment']&&_0x5a706a['set']('environment',String(_0x4b14fc['environment']));const _0x42be1f=await fetch(API_BASE+'/api/automations'+(_0x5a706a['toString']()?'?'+_0x5a706a['toString']():''));if(!_0x42be1f['ok']){const _0x5e849d=await _0x42be1f['json']()['catch'](()=>({}));throw new Error(_0x5e849d['message']||_0x5e849d['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x42be1f['statusText']);}return await _0x42be1f['json']();},async 'getAutomation'(_0xc1cafa){const _0x47b579=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xc1cafa));if(!_0x47b579['ok']){const _0x2a3746=await _0x47b579['json']()['catch'](()=>({}));throw new Error(_0x2a3746['message']||_0x2a3746['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x47b579['statusText']);}return await _0x47b579['json']();},async 'createAutomation'(_0x33f98b){const _0x3b702e=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33f98b||{})});if(!_0x3b702e['ok']){const _0x324c04=await _0x3b702e['json']()['catch'](()=>({}));throw new Error(_0x324c04['message']||_0x324c04['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3b702e['statusText']);}return await _0x3b702e['json']();},async 'updateAutomation'(_0x4473a6,_0x2ea605){const _0x40143e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4473a6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ea605||{})});if(!_0x40143e['ok']){const _0x1e6613=await _0x40143e['json']()['catch'](()=>({}));throw new Error(_0x1e6613['message']||_0x1e6613['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x40143e['statusText']);}return await _0x40143e['json']();},async 'deleteAutomation'(_0x91337e){const _0x26d151=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x91337e),{'method':'DELETE'});if(!_0x26d151['ok']){const _0x4c89cd=await _0x26d151['json']()['catch'](()=>({}));throw new Error(_0x4c89cd['message']||_0x4c89cd['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x26d151['statusText']);}return await _0x26d151['json']();},async 'triggerAutomation'(_0x3a3891){const _0x105386=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3a3891)+'/trigger',{'method':'POST'});if(!_0x105386['ok']){const _0x2b1b0f=await _0x105386['json']()['catch'](()=>({}));throw new Error(_0x2b1b0f['message']||_0x2b1b0f['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x105386['statusText']);}return await _0x105386['json']();},async 'setAutomationEnabled'(_0x54f78c,_0x1f154c){const _0x424ffe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x54f78c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x1f154c})});if(!_0x424ffe['ok']){const _0x5c302b=await _0x424ffe['json']()['catch'](()=>({}));throw new Error(_0x5c302b['message']||_0x5c302b['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x424ffe['statusText']);}return await _0x424ffe['json']();},async 'getAutomationHistory'(_0x2a5c8f,_0x5dcfac=0x32){const _0x1a6374=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2a5c8f)+'/history?limit='+encodeURIComponent(String(_0x5dcfac)));if(!_0x1a6374['ok']){const _0x354d21=await _0x1a6374['json']()['catch'](()=>({}));throw new Error(_0x354d21['message']||_0x354d21['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1a6374['statusText']);}return await _0x1a6374['json']();},async 'getTask'(_0x309e63,_0x1bf91c={}){const _0x426838=new URLSearchParams();if(_0x1bf91c['include']){const _0x54bc2d=Array['isArray'](_0x1bf91c['include'])?_0x1bf91c['include']['join'](','):String(_0x1bf91c['include']);if(_0x54bc2d)_0x426838['set']('include',_0x54bc2d);}const _0x45ee09=await fetch(API_BASE+'/tasks/'+_0x309e63+(_0x426838['toString']()?'?'+_0x426838['toString']():''));if(!_0x45ee09['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x45ee09['statusText']);return await _0x45ee09['json']();},async 'getTaskResults'(_0x227ff9){const _0x57985c=await fetch(API_BASE+'/tasks/'+_0x227ff9+'/results');if(!_0x57985c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57985c['statusText']);return await _0x57985c['json']();},async 'getTaskPatches'(_0x599807){const _0x274421=await fetch(API_BASE+'/tasks/'+_0x599807+'/patches');if(!_0x274421['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x274421['statusText']);return await _0x274421['json']();},async 'getTaskAttachments'(_0x261cbe){const _0x39fbc8=await fetch(API_BASE+'/tasks/'+_0x261cbe+'/attachments');if(!_0x39fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x39fbc8['statusText']);return await _0x39fbc8['json']();},async 'uploadAttachments'(_0x1b7474,_0x5073eb){const _0x8416ec=new FormData();for(const _0xbdd8ab of _0x5073eb){_0x8416ec['append']('attachments',_0xbdd8ab);}const _0x4d0a83=await fetch(API_BASE+'/tasks/'+_0x1b7474+'/attachments',{'method':'POST','body':_0x8416ec});if(!_0x4d0a83['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4d0a83['statusText']);return await _0x4d0a83['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44453c=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44453c['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44453c['json']();}catch(_0x326241){return{'available':![],'reason':_0x326241['message']};}},async 'generateTaskName'(_0x2d4d0d){try{const _0x3ae026=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d4d0d})});return await _0x3ae026['json']();}catch(_0x2bea8b){return{'success':![],'error':_0x2bea8b['message']};}},async 'createTask'(_0x12e9a6){let _0x5035a4,_0x3ecc0d={};if(_0x12e9a6['files']&&_0x12e9a6['files']['length']>0x0){const _0x2089c8=new FormData();for(const [_0x47e853,_0x3faf55]of Object['entries'](_0x12e9a6)){if(_0x47e853!=='files'){if(_0x3faf55==null)continue;typeof _0x3faf55==='object'?_0x2089c8['append'](_0x47e853,JSON['stringify'](_0x3faf55)):_0x2089c8['append'](_0x47e853,String(_0x3faf55));}}for(const _0x59d4ff of _0x12e9a6['files']){_0x2089c8['append']('attachments',_0x59d4ff);}_0x5035a4=_0x2089c8;}else _0x3ecc0d['Content-Type']='application/json',_0x5035a4=JSON['stringify'](_0x12e9a6);const _0x32423d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ecc0d,'body':_0x5035a4});if(!_0x32423d['ok']){const _0x351d19=await _0x32423d['json'](),_0x22f155=new Error(_0x351d19['error']||'Failed\x20to\x20create\x20task:\x20'+_0x32423d['statusText']),{message:_0x102744,..._0x49a6f2}=_0x351d19;Object['assign'](_0x22f155,_0x49a6f2);throw _0x22f155;}return await _0x32423d['json']();},async 'createTestTask'(_0x5d81a8){const _0x191492=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d81a8)});if(!_0x191492['ok']){const _0x404cfa=await _0x191492['json']();throw new Error(_0x404cfa['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x191492['statusText']);}return await _0x191492['json']();},async 'createEphemeralTest'(_0x5f5877){const _0x356d54=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f5877)});if(!_0x356d54['ok']){const _0x38ed83=await _0x356d54['json']();throw new Error(_0x38ed83['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x356d54['statusText']);}return await _0x356d54['json']();},async 'createDeployTask'(_0x4fd364){const _0x4d7f9b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd364)});if(!_0x4d7f9b['ok']){const _0x2e18cc=await _0x4d7f9b['json']();throw new Error(_0x2e18cc['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4d7f9b['statusText']);}return await _0x4d7f9b['json']();},async 'getEnvironments'(){const _0x2ee95a=await fetch(API_BASE+'/environments');if(!_0x2ee95a['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ee95a['statusText']);return await _0x2ee95a['json']();},async 'getEnvironment'(_0xc5f43c){const _0x4822a9=await fetch(API_BASE+'/environments/'+_0xc5f43c);if(!_0x4822a9['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4822a9['statusText']);return await _0x4822a9['json']();},async 'getEnvironmentRepoHistory'(_0x5a2871,_0x396e68,_0x57958d={}){if(!_0x5a2871||!_0x396e68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a72d8=new URLSearchParams();if(_0x57958d['limit'])_0x3a72d8['set']('limit',String(_0x57958d['limit']));if(_0x57958d['offset'])_0x3a72d8['set']('offset',String(_0x57958d['offset']));if(_0x57958d['search'])_0x3a72d8['set']('search',String(_0x57958d['search']));if(_0x57958d['branch'])_0x3a72d8['set']('branch',String(_0x57958d['branch']));const _0x2d099a=API_BASE+'/environments/'+encodeURIComponent(_0x5a2871)+'/repos/'+encodeURIComponent(_0x396e68)+'/git/history',_0x3e1236=await fetch(''+_0x2d099a+(_0x3a72d8['toString']()?'?'+_0x3a72d8['toString']():''));if(!_0x3e1236['ok']){const _0x19e976=await _0x3e1236['json']()['catch'](()=>({}));throw new Error(_0x19e976['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e1236['statusText']);}return await _0x3e1236['json']();},async 'getEnvironmentRepoCommit'(_0x35b37e,_0x7f4b6,_0x19e405){if(!_0x35b37e||!_0x7f4b6||!_0x19e405)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x16ea90=API_BASE+'/environments/'+encodeURIComponent(_0x35b37e)+'/repos/'+encodeURIComponent(_0x7f4b6)+'/git/commits/'+encodeURIComponent(_0x19e405),_0x3b5c5a=await fetch(_0x16ea90);if(!_0x3b5c5a['ok']){const _0x47501e=await _0x3b5c5a['json']()['catch'](()=>({}));throw new Error(_0x47501e['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3b5c5a['statusText']);}return await _0x3b5c5a['json']();},async 'getEnvironmentRepoBranches'(_0x1ec212,_0x312fe1){if(!_0x1ec212||!_0x312fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1acf05=API_BASE+'/environments/'+encodeURIComponent(_0x1ec212)+'/repos/'+encodeURIComponent(_0x312fe1)+'/git/branches',_0x33384a=await fetch(_0x1acf05);if(!_0x33384a['ok']){const _0x51d942=await _0x33384a['json']()['catch'](()=>({}));throw new Error(_0x51d942['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x33384a['statusText']);}return await _0x33384a['json']();},async 'revertEnvironmentRepoCommit'(_0x2ec410,_0x5ad7cf,_0xf620cf,_0x31eab1={}){if(!_0x2ec410||!_0x5ad7cf||!_0xf620cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x416604=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2ec410)+'/repos/'+encodeURIComponent(_0x5ad7cf)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xf620cf,..._0x31eab1})});if(!_0x416604['ok']){const _0x49bcb3=await _0x416604['json']()['catch'](()=>({}));throw new Error(_0x49bcb3['message']||_0x49bcb3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x416604['statusText']);}return await _0x416604['json']();},async 'getTemplates'(_0x4cf444={}){const _0x521da9=new URLSearchParams();if(_0x4cf444['include']){const _0x27d7bd=Array['isArray'](_0x4cf444['include'])?_0x4cf444['include']['join'](','):String(_0x4cf444['include']);if(_0x27d7bd)_0x521da9['set']('include',_0x27d7bd);}const _0x59542a=await fetch(API_BASE+'/templates'+(_0x521da9['toString']()?'?'+_0x521da9['toString']():''));if(!_0x59542a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x59542a['statusText']);return await _0x59542a['json']();},async 'getTemplatesForEnvironment'(_0x28d007,_0x12f399={}){if(!_0x28d007)throw new Error('Environment\x20name\x20is\x20required');const _0x196a0d=new URLSearchParams();if(_0x12f399['include']){const _0x52ea19=Array['isArray'](_0x12f399['include'])?_0x12f399['include']['join'](','):String(_0x12f399['include']);if(_0x52ea19)_0x196a0d['set']('include',_0x52ea19);}const _0x5a032a=await fetch(API_BASE+'/templates/'+_0x28d007+(_0x196a0d['toString']()?'?'+_0x196a0d['toString']():''));if(!_0x5a032a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x28d007+':\x20'+_0x5a032a['statusText']);return await _0x5a032a['json']();},async 'getTemplate'(_0x38bdc7,_0x426fd6,_0x3c6b09={}){if(!_0x38bdc7||!_0x426fd6)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xcd0a2e=new URLSearchParams();if(_0x3c6b09['include']){const _0x2a0d9a=Array['isArray'](_0x3c6b09['include'])?_0x3c6b09['include']['join'](','):String(_0x3c6b09['include']);if(_0x2a0d9a)_0xcd0a2e['set']('include',_0x2a0d9a);}const _0x366b0f=await fetch(API_BASE+'/templates/'+_0x38bdc7+'/'+_0x426fd6+(_0xcd0a2e['toString']()?'?'+_0xcd0a2e['toString']():''));if(!_0x366b0f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x366b0f['statusText']);return await _0x366b0f['json']();},async 'getTaskLogs'(_0x3b5b4f,_0x5488df={}){if(!_0x3b5b4f)throw new Error('Task\x20ID\x20is\x20required');const _0x1dcfca=new URLSearchParams();_0x5488df['tail']&&_0x1dcfca['set']('tail',String(_0x5488df['tail']));const _0x3f3fdb=await fetch(API_BASE+'/tasks/'+_0x3b5b4f+'/logs'+(_0x1dcfca['toString']()?'?'+_0x1dcfca['toString']():''));if(!_0x3f3fdb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3f3fdb['statusText']);return await _0x3f3fdb['text']();},async 'getContainers'(){const _0x99649e=await fetch(API_BASE+'/containers');if(!_0x99649e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x99649e['statusText']);return await _0x99649e['json']();},async 'getContainer'(_0x3aa52b){const _0x15f556=await fetch(API_BASE+'/containers/'+_0x3aa52b);if(!_0x15f556['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x15f556['statusText']);return await _0x15f556['json']();},async 'startInteractiveContainer'(_0x5df843){const _0x345e73=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5df843)});if(!_0x345e73['ok']){const _0x2d6c2a=await _0x345e73['json']()['catch'](()=>({}));throw new Error(_0x2d6c2a['message']||'Failed\x20to\x20start\x20container:\x20'+_0x345e73['statusText']);}return await _0x345e73['json']();},async 'startContainerCodeServer'(_0x26c6ca,_0x309dec={}){if(!_0x26c6ca)throw new Error('Container\x20ID\x20is\x20required');const _0x36f5c0=new URLSearchParams();_0x309dec['theme']&&_0x36f5c0['set']('theme',_0x309dec['theme']);const _0x1e4607=await fetch(API_BASE+'/containers/'+_0x26c6ca+'/code-server'+(_0x36f5c0['toString']()?'?'+_0x36f5c0['toString']():'')),_0x13a2be=await _0x1e4607['json']()['catch'](()=>({}));if(!_0x1e4607['ok'])throw new Error(_0x13a2be['message']||_0x13a2be['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x1e4607['statusText']);return _0x13a2be;},async 'stopContainer'(_0x266520){const _0x3265ab=await fetch(API_BASE+'/containers/'+_0x266520,{'method':'DELETE'});if(!_0x3265ab['ok']){const _0xc56c76=await _0x3265ab['json']()['catch'](()=>({}));throw new Error(_0xc56c76['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3265ab['statusText']);}return await _0x3265ab['json']();},async 'stopTask'(_0xba540e){if(!_0xba540e)throw new Error('Task\x20ID\x20is\x20required');const _0x40c748=await fetch(API_BASE+'/tasks/'+_0xba540e+'/stop',{'method':'POST'});if(!_0x40c748['ok']){const _0x5db904=await _0x40c748['json']()['catch'](()=>({}));throw new Error(_0x5db904['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x40c748['statusText']);}return await _0x40c748['json']();},async 'interruptTask'(_0x4f387c){if(!_0x4f387c)throw new Error('Task\x20ID\x20is\x20required');const _0x596e4c=await fetch(API_BASE+'/tasks/'+_0x4f387c+'/interrupt',{'method':'POST'});if(!_0x596e4c['ok']){const _0xa154c5=await _0x596e4c['json']()['catch'](()=>({}));throw new Error(_0xa154c5['error']||_0xa154c5['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x596e4c['statusText']);}return await _0x596e4c['json']();},async 'startTask'(_0xa539a0){if(!_0xa539a0)throw new Error('Task\x20ID\x20is\x20required');const _0xf34e98=await fetch(API_BASE+'/tasks/'+_0xa539a0+'/start',{'method':'POST'});if(!_0xf34e98['ok']){const _0x1a9527=await _0xf34e98['json']()['catch'](()=>({}));throw new Error(_0x1a9527['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf34e98['statusText']);}return await _0xf34e98['json']();},async 'deleteTask'(_0x32adfd){if(!_0x32adfd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d19c7=await fetch(API_BASE+'/tasks/'+_0x32adfd,{'method':'DELETE'});if(!_0x4d19c7['ok']){const _0x2581d9=await _0x4d19c7['json']()['catch'](()=>({}));throw new Error(_0x2581d9['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4d19c7['statusText']);}return await _0x4d19c7['json']();},async 'refreshTasksFromDisk'(){const _0x514e3c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x514e3c['ok']){const _0x58d5e2=await _0x514e3c['json']()['catch'](()=>({}));throw new Error(_0x58d5e2['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x514e3c['statusText']);}return await _0x514e3c['json']();},async 'approveTask'(_0x2fc8fc,_0x432d02={}){if(!_0x2fc8fc)throw new Error('Task\x20ID\x20is\x20required');const _0x31334d={'commit_message':_0x432d02['commit_message']||'','pull':_0x432d02['pull']??![],'push':_0x432d02['push']??![]};_0x432d02['new_branch']&&(_0x31334d['new_branch']=_0x432d02['new_branch']);const _0x13c1b8=await fetch(API_BASE+'/tasks/'+_0x2fc8fc+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31334d)});if(!_0x13c1b8['ok']){const _0x25ab56=await _0x13c1b8['json']()['catch'](()=>({}));let _0x367a18=_0x25ab56['error']||_0x25ab56['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x13c1b8['statusText'];if(_0x25ab56['results']&&Array['isArray'](_0x25ab56['results'])){const _0x1037b8=_0x25ab56['results']['filter'](_0x38963f=>!_0x38963f['success']&&_0x38963f['error']);_0x1037b8['length']>0x0&&(_0x367a18=_0x1037b8[0x0]['error']);}throw new Error(_0x367a18);}return await _0x13c1b8['json']();},async 'getPullRequestInfo'(_0x585b15){if(!_0x585b15)throw new Error('Task\x20ID\x20is\x20required');const _0x1223a3=await fetch(API_BASE+'/tasks/'+_0x585b15+'/pull-request-info');if(!_0x1223a3['ok']){const _0x4adcb6=await _0x1223a3['json']()['catch'](()=>({}));throw new Error(_0x4adcb6['error']||_0x4adcb6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1223a3['statusText']);}return await _0x1223a3['json']();},async 'createPullRequests'(_0x3691b4,_0x5b8fd8){if(!_0x3691b4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b8fd8||!Array['isArray'](_0x5b8fd8))throw new Error('repos\x20array\x20is\x20required');const _0x449c80=await fetch(API_BASE+'/tasks/'+_0x3691b4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x5b8fd8})});if(!_0x449c80['ok']){const _0x286acf=await _0x449c80['json']()['catch'](()=>({}));let _0x2fc2b7=_0x286acf['error']||_0x286acf['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x449c80['statusText'];if(_0x286acf['results']&&Array['isArray'](_0x286acf['results'])){const _0x179a8c=_0x286acf['results']['filter'](_0x5b8369=>!_0x5b8369['success']&&_0x5b8369['error']);_0x179a8c['length']>0x0&&(_0x2fc2b7=_0x179a8c[0x0]['error']);}throw new Error(_0x2fc2b7);}return await _0x449c80['json']();},async 'syncRepos'(_0xb700e6){if(!_0xb700e6)throw new Error('Task\x20ID\x20is\x20required');const _0x54f935=await fetch(API_BASE+'/tasks/'+_0xb700e6+'/sync-repos',{'method':'POST'});if(!_0x54f935['ok']){const _0x3a4f8c=await _0x54f935['json']()['catch'](()=>({}));throw new Error(_0x3a4f8c['error']||_0x3a4f8c['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x54f935['statusText']);}return await _0x54f935['json']();},async 'getIbmiSyncInfo'(_0x1494c6){if(!_0x1494c6)throw new Error('Task\x20ID\x20is\x20required');const _0x1d3fd6=await fetch(API_BASE+'/tasks/'+_0x1494c6+'/ibmi-sync-info');if(!_0x1d3fd6['ok']){const _0x223e65=await _0x1d3fd6['json']()['catch'](()=>({}));throw new Error(_0x223e65['error']||_0x223e65['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1d3fd6['json']();},async 'getSyncFiles'(_0x2c464a){if(!_0x2c464a)throw new Error('Task\x20ID\x20is\x20required');const _0x47fe8f=await fetch(API_BASE+'/tasks/'+_0x2c464a+'/sync-to-ibmi/files');if(!_0x47fe8f['ok']){const _0x61114b=await _0x47fe8f['json']()['catch'](()=>({}));throw new Error(_0x61114b['error']||_0x61114b['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x47fe8f['json']();},async 'syncToIbmi'(_0xc135db,_0x5beee3,_0xa075dd=null,_0x309931=null,_0x70e23d=null){if(!_0xc135db)throw new Error('Task\x20ID\x20is\x20required');const _0x36ee86={'library':_0x5beee3};if(_0xa075dd)_0x36ee86['user']=_0xa075dd;if(_0x309931)_0x36ee86['password']=_0x309931;if(_0x70e23d)_0x36ee86['files']=_0x70e23d;const _0xa2759d=await fetch(API_BASE+'/tasks/'+_0xc135db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36ee86)});if(!_0xa2759d['ok']){const _0x1c210b=await _0xa2759d['json']()['catch'](()=>({}));throw new Error(_0x1c210b['error']||_0x1c210b['message']||'Sync\x20failed');}return await _0xa2759d['json']();},async 'getIbmiSyncLog'(_0x57ef16){if(!_0x57ef16)throw new Error('Task\x20ID\x20is\x20required');const _0x4fde32=await fetch(API_BASE+'/tasks/'+_0x57ef16+'/ibmi-sync-log');if(!_0x4fde32['ok']){const _0x25b6b2=await _0x4fde32['json']()['catch'](()=>({}));throw new Error(_0x25b6b2['error']||_0x25b6b2['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4fde32['json']();},async 'pullChanges'(_0x71dec7){if(!_0x71dec7)throw new Error('Task\x20ID\x20is\x20required');const _0x128be7=await fetch(API_BASE+'/tasks/'+_0x71dec7+'/pull-changes',{'method':'POST'});if(!_0x128be7['ok']){const _0x27db39=await _0x128be7['json']()['catch'](()=>({}));throw new Error(_0x27db39['error']||_0x27db39['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x128be7['statusText']);}return await _0x128be7['json']();},async 'readFile'(_0x5a0a3e,_0x4519d5){if(!_0x5a0a3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4519d5)throw new Error('File\x20path\x20is\x20required');const _0x47ccba=await fetch(API_BASE+'/tasks/'+_0x5a0a3e+'/files?path='+encodeURIComponent(_0x4519d5));if(!_0x47ccba['ok']){const _0x33a6b0=await _0x47ccba['json']()['catch'](()=>({}));throw new Error(_0x33a6b0['error']||_0x33a6b0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x47ccba['statusText']);}return await _0x47ccba['json']();},'getTaskFileDownloadUrl'(_0x2b8fb2,_0x104018){if(!_0x2b8fb2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x104018)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2b8fb2+'/files/download?path='+encodeURIComponent(_0x104018);},async 'writeFile'(_0x374231,_0x41fc0a,_0x4ff265){if(!_0x374231)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41fc0a)throw new Error('File\x20path\x20is\x20required');if(_0x4ff265===undefined)throw new Error('Content\x20is\x20required');const _0x308355=await fetch(API_BASE+'/tasks/'+_0x374231+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x41fc0a,'content':_0x4ff265})});if(!_0x308355['ok']){const _0x488a75=await _0x308355['json']()['catch'](()=>({}));throw new Error(_0x488a75['error']||_0x488a75['message']||'Failed\x20to\x20write\x20file:\x20'+_0x308355['statusText']);}return await _0x308355['json']();},async 'uploadTaskFiles'(_0x58d2f5,_0x5a079e,_0x2274ef){if(!_0x58d2f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a079e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2274ef||_0x2274ef['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x410970=new FormData();_0x410970['append']('targetDir',_0x5a079e);for(const _0x22b1ed of _0x2274ef){_0x410970['append']('files',_0x22b1ed,_0x22b1ed['name']);}const _0x6493a1=await fetch(API_BASE+'/tasks/'+_0x58d2f5+'/files/upload',{'method':'POST','body':_0x410970});if(!_0x6493a1['ok']){const _0x4ad73e=await _0x6493a1['json']()['catch'](()=>({}));throw new Error(_0x4ad73e['error']||_0x4ad73e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x6493a1['statusText']);}return await _0x6493a1['json']();},async 'createDirectory'(_0x191659,_0x19bd4a){if(!_0x191659)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19bd4a)throw new Error('Directory\x20path\x20is\x20required');const _0x3edda2=await fetch(API_BASE+'/tasks/'+_0x191659+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x19bd4a})});if(!_0x3edda2['ok']){const _0x2726d7=await _0x3edda2['json']()['catch'](()=>({}));throw new Error(_0x2726d7['error']||_0x2726d7['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3edda2['statusText']);}return await _0x3edda2['json']();},async 'renamePath'(_0x3131ef,_0x22097e,_0x282a83){if(!_0x3131ef)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22097e)throw new Error('Source\x20path\x20is\x20required');if(!_0x282a83)throw new Error('Destination\x20path\x20is\x20required');const _0x8b7a5b=await fetch(API_BASE+'/tasks/'+_0x3131ef+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22097e,'newPath':_0x282a83})});if(!_0x8b7a5b['ok']){const _0x349b9b=await _0x8b7a5b['json']()['catch'](()=>({}));throw new Error(_0x349b9b['error']||_0x349b9b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x8b7a5b['statusText']);}return await _0x8b7a5b['json']();},async 'deleteFile'(_0x5786a0,_0x292ac6){if(!_0x5786a0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x292ac6)throw new Error('File\x20path\x20is\x20required');const _0xfbeb88=await fetch(API_BASE+'/tasks/'+_0x5786a0+'/files?path='+encodeURIComponent(_0x292ac6),{'method':'DELETE'});if(!_0xfbeb88['ok']){const _0x20bd2e=await _0xfbeb88['json']()['catch'](()=>({}));throw new Error(_0x20bd2e['error']||_0x20bd2e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0xfbeb88['statusText']);}return await _0xfbeb88['json']();},async 'deleteDirectory'(_0x50e80d,_0xe77313){if(!_0x50e80d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xe77313)throw new Error('Directory\x20path\x20is\x20required');const _0x4f97d6=await fetch(API_BASE+'/tasks/'+_0x50e80d+'/files/directory?path='+encodeURIComponent(_0xe77313),{'method':'DELETE'});if(!_0x4f97d6['ok']){const _0x208fb7=await _0x4f97d6['json']()['catch'](()=>({}));throw new Error(_0x208fb7['error']||_0x208fb7['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f97d6['statusText']);}return await _0x4f97d6['json']();},async 'discardFile'(_0x1c1deb,_0x2a44f4,_0x4b7ae9){if(!_0x1c1deb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2a44f4)throw new Error('File\x20path\x20is\x20required');if(!_0x4b7ae9)throw new Error('Repository\x20path\x20is\x20required');const _0x54de05=await fetch(API_BASE+'/tasks/'+_0x1c1deb+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2a44f4,'repoPath':_0x4b7ae9})});if(!_0x54de05['ok']){const _0x6f3d4b=await _0x54de05['json']()['catch'](()=>({}));throw new Error(_0x6f3d4b['error']||_0x6f3d4b['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x54de05['statusText']);}return await _0x54de05['json']();},async 'followUpTask'(_0x26630e,_0x4999a1={}){if(!_0x26630e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4999a1['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3126bd,_0x3f1bcf={};if(_0x4999a1['files']&&_0x4999a1['files']['length']>0x0){const _0x3fd0be=new FormData();_0x3fd0be['append']('instructions',_0x4999a1['instructions']);for(const _0x2d28a5 of _0x4999a1['files']){_0x3fd0be['append']('attachments',_0x2d28a5);}_0x3126bd=_0x3fd0be;}else _0x3f1bcf['Content-Type']='application/json',_0x3126bd=JSON['stringify']({'instructions':_0x4999a1['instructions']});const _0x202f86=await fetch(API_BASE+'/tasks/'+_0x26630e+'/follow-up',{'method':'POST','headers':_0x3f1bcf,'body':_0x3126bd});if(!_0x202f86['ok']){const _0x38b1ee=await _0x202f86['json']()['catch'](()=>({}));throw new Error(_0x38b1ee['error']||_0x38b1ee['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x202f86['statusText']);}return await _0x202f86['json']();},async 'getTaskRewindPoints'(_0x594a4e){if(!_0x594a4e)throw new Error('Task\x20ID\x20is\x20required');const _0x1633e4=await fetch(API_BASE+'/tasks/'+_0x594a4e+'/rewind-points');if(!_0x1633e4['ok']){const _0x1b5544=await _0x1633e4['json']()['catch'](()=>({}));throw new Error(_0x1b5544['error']||_0x1b5544['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1633e4['statusText']);}return await _0x1633e4['json']();},async 'rewindTask'(_0x5ab4b8,_0x304cc2={}){if(!_0x5ab4b8)throw new Error('Task\x20ID\x20is\x20required');const _0x4a6e5d=Number['isInteger'](_0x304cc2['targetFollowUpCount'])?_0x304cc2['targetFollowUpCount']:0x0,_0x45db5a={'targetFollowUpCount':_0x4a6e5d};typeof _0x304cc2['instructions']==='string'&&_0x304cc2['instructions']['trim']()&&(_0x45db5a['instructions']=_0x304cc2['instructions']['trim']());typeof _0x304cc2['rewindFiles']==='boolean'&&(_0x45db5a['rewindFiles']=_0x304cc2['rewindFiles']);const _0x2240ae=await fetch(API_BASE+'/tasks/'+_0x5ab4b8+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45db5a)});if(!_0x2240ae['ok']){const _0x1965e4=await _0x2240ae['json']()['catch'](()=>({}));throw new Error(_0x1965e4['error']||_0x1965e4['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2240ae['statusText']);}return await _0x2240ae['json']();},async 'login'(_0x4b7e6c,_0x267008){const _0x8d15fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4b7e6c,'password':_0x267008})});if(!_0x8d15fe['ok']){const _0x3b2a94=await _0x8d15fe['json']();throw new Error(_0x3b2a94['message']||'Login\x20failed');}return await _0x8d15fe['json']();},async 'logout'(){const _0x5b84f5=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5b84f5['ok']){const _0x37cb07=await _0x5b84f5['json']();throw new Error(_0x37cb07['message']||'Logout\x20failed');}return await _0x5b84f5['json']();},async 'getCurrentUser'(){const _0x230d9a=await fetch(API_BASE+'/auth/me');if(!_0x230d9a['ok'])throw new Error('Not\x20authenticated');const _0x279c58=await _0x230d9a['json']();return _0x279c58['user'];},async 'getRolesInfo'(){const _0x4664f2=await fetch(API_BASE+'/users/roles');if(!_0x4664f2['ok']){const _0x22a9d3=await _0x4664f2['json']();throw new Error(_0x22a9d3['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4664f2['json']();},async 'getUsers'(){const _0x1c8676=await fetch(API_BASE+'/users');if(!_0x1c8676['ok']){const _0x34fe5a=await _0x1c8676['json']();throw new Error(_0x34fe5a['message']||'Failed\x20to\x20get\x20users');}return await _0x1c8676['json']();},async 'getUser'(_0x206afd){const _0x1e7fff=await fetch(API_BASE+'/users/'+_0x206afd);if(!_0x1e7fff['ok']){const _0x3802b7=await _0x1e7fff['json']();throw new Error(_0x3802b7['message']||'Failed\x20to\x20get\x20user');}return await _0x1e7fff['json']();},async 'createUser'(_0x3bff15){const _0x324393=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bff15)});if(!_0x324393['ok']){const _0xcff111=await _0x324393['json']();throw new Error(_0xcff111['message']||'Failed\x20to\x20create\x20user');}return await _0x324393['json']();},async 'updateUser'(_0x4afda3,_0x5259c){const _0x4a7084=await fetch(API_BASE+'/users/'+_0x4afda3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5259c)});if(!_0x4a7084['ok']){const _0xb7348f=await _0x4a7084['json']();throw new Error(_0xb7348f['message']||'Failed\x20to\x20update\x20user');}return await _0x4a7084['json']();},async 'deleteUser'(_0x181315){const _0x4984cb=await fetch(API_BASE+'/users/'+_0x181315,{'method':'DELETE'});if(!_0x4984cb['ok']){const _0x4dd92d=await _0x4984cb['json']();throw new Error(_0x4dd92d['message']||'Failed\x20to\x20delete\x20user');}return await _0x4984cb['json']();},async 'stopAllContainers'(){const _0xc6649f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4dba23=await _0xc6649f['json']()['catch'](()=>({}));if(!_0xc6649f['ok'])throw new Error(_0x4dba23['message']||_0x4dba23['error']||'Failed\x20to\x20stop\x20containers');return _0x4dba23;},async 'removeStoppedContainers'(){const _0x27a37f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x9120aa=await _0x27a37f['json']()['catch'](()=>({}));if(!_0x27a37f['ok'])throw new Error(_0x9120aa['message']||_0x9120aa['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x9120aa;},async 'pruneDockerResources'(){const _0xb37caa=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x345367=await _0xb37caa['json']()['catch'](()=>({}));if(!_0xb37caa['ok'])throw new Error(_0x345367['message']||_0x345367['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x345367;},async 'getUpdateSettings'(){const _0x3503e6=await fetch(API_BASE+'/health/update-settings'),_0x67eaa7=await _0x3503e6['json']()['catch'](()=>({}));if(!_0x3503e6['ok'])throw new Error(_0x67eaa7['message']||_0x67eaa7['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x67eaa7;},async 'applyServerUpdate'(_0x5ea4f7){const _0x71ef1e=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x5ea4f7})}),_0x122118=await _0x71ef1e['json']()['catch'](()=>({}));if(!_0x71ef1e['ok']){const _0x102e59=new Error(_0x122118['message']||_0x122118['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x122118['output']!==undefined)_0x102e59['output']=_0x122118['output'];if(_0x122118['error']!==undefined)_0x102e59['commandError']=_0x122118['error'];throw _0x102e59;}return _0x122118;},async 'restartServer'(){const _0x8a7f53=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x3e1ec6=await _0x8a7f53['json']()['catch'](()=>({}));if(!_0x8a7f53['ok'])throw new Error(_0x3e1ec6['message']||_0x3e1ec6['error']||'Failed\x20to\x20restart\x20server');return _0x3e1ec6;},async 'createPasswordToken'(_0x239041,_0x248c0f='setup',_0x36dcca=![]){const _0x3baf45=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x239041,'type':_0x248c0f,'sendEmail':_0x36dcca})});if(!_0x3baf45['ok']){const _0xb6a024=await _0x3baf45['json']();throw new Error(_0xb6a024['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x3baf45['json']();},async 'getEmailConfig'(){const _0x13ca13=await fetch(API_BASE+'/password/email-config');if(!_0x13ca13['ok']){const _0x2df33b=await _0x13ca13['json']();throw new Error(_0x2df33b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x13ca13['json']();},async 'updateTaskName'(_0x301ffd,_0x51d944){const _0x970900=await fetch(API_BASE+'/tasks/'+_0x301ffd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x51d944})});if(!_0x970900['ok']){const _0xd12f47=await _0x970900['json']();throw new Error(_0xd12f47['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x970900['json']();},async 'pinTask'(_0x14af12,_0x5541c2,_0x399cf5=null){if(!_0x14af12)throw new Error('Task\x20ID\x20is\x20required');const _0x5e1c27={'pinned':_0x5541c2};_0x399cf5&&_0x399cf5['length']>0x0&&(_0x5e1c27['additionalTaskIds']=_0x399cf5);const _0x29bd02=await fetch(API_BASE+'/tasks/'+_0x14af12+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e1c27)});if(!_0x29bd02['ok']){const _0x1fc215=await _0x29bd02['json']();throw new Error(_0x1fc215['error']||'Failed\x20to\x20pin\x20task');}return await _0x29bd02['json']();},async 'setTaskWinner'(_0x1a868f,_0x6210cd,_0x323f11=[]){if(!_0x1a868f)throw new Error('Task\x20ID\x20is\x20required');const _0x56bbf4=await fetch(API_BASE+'/tasks/'+_0x1a868f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x6210cd,'siblings':_0x323f11})});if(!_0x56bbf4['ok']){const _0x1b23ad=await _0x56bbf4['json']();throw new Error(_0x1b23ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x56bbf4['json']();},async 'setTaskLoser'(_0x3bdcb9,_0x3d74f5){if(!_0x3bdcb9)throw new Error('Task\x20ID\x20is\x20required');const _0x3f2693=await fetch(API_BASE+'/tasks/'+_0x3bdcb9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d74f5})});if(!_0x3f2693['ok']){const _0x42937e=await _0x3f2693['json']();throw new Error(_0x42937e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3f2693['json']();},async 'createTaskGroup'(_0x2e85fd){const _0x172e56=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e85fd)});if(!_0x172e56['ok']){const _0x3dcde6=await _0x172e56['json']();throw new Error(_0x3dcde6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x172e56['json']();},async 'getTaskGroups'(_0x2a8e3c={}){const _0x3d0fb8=new URLSearchParams();if(_0x2a8e3c['userId'])_0x3d0fb8['set']('userId',String(_0x2a8e3c['userId']));if(_0x2a8e3c['status'])_0x3d0fb8['set']('status',String(_0x2a8e3c['status']));if(_0x2a8e3c['limit'])_0x3d0fb8['set']('limit',String(_0x2a8e3c['limit']));const _0x50004b=API_BASE+'/tasks/groups'+(_0x3d0fb8['toString']()?'?'+_0x3d0fb8['toString']():''),_0x4832a5=await fetch(_0x50004b);if(!_0x4832a5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4832a5['json']();},async 'getTaskGroup'(_0x29704b){const _0x58e38c=await fetch(API_BASE+'/tasks/groups/'+_0x29704b);if(!_0x58e38c['ok']){const _0x2f63e3=await _0x58e38c['json']();throw new Error(_0x2f63e3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x58e38c['json']();},async 'updateTaskGroup'(_0x5e98d8,_0x1bdf91,_0x332ad9){const _0x395c28=await fetch(API_BASE+'/tasks/'+_0x5e98d8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1bdf91,'groupIndex':_0x332ad9})});if(!_0x395c28['ok']){const _0x465936=await _0x395c28['json']();throw new Error(_0x465936['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x395c28['json']();},async 'removeTaskFromGroup'(_0xec4d93){return this['updateTaskGroup'](_0xec4d93,null,null);},async 'deleteTaskGroup'(_0x4f8da6,_0x58cde9=![]){const _0x3bbb37=_0x58cde9?'?deleteTasks=true':'',_0x28c7ad=await fetch(API_BASE+'/tasks/groups/'+_0x4f8da6+_0x3bbb37,{'method':'DELETE'});if(!_0x28c7ad['ok']){const _0x2f5c11=await _0x28c7ad['json']();throw new Error(_0x2f5c11['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3667bb,_0x3f33db){const _0x380af0=await fetch(API_BASE+'/tasks/groups/'+_0x3667bb+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f33db})});if(!_0x380af0['ok']){const _0x105902=await _0x380af0['json']();throw new Error(_0x105902['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x380af0['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3a7e59){if(!_0x3a7e59)throw new Error('Task\x20ID\x20is\x20required');const _0x4c0ca4=await fetch(API_BASE+'/tasks/'+_0x3a7e59+'/comments');if(!_0x4c0ca4['ok']){const _0x3d18a8=await _0x4c0ca4['json']()['catch'](()=>({}));throw new Error(_0x3d18a8['error']||'Failed\x20to\x20get\x20comments');}return await _0x4c0ca4['json']();},async 'addComment'(_0x1d09cb,_0x3d9e09){if(!_0x1d09cb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9e09)throw new Error('Comment\x20content\x20is\x20required');const _0x41e35b=await fetch(API_BASE+'/tasks/'+_0x1d09cb+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d9e09})});if(!_0x41e35b['ok']){const _0x46fc24=await _0x41e35b['json']()['catch'](()=>({}));throw new Error(_0x46fc24['error']||'Failed\x20to\x20add\x20comment');}return await _0x41e35b['json']();},async 'updateComment'(_0x14f2e7,_0xd8ee3c,_0x3d470d){if(!_0x14f2e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd8ee3c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3d470d)throw new Error('Comment\x20content\x20is\x20required');const _0x460ba4=await fetch(API_BASE+'/tasks/'+_0x14f2e7+'/comments/'+_0xd8ee3c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3d470d})});if(!_0x460ba4['ok']){const _0x685ee4=await _0x460ba4['json']()['catch'](()=>({}));throw new Error(_0x685ee4['error']||'Failed\x20to\x20update\x20comment');}return await _0x460ba4['json']();},async 'deleteComment'(_0x38acb9,_0x17ddcd){if(!_0x38acb9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17ddcd)throw new Error('Comment\x20ID\x20is\x20required');const _0x50a36d=await fetch(API_BASE+'/tasks/'+_0x38acb9+'/comments/'+_0x17ddcd,{'method':'DELETE'});if(!_0x50a36d['ok']){const _0x103bc9=await _0x50a36d['json']()['catch'](()=>({}));throw new Error(_0x103bc9['error']||'Failed\x20to\x20delete\x20comment');}return await _0x50a36d['json']();},async 'createObjective'(_0x1122fc){const _0x46770a={'objective':!![],'name':_0x1122fc['name']||'','environment':_0x1122fc['environment']||null,'agents':_0x1122fc['agents']||[],'branches':_0x1122fc['branches']||{},'isPinned':_0x1122fc['isPinned']||![],'parentObjectiveId':_0x1122fc['parentObjectiveId']||null,'env_vars':_0x1122fc['envVars']||{},'parameters':{'instructions':_0x1122fc['instructions']||''},'files':_0x1122fc['files']||[],'jira':_0x1122fc['jira']||null};return this['createTask'](_0x46770a);},async 'updateObjective'(_0x34b8b0,_0x17640a,_0x94b334=[],_0x2c6e31=[]){let _0x5073ab,_0x1130d2={};const _0x13e0a1={..._0x17640a};_0x2c6e31&&_0x2c6e31['length']>0x0&&(_0x13e0a1['removeAttachments']=_0x2c6e31);if(_0x94b334&&_0x94b334['length']>0x0){const _0x48ec41=new FormData();for(const [_0x197a36,_0x3bc0f4]of Object['entries'](_0x13e0a1)){if(_0x3bc0f4==null)continue;typeof _0x3bc0f4==='object'?_0x48ec41['append'](_0x197a36,JSON['stringify'](_0x3bc0f4)):_0x48ec41['append'](_0x197a36,String(_0x3bc0f4));}for(const _0x3aebe9 of _0x94b334){_0x48ec41['append']('attachments',_0x3aebe9);}_0x5073ab=_0x48ec41;}else _0x1130d2['Content-Type']='application/json',_0x5073ab=JSON['stringify'](_0x13e0a1);const _0x1b5199=await fetch(API_BASE+'/tasks/'+_0x34b8b0,{'method':'PATCH','headers':_0x1130d2,'body':_0x5073ab});if(!_0x1b5199['ok']){const _0x38218d=await _0x1b5199['json']();throw new Error(_0x38218d['error']||'Failed\x20to\x20update\x20objective');}return await _0x1b5199['json']();},async 'deleteObjective'(_0x1aacd0){return this['deleteTask'](_0x1aacd0);},async 'launchObjective'(_0x267bbb,_0x1baf51={}){const _0x64f4a5=await fetch(API_BASE+'/tasks/'+_0x267bbb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1baf51)});if(!_0x64f4a5['ok']){const _0x25f1b2=await _0x64f4a5['json']();throw new Error(_0x25f1b2['error']||'Failed\x20to\x20launch\x20objective');}return await _0x64f4a5['json']();},async 'getObjectiveAttachments'(_0x4c4d64){return this['getTaskAttachments'](_0x4c4d64);},async 'createJudgeTask'({environment:_0x281e3b,judgeAgent:_0x586e07,groupId:_0x2800f9,taskIds:_0x5e71fc,judgeCustomInstructions:_0x8ad8a,isPinned:_0x2c4129}){const _0x3fab24=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x281e3b,'judgeAgent':_0x586e07,'groupId':_0x2800f9,'taskIds':_0x5e71fc,'judgeCustomInstructions':_0x8ad8a,'isPinned':_0x2c4129})});if(!_0x3fab24['ok']){const _0x4d63f9=await _0x3fab24['json']();throw new Error(_0x4d63f9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3fab24['json']();},async 'getJudgeTasks'(_0x1b5c0e){const _0xee795f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b5c0e));if(!_0xee795f['ok']){const _0x43ed82=await _0xee795f['json']();throw new Error(_0x43ed82['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xee795f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5aab58,_0x27df70,_0x395aef=''){const _0x525742=await fetch(API_BASE+'/tasks/'+_0x5aab58+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x27df70,'customPreamble':_0x395aef})});if(!_0x525742['ok']){const _0x118bbf=await _0x525742['json']();throw new Error(_0x118bbf['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x525742['json']();},async 'getJiraConfig'(){const _0x3c04b7=await fetch(API_BASE+'/jira/config');if(!_0x3c04b7['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3c04b7['json']();},async 'getJiraIssue'(_0x1c1c32){const _0x50d250=await fetch(API_BASE+'/jira/issues/'+_0x1c1c32);if(!_0x50d250['ok']){const _0x2a3ffb=await _0x50d250['json']()['catch'](()=>({}));throw new Error(_0x2a3ffb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x50d250['statusText']);}return await _0x50d250['json']();},async 'searchJiraIssues'(_0x323ac6,_0x5481a6=0x14){const _0x373e54=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x323ac6,'maxResults':_0x5481a6})});if(!_0x373e54['ok']){const _0x18dec9=await _0x373e54['json']()['catch'](()=>({}));throw new Error(_0x18dec9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x373e54['statusText']);}return await _0x373e54['json']();},async 'postJiraComment'(_0x53242d,_0x3577d6){const _0x32819f=await fetch(API_BASE+'/jira/issues/'+_0x53242d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3577d6})});if(!_0x32819f['ok']){const _0x12aae2=await _0x32819f['json']()['catch'](()=>({}));throw new Error(_0x12aae2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x32819f['statusText']);}return await _0x32819f['json']();},async 'getJiraComments'(_0x28a6ff){const _0x506a71=await fetch(API_BASE+'/jira/issues/'+_0x28a6ff+'/comments');if(!_0x506a71['ok']){const _0x3ee6db=await _0x506a71['json']()['catch'](()=>({}));throw new Error(_0x3ee6db['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x506a71['statusText']);}return await _0x506a71['json']();},async 'promptParameter'({environment:_0x134c83,command:_0x590be8,parser:parser='json'}){const _0x5e2846=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x134c83,'command':_0x590be8,'parser':parser})});if(!_0x5e2846['ok']){const _0x114994=await _0x5e2846['json']()['catch'](()=>({}));throw new Error(_0x114994['message']||_0x114994['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5e2846['statusText']);}return await _0x5e2846['json']();},async 'promptParameterStream'(_0x5a4b6f,_0x1b1f7e){const _0x20efe3=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a4b6f)});if(!_0x20efe3['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x20efe3['statusText']);const _0x2d31e7=_0x20efe3['body']['getReader'](),_0xed2567=new TextDecoder();let _0x90a718='';return new Promise((_0x23ac5d,_0x20bb4d)=>{const _0x2849df=async()=>{try{const {done:_0x359b5f,value:_0x409783}=await _0x2d31e7['read']();if(_0x359b5f)return;_0x90a718+=_0xed2567['decode'](_0x409783,{'stream':!![]});const _0x4a6ff2=_0x90a718['split']('\x0a\x0a');_0x90a718=_0x4a6ff2['pop']()||'';for(const _0x1edc6c of _0x4a6ff2){if(!_0x1edc6c['trim']())continue;const _0x2b16e4=_0x1edc6c['split']('\x0a');let _0x483ac7='message',_0x510141='';for(const _0x294903 of _0x2b16e4){if(_0x294903['startsWith']('event:'))_0x483ac7=_0x294903['substring'](0x6)['trim']();else _0x294903['startsWith']('data:')&&(_0x510141=_0x294903['substring'](0x5)['trim']());}if(!_0x510141)continue;try{const _0x16a4c8=JSON['parse'](_0x510141);if(_0x483ac7==='progress'&&_0x1b1f7e)_0x1b1f7e(_0x16a4c8['stage'],_0x16a4c8['message']);else{if(_0x483ac7==='result'){_0x23ac5d(_0x16a4c8);return;}else{if(_0x483ac7==='error'){let _0x2eff4e=_0x16a4c8['message']||_0x16a4c8['error']||'Prompt\x20command\x20failed';_0x16a4c8['rawOutput']&&(_0x2eff4e+='\x0a\x0aRaw\x20output:\x0a'+_0x16a4c8['rawOutput']);_0x20bb4d(new Error(_0x2eff4e));return;}}}}catch(_0x37e5c8){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x37e5c8),console['error']('Event\x20type:',_0x483ac7),console['error']('Event\x20data:',_0x510141),console['error']('First\x20200\x20chars:',_0x510141['substring'](0x0,0xc8)),_0x20bb4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x37e5c8['message']+'\x0a\x0aData:\x20'+_0x510141['substring'](0x0,0x1f4)));return;}}_0x2849df();}catch(_0x57a081){_0x20bb4d(_0x57a081);}};_0x2849df();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2c2bbb){const _0x2e6074=await fetch(''+API_BASE+_0x2c2bbb);if(!_0x2e6074['ok']){const _0x707ce1=await _0x2e6074['json']()['catch'](()=>({'error':_0x2e6074['statusText']})),_0x338709=new Error(_0x707ce1['error']||_0x707ce1['message']||_0x2e6074['statusText']);if(_0x707ce1['detail']!==undefined)_0x338709['detail']=_0x707ce1['detail'];throw _0x338709;}return await _0x2e6074['json']();},async 'post'(_0xe9607f,_0x2e534e){const _0x5c1648=await fetch(''+API_BASE+_0xe9607f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e534e)});if(!_0x5c1648['ok']){const _0x2c5891=await _0x5c1648['json']()['catch'](()=>({'error':_0x5c1648['statusText']})),_0x39f4c5=new Error(_0x2c5891['error']||_0x2c5891['message']||_0x5c1648['statusText']);if(_0x2c5891['detail']!==undefined)_0x39f4c5['detail']=_0x2c5891['detail'];throw _0x39f4c5;}return await _0x5c1648['json']();},async 'put'(_0x49d442,_0x242ddf){const _0x27cfd8=await fetch(''+API_BASE+_0x49d442,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x242ddf)});if(!_0x27cfd8['ok']){const _0x53ac92=await _0x27cfd8['json']()['catch'](()=>({'error':_0x27cfd8['statusText']})),_0x303046=new Error(_0x53ac92['error']||_0x53ac92['message']||_0x27cfd8['statusText']);if(_0x53ac92['detail']!==undefined)_0x303046['detail']=_0x53ac92['detail'];throw _0x303046;}return await _0x27cfd8['json']();},async 'delete'(_0x1dab89,_0x5f52e0){const _0x1f52c9={'method':'DELETE'};_0x5f52e0&&(_0x1f52c9['headers']={'Content-Type':'application/json'},_0x1f52c9['body']=JSON['stringify'](_0x5f52e0));const _0x2995fe=await fetch(''+API_BASE+_0x1dab89,_0x1f52c9);if(!_0x2995fe['ok']){const _0x551c60=await _0x2995fe['json']()['catch'](()=>({'error':_0x2995fe['statusText']})),_0x432771=new Error(_0x551c60['error']||_0x551c60['message']||_0x2995fe['statusText']);if(_0x551c60['detail']!==undefined)_0x432771['detail']=_0x551c60['detail'];throw _0x432771;}return await _0x2995fe['json']();},async 'getSkills'(){const _0x4a1e0e=await fetch(API_BASE+'/skills');if(!_0x4a1e0e['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a1e0e['statusText']);return await _0x4a1e0e['json']();},async 'getSkill'(_0x40f20f){const _0x2a34ed=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40f20f));if(!_0x2a34ed['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2a34ed['statusText']);return await _0x2a34ed['json']();},async 'createSkill'(_0x1921e2){const _0x336f85=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1921e2)});if(!_0x336f85['ok']){const _0x4adbe9=await _0x336f85['json']()['catch'](()=>({'error':_0x336f85['statusText']})),_0x3daa32=new Error(_0x4adbe9['error']||_0x4adbe9['message']||_0x336f85['statusText']);if(_0x4adbe9['detail']!==undefined)_0x3daa32['detail']=_0x4adbe9['detail'];throw _0x3daa32;}return await _0x336f85['json']();},async 'updateSkill'(_0x4e614d,_0x2ff208){const _0x4f39d8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4e614d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ff208)});if(!_0x4f39d8['ok']){const _0xc0a64e=await _0x4f39d8['json']()['catch'](()=>({'error':_0x4f39d8['statusText']})),_0x5a8d13=new Error(_0xc0a64e['error']||_0xc0a64e['message']||_0x4f39d8['statusText']);if(_0xc0a64e['detail']!==undefined)_0x5a8d13['detail']=_0xc0a64e['detail'];throw _0x5a8d13;}return await _0x4f39d8['json']();},async 'deleteSkill'(_0x1db906){const _0x4c5f81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1db906),{'method':'DELETE'});if(!_0x4c5f81['ok']){const _0x16b557=await _0x4c5f81['json']()['catch'](()=>({'error':_0x4c5f81['statusText']})),_0x3682d5=new Error(_0x16b557['error']||_0x16b557['message']||_0x4c5f81['statusText']);if(_0x16b557['detail']!==undefined)_0x3682d5['detail']=_0x16b557['detail'];throw _0x3682d5;}return await _0x4c5f81['json']();},async 'getSkillFile'(_0x23be11,_0x2beda4){const _0x2bc4d4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23be11)+'/files/'+_0x2beda4);if(!_0x2bc4d4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2bc4d4['statusText']);return await _0x2bc4d4['json']();},async 'saveSkillFile'(_0xb4a597,_0x36d736,_0x228292){const _0x2d406b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xb4a597)+'/files/'+_0x36d736,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x228292})});if(!_0x2d406b['ok']){const _0x131eb1=await _0x2d406b['json']()['catch'](()=>({'error':_0x2d406b['statusText']})),_0x22a634=new Error(_0x131eb1['error']||_0x131eb1['message']||_0x2d406b['statusText']);if(_0x131eb1['detail']!==undefined)_0x22a634['detail']=_0x131eb1['detail'];throw _0x22a634;}return await _0x2d406b['json']();},async 'deleteSkillFile'(_0x52c667,_0x24a5ce){const _0x5e3ac0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52c667)+'/files/'+_0x24a5ce,{'method':'DELETE'});if(!_0x5e3ac0['ok']){const _0x31cc71=await _0x5e3ac0['json']()['catch'](()=>({'error':_0x5e3ac0['statusText']})),_0x293e57=new Error(_0x31cc71['error']||_0x31cc71['message']||_0x5e3ac0['statusText']);if(_0x31cc71['detail']!==undefined)_0x293e57['detail']=_0x31cc71['detail'];throw _0x293e57;}return await _0x5e3ac0['json']();},async 'pullSkills'(){const _0x60359=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x60359['ok']){const _0xc2a23=await _0x60359['json']()['catch'](()=>({'error':_0x60359['statusText']})),_0x2402de=new Error(_0xc2a23['error']||_0xc2a23['message']||_0x60359['statusText']);if(_0xc2a23['detail']!==undefined)_0x2402de['detail']=_0xc2a23['detail'];throw _0x2402de;}return await _0x60359['json']();},async 'commitSkills'(_0x5c08db,_0x53149c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x53149c,_0x4649ef=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5c08db,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4649ef['ok']){const _0xd32719=await _0x4649ef['json']()['catch'](()=>({'error':_0x4649ef['statusText']})),_0x1bea37=new Error(_0xd32719['error']||_0xd32719['message']||_0x4649ef['statusText']);if(_0xd32719['detail']!==undefined)_0x1bea37['detail']=_0xd32719['detail'];throw _0x1bea37;}return await _0x4649ef['json']();},async 'discardSkillsChanges'(){const _0x5be332=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5be332['ok']){const _0x2ced11=await _0x5be332['json']()['catch'](()=>({'error':_0x5be332['statusText']})),_0xba4535=new Error(_0x2ced11['error']||_0x2ced11['message']||_0x5be332['statusText']);if(_0x2ced11['detail']!==undefined)_0xba4535['detail']=_0x2ced11['detail'];throw _0xba4535;}return await _0x5be332['json']();},async 'getSkillCatalog'(){const _0x239d68=await fetch(API_BASE+'/external-skills/catalog');if(!_0x239d68['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x239d68['statusText']);return await _0x239d68['json']();},async 'getImportedSkillsRegistry'(){const _0x4490b9=await fetch(API_BASE+'/external-skills/registry');if(!_0x4490b9['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4490b9['statusText']);return await _0x4490b9['json']();},async 'importCatalogSkill'(_0x2dc632){const _0x5d7bf0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2dc632})});if(!_0x5d7bf0['ok']){const _0x20b9a6=await _0x5d7bf0['json']()['catch'](()=>({'error':_0x5d7bf0['statusText']})),_0x1ba7b7=new Error(_0x20b9a6['error']||_0x20b9a6['message']||_0x5d7bf0['statusText']);if(_0x20b9a6['detail']!==undefined)_0x1ba7b7['detail']=_0x20b9a6['detail'];throw _0x1ba7b7;}return await _0x5d7bf0['json']();},async 'importSkillFromGit'(_0x12fb5f,_0x4f95b4,_0x215baa='main',_0x2e237f=null){const _0xd8291b=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x12fb5f,'skillPath':_0x4f95b4,'branch':_0x215baa,'skillId':_0x2e237f})});if(!_0xd8291b['ok']){const _0x5e4e9e=await _0xd8291b['json']()['catch'](()=>({'error':_0xd8291b['statusText']})),_0x39c7b7=new Error(_0x5e4e9e['error']||_0x5e4e9e['message']||_0xd8291b['statusText']);if(_0x5e4e9e['detail']!==undefined)_0x39c7b7['detail']=_0x5e4e9e['detail'];throw _0x39c7b7;}return await _0xd8291b['json']();},async 'probeMarketplace'(_0xb9fe9d,_0x39e7bb='main'){const _0xc0722e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xb9fe9d,'branch':_0x39e7bb})});if(!_0xc0722e['ok']){const _0x47be80=await _0xc0722e['json']()['catch'](()=>({'error':_0xc0722e['statusText']})),_0x3d9a78=new Error(_0x47be80['error']||_0x47be80['message']||_0xc0722e['statusText']);if(_0x47be80['detail']!==undefined)_0x3d9a78['detail']=_0x47be80['detail'];throw _0x3d9a78;}return await _0xc0722e['json']();},async 'importMarketplaceBundle'(_0x36d2bc,_0xe2c73b,_0x410844,_0x39c031=null){const _0x2a05e3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x36d2bc,'branch':_0xe2c73b,'bundleId':_0x410844,'selectedSkills':_0x39c031})});if(!_0x2a05e3['ok']){const _0x7a265=await _0x2a05e3['json']()['catch'](()=>({'error':_0x2a05e3['statusText']})),_0x36ae4c=new Error(_0x7a265['error']||_0x7a265['message']||_0x2a05e3['statusText']);if(_0x7a265['detail']!==undefined)_0x36ae4c['detail']=_0x7a265['detail'];throw _0x36ae4c;}return await _0x2a05e3['json']();},async 'importSkillFromFolder'(_0x2ac52b,_0x459e1a=null){const _0xae6c68=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2ac52b,'skillId':_0x459e1a})});if(!_0xae6c68['ok']){const _0x61cf0d=await _0xae6c68['json']()['catch'](()=>({'error':_0xae6c68['statusText']})),_0x4fb507=new Error(_0x61cf0d['error']||_0x61cf0d['message']||_0xae6c68['statusText']);if(_0x61cf0d['detail']!==undefined)_0x4fb507['detail']=_0x61cf0d['detail'];throw _0x4fb507;}return await _0xae6c68['json']();},async 'importSkillFromNpm'(_0x2108f8,_0x902b8c='latest',_0xe432a5=null,_0x229932=null){const _0x1f28c6=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2108f8,'version':_0x902b8c,'skillId':_0xe432a5,'registry':_0x229932})});if(!_0x1f28c6['ok']){const _0x4d1d7f=await _0x1f28c6['json']()['catch'](()=>({'error':_0x1f28c6['statusText']})),_0x19d9e7=new Error(_0x4d1d7f['error']||_0x4d1d7f['message']||_0x1f28c6['statusText']);if(_0x4d1d7f['detail']!==undefined)_0x19d9e7['detail']=_0x4d1d7f['detail'];throw _0x19d9e7;}return await _0x1f28c6['json']();},async 'checkSkillUpdates'(_0x2e69cb){const _0x38199b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e69cb)+'/check-updates',{'method':'POST'});if(!_0x38199b['ok']){const _0x1bdf35=await _0x38199b['json']()['catch'](()=>({'error':_0x38199b['statusText']})),_0x286d66=new Error(_0x1bdf35['error']||_0x1bdf35['message']||_0x38199b['statusText']);if(_0x1bdf35['detail']!==undefined)_0x286d66['detail']=_0x1bdf35['detail'];throw _0x286d66;}return await _0x38199b['json']();},async 'updateExternalSkill'(_0x3cebfc){const _0x5102e8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cebfc)+'/update',{'method':'POST'});if(!_0x5102e8['ok']){const _0x40e673=await _0x5102e8['json']()['catch'](()=>({'error':_0x5102e8['statusText']})),_0x4ec3b9=new Error(_0x40e673['error']||_0x40e673['message']||_0x5102e8['statusText']);if(_0x40e673['detail']!==undefined)_0x4ec3b9['detail']=_0x40e673['detail'];throw _0x4ec3b9;}return await _0x5102e8['json']();},async 'updateSkillFlags'(_0x175fbd,_0x25b5eb){const _0x5446fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x175fbd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x25b5eb})});if(!_0x5446fd['ok']){const _0x4ff27b=await _0x5446fd['json']()['catch'](()=>({'error':_0x5446fd['statusText']})),_0x56c764=new Error(_0x4ff27b['error']||_0x4ff27b['message']||_0x5446fd['statusText']);if(_0x4ff27b['detail']!==undefined)_0x56c764['detail']=_0x4ff27b['detail'];throw _0x56c764;}return await _0x5446fd['json']();},async 'removeFromImportedRegistry'(_0x4fefcc){const _0x266969=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4fefcc)+'/registry',{'method':'DELETE'});if(!_0x266969['ok']){const _0x38060f=await _0x266969['json']()['catch'](()=>({'error':_0x266969['statusText']})),_0x54ce3f=new Error(_0x38060f['error']||_0x38060f['message']||_0x266969['statusText']);if(_0x38060f['detail']!==undefined)_0x54ce3f['detail']=_0x38060f['detail'];throw _0x54ce3f;}return await _0x266969['json']();},async 'getTeams'(){const _0x24b7e=await fetch(API_BASE+'/teams');if(!_0x24b7e['ok']){const _0x3a8ab9=await _0x24b7e['json']()['catch'](()=>({'message':_0x24b7e['statusText']}));throw new Error(_0x3a8ab9['message']||'Failed\x20to\x20get\x20teams');}return await _0x24b7e['json']();},async 'getTeam'(_0x75db77){const _0x3161b4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x75db77));if(!_0x3161b4['ok']){const _0x34956d=await _0x3161b4['json']()['catch'](()=>({'message':_0x3161b4['statusText']}));throw new Error(_0x34956d['message']||'Failed\x20to\x20get\x20team');}return await _0x3161b4['json']();},async 'createTeam'(_0xc9676c){const _0x656fa2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc9676c)});if(!_0x656fa2['ok']){const _0x28abe8=await _0x656fa2['json']()['catch'](()=>({'message':_0x656fa2['statusText']}));throw new Error(_0x28abe8['message']||'Failed\x20to\x20create\x20team');}return await _0x656fa2['json']();},async 'updateTeam'(_0x256478,_0x2cbf53){const _0x3559cd=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x256478),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2cbf53)});if(!_0x3559cd['ok']){const _0x4c561c=await _0x3559cd['json']()['catch'](()=>({'message':_0x3559cd['statusText']}));throw new Error(_0x4c561c['message']||'Failed\x20to\x20update\x20team');}return await _0x3559cd['json']();},async 'deleteTeam'(_0x3bef18){const _0x1a66ed=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bef18),{'method':'DELETE'});if(!_0x1a66ed['ok']){const _0x4fdefa=await _0x1a66ed['json']()['catch'](()=>({'message':_0x1a66ed['statusText']}));throw new Error(_0x4fdefa['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a66ed['json']();},async 'addTeamMember'(_0x3de777,_0xb155dc){const _0x4e2cb6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3de777)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xb155dc})});if(!_0x4e2cb6['ok']){const _0x223fb4=await _0x4e2cb6['json']()['catch'](()=>({'message':_0x4e2cb6['statusText']}));throw new Error(_0x223fb4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4e2cb6['json']();},async 'removeTeamMember'(_0x627bc7,_0x445588){const _0x33e14f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x627bc7)+'/members/'+encodeURIComponent(_0x445588),{'method':'DELETE'});if(!_0x33e14f['ok']){const _0x1d039e=await _0x33e14f['json']()['catch'](()=>({'message':_0x33e14f['statusText']}));throw new Error(_0x1d039e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x33e14f['json']();},async 'getBindings'(_0x1582fd={}){const _0x4ed6c2=new URLSearchParams();if(_0x1582fd['resource_type'])_0x4ed6c2['set']('resource_type',_0x1582fd['resource_type']);if(_0x1582fd['resource_id'])_0x4ed6c2['set']('resource_id',_0x1582fd['resource_id']);if(_0x1582fd['subject_type'])_0x4ed6c2['set']('subject_type',_0x1582fd['subject_type']);if(_0x1582fd['subject_id'])_0x4ed6c2['set']('subject_id',_0x1582fd['subject_id']);const _0x2c044c=_0x4ed6c2['toString'](),_0x328e2a=await fetch(API_BASE+'/bindings'+(_0x2c044c?'?'+_0x2c044c:''));if(!_0x328e2a['ok']){const _0xc046c5=await _0x328e2a['json']()['catch'](()=>({'message':_0x328e2a['statusText']}));throw new Error(_0xc046c5['message']||'Failed\x20to\x20get\x20bindings');}return await _0x328e2a['json']();},async 'createBinding'(_0x573ff9){const _0x434685=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573ff9)});if(!_0x434685['ok']){const _0x2dff8f=await _0x434685['json']()['catch'](()=>({'message':_0x434685['statusText']}));throw new Error(_0x2dff8f['message']||'Failed\x20to\x20create\x20binding');}return await _0x434685['json']();},async 'updateBinding'(_0x4cc9e0,_0x3e86fd){const _0x3c604f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4cc9e0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e86fd)});if(!_0x3c604f['ok']){const _0xe90504=await _0x3c604f['json']()['catch'](()=>({'message':_0x3c604f['statusText']}));throw new Error(_0xe90504['message']||'Failed\x20to\x20update\x20binding');}return await _0x3c604f['json']();},async 'deleteBinding'(_0x57aca8){const _0x32de74=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x57aca8),{'method':'DELETE'});if(!_0x32de74['ok']){const _0x177753=await _0x32de74['json']()['catch'](()=>({'message':_0x32de74['statusText']}));throw new Error(_0x177753['message']||'Failed\x20to\x20delete\x20binding');}return await _0x32de74['json']();},async 'getRoleDefinitions'(){const _0x561542=await fetch(API_BASE+'/roles');if(!_0x561542['ok']){const _0x136366=await _0x561542['json']()['catch'](()=>({'message':_0x561542['statusText']}));throw new Error(_0x136366['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x561542['json']();},async 'getRoleDefinition'(_0x1010d8){const _0x4b6e65=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1010d8));if(!_0x4b6e65['ok']){const _0x30f74b=await _0x4b6e65['json']()['catch'](()=>({'message':_0x4b6e65['statusText']}));throw new Error(_0x30f74b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b6e65['json']();},async 'createRoleDefinition'(_0xd0783){const _0x18d39a=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0783)});if(!_0x18d39a['ok']){const _0x18d443=await _0x18d39a['json']()['catch'](()=>({'message':_0x18d39a['statusText']}));throw new Error(_0x18d443['message']||_0x18d443['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x18d39a['json']();},async 'updateRoleDefinition'(_0x130404,_0x1570cc){const _0x1ccdb2=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x130404),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1570cc)});if(!_0x1ccdb2['ok']){const _0x100775=await _0x1ccdb2['json']()['catch'](()=>({'message':_0x1ccdb2['statusText']}));throw new Error(_0x100775['message']||_0x100775['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1ccdb2['json']();},async 'deleteRoleDefinition'(_0x3c535e){const _0x28070c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3c535e),{'method':'DELETE'});if(!_0x28070c['ok']){const _0x45915a=await _0x28070c['json']()['catch'](()=>({'message':_0x28070c['statusText']}));throw new Error(_0x45915a['message']||_0x45915a['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28070c['json']();},async 'getAvailablePermissions'(){const _0x217ac8=await fetch(API_BASE+'/roles/available-permissions');if(!_0x217ac8['ok']){const _0x4ee09b=await _0x217ac8['json']()['catch'](()=>({'message':_0x217ac8['statusText']}));throw new Error(_0x4ee09b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x217ac8['json']();},async 'getGitProviderAllowedTeams'(_0x540c3f){const _0x3be5e2=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x540c3f)+'/allowed-teams');if(!_0x3be5e2['ok']){const _0x2ce505=await _0x3be5e2['json']()['catch'](()=>({'message':_0x3be5e2['statusText']}));throw new Error(_0x2ce505['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3be5e2['json']();},async 'setGitProviderAllowedTeams'(_0x16ea37,_0x390231){const _0x28e94c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x16ea37)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x390231})});if(!_0x28e94c['ok']){const _0x3bc565=await _0x28e94c['json']()['catch'](()=>({'message':_0x28e94c['statusText']}));throw new Error(_0x3bc565['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x28e94c['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 _0x2c7df2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x514f94=>{_0x514f94['el']['style']['bottom']=_0x2c7df2+'px';const _0x46d599=_0x514f94['el']['offsetHeight']||toastState['defaultHeight'];_0x2c7df2+=_0x46d599+toastState['gap'];});});}function removeToastById(_0x1b3d53){const _0x63c431=toastState['toasts']['findIndex'](_0x585569=>_0x585569['id']===_0x1b3d53);if(_0x63c431===-0x1)return;const _0x296994=toastState['toasts'][_0x63c431];if(_0x296994['timeoutId'])clearTimeout(_0x296994['timeoutId']);_0x296994['el']['classList']['remove']('show'),setTimeout(()=>_0x296994['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x63c431,0x1),repositionAllToasts();}function registerToast(_0x13b131){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x13b131),repositionAllToasts(),_0x13b131['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(_0x48467e){if(_0x48467e===null||_0x48467e===undefined)return'';return String(_0x48467e)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x1dde34,_0xf304ab){if(_0x1dde34&&typeof _0x1dde34==='object'&&!Array['isArray'](_0x1dde34))return{'code':typeof _0x1dde34['text']==='string'?_0x1dde34['text']:'','language':typeof _0x1dde34['lang']==='string'?_0x1dde34['lang']:''};return{'code':typeof _0x1dde34==='string'?_0x1dde34:'','language':typeof _0xf304ab==='string'?_0xf304ab:''};}function buildMermaidBlock(_0x5cf822){const _0x236fd5=String(_0x5cf822||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x236fd5))+'\x22>'+escapeHtmlValue(_0x236fd5)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x58e1df=new marked['Renderer'](),_0xda8391=_0x58e1df['code']['bind'](_0x58e1df);return _0x58e1df['code']=function(_0x200ac0,_0x28c48e,..._0x56ac54){const {code:_0x442bf7,language:_0x1e6c6e}=getMarkdownCodeBlockPayload(_0x200ac0,_0x28c48e),_0x3d4725=String(_0x1e6c6e||'')['trim']()['toLowerCase']();if(_0x3d4725==='mermaid')return buildMermaidBlock(_0x442bf7);const _0xbc3dd0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xbc3dd0&&_0x3d4725)try{const _0x1bc6e6=_0xbc3dd0['getLanguage'](_0x3d4725)?_0x3d4725:'plaintext',_0x5e1d8b=_0xbc3dd0['highlight'](_0x442bf7,{'language':_0x1bc6e6})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3d4725)+'\x22>'+_0x5e1d8b+'</code></pre>';}catch(_0x11e929){console['error']('Syntax\x20highlighting\x20error:',_0x11e929);}return _0xda8391(_0x200ac0,_0x28c48e,..._0x56ac54);},sharedMarkedRenderer=_0x58e1df,_0x58e1df;}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 _0x5ee7a5=window['mermaid'];if(!_0x5ee7a5||typeof _0x5ee7a5['initialize']!=='function')return _0x5ee7a5||null;return _0x5ee7a5['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5ee7a5;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x54ba48,_0x39a132)=>{const _0x12e508=()=>_0x54ba48(configureMermaidInstance()),_0x2cdb05=()=>{mermaidLoadPromise=null,_0x39a132(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x32bae7=document['getElementById'](MERMAID_SCRIPT_ID);!_0x32bae7&&(_0x32bae7=document['createElement']('script'),_0x32bae7['id']=MERMAID_SCRIPT_ID,_0x32bae7['src']=MERMAID_SCRIPT_SRC,_0x32bae7['async']=!![],document['head']['appendChild'](_0x32bae7));if(window['mermaid']){_0x12e508();return;}_0x32bae7['addEventListener']('load',_0x12e508,{'once':!![]}),_0x32bae7['addEventListener']('error',_0x2cdb05,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2ac6dd){const _0x41a535=_0x2ac6dd['getAttribute']('data-mermaid-source');if(!_0x41a535)return null;let _0x3c82aa=_0x41a535;try{_0x3c82aa=decodeURIComponent(_0x41a535);}catch{}return _0x2ac6dd['textContent']=_0x3c82aa,_0x2ac6dd['removeAttribute']('data-processed'),_0x2ac6dd['removeAttribute']('aria-roledescription'),_0x2ac6dd['removeAttribute']('role'),_0x2ac6dd['removeAttribute']('aria-label'),_0x3c82aa;}function collectMermaidNodes(_0x5ab631,_0x425570){if(!(_0x5ab631 instanceof Element))return;_0x5ab631['matches']('.mermaid[data-mermaid-source]')&&_0x425570['add'](_0x5ab631),_0x5ab631['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x30a434=>{_0x425570['add'](_0x30a434);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x588889=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x273839=>setTimeout(_0x273839,0x0);_0x588889(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x36e478=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x36e478);});});}function queueMermaidRender(_0x364334){const _0x3bc194=new Set();_0x364334 instanceof Document||_0x364334 instanceof DocumentFragment?_0x364334['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1822a5=>_0x3bc194['add'](_0x1822a5)):collectMermaidNodes(_0x364334,_0x3bc194);if(_0x3bc194['size']===0x0)return;_0x3bc194['forEach'](_0x433a1b=>pendingMermaidNodes['add'](_0x433a1b)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5affb3=Array['from'](pendingMermaidNodes)['filter'](_0x143eb7=>_0x143eb7['isConnected']);pendingMermaidNodes['clear']();if(_0x5affb3['length']===0x0)return;const _0xbf1a66=await loadMermaid();if(!_0xbf1a66)return;configureMermaidInstance();const _0x3d12b6=getMermaidTheme();for(const _0x4d6428 of _0x5affb3){const _0x54a36e=_0x4d6428['getAttribute']('data-mermaid-source');if(!_0x54a36e)continue;const _0x4004ce=_0x4d6428['getAttribute']('data-processed')==='true';if(_0x4004ce&&_0x4d6428['dataset']['mermaidTheme']===_0x3d12b6)continue;restoreMermaidSource(_0x4d6428);try{if(typeof _0xbf1a66['run']==='function')await _0xbf1a66['run']({'nodes':[_0x4d6428]});else typeof _0xbf1a66['init']==='function'&&_0xbf1a66['init'](undefined,[_0x4d6428]);_0x4d6428['dataset']['mermaidTheme']=_0x3d12b6,delete _0x4d6428['dataset']['mermaidError'];}catch(_0x12717b){console['error']('Mermaid\x20render\x20failed:',_0x12717b),restoreMermaidSource(_0x4d6428),_0x4d6428['dataset']['mermaidError']='true',delete _0x4d6428['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x21c930=>{_0x21c930['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x21c930);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x53d410=>{_0x53d410['forEach'](_0x2f7e52=>{_0x2f7e52['addedNodes']['forEach'](_0x3f4003=>{_0x3f4003['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3f4003);});});}),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'(_0x7753c1){const _0x4cab0a=new Date(_0x7753c1),_0x3b3430=new Date(),_0x446c41=_0x3b3430-_0x4cab0a,_0x457f1b=Math['floor'](_0x446c41/0x3e8),_0x310330=Math['floor'](_0x457f1b/0x3c),_0x1daef8=Math['floor'](_0x310330/0x3c),_0x22166a=Math['floor'](_0x1daef8/0x18);if(_0x457f1b<0x3c)return'now';if(_0x310330<0x3c)return _0x310330+'m\x20ago';if(_0x1daef8<0x18)return _0x1daef8+'h\x20ago';return _0x22166a+'d\x20ago';},'getStatusIcon'(_0x2145cc){switch(_0x2145cc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x18ceac){switch(_0x18ceac){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'(_0x1e133c,_0x2b285e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x8505b0={};_0x8505b0['text/plain']=new Blob([_0x1e133c],{'type':'text/plain'});_0x2b285e&&(_0x8505b0['text/html']=new Blob([_0x2b285e],{'type':'text/html'}));const _0x45097b=new ClipboardItem(_0x8505b0);return await navigator['clipboard']['write']([_0x45097b]),!![];}catch(_0x2c7039){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2c7039);}try{const _0x17f034=_0x302084=>{_0x302084['preventDefault'](),_0x302084['clipboardData']['setData']('text/plain',_0x1e133c),_0x2b285e&&_0x302084['clipboardData']['setData']('text/html',_0x2b285e);};document['addEventListener']('copy',_0x17f034);const _0x1a3414=document['execCommand']('copy');document['removeEventListener']('copy',_0x17f034);if(_0x1a3414)return!![];}catch(_0x4d1342){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4d1342);}try{const _0x3c27cc=document['createElement']('textarea');_0x3c27cc['value']=_0x1e133c,_0x3c27cc['style']['position']='fixed',_0x3c27cc['style']['opacity']='0',_0x3c27cc['style']['pointerEvents']='none',document['body']['appendChild'](_0x3c27cc),_0x3c27cc['select']();const _0x3a786f=document['execCommand']('copy');return document['body']['removeChild'](_0x3c27cc),_0x3a786f;}catch(_0x3b8c11){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3b8c11),![];}},'showToast'(_0x3c0a60,_0x14c655='info'){const _0x4aeef2=getNextToastId(),_0x7783d9=document['createElement']('div');_0x7783d9['className']='toast\x20toast-'+_0x14c655,_0x7783d9['textContent']=_0x3c0a60,_0x7783d9['dataset']['toastId']=_0x4aeef2,document['body']['appendChild'](_0x7783d9);const _0x32109a=_0x14c655==='error'?0x2710:0xbb8,_0x1b6524=setTimeout(()=>{removeToastById(_0x4aeef2);},_0x32109a),_0xc0b3be={'id':_0x4aeef2,'el':_0x7783d9,'timeoutId':_0x1b6524};return registerToast(_0xc0b3be),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x7783d9['classList']['add']('show');});}),_0x4aeef2;},'showError'(_0x2c9233){console['error'](_0x2c9233);const _0x18a4ff=typeof _0x2c9233==='string'?_0x2c9233:_0x2c9233['message']||'An\x20error\x20occurred';this['showToast'](_0x18a4ff,'error');},'showSuccess'(_0x3fc305){this['showToast'](_0x3fc305,'success');},'capitalize'(_0x4e38b7){if(!_0x4e38b7)return'';return _0x4e38b7['charAt'](0x0)['toUpperCase']()+_0x4e38b7['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3579a7){return escapeHtmlValue(_0x3579a7);},'ansiToHtml'(_0x354bf1){if(_0x354bf1===null||_0x354bf1===undefined)return'';let _0x5add83=this['escapeHtml'](_0x354bf1);const _0x167147={'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'},_0x2d70c9={'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 _0x2e4a62=0x0;return _0x5add83=_0x5add83['replace'](/\x1b\[([0-9;]*)m/g,(_0x5632a6,_0x28e4f2)=>{if(!_0x28e4f2||_0x28e4f2==='0'){const _0x47e5a5='</span>'['repeat'](_0x2e4a62);return _0x2e4a62=0x0,_0x47e5a5;}const _0xf2d713=_0x28e4f2['split'](';'),_0x417497=[];for(const _0x49d82d of _0xf2d713){if(_0x49d82d==='1')_0x417497['push']('font-weight:bold');else{if(_0x49d82d==='2')_0x417497['push']('opacity:0.7');else{if(_0x49d82d==='3')_0x417497['push']('font-style:italic');else{if(_0x49d82d==='4')_0x417497['push']('text-decoration:underline');else{if(_0x49d82d==='9')_0x417497['push']('text-decoration:line-through');else{if(_0x167147[_0x49d82d])_0x417497['push']('color:'+_0x167147[_0x49d82d]);else{if(_0x2d70c9[_0x49d82d])_0x417497['push']('background-color:'+_0x2d70c9[_0x49d82d]);}}}}}}}if(_0x417497['length']>0x0)return _0x2e4a62++,'<span\x20style=\x22'+_0x417497['join'](';')+'\x22>';return'';}),_0x5add83+='</span>'['repeat'](_0x2e4a62),_0x5add83=_0x5add83['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4bf293,_0x2796ce)=>{if(!_0x2796ce||_0x2796ce==='0')return'';const _0x551465=_0x2796ce['split'](';'),_0x5e51b5=[];for(const _0x221e7c of _0x551465){if(_0x221e7c==='1')_0x5e51b5['push']('font-weight:bold');else{if(_0x167147[_0x221e7c])_0x5e51b5['push']('color:'+_0x167147[_0x221e7c]);else{if(_0x2d70c9[_0x221e7c])_0x5e51b5['push']('background-color:'+_0x2d70c9[_0x221e7c]);}}}if(_0x5e51b5['length']>0x0)return'<span\x20style=\x22'+_0x5e51b5['join'](';')+'\x22>';return'';}),_0x5add83;},'showModal'({title:_0x28120e,content:_0x2acf69,buttons:buttons=[]}){const _0x408a1c='\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'](_0x28120e)+'</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'+_0x2acf69+'\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']((_0x13e544,_0x6f07b8)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13e544['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x6f07b8+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13e544['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',_0x3ab3ca=document['createElement']('div');_0x3ab3ca['id']='utils-modal',_0x3ab3ca['className']='modal',_0x3ab3ca['innerHTML']=_0x408a1c,document['body']['appendChild'](_0x3ab3ca);const _0x45d1f1=document['getElementById']('utils-modal-close');_0x45d1f1&&_0x45d1f1['addEventListener']('click',()=>this['hideModal']());const _0x149f59=_0x3ab3ca['querySelectorAll']('[data-btn-index]');_0x149f59['forEach'](_0x42580c=>{const _0x589a8b=parseInt(_0x42580c['dataset']['btnIndex']);buttons[_0x589a8b]?.['onClick']&&_0x42580c['addEventListener']('click',buttons[_0x589a8b]['onClick']);});const _0x180883=document['getElementById']('utils-modal-overlay');_0x180883&&_0x180883['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x22768d=document['getElementById']('utils-modal');_0x22768d&&_0x22768d['remove']();},'parseKeyValuePairs'(_0x2fdc04){const _0x4a0cc5={};if(!_0x2fdc04)return _0x4a0cc5;return _0x2fdc04['split'](/\r?\n/)['map'](_0x57e6be=>_0x57e6be['trim']())['filter'](Boolean)['forEach'](_0x39a57d=>{const _0x3004c8=_0x39a57d['indexOf']('=');if(_0x3004c8>0x0){const _0x2a6e6d=_0x39a57d['slice'](0x0,_0x3004c8)['trim'](),_0x4a9f4a=_0x39a57d['slice'](_0x3004c8+0x1)['trim']();if(_0x2a6e6d)_0x4a0cc5[_0x2a6e6d]=_0x4a9f4a;}}),_0x4a0cc5;},'debounce'(_0x461af5,_0x2d914c=0xfa){let _0x5cf667=null;return(..._0x4a3785)=>{clearTimeout(_0x5cf667),_0x5cf667=setTimeout(()=>_0x461af5['apply'](this,_0x4a3785),_0x2d914c);};},'formatTimestamp'(_0x2f62e2){if(!_0x2f62e2)return'N/A';const _0x498ad4=new Date(_0x2f62e2);return _0x498ad4['toLocaleDateString']()+'\x20'+_0x498ad4['toLocaleTimeString']();},'getQueryParams'(){const _0x2f518f=new URLSearchParams(window['location']['search']),_0x47bfff={};for(const [_0x3cf73c,_0x5c18ce]of _0x2f518f){_0x47bfff[_0x3cf73c]=_0x5c18ce;}return _0x47bfff;},'formatDuration'(_0x485e59,_0x5b8e7c){if(!_0x485e59)return'N/A';const _0x137afa=new Date(_0x485e59),_0xb6a7b6=_0x5b8e7c?new Date(_0x5b8e7c):new Date(),_0x388b58=_0xb6a7b6-_0x137afa;if(_0x388b58<0x0)return'0s';const _0x54f05c=Math['floor'](_0x388b58/0x3e8),_0x113daf=Math['floor'](_0x54f05c/0x3c),_0x39a85e=Math['floor'](_0x113daf/0x3c),_0x2a6c66=Math['floor'](_0x39a85e/0x18);if(_0x54f05c<0x3c)return _0x54f05c+'s';if(_0x113daf<0x3c)return _0x113daf+'m\x20'+_0x54f05c%0x3c+'s';if(_0x39a85e<0x18)return _0x39a85e+'h\x20'+_0x113daf%0x3c+'m\x20'+_0x54f05c%0x3c+'s';return _0x2a6c66+'d\x20'+_0x39a85e%0x18+'h\x20'+_0x113daf%0x3c+'m';},'renderMarkdown'(_0x57c5b4,_0x29aa3d={}){if(!_0x57c5b4)return'';_0x57c5b4=this['rewriteAttachmentLinks'](_0x57c5b4,_0x29aa3d),_0x57c5b4=this['rewriteColorSyntax'](_0x57c5b4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x57c5b4);}catch(_0x2eadba){return console['error']('Markdown\x20parsing\x20error:',_0x2eadba),this['renderMarkdownFallback'](_0x57c5b4,_0x29aa3d);}},'rewriteAttachmentLinks'(_0x23bcca,_0x1373e8={}){const _0x1c5805=typeof _0x1373e8['resolveAttachmentUrl']==='function'?_0x1373e8['resolveAttachmentUrl']:_0x1373e8['taskId']?_0xbc8dff=>API_BASE+'/tasks/'+_0x1373e8['taskId']+'/attachments/'+encodeURIComponent(_0xbc8dff):null;if(!_0x1c5805)return _0x23bcca;return String(_0x23bcca)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x4b8676,_0xbf7ba8)=>{const _0x33322c=String(_0xbf7ba8||'')['trim']();if(!_0x33322c)return _0x4b8676;let _0x13c285=_0x33322c;try{_0x13c285=decodeURIComponent(_0x33322c);}catch{}const _0xc2734f=_0x1c5805(_0x13c285);if(!_0xc2734f)return _0x4b8676;return']('+_0xc2734f+')';});},'rewriteColorSyntax'(_0x319299){if(!_0x319299)return _0x319299;return String(_0x319299)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x57481b,_0x7cb34d,_0x5acc3f)=>{const _0x26a54e=this['rewriteColorSyntax'](_0x5acc3f);return'<span\x20style=\x22color:\x20'+_0x7cb34d+'\x22>'+_0x26a54e+'</span>';});},'renderMarkdownFallback'(_0x265810,_0x1c5e89={}){if(!_0x265810)return'';_0x265810=_0x265810['replace'](/\r\n/g,'\x0a'),_0x265810=_0x265810['replace'](/\r/g,'\x0a'),_0x265810=this['rewriteAttachmentLinks'](_0x265810,_0x1c5e89);let _0x5aa14f=this['escapeHtml'](_0x265810);return _0x5aa14f=_0x5aa14f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5aa14f=_0x5aa14f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5aa14f=_0x5aa14f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5aa14f=_0x5aa14f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5aa14f=_0x5aa14f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5aa14f=_0x5aa14f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5aa14f=_0x5aa14f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5aa14f=_0x5aa14f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5aa14f=_0x5aa14f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5aa14f=_0x5aa14f['replace'](/\n\n/g,'</p><p>'),_0x5aa14f=_0x5aa14f['replace'](/\n/g,'<br>'),'<p>'+_0x5aa14f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3e7737=new Uint8Array(0x10);crypto['getRandomValues'](_0x3e7737),_0x3e7737[0x6]=_0x3e7737[0x6]&0xf|0x40,_0x3e7737[0x8]=_0x3e7737[0x8]&0x3f|0x80;const _0x456268=Array['from'](_0x3e7737,_0x2793ac=>_0x2793ac['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x456268['slice'](0x0,0x8)+'-'+_0x456268['slice'](0x8,0xc)+'-'+_0x456268['slice'](0xc,0x10)+'-'+_0x456268['slice'](0x10,0x14)+'-'+_0x456268['slice'](0x14);}};export class CustomSelect{constructor(_0x4ba0aa,_0xb1602e={}){this['nativeSelect']=_0x4ba0aa,this['options']=_0xb1602e,this['isOpen']=![],this['selectedValue']=_0x4ba0aa['value']||'',this['searchable']=_0xb1602e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1d8bcb=document['createElement']('div');_0x1d8bcb['className']='custom-select';const _0x181694=document['createElement']('div');_0x181694['className']='custom-select-trigger',_0x181694['setAttribute']('tabindex','0'),_0x181694['setAttribute']('role','button'),_0x181694['setAttribute']('aria-haspopup','listbox');const _0x545d97=document['createElement']('span');_0x545d97['className']='custom-select-trigger-text';const _0x7274db=document['createElement']('span');_0x7274db['className']='custom-select-arrow',_0x7274db['textContent']='▼',_0x181694['appendChild'](_0x545d97),_0x181694['appendChild'](_0x7274db);const _0x85dfc7=document['createElement']('div');_0x85dfc7['className']='custom-select-dropdown',_0x85dfc7['setAttribute']('role','listbox');if(this['searchable']){const _0x2bcfc1=document['createElement']('div');_0x2bcfc1['className']='custom-select-search';const _0x2344f5=document['createElement']('input');_0x2344f5['type']='text',_0x2344f5['className']='custom-select-search-input',_0x2344f5['placeholder']='Type\x20to\x20search...',_0x2344f5['setAttribute']('aria-label','Search\x20options'),_0x2344f5['addEventListener']('input',_0x367375=>{this['searchQuery']=_0x367375['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2344f5['addEventListener']('keydown',_0x400415=>{if(_0x400415['key']==='Escape')_0x400415['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x400415['key']==='Enter'){_0x400415['preventDefault'](),_0x400415['stopPropagation']();const _0x33b5c4=_0x85dfc7['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x33b5c4){const _0x4895ac=_0x33b5c4['getAttribute']('data-value');this['select'](_0x4895ac);}}}}),_0x2bcfc1['appendChild'](_0x2344f5),_0x85dfc7['appendChild'](_0x2bcfc1),this['searchInput']=_0x2344f5;}const _0x39083b=document['createElement']('div');_0x39083b['className']='custom-select-options',_0x85dfc7['appendChild'](_0x39083b),_0x1d8bcb['appendChild'](_0x181694),_0x1d8bcb['appendChild'](_0x85dfc7),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1d8bcb,this['nativeSelect']),this['wrapper']=_0x1d8bcb,this['trigger']=_0x181694,this['triggerText']=_0x545d97,this['dropdown']=_0x85dfc7,this['optionsContainer']=_0x39083b,_0x181694['addEventListener']('click',()=>this['toggle']()),_0x181694['addEventListener']('keydown',_0x48ea34=>this['handleKeydown'](_0x48ea34)),document['addEventListener']('click',_0x38bc4d=>{!_0x1d8bcb['contains'](_0x38bc4d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d7e15=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d7e15['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de653=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de653['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x322aff=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x322aff['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x553893=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x553893),this['trigger']['setAttribute']('aria-disabled',_0x553893?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x553893?'-1':'0'),_0x553893&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x212276=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bea96=_0x212276['filter'](_0x672fec=>!_0x672fec['disabled']&&!_0x672fec['hidden']);_0x212276['forEach']((_0x39cac4,_0x33750f)=>{const _0x491c33=document['createElement']('div');_0x491c33['className']='custom-select-option',_0x491c33['textContent']=_0x39cac4['textContent'],_0x491c33['setAttribute']('data-value',_0x39cac4['value']),_0x491c33['setAttribute']('data-index',_0x33750f),_0x491c33['setAttribute']('role','option'),_0x39cac4['disabled']?_0x491c33['classList']['add']('disabled'):_0x491c33['addEventListener']('click',()=>this['select'](_0x39cac4['value'])),_0x39cac4['value']===this['selectedValue']&&_0x491c33['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x491c33),this['allOptions']['push']({'element':_0x491c33,'text':_0x39cac4['textContent']['toLowerCase'](),'value':_0x39cac4['value'],'disabled':_0x39cac4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x91bcce=this['searchInput']['parentElement'];_0x5bea96['length']>0x3?_0x91bcce['style']['display']='':_0x91bcce['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x14f418=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x317ee8=>{if(!_0x14f418||_0x317ee8['disabled'])_0x317ee8['element']['style']['display']='';else{const _0x100b89=_0x317ee8['text']['includes'](_0x14f418);_0x317ee8['element']['style']['display']=_0x100b89?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1ba69b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1ba69b,this['nativeSelect']['value']=_0x1ba69b;const _0xc7df24=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xc7df24),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x7be585=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x7be585&&(this['triggerText']['textContent']=_0x7be585['textContent'],_0x7be585['disabled']||_0x7be585['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x46a1c7=>{_0x46a1c7['getAttribute']('data-value')===this['selectedValue']?_0x46a1c7['classList']['add']('selected'):_0x46a1c7['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 _0x560474=window['getComputedStyle'](this['dropdown']);if(_0x560474['position']==='fixed'){const _0x3eefb7=this['trigger']['getBoundingClientRect'](),_0x5bca16=parseInt(_0x560474['maxHeight'])||0xc8,_0x2b058d=window['innerHeight'],_0x4b84d7=_0x2b058d-_0x3eefb7['bottom'],_0x4b8d29=_0x3eefb7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x823cce;_0x4b84d7<_0x5bca16&&_0x4b8d29>_0x4b84d7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2b058d-_0x3eefb7['top']+'px',_0x823cce=Math['min'](_0x5bca16,_0x4b8d29-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3eefb7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x823cce=Math['min'](_0x5bca16,_0x4b84d7-0xa),this['dropdown']['style']['maxHeight']=_0x823cce+'px');if(this['optionsContainer']){let _0x3fa932=_0x823cce;if(this['searchInput']){const _0x251064=this['searchInput']['parentElement'];_0x251064&&(_0x3fa932-=_0x251064['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3fa932)+'px';}this['dropdown']['style']['left']=_0x3eefb7['left']+'px',this['dropdown']['style']['width']=_0x3eefb7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x51b22a=this['searchInput']['parentElement'];_0x51b22a&&_0x51b22a['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'](_0x276090){if(this['nativeSelect']['disabled'])return;if(_0x276090['key']==='Enter'||_0x276090['key']==='\x20')_0x276090['preventDefault'](),this['toggle']();else _0x276090['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xc4c876='\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',_0xc4c876),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x50f7ea=document['getElementById']('confirm-dialog-close'),_0x1fe819=document['getElementById']('confirm-dialog-cancel'),_0x7bf9f3=document['getElementById']('confirm-dialog-confirm'),_0x4a2964=this['_modal']['querySelector']('.modal-overlay');_0x50f7ea['addEventListener']('click',()=>this['_resolve'](![])),_0x1fe819['addEventListener']('click',()=>this['_resolve'](![])),_0x7bf9f3['addEventListener']('click',()=>this['_resolve'](!![])),_0x4a2964['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x6cfb4b=>{if(_0x6cfb4b['key']==='Escape')_0x6cfb4b['preventDefault'](),this['_resolve'](![]);else _0x6cfb4b['key']==='Enter'&&(_0x6cfb4b['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x14eda1,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x532bf0=>{this['_resolvePromise']=_0x532bf0,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x14eda1;const _0x3d3d45=document['getElementById']('confirm-dialog-cancel'),_0xa40fd8=document['getElementById']('confirm-dialog-confirm');_0x3d3d45['textContent']=cancelText,_0xa40fd8['textContent']=confirmText,_0xa40fd8['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xa40fd8['focus']();});},'_resolve'(_0x3bde65){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3bde65),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x578a50,_0xd1956e={}){this['container']=_0x578a50,this['options']={'placeholder':_0xd1956e['placeholder']||'Type\x20to\x20search...','maxItems':_0xd1956e['maxItems']||0x64,'loadItems':_0xd1956e['loadItems']||(async()=>[]),'renderItem':_0xd1956e['renderItem']||(_0x4c6ad2=>({'primary':String(_0x4c6ad2),'secondary':''})),'onSelect':_0xd1956e['onSelect']||(()=>{}),'filterItems':_0xd1956e['filterItems']||null,'getItemValue':_0xd1956e['getItemValue']||(_0x5f5433=>_0x5f5433),'sortItems':_0xd1956e['sortItems']||null,'debounceMs':_0xd1956e['debounceMs']||0xc8,'minCharsForSearch':_0xd1956e['minCharsForSearch']||0x0,'emptyMessage':_0xd1956e['emptyMessage']||'No\x20results\x20found','loadingMessage':_0xd1956e['loadingMessage']||'Loading...','preload':_0xd1956e['preload']!==![],'searchMode':_0xd1956e['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',_0x54ebfe=>this['onBlur'](_0x54ebfe)),this['input']['addEventListener']('input',_0x23f92d=>this['onInput'](_0x23f92d)),this['input']['addEventListener']('keydown',_0x5fa10e=>this['onKeydown'](_0x5fa10e)),this['clearBtn']['addEventListener']('mousedown',_0x4767ae=>{_0x4767ae['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x32c14c=>{_0x32c14c['preventDefault']();}),document['addEventListener']('click',_0x3cf8b7=>{!this['wrapper']['contains'](_0x3cf8b7['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(_0x9264b6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x9264b6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x300865){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x446e13){const _0x2fd65b=_0x446e13['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2fd65b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2fd65b):this['loadAndShow'](_0x2fd65b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50ba6e){switch(_0x50ba6e['key']){case'ArrowDown':_0x50ba6e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50ba6e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50ba6e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50ba6e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0xc758a7){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x15980d=this['selectedIndex']+_0xc758a7;if(_0x15980d>=0x0&&_0x15980d<this['filteredItems']['length']){this['selectedIndex']=_0x15980d,this['updateSelectionHighlight']();const _0xf0b157=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xf0b157[this['selectedIndex']]&&_0xf0b157[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1f2cff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1f2cff['forEach']((_0x3d63c3,_0x268cf4)=>{_0x3d63c3['classList']['toggle']('keyboard-selected',_0x268cf4===this['selectedIndex']);});}async['loadAndShow'](_0x564278){this['showLoading']();try{const _0x124bd0=await this['options']['loadItems'](_0x564278);if(this['options']['searchMode']==='server'){let _0x34ba0a=_0x124bd0;this['options']['sortItems']&&(_0x34ba0a=this['options']['sortItems']([..._0x124bd0]));this['filteredItems']=_0x34ba0a;const _0x3d68c0=this['filteredItems']['length']>=this['options']['maxItems'];_0x3d68c0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3d68c0),this['open']();}else this['allItems']=_0x124bd0,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x564278);}catch(_0x2ea222){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2ea222),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3fdf31){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3fdf31):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x41e142=this['filteredItems']['length']>=this['options']['maxItems'];_0x41e142&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x41e142),this['open']();}['renderItems'](_0x5647c8){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']((_0x5a8b74,_0x1d8086)=>{const _0x1f6542=document['createElement']('div');_0x1f6542['className']='autocomplete-select-item',_0x1f6542['setAttribute']('role','option'),_0x1f6542['setAttribute']('data-index',_0x1d8086);const _0x5850c2=this['options']['renderItem'](_0x5a8b74);let _0x4c1510='';_0x5850c2['icon']&&(_0x4c1510='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5850c2['iconClass']||'')+'\x22>'+_0x5850c2['icon']+'</span>'),_0x1f6542['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4c1510+'\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'](_0x5850c2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5850c2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5850c2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1f6542['addEventListener']('click',()=>{this['selectItem'](_0x5a8b74);}),_0x1f6542['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1d8086,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1f6542);}),_0x5647c8?(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'](_0x2d472c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2d472c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4d9e15){this['selectedItem']=_0x4d9e15;const _0x28f65a=this['options']['renderItem'](_0x4d9e15);this['input']['value']=_0x28f65a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4d9e15);}['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'](_0x33f3e6){if(_0x33f3e6){this['selectedItem']=_0x33f3e6;const _0x596016=this['options']['renderItem'](_0x33f3e6);this['input']['value']=_0x596016['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x488c8f){this['allItems']=_0x488c8f,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'](_0x1a0a80){this['input']['placeholder']=_0x1a0a80;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x107d43=null){const _0x49cc20=document['getElementById']('admin-menu-container'),_0x50e319=document['getElementById']('admin-menu-btn'),_0x539fc0=document['getElementById']('admin-menu');if(!_0x49cc20||!_0x50e319||!_0x539fc0)return;try{!_0x107d43&&(_0x107d43=await API['getCurrentUser']());if(_0x107d43){const _0x19d5a0=window['Permissions'],_0x227b3c=_0x19d5a0['hasServerPermission'](_0x107d43,'*')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:manage')||_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')||_0x19d5a0['hasTeamPermission'](_0x107d43,'teams:manage')||_0x19d5a0['hasEnvPermission'](_0x107d43,'environments:view_details');if(!_0x227b3c)return;_0x49cc20['hidden']=![];if(!_0x19d5a0['hasServerPermission'](_0x107d43,'*')){const _0xd61a2a=_0x539fc0['querySelectorAll']('.admin-menu-item');_0xd61a2a['forEach'](_0x2460a0=>{const _0x3eda7c=_0x2460a0['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3eda7c==='Users'&&!_0x19d5a0['hasServerPermission'](_0x107d43,'users:create')&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Skills'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Settings'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Server\x20Administration'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Git\x20History'&&(_0x2460a0['hidden']=!![]),_0x3eda7c==='Roles'&&(_0x2460a0['hidden']=!![]);});}_0x50e319['addEventListener']('click',_0x29e195=>{_0x29e195['stopPropagation']();const _0x658df7=document['getElementById']('actions-menu');if(_0x658df7)_0x658df7['hidden']=!![];_0x539fc0['hidden']=!_0x539fc0['hidden'];}),document['addEventListener']('click',_0x3c7f5a=>{!_0x539fc0['hidden']&&!_0x50e319['contains'](_0x3c7f5a['target'])&&!_0x539fc0['contains'](_0x3c7f5a['target'])&&(_0x539fc0['hidden']=!![]);}),document['addEventListener']('keydown',_0x218238=>{_0x218238['key']==='Escape'&&!_0x539fc0['hidden']&&(_0x539fc0['hidden']=!![]);});}}catch(_0x513bfd){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x513bfd['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|