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