@profoundlogic/coderflow-server 0.8.4 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/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 -1
- package/dist/lib/task-context-usage.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/playwright.task-terminal.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/stats.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/admin.css +60 -0
- package/dist/web-ui/public/admin.html +6 -0
- package/dist/web-ui/public/admin.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/file-selection-tree.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/ibmi-file-filter.js +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/permissions.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task-judging-helpers.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x53289e=window['location']['pathname'],_0x1fc754=_0x53289e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1fc754)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1fc754[0x1]),_0x1fc754[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4225c0={}){const _0x3ba4e8=new URLSearchParams();_0x4225c0['userId']&&_0x3ba4e8['set']('userId',String(_0x4225c0['userId']));_0x4225c0['automation']&&_0x3ba4e8['set']('automation',String(_0x4225c0['automation']));const _0x2d6e6d=API_BASE+'/tasks/stats'+(_0x3ba4e8['toString']()?'?'+_0x3ba4e8['toString']():''),_0x41d610=await fetch(_0x2d6e6d);if(!_0x41d610['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x41d610['statusText']);return await _0x41d610['json']();},async 'getTasks'(_0x11e500={}){const _0x180179=new URLSearchParams();_0x11e500['status']&&_0x180179['set']('status',String(_0x11e500['status']));_0x11e500['environment']&&_0x180179['set']('environment',String(_0x11e500['environment']));_0x11e500['automation']&&_0x180179['set']('automation',String(_0x11e500['automation']));if(_0x11e500['include']){const _0x12b43f=Array['isArray'](_0x11e500['include'])?_0x11e500['include']['join'](','):String(_0x11e500['include']);_0x12b43f&&_0x180179['set']('include',_0x12b43f);}_0x11e500['filter']&&_0x180179['set']('filter',String(_0x11e500['filter']));_0x11e500['page']&&_0x180179['set']('page',String(_0x11e500['page']));_0x11e500['limit']&&_0x180179['set']('limit',String(_0x11e500['limit']));_0x11e500['userId']&&_0x180179['set']('userId',String(_0x11e500['userId']));_0x11e500['search']&&_0x180179['set']('search',String(_0x11e500['search']));_0x11e500['includeChildTasks']&&_0x180179['set']('includeChildTasks','true');const _0x6c20a9=API_BASE+'/tasks'+(_0x180179['toString']()?'?'+_0x180179['toString']():''),_0x2405dd=await fetch(_0x6c20a9);if(!_0x2405dd['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x2405dd['statusText']);return await _0x2405dd['json']();},async 'getAutomations'(_0x34b52b={}){const _0x4da454=new URLSearchParams();_0x34b52b['environment']&&_0x4da454['set']('environment',String(_0x34b52b['environment']));const _0x1b18fb=await fetch(API_BASE+'/api/automations'+(_0x4da454['toString']()?'?'+_0x4da454['toString']():''));if(!_0x1b18fb['ok']){const _0x49ae52=await _0x1b18fb['json']()['catch'](()=>({}));throw new Error(_0x49ae52['message']||_0x49ae52['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1b18fb['statusText']);}return await _0x1b18fb['json']();},async 'getAutomation'(_0x55ffdc){const _0x548da0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55ffdc));if(!_0x548da0['ok']){const _0x273710=await _0x548da0['json']()['catch'](()=>({}));throw new Error(_0x273710['message']||_0x273710['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x548da0['statusText']);}return await _0x548da0['json']();},async 'createAutomation'(_0x26f46a){const _0x19a7b9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f46a||{})});if(!_0x19a7b9['ok']){const _0x3999e7=await _0x19a7b9['json']()['catch'](()=>({}));throw new Error(_0x3999e7['message']||_0x3999e7['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x19a7b9['statusText']);}return await _0x19a7b9['json']();},async 'updateAutomation'(_0x1556d0,_0x429b57){const _0x42c5f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1556d0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x429b57||{})});if(!_0x42c5f5['ok']){const _0x2a6c87=await _0x42c5f5['json']()['catch'](()=>({}));throw new Error(_0x2a6c87['message']||_0x2a6c87['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x42c5f5['statusText']);}return await _0x42c5f5['json']();},async 'deleteAutomation'(_0x442b38){const _0x104062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x442b38),{'method':'DELETE'});if(!_0x104062['ok']){const _0x4b0738=await _0x104062['json']()['catch'](()=>({}));throw new Error(_0x4b0738['message']||_0x4b0738['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x104062['statusText']);}return await _0x104062['json']();},async 'triggerAutomation'(_0x1a12e2){const _0x3527c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a12e2)+'/trigger',{'method':'POST'});if(!_0x3527c0['ok']){const _0x3be143=await _0x3527c0['json']()['catch'](()=>({}));throw new Error(_0x3be143['message']||_0x3be143['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3527c0['statusText']);}return await _0x3527c0['json']();},async 'setAutomationEnabled'(_0xbd2688,_0x5c5cb4){const _0x312d48=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xbd2688)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5cb4})});if(!_0x312d48['ok']){const _0x981cbd=await _0x312d48['json']()['catch'](()=>({}));throw new Error(_0x981cbd['message']||_0x981cbd['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x312d48['statusText']);}return await _0x312d48['json']();},async 'getAutomationHistory'(_0x590dc0,_0x1952c0=0x32){const _0x2db719=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x590dc0)+'/history?limit='+encodeURIComponent(String(_0x1952c0)));if(!_0x2db719['ok']){const _0x1f3b42=await _0x2db719['json']()['catch'](()=>({}));throw new Error(_0x1f3b42['message']||_0x1f3b42['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x2db719['statusText']);}return await _0x2db719['json']();},async 'getTask'(_0x1af208,_0x2d0eb2={}){const _0xb8a014=new URLSearchParams();if(_0x2d0eb2['include']){const _0x3ba907=Array['isArray'](_0x2d0eb2['include'])?_0x2d0eb2['include']['join'](','):String(_0x2d0eb2['include']);if(_0x3ba907)_0xb8a014['set']('include',_0x3ba907);}const _0x1d6f25=await fetch(API_BASE+'/tasks/'+_0x1af208+(_0xb8a014['toString']()?'?'+_0xb8a014['toString']():''));if(!_0x1d6f25['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d6f25['statusText']);return await _0x1d6f25['json']();},async 'getTaskResults'(_0x5849e8){const _0x483ae5=await fetch(API_BASE+'/tasks/'+_0x5849e8+'/results');if(!_0x483ae5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x483ae5['statusText']);return await _0x483ae5['json']();},async 'getTaskPatches'(_0x5086ea){const _0x422c49=await fetch(API_BASE+'/tasks/'+_0x5086ea+'/patches');if(!_0x422c49['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x422c49['statusText']);return await _0x422c49['json']();},async 'getTaskAttachments'(_0x9dfeab){const _0x24872b=await fetch(API_BASE+'/tasks/'+_0x9dfeab+'/attachments');if(!_0x24872b['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x24872b['statusText']);return await _0x24872b['json']();},async 'uploadAttachments'(_0x26dce5,_0x2b17fe){const _0x5129d2=new FormData();for(const _0x1a730f of _0x2b17fe){_0x5129d2['append']('attachments',_0x1a730f);}const _0x3f3d49=await fetch(API_BASE+'/tasks/'+_0x26dce5+'/attachments',{'method':'POST','body':_0x5129d2});if(!_0x3f3d49['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3f3d49['statusText']);return await _0x3f3d49['json']();},async 'isAINameGenerationAvailable'(){try{const _0x23e2bb=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x23e2bb['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x23e2bb['json']();}catch(_0x427a01){return{'available':![],'reason':_0x427a01['message']};}},async 'generateTaskName'(_0x464151){try{const _0x593395=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x464151})});return await _0x593395['json']();}catch(_0x973267){return{'success':![],'error':_0x973267['message']};}},async 'createTask'(_0x126f03){let _0x470552,_0x4b106f={};if(_0x126f03['files']&&_0x126f03['files']['length']>0x0){const _0x492695=new FormData();for(const [_0x243b1c,_0x1314e9]of Object['entries'](_0x126f03)){if(_0x243b1c!=='files'){if(_0x1314e9==null)continue;typeof _0x1314e9==='object'?_0x492695['append'](_0x243b1c,JSON['stringify'](_0x1314e9)):_0x492695['append'](_0x243b1c,String(_0x1314e9));}}for(const _0x140737 of _0x126f03['files']){_0x492695['append']('attachments',_0x140737);}_0x470552=_0x492695;}else _0x4b106f['Content-Type']='application/json',_0x470552=JSON['stringify'](_0x126f03);const _0x5a8dd1=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b106f,'body':_0x470552});if(!_0x5a8dd1['ok']){const _0x465cb0=await _0x5a8dd1['json'](),_0x431ef1=new Error(_0x465cb0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5a8dd1['statusText']),{message:_0x3b068f,..._0x35a5d2}=_0x465cb0;Object['assign'](_0x431ef1,_0x35a5d2);throw _0x431ef1;}return await _0x5a8dd1['json']();},async 'createTestTask'(_0x3967d9){const _0x59fa=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3967d9)});if(!_0x59fa['ok']){const _0x5a095c=await _0x59fa['json']();throw new Error(_0x5a095c['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x59fa['statusText']);}return await _0x59fa['json']();},async 'createEphemeralTest'(_0x53123e){const _0x2818e1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53123e)});if(!_0x2818e1['ok']){const _0x19c93d=await _0x2818e1['json']();throw new Error(_0x19c93d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2818e1['statusText']);}return await _0x2818e1['json']();},async 'createDeployTask'(_0x4e9a35){const _0x1351ed=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e9a35)});if(!_0x1351ed['ok']){const _0x5e911b=await _0x1351ed['json']();throw new Error(_0x5e911b['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1351ed['statusText']);}return await _0x1351ed['json']();},async 'getEnvironments'(){const _0x16219c=await fetch(API_BASE+'/environments');if(!_0x16219c['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16219c['statusText']);return await _0x16219c['json']();},async 'getEnvironment'(_0xd021d3){const _0x135ff6=await fetch(API_BASE+'/environments/'+_0xd021d3);if(!_0x135ff6['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x135ff6['statusText']);return await _0x135ff6['json']();},async 'getEnvironmentRepoHistory'(_0x22a3b7,_0x2861d4,_0x247d36={}){if(!_0x22a3b7||!_0x2861d4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5acdc0=new URLSearchParams();if(_0x247d36['limit'])_0x5acdc0['set']('limit',String(_0x247d36['limit']));if(_0x247d36['offset'])_0x5acdc0['set']('offset',String(_0x247d36['offset']));if(_0x247d36['search'])_0x5acdc0['set']('search',String(_0x247d36['search']));if(_0x247d36['branch'])_0x5acdc0['set']('branch',String(_0x247d36['branch']));const _0x36d983=API_BASE+'/environments/'+encodeURIComponent(_0x22a3b7)+'/repos/'+encodeURIComponent(_0x2861d4)+'/git/history',_0x30d974=await fetch(''+_0x36d983+(_0x5acdc0['toString']()?'?'+_0x5acdc0['toString']():''));if(!_0x30d974['ok']){const _0x5f0796=await _0x30d974['json']()['catch'](()=>({}));throw new Error(_0x5f0796['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x30d974['statusText']);}return await _0x30d974['json']();},async 'getEnvironmentRepoCommit'(_0x164a8a,_0x1cfbe8,_0x757f1){if(!_0x164a8a||!_0x1cfbe8||!_0x757f1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4020cd=API_BASE+'/environments/'+encodeURIComponent(_0x164a8a)+'/repos/'+encodeURIComponent(_0x1cfbe8)+'/git/commits/'+encodeURIComponent(_0x757f1),_0x3dc8ea=await fetch(_0x4020cd);if(!_0x3dc8ea['ok']){const _0x3d4eec=await _0x3dc8ea['json']()['catch'](()=>({}));throw new Error(_0x3d4eec['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3dc8ea['statusText']);}return await _0x3dc8ea['json']();},async 'getEnvironmentRepoBranches'(_0x253990,_0x5aee2a){if(!_0x253990||!_0x5aee2a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x34ea14=API_BASE+'/environments/'+encodeURIComponent(_0x253990)+'/repos/'+encodeURIComponent(_0x5aee2a)+'/git/branches',_0x21e8fa=await fetch(_0x34ea14);if(!_0x21e8fa['ok']){const _0x37bd4f=await _0x21e8fa['json']()['catch'](()=>({}));throw new Error(_0x37bd4f['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x21e8fa['statusText']);}return await _0x21e8fa['json']();},async 'revertEnvironmentRepoCommit'(_0x370a23,_0x1adec1,_0xc53163,_0x40ebe6={}){if(!_0x370a23||!_0x1adec1||!_0xc53163)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x248026=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x370a23)+'/repos/'+encodeURIComponent(_0x1adec1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xc53163,..._0x40ebe6})});if(!_0x248026['ok']){const _0x435f26=await _0x248026['json']()['catch'](()=>({}));throw new Error(_0x435f26['message']||_0x435f26['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x248026['statusText']);}return await _0x248026['json']();},async 'getTemplates'(_0x1c3c1e={}){const _0x3d9f00=new URLSearchParams();if(_0x1c3c1e['include']){const _0x208a4b=Array['isArray'](_0x1c3c1e['include'])?_0x1c3c1e['include']['join'](','):String(_0x1c3c1e['include']);if(_0x208a4b)_0x3d9f00['set']('include',_0x208a4b);}const _0x8f155e=await fetch(API_BASE+'/templates'+(_0x3d9f00['toString']()?'?'+_0x3d9f00['toString']():''));if(!_0x8f155e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x8f155e['statusText']);return await _0x8f155e['json']();},async 'getTemplatesForEnvironment'(_0x5c592b,_0x18d723={}){if(!_0x5c592b)throw new Error('Environment\x20name\x20is\x20required');const _0x4cded4=new URLSearchParams();if(_0x18d723['include']){const _0x281904=Array['isArray'](_0x18d723['include'])?_0x18d723['include']['join'](','):String(_0x18d723['include']);if(_0x281904)_0x4cded4['set']('include',_0x281904);}const _0x323d47=await fetch(API_BASE+'/templates/'+_0x5c592b+(_0x4cded4['toString']()?'?'+_0x4cded4['toString']():''));if(!_0x323d47['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5c592b+':\x20'+_0x323d47['statusText']);return await _0x323d47['json']();},async 'getTemplate'(_0x123764,_0x6cddc0,_0x3232fe={}){if(!_0x123764||!_0x6cddc0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1d4f5d=new URLSearchParams();if(_0x3232fe['include']){const _0x4e99c0=Array['isArray'](_0x3232fe['include'])?_0x3232fe['include']['join'](','):String(_0x3232fe['include']);if(_0x4e99c0)_0x1d4f5d['set']('include',_0x4e99c0);}const _0x2a1336=await fetch(API_BASE+'/templates/'+_0x123764+'/'+_0x6cddc0+(_0x1d4f5d['toString']()?'?'+_0x1d4f5d['toString']():''));if(!_0x2a1336['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2a1336['statusText']);return await _0x2a1336['json']();},async 'getTaskLogs'(_0x2cebf0,_0x169caf={}){if(!_0x2cebf0)throw new Error('Task\x20ID\x20is\x20required');const _0x208bbb=new URLSearchParams();_0x169caf['tail']&&_0x208bbb['set']('tail',String(_0x169caf['tail']));const _0x1db1ef=await fetch(API_BASE+'/tasks/'+_0x2cebf0+'/logs'+(_0x208bbb['toString']()?'?'+_0x208bbb['toString']():''));if(!_0x1db1ef['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1db1ef['statusText']);return await _0x1db1ef['text']();},async 'getContainers'(){const _0x3013bd=await fetch(API_BASE+'/containers');if(!_0x3013bd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3013bd['statusText']);return await _0x3013bd['json']();},async 'getContainer'(_0x35e48d){const _0xb36253=await fetch(API_BASE+'/containers/'+_0x35e48d);if(!_0xb36253['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xb36253['statusText']);return await _0xb36253['json']();},async 'startInteractiveContainer'(_0x452527){const _0x2811f3=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452527)});if(!_0x2811f3['ok']){const _0x25175d=await _0x2811f3['json']()['catch'](()=>({}));throw new Error(_0x25175d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2811f3['statusText']);}return await _0x2811f3['json']();},async 'startContainerCodeServer'(_0x58716e,_0xb819d6={}){if(!_0x58716e)throw new Error('Container\x20ID\x20is\x20required');const _0x5cf958=new URLSearchParams();_0xb819d6['theme']&&_0x5cf958['set']('theme',_0xb819d6['theme']);const _0x790484=await fetch(API_BASE+'/containers/'+_0x58716e+'/code-server'+(_0x5cf958['toString']()?'?'+_0x5cf958['toString']():'')),_0x1968da=await _0x790484['json']()['catch'](()=>({}));if(!_0x790484['ok'])throw new Error(_0x1968da['message']||_0x1968da['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x790484['statusText']);return _0x1968da;},async 'stopContainer'(_0x67031){const _0x2a1a0f=await fetch(API_BASE+'/containers/'+_0x67031,{'method':'DELETE'});if(!_0x2a1a0f['ok']){const _0x5d32a9=await _0x2a1a0f['json']()['catch'](()=>({}));throw new Error(_0x5d32a9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2a1a0f['statusText']);}return await _0x2a1a0f['json']();},async 'stopTask'(_0x2b55f0){if(!_0x2b55f0)throw new Error('Task\x20ID\x20is\x20required');const _0x208c1c=await fetch(API_BASE+'/tasks/'+_0x2b55f0+'/stop',{'method':'POST'});if(!_0x208c1c['ok']){const _0x5c773d=await _0x208c1c['json']()['catch'](()=>({}));throw new Error(_0x5c773d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x208c1c['statusText']);}return await _0x208c1c['json']();},async 'interruptTask'(_0x5077b7){if(!_0x5077b7)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed614=await fetch(API_BASE+'/tasks/'+_0x5077b7+'/interrupt',{'method':'POST'});if(!_0x3ed614['ok']){const _0x201643=await _0x3ed614['json']()['catch'](()=>({}));throw new Error(_0x201643['error']||_0x201643['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ed614['statusText']);}return await _0x3ed614['json']();},async 'startTask'(_0x242f9a){if(!_0x242f9a)throw new Error('Task\x20ID\x20is\x20required');const _0x144289=await fetch(API_BASE+'/tasks/'+_0x242f9a+'/start',{'method':'POST'});if(!_0x144289['ok']){const _0x5d1e13=await _0x144289['json']()['catch'](()=>({}));throw new Error(_0x5d1e13['error']||'Failed\x20to\x20start\x20task:\x20'+_0x144289['statusText']);}return await _0x144289['json']();},async 'deleteTask'(_0x3cab86){if(!_0x3cab86)throw new Error('Task\x20ID\x20is\x20required');const _0xa2a87b=await fetch(API_BASE+'/tasks/'+_0x3cab86,{'method':'DELETE'});if(!_0xa2a87b['ok']){const _0x2db07b=await _0xa2a87b['json']()['catch'](()=>({}));throw new Error(_0x2db07b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xa2a87b['statusText']);}return await _0xa2a87b['json']();},async 'refreshTasksFromDisk'(){const _0x1b4c8f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b4c8f['ok']){const _0x1ce812=await _0x1b4c8f['json']()['catch'](()=>({}));throw new Error(_0x1ce812['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b4c8f['statusText']);}return await _0x1b4c8f['json']();},async 'approveTask'(_0x426357,_0x2bd1fa={}){if(!_0x426357)throw new Error('Task\x20ID\x20is\x20required');const _0x4a5280={'commit_message':_0x2bd1fa['commit_message']||'','pull':_0x2bd1fa['pull']??![],'push':_0x2bd1fa['push']??![],'conflict_strategy':_0x2bd1fa['conflict_strategy']||'rebase'};_0x2bd1fa['new_branch']&&(_0x4a5280['new_branch']=_0x2bd1fa['new_branch']);const _0x391269=await fetch(API_BASE+'/tasks/'+_0x426357+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a5280)});if(!_0x391269['ok']){const _0x4a9784=await _0x391269['json']()['catch'](()=>({}));let _0x220d94=_0x4a9784['error']||_0x4a9784['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x391269['statusText'];if(_0x4a9784['results']&&Array['isArray'](_0x4a9784['results'])){const _0x570faf=_0x4a9784['results']['filter'](_0x4b496e=>!_0x4b496e['success']&&_0x4b496e['error']);_0x570faf['length']>0x0&&(_0x220d94=_0x570faf[0x0]['error']);}const _0xbd0e5b=new Error(_0x220d94);_0xbd0e5b['hasConflicts']=_0x4a9784['results']?.['some'](_0x4189fb=>_0x4189fb['conflict'])||![];throw _0xbd0e5b;}return await _0x391269['json']();},async 'getPullRequestInfo'(_0x1a0105){if(!_0x1a0105)throw new Error('Task\x20ID\x20is\x20required');const _0x178287=await fetch(API_BASE+'/tasks/'+_0x1a0105+'/pull-request-info');if(!_0x178287['ok']){const _0x5c738a=await _0x178287['json']()['catch'](()=>({}));throw new Error(_0x5c738a['error']||_0x5c738a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x178287['statusText']);}return await _0x178287['json']();},async 'createPullRequests'(_0x3db37a,_0x1da76f){if(!_0x3db37a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1da76f||!Array['isArray'](_0x1da76f))throw new Error('repos\x20array\x20is\x20required');const _0x7904c=await fetch(API_BASE+'/tasks/'+_0x3db37a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1da76f})});if(!_0x7904c['ok']){const _0x507a7f=await _0x7904c['json']()['catch'](()=>({}));let _0x22fdb6=_0x507a7f['error']||_0x507a7f['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x7904c['statusText'];if(_0x507a7f['results']&&Array['isArray'](_0x507a7f['results'])){const _0x59aeb0=_0x507a7f['results']['filter'](_0x29e769=>!_0x29e769['success']&&_0x29e769['error']);_0x59aeb0['length']>0x0&&(_0x22fdb6=_0x59aeb0[0x0]['error']);}throw new Error(_0x22fdb6);}return await _0x7904c['json']();},async 'syncRepos'(_0x4a013c){if(!_0x4a013c)throw new Error('Task\x20ID\x20is\x20required');const _0x5962e4=await fetch(API_BASE+'/tasks/'+_0x4a013c+'/sync-repos',{'method':'POST'});if(!_0x5962e4['ok']){const _0x2960e4=await _0x5962e4['json']()['catch'](()=>({}));throw new Error(_0x2960e4['error']||_0x2960e4['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5962e4['statusText']);}return await _0x5962e4['json']();},async 'getIbmiSyncInfo'(_0x320314){if(!_0x320314)throw new Error('Task\x20ID\x20is\x20required');const _0x50a656=await fetch(API_BASE+'/tasks/'+_0x320314+'/ibmi-sync-info');if(!_0x50a656['ok']){const _0x2c8afb=await _0x50a656['json']()['catch'](()=>({}));throw new Error(_0x2c8afb['error']||_0x2c8afb['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x50a656['json']();},async 'getSyncFiles'(_0x14c30b){if(!_0x14c30b)throw new Error('Task\x20ID\x20is\x20required');const _0xdf7b7a=await fetch(API_BASE+'/tasks/'+_0x14c30b+'/sync-to-ibmi/files');if(!_0xdf7b7a['ok']){const _0x26f4f4=await _0xdf7b7a['json']()['catch'](()=>({}));throw new Error(_0x26f4f4['error']||_0x26f4f4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xdf7b7a['json']();},async 'syncToIbmi'(_0x23bcc5,_0x1d04a8,_0x4befbe=null,_0x3bb7c7=null,_0x4574db=null){if(!_0x23bcc5)throw new Error('Task\x20ID\x20is\x20required');const _0x4ee7bb={'library':_0x1d04a8};if(_0x4befbe)_0x4ee7bb['user']=_0x4befbe;if(_0x3bb7c7)_0x4ee7bb['password']=_0x3bb7c7;if(_0x4574db)_0x4ee7bb['files']=_0x4574db;const _0x2c4176=await fetch(API_BASE+'/tasks/'+_0x23bcc5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ee7bb)});if(!_0x2c4176['ok']){const _0x47771a=await _0x2c4176['json']()['catch'](()=>({}));throw new Error(_0x47771a['error']||_0x47771a['message']||'Sync\x20failed');}return await _0x2c4176['json']();},async 'getIbmiSyncLog'(_0x4474a1){if(!_0x4474a1)throw new Error('Task\x20ID\x20is\x20required');const _0x482ebc=await fetch(API_BASE+'/tasks/'+_0x4474a1+'/ibmi-sync-log');if(!_0x482ebc['ok']){const _0x24676b=await _0x482ebc['json']()['catch'](()=>({}));throw new Error(_0x24676b['error']||_0x24676b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x482ebc['json']();},async 'pullChanges'(_0x1cba63){if(!_0x1cba63)throw new Error('Task\x20ID\x20is\x20required');const _0x448886=await fetch(API_BASE+'/tasks/'+_0x1cba63+'/pull-changes',{'method':'POST'});if(!_0x448886['ok']){const _0x17ea6a=await _0x448886['json']()['catch'](()=>({}));throw new Error(_0x17ea6a['error']||_0x17ea6a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x448886['statusText']);}return await _0x448886['json']();},async 'readFile'(_0x300395,_0xb263dd){if(!_0x300395)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb263dd)throw new Error('File\x20path\x20is\x20required');const _0x82af80=await fetch(API_BASE+'/tasks/'+_0x300395+'/files?path='+encodeURIComponent(_0xb263dd));if(!_0x82af80['ok']){const _0x6b84ed=await _0x82af80['json']()['catch'](()=>({}));throw new Error(_0x6b84ed['error']||_0x6b84ed['message']||'Failed\x20to\x20read\x20file:\x20'+_0x82af80['statusText']);}return await _0x82af80['json']();},'getTaskFileDownloadUrl'(_0x3795fa,_0x593670){if(!_0x3795fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x593670)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3795fa+'/files/download?path='+encodeURIComponent(_0x593670);},async 'writeFile'(_0x2963dd,_0x8fb832,_0x58ec51){if(!_0x2963dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8fb832)throw new Error('File\x20path\x20is\x20required');if(_0x58ec51===undefined)throw new Error('Content\x20is\x20required');const _0x35e634=await fetch(API_BASE+'/tasks/'+_0x2963dd+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x8fb832,'content':_0x58ec51})});if(!_0x35e634['ok']){const _0x3a49b9=await _0x35e634['json']()['catch'](()=>({}));throw new Error(_0x3a49b9['error']||_0x3a49b9['message']||'Failed\x20to\x20write\x20file:\x20'+_0x35e634['statusText']);}return await _0x35e634['json']();},async 'uploadTaskFiles'(_0x48863d,_0x93aea3,_0x334f4a){if(!_0x48863d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x93aea3)throw new Error('Target\x20directory\x20is\x20required');if(!_0x334f4a||_0x334f4a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4d9255=new FormData();_0x4d9255['append']('targetDir',_0x93aea3);for(const _0x3ec91a of _0x334f4a){_0x4d9255['append']('files',_0x3ec91a,_0x3ec91a['name']);}const _0x266f80=await fetch(API_BASE+'/tasks/'+_0x48863d+'/files/upload',{'method':'POST','body':_0x4d9255});if(!_0x266f80['ok']){const _0x510aba=await _0x266f80['json']()['catch'](()=>({}));throw new Error(_0x510aba['error']||_0x510aba['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x266f80['statusText']);}return await _0x266f80['json']();},async 'createDirectory'(_0x566c12,_0xce9ff2){if(!_0x566c12)throw new Error('Task\x20ID\x20is\x20required');if(!_0xce9ff2)throw new Error('Directory\x20path\x20is\x20required');const _0x11c0e9=await fetch(API_BASE+'/tasks/'+_0x566c12+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xce9ff2})});if(!_0x11c0e9['ok']){const _0x54a3b1=await _0x11c0e9['json']()['catch'](()=>({}));throw new Error(_0x54a3b1['error']||_0x54a3b1['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x11c0e9['statusText']);}return await _0x11c0e9['json']();},async 'renamePath'(_0x5288db,_0x54c103,_0x1078c1){if(!_0x5288db)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54c103)throw new Error('Source\x20path\x20is\x20required');if(!_0x1078c1)throw new Error('Destination\x20path\x20is\x20required');const _0x35e922=await fetch(API_BASE+'/tasks/'+_0x5288db+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x54c103,'newPath':_0x1078c1})});if(!_0x35e922['ok']){const _0x2f3c7b=await _0x35e922['json']()['catch'](()=>({}));throw new Error(_0x2f3c7b['error']||_0x2f3c7b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x35e922['statusText']);}return await _0x35e922['json']();},async 'deleteFile'(_0x53484a,_0x6c499e){if(!_0x53484a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6c499e)throw new Error('File\x20path\x20is\x20required');const _0x416841=await fetch(API_BASE+'/tasks/'+_0x53484a+'/files?path='+encodeURIComponent(_0x6c499e),{'method':'DELETE'});if(!_0x416841['ok']){const _0x4b8aa0=await _0x416841['json']()['catch'](()=>({}));throw new Error(_0x4b8aa0['error']||_0x4b8aa0['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x416841['statusText']);}return await _0x416841['json']();},async 'deleteDirectory'(_0x46bb2d,_0x54542b){if(!_0x46bb2d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54542b)throw new Error('Directory\x20path\x20is\x20required');const _0x5807f5=await fetch(API_BASE+'/tasks/'+_0x46bb2d+'/files/directory?path='+encodeURIComponent(_0x54542b),{'method':'DELETE'});if(!_0x5807f5['ok']){const _0xcd699a=await _0x5807f5['json']()['catch'](()=>({}));throw new Error(_0xcd699a['error']||_0xcd699a['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5807f5['statusText']);}return await _0x5807f5['json']();},async 'discardFile'(_0x1fc943,_0x1273c3,_0x4aa956){if(!_0x1fc943)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1273c3)throw new Error('File\x20path\x20is\x20required');if(!_0x4aa956)throw new Error('Repository\x20path\x20is\x20required');const _0x384786=await fetch(API_BASE+'/tasks/'+_0x1fc943+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1273c3,'repoPath':_0x4aa956})});if(!_0x384786['ok']){const _0x1bae1e=await _0x384786['json']()['catch'](()=>({}));throw new Error(_0x1bae1e['error']||_0x1bae1e['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x384786['statusText']);}return await _0x384786['json']();},async 'followUpTask'(_0x44e70e,_0x1f1783={}){if(!_0x44e70e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f1783['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2341ae,_0x46630c={};if(_0x1f1783['files']&&_0x1f1783['files']['length']>0x0){const _0x445a12=new FormData();_0x445a12['append']('instructions',_0x1f1783['instructions']);for(const _0xe49b81 of _0x1f1783['files']){_0x445a12['append']('attachments',_0xe49b81);}_0x2341ae=_0x445a12;}else _0x46630c['Content-Type']='application/json',_0x2341ae=JSON['stringify']({'instructions':_0x1f1783['instructions']});const _0x5ea7c7=await fetch(API_BASE+'/tasks/'+_0x44e70e+'/follow-up',{'method':'POST','headers':_0x46630c,'body':_0x2341ae});if(!_0x5ea7c7['ok']){const _0x4a5b3f=await _0x5ea7c7['json']()['catch'](()=>({}));throw new Error(_0x4a5b3f['error']||_0x4a5b3f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5ea7c7['statusText']);}return await _0x5ea7c7['json']();},async 'getTaskRewindPoints'(_0x1c4e6f){if(!_0x1c4e6f)throw new Error('Task\x20ID\x20is\x20required');const _0x329def=await fetch(API_BASE+'/tasks/'+_0x1c4e6f+'/rewind-points');if(!_0x329def['ok']){const _0x4b27be=await _0x329def['json']()['catch'](()=>({}));throw new Error(_0x4b27be['error']||_0x4b27be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x329def['statusText']);}return await _0x329def['json']();},async 'rewindTask'(_0x4c63f7,_0x575389={}){if(!_0x4c63f7)throw new Error('Task\x20ID\x20is\x20required');const _0x30adae=Number['isInteger'](_0x575389['targetFollowUpCount'])?_0x575389['targetFollowUpCount']:0x0,_0x344ddb={'targetFollowUpCount':_0x30adae};typeof _0x575389['instructions']==='string'&&_0x575389['instructions']['trim']()&&(_0x344ddb['instructions']=_0x575389['instructions']['trim']());typeof _0x575389['rewindFiles']==='boolean'&&(_0x344ddb['rewindFiles']=_0x575389['rewindFiles']);const _0x31d466=await fetch(API_BASE+'/tasks/'+_0x4c63f7+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344ddb)});if(!_0x31d466['ok']){const _0x133b04=await _0x31d466['json']()['catch'](()=>({}));throw new Error(_0x133b04['error']||_0x133b04['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x31d466['statusText']);}return await _0x31d466['json']();},async 'login'(_0x43a451,_0x574bf5){const _0x50b939=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x43a451,'password':_0x574bf5})});if(!_0x50b939['ok']){const _0x46ea69=await _0x50b939['json']();throw new Error(_0x46ea69['message']||'Login\x20failed');}return await _0x50b939['json']();},async 'logout'(){const _0x475a52=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x475a52['ok']){const _0x5311a5=await _0x475a52['json']();throw new Error(_0x5311a5['message']||'Logout\x20failed');}return await _0x475a52['json']();},async 'getCurrentUser'(){const _0x2c392a=await fetch(API_BASE+'/auth/me');if(!_0x2c392a['ok'])throw new Error('Not\x20authenticated');const _0x46ecfd=await _0x2c392a['json']();return _0x46ecfd['user'];},async 'getRolesInfo'(){const _0x270ee6=await fetch(API_BASE+'/users/roles');if(!_0x270ee6['ok']){const _0x1fa460=await _0x270ee6['json']();throw new Error(_0x1fa460['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x270ee6['json']();},async 'getUsers'(){const _0x5d96fc=await fetch(API_BASE+'/users');if(!_0x5d96fc['ok']){const _0x3c80f5=await _0x5d96fc['json']();throw new Error(_0x3c80f5['message']||'Failed\x20to\x20get\x20users');}return await _0x5d96fc['json']();},async 'getUser'(_0x10df34){const _0x234629=await fetch(API_BASE+'/users/'+_0x10df34);if(!_0x234629['ok']){const _0x3e6b4b=await _0x234629['json']();throw new Error(_0x3e6b4b['message']||'Failed\x20to\x20get\x20user');}return await _0x234629['json']();},async 'createUser'(_0x726b55){const _0x22a293=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x726b55)});if(!_0x22a293['ok']){const _0xd40f94=await _0x22a293['json']();throw new Error(_0xd40f94['message']||'Failed\x20to\x20create\x20user');}return await _0x22a293['json']();},async 'updateUser'(_0x15fddf,_0x41dc03){const _0x2d98d4=await fetch(API_BASE+'/users/'+_0x15fddf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41dc03)});if(!_0x2d98d4['ok']){const _0x3714cc=await _0x2d98d4['json']();throw new Error(_0x3714cc['message']||'Failed\x20to\x20update\x20user');}return await _0x2d98d4['json']();},async 'deleteUser'(_0x3d6921){const _0x1cbaff=await fetch(API_BASE+'/users/'+_0x3d6921,{'method':'DELETE'});if(!_0x1cbaff['ok']){const _0x4d1eb0=await _0x1cbaff['json']();throw new Error(_0x4d1eb0['message']||'Failed\x20to\x20delete\x20user');}return await _0x1cbaff['json']();},async 'stopAllContainers'(){const _0x36a71e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x5b7594=await _0x36a71e['json']()['catch'](()=>({}));if(!_0x36a71e['ok'])throw new Error(_0x5b7594['message']||_0x5b7594['error']||'Failed\x20to\x20stop\x20containers');return _0x5b7594;},async 'removeStoppedContainers'(){const _0x3023ba=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1f5635=await _0x3023ba['json']()['catch'](()=>({}));if(!_0x3023ba['ok'])throw new Error(_0x1f5635['message']||_0x1f5635['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1f5635;},async 'pruneDockerResources'(){const _0x26b1eb=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x768d30=await _0x26b1eb['json']()['catch'](()=>({}));if(!_0x26b1eb['ok'])throw new Error(_0x768d30['message']||_0x768d30['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x768d30;},async 'getUpdateSettings'(){const _0x3ae464=await fetch(API_BASE+'/health/update-settings'),_0x5a66e9=await _0x3ae464['json']()['catch'](()=>({}));if(!_0x3ae464['ok'])throw new Error(_0x5a66e9['message']||_0x5a66e9['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5a66e9;},async 'applyServerUpdate'(_0x47ca79){const _0x2f3667=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x47ca79})}),_0xed2e73=await _0x2f3667['json']()['catch'](()=>({}));if(!_0x2f3667['ok']){const _0x129963=new Error(_0xed2e73['message']||_0xed2e73['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0xed2e73['output']!==undefined)_0x129963['output']=_0xed2e73['output'];if(_0xed2e73['error']!==undefined)_0x129963['commandError']=_0xed2e73['error'];throw _0x129963;}return _0xed2e73;},async 'restartServer'(){const _0x44679a=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x31e5c9=await _0x44679a['json']()['catch'](()=>({}));if(!_0x44679a['ok'])throw new Error(_0x31e5c9['message']||_0x31e5c9['error']||'Failed\x20to\x20restart\x20server');return _0x31e5c9;},async 'createPasswordToken'(_0x475302,_0x18493c='setup',_0x1e5a04=![]){const _0x2b8f2a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x475302,'type':_0x18493c,'sendEmail':_0x1e5a04})});if(!_0x2b8f2a['ok']){const _0x36c886=await _0x2b8f2a['json']();throw new Error(_0x36c886['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2b8f2a['json']();},async 'getEmailConfig'(){const _0x41e8f7=await fetch(API_BASE+'/password/email-config');if(!_0x41e8f7['ok']){const _0x74d872=await _0x41e8f7['json']();throw new Error(_0x74d872['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x41e8f7['json']();},async 'updateTaskName'(_0x191501,_0x1cf17d){const _0x345ae1=await fetch(API_BASE+'/tasks/'+_0x191501,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1cf17d})});if(!_0x345ae1['ok']){const _0x4d0a98=await _0x345ae1['json']();throw new Error(_0x4d0a98['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x345ae1['json']();},async 'pinTask'(_0x37397a,_0x4f2047,_0x257437=null){if(!_0x37397a)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8e1b={'pinned':_0x4f2047};_0x257437&&_0x257437['length']>0x0&&(_0x4f8e1b['additionalTaskIds']=_0x257437);const _0xa41075=await fetch(API_BASE+'/tasks/'+_0x37397a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f8e1b)});if(!_0xa41075['ok']){const _0x520326=await _0xa41075['json']();throw new Error(_0x520326['error']||'Failed\x20to\x20pin\x20task');}return await _0xa41075['json']();},async 'setTaskWinner'(_0x649c8,_0x4f9447,_0x2dc498=[]){if(!_0x649c8)throw new Error('Task\x20ID\x20is\x20required');const _0x5877a7=await fetch(API_BASE+'/tasks/'+_0x649c8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4f9447,'siblings':_0x2dc498})});if(!_0x5877a7['ok']){const _0x436ac4=await _0x5877a7['json']();throw new Error(_0x436ac4['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x5877a7['json']();},async 'setTaskLoser'(_0x52dfbf,_0x54f95b){if(!_0x52dfbf)throw new Error('Task\x20ID\x20is\x20required');const _0x15fe0a=await fetch(API_BASE+'/tasks/'+_0x52dfbf+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x54f95b})});if(!_0x15fe0a['ok']){const _0x2831ce=await _0x15fe0a['json']();throw new Error(_0x2831ce['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x15fe0a['json']();},async 'createTaskGroup'(_0x1d69e9){const _0x208321=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d69e9)});if(!_0x208321['ok']){const _0x189297=await _0x208321['json']();throw new Error(_0x189297['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x208321['json']();},async 'getTaskGroups'(_0xf9a147={}){const _0x16bed6=new URLSearchParams();if(_0xf9a147['userId'])_0x16bed6['set']('userId',String(_0xf9a147['userId']));if(_0xf9a147['status'])_0x16bed6['set']('status',String(_0xf9a147['status']));if(_0xf9a147['limit'])_0x16bed6['set']('limit',String(_0xf9a147['limit']));const _0x4d4bc4=API_BASE+'/tasks/groups'+(_0x16bed6['toString']()?'?'+_0x16bed6['toString']():''),_0x2b1c81=await fetch(_0x4d4bc4);if(!_0x2b1c81['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b1c81['json']();},async 'getTaskGroup'(_0x577b40){const _0x3f5deb=await fetch(API_BASE+'/tasks/groups/'+_0x577b40);if(!_0x3f5deb['ok']){const _0x5a9d88=await _0x3f5deb['json']();throw new Error(_0x5a9d88['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3f5deb['json']();},async 'updateTaskGroup'(_0x30fd26,_0x4cbe8e,_0x248735){const _0x3bcc7f=await fetch(API_BASE+'/tasks/'+_0x30fd26+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4cbe8e,'groupIndex':_0x248735})});if(!_0x3bcc7f['ok']){const _0x354952=await _0x3bcc7f['json']();throw new Error(_0x354952['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3bcc7f['json']();},async 'removeTaskFromGroup'(_0x5459c0){return this['updateTaskGroup'](_0x5459c0,null,null);},async 'deleteTaskGroup'(_0x5ad7d0,_0x25ae1a=![]){const _0x3a1598=_0x25ae1a?'?deleteTasks=true':'',_0x25bc37=await fetch(API_BASE+'/tasks/groups/'+_0x5ad7d0+_0x3a1598,{'method':'DELETE'});if(!_0x25bc37['ok']){const _0x97342b=await _0x25bc37['json']();throw new Error(_0x97342b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xfa9f46,_0x6d4658){const _0x4513fc=await fetch(API_BASE+'/tasks/groups/'+_0xfa9f46+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x6d4658})});if(!_0x4513fc['ok']){const _0x4f0e47=await _0x4513fc['json']();throw new Error(_0x4f0e47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4513fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x61e4a1){if(!_0x61e4a1)throw new Error('Task\x20ID\x20is\x20required');const _0x41a5d9=await fetch(API_BASE+'/tasks/'+_0x61e4a1+'/comments');if(!_0x41a5d9['ok']){const _0xc89182=await _0x41a5d9['json']()['catch'](()=>({}));throw new Error(_0xc89182['error']||'Failed\x20to\x20get\x20comments');}return await _0x41a5d9['json']();},async 'addComment'(_0x21921c,_0x4001e1){if(!_0x21921c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4001e1)throw new Error('Comment\x20content\x20is\x20required');const _0x4ed296=await fetch(API_BASE+'/tasks/'+_0x21921c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4001e1})});if(!_0x4ed296['ok']){const _0x4f21d1=await _0x4ed296['json']()['catch'](()=>({}));throw new Error(_0x4f21d1['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ed296['json']();},async 'updateComment'(_0x4b179b,_0x2d09ab,_0x43373a){if(!_0x4b179b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d09ab)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x43373a)throw new Error('Comment\x20content\x20is\x20required');const _0xc1a905=await fetch(API_BASE+'/tasks/'+_0x4b179b+'/comments/'+_0x2d09ab,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x43373a})});if(!_0xc1a905['ok']){const _0x5c4456=await _0xc1a905['json']()['catch'](()=>({}));throw new Error(_0x5c4456['error']||'Failed\x20to\x20update\x20comment');}return await _0xc1a905['json']();},async 'deleteComment'(_0xd58828,_0x595ecd){if(!_0xd58828)throw new Error('Task\x20ID\x20is\x20required');if(!_0x595ecd)throw new Error('Comment\x20ID\x20is\x20required');const _0x3ba757=await fetch(API_BASE+'/tasks/'+_0xd58828+'/comments/'+_0x595ecd,{'method':'DELETE'});if(!_0x3ba757['ok']){const _0x2a410f=await _0x3ba757['json']()['catch'](()=>({}));throw new Error(_0x2a410f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3ba757['json']();},async 'createObjective'(_0x471247){const _0x2ea3c3={'objective':!![],'name':_0x471247['name']||'','environment':_0x471247['environment']||null,'agents':_0x471247['agents']||[],'branches':_0x471247['branches']||{},'isPinned':_0x471247['isPinned']||![],'parentObjectiveId':_0x471247['parentObjectiveId']||null,'env_vars':_0x471247['envVars']||{},'parameters':{'instructions':_0x471247['instructions']||''},'files':_0x471247['files']||[],'jira':_0x471247['jira']||null};return this['createTask'](_0x2ea3c3);},async 'updateObjective'(_0x36f21d,_0x595f5a,_0x51c310=[],_0x526b18=[]){let _0x551f54,_0x45c96e={};const _0x126dd4={..._0x595f5a};_0x526b18&&_0x526b18['length']>0x0&&(_0x126dd4['removeAttachments']=_0x526b18);if(_0x51c310&&_0x51c310['length']>0x0){const _0x20d338=new FormData();for(const [_0x39d007,_0x540237]of Object['entries'](_0x126dd4)){if(_0x540237==null)continue;typeof _0x540237==='object'?_0x20d338['append'](_0x39d007,JSON['stringify'](_0x540237)):_0x20d338['append'](_0x39d007,String(_0x540237));}for(const _0x4a99ad of _0x51c310){_0x20d338['append']('attachments',_0x4a99ad);}_0x551f54=_0x20d338;}else _0x45c96e['Content-Type']='application/json',_0x551f54=JSON['stringify'](_0x126dd4);const _0x46225b=await fetch(API_BASE+'/tasks/'+_0x36f21d,{'method':'PATCH','headers':_0x45c96e,'body':_0x551f54});if(!_0x46225b['ok']){const _0x1b6e17=await _0x46225b['json']();throw new Error(_0x1b6e17['error']||'Failed\x20to\x20update\x20objective');}return await _0x46225b['json']();},async 'deleteObjective'(_0x59150a){return this['deleteTask'](_0x59150a);},async 'launchObjective'(_0x5a36ab,_0xf52db={}){const _0xacaad3=await fetch(API_BASE+'/tasks/'+_0x5a36ab+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf52db)});if(!_0xacaad3['ok']){const _0x17f35c=await _0xacaad3['json']();throw new Error(_0x17f35c['error']||'Failed\x20to\x20launch\x20objective');}return await _0xacaad3['json']();},async 'getObjectiveAttachments'(_0x532074){return this['getTaskAttachments'](_0x532074);},async 'createJudgeTask'({environment:_0x59956e,judgeAgent:_0x508c34,groupId:_0x4b8011,taskIds:_0x259173,judgeCustomInstructions:_0x535070,isPinned:_0x15be9b}){const _0x4b25c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59956e,'judgeAgent':_0x508c34,'groupId':_0x4b8011,'taskIds':_0x259173,'judgeCustomInstructions':_0x535070,'isPinned':_0x15be9b})});if(!_0x4b25c4['ok']){const _0x2268fe=await _0x4b25c4['json']();throw new Error(_0x2268fe['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4b25c4['json']();},async 'getJudgeTasks'(_0x28adf5){const _0x496210=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x28adf5));if(!_0x496210['ok']){const _0x187809=await _0x496210['json']();throw new Error(_0x187809['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x496210['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3250e9,_0x44b50a,_0x208971=''){const _0x2c6dad=await fetch(API_BASE+'/tasks/'+_0x3250e9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x44b50a,'customPreamble':_0x208971})});if(!_0x2c6dad['ok']){const _0xf69561=await _0x2c6dad['json']();throw new Error(_0xf69561['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2c6dad['json']();},async 'getJiraConfig'(){const _0x2b6e84=await fetch(API_BASE+'/jira/config');if(!_0x2b6e84['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2b6e84['json']();},async 'getJiraIssue'(_0x529564){const _0x3f66c0=await fetch(API_BASE+'/jira/issues/'+_0x529564);if(!_0x3f66c0['ok']){const _0x4c0e59=await _0x3f66c0['json']()['catch'](()=>({}));throw new Error(_0x4c0e59['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3f66c0['statusText']);}return await _0x3f66c0['json']();},async 'searchJiraIssues'(_0x466e35,_0xc17cb3=0x14){const _0x497bda=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x466e35,'maxResults':_0xc17cb3})});if(!_0x497bda['ok']){const _0x4a82a9=await _0x497bda['json']()['catch'](()=>({}));throw new Error(_0x4a82a9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x497bda['statusText']);}return await _0x497bda['json']();},async 'postJiraComment'(_0x323af4,_0x29b372){const _0x24090c=await fetch(API_BASE+'/jira/issues/'+_0x323af4+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x29b372})});if(!_0x24090c['ok']){const _0x1207c6=await _0x24090c['json']()['catch'](()=>({}));throw new Error(_0x1207c6['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x24090c['statusText']);}return await _0x24090c['json']();},async 'getJiraComments'(_0x526fec){const _0x54282e=await fetch(API_BASE+'/jira/issues/'+_0x526fec+'/comments');if(!_0x54282e['ok']){const _0x572001=await _0x54282e['json']()['catch'](()=>({}));throw new Error(_0x572001['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x54282e['statusText']);}return await _0x54282e['json']();},async 'promptParameter'({environment:_0x672a66,command:_0x202f11,parser:parser='json'}){const _0xa74361=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x672a66,'command':_0x202f11,'parser':parser})});if(!_0xa74361['ok']){const _0x1c9c16=await _0xa74361['json']()['catch'](()=>({}));throw new Error(_0x1c9c16['message']||_0x1c9c16['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xa74361['statusText']);}return await _0xa74361['json']();},async 'promptParameterStream'(_0x50c619,_0x4d52a4){const _0x5c0f68=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50c619)});if(!_0x5c0f68['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c0f68['statusText']);const _0x36d0f5=_0x5c0f68['body']['getReader'](),_0x42e7b5=new TextDecoder();let _0xecf8='';return new Promise((_0x4269ef,_0x5af3f0)=>{const _0xafe40a=async()=>{try{const {done:_0x399cbe,value:_0x148ee2}=await _0x36d0f5['read']();if(_0x399cbe)return;_0xecf8+=_0x42e7b5['decode'](_0x148ee2,{'stream':!![]});const _0x90872f=_0xecf8['split']('\x0a\x0a');_0xecf8=_0x90872f['pop']()||'';for(const _0x21e153 of _0x90872f){if(!_0x21e153['trim']())continue;const _0x5c0756=_0x21e153['split']('\x0a');let _0x291f26='message',_0x1277ae='';for(const _0xe834e5 of _0x5c0756){if(_0xe834e5['startsWith']('event:'))_0x291f26=_0xe834e5['substring'](0x6)['trim']();else _0xe834e5['startsWith']('data:')&&(_0x1277ae=_0xe834e5['substring'](0x5)['trim']());}if(!_0x1277ae)continue;try{const _0x40b839=JSON['parse'](_0x1277ae);if(_0x291f26==='progress'&&_0x4d52a4)_0x4d52a4(_0x40b839['stage'],_0x40b839['message']);else{if(_0x291f26==='result'){_0x4269ef(_0x40b839);return;}else{if(_0x291f26==='error'){let _0x458303=_0x40b839['message']||_0x40b839['error']||'Prompt\x20command\x20failed';_0x40b839['rawOutput']&&(_0x458303+='\x0a\x0aRaw\x20output:\x0a'+_0x40b839['rawOutput']);_0x5af3f0(new Error(_0x458303));return;}}}}catch(_0x44e47f){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x44e47f),console['error']('Event\x20type:',_0x291f26),console['error']('Event\x20data:',_0x1277ae),console['error']('First\x20200\x20chars:',_0x1277ae['substring'](0x0,0xc8)),_0x5af3f0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x44e47f['message']+'\x0a\x0aData:\x20'+_0x1277ae['substring'](0x0,0x1f4)));return;}}_0xafe40a();}catch(_0x209e99){_0x5af3f0(_0x209e99);}};_0xafe40a();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5f44ce){const _0x162d49=await fetch(''+API_BASE+_0x5f44ce);if(!_0x162d49['ok']){const _0x57f0cb=await _0x162d49['json']()['catch'](()=>({'error':_0x162d49['statusText']})),_0x58672b=new Error(_0x57f0cb['error']||_0x57f0cb['message']||_0x162d49['statusText']);if(_0x57f0cb['detail']!==undefined)_0x58672b['detail']=_0x57f0cb['detail'];throw _0x58672b;}return await _0x162d49['json']();},async 'post'(_0x4294b0,_0x42218e){const _0x319e4b=await fetch(''+API_BASE+_0x4294b0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42218e)});if(!_0x319e4b['ok']){const _0x3c37c1=await _0x319e4b['json']()['catch'](()=>({'error':_0x319e4b['statusText']})),_0x870a2e=new Error(_0x3c37c1['error']||_0x3c37c1['message']||_0x319e4b['statusText']);if(_0x3c37c1['detail']!==undefined)_0x870a2e['detail']=_0x3c37c1['detail'];throw _0x870a2e;}return await _0x319e4b['json']();},async 'put'(_0x4bc983,_0x41fa15){const _0x21eeab=await fetch(''+API_BASE+_0x4bc983,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fa15)});if(!_0x21eeab['ok']){const _0x3d8088=await _0x21eeab['json']()['catch'](()=>({'error':_0x21eeab['statusText']})),_0x59547b=new Error(_0x3d8088['error']||_0x3d8088['message']||_0x21eeab['statusText']);if(_0x3d8088['detail']!==undefined)_0x59547b['detail']=_0x3d8088['detail'];throw _0x59547b;}return await _0x21eeab['json']();},async 'delete'(_0x2ef04c,_0x2e864f){const _0xb4ce70={'method':'DELETE'};_0x2e864f&&(_0xb4ce70['headers']={'Content-Type':'application/json'},_0xb4ce70['body']=JSON['stringify'](_0x2e864f));const _0x1d05bc=await fetch(''+API_BASE+_0x2ef04c,_0xb4ce70);if(!_0x1d05bc['ok']){const _0x1016e8=await _0x1d05bc['json']()['catch'](()=>({'error':_0x1d05bc['statusText']})),_0x4c7777=new Error(_0x1016e8['error']||_0x1016e8['message']||_0x1d05bc['statusText']);if(_0x1016e8['detail']!==undefined)_0x4c7777['detail']=_0x1016e8['detail'];throw _0x4c7777;}return await _0x1d05bc['json']();},async 'getSkills'(){const _0x3f6f7c=await fetch(API_BASE+'/skills');if(!_0x3f6f7c['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3f6f7c['statusText']);return await _0x3f6f7c['json']();},async 'getSkill'(_0x30a909){const _0x3f0716=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x30a909));if(!_0x3f0716['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3f0716['statusText']);return await _0x3f0716['json']();},async 'createSkill'(_0x1aa3de){const _0x24d16b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa3de)});if(!_0x24d16b['ok']){const _0x4f173d=await _0x24d16b['json']()['catch'](()=>({'error':_0x24d16b['statusText']})),_0x332d45=new Error(_0x4f173d['error']||_0x4f173d['message']||_0x24d16b['statusText']);if(_0x4f173d['detail']!==undefined)_0x332d45['detail']=_0x4f173d['detail'];throw _0x332d45;}return await _0x24d16b['json']();},async 'updateSkill'(_0x3b5def,_0x20b756){const _0x44d4fd=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3b5def),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20b756)});if(!_0x44d4fd['ok']){const _0x41ad8a=await _0x44d4fd['json']()['catch'](()=>({'error':_0x44d4fd['statusText']})),_0x1ff538=new Error(_0x41ad8a['error']||_0x41ad8a['message']||_0x44d4fd['statusText']);if(_0x41ad8a['detail']!==undefined)_0x1ff538['detail']=_0x41ad8a['detail'];throw _0x1ff538;}return await _0x44d4fd['json']();},async 'deleteSkill'(_0x4cdc75){const _0x2d408f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4cdc75),{'method':'DELETE'});if(!_0x2d408f['ok']){const _0xcea912=await _0x2d408f['json']()['catch'](()=>({'error':_0x2d408f['statusText']})),_0x43fec0=new Error(_0xcea912['error']||_0xcea912['message']||_0x2d408f['statusText']);if(_0xcea912['detail']!==undefined)_0x43fec0['detail']=_0xcea912['detail'];throw _0x43fec0;}return await _0x2d408f['json']();},async 'getSkillFile'(_0x505066,_0x2882f8){const _0x226726=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x505066)+'/files/'+_0x2882f8);if(!_0x226726['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x226726['statusText']);return await _0x226726['json']();},async 'saveSkillFile'(_0x4b7fa2,_0x208cfe,_0x1f74a8){const _0x5373a8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b7fa2)+'/files/'+_0x208cfe,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f74a8})});if(!_0x5373a8['ok']){const _0x178a30=await _0x5373a8['json']()['catch'](()=>({'error':_0x5373a8['statusText']})),_0x477b2a=new Error(_0x178a30['error']||_0x178a30['message']||_0x5373a8['statusText']);if(_0x178a30['detail']!==undefined)_0x477b2a['detail']=_0x178a30['detail'];throw _0x477b2a;}return await _0x5373a8['json']();},async 'deleteSkillFile'(_0x53c9f9,_0x366204){const _0xde9e6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c9f9)+'/files/'+_0x366204,{'method':'DELETE'});if(!_0xde9e6['ok']){const _0x36d442=await _0xde9e6['json']()['catch'](()=>({'error':_0xde9e6['statusText']})),_0x4a457a=new Error(_0x36d442['error']||_0x36d442['message']||_0xde9e6['statusText']);if(_0x36d442['detail']!==undefined)_0x4a457a['detail']=_0x36d442['detail'];throw _0x4a457a;}return await _0xde9e6['json']();},async 'pullSkills'(){const _0x5f3219=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5f3219['ok']){const _0x133b2b=await _0x5f3219['json']()['catch'](()=>({'error':_0x5f3219['statusText']})),_0x23acca=new Error(_0x133b2b['error']||_0x133b2b['message']||_0x5f3219['statusText']);if(_0x133b2b['detail']!==undefined)_0x23acca['detail']=_0x133b2b['detail'];throw _0x23acca;}return await _0x5f3219['json']();},async 'commitSkills'(_0x18106d,_0x40c76c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x40c76c,_0x4476b7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x18106d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4476b7['ok']){const _0x10f7d3=await _0x4476b7['json']()['catch'](()=>({'error':_0x4476b7['statusText']})),_0x2904e4=new Error(_0x10f7d3['error']||_0x10f7d3['message']||_0x4476b7['statusText']);if(_0x10f7d3['detail']!==undefined)_0x2904e4['detail']=_0x10f7d3['detail'];throw _0x2904e4;}return await _0x4476b7['json']();},async 'discardSkillsChanges'(){const _0x44d15d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x44d15d['ok']){const _0x129118=await _0x44d15d['json']()['catch'](()=>({'error':_0x44d15d['statusText']})),_0x3f1329=new Error(_0x129118['error']||_0x129118['message']||_0x44d15d['statusText']);if(_0x129118['detail']!==undefined)_0x3f1329['detail']=_0x129118['detail'];throw _0x3f1329;}return await _0x44d15d['json']();},async 'getSkillCatalog'(){const _0xf61e3f=await fetch(API_BASE+'/external-skills/catalog');if(!_0xf61e3f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xf61e3f['statusText']);return await _0xf61e3f['json']();},async 'getImportedSkillsRegistry'(){const _0x3c5261=await fetch(API_BASE+'/external-skills/registry');if(!_0x3c5261['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3c5261['statusText']);return await _0x3c5261['json']();},async 'importCatalogSkill'(_0x1567a1){const _0x2e1932=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x1567a1})});if(!_0x2e1932['ok']){const _0x253fdc=await _0x2e1932['json']()['catch'](()=>({'error':_0x2e1932['statusText']})),_0x2b7f70=new Error(_0x253fdc['error']||_0x253fdc['message']||_0x2e1932['statusText']);if(_0x253fdc['detail']!==undefined)_0x2b7f70['detail']=_0x253fdc['detail'];throw _0x2b7f70;}return await _0x2e1932['json']();},async 'importSkillFromGit'(_0x465cbb,_0x295774,_0x56f4eb='main',_0x2f389d=null){const _0x58590e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x465cbb,'skillPath':_0x295774,'branch':_0x56f4eb,'skillId':_0x2f389d})});if(!_0x58590e['ok']){const _0x36e67d=await _0x58590e['json']()['catch'](()=>({'error':_0x58590e['statusText']})),_0x47e03b=new Error(_0x36e67d['error']||_0x36e67d['message']||_0x58590e['statusText']);if(_0x36e67d['detail']!==undefined)_0x47e03b['detail']=_0x36e67d['detail'];throw _0x47e03b;}return await _0x58590e['json']();},async 'probeMarketplace'(_0xdd5553,_0x6a0461='main'){const _0x4f2271=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xdd5553,'branch':_0x6a0461})});if(!_0x4f2271['ok']){const _0x3bd1de=await _0x4f2271['json']()['catch'](()=>({'error':_0x4f2271['statusText']})),_0x376c52=new Error(_0x3bd1de['error']||_0x3bd1de['message']||_0x4f2271['statusText']);if(_0x3bd1de['detail']!==undefined)_0x376c52['detail']=_0x3bd1de['detail'];throw _0x376c52;}return await _0x4f2271['json']();},async 'importMarketplaceBundle'(_0x37343b,_0x2b0221,_0x2a9523,_0x9ee3ed=null){const _0x59be5b=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x37343b,'branch':_0x2b0221,'bundleId':_0x2a9523,'selectedSkills':_0x9ee3ed})});if(!_0x59be5b['ok']){const _0x2e13dd=await _0x59be5b['json']()['catch'](()=>({'error':_0x59be5b['statusText']})),_0x513032=new Error(_0x2e13dd['error']||_0x2e13dd['message']||_0x59be5b['statusText']);if(_0x2e13dd['detail']!==undefined)_0x513032['detail']=_0x2e13dd['detail'];throw _0x513032;}return await _0x59be5b['json']();},async 'importSkillFromFolder'(_0x399c1a,_0xb261fe=null){const _0x87d1c7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x399c1a,'skillId':_0xb261fe})});if(!_0x87d1c7['ok']){const _0x426118=await _0x87d1c7['json']()['catch'](()=>({'error':_0x87d1c7['statusText']})),_0x5e31a8=new Error(_0x426118['error']||_0x426118['message']||_0x87d1c7['statusText']);if(_0x426118['detail']!==undefined)_0x5e31a8['detail']=_0x426118['detail'];throw _0x5e31a8;}return await _0x87d1c7['json']();},async 'importSkillFromNpm'(_0x32c13b,_0x14a488='latest',_0xb5366b=null,_0x58424a=null){const _0x36b894=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32c13b,'version':_0x14a488,'skillId':_0xb5366b,'registry':_0x58424a})});if(!_0x36b894['ok']){const _0x20197b=await _0x36b894['json']()['catch'](()=>({'error':_0x36b894['statusText']})),_0x178f55=new Error(_0x20197b['error']||_0x20197b['message']||_0x36b894['statusText']);if(_0x20197b['detail']!==undefined)_0x178f55['detail']=_0x20197b['detail'];throw _0x178f55;}return await _0x36b894['json']();},async 'checkSkillUpdates'(_0x4a418e){const _0x2610be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a418e)+'/check-updates',{'method':'POST'});if(!_0x2610be['ok']){const _0x13b45f=await _0x2610be['json']()['catch'](()=>({'error':_0x2610be['statusText']})),_0x2e0f2e=new Error(_0x13b45f['error']||_0x13b45f['message']||_0x2610be['statusText']);if(_0x13b45f['detail']!==undefined)_0x2e0f2e['detail']=_0x13b45f['detail'];throw _0x2e0f2e;}return await _0x2610be['json']();},async 'updateExternalSkill'(_0x1a6b71){const _0x56abf7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a6b71)+'/update',{'method':'POST'});if(!_0x56abf7['ok']){const _0x2ae46f=await _0x56abf7['json']()['catch'](()=>({'error':_0x56abf7['statusText']})),_0x5a54a0=new Error(_0x2ae46f['error']||_0x2ae46f['message']||_0x56abf7['statusText']);if(_0x2ae46f['detail']!==undefined)_0x5a54a0['detail']=_0x2ae46f['detail'];throw _0x5a54a0;}return await _0x56abf7['json']();},async 'updateSkillFlags'(_0x48a8aa,_0x500b18){const _0x49cabe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48a8aa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x500b18})});if(!_0x49cabe['ok']){const _0x22f64e=await _0x49cabe['json']()['catch'](()=>({'error':_0x49cabe['statusText']})),_0x132b52=new Error(_0x22f64e['error']||_0x22f64e['message']||_0x49cabe['statusText']);if(_0x22f64e['detail']!==undefined)_0x132b52['detail']=_0x22f64e['detail'];throw _0x132b52;}return await _0x49cabe['json']();},async 'removeFromImportedRegistry'(_0x409cd5){const _0x2fadca=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x409cd5)+'/registry',{'method':'DELETE'});if(!_0x2fadca['ok']){const _0x1a4ac0=await _0x2fadca['json']()['catch'](()=>({'error':_0x2fadca['statusText']})),_0x439c2e=new Error(_0x1a4ac0['error']||_0x1a4ac0['message']||_0x2fadca['statusText']);if(_0x1a4ac0['detail']!==undefined)_0x439c2e['detail']=_0x1a4ac0['detail'];throw _0x439c2e;}return await _0x2fadca['json']();},async 'getTeams'(){const _0x4724a5=await fetch(API_BASE+'/teams');if(!_0x4724a5['ok']){const _0x3fb566=await _0x4724a5['json']()['catch'](()=>({'message':_0x4724a5['statusText']}));throw new Error(_0x3fb566['message']||'Failed\x20to\x20get\x20teams');}return await _0x4724a5['json']();},async 'getTeam'(_0x2f444d){const _0x5d3d7e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2f444d));if(!_0x5d3d7e['ok']){const _0xf39919=await _0x5d3d7e['json']()['catch'](()=>({'message':_0x5d3d7e['statusText']}));throw new Error(_0xf39919['message']||'Failed\x20to\x20get\x20team');}return await _0x5d3d7e['json']();},async 'createTeam'(_0x119b57){const _0x43e9b8=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x119b57)});if(!_0x43e9b8['ok']){const _0x5e0d2f=await _0x43e9b8['json']()['catch'](()=>({'message':_0x43e9b8['statusText']}));throw new Error(_0x5e0d2f['message']||'Failed\x20to\x20create\x20team');}return await _0x43e9b8['json']();},async 'updateTeam'(_0x442048,_0x1b6e2c){const _0x5cbef6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x442048),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6e2c)});if(!_0x5cbef6['ok']){const _0x31dac=await _0x5cbef6['json']()['catch'](()=>({'message':_0x5cbef6['statusText']}));throw new Error(_0x31dac['message']||'Failed\x20to\x20update\x20team');}return await _0x5cbef6['json']();},async 'deleteTeam'(_0xc3094a){const _0x4c86b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc3094a),{'method':'DELETE'});if(!_0x4c86b6['ok']){const _0x41f9a0=await _0x4c86b6['json']()['catch'](()=>({'message':_0x4c86b6['statusText']}));throw new Error(_0x41f9a0['message']||'Failed\x20to\x20delete\x20team');}return await _0x4c86b6['json']();},async 'addTeamMember'(_0x3bc00d,_0x1116ad){const _0x370d6a=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bc00d)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x1116ad})});if(!_0x370d6a['ok']){const _0x4cbf8d=await _0x370d6a['json']()['catch'](()=>({'message':_0x370d6a['statusText']}));throw new Error(_0x4cbf8d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x370d6a['json']();},async 'removeTeamMember'(_0x1d053f,_0x583977){const _0x119910=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1d053f)+'/members/'+encodeURIComponent(_0x583977),{'method':'DELETE'});if(!_0x119910['ok']){const _0x9d56c0=await _0x119910['json']()['catch'](()=>({'message':_0x119910['statusText']}));throw new Error(_0x9d56c0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x119910['json']();},async 'getBindings'(_0x237c73={}){const _0x27f670=new URLSearchParams();if(_0x237c73['resource_type'])_0x27f670['set']('resource_type',_0x237c73['resource_type']);if(_0x237c73['resource_id'])_0x27f670['set']('resource_id',_0x237c73['resource_id']);if(_0x237c73['subject_type'])_0x27f670['set']('subject_type',_0x237c73['subject_type']);if(_0x237c73['subject_id'])_0x27f670['set']('subject_id',_0x237c73['subject_id']);const _0x5b506b=_0x27f670['toString'](),_0x21f623=await fetch(API_BASE+'/bindings'+(_0x5b506b?'?'+_0x5b506b:''));if(!_0x21f623['ok']){const _0x39037b=await _0x21f623['json']()['catch'](()=>({'message':_0x21f623['statusText']}));throw new Error(_0x39037b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x21f623['json']();},async 'createBinding'(_0x56e78b){const _0x264e30=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56e78b)});if(!_0x264e30['ok']){const _0x3abd42=await _0x264e30['json']()['catch'](()=>({'message':_0x264e30['statusText']}));throw new Error(_0x3abd42['message']||'Failed\x20to\x20create\x20binding');}return await _0x264e30['json']();},async 'updateBinding'(_0x47930b,_0x2b4553){const _0x536738=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x47930b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4553)});if(!_0x536738['ok']){const _0x2bc078=await _0x536738['json']()['catch'](()=>({'message':_0x536738['statusText']}));throw new Error(_0x2bc078['message']||'Failed\x20to\x20update\x20binding');}return await _0x536738['json']();},async 'deleteBinding'(_0xc7f5e9){const _0x52c50a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xc7f5e9),{'method':'DELETE'});if(!_0x52c50a['ok']){const _0x1d753f=await _0x52c50a['json']()['catch'](()=>({'message':_0x52c50a['statusText']}));throw new Error(_0x1d753f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x52c50a['json']();},async 'getRoleDefinitions'(){const _0x52f93e=await fetch(API_BASE+'/roles');if(!_0x52f93e['ok']){const _0x479b13=await _0x52f93e['json']()['catch'](()=>({'message':_0x52f93e['statusText']}));throw new Error(_0x479b13['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x52f93e['json']();},async 'getRoleDefinition'(_0xfd2796){const _0x3fc12a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xfd2796));if(!_0x3fc12a['ok']){const _0x530ee3=await _0x3fc12a['json']()['catch'](()=>({'message':_0x3fc12a['statusText']}));throw new Error(_0x530ee3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3fc12a['json']();},async 'createRoleDefinition'(_0x30ffe1){const _0x3df9c2=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30ffe1)});if(!_0x3df9c2['ok']){const _0x3fe8e8=await _0x3df9c2['json']()['catch'](()=>({'message':_0x3df9c2['statusText']}));throw new Error(_0x3fe8e8['message']||_0x3fe8e8['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3df9c2['json']();},async 'updateRoleDefinition'(_0x350fe2,_0x397ea4){const _0x5b4f3f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x350fe2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x397ea4)});if(!_0x5b4f3f['ok']){const _0x18c30c=await _0x5b4f3f['json']()['catch'](()=>({'message':_0x5b4f3f['statusText']}));throw new Error(_0x18c30c['message']||_0x18c30c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x5b4f3f['json']();},async 'deleteRoleDefinition'(_0x4a42a1){const _0x827eca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4a42a1),{'method':'DELETE'});if(!_0x827eca['ok']){const _0x53baa3=await _0x827eca['json']()['catch'](()=>({'message':_0x827eca['statusText']}));throw new Error(_0x53baa3['message']||_0x53baa3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x827eca['json']();},async 'getAvailablePermissions'(){const _0x22ce83=await fetch(API_BASE+'/roles/available-permissions');if(!_0x22ce83['ok']){const _0x554c5d=await _0x22ce83['json']()['catch'](()=>({'message':_0x22ce83['statusText']}));throw new Error(_0x554c5d['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x22ce83['json']();},async 'getGitProviderAllowedTeams'(_0x2baf0d){const _0x12af65=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2baf0d)+'/allowed-teams');if(!_0x12af65['ok']){const _0x34f995=await _0x12af65['json']()['catch'](()=>({'message':_0x12af65['statusText']}));throw new Error(_0x34f995['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x12af65['json']();},async 'setGitProviderAllowedTeams'(_0x453bd9,_0x440959){const _0x52b5d1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x453bd9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x440959})});if(!_0x52b5d1['ok']){const _0x4670de=await _0x52b5d1['json']()['catch'](()=>({'message':_0x52b5d1['statusText']}));throw new Error(_0x4670de['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x52b5d1['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 _0x3eabd2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2ab672=>{_0x2ab672['el']['style']['bottom']=_0x3eabd2+'px';const _0x21856b=_0x2ab672['el']['offsetHeight']||toastState['defaultHeight'];_0x3eabd2+=_0x21856b+toastState['gap'];});});}function removeToastById(_0x5da54e){const _0x54be93=toastState['toasts']['findIndex'](_0x3b3265=>_0x3b3265['id']===_0x5da54e);if(_0x54be93===-0x1)return;const _0x21eb2b=toastState['toasts'][_0x54be93];if(_0x21eb2b['timeoutId'])clearTimeout(_0x21eb2b['timeoutId']);_0x21eb2b['el']['classList']['remove']('show'),setTimeout(()=>_0x21eb2b['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x54be93,0x1),repositionAllToasts();}function registerToast(_0x333020){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x333020),repositionAllToasts(),_0x333020['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(_0x47a1be){if(_0x47a1be===null||_0x47a1be===undefined)return'';return String(_0x47a1be)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x1c7585,_0x32d20c){if(_0x1c7585&&typeof _0x1c7585==='object'&&!Array['isArray'](_0x1c7585))return{'code':typeof _0x1c7585['text']==='string'?_0x1c7585['text']:'','language':typeof _0x1c7585['lang']==='string'?_0x1c7585['lang']:''};return{'code':typeof _0x1c7585==='string'?_0x1c7585:'','language':typeof _0x32d20c==='string'?_0x32d20c:''};}function buildMermaidBlock(_0x1714af){const _0x2c56ff=String(_0x1714af||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2c56ff))+'\x22>'+escapeHtmlValue(_0x2c56ff)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x41d53a=new marked['Renderer'](),_0x37ad22=_0x41d53a['code']['bind'](_0x41d53a);return _0x41d53a['code']=function(_0x252b78,_0x1b9b77,..._0x18c6af){const {code:_0x728fd3,language:_0x357b21}=getMarkdownCodeBlockPayload(_0x252b78,_0x1b9b77),_0x5e5076=String(_0x357b21||'')['trim']()['toLowerCase']();if(_0x5e5076==='mermaid')return buildMermaidBlock(_0x728fd3);const _0x5575c8=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5575c8&&_0x5e5076)try{const _0x287e92=_0x5575c8['getLanguage'](_0x5e5076)?_0x5e5076:'plaintext',_0x34a65b=_0x5575c8['highlight'](_0x728fd3,{'language':_0x287e92})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x5e5076)+'\x22>'+_0x34a65b+'</code></pre>';}catch(_0x3a7585){console['error']('Syntax\x20highlighting\x20error:',_0x3a7585);}return _0x37ad22(_0x252b78,_0x1b9b77,..._0x18c6af);},sharedMarkedRenderer=_0x41d53a,_0x41d53a;}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 _0x1f2796=window['mermaid'];if(!_0x1f2796||typeof _0x1f2796['initialize']!=='function')return _0x1f2796||null;return _0x1f2796['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f2796;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5d8e38,_0x24c3aa)=>{const _0x480086=()=>_0x5d8e38(configureMermaidInstance()),_0x3c2f13=()=>{mermaidLoadPromise=null,_0x24c3aa(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x249919=document['getElementById'](MERMAID_SCRIPT_ID);!_0x249919&&(_0x249919=document['createElement']('script'),_0x249919['id']=MERMAID_SCRIPT_ID,_0x249919['src']=MERMAID_SCRIPT_SRC,_0x249919['async']=!![],document['head']['appendChild'](_0x249919));if(window['mermaid']){_0x480086();return;}_0x249919['addEventListener']('load',_0x480086,{'once':!![]}),_0x249919['addEventListener']('error',_0x3c2f13,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4b4c92){const _0x3764d6=_0x4b4c92['getAttribute']('data-mermaid-source');if(!_0x3764d6)return null;let _0x2c0141=_0x3764d6;try{_0x2c0141=decodeURIComponent(_0x3764d6);}catch{}return _0x4b4c92['textContent']=_0x2c0141,_0x4b4c92['removeAttribute']('data-processed'),_0x4b4c92['removeAttribute']('aria-roledescription'),_0x4b4c92['removeAttribute']('role'),_0x4b4c92['removeAttribute']('aria-label'),_0x2c0141;}function collectMermaidNodes(_0x16641e,_0x3aee76){if(!(_0x16641e instanceof Element))return;_0x16641e['matches']('.mermaid[data-mermaid-source]')&&_0x3aee76['add'](_0x16641e),_0x16641e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x33287c=>{_0x3aee76['add'](_0x33287c);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2de0ac=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x51c16e=>setTimeout(_0x51c16e,0x0);_0x2de0ac(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a1932=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a1932);});});}function queueMermaidRender(_0x546f6a){const _0x3ba9bb=new Set();_0x546f6a instanceof Document||_0x546f6a instanceof DocumentFragment?_0x546f6a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2d66d8=>_0x3ba9bb['add'](_0x2d66d8)):collectMermaidNodes(_0x546f6a,_0x3ba9bb);if(_0x3ba9bb['size']===0x0)return;_0x3ba9bb['forEach'](_0x2ae56f=>pendingMermaidNodes['add'](_0x2ae56f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x19e5f9=Array['from'](pendingMermaidNodes)['filter'](_0x14a67a=>_0x14a67a['isConnected']);pendingMermaidNodes['clear']();if(_0x19e5f9['length']===0x0)return;const _0x5d47fb=await loadMermaid();if(!_0x5d47fb)return;configureMermaidInstance();const _0x10baad=getMermaidTheme();for(const _0x4b2bb2 of _0x19e5f9){const _0x35aea7=_0x4b2bb2['getAttribute']('data-mermaid-source');if(!_0x35aea7)continue;const _0x5cf961=_0x4b2bb2['getAttribute']('data-processed')==='true';if(_0x5cf961&&_0x4b2bb2['dataset']['mermaidTheme']===_0x10baad)continue;restoreMermaidSource(_0x4b2bb2);try{if(typeof _0x5d47fb['run']==='function')await _0x5d47fb['run']({'nodes':[_0x4b2bb2]});else typeof _0x5d47fb['init']==='function'&&_0x5d47fb['init'](undefined,[_0x4b2bb2]);_0x4b2bb2['dataset']['mermaidTheme']=_0x10baad,delete _0x4b2bb2['dataset']['mermaidError'];}catch(_0x5f287a){console['error']('Mermaid\x20render\x20failed:',_0x5f287a),restoreMermaidSource(_0x4b2bb2),_0x4b2bb2['dataset']['mermaidError']='true',delete _0x4b2bb2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x362d1a=>{_0x362d1a['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x362d1a);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x27592b=>{_0x27592b['forEach'](_0x290209=>{_0x290209['addedNodes']['forEach'](_0x9274a7=>{_0x9274a7['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x9274a7);});});}),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'(_0x4b6017){const _0x4b9a39=new Date(_0x4b6017),_0x495c8c=new Date(),_0x368494=_0x495c8c-_0x4b9a39,_0x33bb28=Math['floor'](_0x368494/0x3e8),_0x5e030f=Math['floor'](_0x33bb28/0x3c),_0xd18350=Math['floor'](_0x5e030f/0x3c),_0x5059cf=Math['floor'](_0xd18350/0x18);if(_0x33bb28<0x3c)return'now';if(_0x5e030f<0x3c)return _0x5e030f+'m\x20ago';if(_0xd18350<0x18)return _0xd18350+'h\x20ago';return _0x5059cf+'d\x20ago';},'getStatusIcon'(_0x556098){switch(_0x556098){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x483e55){switch(_0x483e55){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'(_0x4df4a6,_0x2d5e1a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x41914d={};_0x41914d['text/plain']=new Blob([_0x4df4a6],{'type':'text/plain'});_0x2d5e1a&&(_0x41914d['text/html']=new Blob([_0x2d5e1a],{'type':'text/html'}));const _0x1af3ad=new ClipboardItem(_0x41914d);return await navigator['clipboard']['write']([_0x1af3ad]),!![];}catch(_0x28fec9){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x28fec9);}try{const _0x202127=_0x247b4d=>{_0x247b4d['preventDefault'](),_0x247b4d['clipboardData']['setData']('text/plain',_0x4df4a6),_0x2d5e1a&&_0x247b4d['clipboardData']['setData']('text/html',_0x2d5e1a);};document['addEventListener']('copy',_0x202127);const _0xe4fc47=document['execCommand']('copy');document['removeEventListener']('copy',_0x202127);if(_0xe4fc47)return!![];}catch(_0x1d3540){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1d3540);}try{const _0x100fb9=document['createElement']('textarea');_0x100fb9['value']=_0x4df4a6,_0x100fb9['style']['position']='fixed',_0x100fb9['style']['opacity']='0',_0x100fb9['style']['pointerEvents']='none',document['body']['appendChild'](_0x100fb9),_0x100fb9['select']();const _0x337602=document['execCommand']('copy');return document['body']['removeChild'](_0x100fb9),_0x337602;}catch(_0x1b4107){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1b4107),![];}},'showToast'(_0x4e898d,_0x165e42='info'){const _0x34c0ef=getNextToastId(),_0x355be1=document['createElement']('div');_0x355be1['className']='toast\x20toast-'+_0x165e42,_0x355be1['textContent']=_0x4e898d,_0x355be1['dataset']['toastId']=_0x34c0ef,document['body']['appendChild'](_0x355be1);const _0x424d50=_0x165e42==='error'?0x2710:0xbb8,_0x21cfb1=setTimeout(()=>{removeToastById(_0x34c0ef);},_0x424d50),_0x15aae={'id':_0x34c0ef,'el':_0x355be1,'timeoutId':_0x21cfb1};return registerToast(_0x15aae),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x355be1['classList']['add']('show');});}),_0x34c0ef;},'showError'(_0x4a1636){console['error'](_0x4a1636);const _0x33ae56=typeof _0x4a1636==='string'?_0x4a1636:_0x4a1636['message']||'An\x20error\x20occurred';this['showToast'](_0x33ae56,'error');},'showSuccess'(_0x5f475c){this['showToast'](_0x5f475c,'success');},'capitalize'(_0x3b1b20){if(!_0x3b1b20)return'';return _0x3b1b20['charAt'](0x0)['toUpperCase']()+_0x3b1b20['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x508ab3){return escapeHtmlValue(_0x508ab3);},'ansiToHtml'(_0x468af3){if(_0x468af3===null||_0x468af3===undefined)return'';let _0x3773a2=this['escapeHtml'](_0x468af3);const _0x54b815={'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'},_0x78f2d6={'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 _0x2ad0d4=0x0;return _0x3773a2=_0x3773a2['replace'](/\x1b\[([0-9;]*)m/g,(_0x369720,_0x559d92)=>{if(!_0x559d92||_0x559d92==='0'){const _0x39c798='</span>'['repeat'](_0x2ad0d4);return _0x2ad0d4=0x0,_0x39c798;}const _0x33f185=_0x559d92['split'](';'),_0x345f80=[];for(const _0x15607a of _0x33f185){if(_0x15607a==='1')_0x345f80['push']('font-weight:bold');else{if(_0x15607a==='2')_0x345f80['push']('opacity:0.7');else{if(_0x15607a==='3')_0x345f80['push']('font-style:italic');else{if(_0x15607a==='4')_0x345f80['push']('text-decoration:underline');else{if(_0x15607a==='9')_0x345f80['push']('text-decoration:line-through');else{if(_0x54b815[_0x15607a])_0x345f80['push']('color:'+_0x54b815[_0x15607a]);else{if(_0x78f2d6[_0x15607a])_0x345f80['push']('background-color:'+_0x78f2d6[_0x15607a]);}}}}}}}if(_0x345f80['length']>0x0)return _0x2ad0d4++,'<span\x20style=\x22'+_0x345f80['join'](';')+'\x22>';return'';}),_0x3773a2+='</span>'['repeat'](_0x2ad0d4),_0x3773a2=_0x3773a2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2fdeea,_0x435ce0)=>{if(!_0x435ce0||_0x435ce0==='0')return'';const _0x441adb=_0x435ce0['split'](';'),_0x42747=[];for(const _0x40f7a8 of _0x441adb){if(_0x40f7a8==='1')_0x42747['push']('font-weight:bold');else{if(_0x54b815[_0x40f7a8])_0x42747['push']('color:'+_0x54b815[_0x40f7a8]);else{if(_0x78f2d6[_0x40f7a8])_0x42747['push']('background-color:'+_0x78f2d6[_0x40f7a8]);}}}if(_0x42747['length']>0x0)return'<span\x20style=\x22'+_0x42747['join'](';')+'\x22>';return'';}),_0x3773a2;},'showModal'({title:_0x49c7f7,content:_0x3249ce,buttons:buttons=[]}){const _0x45afde='\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'](_0x49c7f7)+'</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'+_0x3249ce+'\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']((_0xc158bb,_0x5bdfc7)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0xc158bb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5bdfc7+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0xc158bb['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',_0x4bd5a6=document['createElement']('div');_0x4bd5a6['id']='utils-modal',_0x4bd5a6['className']='modal',_0x4bd5a6['innerHTML']=_0x45afde,document['body']['appendChild'](_0x4bd5a6);const _0x9bbac5=document['getElementById']('utils-modal-close');_0x9bbac5&&_0x9bbac5['addEventListener']('click',()=>this['hideModal']());const _0xaeec51=_0x4bd5a6['querySelectorAll']('[data-btn-index]');_0xaeec51['forEach'](_0x2fbed4=>{const _0x4d47cc=parseInt(_0x2fbed4['dataset']['btnIndex']);buttons[_0x4d47cc]?.['onClick']&&_0x2fbed4['addEventListener']('click',buttons[_0x4d47cc]['onClick']);});const _0x4b5de2=document['getElementById']('utils-modal-overlay');_0x4b5de2&&_0x4b5de2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1addc5=document['getElementById']('utils-modal');_0x1addc5&&_0x1addc5['remove']();},'parseKeyValuePairs'(_0x4d0a26){const _0x11198f={};if(!_0x4d0a26)return _0x11198f;return _0x4d0a26['split'](/\r?\n/)['map'](_0xda7d8e=>_0xda7d8e['trim']())['filter'](Boolean)['forEach'](_0x5376e4=>{const _0x3ee742=_0x5376e4['indexOf']('=');if(_0x3ee742>0x0){const _0x18b63f=_0x5376e4['slice'](0x0,_0x3ee742)['trim'](),_0x3dab23=_0x5376e4['slice'](_0x3ee742+0x1)['trim']();if(_0x18b63f)_0x11198f[_0x18b63f]=_0x3dab23;}}),_0x11198f;},'debounce'(_0x47d02b,_0x57bff4=0xfa){let _0x3aa4df=null;return(..._0x6302e2)=>{clearTimeout(_0x3aa4df),_0x3aa4df=setTimeout(()=>_0x47d02b['apply'](this,_0x6302e2),_0x57bff4);};},'formatTimestamp'(_0x31c05b){if(!_0x31c05b)return'N/A';const _0x16333a=new Date(_0x31c05b);return _0x16333a['toLocaleDateString']()+'\x20'+_0x16333a['toLocaleTimeString']();},'getQueryParams'(){const _0x497e32=new URLSearchParams(window['location']['search']),_0x5c5262={};for(const [_0x13f6a0,_0x318d77]of _0x497e32){_0x5c5262[_0x13f6a0]=_0x318d77;}return _0x5c5262;},'formatDuration'(_0xc7e574,_0x6ed31b){if(!_0xc7e574)return'N/A';const _0x20aabe=new Date(_0xc7e574),_0x4dc959=_0x6ed31b?new Date(_0x6ed31b):new Date(),_0x1d64c8=_0x4dc959-_0x20aabe;if(_0x1d64c8<0x0)return'0s';const _0x34a2b3=Math['floor'](_0x1d64c8/0x3e8),_0x3478d1=Math['floor'](_0x34a2b3/0x3c),_0x5ce0b6=Math['floor'](_0x3478d1/0x3c),_0x21cdbd=Math['floor'](_0x5ce0b6/0x18);if(_0x34a2b3<0x3c)return _0x34a2b3+'s';if(_0x3478d1<0x3c)return _0x3478d1+'m\x20'+_0x34a2b3%0x3c+'s';if(_0x5ce0b6<0x18)return _0x5ce0b6+'h\x20'+_0x3478d1%0x3c+'m\x20'+_0x34a2b3%0x3c+'s';return _0x21cdbd+'d\x20'+_0x5ce0b6%0x18+'h\x20'+_0x3478d1%0x3c+'m';},'renderMarkdown'(_0x8bd66e,_0x1219c3={}){if(!_0x8bd66e)return'';_0x8bd66e=this['rewriteAttachmentLinks'](_0x8bd66e,_0x1219c3),_0x8bd66e=this['rewriteColorSyntax'](_0x8bd66e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x8bd66e);}catch(_0x1135d1){return console['error']('Markdown\x20parsing\x20error:',_0x1135d1),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);}},'rewriteAttachmentLinks'(_0x10778e,_0x50940d={}){const _0x52f331=typeof _0x50940d['resolveAttachmentUrl']==='function'?_0x50940d['resolveAttachmentUrl']:_0x50940d['taskId']?_0xfa79d2=>API_BASE+'/tasks/'+_0x50940d['taskId']+'/attachments/'+encodeURIComponent(_0xfa79d2):null;if(!_0x52f331)return _0x10778e;return String(_0x10778e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3b8745,_0x5c1366)=>{const _0x5e13fe=String(_0x5c1366||'')['trim']();if(!_0x5e13fe)return _0x3b8745;let _0x2aa316=_0x5e13fe;try{_0x2aa316=decodeURIComponent(_0x5e13fe);}catch{}const _0x2a8ea8=_0x52f331(_0x2aa316);if(!_0x2a8ea8)return _0x3b8745;return']('+_0x2a8ea8+')';});},'rewriteColorSyntax'(_0x28cbf2){if(!_0x28cbf2)return _0x28cbf2;return String(_0x28cbf2)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x5030e9,_0x310f00,_0x349345)=>{const _0x22658e=this['rewriteColorSyntax'](_0x349345);return'<span\x20style=\x22color:\x20'+_0x310f00+'\x22>'+_0x22658e+'</span>';});},'renderMarkdownFallback'(_0x430894,_0x4d4a47={}){if(!_0x430894)return'';_0x430894=_0x430894['replace'](/\r\n/g,'\x0a'),_0x430894=_0x430894['replace'](/\r/g,'\x0a'),_0x430894=this['rewriteAttachmentLinks'](_0x430894,_0x4d4a47);let _0x23c544=this['escapeHtml'](_0x430894);return _0x23c544=_0x23c544['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x23c544=_0x23c544['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x23c544=_0x23c544['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x23c544=_0x23c544['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x23c544=_0x23c544['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x23c544=_0x23c544['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x23c544=_0x23c544['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x23c544=_0x23c544['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x23c544=_0x23c544['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x23c544=_0x23c544['replace'](/\n\n/g,'</p><p>'),_0x23c544=_0x23c544['replace'](/\n/g,'<br>'),'<p>'+_0x23c544+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x46e172=new Uint8Array(0x10);crypto['getRandomValues'](_0x46e172),_0x46e172[0x6]=_0x46e172[0x6]&0xf|0x40,_0x46e172[0x8]=_0x46e172[0x8]&0x3f|0x80;const _0x3402fb=Array['from'](_0x46e172,_0x3be59e=>_0x3be59e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3402fb['slice'](0x0,0x8)+'-'+_0x3402fb['slice'](0x8,0xc)+'-'+_0x3402fb['slice'](0xc,0x10)+'-'+_0x3402fb['slice'](0x10,0x14)+'-'+_0x3402fb['slice'](0x14);}};export class CustomSelect{constructor(_0x3cdda0,_0x2197e9={}){this['nativeSelect']=_0x3cdda0,this['options']=_0x2197e9,this['isOpen']=![],this['selectedValue']=_0x3cdda0['value']||'',this['searchable']=_0x2197e9['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x26aa08=document['createElement']('div');_0x26aa08['className']='custom-select';const _0x456f92=document['createElement']('div');_0x456f92['className']='custom-select-trigger',_0x456f92['setAttribute']('tabindex','0'),_0x456f92['setAttribute']('role','button'),_0x456f92['setAttribute']('aria-haspopup','listbox');const _0x1f537c=document['createElement']('span');_0x1f537c['className']='custom-select-trigger-text';const _0x4ad97d=document['createElement']('span');_0x4ad97d['className']='custom-select-arrow',_0x4ad97d['textContent']='▼',_0x456f92['appendChild'](_0x1f537c),_0x456f92['appendChild'](_0x4ad97d);const _0x3fcd4b=document['createElement']('div');_0x3fcd4b['className']='custom-select-dropdown',_0x3fcd4b['setAttribute']('role','listbox');if(this['searchable']){const _0x37cfb6=document['createElement']('div');_0x37cfb6['className']='custom-select-search';const _0x417b35=document['createElement']('input');_0x417b35['type']='text',_0x417b35['className']='custom-select-search-input',_0x417b35['placeholder']='Type\x20to\x20search...',_0x417b35['setAttribute']('aria-label','Search\x20options'),_0x417b35['addEventListener']('input',_0x12f5c8=>{this['searchQuery']=_0x12f5c8['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x417b35['addEventListener']('keydown',_0x3255be=>{if(_0x3255be['key']==='Escape')_0x3255be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3255be['key']==='Enter'){_0x3255be['preventDefault'](),_0x3255be['stopPropagation']();const _0x57aa30=_0x3fcd4b['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x57aa30){const _0x4fa1d8=_0x57aa30['getAttribute']('data-value');this['select'](_0x4fa1d8);}}}}),_0x37cfb6['appendChild'](_0x417b35),_0x3fcd4b['appendChild'](_0x37cfb6),this['searchInput']=_0x417b35;}const _0x51bea7=document['createElement']('div');_0x51bea7['className']='custom-select-options',_0x3fcd4b['appendChild'](_0x51bea7),_0x26aa08['appendChild'](_0x456f92),_0x26aa08['appendChild'](_0x3fcd4b),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x26aa08,this['nativeSelect']),this['wrapper']=_0x26aa08,this['trigger']=_0x456f92,this['triggerText']=_0x1f537c,this['dropdown']=_0x3fcd4b,this['optionsContainer']=_0x51bea7,_0x456f92['addEventListener']('click',()=>this['toggle']()),_0x456f92['addEventListener']('keydown',_0x50b036=>this['handleKeydown'](_0x50b036)),document['addEventListener']('click',_0x44bc5e=>{!_0x26aa08['contains'](_0x44bc5e['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1cc8a8=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1cc8a8['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x175a8f=new MutationObserver(()=>{this['updateDisabledState']();});_0x175a8f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3133f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3133f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x24773f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x24773f),this['trigger']['setAttribute']('aria-disabled',_0x24773f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x24773f?'-1':'0'),_0x24773f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5434a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x43ae15=_0x5434a['filter'](_0x31b019=>!_0x31b019['disabled']&&!_0x31b019['hidden']);_0x5434a['forEach']((_0x5ccb52,_0x22d34b)=>{const _0x3e0962=document['createElement']('div');_0x3e0962['className']='custom-select-option',_0x3e0962['textContent']=_0x5ccb52['textContent'],_0x3e0962['setAttribute']('data-value',_0x5ccb52['value']),_0x3e0962['setAttribute']('data-index',_0x22d34b),_0x3e0962['setAttribute']('role','option'),_0x5ccb52['disabled']?_0x3e0962['classList']['add']('disabled'):_0x3e0962['addEventListener']('click',()=>this['select'](_0x5ccb52['value'])),_0x5ccb52['value']===this['selectedValue']&&_0x3e0962['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x3e0962),this['allOptions']['push']({'element':_0x3e0962,'text':_0x5ccb52['textContent']['toLowerCase'](),'value':_0x5ccb52['value'],'disabled':_0x5ccb52['disabled']});});if(this['searchable']&&this['searchInput']){const _0x905cd1=this['searchInput']['parentElement'];_0x43ae15['length']>0x3?_0x905cd1['style']['display']='':_0x905cd1['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x31ee22=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x57803c=>{if(!_0x31ee22||_0x57803c['disabled'])_0x57803c['element']['style']['display']='';else{const _0x21d75c=_0x57803c['text']['includes'](_0x31ee22);_0x57803c['element']['style']['display']=_0x21d75c?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x54acda){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x54acda,this['nativeSelect']['value']=_0x54acda;const _0x27dbf7=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x27dbf7),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x203720=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x203720&&(this['triggerText']['textContent']=_0x203720['textContent'],_0x203720['disabled']||_0x203720['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x20d9e3=>{_0x20d9e3['getAttribute']('data-value')===this['selectedValue']?_0x20d9e3['classList']['add']('selected'):_0x20d9e3['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 _0x272fe4=window['getComputedStyle'](this['dropdown']);if(_0x272fe4['position']==='fixed'){const _0x553d59=this['trigger']['getBoundingClientRect'](),_0x533fec=parseInt(_0x272fe4['maxHeight'])||0xc8,_0x13bace=window['innerHeight'],_0x36e278=_0x13bace-_0x553d59['bottom'],_0x31dfca=_0x553d59['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x504f70;_0x36e278<_0x533fec&&_0x31dfca>_0x36e278?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x13bace-_0x553d59['top']+'px',_0x504f70=Math['min'](_0x533fec,_0x31dfca-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x553d59['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x504f70=Math['min'](_0x533fec,_0x36e278-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px');if(this['optionsContainer']){let _0x325bb8=_0x504f70;if(this['searchInput']){const _0x1c1622=this['searchInput']['parentElement'];_0x1c1622&&(_0x325bb8-=_0x1c1622['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x325bb8)+'px';}this['dropdown']['style']['left']=_0x553d59['left']+'px',this['dropdown']['style']['width']=_0x553d59['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x19559d=this['searchInput']['parentElement'];_0x19559d&&_0x19559d['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'](_0x5b9091){if(this['nativeSelect']['disabled'])return;if(_0x5b9091['key']==='Enter'||_0x5b9091['key']==='\x20')_0x5b9091['preventDefault'](),this['toggle']();else _0x5b9091['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1ba0f2='\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',_0x1ba0f2),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2c0524=document['getElementById']('confirm-dialog-close'),_0x30c964=document['getElementById']('confirm-dialog-cancel'),_0x3ef8a5=document['getElementById']('confirm-dialog-confirm'),_0xa93a64=this['_modal']['querySelector']('.modal-overlay');_0x2c0524['addEventListener']('click',()=>this['_resolve'](![])),_0x30c964['addEventListener']('click',()=>this['_resolve'](![])),_0x3ef8a5['addEventListener']('click',()=>this['_resolve'](!![])),_0xa93a64['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1f499c=>{if(_0x1f499c['key']==='Escape')_0x1f499c['preventDefault'](),this['_resolve'](![]);else _0x1f499c['key']==='Enter'&&(_0x1f499c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2ff717,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x56011b=>{this['_resolvePromise']=_0x56011b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2ff717;const _0x25161c=document['getElementById']('confirm-dialog-cancel'),_0x580ba5=document['getElementById']('confirm-dialog-confirm');_0x25161c['textContent']=cancelText,_0x580ba5['textContent']=confirmText,_0x580ba5['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x580ba5['focus']();});},'_resolve'(_0x2393ce){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x2393ce),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xf20d0c,_0x24a9ee={}){this['container']=_0xf20d0c,this['options']={'placeholder':_0x24a9ee['placeholder']||'Type\x20to\x20search...','maxItems':_0x24a9ee['maxItems']||0x64,'loadItems':_0x24a9ee['loadItems']||(async()=>[]),'renderItem':_0x24a9ee['renderItem']||(_0x370f41=>({'primary':String(_0x370f41),'secondary':''})),'onSelect':_0x24a9ee['onSelect']||(()=>{}),'filterItems':_0x24a9ee['filterItems']||null,'getItemValue':_0x24a9ee['getItemValue']||(_0x58089c=>_0x58089c),'sortItems':_0x24a9ee['sortItems']||null,'debounceMs':_0x24a9ee['debounceMs']||0xc8,'minCharsForSearch':_0x24a9ee['minCharsForSearch']||0x0,'emptyMessage':_0x24a9ee['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x24a9ee['loadingMessage']||'Loading...','preload':_0x24a9ee['preload']!==![],'searchMode':_0x24a9ee['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',_0x4418fc=>this['onBlur'](_0x4418fc)),this['input']['addEventListener']('input',_0xff9a38=>this['onInput'](_0xff9a38)),this['input']['addEventListener']('keydown',_0xe83e5f=>this['onKeydown'](_0xe83e5f)),this['clearBtn']['addEventListener']('mousedown',_0x452bf5=>{_0x452bf5['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x208f92=>{_0x208f92['preventDefault']();}),document['addEventListener']('click',_0xbda906=>{!this['wrapper']['contains'](_0xbda906['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(_0x48b03e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x48b03e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x403de9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xdf2408){const _0x591d28=_0xdf2408['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x591d28);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x591d28):this['loadAndShow'](_0x591d28);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x49e35f){switch(_0x49e35f['key']){case'ArrowDown':_0x49e35f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x49e35f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x49e35f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x49e35f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x42aff4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3dadcf=this['selectedIndex']+_0x42aff4;if(_0x3dadcf>=0x0&&_0x3dadcf<this['filteredItems']['length']){this['selectedIndex']=_0x3dadcf,this['updateSelectionHighlight']();const _0x25d996=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x25d996[this['selectedIndex']]&&_0x25d996[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x584ae6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x584ae6['forEach']((_0x3cbdec,_0x198ade)=>{_0x3cbdec['classList']['toggle']('keyboard-selected',_0x198ade===this['selectedIndex']);});}async['loadAndShow'](_0x302925){this['showLoading']();try{const _0x458daf=await this['options']['loadItems'](_0x302925);if(this['options']['searchMode']==='server'){let _0x19b7ac=_0x458daf;this['options']['sortItems']&&(_0x19b7ac=this['options']['sortItems']([..._0x458daf]));this['filteredItems']=_0x19b7ac;const _0xbc6bc2=this['filteredItems']['length']>=this['options']['maxItems'];_0xbc6bc2&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xbc6bc2),this['open']();}else this['allItems']=_0x458daf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x302925);}catch(_0x107d73){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x107d73),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x46f237){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x46f237):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x15949a=this['filteredItems']['length']>=this['options']['maxItems'];_0x15949a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x15949a),this['open']();}['renderItems'](_0x55d3e9){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']((_0x46461e,_0x16e2ed)=>{const _0x591fd9=document['createElement']('div');_0x591fd9['className']='autocomplete-select-item',_0x591fd9['setAttribute']('role','option'),_0x591fd9['setAttribute']('data-index',_0x16e2ed);const _0x31e629=this['options']['renderItem'](_0x46461e);let _0x4f42c3='';_0x31e629['icon']&&(_0x4f42c3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x31e629['iconClass']||'')+'\x22>'+_0x31e629['icon']+'</span>'),_0x591fd9['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4f42c3+'\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'](_0x31e629['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x31e629['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x31e629['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591fd9['addEventListener']('click',()=>{this['selectItem'](_0x46461e);}),_0x591fd9['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x16e2ed,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591fd9);}),_0x55d3e9?(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'](_0x5d8f58){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5d8f58)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e66ce){this['selectedItem']=_0x2e66ce;const _0x8cb01f=this['options']['renderItem'](_0x2e66ce);this['input']['value']=_0x8cb01f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e66ce);}['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'](_0x53e2d6){if(_0x53e2d6){this['selectedItem']=_0x53e2d6;const _0x5f27a8=this['options']['renderItem'](_0x53e2d6);this['input']['value']=_0x5f27a8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x550f1a){this['allItems']=_0x550f1a,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'](_0x116877){this['input']['placeholder']=_0x116877;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1ae68b=null){const _0xb0c0d8=document['getElementById']('admin-menu-container'),_0x354627=document['getElementById']('admin-menu-btn'),_0x34e512=document['getElementById']('admin-menu');if(!_0xb0c0d8||!_0x354627||!_0x34e512)return;try{!_0x1ae68b&&(_0x1ae68b=await API['getCurrentUser']());if(_0x1ae68b){const _0x81239c=window['Permissions'],_0x3dc828=_0x81239c['hasServerPermission'](_0x1ae68b,'*')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:manage')||_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')||_0x81239c['hasTeamPermission'](_0x1ae68b,'teams:manage')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:view_details');if(!_0x3dc828)return;_0xb0c0d8['hidden']=![];if(!_0x81239c['hasServerPermission'](_0x1ae68b,'*')){const _0x144444=_0x34e512['querySelectorAll']('.admin-menu-item');_0x144444['forEach'](_0x17bc4f=>{const _0x1efa70=_0x17bc4f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1efa70==='Users'&&!_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Skills'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Settings'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Administration'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Git\x20History'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Roles'&&(_0x17bc4f['hidden']=!![]);});}_0x354627['addEventListener']('click',_0x451451=>{_0x451451['stopPropagation']();const _0x4faec8=document['getElementById']('actions-menu');if(_0x4faec8)_0x4faec8['hidden']=!![];_0x34e512['hidden']=!_0x34e512['hidden'];}),document['addEventListener']('click',_0xe3cdce=>{!_0x34e512['hidden']&&!_0x354627['contains'](_0xe3cdce['target'])&&!_0x34e512['contains'](_0xe3cdce['target'])&&(_0x34e512['hidden']=!![]);}),document['addEventListener']('keydown',_0x270b96=>{_0x270b96['key']==='Escape'&&!_0x34e512['hidden']&&(_0x34e512['hidden']=!![]);});}}catch(_0x194db9){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x194db9['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 _0xcd3f77=window['location']['pathname'],_0x455962=_0xcd3f77['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x455962)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x455962[0x1]),_0x455962[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1381b7={}){const _0x5cc8ca=new URLSearchParams();_0x1381b7['userId']&&_0x5cc8ca['set']('userId',String(_0x1381b7['userId']));_0x1381b7['automation']&&_0x5cc8ca['set']('automation',String(_0x1381b7['automation']));const _0x5dc559=API_BASE+'/tasks/stats'+(_0x5cc8ca['toString']()?'?'+_0x5cc8ca['toString']():''),_0x170f77=await fetch(_0x5dc559);if(!_0x170f77['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x170f77['statusText']);return await _0x170f77['json']();},async 'getTasks'(_0x68b639={}){const _0x538650=new URLSearchParams();_0x68b639['status']&&_0x538650['set']('status',String(_0x68b639['status']));_0x68b639['environment']&&_0x538650['set']('environment',String(_0x68b639['environment']));_0x68b639['automation']&&_0x538650['set']('automation',String(_0x68b639['automation']));if(_0x68b639['include']){const _0x3338ef=Array['isArray'](_0x68b639['include'])?_0x68b639['include']['join'](','):String(_0x68b639['include']);_0x3338ef&&_0x538650['set']('include',_0x3338ef);}_0x68b639['filter']&&_0x538650['set']('filter',String(_0x68b639['filter']));_0x68b639['page']&&_0x538650['set']('page',String(_0x68b639['page']));_0x68b639['limit']&&_0x538650['set']('limit',String(_0x68b639['limit']));_0x68b639['userId']&&_0x538650['set']('userId',String(_0x68b639['userId']));_0x68b639['search']&&_0x538650['set']('search',String(_0x68b639['search']));_0x68b639['includeChildTasks']&&_0x538650['set']('includeChildTasks','true');const _0x481b5c=API_BASE+'/tasks'+(_0x538650['toString']()?'?'+_0x538650['toString']():''),_0x48c0ec=await fetch(_0x481b5c);if(!_0x48c0ec['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x48c0ec['statusText']);return await _0x48c0ec['json']();},async 'getAutomations'(_0x37f92a={}){const _0x2cc2cd=new URLSearchParams();_0x37f92a['environment']&&_0x2cc2cd['set']('environment',String(_0x37f92a['environment']));const _0x4ef98d=await fetch(API_BASE+'/api/automations'+(_0x2cc2cd['toString']()?'?'+_0x2cc2cd['toString']():''));if(!_0x4ef98d['ok']){const _0x5f2166=await _0x4ef98d['json']()['catch'](()=>({}));throw new Error(_0x5f2166['message']||_0x5f2166['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4ef98d['statusText']);}return await _0x4ef98d['json']();},async 'getAutomation'(_0x390db0){const _0xce601e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x390db0));if(!_0xce601e['ok']){const _0xe48625=await _0xce601e['json']()['catch'](()=>({}));throw new Error(_0xe48625['message']||_0xe48625['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0xce601e['statusText']);}return await _0xce601e['json']();},async 'createAutomation'(_0x1bde51){const _0x44c1e1=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bde51||{})});if(!_0x44c1e1['ok']){const _0x3362a3=await _0x44c1e1['json']()['catch'](()=>({}));throw new Error(_0x3362a3['message']||_0x3362a3['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x44c1e1['statusText']);}return await _0x44c1e1['json']();},async 'updateAutomation'(_0x56a7ca,_0x577cd0){const _0x334573=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56a7ca),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x577cd0||{})});if(!_0x334573['ok']){const _0x1d7a3b=await _0x334573['json']()['catch'](()=>({}));throw new Error(_0x1d7a3b['message']||_0x1d7a3b['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x334573['statusText']);}return await _0x334573['json']();},async 'deleteAutomation'(_0x500b05){const _0x220586=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500b05),{'method':'DELETE'});if(!_0x220586['ok']){const _0x349599=await _0x220586['json']()['catch'](()=>({}));throw new Error(_0x349599['message']||_0x349599['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x220586['statusText']);}return await _0x220586['json']();},async 'triggerAutomation'(_0xdecdf3){const _0x418bb4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xdecdf3)+'/trigger',{'method':'POST'});if(!_0x418bb4['ok']){const _0x5e5d87=await _0x418bb4['json']()['catch'](()=>({}));throw new Error(_0x5e5d87['message']||_0x5e5d87['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x418bb4['statusText']);}return await _0x418bb4['json']();},async 'setAutomationEnabled'(_0xac9256,_0x264182){const _0x119858=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xac9256)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x264182})});if(!_0x119858['ok']){const _0x3e32d3=await _0x119858['json']()['catch'](()=>({}));throw new Error(_0x3e32d3['message']||_0x3e32d3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x119858['statusText']);}return await _0x119858['json']();},async 'getAutomationHistory'(_0x572429,_0xa300d3=0x32){const _0x4a43ff=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x572429)+'/history?limit='+encodeURIComponent(String(_0xa300d3)));if(!_0x4a43ff['ok']){const _0x3d5619=await _0x4a43ff['json']()['catch'](()=>({}));throw new Error(_0x3d5619['message']||_0x3d5619['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4a43ff['statusText']);}return await _0x4a43ff['json']();},async 'getTask'(_0x4c2163,_0x22edbb={}){const _0x51f8f7=new URLSearchParams();if(_0x22edbb['include']){const _0x49c479=Array['isArray'](_0x22edbb['include'])?_0x22edbb['include']['join'](','):String(_0x22edbb['include']);if(_0x49c479)_0x51f8f7['set']('include',_0x49c479);}const _0x10a22e=await fetch(API_BASE+'/tasks/'+_0x4c2163+(_0x51f8f7['toString']()?'?'+_0x51f8f7['toString']():''));if(!_0x10a22e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x10a22e['statusText']);return await _0x10a22e['json']();},async 'getTaskResults'(_0x7fcedd){const _0x57ed3d=await fetch(API_BASE+'/tasks/'+_0x7fcedd+'/results');if(!_0x57ed3d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x57ed3d['statusText']);return await _0x57ed3d['json']();},async 'getTaskPatches'(_0x41fe6b){const _0x12c162=await fetch(API_BASE+'/tasks/'+_0x41fe6b+'/patches');if(!_0x12c162['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x12c162['statusText']);return await _0x12c162['json']();},async 'getTaskAttachments'(_0x1735b7){const _0x2e49c5=await fetch(API_BASE+'/tasks/'+_0x1735b7+'/attachments');if(!_0x2e49c5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2e49c5['statusText']);return await _0x2e49c5['json']();},async 'uploadAttachments'(_0x58cd6a,_0x5595fa){const _0x39a243=new FormData();for(const _0x48f003 of _0x5595fa){_0x39a243['append']('attachments',_0x48f003);}const _0x32af79=await fetch(API_BASE+'/tasks/'+_0x58cd6a+'/attachments',{'method':'POST','body':_0x39a243});if(!_0x32af79['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x32af79['statusText']);return await _0x32af79['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3831f4=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3831f4['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3831f4['json']();}catch(_0x40b96c){return{'available':![],'reason':_0x40b96c['message']};}},async 'generateTaskName'(_0x9ef1fd){try{const _0x3686ad=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x9ef1fd})});return await _0x3686ad['json']();}catch(_0x4b3082){return{'success':![],'error':_0x4b3082['message']};}},async 'createTask'(_0x2cbe88){let _0x6de749,_0x4b21ca={};if(_0x2cbe88['files']&&_0x2cbe88['files']['length']>0x0){const _0x57b203=new FormData();for(const [_0x13a44f,_0x57f9bf]of Object['entries'](_0x2cbe88)){if(_0x13a44f!=='files'){if(_0x57f9bf==null)continue;typeof _0x57f9bf==='object'?_0x57b203['append'](_0x13a44f,JSON['stringify'](_0x57f9bf)):_0x57b203['append'](_0x13a44f,String(_0x57f9bf));}}for(const _0x4473a7 of _0x2cbe88['files']){_0x57b203['append']('attachments',_0x4473a7);}_0x6de749=_0x57b203;}else _0x4b21ca['Content-Type']='application/json',_0x6de749=JSON['stringify'](_0x2cbe88);const _0x2005f3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b21ca,'body':_0x6de749});if(!_0x2005f3['ok']){const _0xe298f1=await _0x2005f3['json'](),_0x598211=new Error(_0xe298f1['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2005f3['statusText']),{message:_0x2bcafa,..._0x4e7883}=_0xe298f1;Object['assign'](_0x598211,_0x4e7883);throw _0x598211;}return await _0x2005f3['json']();},async 'createTestTask'(_0x10af26){const _0xcd0fa1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10af26)});if(!_0xcd0fa1['ok']){const _0x405eab=await _0xcd0fa1['json']();throw new Error(_0x405eab['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xcd0fa1['statusText']);}return await _0xcd0fa1['json']();},async 'createEphemeralTest'(_0x5b15bd){const _0x127b84=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b15bd)});if(!_0x127b84['ok']){const _0xe657b7=await _0x127b84['json']();throw new Error(_0xe657b7['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x127b84['statusText']);}return await _0x127b84['json']();},async 'createDeployTask'(_0x472e1c){const _0x3bf75d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x472e1c)});if(!_0x3bf75d['ok']){const _0x995740=await _0x3bf75d['json']();throw new Error(_0x995740['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3bf75d['statusText']);}return await _0x3bf75d['json']();},async 'getEnvironments'(){const _0x1d8db1=await fetch(API_BASE+'/environments');if(!_0x1d8db1['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x1d8db1['statusText']);return await _0x1d8db1['json']();},async 'getEnvironment'(_0xad77fd){const _0x409f6f=await fetch(API_BASE+'/environments/'+_0xad77fd);if(!_0x409f6f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x409f6f['statusText']);return await _0x409f6f['json']();},async 'getEnvironmentRepoHistory'(_0x446ff7,_0x5a8fe1,_0x5f3366={}){if(!_0x446ff7||!_0x5a8fe1)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3137b4=new URLSearchParams();if(_0x5f3366['limit'])_0x3137b4['set']('limit',String(_0x5f3366['limit']));if(_0x5f3366['offset'])_0x3137b4['set']('offset',String(_0x5f3366['offset']));if(_0x5f3366['search'])_0x3137b4['set']('search',String(_0x5f3366['search']));if(_0x5f3366['branch'])_0x3137b4['set']('branch',String(_0x5f3366['branch']));const _0x307aca=API_BASE+'/environments/'+encodeURIComponent(_0x446ff7)+'/repos/'+encodeURIComponent(_0x5a8fe1)+'/git/history',_0x1517f4=await fetch(''+_0x307aca+(_0x3137b4['toString']()?'?'+_0x3137b4['toString']():''));if(!_0x1517f4['ok']){const _0x5837e1=await _0x1517f4['json']()['catch'](()=>({}));throw new Error(_0x5837e1['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x1517f4['statusText']);}return await _0x1517f4['json']();},async 'getEnvironmentRepoCommit'(_0x2e6d17,_0x50bee0,_0x20db36){if(!_0x2e6d17||!_0x50bee0||!_0x20db36)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5201a2=API_BASE+'/environments/'+encodeURIComponent(_0x2e6d17)+'/repos/'+encodeURIComponent(_0x50bee0)+'/git/commits/'+encodeURIComponent(_0x20db36),_0x2a295a=await fetch(_0x5201a2);if(!_0x2a295a['ok']){const _0x30fc38=await _0x2a295a['json']()['catch'](()=>({}));throw new Error(_0x30fc38['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2a295a['statusText']);}return await _0x2a295a['json']();},async 'getEnvironmentRepoBranches'(_0x598757,_0x1175a9){if(!_0x598757||!_0x1175a9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1f3fb5=API_BASE+'/environments/'+encodeURIComponent(_0x598757)+'/repos/'+encodeURIComponent(_0x1175a9)+'/git/branches',_0x168d30=await fetch(_0x1f3fb5);if(!_0x168d30['ok']){const _0x1e719a=await _0x168d30['json']()['catch'](()=>({}));throw new Error(_0x1e719a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x168d30['statusText']);}return await _0x168d30['json']();},async 'revertEnvironmentRepoCommit'(_0x2fd8f1,_0x2c4f09,_0x3f3c70,_0x140a0d={}){if(!_0x2fd8f1||!_0x2c4f09||!_0x3f3c70)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2e2f3e=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x2fd8f1)+'/repos/'+encodeURIComponent(_0x2c4f09)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3f3c70,..._0x140a0d})});if(!_0x2e2f3e['ok']){const _0x4e2c5e=await _0x2e2f3e['json']()['catch'](()=>({}));throw new Error(_0x4e2c5e['message']||_0x4e2c5e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2e2f3e['statusText']);}return await _0x2e2f3e['json']();},async 'getTemplates'(_0xb4c23={}){const _0x36c4d9=new URLSearchParams();if(_0xb4c23['include']){const _0x88261b=Array['isArray'](_0xb4c23['include'])?_0xb4c23['include']['join'](','):String(_0xb4c23['include']);if(_0x88261b)_0x36c4d9['set']('include',_0x88261b);}const _0x30cfef=await fetch(API_BASE+'/templates'+(_0x36c4d9['toString']()?'?'+_0x36c4d9['toString']():''));if(!_0x30cfef['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x30cfef['statusText']);return await _0x30cfef['json']();},async 'getTemplatesForEnvironment'(_0x334b78,_0x58cb63={}){if(!_0x334b78)throw new Error('Environment\x20name\x20is\x20required');const _0xf5de51=new URLSearchParams();if(_0x58cb63['include']){const _0x565edd=Array['isArray'](_0x58cb63['include'])?_0x58cb63['include']['join'](','):String(_0x58cb63['include']);if(_0x565edd)_0xf5de51['set']('include',_0x565edd);}const _0x33ed3a=await fetch(API_BASE+'/templates/'+_0x334b78+(_0xf5de51['toString']()?'?'+_0xf5de51['toString']():''));if(!_0x33ed3a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x334b78+':\x20'+_0x33ed3a['statusText']);return await _0x33ed3a['json']();},async 'getTemplate'(_0x3f8fb0,_0x1a25b0,_0x3f6471={}){if(!_0x3f8fb0||!_0x1a25b0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x29311a=new URLSearchParams();if(_0x3f6471['include']){const _0x4342d1=Array['isArray'](_0x3f6471['include'])?_0x3f6471['include']['join'](','):String(_0x3f6471['include']);if(_0x4342d1)_0x29311a['set']('include',_0x4342d1);}const _0x47c72c=await fetch(API_BASE+'/templates/'+_0x3f8fb0+'/'+_0x1a25b0+(_0x29311a['toString']()?'?'+_0x29311a['toString']():''));if(!_0x47c72c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x47c72c['statusText']);return await _0x47c72c['json']();},async 'getTaskLogs'(_0x4a1d97,_0x3b51b7={}){if(!_0x4a1d97)throw new Error('Task\x20ID\x20is\x20required');const _0x43e109=new URLSearchParams();_0x3b51b7['tail']&&_0x43e109['set']('tail',String(_0x3b51b7['tail']));const _0x5da035=await fetch(API_BASE+'/tasks/'+_0x4a1d97+'/logs'+(_0x43e109['toString']()?'?'+_0x43e109['toString']():''));if(!_0x5da035['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x5da035['statusText']);return await _0x5da035['text']();},async 'getContainers'(){const _0x479f04=await fetch(API_BASE+'/containers');if(!_0x479f04['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x479f04['statusText']);return await _0x479f04['json']();},async 'getContainer'(_0x1a8e8b){const _0x324791=await fetch(API_BASE+'/containers/'+_0x1a8e8b);if(!_0x324791['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x324791['statusText']);return await _0x324791['json']();},async 'startInteractiveContainer'(_0x344cca){const _0x4b919f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344cca)});if(!_0x4b919f['ok']){const _0x181bd5=await _0x4b919f['json']()['catch'](()=>({}));throw new Error(_0x181bd5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4b919f['statusText']);}return await _0x4b919f['json']();},async 'startContainerCodeServer'(_0x46901a,_0xa99fdb={}){if(!_0x46901a)throw new Error('Container\x20ID\x20is\x20required');const _0x16cb84=new URLSearchParams();_0xa99fdb['theme']&&_0x16cb84['set']('theme',_0xa99fdb['theme']);const _0x35833b=await fetch(API_BASE+'/containers/'+_0x46901a+'/code-server'+(_0x16cb84['toString']()?'?'+_0x16cb84['toString']():'')),_0x4293f0=await _0x35833b['json']()['catch'](()=>({}));if(!_0x35833b['ok'])throw new Error(_0x4293f0['message']||_0x4293f0['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x35833b['statusText']);return _0x4293f0;},async 'stopContainer'(_0x28732c){const _0x59db5d=await fetch(API_BASE+'/containers/'+_0x28732c,{'method':'DELETE'});if(!_0x59db5d['ok']){const _0x5c533f=await _0x59db5d['json']()['catch'](()=>({}));throw new Error(_0x5c533f['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x59db5d['statusText']);}return await _0x59db5d['json']();},async 'stopTask'(_0x597fc4){if(!_0x597fc4)throw new Error('Task\x20ID\x20is\x20required');const _0x39fb9a=await fetch(API_BASE+'/tasks/'+_0x597fc4+'/stop',{'method':'POST'});if(!_0x39fb9a['ok']){const _0x2f9b91=await _0x39fb9a['json']()['catch'](()=>({}));throw new Error(_0x2f9b91['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x39fb9a['statusText']);}return await _0x39fb9a['json']();},async 'interruptTask'(_0x207deb){if(!_0x207deb)throw new Error('Task\x20ID\x20is\x20required');const _0x21b1a6=await fetch(API_BASE+'/tasks/'+_0x207deb+'/interrupt',{'method':'POST'});if(!_0x21b1a6['ok']){const _0x273817=await _0x21b1a6['json']()['catch'](()=>({}));throw new Error(_0x273817['error']||_0x273817['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x21b1a6['statusText']);}return await _0x21b1a6['json']();},async 'startTask'(_0x5c0bf1){if(!_0x5c0bf1)throw new Error('Task\x20ID\x20is\x20required');const _0xf2ef5f=await fetch(API_BASE+'/tasks/'+_0x5c0bf1+'/start',{'method':'POST'});if(!_0xf2ef5f['ok']){const _0x513ce3=await _0xf2ef5f['json']()['catch'](()=>({}));throw new Error(_0x513ce3['error']||'Failed\x20to\x20start\x20task:\x20'+_0xf2ef5f['statusText']);}return await _0xf2ef5f['json']();},async 'deleteTask'(_0x3f357a){if(!_0x3f357a)throw new Error('Task\x20ID\x20is\x20required');const _0xbc0f7f=await fetch(API_BASE+'/tasks/'+_0x3f357a,{'method':'DELETE'});if(!_0xbc0f7f['ok']){const _0x1aec35=await _0xbc0f7f['json']()['catch'](()=>({}));throw new Error(_0x1aec35['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xbc0f7f['statusText']);}return await _0xbc0f7f['json']();},async 'refreshTasksFromDisk'(){const _0x32844d=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x32844d['ok']){const _0x16fee3=await _0x32844d['json']()['catch'](()=>({}));throw new Error(_0x16fee3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x32844d['statusText']);}return await _0x32844d['json']();},async 'approveTask'(_0x5a3023,_0x4ab29a={}){if(!_0x5a3023)throw new Error('Task\x20ID\x20is\x20required');const _0x475d08={'commit_message':_0x4ab29a['commit_message']||'','pull':_0x4ab29a['pull']??![],'push':_0x4ab29a['push']??![],'conflict_strategy':_0x4ab29a['conflict_strategy']||'rebase'};_0x4ab29a['new_branch']&&(_0x475d08['new_branch']=_0x4ab29a['new_branch']);const _0x47f346=await fetch(API_BASE+'/tasks/'+_0x5a3023+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x475d08)});if(!_0x47f346['ok']){const _0x1acc48=await _0x47f346['json']()['catch'](()=>({}));let _0x457af6=_0x1acc48['error']||_0x1acc48['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x47f346['statusText'];if(_0x1acc48['results']&&Array['isArray'](_0x1acc48['results'])){const _0x3400d4=_0x1acc48['results']['filter'](_0x46aaca=>!_0x46aaca['success']&&_0x46aaca['error']);_0x3400d4['length']>0x0&&(_0x457af6=_0x3400d4[0x0]['error']);}const _0x1c13bc=new Error(_0x457af6);_0x1c13bc['hasConflicts']=_0x1acc48['results']?.['some'](_0x2f2f0d=>_0x2f2f0d['conflict'])||![];throw _0x1c13bc;}return await _0x47f346['json']();},async 'getPullRequestInfo'(_0xbd5a93){if(!_0xbd5a93)throw new Error('Task\x20ID\x20is\x20required');const _0x3e90af=await fetch(API_BASE+'/tasks/'+_0xbd5a93+'/pull-request-info');if(!_0x3e90af['ok']){const _0x3ed8c2=await _0x3e90af['json']()['catch'](()=>({}));throw new Error(_0x3ed8c2['error']||_0x3ed8c2['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3e90af['statusText']);}return await _0x3e90af['json']();},async 'createPullRequests'(_0x15b7dd,_0x2ab332){if(!_0x15b7dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ab332||!Array['isArray'](_0x2ab332))throw new Error('repos\x20array\x20is\x20required');const _0x56391e=await fetch(API_BASE+'/tasks/'+_0x15b7dd+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2ab332})});if(!_0x56391e['ok']){const _0x4c12b2=await _0x56391e['json']()['catch'](()=>({}));let _0x4d4aea=_0x4c12b2['error']||_0x4c12b2['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x56391e['statusText'];if(_0x4c12b2['results']&&Array['isArray'](_0x4c12b2['results'])){const _0x2e3e2f=_0x4c12b2['results']['filter'](_0x32e730=>!_0x32e730['success']&&_0x32e730['error']);_0x2e3e2f['length']>0x0&&(_0x4d4aea=_0x2e3e2f[0x0]['error']);}throw new Error(_0x4d4aea);}return await _0x56391e['json']();},async 'syncRepos'(_0x3a803a){if(!_0x3a803a)throw new Error('Task\x20ID\x20is\x20required');const _0x2b21ca=await fetch(API_BASE+'/tasks/'+_0x3a803a+'/sync-repos',{'method':'POST'});if(!_0x2b21ca['ok']){const _0x210e55=await _0x2b21ca['json']()['catch'](()=>({}));throw new Error(_0x210e55['error']||_0x210e55['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2b21ca['statusText']);}return await _0x2b21ca['json']();},async 'getIbmiSyncInfo'(_0x4acbf8){if(!_0x4acbf8)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd36e=await fetch(API_BASE+'/tasks/'+_0x4acbf8+'/ibmi-sync-info');if(!_0x2dd36e['ok']){const _0x2e5ac7=await _0x2dd36e['json']()['catch'](()=>({}));throw new Error(_0x2e5ac7['error']||_0x2e5ac7['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2dd36e['json']();},async 'getSyncFiles'(_0x2ce93f){if(!_0x2ce93f)throw new Error('Task\x20ID\x20is\x20required');const _0x555c64=await fetch(API_BASE+'/tasks/'+_0x2ce93f+'/sync-to-ibmi/files');if(!_0x555c64['ok']){const _0x26c1b4=await _0x555c64['json']()['catch'](()=>({}));throw new Error(_0x26c1b4['error']||_0x26c1b4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x555c64['json']();},async 'syncToIbmi'(_0x1b7d8a,_0x1036ac,_0x160f1f=null,_0x521000=null,_0x1f4302=null){if(!_0x1b7d8a)throw new Error('Task\x20ID\x20is\x20required');const _0x250f5d={'library':_0x1036ac};if(_0x160f1f)_0x250f5d['user']=_0x160f1f;if(_0x521000)_0x250f5d['password']=_0x521000;if(_0x1f4302)_0x250f5d['files']=_0x1f4302;const _0x9230d1=await fetch(API_BASE+'/tasks/'+_0x1b7d8a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x250f5d)});if(!_0x9230d1['ok']){const _0x1ef749=await _0x9230d1['json']()['catch'](()=>({}));throw new Error(_0x1ef749['error']||_0x1ef749['message']||'Sync\x20failed');}return await _0x9230d1['json']();},async 'getIbmiSyncLog'(_0x397866){if(!_0x397866)throw new Error('Task\x20ID\x20is\x20required');const _0x695c=await fetch(API_BASE+'/tasks/'+_0x397866+'/ibmi-sync-log');if(!_0x695c['ok']){const _0x3a0dec=await _0x695c['json']()['catch'](()=>({}));throw new Error(_0x3a0dec['error']||_0x3a0dec['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x695c['json']();},async 'pullChanges'(_0x2933de){if(!_0x2933de)throw new Error('Task\x20ID\x20is\x20required');const _0x304c71=await fetch(API_BASE+'/tasks/'+_0x2933de+'/pull-changes',{'method':'POST'});if(!_0x304c71['ok']){const _0x5a53fb=await _0x304c71['json']()['catch'](()=>({}));throw new Error(_0x5a53fb['error']||_0x5a53fb['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x304c71['statusText']);}return await _0x304c71['json']();},async 'readFile'(_0x5218d7,_0x15ebd2){if(!_0x5218d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15ebd2)throw new Error('File\x20path\x20is\x20required');const _0x45ac75=await fetch(API_BASE+'/tasks/'+_0x5218d7+'/files?path='+encodeURIComponent(_0x15ebd2));if(!_0x45ac75['ok']){const _0x49b85c=await _0x45ac75['json']()['catch'](()=>({}));throw new Error(_0x49b85c['error']||_0x49b85c['message']||'Failed\x20to\x20read\x20file:\x20'+_0x45ac75['statusText']);}return await _0x45ac75['json']();},'getTaskFileDownloadUrl'(_0x13a371,_0x1ce86b){if(!_0x13a371)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ce86b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x13a371+'/files/download?path='+encodeURIComponent(_0x1ce86b);},async 'writeFile'(_0x1b2179,_0xd019d6,_0x3c9efe){if(!_0x1b2179)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd019d6)throw new Error('File\x20path\x20is\x20required');if(_0x3c9efe===undefined)throw new Error('Content\x20is\x20required');const _0x46deb0=await fetch(API_BASE+'/tasks/'+_0x1b2179+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd019d6,'content':_0x3c9efe})});if(!_0x46deb0['ok']){const _0x2dc115=await _0x46deb0['json']()['catch'](()=>({}));throw new Error(_0x2dc115['error']||_0x2dc115['message']||'Failed\x20to\x20write\x20file:\x20'+_0x46deb0['statusText']);}return await _0x46deb0['json']();},async 'uploadTaskFiles'(_0x3beb5c,_0x535cf0,_0x2b5edf){if(!_0x3beb5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x535cf0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2b5edf||_0x2b5edf['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x47fc4b=new FormData();_0x47fc4b['append']('targetDir',_0x535cf0);for(const _0x3b154b of _0x2b5edf){_0x47fc4b['append']('files',_0x3b154b,_0x3b154b['name']);}const _0x37b56d=await fetch(API_BASE+'/tasks/'+_0x3beb5c+'/files/upload',{'method':'POST','body':_0x47fc4b});if(!_0x37b56d['ok']){const _0x54fd37=await _0x37b56d['json']()['catch'](()=>({}));throw new Error(_0x54fd37['error']||_0x54fd37['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x37b56d['statusText']);}return await _0x37b56d['json']();},async 'createDirectory'(_0x208c20,_0x4b8221){if(!_0x208c20)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4b8221)throw new Error('Directory\x20path\x20is\x20required');const _0x54646b=await fetch(API_BASE+'/tasks/'+_0x208c20+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4b8221})});if(!_0x54646b['ok']){const _0x175e5c=await _0x54646b['json']()['catch'](()=>({}));throw new Error(_0x175e5c['error']||_0x175e5c['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x54646b['statusText']);}return await _0x54646b['json']();},async 'renamePath'(_0x1a536b,_0x15a1aa,_0x488b04){if(!_0x1a536b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x15a1aa)throw new Error('Source\x20path\x20is\x20required');if(!_0x488b04)throw new Error('Destination\x20path\x20is\x20required');const _0x486ab9=await fetch(API_BASE+'/tasks/'+_0x1a536b+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x15a1aa,'newPath':_0x488b04})});if(!_0x486ab9['ok']){const _0x38c4ab=await _0x486ab9['json']()['catch'](()=>({}));throw new Error(_0x38c4ab['error']||_0x38c4ab['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x486ab9['statusText']);}return await _0x486ab9['json']();},async 'deleteFile'(_0x284094,_0x28c735){if(!_0x284094)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28c735)throw new Error('File\x20path\x20is\x20required');const _0x5a273f=await fetch(API_BASE+'/tasks/'+_0x284094+'/files?path='+encodeURIComponent(_0x28c735),{'method':'DELETE'});if(!_0x5a273f['ok']){const _0x5d8bd9=await _0x5a273f['json']()['catch'](()=>({}));throw new Error(_0x5d8bd9['error']||_0x5d8bd9['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5a273f['statusText']);}return await _0x5a273f['json']();},async 'deleteDirectory'(_0x103219,_0x16e46a){if(!_0x103219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16e46a)throw new Error('Directory\x20path\x20is\x20required');const _0x4f0fe6=await fetch(API_BASE+'/tasks/'+_0x103219+'/files/directory?path='+encodeURIComponent(_0x16e46a),{'method':'DELETE'});if(!_0x4f0fe6['ok']){const _0x1fca04=await _0x4f0fe6['json']()['catch'](()=>({}));throw new Error(_0x1fca04['error']||_0x1fca04['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4f0fe6['statusText']);}return await _0x4f0fe6['json']();},async 'discardFile'(_0x201f71,_0x322427,_0x42941c){if(!_0x201f71)throw new Error('Task\x20ID\x20is\x20required');if(!_0x322427)throw new Error('File\x20path\x20is\x20required');if(!_0x42941c)throw new Error('Repository\x20path\x20is\x20required');const _0x49c4b3=await fetch(API_BASE+'/tasks/'+_0x201f71+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x322427,'repoPath':_0x42941c})});if(!_0x49c4b3['ok']){const _0x25fdc6=await _0x49c4b3['json']()['catch'](()=>({}));throw new Error(_0x25fdc6['error']||_0x25fdc6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x49c4b3['statusText']);}return await _0x49c4b3['json']();},async 'followUpTask'(_0x1c9922,_0x2673a4={}){if(!_0x1c9922)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2673a4['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x457954,_0xffb030={};if(_0x2673a4['files']&&_0x2673a4['files']['length']>0x0){const _0x11eeca=new FormData();_0x11eeca['append']('instructions',_0x2673a4['instructions']);for(const _0x374ecf of _0x2673a4['files']){_0x11eeca['append']('attachments',_0x374ecf);}_0x457954=_0x11eeca;}else _0xffb030['Content-Type']='application/json',_0x457954=JSON['stringify']({'instructions':_0x2673a4['instructions']});const _0xfcd7c6=await fetch(API_BASE+'/tasks/'+_0x1c9922+'/follow-up',{'method':'POST','headers':_0xffb030,'body':_0x457954});if(!_0xfcd7c6['ok']){const _0x17c23d=await _0xfcd7c6['json']()['catch'](()=>({}));throw new Error(_0x17c23d['error']||_0x17c23d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xfcd7c6['statusText']);}return await _0xfcd7c6['json']();},async 'getTaskRewindPoints'(_0x51fcaa){if(!_0x51fcaa)throw new Error('Task\x20ID\x20is\x20required');const _0x13d092=await fetch(API_BASE+'/tasks/'+_0x51fcaa+'/rewind-points');if(!_0x13d092['ok']){const _0x5d01b1=await _0x13d092['json']()['catch'](()=>({}));throw new Error(_0x5d01b1['error']||_0x5d01b1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13d092['statusText']);}return await _0x13d092['json']();},async 'rewindTask'(_0x1d36f4,_0x46e95e={}){if(!_0x1d36f4)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc985=Number['isInteger'](_0x46e95e['targetFollowUpCount'])?_0x46e95e['targetFollowUpCount']:0x0,_0x57cdb3={'targetFollowUpCount':_0x5dc985};typeof _0x46e95e['instructions']==='string'&&_0x46e95e['instructions']['trim']()&&(_0x57cdb3['instructions']=_0x46e95e['instructions']['trim']());typeof _0x46e95e['rewindFiles']==='boolean'&&(_0x57cdb3['rewindFiles']=_0x46e95e['rewindFiles']);const _0x1c7dcc=await fetch(API_BASE+'/tasks/'+_0x1d36f4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57cdb3)});if(!_0x1c7dcc['ok']){const _0x50cc4e=await _0x1c7dcc['json']()['catch'](()=>({}));throw new Error(_0x50cc4e['error']||_0x50cc4e['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x1c7dcc['statusText']);}return await _0x1c7dcc['json']();},async 'login'(_0xc206af,_0x92b686){const _0x5665c3=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc206af,'password':_0x92b686})});if(!_0x5665c3['ok']){const _0xa2afd8=await _0x5665c3['json']();throw new Error(_0xa2afd8['message']||'Login\x20failed');}return await _0x5665c3['json']();},async 'logout'(){const _0x16718c=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x16718c['ok']){const _0x471a58=await _0x16718c['json']();throw new Error(_0x471a58['message']||'Logout\x20failed');}return await _0x16718c['json']();},async 'getCurrentUser'(){const _0x438a2b=await fetch(API_BASE+'/auth/me');if(!_0x438a2b['ok'])throw new Error('Not\x20authenticated');const _0x3480eb=await _0x438a2b['json']();return _0x3480eb['user'];},async 'getRolesInfo'(){const _0x1df6fe=await fetch(API_BASE+'/users/roles');if(!_0x1df6fe['ok']){const _0x1224d6=await _0x1df6fe['json']();throw new Error(_0x1224d6['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1df6fe['json']();},async 'getUsers'(){const _0x569328=await fetch(API_BASE+'/users');if(!_0x569328['ok']){const _0x4c373f=await _0x569328['json']();throw new Error(_0x4c373f['message']||'Failed\x20to\x20get\x20users');}return await _0x569328['json']();},async 'getUser'(_0x14bedd){const _0x2e98d0=await fetch(API_BASE+'/users/'+_0x14bedd);if(!_0x2e98d0['ok']){const _0x2b3429=await _0x2e98d0['json']();throw new Error(_0x2b3429['message']||'Failed\x20to\x20get\x20user');}return await _0x2e98d0['json']();},async 'createUser'(_0x362102){const _0x5cf89d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x362102)});if(!_0x5cf89d['ok']){const _0x233dc0=await _0x5cf89d['json']();throw new Error(_0x233dc0['message']||'Failed\x20to\x20create\x20user');}return await _0x5cf89d['json']();},async 'updateUser'(_0x1d2c30,_0x31b12f){const _0x25a5d6=await fetch(API_BASE+'/users/'+_0x1d2c30,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31b12f)});if(!_0x25a5d6['ok']){const _0x1c3d88=await _0x25a5d6['json']();throw new Error(_0x1c3d88['message']||'Failed\x20to\x20update\x20user');}return await _0x25a5d6['json']();},async 'deleteUser'(_0x47dadc){const _0xdd6006=await fetch(API_BASE+'/users/'+_0x47dadc,{'method':'DELETE'});if(!_0xdd6006['ok']){const _0x14907f=await _0xdd6006['json']();throw new Error(_0x14907f['message']||'Failed\x20to\x20delete\x20user');}return await _0xdd6006['json']();},async 'stopAllContainers'(){const _0xe89d9a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2fe6f8=await _0xe89d9a['json']()['catch'](()=>({}));if(!_0xe89d9a['ok'])throw new Error(_0x2fe6f8['message']||_0x2fe6f8['error']||'Failed\x20to\x20stop\x20containers');return _0x2fe6f8;},async 'removeStoppedContainers'(){const _0x499e2b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4f70b4=await _0x499e2b['json']()['catch'](()=>({}));if(!_0x499e2b['ok'])throw new Error(_0x4f70b4['message']||_0x4f70b4['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4f70b4;},async 'pruneDockerResources'(){const _0x413eb6=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x10772a=await _0x413eb6['json']()['catch'](()=>({}));if(!_0x413eb6['ok'])throw new Error(_0x10772a['message']||_0x10772a['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x10772a;},async 'getUpdateSettings'(){const _0x169903=await fetch(API_BASE+'/health/update-settings'),_0x5e4a8a=await _0x169903['json']()['catch'](()=>({}));if(!_0x169903['ok'])throw new Error(_0x5e4a8a['message']||_0x5e4a8a['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5e4a8a;},async 'applyServerUpdate'(_0x4fc500){const _0x24c4ac=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x4fc500})}),_0x539366=await _0x24c4ac['json']()['catch'](()=>({}));if(!_0x24c4ac['ok']){const _0x435faf=new Error(_0x539366['message']||_0x539366['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x539366['output']!==undefined)_0x435faf['output']=_0x539366['output'];if(_0x539366['error']!==undefined)_0x435faf['commandError']=_0x539366['error'];throw _0x435faf;}return _0x539366;},async 'restartServer'(){const _0x36c59c=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x496aa5=await _0x36c59c['json']()['catch'](()=>({}));if(!_0x36c59c['ok'])throw new Error(_0x496aa5['message']||_0x496aa5['error']||'Failed\x20to\x20restart\x20server');return _0x496aa5;},async 'createPasswordToken'(_0x59ca27,_0x4dfc96='setup',_0x2cd5a2=![]){const _0x1580d8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59ca27,'type':_0x4dfc96,'sendEmail':_0x2cd5a2})});if(!_0x1580d8['ok']){const _0xca0c5=await _0x1580d8['json']();throw new Error(_0xca0c5['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1580d8['json']();},async 'getEmailConfig'(){const _0x5bce62=await fetch(API_BASE+'/password/email-config');if(!_0x5bce62['ok']){const _0x10c667=await _0x5bce62['json']();throw new Error(_0x10c667['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5bce62['json']();},async 'updateTaskName'(_0xc10d60,_0x173a73){const _0x1bdeb9=await fetch(API_BASE+'/tasks/'+_0xc10d60,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x173a73})});if(!_0x1bdeb9['ok']){const _0x33935a=await _0x1bdeb9['json']();throw new Error(_0x33935a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1bdeb9['json']();},async 'pinTask'(_0x3999e9,_0x8e739,_0x5a45b1=null){if(!_0x3999e9)throw new Error('Task\x20ID\x20is\x20required');const _0x17b923={'pinned':_0x8e739};_0x5a45b1&&_0x5a45b1['length']>0x0&&(_0x17b923['additionalTaskIds']=_0x5a45b1);const _0x2c119f=await fetch(API_BASE+'/tasks/'+_0x3999e9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17b923)});if(!_0x2c119f['ok']){const _0x572e08=await _0x2c119f['json']();throw new Error(_0x572e08['error']||'Failed\x20to\x20pin\x20task');}return await _0x2c119f['json']();},async 'setTaskWinner'(_0x45892a,_0x1641dc,_0x306735=[]){if(!_0x45892a)throw new Error('Task\x20ID\x20is\x20required');const _0x139709=await fetch(API_BASE+'/tasks/'+_0x45892a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1641dc,'siblings':_0x306735})});if(!_0x139709['ok']){const _0x4479b3=await _0x139709['json']();throw new Error(_0x4479b3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x139709['json']();},async 'setTaskLoser'(_0x3b699c,_0x27ff41){if(!_0x3b699c)throw new Error('Task\x20ID\x20is\x20required');const _0x83cd00=await fetch(API_BASE+'/tasks/'+_0x3b699c+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x27ff41})});if(!_0x83cd00['ok']){const _0x368afe=await _0x83cd00['json']();throw new Error(_0x368afe['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x83cd00['json']();},async 'createTaskGroup'(_0x37fc0d){const _0x512cc3=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37fc0d)});if(!_0x512cc3['ok']){const _0xb4e940=await _0x512cc3['json']();throw new Error(_0xb4e940['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x512cc3['json']();},async 'getTaskGroups'(_0x540e8c={}){const _0x26bda4=new URLSearchParams();if(_0x540e8c['userId'])_0x26bda4['set']('userId',String(_0x540e8c['userId']));if(_0x540e8c['status'])_0x26bda4['set']('status',String(_0x540e8c['status']));if(_0x540e8c['limit'])_0x26bda4['set']('limit',String(_0x540e8c['limit']));const _0xae2bcb=API_BASE+'/tasks/groups'+(_0x26bda4['toString']()?'?'+_0x26bda4['toString']():''),_0x65f93e=await fetch(_0xae2bcb);if(!_0x65f93e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x65f93e['json']();},async 'getTaskGroup'(_0x249986){const _0x24d517=await fetch(API_BASE+'/tasks/groups/'+_0x249986);if(!_0x24d517['ok']){const _0x2ce24e=await _0x24d517['json']();throw new Error(_0x2ce24e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x24d517['json']();},async 'updateTaskGroup'(_0x26122d,_0x8bc5e3,_0x30267e){const _0x193d2f=await fetch(API_BASE+'/tasks/'+_0x26122d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x8bc5e3,'groupIndex':_0x30267e})});if(!_0x193d2f['ok']){const _0x88fb55=await _0x193d2f['json']();throw new Error(_0x88fb55['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x193d2f['json']();},async 'removeTaskFromGroup'(_0x152976){return this['updateTaskGroup'](_0x152976,null,null);},async 'deleteTaskGroup'(_0x254cd0,_0x4d89ac=![]){const _0x49fefa=_0x4d89ac?'?deleteTasks=true':'',_0x295ce5=await fetch(API_BASE+'/tasks/groups/'+_0x254cd0+_0x49fefa,{'method':'DELETE'});if(!_0x295ce5['ok']){const _0x39c05f=await _0x295ce5['json']();throw new Error(_0x39c05f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5cd507,_0x4362ba){const _0x5c2ef7=await fetch(API_BASE+'/tasks/groups/'+_0x5cd507+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4362ba})});if(!_0x5c2ef7['ok']){const _0xf72933=await _0x5c2ef7['json']();throw new Error(_0xf72933['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5c2ef7['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x425dda){if(!_0x425dda)throw new Error('Task\x20ID\x20is\x20required');const _0x3d8ca2=await fetch(API_BASE+'/tasks/'+_0x425dda+'/comments');if(!_0x3d8ca2['ok']){const _0x2b7e82=await _0x3d8ca2['json']()['catch'](()=>({}));throw new Error(_0x2b7e82['error']||'Failed\x20to\x20get\x20comments');}return await _0x3d8ca2['json']();},async 'addComment'(_0x101b19,_0x25bee6){if(!_0x101b19)throw new Error('Task\x20ID\x20is\x20required');if(!_0x25bee6)throw new Error('Comment\x20content\x20is\x20required');const _0x590211=await fetch(API_BASE+'/tasks/'+_0x101b19+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25bee6})});if(!_0x590211['ok']){const _0x2686b1=await _0x590211['json']()['catch'](()=>({}));throw new Error(_0x2686b1['error']||'Failed\x20to\x20add\x20comment');}return await _0x590211['json']();},async 'updateComment'(_0xcdc24d,_0x2c2976,_0x3b9846){if(!_0xcdc24d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c2976)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3b9846)throw new Error('Comment\x20content\x20is\x20required');const _0x9f0c23=await fetch(API_BASE+'/tasks/'+_0xcdc24d+'/comments/'+_0x2c2976,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3b9846})});if(!_0x9f0c23['ok']){const _0x1b6f90=await _0x9f0c23['json']()['catch'](()=>({}));throw new Error(_0x1b6f90['error']||'Failed\x20to\x20update\x20comment');}return await _0x9f0c23['json']();},async 'deleteComment'(_0x2b4b08,_0x285d38){if(!_0x2b4b08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x285d38)throw new Error('Comment\x20ID\x20is\x20required');const _0x2f5854=await fetch(API_BASE+'/tasks/'+_0x2b4b08+'/comments/'+_0x285d38,{'method':'DELETE'});if(!_0x2f5854['ok']){const _0x3c2a24=await _0x2f5854['json']()['catch'](()=>({}));throw new Error(_0x3c2a24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2f5854['json']();},async 'createObjective'(_0x34cf44){const _0xbf3674={'objective':!![],'name':_0x34cf44['name']||'','environment':_0x34cf44['environment']||null,'agents':_0x34cf44['agents']||[],'branches':_0x34cf44['branches']||{},'isPinned':_0x34cf44['isPinned']||![],'parentObjectiveId':_0x34cf44['parentObjectiveId']||null,'env_vars':_0x34cf44['envVars']||{},'parameters':{'instructions':_0x34cf44['instructions']||''},'files':_0x34cf44['files']||[],'jira':_0x34cf44['jira']||null};return this['createTask'](_0xbf3674);},async 'updateObjective'(_0x2574b3,_0x35ca36,_0x6a4ef2=[],_0x53f79d=[]){let _0x74939f,_0x2a616a={};const _0x97da96={..._0x35ca36};_0x53f79d&&_0x53f79d['length']>0x0&&(_0x97da96['removeAttachments']=_0x53f79d);if(_0x6a4ef2&&_0x6a4ef2['length']>0x0){const _0x2c525c=new FormData();for(const [_0x1c0eea,_0x2f1d25]of Object['entries'](_0x97da96)){if(_0x2f1d25==null)continue;typeof _0x2f1d25==='object'?_0x2c525c['append'](_0x1c0eea,JSON['stringify'](_0x2f1d25)):_0x2c525c['append'](_0x1c0eea,String(_0x2f1d25));}for(const _0x52df5e of _0x6a4ef2){_0x2c525c['append']('attachments',_0x52df5e);}_0x74939f=_0x2c525c;}else _0x2a616a['Content-Type']='application/json',_0x74939f=JSON['stringify'](_0x97da96);const _0x450449=await fetch(API_BASE+'/tasks/'+_0x2574b3,{'method':'PATCH','headers':_0x2a616a,'body':_0x74939f});if(!_0x450449['ok']){const _0x1839eb=await _0x450449['json']();throw new Error(_0x1839eb['error']||'Failed\x20to\x20update\x20objective');}return await _0x450449['json']();},async 'deleteObjective'(_0x40c5cb){return this['deleteTask'](_0x40c5cb);},async 'launchObjective'(_0xf1ac85,_0x572636={}){const _0x3f5d21=await fetch(API_BASE+'/tasks/'+_0xf1ac85+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572636)});if(!_0x3f5d21['ok']){const _0x2beeaa=await _0x3f5d21['json']();throw new Error(_0x2beeaa['error']||'Failed\x20to\x20launch\x20objective');}return await _0x3f5d21['json']();},async 'getObjectiveAttachments'(_0x502939){return this['getTaskAttachments'](_0x502939);},async 'createJudgeTask'({environment:_0x20d4fe,judgeAgent:_0x4be713,groupId:_0x4db5b1,taskIds:_0x426187,judgeCustomInstructions:_0xadf2c6,isPinned:_0x31bc43}){const _0x2348c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x20d4fe,'judgeAgent':_0x4be713,'groupId':_0x4db5b1,'taskIds':_0x426187,'judgeCustomInstructions':_0xadf2c6,'isPinned':_0x31bc43})});if(!_0x2348c4['ok']){const _0x3fc757=await _0x2348c4['json']();throw new Error(_0x3fc757['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2348c4['json']();},async 'getJudgeTasks'(_0x1ed707){const _0x54037f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1ed707));if(!_0x54037f['ok']){const _0x101334=await _0x54037f['json']();throw new Error(_0x101334['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x54037f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xf9b284,_0x5bf6bc,_0x3e6a25=''){const _0x24d2a4=await fetch(API_BASE+'/tasks/'+_0xf9b284+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x5bf6bc,'customPreamble':_0x3e6a25})});if(!_0x24d2a4['ok']){const _0x585532=await _0x24d2a4['json']();throw new Error(_0x585532['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x24d2a4['json']();},async 'getJiraConfig'(){const _0x488fa5=await fetch(API_BASE+'/jira/config');if(!_0x488fa5['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x488fa5['json']();},async 'getJiraIssue'(_0x2288a5){const _0x56c718=await fetch(API_BASE+'/jira/issues/'+_0x2288a5);if(!_0x56c718['ok']){const _0x36ecb3=await _0x56c718['json']()['catch'](()=>({}));throw new Error(_0x36ecb3['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x56c718['statusText']);}return await _0x56c718['json']();},async 'searchJiraIssues'(_0x193dc3,_0x2d9904=0x14){const _0x52c41a=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x193dc3,'maxResults':_0x2d9904})});if(!_0x52c41a['ok']){const _0x1b5c5f=await _0x52c41a['json']()['catch'](()=>({}));throw new Error(_0x1b5c5f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x52c41a['statusText']);}return await _0x52c41a['json']();},async 'postJiraComment'(_0x814ef6,_0x5146ca){const _0x34a255=await fetch(API_BASE+'/jira/issues/'+_0x814ef6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5146ca})});if(!_0x34a255['ok']){const _0x15dd0c=await _0x34a255['json']()['catch'](()=>({}));throw new Error(_0x15dd0c['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x34a255['statusText']);}return await _0x34a255['json']();},async 'getJiraComments'(_0x17961b){const _0x3d82a4=await fetch(API_BASE+'/jira/issues/'+_0x17961b+'/comments');if(!_0x3d82a4['ok']){const _0x229a51=await _0x3d82a4['json']()['catch'](()=>({}));throw new Error(_0x229a51['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d82a4['statusText']);}return await _0x3d82a4['json']();},async 'promptParameter'({environment:_0x2b7286,command:_0x16056f,parser:parser='json'}){const _0x5508dd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2b7286,'command':_0x16056f,'parser':parser})});if(!_0x5508dd['ok']){const _0x28ea71=await _0x5508dd['json']()['catch'](()=>({}));throw new Error(_0x28ea71['message']||_0x28ea71['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5508dd['statusText']);}return await _0x5508dd['json']();},async 'promptParameterStream'(_0x45d240,_0x229483){const _0x47e4c0=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45d240)});if(!_0x47e4c0['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x47e4c0['statusText']);const _0x5d6456=_0x47e4c0['body']['getReader'](),_0xf8c532=new TextDecoder();let _0x5e6e50='';return new Promise((_0x567392,_0x49f9fd)=>{const _0x400fd8=async()=>{try{const {done:_0xc51adb,value:_0x179092}=await _0x5d6456['read']();if(_0xc51adb)return;_0x5e6e50+=_0xf8c532['decode'](_0x179092,{'stream':!![]});const _0x3f907c=_0x5e6e50['split']('\x0a\x0a');_0x5e6e50=_0x3f907c['pop']()||'';for(const _0x33aef0 of _0x3f907c){if(!_0x33aef0['trim']())continue;const _0x163c46=_0x33aef0['split']('\x0a');let _0x58f512='message',_0x5eb992='';for(const _0x1af229 of _0x163c46){if(_0x1af229['startsWith']('event:'))_0x58f512=_0x1af229['substring'](0x6)['trim']();else _0x1af229['startsWith']('data:')&&(_0x5eb992=_0x1af229['substring'](0x5)['trim']());}if(!_0x5eb992)continue;try{const _0x48963d=JSON['parse'](_0x5eb992);if(_0x58f512==='progress'&&_0x229483)_0x229483(_0x48963d['stage'],_0x48963d['message']);else{if(_0x58f512==='result'){_0x567392(_0x48963d);return;}else{if(_0x58f512==='error'){let _0x4e873a=_0x48963d['message']||_0x48963d['error']||'Prompt\x20command\x20failed';_0x48963d['rawOutput']&&(_0x4e873a+='\x0a\x0aRaw\x20output:\x0a'+_0x48963d['rawOutput']);_0x49f9fd(new Error(_0x4e873a));return;}}}}catch(_0x3c7ffb){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3c7ffb),console['error']('Event\x20type:',_0x58f512),console['error']('Event\x20data:',_0x5eb992),console['error']('First\x20200\x20chars:',_0x5eb992['substring'](0x0,0xc8)),_0x49f9fd(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3c7ffb['message']+'\x0a\x0aData:\x20'+_0x5eb992['substring'](0x0,0x1f4)));return;}}_0x400fd8();}catch(_0x29de8e){_0x49f9fd(_0x29de8e);}};_0x400fd8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4174e2){const _0x286dc7=await fetch(''+API_BASE+_0x4174e2);if(!_0x286dc7['ok']){const _0x4bb1b0=await _0x286dc7['json']()['catch'](()=>({'error':_0x286dc7['statusText']})),_0x5a3fd7=new Error(_0x4bb1b0['error']||_0x4bb1b0['message']||_0x286dc7['statusText']);if(_0x4bb1b0['detail']!==undefined)_0x5a3fd7['detail']=_0x4bb1b0['detail'];throw _0x5a3fd7;}return await _0x286dc7['json']();},async 'post'(_0x4f34c5,_0x5da428){const _0x13bda6=await fetch(''+API_BASE+_0x4f34c5,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da428)});if(!_0x13bda6['ok']){const _0x37bf2d=await _0x13bda6['json']()['catch'](()=>({'error':_0x13bda6['statusText']})),_0x4a5394=new Error(_0x37bf2d['error']||_0x37bf2d['message']||_0x13bda6['statusText']);if(_0x37bf2d['detail']!==undefined)_0x4a5394['detail']=_0x37bf2d['detail'];throw _0x4a5394;}return await _0x13bda6['json']();},async 'put'(_0x4a6f64,_0x3a2a27){const _0x127885=await fetch(''+API_BASE+_0x4a6f64,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2a27)});if(!_0x127885['ok']){const _0x20dbd8=await _0x127885['json']()['catch'](()=>({'error':_0x127885['statusText']})),_0x531c9b=new Error(_0x20dbd8['error']||_0x20dbd8['message']||_0x127885['statusText']);if(_0x20dbd8['detail']!==undefined)_0x531c9b['detail']=_0x20dbd8['detail'];throw _0x531c9b;}return await _0x127885['json']();},async 'delete'(_0x4119e6,_0x3b6e58){const _0x4f59bb={'method':'DELETE'};_0x3b6e58&&(_0x4f59bb['headers']={'Content-Type':'application/json'},_0x4f59bb['body']=JSON['stringify'](_0x3b6e58));const _0x478eec=await fetch(''+API_BASE+_0x4119e6,_0x4f59bb);if(!_0x478eec['ok']){const _0x320da2=await _0x478eec['json']()['catch'](()=>({'error':_0x478eec['statusText']})),_0x3adb10=new Error(_0x320da2['error']||_0x320da2['message']||_0x478eec['statusText']);if(_0x320da2['detail']!==undefined)_0x3adb10['detail']=_0x320da2['detail'];throw _0x3adb10;}return await _0x478eec['json']();},async 'getSkills'(){const _0x4a4a57=await fetch(API_BASE+'/skills');if(!_0x4a4a57['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x4a4a57['statusText']);return await _0x4a4a57['json']();},async 'getSkill'(_0x22aa44){const _0x4fc23d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x22aa44));if(!_0x4fc23d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4fc23d['statusText']);return await _0x4fc23d['json']();},async 'createSkill'(_0x5c0921){const _0x367a5b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c0921)});if(!_0x367a5b['ok']){const _0x4017e3=await _0x367a5b['json']()['catch'](()=>({'error':_0x367a5b['statusText']})),_0x13211c=new Error(_0x4017e3['error']||_0x4017e3['message']||_0x367a5b['statusText']);if(_0x4017e3['detail']!==undefined)_0x13211c['detail']=_0x4017e3['detail'];throw _0x13211c;}return await _0x367a5b['json']();},async 'updateSkill'(_0x5104b7,_0x38e2b9){const _0x3f6718=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5104b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38e2b9)});if(!_0x3f6718['ok']){const _0x4321ab=await _0x3f6718['json']()['catch'](()=>({'error':_0x3f6718['statusText']})),_0x5854de=new Error(_0x4321ab['error']||_0x4321ab['message']||_0x3f6718['statusText']);if(_0x4321ab['detail']!==undefined)_0x5854de['detail']=_0x4321ab['detail'];throw _0x5854de;}return await _0x3f6718['json']();},async 'deleteSkill'(_0xd9c72){const _0x11da37=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd9c72),{'method':'DELETE'});if(!_0x11da37['ok']){const _0x1432f7=await _0x11da37['json']()['catch'](()=>({'error':_0x11da37['statusText']})),_0x48668b=new Error(_0x1432f7['error']||_0x1432f7['message']||_0x11da37['statusText']);if(_0x1432f7['detail']!==undefined)_0x48668b['detail']=_0x1432f7['detail'];throw _0x48668b;}return await _0x11da37['json']();},async 'getSkillFile'(_0x54458c,_0x1a2c6e){const _0x1915f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x54458c)+'/files/'+_0x1a2c6e);if(!_0x1915f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x1915f4['statusText']);return await _0x1915f4['json']();},async 'saveSkillFile'(_0x15805f,_0x147db8,_0xc15e6a){const _0x5a7ad9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x15805f)+'/files/'+_0x147db8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc15e6a})});if(!_0x5a7ad9['ok']){const _0x1f518f=await _0x5a7ad9['json']()['catch'](()=>({'error':_0x5a7ad9['statusText']})),_0x1503cc=new Error(_0x1f518f['error']||_0x1f518f['message']||_0x5a7ad9['statusText']);if(_0x1f518f['detail']!==undefined)_0x1503cc['detail']=_0x1f518f['detail'];throw _0x1503cc;}return await _0x5a7ad9['json']();},async 'deleteSkillFile'(_0x558393,_0x4e53c8){const _0x26820b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x558393)+'/files/'+_0x4e53c8,{'method':'DELETE'});if(!_0x26820b['ok']){const _0x19a51c=await _0x26820b['json']()['catch'](()=>({'error':_0x26820b['statusText']})),_0x3c0e2b=new Error(_0x19a51c['error']||_0x19a51c['message']||_0x26820b['statusText']);if(_0x19a51c['detail']!==undefined)_0x3c0e2b['detail']=_0x19a51c['detail'];throw _0x3c0e2b;}return await _0x26820b['json']();},async 'pullSkills'(){const _0x167da3=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x167da3['ok']){const _0x492f07=await _0x167da3['json']()['catch'](()=>({'error':_0x167da3['statusText']})),_0x467a28=new Error(_0x492f07['error']||_0x492f07['message']||_0x167da3['statusText']);if(_0x492f07['detail']!==undefined)_0x467a28['detail']=_0x492f07['detail'];throw _0x467a28;}return await _0x167da3['json']();},async 'commitSkills'(_0x12f10e,_0x48eaa0={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x48eaa0,_0x4eec54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x12f10e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4eec54['ok']){const _0x3bebfb=await _0x4eec54['json']()['catch'](()=>({'error':_0x4eec54['statusText']})),_0x576c9e=new Error(_0x3bebfb['error']||_0x3bebfb['message']||_0x4eec54['statusText']);if(_0x3bebfb['detail']!==undefined)_0x576c9e['detail']=_0x3bebfb['detail'];throw _0x576c9e;}return await _0x4eec54['json']();},async 'discardSkillsChanges'(){const _0x409d89=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x409d89['ok']){const _0x319ccb=await _0x409d89['json']()['catch'](()=>({'error':_0x409d89['statusText']})),_0x480abf=new Error(_0x319ccb['error']||_0x319ccb['message']||_0x409d89['statusText']);if(_0x319ccb['detail']!==undefined)_0x480abf['detail']=_0x319ccb['detail'];throw _0x480abf;}return await _0x409d89['json']();},async 'getSkillCatalog'(){const _0x3928e2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x3928e2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x3928e2['statusText']);return await _0x3928e2['json']();},async 'getImportedSkillsRegistry'(){const _0x3f8328=await fetch(API_BASE+'/external-skills/registry');if(!_0x3f8328['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3f8328['statusText']);return await _0x3f8328['json']();},async 'importCatalogSkill'(_0x3326cb){const _0x494d22=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3326cb})});if(!_0x494d22['ok']){const _0x3b4e78=await _0x494d22['json']()['catch'](()=>({'error':_0x494d22['statusText']})),_0x46f831=new Error(_0x3b4e78['error']||_0x3b4e78['message']||_0x494d22['statusText']);if(_0x3b4e78['detail']!==undefined)_0x46f831['detail']=_0x3b4e78['detail'];throw _0x46f831;}return await _0x494d22['json']();},async 'importSkillFromGit'(_0x14a12b,_0x291452,_0x2138be='main',_0x545f7d=null){const _0x41eb57=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14a12b,'skillPath':_0x291452,'branch':_0x2138be,'skillId':_0x545f7d})});if(!_0x41eb57['ok']){const _0x234ae4=await _0x41eb57['json']()['catch'](()=>({'error':_0x41eb57['statusText']})),_0x13ea58=new Error(_0x234ae4['error']||_0x234ae4['message']||_0x41eb57['statusText']);if(_0x234ae4['detail']!==undefined)_0x13ea58['detail']=_0x234ae4['detail'];throw _0x13ea58;}return await _0x41eb57['json']();},async 'probeMarketplace'(_0x447443,_0x6010a3='main'){const _0xfe87fc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x447443,'branch':_0x6010a3})});if(!_0xfe87fc['ok']){const _0x2c047e=await _0xfe87fc['json']()['catch'](()=>({'error':_0xfe87fc['statusText']})),_0x15d401=new Error(_0x2c047e['error']||_0x2c047e['message']||_0xfe87fc['statusText']);if(_0x2c047e['detail']!==undefined)_0x15d401['detail']=_0x2c047e['detail'];throw _0x15d401;}return await _0xfe87fc['json']();},async 'importMarketplaceBundle'(_0x779a12,_0x1f4870,_0x1262af,_0xda3ed4=null){const _0x204083=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x779a12,'branch':_0x1f4870,'bundleId':_0x1262af,'selectedSkills':_0xda3ed4})});if(!_0x204083['ok']){const _0x229d47=await _0x204083['json']()['catch'](()=>({'error':_0x204083['statusText']})),_0x501bbd=new Error(_0x229d47['error']||_0x229d47['message']||_0x204083['statusText']);if(_0x229d47['detail']!==undefined)_0x501bbd['detail']=_0x229d47['detail'];throw _0x501bbd;}return await _0x204083['json']();},async 'importSkillFromFolder'(_0xe926a7,_0x1dc433=null){const _0x206399=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xe926a7,'skillId':_0x1dc433})});if(!_0x206399['ok']){const _0xb853c7=await _0x206399['json']()['catch'](()=>({'error':_0x206399['statusText']})),_0x3d8037=new Error(_0xb853c7['error']||_0xb853c7['message']||_0x206399['statusText']);if(_0xb853c7['detail']!==undefined)_0x3d8037['detail']=_0xb853c7['detail'];throw _0x3d8037;}return await _0x206399['json']();},async 'importSkillFromNpm'(_0x40070f,_0x1ae6b0='latest',_0x1b5954=null,_0x49d0ec=null){const _0x36fc1f=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x40070f,'version':_0x1ae6b0,'skillId':_0x1b5954,'registry':_0x49d0ec})});if(!_0x36fc1f['ok']){const _0x754a41=await _0x36fc1f['json']()['catch'](()=>({'error':_0x36fc1f['statusText']})),_0x94f1e4=new Error(_0x754a41['error']||_0x754a41['message']||_0x36fc1f['statusText']);if(_0x754a41['detail']!==undefined)_0x94f1e4['detail']=_0x754a41['detail'];throw _0x94f1e4;}return await _0x36fc1f['json']();},async 'checkSkillUpdates'(_0x2a4bbd){const _0x3b158f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2a4bbd)+'/check-updates',{'method':'POST'});if(!_0x3b158f['ok']){const _0x1a8e27=await _0x3b158f['json']()['catch'](()=>({'error':_0x3b158f['statusText']})),_0x5af517=new Error(_0x1a8e27['error']||_0x1a8e27['message']||_0x3b158f['statusText']);if(_0x1a8e27['detail']!==undefined)_0x5af517['detail']=_0x1a8e27['detail'];throw _0x5af517;}return await _0x3b158f['json']();},async 'updateExternalSkill'(_0x3443b5){const _0x1e31e6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3443b5)+'/update',{'method':'POST'});if(!_0x1e31e6['ok']){const _0x310b18=await _0x1e31e6['json']()['catch'](()=>({'error':_0x1e31e6['statusText']})),_0x3880c4=new Error(_0x310b18['error']||_0x310b18['message']||_0x1e31e6['statusText']);if(_0x310b18['detail']!==undefined)_0x3880c4['detail']=_0x310b18['detail'];throw _0x3880c4;}return await _0x1e31e6['json']();},async 'updateSkillFlags'(_0xae6a9c,_0x307780){const _0x32f2a8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xae6a9c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x307780})});if(!_0x32f2a8['ok']){const _0x2834f3=await _0x32f2a8['json']()['catch'](()=>({'error':_0x32f2a8['statusText']})),_0x768e71=new Error(_0x2834f3['error']||_0x2834f3['message']||_0x32f2a8['statusText']);if(_0x2834f3['detail']!==undefined)_0x768e71['detail']=_0x2834f3['detail'];throw _0x768e71;}return await _0x32f2a8['json']();},async 'removeFromImportedRegistry'(_0x36f4d9){const _0x2072a4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x36f4d9)+'/registry',{'method':'DELETE'});if(!_0x2072a4['ok']){const _0xd027ec=await _0x2072a4['json']()['catch'](()=>({'error':_0x2072a4['statusText']})),_0x369d37=new Error(_0xd027ec['error']||_0xd027ec['message']||_0x2072a4['statusText']);if(_0xd027ec['detail']!==undefined)_0x369d37['detail']=_0xd027ec['detail'];throw _0x369d37;}return await _0x2072a4['json']();},async 'getTeams'(){const _0x12c499=await fetch(API_BASE+'/teams');if(!_0x12c499['ok']){const _0x2dc0bc=await _0x12c499['json']()['catch'](()=>({'message':_0x12c499['statusText']}));throw new Error(_0x2dc0bc['message']||'Failed\x20to\x20get\x20teams');}return await _0x12c499['json']();},async 'getTeam'(_0x2d5bb6){const _0x5b04ae=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d5bb6));if(!_0x5b04ae['ok']){const _0x19c056=await _0x5b04ae['json']()['catch'](()=>({'message':_0x5b04ae['statusText']}));throw new Error(_0x19c056['message']||'Failed\x20to\x20get\x20team');}return await _0x5b04ae['json']();},async 'createTeam'(_0x226aff){const _0x450836=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x226aff)});if(!_0x450836['ok']){const _0x34de2f=await _0x450836['json']()['catch'](()=>({'message':_0x450836['statusText']}));throw new Error(_0x34de2f['message']||'Failed\x20to\x20create\x20team');}return await _0x450836['json']();},async 'updateTeam'(_0x1f7f3b,_0x3ebd9d){const _0x2a2f8e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1f7f3b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ebd9d)});if(!_0x2a2f8e['ok']){const _0x5ebe5f=await _0x2a2f8e['json']()['catch'](()=>({'message':_0x2a2f8e['statusText']}));throw new Error(_0x5ebe5f['message']||'Failed\x20to\x20update\x20team');}return await _0x2a2f8e['json']();},async 'deleteTeam'(_0x62bdfa){const _0x175167=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x62bdfa),{'method':'DELETE'});if(!_0x175167['ok']){const _0x1cf66a=await _0x175167['json']()['catch'](()=>({'message':_0x175167['statusText']}));throw new Error(_0x1cf66a['message']||'Failed\x20to\x20delete\x20team');}return await _0x175167['json']();},async 'addTeamMember'(_0x3949f3,_0x5360a2){const _0x44b09d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3949f3)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5360a2})});if(!_0x44b09d['ok']){const _0x59ee6b=await _0x44b09d['json']()['catch'](()=>({'message':_0x44b09d['statusText']}));throw new Error(_0x59ee6b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x44b09d['json']();},async 'removeTeamMember'(_0x54214f,_0x15123a){const _0x812414=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x54214f)+'/members/'+encodeURIComponent(_0x15123a),{'method':'DELETE'});if(!_0x812414['ok']){const _0x41e763=await _0x812414['json']()['catch'](()=>({'message':_0x812414['statusText']}));throw new Error(_0x41e763['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x812414['json']();},async 'getBindings'(_0x4a6b06={}){const _0x2386ff=new URLSearchParams();if(_0x4a6b06['resource_type'])_0x2386ff['set']('resource_type',_0x4a6b06['resource_type']);if(_0x4a6b06['resource_id'])_0x2386ff['set']('resource_id',_0x4a6b06['resource_id']);if(_0x4a6b06['subject_type'])_0x2386ff['set']('subject_type',_0x4a6b06['subject_type']);if(_0x4a6b06['subject_id'])_0x2386ff['set']('subject_id',_0x4a6b06['subject_id']);const _0x413168=_0x2386ff['toString'](),_0x28374b=await fetch(API_BASE+'/bindings'+(_0x413168?'?'+_0x413168:''));if(!_0x28374b['ok']){const _0x3829de=await _0x28374b['json']()['catch'](()=>({'message':_0x28374b['statusText']}));throw new Error(_0x3829de['message']||'Failed\x20to\x20get\x20bindings');}return await _0x28374b['json']();},async 'createBinding'(_0x433510){const _0xa08cf7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x433510)});if(!_0xa08cf7['ok']){const _0x45eb72=await _0xa08cf7['json']()['catch'](()=>({'message':_0xa08cf7['statusText']}));throw new Error(_0x45eb72['message']||'Failed\x20to\x20create\x20binding');}return await _0xa08cf7['json']();},async 'updateBinding'(_0x1a8186,_0xf149fd){const _0xd0a4f8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1a8186),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf149fd)});if(!_0xd0a4f8['ok']){const _0x52d5c2=await _0xd0a4f8['json']()['catch'](()=>({'message':_0xd0a4f8['statusText']}));throw new Error(_0x52d5c2['message']||'Failed\x20to\x20update\x20binding');}return await _0xd0a4f8['json']();},async 'deleteBinding'(_0x594244){const _0x5eb5d2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x594244),{'method':'DELETE'});if(!_0x5eb5d2['ok']){const _0x504d01=await _0x5eb5d2['json']()['catch'](()=>({'message':_0x5eb5d2['statusText']}));throw new Error(_0x504d01['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5eb5d2['json']();},async 'getRoleDefinitions'(){const _0x293f31=await fetch(API_BASE+'/roles');if(!_0x293f31['ok']){const _0x1a1380=await _0x293f31['json']()['catch'](()=>({'message':_0x293f31['statusText']}));throw new Error(_0x1a1380['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x293f31['json']();},async 'getRoleDefinition'(_0x7b7072){const _0x570b58=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x7b7072));if(!_0x570b58['ok']){const _0x886a34=await _0x570b58['json']()['catch'](()=>({'message':_0x570b58['statusText']}));throw new Error(_0x886a34['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x570b58['json']();},async 'createRoleDefinition'(_0x5c6c61){const _0x43bd5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c6c61)});if(!_0x43bd5e['ok']){const _0x27a19a=await _0x43bd5e['json']()['catch'](()=>({'message':_0x43bd5e['statusText']}));throw new Error(_0x27a19a['message']||_0x27a19a['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x43bd5e['json']();},async 'updateRoleDefinition'(_0x3ec1fa,_0x431a43){const _0x4f06f7=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3ec1fa),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x431a43)});if(!_0x4f06f7['ok']){const _0x3ba72a=await _0x4f06f7['json']()['catch'](()=>({'message':_0x4f06f7['statusText']}));throw new Error(_0x3ba72a['message']||_0x3ba72a['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f06f7['json']();},async 'deleteRoleDefinition'(_0x40229c){const _0x50d7bb=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x40229c),{'method':'DELETE'});if(!_0x50d7bb['ok']){const _0x41f741=await _0x50d7bb['json']()['catch'](()=>({'message':_0x50d7bb['statusText']}));throw new Error(_0x41f741['message']||_0x41f741['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x50d7bb['json']();},async 'getAvailablePermissions'(){const _0x599cd6=await fetch(API_BASE+'/roles/available-permissions');if(!_0x599cd6['ok']){const _0x45f13b=await _0x599cd6['json']()['catch'](()=>({'message':_0x599cd6['statusText']}));throw new Error(_0x45f13b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x599cd6['json']();},async 'getGitProviderAllowedTeams'(_0x36b180){const _0x3014e3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x36b180)+'/allowed-teams');if(!_0x3014e3['ok']){const _0x290313=await _0x3014e3['json']()['catch'](()=>({'message':_0x3014e3['statusText']}));throw new Error(_0x290313['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3014e3['json']();},async 'setGitProviderAllowedTeams'(_0xb01362,_0x11a4dc){const _0x3446c7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xb01362)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11a4dc})});if(!_0x3446c7['ok']){const _0x4044cc=await _0x3446c7['json']()['catch'](()=>({'message':_0x3446c7['statusText']}));throw new Error(_0x4044cc['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3446c7['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x48a3b1=toastState['baseBottom'];toastState['toasts']['forEach'](_0xbb9e6c=>{_0xbb9e6c['el']['style']['bottom']=_0x48a3b1+'px';const _0x4aa18c=_0xbb9e6c['el']['offsetHeight']||toastState['defaultHeight'];_0x48a3b1+=_0x4aa18c+toastState['gap'];});});}function removeToastById(_0x380496){const _0x1557eb=toastState['toasts']['findIndex'](_0x46260e=>_0x46260e['id']===_0x380496);if(_0x1557eb===-0x1)return;const _0x175461=toastState['toasts'][_0x1557eb];if(_0x175461['timeoutId'])clearTimeout(_0x175461['timeoutId']);_0x175461['el']['classList']['remove']('show'),setTimeout(()=>_0x175461['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x1557eb,0x1),repositionAllToasts();}function registerToast(_0x4bce33){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4bce33),repositionAllToasts(),_0x4bce33['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x3623ff){if(_0x3623ff===null||_0x3623ff===undefined)return'';return String(_0x3623ff)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x2635ea,_0x2ea092){if(_0x2635ea&&typeof _0x2635ea==='object'&&!Array['isArray'](_0x2635ea))return{'code':typeof _0x2635ea['text']==='string'?_0x2635ea['text']:'','language':typeof _0x2635ea['lang']==='string'?_0x2635ea['lang']:''};return{'code':typeof _0x2635ea==='string'?_0x2635ea:'','language':typeof _0x2ea092==='string'?_0x2ea092:''};}function buildMermaidBlock(_0x4cc8){const _0x3d02fc=String(_0x4cc8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x3d02fc))+'\x22>'+escapeHtmlValue(_0x3d02fc)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x27a8fc=new marked['Renderer'](),_0x1d8cb6=_0x27a8fc['code']['bind'](_0x27a8fc);return _0x27a8fc['code']=function(_0x15a85f,_0x7e05d7,..._0x379a87){const {code:_0x3b5e83,language:_0x2f640a}=getMarkdownCodeBlockPayload(_0x15a85f,_0x7e05d7),_0x55976f=String(_0x2f640a||'')['trim']()['toLowerCase']();if(_0x55976f==='mermaid')return buildMermaidBlock(_0x3b5e83);const _0x25c01c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x25c01c&&_0x55976f)try{const _0x3c0be7=_0x25c01c['getLanguage'](_0x55976f)?_0x55976f:'plaintext',_0x35c232=_0x25c01c['highlight'](_0x3b5e83,{'language':_0x3c0be7})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x55976f)+'\x22>'+_0x35c232+'</code></pre>';}catch(_0x43dd38){console['error']('Syntax\x20highlighting\x20error:',_0x43dd38);}return _0x1d8cb6(_0x15a85f,_0x7e05d7,..._0x379a87);},sharedMarkedRenderer=_0x27a8fc,_0x27a8fc;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x1d8c8b=window['mermaid'];if(!_0x1d8c8b||typeof _0x1d8c8b['initialize']!=='function')return _0x1d8c8b||null;return _0x1d8c8b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1d8c8b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4a9401,_0x467c70)=>{const _0xbd0c45=()=>_0x4a9401(configureMermaidInstance()),_0x9c4813=()=>{mermaidLoadPromise=null,_0x467c70(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x12342a=document['getElementById'](MERMAID_SCRIPT_ID);!_0x12342a&&(_0x12342a=document['createElement']('script'),_0x12342a['id']=MERMAID_SCRIPT_ID,_0x12342a['src']=MERMAID_SCRIPT_SRC,_0x12342a['async']=!![],document['head']['appendChild'](_0x12342a));if(window['mermaid']){_0xbd0c45();return;}_0x12342a['addEventListener']('load',_0xbd0c45,{'once':!![]}),_0x12342a['addEventListener']('error',_0x9c4813,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e4a86){const _0x4c9c93=_0x3e4a86['getAttribute']('data-mermaid-source');if(!_0x4c9c93)return null;let _0x3fbf5f=_0x4c9c93;try{_0x3fbf5f=decodeURIComponent(_0x4c9c93);}catch{}return _0x3e4a86['textContent']=_0x3fbf5f,_0x3e4a86['removeAttribute']('data-processed'),_0x3e4a86['removeAttribute']('aria-roledescription'),_0x3e4a86['removeAttribute']('role'),_0x3e4a86['removeAttribute']('aria-label'),_0x3fbf5f;}function collectMermaidNodes(_0x3e9e3d,_0x57670f){if(!(_0x3e9e3d instanceof Element))return;_0x3e9e3d['matches']('.mermaid[data-mermaid-source]')&&_0x57670f['add'](_0x3e9e3d),_0x3e9e3d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13b148=>{_0x57670f['add'](_0x13b148);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2bb4a3=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2233f1=>setTimeout(_0x2233f1,0x0);_0x2bb4a3(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x54611d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x54611d);});});}function queueMermaidRender(_0x1f6924){const _0x37f4ec=new Set();_0x1f6924 instanceof Document||_0x1f6924 instanceof DocumentFragment?_0x1f6924['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2412d7=>_0x37f4ec['add'](_0x2412d7)):collectMermaidNodes(_0x1f6924,_0x37f4ec);if(_0x37f4ec['size']===0x0)return;_0x37f4ec['forEach'](_0x40a4e4=>pendingMermaidNodes['add'](_0x40a4e4)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x40ea77=Array['from'](pendingMermaidNodes)['filter'](_0x252ffb=>_0x252ffb['isConnected']);pendingMermaidNodes['clear']();if(_0x40ea77['length']===0x0)return;const _0x22104a=await loadMermaid();if(!_0x22104a)return;configureMermaidInstance();const _0x3aa285=getMermaidTheme();for(const _0x482886 of _0x40ea77){const _0xeffa27=_0x482886['getAttribute']('data-mermaid-source');if(!_0xeffa27)continue;const _0x3e7fc2=_0x482886['getAttribute']('data-processed')==='true';if(_0x3e7fc2&&_0x482886['dataset']['mermaidTheme']===_0x3aa285)continue;restoreMermaidSource(_0x482886);try{if(typeof _0x22104a['run']==='function')await _0x22104a['run']({'nodes':[_0x482886]});else typeof _0x22104a['init']==='function'&&_0x22104a['init'](undefined,[_0x482886]);_0x482886['dataset']['mermaidTheme']=_0x3aa285,delete _0x482886['dataset']['mermaidError'];}catch(_0xadfc5f){console['error']('Mermaid\x20render\x20failed:',_0xadfc5f),restoreMermaidSource(_0x482886),_0x482886['dataset']['mermaidError']='true',delete _0x482886['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2bc7de=>{_0x2bc7de['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x2bc7de);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x463f47=>{_0x463f47['forEach'](_0x4ee054=>{_0x4ee054['addedNodes']['forEach'](_0x15d750=>{_0x15d750['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x15d750);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x3a839e){const _0x38834f=new Date(_0x3a839e),_0x6640f6=new Date(),_0x5d49de=_0x6640f6-_0x38834f,_0x1bd437=Math['floor'](_0x5d49de/0x3e8),_0x185630=Math['floor'](_0x1bd437/0x3c),_0xa186d8=Math['floor'](_0x185630/0x3c),_0x347321=Math['floor'](_0xa186d8/0x18);if(_0x1bd437<0x3c)return'now';if(_0x185630<0x3c)return _0x185630+'m\x20ago';if(_0xa186d8<0x18)return _0xa186d8+'h\x20ago';return _0x347321+'d\x20ago';},'getStatusIcon'(_0x54ad65){switch(_0x54ad65){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x45bc1c){switch(_0x45bc1c){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x5d30ec,_0x332cd3=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1435ca={};_0x1435ca['text/plain']=new Blob([_0x5d30ec],{'type':'text/plain'});_0x332cd3&&(_0x1435ca['text/html']=new Blob([_0x332cd3],{'type':'text/html'}));const _0x1f7394=new ClipboardItem(_0x1435ca);return await navigator['clipboard']['write']([_0x1f7394]),!![];}catch(_0x1ad11b){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ad11b);}try{const _0x3aec80=_0x1bff0a=>{_0x1bff0a['preventDefault'](),_0x1bff0a['clipboardData']['setData']('text/plain',_0x5d30ec),_0x332cd3&&_0x1bff0a['clipboardData']['setData']('text/html',_0x332cd3);};document['addEventListener']('copy',_0x3aec80);const _0x1b6c1d=document['execCommand']('copy');document['removeEventListener']('copy',_0x3aec80);if(_0x1b6c1d)return!![];}catch(_0xdf2473){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xdf2473);}try{const _0x394800=document['createElement']('textarea');_0x394800['value']=_0x5d30ec,_0x394800['style']['position']='fixed',_0x394800['style']['opacity']='0',_0x394800['style']['pointerEvents']='none',document['body']['appendChild'](_0x394800),_0x394800['select']();const _0xb8f04a=document['execCommand']('copy');return document['body']['removeChild'](_0x394800),_0xb8f04a;}catch(_0x2e74e9){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x2e74e9),![];}},'showToast'(_0x387e92,_0x351a58='info'){const _0x31cbe1=getNextToastId(),_0x2bb523=document['createElement']('div');_0x2bb523['className']='toast\x20toast-'+_0x351a58,_0x2bb523['textContent']=_0x387e92,_0x2bb523['dataset']['toastId']=_0x31cbe1,document['body']['appendChild'](_0x2bb523);const _0x3fb8a6=_0x351a58==='error'?0x2710:0xbb8,_0x2b3672=setTimeout(()=>{removeToastById(_0x31cbe1);},_0x3fb8a6),_0x835661={'id':_0x31cbe1,'el':_0x2bb523,'timeoutId':_0x2b3672};return registerToast(_0x835661),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x2bb523['classList']['add']('show');});}),_0x31cbe1;},'showError'(_0x200099){console['error'](_0x200099);const _0x5239d4=typeof _0x200099==='string'?_0x200099:_0x200099['message']||'An\x20error\x20occurred';this['showToast'](_0x5239d4,'error');},'showSuccess'(_0x8f4392){this['showToast'](_0x8f4392,'success');},'capitalize'(_0x56211e){if(!_0x56211e)return'';return _0x56211e['charAt'](0x0)['toUpperCase']()+_0x56211e['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54d921){return escapeHtmlValue(_0x54d921);},'ansiToHtml'(_0x47d17f){if(_0x47d17f===null||_0x47d17f===undefined)return'';let _0x462456=this['escapeHtml'](_0x47d17f);const _0xea8f33={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x2cccb6={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x48151f=0x0;return _0x462456=_0x462456['replace'](/\x1b\[([0-9;]*)m/g,(_0x3d6e68,_0x351fe4)=>{if(!_0x351fe4||_0x351fe4==='0'){const _0xb2276f='</span>'['repeat'](_0x48151f);return _0x48151f=0x0,_0xb2276f;}const _0x1ecada=_0x351fe4['split'](';'),_0x5222c9=[];for(const _0x2a6c1b of _0x1ecada){if(_0x2a6c1b==='1')_0x5222c9['push']('font-weight:bold');else{if(_0x2a6c1b==='2')_0x5222c9['push']('opacity:0.7');else{if(_0x2a6c1b==='3')_0x5222c9['push']('font-style:italic');else{if(_0x2a6c1b==='4')_0x5222c9['push']('text-decoration:underline');else{if(_0x2a6c1b==='9')_0x5222c9['push']('text-decoration:line-through');else{if(_0xea8f33[_0x2a6c1b])_0x5222c9['push']('color:'+_0xea8f33[_0x2a6c1b]);else{if(_0x2cccb6[_0x2a6c1b])_0x5222c9['push']('background-color:'+_0x2cccb6[_0x2a6c1b]);}}}}}}}if(_0x5222c9['length']>0x0)return _0x48151f++,'<span\x20style=\x22'+_0x5222c9['join'](';')+'\x22>';return'';}),_0x462456+='</span>'['repeat'](_0x48151f),_0x462456=_0x462456['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1f90ed,_0x34f4d3)=>{if(!_0x34f4d3||_0x34f4d3==='0')return'';const _0x338b04=_0x34f4d3['split'](';'),_0x1032a2=[];for(const _0x5c97e7 of _0x338b04){if(_0x5c97e7==='1')_0x1032a2['push']('font-weight:bold');else{if(_0xea8f33[_0x5c97e7])_0x1032a2['push']('color:'+_0xea8f33[_0x5c97e7]);else{if(_0x2cccb6[_0x5c97e7])_0x1032a2['push']('background-color:'+_0x2cccb6[_0x5c97e7]);}}}if(_0x1032a2['length']>0x0)return'<span\x20style=\x22'+_0x1032a2['join'](';')+'\x22>';return'';}),_0x462456;},'showModal'({title:_0x23548c,content:_0x576e72,buttons:buttons=[]}){const _0x21e94b='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x23548c)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x576e72+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x59c8e3,_0x4d41ac)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59c8e3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4d41ac+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59c8e3['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x3ed3df=document['createElement']('div');_0x3ed3df['id']='utils-modal',_0x3ed3df['className']='modal',_0x3ed3df['innerHTML']=_0x21e94b,document['body']['appendChild'](_0x3ed3df);const _0x59c28a=document['getElementById']('utils-modal-close');_0x59c28a&&_0x59c28a['addEventListener']('click',()=>this['hideModal']());const _0x2d8e71=_0x3ed3df['querySelectorAll']('[data-btn-index]');_0x2d8e71['forEach'](_0x270413=>{const _0x36ec08=parseInt(_0x270413['dataset']['btnIndex']);buttons[_0x36ec08]?.['onClick']&&_0x270413['addEventListener']('click',buttons[_0x36ec08]['onClick']);});const _0x5c5302=document['getElementById']('utils-modal-overlay');_0x5c5302&&_0x5c5302['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1aa2bb=document['getElementById']('utils-modal');_0x1aa2bb&&_0x1aa2bb['remove']();},'parseKeyValuePairs'(_0x478f0d){const _0x1a08ea={};if(!_0x478f0d)return _0x1a08ea;return _0x478f0d['split'](/\r?\n/)['map'](_0x30ea27=>_0x30ea27['trim']())['filter'](Boolean)['forEach'](_0x183f71=>{const _0x204ff6=_0x183f71['indexOf']('=');if(_0x204ff6>0x0){const _0x459ec4=_0x183f71['slice'](0x0,_0x204ff6)['trim'](),_0x26ea9e=_0x183f71['slice'](_0x204ff6+0x1)['trim']();if(_0x459ec4)_0x1a08ea[_0x459ec4]=_0x26ea9e;}}),_0x1a08ea;},'debounce'(_0x5166f5,_0x17563a=0xfa){let _0x3d79b8=null;return(..._0xeecc5e)=>{clearTimeout(_0x3d79b8),_0x3d79b8=setTimeout(()=>_0x5166f5['apply'](this,_0xeecc5e),_0x17563a);};},'formatTimestamp'(_0x364127){if(!_0x364127)return'N/A';const _0x386a4f=new Date(_0x364127);return _0x386a4f['toLocaleDateString']()+'\x20'+_0x386a4f['toLocaleTimeString']();},'getQueryParams'(){const _0x333299=new URLSearchParams(window['location']['search']),_0x142168={};for(const [_0x430975,_0x22f68e]of _0x333299){_0x142168[_0x430975]=_0x22f68e;}return _0x142168;},'formatDuration'(_0x229cf8,_0x57bb4f){if(!_0x229cf8)return'N/A';const _0x1978c3=new Date(_0x229cf8),_0x144cc7=_0x57bb4f?new Date(_0x57bb4f):new Date(),_0x1d0170=_0x144cc7-_0x1978c3;if(_0x1d0170<0x0)return'0s';const _0x3428ef=Math['floor'](_0x1d0170/0x3e8),_0x141ee2=Math['floor'](_0x3428ef/0x3c),_0x45474d=Math['floor'](_0x141ee2/0x3c),_0x4e1e8c=Math['floor'](_0x45474d/0x18);if(_0x3428ef<0x3c)return _0x3428ef+'s';if(_0x141ee2<0x3c)return _0x141ee2+'m\x20'+_0x3428ef%0x3c+'s';if(_0x45474d<0x18)return _0x45474d+'h\x20'+_0x141ee2%0x3c+'m\x20'+_0x3428ef%0x3c+'s';return _0x4e1e8c+'d\x20'+_0x45474d%0x18+'h\x20'+_0x141ee2%0x3c+'m';},'renderMarkdown'(_0x51bc8b,_0x3e2a78={}){if(!_0x51bc8b)return'';_0x51bc8b=this['rewriteAttachmentLinks'](_0x51bc8b,_0x3e2a78),_0x51bc8b=this['rewriteColorSyntax'](_0x51bc8b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x51bc8b);}catch(_0x22ef18){return console['error']('Markdown\x20parsing\x20error:',_0x22ef18),this['renderMarkdownFallback'](_0x51bc8b,_0x3e2a78);}},'rewriteAttachmentLinks'(_0x3d8c09,_0xe48a82={}){const _0x556d6f=typeof _0xe48a82['resolveAttachmentUrl']==='function'?_0xe48a82['resolveAttachmentUrl']:_0xe48a82['taskId']?_0xc0ce2=>API_BASE+'/tasks/'+_0xe48a82['taskId']+'/attachments/'+encodeURIComponent(_0xc0ce2):null;if(!_0x556d6f)return _0x3d8c09;return String(_0x3d8c09)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3048fb,_0x1a20c9)=>{const _0x2053ed=String(_0x1a20c9||'')['trim']();if(!_0x2053ed)return _0x3048fb;let _0x4d39f1=_0x2053ed;try{_0x4d39f1=decodeURIComponent(_0x2053ed);}catch{}const _0x5cd248=_0x556d6f(_0x4d39f1);if(!_0x5cd248)return _0x3048fb;return']('+_0x5cd248+')';});},'rewriteColorSyntax'(_0x215744){if(!_0x215744)return _0x215744;return String(_0x215744)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x298d03,_0x595855,_0x2c7979)=>{const _0x53680b=this['rewriteColorSyntax'](_0x2c7979);return'<span\x20style=\x22color:\x20'+_0x595855+'\x22>'+_0x53680b+'</span>';});},'renderMarkdownFallback'(_0x324140,_0x84097={}){if(!_0x324140)return'';_0x324140=_0x324140['replace'](/\r\n/g,'\x0a'),_0x324140=_0x324140['replace'](/\r/g,'\x0a'),_0x324140=this['rewriteAttachmentLinks'](_0x324140,_0x84097);let _0x3cd279=this['escapeHtml'](_0x324140);return _0x3cd279=_0x3cd279['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3cd279=_0x3cd279['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3cd279=_0x3cd279['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3cd279=_0x3cd279['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3cd279=_0x3cd279['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3cd279=_0x3cd279['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3cd279=_0x3cd279['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3cd279=_0x3cd279['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3cd279=_0x3cd279['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3cd279=_0x3cd279['replace'](/\n\n/g,'</p><p>'),_0x3cd279=_0x3cd279['replace'](/\n/g,'<br>'),'<p>'+_0x3cd279+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x16cf36=new Uint8Array(0x10);crypto['getRandomValues'](_0x16cf36),_0x16cf36[0x6]=_0x16cf36[0x6]&0xf|0x40,_0x16cf36[0x8]=_0x16cf36[0x8]&0x3f|0x80;const _0x33cb09=Array['from'](_0x16cf36,_0x288a0b=>_0x288a0b['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x33cb09['slice'](0x0,0x8)+'-'+_0x33cb09['slice'](0x8,0xc)+'-'+_0x33cb09['slice'](0xc,0x10)+'-'+_0x33cb09['slice'](0x10,0x14)+'-'+_0x33cb09['slice'](0x14);}};export class CustomSelect{constructor(_0x1f59b8,_0x4dc364={}){this['nativeSelect']=_0x1f59b8,this['options']=_0x4dc364,this['isOpen']=![],this['selectedValue']=_0x1f59b8['value']||'',this['searchable']=_0x4dc364['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5b475c=document['createElement']('div');_0x5b475c['className']='custom-select';const _0x51fcdc=document['createElement']('div');_0x51fcdc['className']='custom-select-trigger',_0x51fcdc['setAttribute']('tabindex','0'),_0x51fcdc['setAttribute']('role','button'),_0x51fcdc['setAttribute']('aria-haspopup','listbox');const _0x3269ab=document['createElement']('span');_0x3269ab['className']='custom-select-trigger-text';const _0x3abb98=document['createElement']('span');_0x3abb98['className']='custom-select-arrow',_0x3abb98['textContent']='▼',_0x51fcdc['appendChild'](_0x3269ab),_0x51fcdc['appendChild'](_0x3abb98);const _0x414efa=document['createElement']('div');_0x414efa['className']='custom-select-dropdown',_0x414efa['setAttribute']('role','listbox');if(this['searchable']){const _0x1ace7e=document['createElement']('div');_0x1ace7e['className']='custom-select-search';const _0x2f1ffe=document['createElement']('input');_0x2f1ffe['type']='text',_0x2f1ffe['className']='custom-select-search-input',_0x2f1ffe['placeholder']='Type\x20to\x20search...',_0x2f1ffe['setAttribute']('aria-label','Search\x20options'),_0x2f1ffe['addEventListener']('input',_0x1908bb=>{this['searchQuery']=_0x1908bb['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2f1ffe['addEventListener']('keydown',_0x47334c=>{if(_0x47334c['key']==='Escape')_0x47334c['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x47334c['key']==='Enter'){_0x47334c['preventDefault'](),_0x47334c['stopPropagation']();const _0x370530=_0x414efa['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x370530){const _0x306d4a=_0x370530['getAttribute']('data-value');this['select'](_0x306d4a);}}}}),_0x1ace7e['appendChild'](_0x2f1ffe),_0x414efa['appendChild'](_0x1ace7e),this['searchInput']=_0x2f1ffe;}const _0x39a390=document['createElement']('div');_0x39a390['className']='custom-select-options',_0x414efa['appendChild'](_0x39a390),_0x5b475c['appendChild'](_0x51fcdc),_0x5b475c['appendChild'](_0x414efa),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5b475c,this['nativeSelect']),this['wrapper']=_0x5b475c,this['trigger']=_0x51fcdc,this['triggerText']=_0x3269ab,this['dropdown']=_0x414efa,this['optionsContainer']=_0x39a390,_0x51fcdc['addEventListener']('click',()=>this['toggle']()),_0x51fcdc['addEventListener']('keydown',_0x2bafb7=>this['handleKeydown'](_0x2bafb7)),document['addEventListener']('click',_0x36edc8=>{!_0x5b475c['contains'](_0x36edc8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x38704f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x38704f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x3c64ed=new MutationObserver(()=>{this['updateDisabledState']();});_0x3c64ed['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x48d08e=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x48d08e['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3afd3e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3afd3e),this['trigger']['setAttribute']('aria-disabled',_0x3afd3e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3afd3e?'-1':'0'),_0x3afd3e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x26bbf8=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ab1a7=_0x26bbf8['filter'](_0x2cd39c=>!_0x2cd39c['disabled']&&!_0x2cd39c['hidden']);_0x26bbf8['forEach']((_0x45a180,_0x441971)=>{const _0x509a6e=document['createElement']('div');_0x509a6e['className']='custom-select-option',_0x509a6e['textContent']=_0x45a180['textContent'],_0x509a6e['setAttribute']('data-value',_0x45a180['value']),_0x509a6e['setAttribute']('data-index',_0x441971),_0x509a6e['setAttribute']('role','option'),_0x45a180['disabled']?_0x509a6e['classList']['add']('disabled'):_0x509a6e['addEventListener']('click',()=>this['select'](_0x45a180['value'])),_0x45a180['value']===this['selectedValue']&&_0x509a6e['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x509a6e),this['allOptions']['push']({'element':_0x509a6e,'text':_0x45a180['textContent']['toLowerCase'](),'value':_0x45a180['value'],'disabled':_0x45a180['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3270c7=this['searchInput']['parentElement'];_0x1ab1a7['length']>0x3?_0x3270c7['style']['display']='':_0x3270c7['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2d9734=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4cb21a=>{if(!_0x2d9734||_0x4cb21a['disabled'])_0x4cb21a['element']['style']['display']='';else{const _0x3407aa=_0x4cb21a['text']['includes'](_0x2d9734);_0x4cb21a['element']['style']['display']=_0x3407aa?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x334609){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x334609,this['nativeSelect']['value']=_0x334609;const _0x3af17c=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3af17c),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x49285b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x49285b&&(this['triggerText']['textContent']=_0x49285b['textContent'],_0x49285b['disabled']||_0x49285b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x6940b5=>{_0x6940b5['getAttribute']('data-value')===this['selectedValue']?_0x6940b5['classList']['add']('selected'):_0x6940b5['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x499972=window['getComputedStyle'](this['dropdown']);if(_0x499972['position']==='fixed'){const _0x2513e3=this['trigger']['getBoundingClientRect'](),_0x5d3a15=parseInt(_0x499972['maxHeight'])||0xc8,_0xcc3535=window['innerHeight'],_0x4049ed=_0xcc3535-_0x2513e3['bottom'],_0x19aee5=_0x2513e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x19d9b9;_0x4049ed<_0x5d3a15&&_0x19aee5>_0x4049ed?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xcc3535-_0x2513e3['top']+'px',_0x19d9b9=Math['min'](_0x5d3a15,_0x19aee5-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2513e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x19d9b9=Math['min'](_0x5d3a15,_0x4049ed-0xa),this['dropdown']['style']['maxHeight']=_0x19d9b9+'px');if(this['optionsContainer']){let _0x1ec729=_0x19d9b9;if(this['searchInput']){const _0x4e4703=this['searchInput']['parentElement'];_0x4e4703&&(_0x1ec729-=_0x4e4703['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ec729)+'px';}this['dropdown']['style']['left']=_0x2513e3['left']+'px',this['dropdown']['style']['width']=_0x2513e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x12eaca=this['searchInput']['parentElement'];_0x12eaca&&_0x12eaca['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x3b111a){if(this['nativeSelect']['disabled'])return;if(_0x3b111a['key']==='Enter'||_0x3b111a['key']==='\x20')_0x3b111a['preventDefault'](),this['toggle']();else _0x3b111a['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xb2f5e3='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0xb2f5e3),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4f1d53=document['getElementById']('confirm-dialog-close'),_0x8809c=document['getElementById']('confirm-dialog-cancel'),_0x4c817e=document['getElementById']('confirm-dialog-confirm'),_0x522254=this['_modal']['querySelector']('.modal-overlay');_0x4f1d53['addEventListener']('click',()=>this['_resolve'](![])),_0x8809c['addEventListener']('click',()=>this['_resolve'](![])),_0x4c817e['addEventListener']('click',()=>this['_resolve'](!![])),_0x522254['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1dcdb3=>{if(_0x1dcdb3['key']==='Escape')_0x1dcdb3['preventDefault'](),this['_resolve'](![]);else _0x1dcdb3['key']==='Enter'&&(_0x1dcdb3['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x3adf49,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5eb7e2=>{this['_resolvePromise']=_0x5eb7e2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x3adf49;const _0x52b052=document['getElementById']('confirm-dialog-cancel'),_0x2bbb27=document['getElementById']('confirm-dialog-confirm');_0x52b052['textContent']=cancelText,_0x2bbb27['textContent']=confirmText,_0x2bbb27['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x2bbb27['focus']();});},'_resolve'(_0x25d6ea){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x25d6ea),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4d4fc9,_0x35030c={}){this['container']=_0x4d4fc9,this['options']={'placeholder':_0x35030c['placeholder']||'Type\x20to\x20search...','maxItems':_0x35030c['maxItems']||0x64,'loadItems':_0x35030c['loadItems']||(async()=>[]),'renderItem':_0x35030c['renderItem']||(_0x27fc4e=>({'primary':String(_0x27fc4e),'secondary':''})),'onSelect':_0x35030c['onSelect']||(()=>{}),'filterItems':_0x35030c['filterItems']||null,'getItemValue':_0x35030c['getItemValue']||(_0x1e1c6c=>_0x1e1c6c),'sortItems':_0x35030c['sortItems']||null,'debounceMs':_0x35030c['debounceMs']||0xc8,'minCharsForSearch':_0x35030c['minCharsForSearch']||0x0,'emptyMessage':_0x35030c['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x35030c['loadingMessage']||'Loading...','preload':_0x35030c['preload']!==![],'searchMode':_0x35030c['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='×',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x10e996=>this['onBlur'](_0x10e996)),this['input']['addEventListener']('input',_0x1f3bc2=>this['onInput'](_0x1f3bc2)),this['input']['addEventListener']('keydown',_0x144779=>this['onKeydown'](_0x144779)),this['clearBtn']['addEventListener']('mousedown',_0x483e51=>{_0x483e51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x75f6c1=>{_0x75f6c1['preventDefault']();}),document['addEventListener']('click',_0x1d9247=>{!this['wrapper']['contains'](_0x1d9247['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x370961){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x370961);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2bbf11){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x422f2f){const _0x2f776e=_0x422f2f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2f776e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2f776e):this['loadAndShow'](_0x2f776e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2bcc0e){switch(_0x2bcc0e['key']){case'ArrowDown':_0x2bcc0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2bcc0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2bcc0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2bcc0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x3228b5){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x47426e=this['selectedIndex']+_0x3228b5;if(_0x47426e>=0x0&&_0x47426e<this['filteredItems']['length']){this['selectedIndex']=_0x47426e,this['updateSelectionHighlight']();const _0x2c8307=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c8307[this['selectedIndex']]&&_0x2c8307[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x90a955=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x90a955['forEach']((_0x44b2f3,_0x5bee86)=>{_0x44b2f3['classList']['toggle']('keyboard-selected',_0x5bee86===this['selectedIndex']);});}async['loadAndShow'](_0x14674c){this['showLoading']();try{const _0x371d61=await this['options']['loadItems'](_0x14674c);if(this['options']['searchMode']==='server'){let _0x13fd17=_0x371d61;this['options']['sortItems']&&(_0x13fd17=this['options']['sortItems']([..._0x371d61]));this['filteredItems']=_0x13fd17;const _0x5b0be8=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b0be8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b0be8),this['open']();}else this['allItems']=_0x371d61,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14674c);}catch(_0x515ea8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x515ea8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1912f5){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1912f5):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x9aa9f5=this['filteredItems']['length']>=this['options']['maxItems'];_0x9aa9f5&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x9aa9f5),this['open']();}['renderItems'](_0x1c7f9d){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x50f321,_0x440aa5)=>{const _0x3b1149=document['createElement']('div');_0x3b1149['className']='autocomplete-select-item',_0x3b1149['setAttribute']('role','option'),_0x3b1149['setAttribute']('data-index',_0x440aa5);const _0x45c743=this['options']['renderItem'](_0x50f321);let _0x450b75='';_0x45c743['icon']&&(_0x450b75='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x45c743['iconClass']||'')+'\x22>'+_0x45c743['icon']+'</span>'),_0x3b1149['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x450b75+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x45c743['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x45c743['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x45c743['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3b1149['addEventListener']('click',()=>{this['selectItem'](_0x50f321);}),_0x3b1149['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x440aa5,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3b1149);}),_0x1c7f9d?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x1c376e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1c376e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x84fb6e){this['selectedItem']=_0x84fb6e;const _0x12b9ce=this['options']['renderItem'](_0x84fb6e);this['input']['value']=_0x12b9ce['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x84fb6e);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x53fa29){if(_0x53fa29){this['selectedItem']=_0x53fa29;const _0x5b2de2=this['options']['renderItem'](_0x53fa29);this['input']['value']=_0x5b2de2['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1bf0df){this['allItems']=_0x1bf0df,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x2b2f77){this['input']['placeholder']=_0x2b2f77;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1f8adc=null){const _0x37f8bf=document['getElementById']('admin-menu-container'),_0x13821e=document['getElementById']('admin-menu-btn'),_0x3a21c0=document['getElementById']('admin-menu');if(!_0x37f8bf||!_0x13821e||!_0x3a21c0)return;try{!_0x1f8adc&&(_0x1f8adc=await API['getCurrentUser']());if(_0x1f8adc){const _0x46ce5c=window['Permissions'],_0x310be1=_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:manage')||_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')||_0x46ce5c['hasTeamPermission'](_0x1f8adc,'teams:manage')||_0x46ce5c['hasEnvPermission'](_0x1f8adc,'environments:view_details');if(!_0x310be1)return;_0x37f8bf['hidden']=![];if(!_0x46ce5c['hasServerPermission'](_0x1f8adc,'*')){const _0x455832=_0x3a21c0['querySelectorAll']('.admin-menu-item');_0x455832['forEach'](_0x188c53=>{const _0x134b04=_0x188c53['querySelector']('.option-text')?.['textContent']?.['trim']();_0x134b04==='Users'&&!_0x46ce5c['hasServerPermission'](_0x1f8adc,'users:create')&&(_0x188c53['hidden']=!![]),_0x134b04==='Skills'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Settings'&&(_0x188c53['hidden']=!![]),_0x134b04==='Server\x20Administration'&&(_0x188c53['hidden']=!![]),_0x134b04==='Git\x20History'&&(_0x188c53['hidden']=!![]),_0x134b04==='Roles'&&(_0x188c53['hidden']=!![]);});}_0x13821e['addEventListener']('click',_0x4e18b1=>{_0x4e18b1['stopPropagation']();const _0x173464=document['getElementById']('actions-menu');if(_0x173464)_0x173464['hidden']=!![];_0x3a21c0['hidden']=!_0x3a21c0['hidden'];}),document['addEventListener']('click',_0x244c27=>{!_0x3a21c0['hidden']&&!_0x13821e['contains'](_0x244c27['target'])&&!_0x3a21c0['contains'](_0x244c27['target'])&&(_0x3a21c0['hidden']=!![]);}),document['addEventListener']('keydown',_0x4919e4=>{_0x4919e4['key']==='Escape'&&!_0x3a21c0['hidden']&&(_0x3a21c0['hidden']=!![]);});}}catch(_0x545e7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x545e7f['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|